aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml7
-rw-r--r--Godeps/Godeps.json87
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/LICENSE22
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/README.md15
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/backup.go266
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/file.go219
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/fileinfo.go54
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/pipe.go398
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/privilege.go150
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/reparse.go124
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/sd.go96
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/syscall.go3
-rw-r--r--Godeps/_workspace/src/github.com/microsoft/go-winio/zsyscall.go492
-rw-r--r--Godeps/_workspace/src/github.com/rjeczalik/notify/.travis.yml3
-rw-r--r--Godeps/_workspace/src/github.com/rjeczalik/notify/appveyor.yml1
-rw-r--r--Godeps/_workspace/src/github.com/rjeczalik/notify/watcher_fsevents.go2
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go1
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go4
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_nacl.go34
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/hash.go28
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/context.go295
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go19
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go23
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go140
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/go17.go72
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/pre_go17.go300
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go5
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_mips64x.s (renamed from Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s)17
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_s390x.s28
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/bluetooth_linux.go35
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh17
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh0
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mkpost.go62
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl0
-rwxr-xr-x[-rw-r--r--]Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl0
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go45
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go15
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go15
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go34
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go48
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_mips64x.go215
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go43
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_s390x.go329
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go46
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go1530
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64.go1917
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64le.go1917
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_s390x.go2027
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go120
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go120
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go101
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go94
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64.go1803
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64le.go1803
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go161
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go161
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_s390x.go (renamed from Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go)1127
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go304
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64.go327
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64le.go327
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_s390x.go328
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go437
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go39
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go39
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go30
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64.go627
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64le.go627
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go35
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go35
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_s390x.go649
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go8
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go178
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go8
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/ianaindex.go64
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go9
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/dict.go92
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/display.go343
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go238
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go596
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/tables.go44965
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/index.go1279
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/language.go6
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/tables.go3635
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/transform/transform.go173
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/enclosing.go5
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/imports.go24
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk.go172
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_fileno.go13
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_ino.go13
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_portable.go29
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_unix.go122
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/fix.go856
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/imports.go12
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/mkstdlib.go12
-rw-r--r--Godeps/_workspace/src/golang.org/x/tools/imports/zstdlib.go277
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/.gitignore22
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/LICENSE.txt8
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/README.md308
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/doc.go50
-rwxr-xr-xGodeps/_workspace/src/gopkg.in/natefinch/npipe.v2/npipe_windows.go531
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_386.go124
-rw-r--r--Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_amd64.go124
-rw-r--r--Makefile67
-rw-r--r--README.md14
-rw-r--r--accounts/abi/bind/backend.go105
-rw-r--r--accounts/abi/bind/backends/nil.go57
-rw-r--r--accounts/abi/bind/backends/remote.go260
-rw-r--r--accounts/abi/bind/backends/simulated.go255
-rw-r--r--accounts/abi/bind/base.go75
-rw-r--r--accounts/abi/bind/bind_test.go18
-rw-r--r--accounts/abi/bind/template.go2
-rw-r--r--accounts/abi/bind/util.go76
-rw-r--r--accounts/abi/bind/util_test.go93
-rw-r--r--accounts/account_manager.go22
-rw-r--r--appveyor.yml24
-rw-r--r--build/ci.go32
-rwxr-xr-xbuild/flags.sh22
-rw-r--r--build/update-license.go4
-rw-r--r--circle.yml32
-rw-r--r--cmd/abigen/main.go13
-rw-r--r--cmd/bootnode/main.go28
-rw-r--r--cmd/ethtest/main.go4
-rw-r--r--cmd/evm/main.go18
-rw-r--r--cmd/geth/accountcmd.go24
-rw-r--r--cmd/geth/chaincmd.go3
-rw-r--r--cmd/geth/consolecmd.go23
-rw-r--r--cmd/geth/consolecmd_test.go5
-rw-r--r--cmd/geth/dao_test.go232
-rw-r--r--cmd/geth/genesis_test.go110
-rw-r--r--cmd/geth/main.go146
-rw-r--r--cmd/geth/monitorcmd.go39
-rw-r--r--cmd/geth/usage.go4
-rw-r--r--cmd/gethrpctest/main.go32
-rw-r--r--cmd/utils/client.go55
-rw-r--r--cmd/utils/flags.go240
-rw-r--r--cmd/utils/version.go64
-rw-r--r--common/compiler/solidity.go215
-rw-r--r--common/compiler/solidity_test.go82
-rw-r--r--common/natspec/natspec_js.go8
-rw-r--r--console/bridge.go174
-rw-r--r--console/console.go4
-rw-r--r--console/console_test.go12
-rw-r--r--containers/docker/develop-alpine/Dockerfile13
-rw-r--r--containers/docker/master-alpine/Dockerfile12
-rw-r--r--contracts/chequebook/api.go68
-rw-r--r--contracts/chequebook/cheque.go642
-rw-r--r--contracts/chequebook/cheque_test.go528
-rw-r--r--contracts/chequebook/contract/chequebook.go541
-rw-r--r--contracts/chequebook/contract/chequebook.sol45
-rw-r--r--contracts/chequebook/contract/code.go5
-rw-r--r--contracts/chequebook/gencode.go71
-rw-r--r--contracts/ens/README.md20
-rw-r--r--contracts/ens/contract/ens.go921
-rw-r--r--contracts/ens/contract/ens.sol226
-rw-r--r--contracts/ens/ens.go178
-rw-r--r--contracts/ens/ens_test.go67
-rw-r--r--contracts/release/contract.go (renamed from release/contract.go)6
-rw-r--r--contracts/release/contract.sol (renamed from release/contract.sol)0
-rw-r--r--contracts/release/contract_test.go (renamed from release/contract_test.go)0
-rw-r--r--contracts/release/release.go (renamed from release/release.go)2
-rw-r--r--core/bench_test.go2
-rw-r--r--core/block_validator.go3
-rw-r--r--core/blockchain.go18
-rw-r--r--core/blockchain_test.go54
-rw-r--r--core/chain_makers.go28
-rw-r--r--core/chain_makers_test.go2
-rw-r--r--core/chain_pow_test.go6
-rw-r--r--core/config.go7
-rw-r--r--core/dao.go74
-rw-r--r--core/dao_test.go132
-rw-r--r--core/database_util.go6
-rw-r--r--core/database_util_test.go2
-rw-r--r--core/headerchain.go18
-rw-r--r--core/state_processor.go6
-rw-r--r--core/tx_list.go342
-rw-r--r--core/tx_list_test.go52
-rw-r--r--core/tx_pool.go581
-rw-r--r--core/tx_pool_test.go369
-rw-r--r--core/types.go16
-rw-r--r--core/types/block.go152
-rw-r--r--core/types/bloom9.go24
-rw-r--r--core/types/json.go108
-rw-r--r--core/types/json_test.go213
-rw-r--r--core/types/receipt.go69
-rw-r--r--core/types/transaction.go173
-rw-r--r--core/types/transaction_test.go16
-rw-r--r--core/vm/contracts.go4
-rw-r--r--core/vm/environment.go2
-rw-r--r--core/vm/gas.go2
-rw-r--r--core/vm/instructions.go146
-rw-r--r--core/vm/jit.go8
-rw-r--r--core/vm/jit_test.go16
-rw-r--r--core/vm/log.go89
-rw-r--r--core/vm/log_test.go59
-rw-r--r--core/vm/logger.go64
-rw-r--r--core/vm/logger_test.go17
-rw-r--r--core/vm/runtime/env.go14
-rw-r--r--core/vm/segments.go4
-rw-r--r--core/vm/stack.go26
-rw-r--r--core/vm/vm.go18
-rw-r--r--core/vm_env.go14
-rw-r--r--eth/api.go111
-rw-r--r--eth/api_backend.go14
-rw-r--r--eth/backend.go52
-rw-r--r--eth/backend_test.go2
-rw-r--r--eth/bind.go94
-rw-r--r--eth/db_upgrade.go13
-rw-r--r--eth/downloader/api.go170
-rw-r--r--eth/downloader/downloader.go737
-rw-r--r--eth/downloader/downloader_test.go187
-rw-r--r--eth/downloader/metrics.go10
-rw-r--r--eth/downloader/peer.go59
-rw-r--r--eth/downloader/queue.go138
-rw-r--r--eth/downloader/types.go20
-rw-r--r--eth/fetcher/fetcher.go102
-rw-r--r--eth/fetcher/fetcher_test.go137
-rw-r--r--eth/fetcher/metrics.go3
-rw-r--r--eth/filters/api.go761
-rw-r--r--eth/filters/api_test.go27
-rw-r--r--eth/filters/filter.go119
-rw-r--r--eth/filters/filter_system.go379
-rw-r--r--eth/filters/filter_system_test.go349
-rw-r--r--eth/filters/filter_test.go4
-rw-r--r--eth/handler.go220
-rw-r--r--eth/handler_test.go228
-rw-r--r--eth/helper_test.go24
-rw-r--r--eth/metrics.go26
-rw-r--r--eth/peer.go84
-rw-r--r--eth/protocol.go54
-rw-r--r--eth/protocol_test.go5
-rw-r--r--eth/sync.go13
-rw-r--r--ethclient/ethclient.go415
-rw-r--r--ethclient/ethclient_test.go18
-rw-r--r--ethdb/database.go2
-rw-r--r--interfaces.go184
-rw-r--r--internal/ethapi/api.go389
-rw-r--r--internal/ethapi/backend.go15
-rw-r--r--internal/ethapi/solc.go82
-rw-r--r--internal/ethapi/tracer.go317
-rw-r--r--internal/ethapi/tracer_test.go201
-rw-r--r--internal/jsre/ethereum_js.go10
-rw-r--r--internal/jsre/pretty.go2
-rw-r--r--internal/web3ext/web3ext.go172
-rw-r--r--miner/agent.go16
-rw-r--r--miner/miner.go23
-rw-r--r--miner/worker.go163
-rw-r--r--node/api.go16
-rw-r--r--node/config.go58
-rw-r--r--node/node.go40
-rw-r--r--node/node_test.go34
-rw-r--r--node/service.go8
-rw-r--r--p2p/dial.go5
-rw-r--r--p2p/server.go20
-rw-r--r--p2p/server_test.go2
-rw-r--r--params/dao.go418
-rw-r--r--params/util.go4
-rw-r--r--rpc/client.go776
-rw-r--r--rpc/client_context_go1.4.go60
-rw-r--r--rpc/client_context_go1.5.go61
-rw-r--r--rpc/client_context_go1.6.go55
-rw-r--r--rpc/client_context_go1.7.go51
-rw-r--r--rpc/client_example_test.go88
-rw-r--r--rpc/client_test.go540
-rw-r--r--rpc/errors.go63
-rw-r--r--rpc/http.go163
-rw-r--r--rpc/inproc.go49
-rw-r--r--rpc/ipc.go79
-rw-r--r--rpc/ipc_unix.go6
-rw-r--r--rpc/ipc_windows.go21
-rw-r--r--rpc/json.go77
-rw-r--r--rpc/notification.go297
-rw-r--r--rpc/server.go36
-rw-r--r--rpc/server_test.go16
-rw-r--r--rpc/subscription.go135
-rw-r--r--rpc/subscription_test.go (renamed from rpc/notification_test.go)71
-rw-r--r--rpc/types.go58
-rw-r--r--rpc/types_test.go22
-rw-r--r--rpc/utils.go70
-rw-r--r--rpc/utils_test.go43
-rw-r--r--rpc/websocket.go160
-rw-r--r--swarm/api/api.go191
-rw-r--r--swarm/api/api_test.go117
-rw-r--r--swarm/api/config.go132
-rw-r--r--swarm/api/config_test.go124
-rw-r--r--swarm/api/filesystem.go283
-rw-r--r--swarm/api/filesystem_test.go187
-rw-r--r--swarm/api/http/roundtripper.go69
-rw-r--r--swarm/api/http/roundtripper_test.go68
-rw-r--r--swarm/api/http/server.go286
-rw-r--r--swarm/api/manifest.go336
-rw-r--r--swarm/api/manifest_test.go80
-rw-r--r--swarm/api/storage.go70
-rw-r--r--swarm/api/storage_test.go49
-rw-r--r--swarm/api/testapi.go46
-rw-r--r--swarm/api/testdata/test0/img/logo.pngbin0 -> 18136 bytes
-rw-r--r--swarm/api/testdata/test0/index.css9
-rw-r--r--swarm/api/testdata/test0/index.html10
-rw-r--r--swarm/network/depo.go211
-rw-r--r--swarm/network/forwarding.go150
-rw-r--r--swarm/network/hive.go383
-rw-r--r--swarm/network/kademlia/address.go173
-rw-r--r--swarm/network/kademlia/address_test.go96
-rw-r--r--swarm/network/kademlia/kaddb.go351
-rw-r--r--swarm/network/kademlia/kademlia.go429
-rw-r--r--swarm/network/kademlia/kademlia_test.go392
-rw-r--r--swarm/network/messages.go317
-rw-r--r--swarm/network/protocol.go554
-rw-r--r--swarm/network/protocol_test.go (renamed from release/generator.go)4
-rw-r--r--swarm/network/syncdb.go390
-rw-r--r--swarm/network/syncdb_test.go221
-rw-r--r--swarm/network/syncer.go778
-rw-r--r--swarm/services/swap/swap.go283
-rw-r--r--swarm/services/swap/swap/swap.go254
-rw-r--r--swarm/services/swap/swap/swap_test.go194
-rw-r--r--swarm/storage/chunker.go509
-rw-r--r--swarm/storage/chunker_test.go303
-rw-r--r--swarm/storage/common_test.go117
-rw-r--r--swarm/storage/database.go99
-rw-r--r--swarm/storage/dbstore.go473
-rw-r--r--swarm/storage/dbstore_test.go191
-rw-r--r--swarm/storage/dpa.go239
-rw-r--r--swarm/storage/dpa_test.go144
-rw-r--r--swarm/storage/localstore.go74
-rw-r--r--swarm/storage/memstore.go316
-rw-r--r--swarm/storage/memstore_test.go50
-rw-r--r--swarm/storage/netstore.go134
-rw-r--r--swarm/storage/pyramid.go211
-rw-r--r--swarm/storage/types.go232
-rw-r--r--swarm/swarm.go309
-rw-r--r--tests/block_test.go60
-rw-r--r--tests/block_test_util.go16
-rw-r--r--tests/files/BlockchainTests/TestNetwork/bcTheDaoTest.json8599
-rw-r--r--tests/util.go12
-rw-r--r--tests/vm_test_util.go2
384 files changed, 52759 insertions, 60260 deletions
diff --git a/.travis.yml b/.travis.yml
index d0fd4b775..556397b0a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,13 +12,16 @@ matrix:
- os: linux
dist: trusty
go: 1.6.2
+ - os: linux
+ dist: trusty
+ go: 1.7
- os: osx
- go: 1.6.2
+ go: 1.7
# This builder does the PPA upload (and nothing else).
- os: linux
dist: trusty
- go: 1.6.2
+ go: 1.7
env: PPA
addons:
apt:
diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index 9b5b9a44f..42a207200 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -94,11 +94,6 @@
"Rev": "e882a96ec18dd43fa283187b66af74497c9101c0"
},
{
- "ImportPath": "github.com/microsoft/go-winio",
- "Comment": "v0.2.0",
- "Rev": "9e2895e5f6c3f16473b91d37fae6e89990a4520c"
- },
- {
"ImportPath": "github.com/nsf/termbox-go",
"Rev": "362329b0aa6447eadd52edd8d660ec1dff470295"
},
@@ -117,7 +112,7 @@
},
{
"ImportPath": "github.com/rjeczalik/notify",
- "Rev": "5dd6205716539662f8f14ab513552b41eab69d5d"
+ "Rev": "f627deca7a510d96f0ef9388f2d0e8b16d21f87f"
},
{
"ImportPath": "github.com/robertkrimen/otto",
@@ -157,155 +152,155 @@
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/cache",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/comparer",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/errors",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/filter",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/iterator",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/journal",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/memdb",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/opt",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/storage",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/table",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb/util",
- "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
+ "Rev": "ab8b5dcf1042e818ab68e770d465112a899b668e"
},
{
"ImportPath": "golang.org/x/crypto/pbkdf2",
- "Rev": "1f22c0103821b9390939b6776727195525381532"
+ "Rev": "351dc6a5bf92a5f2ae22fadeee08eb6a45aa2d93"
},
{
"ImportPath": "golang.org/x/crypto/ripemd160",
- "Rev": "1f22c0103821b9390939b6776727195525381532"
+ "Rev": "351dc6a5bf92a5f2ae22fadeee08eb6a45aa2d93"
},
{
"ImportPath": "golang.org/x/crypto/scrypt",
- "Rev": "1f22c0103821b9390939b6776727195525381532"
+ "Rev": "351dc6a5bf92a5f2ae22fadeee08eb6a45aa2d93"
},
{
"ImportPath": "golang.org/x/net/context",
- "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ "Rev": "6250b412798208e6c90b03b7c4f226de5aa299e2"
},
{
"ImportPath": "golang.org/x/net/html",
- "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ "Rev": "6250b412798208e6c90b03b7c4f226de5aa299e2"
},
{
"ImportPath": "golang.org/x/net/html/atom",
- "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ "Rev": "6250b412798208e6c90b03b7c4f226de5aa299e2"
},
{
"ImportPath": "golang.org/x/net/html/charset",
- "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ "Rev": "6250b412798208e6c90b03b7c4f226de5aa299e2"
},
{
"ImportPath": "golang.org/x/net/websocket",
- "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ "Rev": "6250b412798208e6c90b03b7c4f226de5aa299e2"
},
{
"ImportPath": "golang.org/x/sys/unix",
- "Rev": "50c6bc5e4292a1d4e65c6e9be5f53be28bcbe28e"
+ "Rev": "a646d33e2ee3172a661fc09bca23bb4889a41bc8"
},
{
"ImportPath": "golang.org/x/text/encoding",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/charmap",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/htmlindex",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/internal",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/internal/identifier",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/japanese",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/korean",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/simplifiedchinese",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/traditionalchinese",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/encoding/unicode",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/internal/tag",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/internal/utf8internal",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/language",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/runes",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/text/transform",
- "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ "Rev": "d69c40b4be55797923cec7457fac7a244d91a9b6"
},
{
"ImportPath": "golang.org/x/tools/go/ast/astutil",
- "Rev": "758728c4b28cfbac299730969ef8f655c4761283"
+ "Rev": "9deed8c6c1c89e0b6d68d727f215de8e851d1064"
},
{
"ImportPath": "golang.org/x/tools/imports",
- "Rev": "758728c4b28cfbac299730969ef8f655c4761283"
+ "Rev": "9deed8c6c1c89e0b6d68d727f215de8e851d1064"
},
{
"ImportPath": "gopkg.in/check.v1",
@@ -321,6 +316,10 @@
"Rev": "8dcd6a7f4951f6ff3ee9cbb919a06d8925822e57"
},
{
+ "ImportPath": "gopkg.in/natefinch/npipe.v2",
+ "Rev": "c1b8fa8bdccecb0b8db834ee0b92fdbcfa606dd6"
+ },
+ {
"ImportPath": "gopkg.in/urfave/cli.v1",
"Comment": "v1.17.0",
"Rev": "01857ac33766ce0c93856370626f9799281c14f4"
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/LICENSE b/Godeps/_workspace/src/github.com/microsoft/go-winio/LICENSE
deleted file mode 100644
index b8b569d77..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Microsoft
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/README.md b/Godeps/_workspace/src/github.com/microsoft/go-winio/README.md
deleted file mode 100644
index 478862a8b..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# go-winio
-
-This repository contains utilities for efficiently performing Win32 IO operations in
-Go. Currently, this is focused on accessing named pipes and other file handles, and
-for using named pipes as a net transport.
-
-This code relies on IO completion ports to avoid blocking IO on system threads, allowing Go
-to reuse the thread to schedule another goroutine. This limits support to Windows Vista and
-newer operating systems. This is similar to the implementation of network sockets in Go's net
-package.
-
-Please see the LICENSE file for licensing information.
-
-Thanks to natefinch for the inspiration for this library. See https://github.com/natefinch/npipe
-for another named pipe implementation.
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/backup.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/backup.go
deleted file mode 100644
index 864935175..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/backup.go
+++ /dev/null
@@ -1,266 +0,0 @@
-package winio
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "runtime"
- "syscall"
- "unicode/utf16"
-)
-
-//sys backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupRead
-//sys backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupWrite
-
-const (
- BackupData = uint32(iota + 1)
- BackupEaData
- BackupSecurity
- BackupAlternateData
- BackupLink
- BackupPropertyData
- BackupObjectId
- BackupReparseData
- BackupSparseBlock
- BackupTxfsData
-)
-
-const (
- StreamSparseAttributes = uint32(8)
-)
-
-const (
- WRITE_DAC = 0x40000
- WRITE_OWNER = 0x80000
- ACCESS_SYSTEM_SECURITY = 0x1000000
-)
-
-// BackupHeader represents a backup stream of a file.
-type BackupHeader struct {
- Id uint32 // The backup stream ID
- Attributes uint32 // Stream attributes
- Size int64 // The size of the stream in bytes
- Name string // The name of the stream (for BackupAlternateData only).
- Offset int64 // The offset of the stream in the file (for BackupSparseBlock only).
-}
-
-type win32StreamId struct {
- StreamId uint32
- Attributes uint32
- Size uint64
- NameSize uint32
-}
-
-// BackupStreamReader reads from a stream produced by the BackupRead Win32 API and produces a series
-// of BackupHeader values.
-type BackupStreamReader struct {
- r io.Reader
- bytesLeft int64
-}
-
-// NewBackupStreamReader produces a BackupStreamReader from any io.Reader.
-func NewBackupStreamReader(r io.Reader) *BackupStreamReader {
- return &BackupStreamReader{r, 0}
-}
-
-// Next returns the next backup stream and prepares for calls to Write(). It skips the remainder of the current stream if
-// it was not completely read.
-func (r *BackupStreamReader) Next() (*BackupHeader, error) {
- if r.bytesLeft > 0 {
- if _, err := io.Copy(ioutil.Discard, r); err != nil {
- return nil, err
- }
- }
- var wsi win32StreamId
- if err := binary.Read(r.r, binary.LittleEndian, &wsi); err != nil {
- return nil, err
- }
- hdr := &BackupHeader{
- Id: wsi.StreamId,
- Attributes: wsi.Attributes,
- Size: int64(wsi.Size),
- }
- if wsi.NameSize != 0 {
- name := make([]uint16, int(wsi.NameSize/2))
- if err := binary.Read(r.r, binary.LittleEndian, name); err != nil {
- return nil, err
- }
- hdr.Name = syscall.UTF16ToString(name)
- }
- if wsi.StreamId == BackupSparseBlock {
- if err := binary.Read(r.r, binary.LittleEndian, &hdr.Offset); err != nil {
- return nil, err
- }
- hdr.Size -= 8
- }
- r.bytesLeft = hdr.Size
- return hdr, nil
-}
-
-// Read reads from the current backup stream.
-func (r *BackupStreamReader) Read(b []byte) (int, error) {
- if r.bytesLeft == 0 {
- return 0, io.EOF
- }
- if int64(len(b)) > r.bytesLeft {
- b = b[:r.bytesLeft]
- }
- n, err := r.r.Read(b)
- r.bytesLeft -= int64(n)
- if err == io.EOF {
- err = io.ErrUnexpectedEOF
- } else if r.bytesLeft == 0 && err == nil {
- err = io.EOF
- }
- return n, err
-}
-
-// BackupStreamWriter writes a stream compatible with the BackupWrite Win32 API.
-type BackupStreamWriter struct {
- w io.Writer
- bytesLeft int64
-}
-
-// NewBackupStreamWriter produces a BackupStreamWriter on top of an io.Writer.
-func NewBackupStreamWriter(w io.Writer) *BackupStreamWriter {
- return &BackupStreamWriter{w, 0}
-}
-
-// WriteHeader writes the next backup stream header and prepares for calls to Write().
-func (w *BackupStreamWriter) WriteHeader(hdr *BackupHeader) error {
- if w.bytesLeft != 0 {
- return fmt.Errorf("missing %d bytes", w.bytesLeft)
- }
- name := utf16.Encode([]rune(hdr.Name))
- wsi := win32StreamId{
- StreamId: hdr.Id,
- Attributes: hdr.Attributes,
- Size: uint64(hdr.Size),
- NameSize: uint32(len(name) * 2),
- }
- if hdr.Id == BackupSparseBlock {
- // Include space for the int64 block offset
- wsi.Size += 8
- }
- if err := binary.Write(w.w, binary.LittleEndian, &wsi); err != nil {
- return err
- }
- if len(name) != 0 {
- if err := binary.Write(w.w, binary.LittleEndian, name); err != nil {
- return err
- }
- }
- if hdr.Id == BackupSparseBlock {
- if err := binary.Write(w.w, binary.LittleEndian, hdr.Offset); err != nil {
- return err
- }
- }
- w.bytesLeft = hdr.Size
- return nil
-}
-
-// Write writes to the current backup stream.
-func (w *BackupStreamWriter) Write(b []byte) (int, error) {
- if w.bytesLeft < int64(len(b)) {
- return 0, fmt.Errorf("too many bytes by %d", int64(len(b))-w.bytesLeft)
- }
- n, err := w.w.Write(b)
- w.bytesLeft -= int64(n)
- return n, err
-}
-
-// BackupFileReader provides an io.ReadCloser interface on top of the BackupRead Win32 API.
-type BackupFileReader struct {
- f *os.File
- includeSecurity bool
- ctx uintptr
-}
-
-// NewBackupFileReader returns a new BackupFileReader from a file handle. If includeSecurity is true,
-// Read will attempt to read the security descriptor of the file.
-func NewBackupFileReader(f *os.File, includeSecurity bool) *BackupFileReader {
- r := &BackupFileReader{f, includeSecurity, 0}
- runtime.SetFinalizer(r, func(r *BackupFileReader) { r.Close() })
- return r
-}
-
-// Read reads a backup stream from the file by calling the Win32 API BackupRead().
-func (r *BackupFileReader) Read(b []byte) (int, error) {
- var bytesRead uint32
- err := backupRead(syscall.Handle(r.f.Fd()), b, &bytesRead, false, r.includeSecurity, &r.ctx)
- if err != nil {
- return 0, &os.PathError{"BackupRead", r.f.Name(), err}
- }
- if bytesRead == 0 {
- return 0, io.EOF
- }
- return int(bytesRead), nil
-}
-
-// Close frees Win32 resources associated with the BackupFileReader. It does not close
-// the underlying file.
-func (r *BackupFileReader) Close() error {
- if r.ctx != 0 {
- backupRead(syscall.Handle(r.f.Fd()), nil, nil, true, false, &r.ctx)
- r.ctx = 0
- }
- return nil
-}
-
-// BackupFileWriter provides an io.WriteCloser interface on top of the BackupWrite Win32 API.
-type BackupFileWriter struct {
- f *os.File
- includeSecurity bool
- ctx uintptr
-}
-
-// NewBackupFileWrtier returns a new BackupFileWriter from a file handle. If includeSecurity is true,
-// Write() will attempt to restore the security descriptor from the stream.
-func NewBackupFileWriter(f *os.File, includeSecurity bool) *BackupFileWriter {
- w := &BackupFileWriter{f, includeSecurity, 0}
- runtime.SetFinalizer(w, func(w *BackupFileWriter) { w.Close() })
- return w
-}
-
-// Write restores a portion of the file using the provided backup stream.
-func (w *BackupFileWriter) Write(b []byte) (int, error) {
- var bytesWritten uint32
- err := backupWrite(syscall.Handle(w.f.Fd()), b, &bytesWritten, false, w.includeSecurity, &w.ctx)
- if err != nil {
- return 0, &os.PathError{"BackupWrite", w.f.Name(), err}
- }
- if int(bytesWritten) != len(b) {
- return int(bytesWritten), errors.New("not all bytes could be written")
- }
- return len(b), nil
-}
-
-// Close frees Win32 resources associated with the BackupFileWriter. It does not
-// close the underlying file.
-func (w *BackupFileWriter) Close() error {
- if w.ctx != 0 {
- backupWrite(syscall.Handle(w.f.Fd()), nil, nil, true, false, &w.ctx)
- w.ctx = 0
- }
- return nil
-}
-
-// OpenForBackup opens a file or directory, potentially skipping access checks if the backup
-// or restore privileges have been acquired.
-//
-// If the file opened was a directory, it cannot be used with Readdir().
-func OpenForBackup(path string, access uint32, share uint32, createmode uint32) (*os.File, error) {
- winPath, err := syscall.UTF16FromString(path)
- if err != nil {
- return nil, err
- }
- h, err := syscall.CreateFile(&winPath[0], access, share, nil, createmode, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0)
- if err != nil {
- err = &os.PathError{Op: "open", Path: path, Err: err}
- return nil, err
- }
- return os.NewFile(uintptr(h), path), nil
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/file.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/file.go
deleted file mode 100644
index fd16f0075..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/file.go
+++ /dev/null
@@ -1,219 +0,0 @@
-package winio
-
-import (
- "errors"
- "io"
- "runtime"
- "sync"
- "syscall"
- "time"
-)
-
-//sys cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) = CancelIoEx
-//sys createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) = CreateIoCompletionPort
-//sys getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) = GetQueuedCompletionStatus
-//sys setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) = SetFileCompletionNotificationModes
-//sys timeBeginPeriod(period uint32) (n int32) = winmm.timeBeginPeriod
-
-const (
- cFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
- cFILE_SKIP_SET_EVENT_ON_HANDLE = 2
-)
-
-var (
- ErrFileClosed = errors.New("file has already been closed")
- ErrTimeout = &timeoutError{}
-)
-
-type timeoutError struct{}
-
-func (e *timeoutError) Error() string { return "i/o timeout" }
-func (e *timeoutError) Timeout() bool { return true }
-func (e *timeoutError) Temporary() bool { return true }
-
-var ioInitOnce sync.Once
-var ioCompletionPort syscall.Handle
-
-// ioResult contains the result of an asynchronous IO operation
-type ioResult struct {
- bytes uint32
- err error
-}
-
-// ioOperation represents an outstanding asynchronous Win32 IO
-type ioOperation struct {
- o syscall.Overlapped
- ch chan ioResult
-}
-
-func initIo() {
- h, err := createIoCompletionPort(syscall.InvalidHandle, 0, 0, 0xffffffff)
- if err != nil {
- panic(err)
- }
- ioCompletionPort = h
- go ioCompletionProcessor(h)
-}
-
-// win32File implements Reader, Writer, and Closer on a Win32 handle without blocking in a syscall.
-// It takes ownership of this handle and will close it if it is garbage collected.
-type win32File struct {
- handle syscall.Handle
- wg sync.WaitGroup
- closing bool
- readDeadline time.Time
- writeDeadline time.Time
-}
-
-// makeWin32File makes a new win32File from an existing file handle
-func makeWin32File(h syscall.Handle) (*win32File, error) {
- f := &win32File{handle: h}
- ioInitOnce.Do(initIo)
- _, err := createIoCompletionPort(h, ioCompletionPort, 0, 0xffffffff)
- if err != nil {
- return nil, err
- }
- err = setFileCompletionNotificationModes(h, cFILE_SKIP_COMPLETION_PORT_ON_SUCCESS|cFILE_SKIP_SET_EVENT_ON_HANDLE)
- if err != nil {
- return nil, err
- }
- runtime.SetFinalizer(f, (*win32File).closeHandle)
- return f, nil
-}
-
-func MakeOpenFile(h syscall.Handle) (io.ReadWriteCloser, error) {
- return makeWin32File(h)
-}
-
-// closeHandle closes the resources associated with a Win32 handle
-func (f *win32File) closeHandle() {
- if !f.closing {
- // cancel all IO and wait for it to complete
- f.closing = true
- cancelIoEx(f.handle, nil)
- f.wg.Wait()
- // at this point, no new IO can start
- syscall.Close(f.handle)
- f.handle = 0
- }
-}
-
-// Close closes a win32File.
-func (f *win32File) Close() error {
- f.closeHandle()
- runtime.SetFinalizer(f, nil)
- return nil
-}
-
-// prepareIo prepares for a new IO operation
-func (f *win32File) prepareIo() (*ioOperation, error) {
- f.wg.Add(1)
- if f.closing {
- return nil, ErrFileClosed
- }
- c := &ioOperation{}
- c.ch = make(chan ioResult)
- return c, nil
-}
-
-// ioCompletionProcessor processes completed async IOs forever
-func ioCompletionProcessor(h syscall.Handle) {
- // Set the timer resolution to 1. This fixes a performance regression in golang 1.6.
- timeBeginPeriod(1)
- for {
- var bytes uint32
- var key uintptr
- var op *ioOperation
- err := getQueuedCompletionStatus(h, &bytes, &key, &op, syscall.INFINITE)
- if op == nil {
- panic(err)
- }
- op.ch <- ioResult{bytes, err}
- }
-}
-
-// asyncIo processes the return value from ReadFile or WriteFile, blocking until
-// the operation has actually completed.
-func (f *win32File) asyncIo(c *ioOperation, deadline time.Time, bytes uint32, err error) (int, error) {
- if err != syscall.ERROR_IO_PENDING {
- f.wg.Done()
- return int(bytes), err
- } else {
- var r ioResult
- wait := true
- timedout := false
- if f.closing {
- cancelIoEx(f.handle, &c.o)
- } else if !deadline.IsZero() {
- now := time.Now()
- if !deadline.After(now) {
- timedout = true
- } else {
- timeout := time.After(deadline.Sub(now))
- select {
- case r = <-c.ch:
- wait = false
- case <-timeout:
- timedout = true
- }
- }
- }
- if timedout {
- cancelIoEx(f.handle, &c.o)
- }
- if wait {
- r = <-c.ch
- }
- err = r.err
- if err == syscall.ERROR_OPERATION_ABORTED {
- if f.closing {
- err = ErrFileClosed
- } else if timedout {
- err = ErrTimeout
- }
- }
- f.wg.Done()
- return int(r.bytes), err
- }
-}
-
-// Read reads from a file handle.
-func (f *win32File) Read(b []byte) (int, error) {
- c, err := f.prepareIo()
- if err != nil {
- return 0, err
- }
- var bytes uint32
- err = syscall.ReadFile(f.handle, b, &bytes, &c.o)
- n, err := f.asyncIo(c, f.readDeadline, bytes, err)
-
- // Handle EOF conditions.
- if err == nil && n == 0 && len(b) != 0 {
- return 0, io.EOF
- } else if err == syscall.ERROR_BROKEN_PIPE {
- return 0, io.EOF
- } else {
- return n, err
- }
-}
-
-// Write writes to a file handle.
-func (f *win32File) Write(b []byte) (int, error) {
- c, err := f.prepareIo()
- if err != nil {
- return 0, err
- }
- var bytes uint32
- err = syscall.WriteFile(f.handle, b, &bytes, &c.o)
- return f.asyncIo(c, f.writeDeadline, bytes, err)
-}
-
-func (f *win32File) SetReadDeadline(t time.Time) error {
- f.readDeadline = t
- return nil
-}
-
-func (f *win32File) SetWriteDeadline(t time.Time) error {
- f.writeDeadline = t
- return nil
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/fileinfo.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/fileinfo.go
deleted file mode 100644
index d5acb72d5..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/fileinfo.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package winio
-
-import (
- "os"
- "syscall"
- "unsafe"
-)
-
-//sys getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = GetFileInformationByHandleEx
-//sys setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = SetFileInformationByHandle
-
-const (
- fileBasicInfo = 0
- fileIDInfo = 0x12
-)
-
-// FileBasicInfo contains file access time and file attributes information.
-type FileBasicInfo struct {
- CreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime
- FileAttributes uintptr // includes padding
-}
-
-// GetFileBasicInfo retrieves times and attributes for a file.
-func GetFileBasicInfo(f *os.File) (*FileBasicInfo, error) {
- bi := &FileBasicInfo{}
- if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil {
- return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err}
- }
- return bi, nil
-}
-
-// SetFileBasicInfo sets times and attributes for a file.
-func SetFileBasicInfo(f *os.File, bi *FileBasicInfo) error {
- if err := setFileInformationByHandle(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil {
- return &os.PathError{Op: "SetFileInformationByHandle", Path: f.Name(), Err: err}
- }
- return nil
-}
-
-// FileIDInfo contains the volume serial number and file ID for a file. This pair should be
-// unique on a system.
-type FileIDInfo struct {
- VolumeSerialNumber uint64
- FileID [16]byte
-}
-
-// GetFileID retrieves the unique (volume, file ID) pair for a file.
-func GetFileID(f *os.File) (*FileIDInfo, error) {
- fileID := &FileIDInfo{}
- if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileIDInfo, (*byte)(unsafe.Pointer(fileID)), uint32(unsafe.Sizeof(*fileID))); err != nil {
- return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err}
- }
- return fileID, nil
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/pipe.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/pipe.go
deleted file mode 100644
index 82db28306..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/pipe.go
+++ /dev/null
@@ -1,398 +0,0 @@
-package winio
-
-import (
- "errors"
- "io"
- "net"
- "os"
- "syscall"
- "time"
- "unsafe"
-)
-
-//sys connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) = ConnectNamedPipe
-//sys createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateNamedPipeW
-//sys createFile(name string, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateFileW
-//sys waitNamedPipe(name string, timeout uint32) (err error) = WaitNamedPipeW
-//sys getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) = GetNamedPipeInfo
-//sys getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
-
-type securityAttributes struct {
- Length uint32
- SecurityDescriptor *byte
- InheritHandle uint32
-}
-
-const (
- cERROR_PIPE_BUSY = syscall.Errno(231)
- cERROR_PIPE_CONNECTED = syscall.Errno(535)
- cERROR_SEM_TIMEOUT = syscall.Errno(121)
-
- cPIPE_ACCESS_DUPLEX = 0x3
- cFILE_FLAG_FIRST_PIPE_INSTANCE = 0x80000
- cSECURITY_SQOS_PRESENT = 0x100000
- cSECURITY_ANONYMOUS = 0
-
- cPIPE_REJECT_REMOTE_CLIENTS = 0x8
-
- cPIPE_UNLIMITED_INSTANCES = 255
-
- cNMPWAIT_USE_DEFAULT_WAIT = 0
- cNMPWAIT_NOWAIT = 1
-
- cPIPE_TYPE_MESSAGE = 4
-
- cPIPE_READMODE_MESSAGE = 2
-)
-
-var (
- // ErrPipeListenerClosed is returned for pipe operations on listeners that have been closed.
- // This error should match net.errClosing since docker takes a dependency on its text.
- ErrPipeListenerClosed = errors.New("use of closed network connection")
-
- errPipeWriteClosed = errors.New("pipe has been closed for write")
-)
-
-type win32Pipe struct {
- *win32File
- path string
-}
-
-type win32MessageBytePipe struct {
- win32Pipe
- writeClosed bool
- readEOF bool
-}
-
-type pipeAddress string
-
-func (f *win32Pipe) LocalAddr() net.Addr {
- return pipeAddress(f.path)
-}
-
-func (f *win32Pipe) RemoteAddr() net.Addr {
- return pipeAddress(f.path)
-}
-
-func (f *win32Pipe) SetDeadline(t time.Time) error {
- f.SetReadDeadline(t)
- f.SetWriteDeadline(t)
- return nil
-}
-
-// CloseWrite closes the write side of a message pipe in byte mode.
-func (f *win32MessageBytePipe) CloseWrite() error {
- if f.writeClosed {
- return errPipeWriteClosed
- }
- _, err := f.win32File.Write(nil)
- if err != nil {
- return err
- }
- f.writeClosed = true
- return nil
-}
-
-// Write writes bytes to a message pipe in byte mode. Zero-byte writes are ignored, since
-// they are used to implement CloseWrite().
-func (f *win32MessageBytePipe) Write(b []byte) (int, error) {
- if f.writeClosed {
- return 0, errPipeWriteClosed
- }
- if len(b) == 0 {
- return 0, nil
- }
- return f.win32File.Write(b)
-}
-
-// Read reads bytes from a message pipe in byte mode. A read of a zero-byte message on a message
-// mode pipe will return io.EOF, as will all subsequent reads.
-func (f *win32MessageBytePipe) Read(b []byte) (int, error) {
- if f.readEOF {
- return 0, io.EOF
- }
- n, err := f.win32File.Read(b)
- if err == io.EOF {
- // If this was the result of a zero-byte read, then
- // it is possible that the read was due to a zero-size
- // message. Since we are simulating CloseWrite with a
- // zero-byte message, ensure that all future Read() calls
- // also return EOF.
- f.readEOF = true
- }
- return n, err
-}
-
-func (s pipeAddress) Network() string {
- return "pipe"
-}
-
-func (s pipeAddress) String() string {
- return string(s)
-}
-
-// DialPipe connects to a named pipe by path, timing out if the connection
-// takes longer than the specified duration. If timeout is nil, then the timeout
-// is the default timeout established by the pipe server.
-func DialPipe(path string, timeout *time.Duration) (net.Conn, error) {
- var absTimeout time.Time
- if timeout != nil {
- absTimeout = time.Now().Add(*timeout)
- }
- var err error
- var h syscall.Handle
- for {
- h, err = createFile(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_OVERLAPPED|cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0)
- if err != cERROR_PIPE_BUSY {
- break
- }
- now := time.Now()
- var ms uint32
- if absTimeout.IsZero() {
- ms = cNMPWAIT_USE_DEFAULT_WAIT
- } else if now.After(absTimeout) {
- ms = cNMPWAIT_NOWAIT
- } else {
- ms = uint32(absTimeout.Sub(now).Nanoseconds() / 1000 / 1000)
- }
- err = waitNamedPipe(path, ms)
- if err != nil {
- if err == cERROR_SEM_TIMEOUT {
- return nil, ErrTimeout
- }
- break
- }
- }
- if err != nil {
- return nil, &os.PathError{Op: "open", Path: path, Err: err}
- }
-
- var flags uint32
- err = getNamedPipeInfo(h, &flags, nil, nil, nil)
- if err != nil {
- return nil, err
- }
-
- var state uint32
- err = getNamedPipeHandleState(h, &state, nil, nil, nil, nil, 0)
- if err != nil {
- return nil, err
- }
-
- if state&cPIPE_READMODE_MESSAGE != 0 {
- return nil, &os.PathError{Op: "open", Path: path, Err: errors.New("message readmode pipes not supported")}
- }
-
- f, err := makeWin32File(h)
- if err != nil {
- syscall.Close(h)
- return nil, err
- }
-
- // If the pipe is in message mode, return a message byte pipe, which
- // supports CloseWrite().
- if flags&cPIPE_TYPE_MESSAGE != 0 {
- return &win32MessageBytePipe{
- win32Pipe: win32Pipe{win32File: f, path: path},
- }, nil
- }
- return &win32Pipe{win32File: f, path: path}, nil
-}
-
-type acceptResponse struct {
- f *win32File
- err error
-}
-
-type win32PipeListener struct {
- firstHandle syscall.Handle
- path string
- securityDescriptor []byte
- config PipeConfig
- acceptCh chan (chan acceptResponse)
- closeCh chan int
- doneCh chan int
-}
-
-func makeServerPipeHandle(path string, securityDescriptor []byte, c *PipeConfig, first bool) (syscall.Handle, error) {
- var flags uint32 = cPIPE_ACCESS_DUPLEX | syscall.FILE_FLAG_OVERLAPPED
- if first {
- flags |= cFILE_FLAG_FIRST_PIPE_INSTANCE
- }
-
- var mode uint32 = cPIPE_REJECT_REMOTE_CLIENTS
- if c.MessageMode {
- mode |= cPIPE_TYPE_MESSAGE
- }
-
- var sa securityAttributes
- sa.Length = uint32(unsafe.Sizeof(sa))
- if securityDescriptor != nil {
- sa.SecurityDescriptor = &securityDescriptor[0]
- }
- h, err := createNamedPipe(path, flags, mode, cPIPE_UNLIMITED_INSTANCES, uint32(c.OutputBufferSize), uint32(c.InputBufferSize), 0, &sa)
- if err != nil {
- return 0, &os.PathError{Op: "open", Path: path, Err: err}
- }
- return h, nil
-}
-
-func (l *win32PipeListener) makeServerPipe() (*win32File, error) {
- h, err := makeServerPipeHandle(l.path, l.securityDescriptor, &l.config, false)
- if err != nil {
- return nil, err
- }
- f, err := makeWin32File(h)
- if err != nil {
- syscall.Close(h)
- return nil, err
- }
- return f, nil
-}
-
-func (l *win32PipeListener) listenerRoutine() {
- closed := false
- for !closed {
- select {
- case <-l.closeCh:
- closed = true
- case responseCh := <-l.acceptCh:
- p, err := l.makeServerPipe()
- if err == nil {
- // Wait for the client to connect.
- ch := make(chan error)
- go func() {
- ch <- connectPipe(p)
- }()
- select {
- case err = <-ch:
- if err != nil {
- p.Close()
- p = nil
- }
- case <-l.closeCh:
- // Abort the connect request by closing the handle.
- p.Close()
- p = nil
- err = <-ch
- if err == nil || err == ErrFileClosed {
- err = ErrPipeListenerClosed
- }
- closed = true
- }
- }
- responseCh <- acceptResponse{p, err}
- }
- }
- syscall.Close(l.firstHandle)
- l.firstHandle = 0
- // Notify Close() and Accept() callers that the handle has been closed.
- close(l.doneCh)
-}
-
-// PipeConfig contain configuration for the pipe listener.
-type PipeConfig struct {
- // SecurityDescriptor contains a Windows security descriptor in SDDL format.
- SecurityDescriptor string
-
- // MessageMode determines whether the pipe is in byte or message mode. In either
- // case the pipe is read in byte mode by default. The only practical difference in
- // this implementation is that CloseWrite() is only supported for message mode pipes;
- // CloseWrite() is implemented as a zero-byte write, but zero-byte writes are only
- // transferred to the reader (and returned as io.EOF in this implementation)
- // when the pipe is in message mode.
- MessageMode bool
-
- // InputBufferSize specifies the size the input buffer, in bytes.
- InputBufferSize int32
-
- // OutputBufferSize specifies the size the input buffer, in bytes.
- OutputBufferSize int32
-}
-
-// ListenPipe creates a listener on a Windows named pipe path, e.g. \\.\pipe\mypipe.
-// The pipe must not already exist.
-func ListenPipe(path string, c *PipeConfig) (net.Listener, error) {
- var (
- sd []byte
- err error
- )
- if c == nil {
- c = &PipeConfig{}
- }
- if c.SecurityDescriptor != "" {
- sd, err = SddlToSecurityDescriptor(c.SecurityDescriptor)
- if err != nil {
- return nil, err
- }
- }
- h, err := makeServerPipeHandle(path, sd, c, true)
- if err != nil {
- return nil, err
- }
- // Immediately open and then close a client handle so that the named pipe is
- // created but not currently accepting connections.
- h2, err := createFile(path, 0, 0, nil, syscall.OPEN_EXISTING, cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0)
- if err != nil {
- syscall.Close(h)
- return nil, err
- }
- syscall.Close(h2)
- l := &win32PipeListener{
- firstHandle: h,
- path: path,
- securityDescriptor: sd,
- config: *c,
- acceptCh: make(chan (chan acceptResponse)),
- closeCh: make(chan int),
- doneCh: make(chan int),
- }
- go l.listenerRoutine()
- return l, nil
-}
-
-func connectPipe(p *win32File) error {
- c, err := p.prepareIo()
- if err != nil {
- return err
- }
- err = connectNamedPipe(p.handle, &c.o)
- _, err = p.asyncIo(c, time.Time{}, 0, err)
- if err != nil && err != cERROR_PIPE_CONNECTED {
- return err
- }
- return nil
-}
-
-func (l *win32PipeListener) Accept() (net.Conn, error) {
- ch := make(chan acceptResponse)
- select {
- case l.acceptCh <- ch:
- response := <-ch
- err := response.err
- if err != nil {
- return nil, err
- }
- if l.config.MessageMode {
- return &win32MessageBytePipe{
- win32Pipe: win32Pipe{win32File: response.f, path: l.path},
- }, nil
- }
- return &win32Pipe{win32File: response.f, path: l.path}, nil
- case <-l.doneCh:
- return nil, ErrPipeListenerClosed
- }
-}
-
-func (l *win32PipeListener) Close() error {
- select {
- case l.closeCh <- 1:
- <-l.doneCh
- case <-l.doneCh:
- }
- return nil
-}
-
-func (l *win32PipeListener) Addr() net.Addr {
- return pipeAddress(l.path)
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/privilege.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/privilege.go
deleted file mode 100644
index 81f9af7b7..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/privilege.go
+++ /dev/null
@@ -1,150 +0,0 @@
-package winio
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "runtime"
- "syscall"
- "unicode/utf16"
-)
-
-//sys adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) [true] = advapi32.AdjustTokenPrivileges
-//sys impersonateSelf(level uint32) (err error) = advapi32.ImpersonateSelf
-//sys revertToSelf() (err error) = advapi32.RevertToSelf
-//sys openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) = advapi32.OpenThreadToken
-//sys getCurrentThread() (h syscall.Handle) = GetCurrentThread
-//sys lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) = advapi32.LookupPrivilegeValueW
-//sys lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) = advapi32.LookupPrivilegeNameW
-//sys lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) = advapi32.LookupPrivilegeDisplayNameW
-
-const (
- SE_PRIVILEGE_ENABLED = 2
-
- ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300
-
- SeBackupPrivilege = "SeBackupPrivilege"
- SeRestorePrivilege = "SeRestorePrivilege"
-)
-
-const (
- securityAnonymous = iota
- securityIdentification
- securityImpersonation
- securityDelegation
-)
-
-type PrivilegeError struct {
- privileges []uint64
-}
-
-func (e *PrivilegeError) Error() string {
- s := ""
- if len(e.privileges) > 1 {
- s = "Could not enable privileges "
- } else {
- s = "Could not enable privilege "
- }
- for i, p := range e.privileges {
- if i != 0 {
- s += ", "
- }
- s += `"`
- s += getPrivilegeName(p)
- s += `"`
- }
- return s
-}
-
-func RunWithPrivilege(name string, fn func() error) error {
- return RunWithPrivileges([]string{name}, fn)
-}
-
-func RunWithPrivileges(names []string, fn func() error) error {
- var privileges []uint64
- for _, name := range names {
- p := uint64(0)
- err := lookupPrivilegeValue("", name, &p)
- if err != nil {
- return err
- }
- privileges = append(privileges, p)
- }
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
- token, err := newThreadToken()
- if err != nil {
- return err
- }
- defer releaseThreadToken(token)
- err = adjustPrivileges(token, privileges)
- if err != nil {
- return err
- }
- return fn()
-}
-
-func adjustPrivileges(token syscall.Handle, privileges []uint64) error {
- var b bytes.Buffer
- binary.Write(&b, binary.LittleEndian, uint32(len(privileges)))
- for _, p := range privileges {
- binary.Write(&b, binary.LittleEndian, p)
- binary.Write(&b, binary.LittleEndian, uint32(SE_PRIVILEGE_ENABLED))
- }
- prevState := make([]byte, b.Len())
- reqSize := uint32(0)
- success, err := adjustTokenPrivileges(token, false, &b.Bytes()[0], uint32(len(prevState)), &prevState[0], &reqSize)
- if !success {
- return err
- }
- if err == ERROR_NOT_ALL_ASSIGNED {
- return &PrivilegeError{privileges}
- }
- return nil
-}
-
-func getPrivilegeName(luid uint64) string {
- var nameBuffer [256]uint16
- bufSize := uint32(len(nameBuffer))
- err := lookupPrivilegeName("", &luid, &nameBuffer[0], &bufSize)
- if err != nil {
- return fmt.Sprintf("<unknown privilege %d>", luid)
- }
-
- var displayNameBuffer [256]uint16
- displayBufSize := uint32(len(displayNameBuffer))
- var langId uint32
- err = lookupPrivilegeDisplayName("", &nameBuffer[0], &displayNameBuffer[0], &displayBufSize, &langId)
- if err != nil {
- return fmt.Sprintf("<unknown privilege %s>", utf16.Decode(nameBuffer[:bufSize]))
- }
-
- return string(utf16.Decode(displayNameBuffer[:displayBufSize]))
-}
-
-func newThreadToken() (syscall.Handle, error) {
- err := impersonateSelf(securityImpersonation)
- if err != nil {
- panic(err)
- return 0, err
- }
-
- var token syscall.Handle
- err = openThreadToken(getCurrentThread(), syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, false, &token)
- if err != nil {
- rerr := revertToSelf()
- if rerr != nil {
- panic(rerr)
- }
- return 0, err
- }
- return token, nil
-}
-
-func releaseThreadToken(h syscall.Handle) {
- err := revertToSelf()
- if err != nil {
- panic(err)
- }
- syscall.Close(h)
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/reparse.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/reparse.go
deleted file mode 100644
index 96d7b9a87..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/reparse.go
+++ /dev/null
@@ -1,124 +0,0 @@
-package winio
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "strings"
- "unicode/utf16"
- "unsafe"
-)
-
-const (
- reparseTagMountPoint = 0xA0000003
- reparseTagSymlink = 0xA000000C
-)
-
-type reparseDataBuffer struct {
- ReparseTag uint32
- ReparseDataLength uint16
- Reserved uint16
- SubstituteNameOffset uint16
- SubstituteNameLength uint16
- PrintNameOffset uint16
- PrintNameLength uint16
-}
-
-// ReparsePoint describes a Win32 symlink or mount point.
-type ReparsePoint struct {
- Target string
- IsMountPoint bool
-}
-
-// UnsupportedReparsePointError is returned when trying to decode a non-symlink or
-// mount point reparse point.
-type UnsupportedReparsePointError struct {
- Tag uint32
-}
-
-func (e *UnsupportedReparsePointError) Error() string {
- return fmt.Sprintf("unsupported reparse point %x", e.Tag)
-}
-
-// DecodeReparsePoint decodes a Win32 REPARSE_DATA_BUFFER structure containing either a symlink
-// or a mount point.
-func DecodeReparsePoint(b []byte) (*ReparsePoint, error) {
- isMountPoint := false
- tag := binary.LittleEndian.Uint32(b[0:4])
- switch tag {
- case reparseTagMountPoint:
- isMountPoint = true
- case reparseTagSymlink:
- default:
- return nil, &UnsupportedReparsePointError{tag}
- }
- nameOffset := 16 + binary.LittleEndian.Uint16(b[12:14])
- if !isMountPoint {
- nameOffset += 4
- }
- nameLength := binary.LittleEndian.Uint16(b[14:16])
- name := make([]uint16, nameLength/2)
- err := binary.Read(bytes.NewReader(b[nameOffset:nameOffset+nameLength]), binary.LittleEndian, &name)
- if err != nil {
- return nil, err
- }
- return &ReparsePoint{string(utf16.Decode(name)), isMountPoint}, nil
-}
-
-func isDriveLetter(c byte) bool {
- return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
-}
-
-// EncodeReparsePoint encodes a Win32 REPARSE_DATA_BUFFER structure describing a symlink or
-// mount point.
-func EncodeReparsePoint(rp *ReparsePoint) []byte {
- // Generate an NT path and determine if this is a relative path.
- var ntTarget string
- relative := false
- if strings.HasPrefix(rp.Target, `\\?\`) {
- ntTarget = rp.Target
- } else if strings.HasPrefix(rp.Target, `\\`) {
- ntTarget = `\??\UNC\` + rp.Target[2:]
- } else if len(rp.Target) >= 2 && isDriveLetter(rp.Target[0]) && rp.Target[1] == ':' {
- ntTarget = `\??\` + rp.Target
- } else {
- ntTarget = rp.Target
- relative = true
- }
-
- // The paths must be NUL-terminated even though they are counted strings.
- target16 := utf16.Encode([]rune(rp.Target + "\x00"))
- ntTarget16 := utf16.Encode([]rune(ntTarget + "\x00"))
-
- size := int(unsafe.Sizeof(reparseDataBuffer{})) - 8
- size += len(ntTarget16)*2 + len(target16)*2
-
- tag := uint32(reparseTagMountPoint)
- if !rp.IsMountPoint {
- tag = reparseTagSymlink
- size += 4 // Add room for symlink flags
- }
-
- data := reparseDataBuffer{
- ReparseTag: tag,
- ReparseDataLength: uint16(size),
- SubstituteNameOffset: 0,
- SubstituteNameLength: uint16((len(ntTarget16) - 1) * 2),
- PrintNameOffset: uint16(len(ntTarget16) * 2),
- PrintNameLength: uint16((len(target16) - 1) * 2),
- }
-
- var b bytes.Buffer
- binary.Write(&b, binary.LittleEndian, &data)
- if !rp.IsMountPoint {
- flags := uint32(0)
- if relative {
- flags |= 1
- }
- binary.Write(&b, binary.LittleEndian, flags)
- }
-
- binary.Write(&b, binary.LittleEndian, ntTarget16)
- binary.Write(&b, binary.LittleEndian, target16)
- return b.Bytes()
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/sd.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/sd.go
deleted file mode 100644
index 60ab56ce7..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/sd.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package winio
-
-import (
- "syscall"
- "unsafe"
-)
-
-//sys lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) = advapi32.LookupAccountNameW
-//sys convertSidToStringSid(sid *byte, str **uint16) (err error) = advapi32.ConvertSidToStringSidW
-//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW
-//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW
-//sys localFree(mem uintptr) = LocalFree
-//sys getSecurityDescriptorLength(sd uintptr) (len uint32) = advapi32.GetSecurityDescriptorLength
-
-const (
- cERROR_NONE_MAPPED = syscall.Errno(1332)
-)
-
-type AccountLookupError struct {
- Name string
- Err error
-}
-
-func (e *AccountLookupError) Error() string {
- if e.Name == "" {
- return "lookup account: empty account name specified"
- }
- var s string
- switch e.Err {
- case cERROR_NONE_MAPPED:
- s = "not found"
- default:
- s = e.Err.Error()
- }
- return "lookup account " + e.Name + ": " + s
-}
-
-type SddlConversionError struct {
- Sddl string
- Err error
-}
-
-func (e *SddlConversionError) Error() string {
- return "convert " + e.Sddl + ": " + e.Err.Error()
-}
-
-// LookupSidByName looks up the SID of an account by name
-func LookupSidByName(name string) (sid string, err error) {
- if name == "" {
- return "", &AccountLookupError{name, cERROR_NONE_MAPPED}
- }
-
- var sidSize, sidNameUse, refDomainSize uint32
- err = lookupAccountName(nil, name, nil, &sidSize, nil, &refDomainSize, &sidNameUse)
- if err != nil && err != syscall.ERROR_INSUFFICIENT_BUFFER {
- return "", &AccountLookupError{name, err}
- }
- sidBuffer := make([]byte, sidSize)
- refDomainBuffer := make([]uint16, refDomainSize)
- err = lookupAccountName(nil, name, &sidBuffer[0], &sidSize, &refDomainBuffer[0], &refDomainSize, &sidNameUse)
- if err != nil {
- return "", &AccountLookupError{name, err}
- }
- var strBuffer *uint16
- err = convertSidToStringSid(&sidBuffer[0], &strBuffer)
- if err != nil {
- return "", &AccountLookupError{name, err}
- }
- sid = syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(strBuffer))[:])
- localFree(uintptr(unsafe.Pointer(strBuffer)))
- return sid, nil
-}
-
-func SddlToSecurityDescriptor(sddl string) ([]byte, error) {
- var sdBuffer uintptr
- err := convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &sdBuffer, nil)
- if err != nil {
- return nil, &SddlConversionError{sddl, err}
- }
- defer localFree(sdBuffer)
- sd := make([]byte, getSecurityDescriptorLength(sdBuffer))
- copy(sd, (*[0xffff]byte)(unsafe.Pointer(sdBuffer))[:len(sd)])
- return sd, nil
-}
-
-func SecurityDescriptorToSddl(sd []byte) (string, error) {
- var sddl *uint16
- // The returned string length seems to including an aribtrary number of terminating NULs.
- // Don't use it.
- err := convertSecurityDescriptorToStringSecurityDescriptor(&sd[0], 1, 0xff, &sddl, nil)
- if err != nil {
- return "", err
- }
- defer localFree(uintptr(unsafe.Pointer(sddl)))
- return syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(sddl))[:]), nil
-}
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/syscall.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/syscall.go
deleted file mode 100644
index 96fdff7b4..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/syscall.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package winio
-
-//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go
diff --git a/Godeps/_workspace/src/github.com/microsoft/go-winio/zsyscall.go b/Godeps/_workspace/src/github.com/microsoft/go-winio/zsyscall.go
deleted file mode 100644
index 74b6e97a6..000000000
--- a/Godeps/_workspace/src/github.com/microsoft/go-winio/zsyscall.go
+++ /dev/null
@@ -1,492 +0,0 @@
-// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
-
-package winio
-
-import "unsafe"
-import "syscall"
-
-var _ unsafe.Pointer
-
-var (
- modkernel32 = syscall.NewLazyDLL("kernel32.dll")
- modwinmm = syscall.NewLazyDLL("winmm.dll")
- modadvapi32 = syscall.NewLazyDLL("advapi32.dll")
-
- procCancelIoEx = modkernel32.NewProc("CancelIoEx")
- procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort")
- procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus")
- procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
- proctimeBeginPeriod = modwinmm.NewProc("timeBeginPeriod")
- procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe")
- procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW")
- procCreateFileW = modkernel32.NewProc("CreateFileW")
- procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW")
- procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo")
- procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
- procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
- procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
- procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
- procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
- procLocalFree = modkernel32.NewProc("LocalFree")
- procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength")
- procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
- procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle")
- procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
- procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf")
- procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
- procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
- procGetCurrentThread = modkernel32.NewProc("GetCurrentThread")
- procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW")
- procLookupPrivilegeNameW = modadvapi32.NewProc("LookupPrivilegeNameW")
- procLookupPrivilegeDisplayNameW = modadvapi32.NewProc("LookupPrivilegeDisplayNameW")
- procBackupRead = modkernel32.NewProc("BackupRead")
- procBackupWrite = modkernel32.NewProc("BackupWrite")
-)
-
-func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) {
- r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) {
- r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(file), uintptr(port), uintptr(key), uintptr(threadCount), 0, 0)
- newport = syscall.Handle(r0)
- if newport == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) {
- r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func timeBeginPeriod(period uint32) (n int32) {
- r0, _, _ := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0)
- n = int32(r0)
- return
-}
-
-func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) {
- r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(name)
- if err != nil {
- return
- }
- return _createNamedPipe(_p0, flags, pipeMode, maxInstances, outSize, inSize, defaultTimeout, sa)
-}
-
-func _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error) {
- r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0)
- handle = syscall.Handle(r0)
- if handle == syscall.InvalidHandle {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func createFile(name string, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(name)
- if err != nil {
- return
- }
- return _createFile(_p0, access, mode, sa, createmode, attrs, templatefile)
-}
-
-func _createFile(name *uint16, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) {
- r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
- handle = syscall.Handle(r0)
- if handle == syscall.InvalidHandle {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func waitNamedPipe(name string, timeout uint32) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(name)
- if err != nil {
- return
- }
- return _waitNamedPipe(_p0, timeout)
-}
-
-func _waitNamedPipe(name *uint16, timeout uint32) (err error) {
- r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {
- r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(accountName)
- if err != nil {
- return
- }
- return _lookupAccountName(systemName, _p0, sid, sidSize, refDomain, refDomainSize, sidNameUse)
-}
-
-func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {
- r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func convertSidToStringSid(sid *byte, str **uint16) (err error) {
- r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, size *uint32) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(str)
- if err != nil {
- return
- }
- return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
-}
-
-func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd *uintptr, size *uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func localFree(mem uintptr) {
- syscall.Syscall(procLocalFree.Addr(), 1, uintptr(mem), 0, 0)
- return
-}
-
-func getSecurityDescriptorLength(sd uintptr) (len uint32) {
- r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(sd), 0, 0)
- len = uint32(r0)
- return
-}
-
-func getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) {
- var _p0 uint32
- if releaseAll {
- _p0 = 1
- } else {
- _p0 = 0
- }
- r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize)))
- success = r0 != 0
- if true {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func impersonateSelf(level uint32) (err error) {
- r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func revertToSelf() (err error) {
- r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) {
- var _p0 uint32
- if openAsSelf {
- _p0 = 1
- } else {
- _p0 = 0
- }
- r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func getCurrentThread() (h syscall.Handle) {
- r0, _, _ := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0)
- h = syscall.Handle(r0)
- return
-}
-
-func lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(systemName)
- if err != nil {
- return
- }
- var _p1 *uint16
- _p1, err = syscall.UTF16PtrFromString(name)
- if err != nil {
- return
- }
- return _lookupPrivilegeValue(_p0, _p1, luid)
-}
-
-func _lookupPrivilegeValue(systemName *uint16, name *uint16, luid *uint64) (err error) {
- r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(systemName)
- if err != nil {
- return
- }
- return _lookupPrivilegeName(_p0, luid, buffer, size)
-}
-
-func _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size *uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) {
- var _p0 *uint16
- _p0, err = syscall.UTF16PtrFromString(systemName)
- if err != nil {
- return
- }
- return _lookupPrivilegeDisplayName(_p0, name, buffer, size, languageId)
-}
-
-func _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) {
- r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) {
- var _p0 *byte
- if len(b) > 0 {
- _p0 = &b[0]
- }
- var _p1 uint32
- if abort {
- _p1 = 1
- } else {
- _p1 = 0
- }
- var _p2 uint32
- if processSecurity {
- _p2 = 1
- } else {
- _p2 = 0
- }
- r1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
-
-func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) {
- var _p0 *byte
- if len(b) > 0 {
- _p0 = &b[0]
- }
- var _p1 uint32
- if abort {
- _p1 = 1
- } else {
- _p1 = 0
- }
- var _p2 uint32
- if processSecurity {
- _p2 = 1
- } else {
- _p2 = 0
- }
- r1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0)
- if r1 == 0 {
- if e1 != 0 {
- err = error(e1)
- } else {
- err = syscall.EINVAL
- }
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/rjeczalik/notify/.travis.yml b/Godeps/_workspace/src/github.com/rjeczalik/notify/.travis.yml
index 4f1f5f25e..c92863d50 100644
--- a/Godeps/_workspace/src/github.com/rjeczalik/notify/.travis.yml
+++ b/Godeps/_workspace/src/github.com/rjeczalik/notify/.travis.yml
@@ -21,10 +21,9 @@ env:
- PATH=$HOME/bin:$PATH
install:
- - go get golang.org/x/tools/cmd/vet
- go get -t -v ./...
script:
- - go tool vet -all .
+ - "(go version | grep -q 1.4) || go tool vet -all ."
- go install $GOFLAGS ./...
- go test -v -race $GOFLAGS ./...
diff --git a/Godeps/_workspace/src/github.com/rjeczalik/notify/appveyor.yml b/Godeps/_workspace/src/github.com/rjeczalik/notify/appveyor.yml
index 16d09ac3b..8e762d05c 100644
--- a/Godeps/_workspace/src/github.com/rjeczalik/notify/appveyor.yml
+++ b/Godeps/_workspace/src/github.com/rjeczalik/notify/appveyor.yml
@@ -11,7 +11,6 @@ environment:
install:
- go version
- - go get golang.org/x/tools/cmd/vet
- go get -v -t ./...
build_script:
diff --git a/Godeps/_workspace/src/github.com/rjeczalik/notify/watcher_fsevents.go b/Godeps/_workspace/src/github.com/rjeczalik/notify/watcher_fsevents.go
index 54334912e..9062c17c7 100644
--- a/Godeps/_workspace/src/github.com/rjeczalik/notify/watcher_fsevents.go
+++ b/Godeps/_workspace/src/github.com/rjeczalik/notify/watcher_fsevents.go
@@ -133,7 +133,7 @@ func (w *watch) Dispatch(ev []FSEvent) {
ev[i].Flags, ev[i].Path, i, ev[i].ID, len(ev))
if ev[i].Flags&failure != 0 {
// TODO(rjeczalik): missing error handling
- panic("unhandled error: " + Event(ev[i].Flags).String())
+ continue
}
if !strings.HasPrefix(ev[i].Path, w.path) {
continue
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
index 652fa4124..501006717 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
@@ -158,6 +158,7 @@ func (b *Batch) append(p *Batch) {
b.grow(len(p.data) - batchHdrLen)
b.data = append(b.data, p.data[batchHdrLen:]...)
b.rLen += p.rLen
+ b.bLen += p.bLen
}
if p.sync {
b.sync = true
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
index 9664e64d0..659f00dc6 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
@@ -172,7 +172,7 @@ func (db *DB) compactionTransact(name string, t compactionTransactInterface) {
disableBackoff = db.s.o.GetDisableCompactionBackoff()
)
for n := 0; ; n++ {
- // Check wether the DB is closed.
+ // Check whether the DB is closed.
if db.isClosed() {
db.logf("%s exiting", name)
db.compactionExitTransact()
@@ -688,7 +688,7 @@ func (db *DB) compTrigger(compC chan<- cCmd) {
}
}
-// This will trigger auto compation and/or wait for all compaction to be done.
+// This will trigger auto compaction and/or wait for all compaction to be done.
func (db *DB) compTriggerWait(compC chan<- cCmd) (err error) {
ch := make(chan error)
defer close(ch)
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_nacl.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_nacl.go
new file mode 100644
index 000000000..5545aeef2
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_nacl.go
@@ -0,0 +1,34 @@
+// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
+// All rights reserved.
+//
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// +build nacl
+
+package storage
+
+import (
+ "os"
+ "syscall"
+)
+
+func newFileLock(path string, readOnly bool) (fl fileLock, err error) {
+ return nil, syscall.ENOTSUP
+}
+
+func setFileLock(f *os.File, readOnly, lock bool) error {
+ return syscall.ENOTSUP
+}
+
+func rename(oldpath, newpath string) error {
+ return syscall.ENOTSUP
+}
+
+func isErrInvalid(err error) bool {
+ return false
+}
+
+func syncDir(name string) error {
+ return syscall.ENOTSUP
+}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/hash.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/hash.go
index 54903660f..7f3fa4e2c 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/hash.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/hash.go
@@ -7,38 +7,38 @@
package util
import (
- "bytes"
"encoding/binary"
)
// Hash return hash of the given data.
func Hash(data []byte, seed uint32) uint32 {
// Similar to murmur hash
- var m uint32 = 0xc6a4a793
- var r uint32 = 24
- h := seed ^ (uint32(len(data)) * m)
+ const (
+ m = uint32(0xc6a4a793)
+ r = uint32(24)
+ )
+ var (
+ h = seed ^ (uint32(len(data)) * m)
+ i int
+ )
- buf := bytes.NewBuffer(data)
- for buf.Len() >= 4 {
- var w uint32
- binary.Read(buf, binary.LittleEndian, &w)
- h += w
+ for n := len(data) - len(data)%4; i < n; i += 4 {
+ h += binary.LittleEndian.Uint32(data[i:])
h *= m
h ^= (h >> 16)
}
- rest := buf.Bytes()
- switch len(rest) {
+ switch len(data) - i {
default:
panic("not reached")
case 3:
- h += uint32(rest[2]) << 16
+ h += uint32(data[i+2]) << 16
fallthrough
case 2:
- h += uint32(rest[1]) << 8
+ h += uint32(data[i+1]) << 8
fallthrough
case 1:
- h += uint32(rest[0])
+ h += uint32(data[i])
h *= m
h ^= (h >> r)
case 0:
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/context.go b/Godeps/_workspace/src/golang.org/x/net/context/context.go
index 11bd8d34e..ea1a7cd53 100644
--- a/Godeps/_workspace/src/golang.org/x/net/context/context.go
+++ b/Godeps/_workspace/src/golang.org/x/net/context/context.go
@@ -36,12 +36,7 @@
// Contexts.
package context
-import (
- "errors"
- "fmt"
- "sync"
- "time"
-)
+import "time"
// A Context carries a deadline, a cancelation signal, and other values across
// API boundaries.
@@ -66,7 +61,7 @@ type Context interface {
//
// // Stream generates values with DoSomething and sends them to out
// // until DoSomething returns an error or ctx.Done is closed.
- // func Stream(ctx context.Context, out <-chan Value) error {
+ // func Stream(ctx context.Context, out chan<- Value) error {
// for {
// v, err := DoSomething(ctx)
// if err != nil {
@@ -138,48 +133,6 @@ type Context interface {
Value(key interface{}) interface{}
}
-// Canceled is the error returned by Context.Err when the context is canceled.
-var Canceled = errors.New("context canceled")
-
-// DeadlineExceeded is the error returned by Context.Err when the context's
-// deadline passes.
-var DeadlineExceeded = errors.New("context deadline exceeded")
-
-// An emptyCtx is never canceled, has no values, and has no deadline. It is not
-// struct{}, since vars of this type must have distinct addresses.
-type emptyCtx int
-
-func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
- return
-}
-
-func (*emptyCtx) Done() <-chan struct{} {
- return nil
-}
-
-func (*emptyCtx) Err() error {
- return nil
-}
-
-func (*emptyCtx) Value(key interface{}) interface{} {
- return nil
-}
-
-func (e *emptyCtx) String() string {
- switch e {
- case background:
- return "context.Background"
- case todo:
- return "context.TODO"
- }
- return "unknown empty Context"
-}
-
-var (
- background = new(emptyCtx)
- todo = new(emptyCtx)
-)
-
// Background returns a non-nil, empty Context. It is never canceled, has no
// values, and has no deadline. It is typically used by the main function,
// initialization, and tests, and as the top-level Context for incoming
@@ -201,247 +154,3 @@ func TODO() Context {
// A CancelFunc does not wait for the work to stop.
// After the first call, subsequent calls to a CancelFunc do nothing.
type CancelFunc func()
-
-// WithCancel returns a copy of parent with a new Done channel. The returned
-// context's Done channel is closed when the returned cancel function is called
-// or when the parent context's Done channel is closed, whichever happens first.
-//
-// Canceling this context releases resources associated with it, so code should
-// call cancel as soon as the operations running in this Context complete.
-func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
- c := newCancelCtx(parent)
- propagateCancel(parent, &c)
- return &c, func() { c.cancel(true, Canceled) }
-}
-
-// newCancelCtx returns an initialized cancelCtx.
-func newCancelCtx(parent Context) cancelCtx {
- return cancelCtx{
- Context: parent,
- done: make(chan struct{}),
- }
-}
-
-// propagateCancel arranges for child to be canceled when parent is.
-func propagateCancel(parent Context, child canceler) {
- if parent.Done() == nil {
- return // parent is never canceled
- }
- if p, ok := parentCancelCtx(parent); ok {
- p.mu.Lock()
- if p.err != nil {
- // parent has already been canceled
- child.cancel(false, p.err)
- } else {
- if p.children == nil {
- p.children = make(map[canceler]bool)
- }
- p.children[child] = true
- }
- p.mu.Unlock()
- } else {
- go func() {
- select {
- case <-parent.Done():
- child.cancel(false, parent.Err())
- case <-child.Done():
- }
- }()
- }
-}
-
-// parentCancelCtx follows a chain of parent references until it finds a
-// *cancelCtx. This function understands how each of the concrete types in this
-// package represents its parent.
-func parentCancelCtx(parent Context) (*cancelCtx, bool) {
- for {
- switch c := parent.(type) {
- case *cancelCtx:
- return c, true
- case *timerCtx:
- return &c.cancelCtx, true
- case *valueCtx:
- parent = c.Context
- default:
- return nil, false
- }
- }
-}
-
-// removeChild removes a context from its parent.
-func removeChild(parent Context, child canceler) {
- p, ok := parentCancelCtx(parent)
- if !ok {
- return
- }
- p.mu.Lock()
- if p.children != nil {
- delete(p.children, child)
- }
- p.mu.Unlock()
-}
-
-// A canceler is a context type that can be canceled directly. The
-// implementations are *cancelCtx and *timerCtx.
-type canceler interface {
- cancel(removeFromParent bool, err error)
- Done() <-chan struct{}
-}
-
-// A cancelCtx can be canceled. When canceled, it also cancels any children
-// that implement canceler.
-type cancelCtx struct {
- Context
-
- done chan struct{} // closed by the first cancel call.
-
- mu sync.Mutex
- children map[canceler]bool // set to nil by the first cancel call
- err error // set to non-nil by the first cancel call
-}
-
-func (c *cancelCtx) Done() <-chan struct{} {
- return c.done
-}
-
-func (c *cancelCtx) Err() error {
- c.mu.Lock()
- defer c.mu.Unlock()
- return c.err
-}
-
-func (c *cancelCtx) String() string {
- return fmt.Sprintf("%v.WithCancel", c.Context)
-}
-
-// cancel closes c.done, cancels each of c's children, and, if
-// removeFromParent is true, removes c from its parent's children.
-func (c *cancelCtx) cancel(removeFromParent bool, err error) {
- if err == nil {
- panic("context: internal error: missing cancel error")
- }
- c.mu.Lock()
- if c.err != nil {
- c.mu.Unlock()
- return // already canceled
- }
- c.err = err
- close(c.done)
- for child := range c.children {
- // NOTE: acquiring the child's lock while holding parent's lock.
- child.cancel(false, err)
- }
- c.children = nil
- c.mu.Unlock()
-
- if removeFromParent {
- removeChild(c.Context, c)
- }
-}
-
-// WithDeadline returns a copy of the parent context with the deadline adjusted
-// to be no later than d. If the parent's deadline is already earlier than d,
-// WithDeadline(parent, d) is semantically equivalent to parent. The returned
-// context's Done channel is closed when the deadline expires, when the returned
-// cancel function is called, or when the parent context's Done channel is
-// closed, whichever happens first.
-//
-// Canceling this context releases resources associated with it, so code should
-// call cancel as soon as the operations running in this Context complete.
-func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
- if cur, ok := parent.Deadline(); ok && cur.Before(deadline) {
- // The current deadline is already sooner than the new one.
- return WithCancel(parent)
- }
- c := &timerCtx{
- cancelCtx: newCancelCtx(parent),
- deadline: deadline,
- }
- propagateCancel(parent, c)
- d := deadline.Sub(time.Now())
- if d <= 0 {
- c.cancel(true, DeadlineExceeded) // deadline has already passed
- return c, func() { c.cancel(true, Canceled) }
- }
- c.mu.Lock()
- defer c.mu.Unlock()
- if c.err == nil {
- c.timer = time.AfterFunc(d, func() {
- c.cancel(true, DeadlineExceeded)
- })
- }
- return c, func() { c.cancel(true, Canceled) }
-}
-
-// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to
-// implement Done and Err. It implements cancel by stopping its timer then
-// delegating to cancelCtx.cancel.
-type timerCtx struct {
- cancelCtx
- timer *time.Timer // Under cancelCtx.mu.
-
- deadline time.Time
-}
-
-func (c *timerCtx) Deadline() (deadline time.Time, ok bool) {
- return c.deadline, true
-}
-
-func (c *timerCtx) String() string {
- return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))
-}
-
-func (c *timerCtx) cancel(removeFromParent bool, err error) {
- c.cancelCtx.cancel(false, err)
- if removeFromParent {
- // Remove this timerCtx from its parent cancelCtx's children.
- removeChild(c.cancelCtx.Context, c)
- }
- c.mu.Lock()
- if c.timer != nil {
- c.timer.Stop()
- c.timer = nil
- }
- c.mu.Unlock()
-}
-
-// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
-//
-// Canceling this context releases resources associated with it, so code should
-// call cancel as soon as the operations running in this Context complete:
-//
-// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
-// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
-// defer cancel() // releases resources if slowOperation completes before timeout elapses
-// return slowOperation(ctx)
-// }
-func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
- return WithDeadline(parent, time.Now().Add(timeout))
-}
-
-// WithValue returns a copy of parent in which the value associated with key is
-// val.
-//
-// Use context Values only for request-scoped data that transits processes and
-// APIs, not for passing optional parameters to functions.
-func WithValue(parent Context, key interface{}, val interface{}) Context {
- return &valueCtx{parent, key, val}
-}
-
-// A valueCtx carries a key-value pair. It implements Value for that key and
-// delegates all other calls to the embedded Context.
-type valueCtx struct {
- Context
- key, val interface{}
-}
-
-func (c *valueCtx) String() string {
- return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)
-}
-
-func (c *valueCtx) Value(key interface{}) interface{} {
- if c.key == key {
- return c.val
- }
- return c.Context.Value(key)
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go
deleted file mode 100644
index e3170e333..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.5
-
-package ctxhttp
-
-import "net/http"
-
-func canceler(client *http.Client, req *http.Request) func() {
- // TODO(djd): Respect any existing value of req.Cancel.
- ch := make(chan struct{})
- req.Cancel = ch
-
- return func() {
- close(ch)
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go
deleted file mode 100644
index 56bcbadb8..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.5
-
-package ctxhttp
-
-import "net/http"
-
-type requestCanceler interface {
- CancelRequest(*http.Request)
-}
-
-func canceler(client *http.Client, req *http.Request) func() {
- rc, ok := client.Transport.(requestCanceler)
- if !ok {
- return func() {}
- }
- return func() {
- rc.CancelRequest(req)
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go
deleted file mode 100644
index 26a5e19ac..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package ctxhttp provides helper functions for performing context-aware HTTP requests.
-package ctxhttp
-
-import (
- "io"
- "net/http"
- "net/url"
- "strings"
-
- "golang.org/x/net/context"
-)
-
-func nop() {}
-
-var (
- testHookContextDoneBeforeHeaders = nop
- testHookDoReturned = nop
- testHookDidBodyClose = nop
-)
-
-// Do sends an HTTP request with the provided http.Client and returns an HTTP response.
-// If the client is nil, http.DefaultClient is used.
-// If the context is canceled or times out, ctx.Err() will be returned.
-func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
- if client == nil {
- client = http.DefaultClient
- }
-
- // Request cancelation changed in Go 1.5, see cancelreq.go and cancelreq_go14.go.
- cancel := canceler(client, req)
-
- type responseAndError struct {
- resp *http.Response
- err error
- }
- result := make(chan responseAndError, 1)
-
- go func() {
- resp, err := client.Do(req)
- testHookDoReturned()
- result <- responseAndError{resp, err}
- }()
-
- var resp *http.Response
-
- select {
- case <-ctx.Done():
- testHookContextDoneBeforeHeaders()
- cancel()
- // Clean up after the goroutine calling client.Do:
- go func() {
- if r := <-result; r.resp != nil {
- testHookDidBodyClose()
- r.resp.Body.Close()
- }
- }()
- return nil, ctx.Err()
- case r := <-result:
- var err error
- resp, err = r.resp, r.err
- if err != nil {
- return resp, err
- }
- }
-
- c := make(chan struct{})
- go func() {
- select {
- case <-ctx.Done():
- cancel()
- case <-c:
- // The response's Body is closed.
- }
- }()
- resp.Body = &notifyingReader{resp.Body, c}
-
- return resp, nil
-}
-
-// Get issues a GET request via the Do function.
-func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
- req, err := http.NewRequest("GET", url, nil)
- if err != nil {
- return nil, err
- }
- return Do(ctx, client, req)
-}
-
-// Head issues a HEAD request via the Do function.
-func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
- req, err := http.NewRequest("HEAD", url, nil)
- if err != nil {
- return nil, err
- }
- return Do(ctx, client, req)
-}
-
-// Post issues a POST request via the Do function.
-func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) {
- req, err := http.NewRequest("POST", url, body)
- if err != nil {
- return nil, err
- }
- req.Header.Set("Content-Type", bodyType)
- return Do(ctx, client, req)
-}
-
-// PostForm issues a POST request via the Do function.
-func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) {
- return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode()))
-}
-
-// notifyingReader is an io.ReadCloser that closes the notify channel after
-// Close is called or a Read fails on the underlying ReadCloser.
-type notifyingReader struct {
- io.ReadCloser
- notify chan<- struct{}
-}
-
-func (r *notifyingReader) Read(p []byte) (int, error) {
- n, err := r.ReadCloser.Read(p)
- if err != nil && r.notify != nil {
- close(r.notify)
- r.notify = nil
- }
- return n, err
-}
-
-func (r *notifyingReader) Close() error {
- err := r.ReadCloser.Close()
- if r.notify != nil {
- close(r.notify)
- r.notify = nil
- }
- return err
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/go17.go b/Godeps/_workspace/src/golang.org/x/net/context/go17.go
new file mode 100644
index 000000000..f8cda19ad
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/context/go17.go
@@ -0,0 +1,72 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package context
+
+import (
+ "context" // standard library's context, as of Go 1.7
+ "time"
+)
+
+var (
+ todo = context.TODO()
+ background = context.Background()
+)
+
+// Canceled is the error returned by Context.Err when the context is canceled.
+var Canceled = context.Canceled
+
+// DeadlineExceeded is the error returned by Context.Err when the context's
+// deadline passes.
+var DeadlineExceeded = context.DeadlineExceeded
+
+// WithCancel returns a copy of parent with a new Done channel. The returned
+// context's Done channel is closed when the returned cancel function is called
+// or when the parent context's Done channel is closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
+ ctx, f := context.WithCancel(parent)
+ return ctx, CancelFunc(f)
+}
+
+// WithDeadline returns a copy of the parent context with the deadline adjusted
+// to be no later than d. If the parent's deadline is already earlier than d,
+// WithDeadline(parent, d) is semantically equivalent to parent. The returned
+// context's Done channel is closed when the deadline expires, when the returned
+// cancel function is called, or when the parent context's Done channel is
+// closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
+ ctx, f := context.WithDeadline(parent, deadline)
+ return ctx, CancelFunc(f)
+}
+
+// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete:
+//
+// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
+// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
+// defer cancel() // releases resources if slowOperation completes before timeout elapses
+// return slowOperation(ctx)
+// }
+func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
+ return WithDeadline(parent, time.Now().Add(timeout))
+}
+
+// WithValue returns a copy of parent in which the value associated with key is
+// val.
+//
+// Use context Values only for request-scoped data that transits processes and
+// APIs, not for passing optional parameters to functions.
+func WithValue(parent Context, key interface{}, val interface{}) Context {
+ return context.WithValue(parent, key, val)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/pre_go17.go b/Godeps/_workspace/src/golang.org/x/net/context/pre_go17.go
new file mode 100644
index 000000000..5a30acabd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/context/pre_go17.go
@@ -0,0 +1,300 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.7
+
+package context
+
+import (
+ "errors"
+ "fmt"
+ "sync"
+ "time"
+)
+
+// An emptyCtx is never canceled, has no values, and has no deadline. It is not
+// struct{}, since vars of this type must have distinct addresses.
+type emptyCtx int
+
+func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
+ return
+}
+
+func (*emptyCtx) Done() <-chan struct{} {
+ return nil
+}
+
+func (*emptyCtx) Err() error {
+ return nil
+}
+
+func (*emptyCtx) Value(key interface{}) interface{} {
+ return nil
+}
+
+func (e *emptyCtx) String() string {
+ switch e {
+ case background:
+ return "context.Background"
+ case todo:
+ return "context.TODO"
+ }
+ return "unknown empty Context"
+}
+
+var (
+ background = new(emptyCtx)
+ todo = new(emptyCtx)
+)
+
+// Canceled is the error returned by Context.Err when the context is canceled.
+var Canceled = errors.New("context canceled")
+
+// DeadlineExceeded is the error returned by Context.Err when the context's
+// deadline passes.
+var DeadlineExceeded = errors.New("context deadline exceeded")
+
+// WithCancel returns a copy of parent with a new Done channel. The returned
+// context's Done channel is closed when the returned cancel function is called
+// or when the parent context's Done channel is closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
+ c := newCancelCtx(parent)
+ propagateCancel(parent, c)
+ return c, func() { c.cancel(true, Canceled) }
+}
+
+// newCancelCtx returns an initialized cancelCtx.
+func newCancelCtx(parent Context) *cancelCtx {
+ return &cancelCtx{
+ Context: parent,
+ done: make(chan struct{}),
+ }
+}
+
+// propagateCancel arranges for child to be canceled when parent is.
+func propagateCancel(parent Context, child canceler) {
+ if parent.Done() == nil {
+ return // parent is never canceled
+ }
+ if p, ok := parentCancelCtx(parent); ok {
+ p.mu.Lock()
+ if p.err != nil {
+ // parent has already been canceled
+ child.cancel(false, p.err)
+ } else {
+ if p.children == nil {
+ p.children = make(map[canceler]bool)
+ }
+ p.children[child] = true
+ }
+ p.mu.Unlock()
+ } else {
+ go func() {
+ select {
+ case <-parent.Done():
+ child.cancel(false, parent.Err())
+ case <-child.Done():
+ }
+ }()
+ }
+}
+
+// parentCancelCtx follows a chain of parent references until it finds a
+// *cancelCtx. This function understands how each of the concrete types in this
+// package represents its parent.
+func parentCancelCtx(parent Context) (*cancelCtx, bool) {
+ for {
+ switch c := parent.(type) {
+ case *cancelCtx:
+ return c, true
+ case *timerCtx:
+ return c.cancelCtx, true
+ case *valueCtx:
+ parent = c.Context
+ default:
+ return nil, false
+ }
+ }
+}
+
+// removeChild removes a context from its parent.
+func removeChild(parent Context, child canceler) {
+ p, ok := parentCancelCtx(parent)
+ if !ok {
+ return
+ }
+ p.mu.Lock()
+ if p.children != nil {
+ delete(p.children, child)
+ }
+ p.mu.Unlock()
+}
+
+// A canceler is a context type that can be canceled directly. The
+// implementations are *cancelCtx and *timerCtx.
+type canceler interface {
+ cancel(removeFromParent bool, err error)
+ Done() <-chan struct{}
+}
+
+// A cancelCtx can be canceled. When canceled, it also cancels any children
+// that implement canceler.
+type cancelCtx struct {
+ Context
+
+ done chan struct{} // closed by the first cancel call.
+
+ mu sync.Mutex
+ children map[canceler]bool // set to nil by the first cancel call
+ err error // set to non-nil by the first cancel call
+}
+
+func (c *cancelCtx) Done() <-chan struct{} {
+ return c.done
+}
+
+func (c *cancelCtx) Err() error {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ return c.err
+}
+
+func (c *cancelCtx) String() string {
+ return fmt.Sprintf("%v.WithCancel", c.Context)
+}
+
+// cancel closes c.done, cancels each of c's children, and, if
+// removeFromParent is true, removes c from its parent's children.
+func (c *cancelCtx) cancel(removeFromParent bool, err error) {
+ if err == nil {
+ panic("context: internal error: missing cancel error")
+ }
+ c.mu.Lock()
+ if c.err != nil {
+ c.mu.Unlock()
+ return // already canceled
+ }
+ c.err = err
+ close(c.done)
+ for child := range c.children {
+ // NOTE: acquiring the child's lock while holding parent's lock.
+ child.cancel(false, err)
+ }
+ c.children = nil
+ c.mu.Unlock()
+
+ if removeFromParent {
+ removeChild(c.Context, c)
+ }
+}
+
+// WithDeadline returns a copy of the parent context with the deadline adjusted
+// to be no later than d. If the parent's deadline is already earlier than d,
+// WithDeadline(parent, d) is semantically equivalent to parent. The returned
+// context's Done channel is closed when the deadline expires, when the returned
+// cancel function is called, or when the parent context's Done channel is
+// closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
+ if cur, ok := parent.Deadline(); ok && cur.Before(deadline) {
+ // The current deadline is already sooner than the new one.
+ return WithCancel(parent)
+ }
+ c := &timerCtx{
+ cancelCtx: newCancelCtx(parent),
+ deadline: deadline,
+ }
+ propagateCancel(parent, c)
+ d := deadline.Sub(time.Now())
+ if d <= 0 {
+ c.cancel(true, DeadlineExceeded) // deadline has already passed
+ return c, func() { c.cancel(true, Canceled) }
+ }
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ if c.err == nil {
+ c.timer = time.AfterFunc(d, func() {
+ c.cancel(true, DeadlineExceeded)
+ })
+ }
+ return c, func() { c.cancel(true, Canceled) }
+}
+
+// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to
+// implement Done and Err. It implements cancel by stopping its timer then
+// delegating to cancelCtx.cancel.
+type timerCtx struct {
+ *cancelCtx
+ timer *time.Timer // Under cancelCtx.mu.
+
+ deadline time.Time
+}
+
+func (c *timerCtx) Deadline() (deadline time.Time, ok bool) {
+ return c.deadline, true
+}
+
+func (c *timerCtx) String() string {
+ return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))
+}
+
+func (c *timerCtx) cancel(removeFromParent bool, err error) {
+ c.cancelCtx.cancel(false, err)
+ if removeFromParent {
+ // Remove this timerCtx from its parent cancelCtx's children.
+ removeChild(c.cancelCtx.Context, c)
+ }
+ c.mu.Lock()
+ if c.timer != nil {
+ c.timer.Stop()
+ c.timer = nil
+ }
+ c.mu.Unlock()
+}
+
+// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete:
+//
+// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
+// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
+// defer cancel() // releases resources if slowOperation completes before timeout elapses
+// return slowOperation(ctx)
+// }
+func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
+ return WithDeadline(parent, time.Now().Add(timeout))
+}
+
+// WithValue returns a copy of parent in which the value associated with key is
+// val.
+//
+// Use context Values only for request-scoped data that transits processes and
+// APIs, not for passing optional parameters to functions.
+func WithValue(parent Context, key interface{}, val interface{}) Context {
+ return &valueCtx{parent, key, val}
+}
+
+// A valueCtx carries a key-value pair. It implements Value for that key and
+// delegates all other calls to the embedded Context.
+type valueCtx struct {
+ Context
+ key, val interface{}
+}
+
+func (c *valueCtx) String() string {
+ return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)
+}
+
+func (c *valueCtx) Value(key interface{}) interface{} {
+ if c.key == key {
+ return c.val
+ }
+ return c.Context.Value(key)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go b/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
index 60bbc8418..8cffdd16c 100644
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
+++ b/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
@@ -81,9 +81,6 @@ type hybiFrameReader struct {
func (frame *hybiFrameReader) Read(msg []byte) (n int, err error) {
n, err = frame.reader.Read(msg)
- if err != nil {
- return 0, err
- }
if frame.header.MaskingKey != nil {
for i := 0; i < n; i++ {
msg[i] = msg[i] ^ frame.header.MaskingKey[frame.pos%4]
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go b/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
index da0dd964c..9f9b9a52d 100644
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
+++ b/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
@@ -144,6 +144,8 @@ type frameHandler interface {
}
// Conn represents a WebSocket connection.
+//
+// Multiple goroutines may invoke methods on a Conn simultaneously.
type Conn struct {
config *Config
request *http.Request
@@ -207,9 +209,6 @@ func (ws *Conn) Write(msg []byte) (n int, err error) {
}
n, err = w.Write(msg)
w.Close()
- if err != nil {
- return n, err
- }
return n, err
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_mips64x.s
index 7e55e0d31..724e580c4 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_mips64x.s
@@ -1,29 +1,28 @@
-// Copyright 2009 The Go Authors. All rights reserved.
+// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build linux
+// +build mips64 mips64le
// +build !gccgo
#include "textflag.h"
//
-// System call support for 386, FreeBSD
+// System calls for mips64, Linux
//
// Just jump to package syscall's implementation for all these functions.
// The runtime may know about them.
-TEXT ·Syscall(SB),NOSPLIT,$0-32
+TEXT ·Syscall(SB),NOSPLIT,$0-56
JMP syscall·Syscall(SB)
-TEXT ·Syscall6(SB),NOSPLIT,$0-44
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
JMP syscall·Syscall6(SB)
-TEXT ·Syscall9(SB),NOSPLIT,$0-56
- JMP syscall·Syscall9(SB)
-
-TEXT ·RawSyscall(SB),NOSPLIT,$0-32
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
JMP syscall·RawSyscall(SB)
-TEXT ·RawSyscall6(SB),NOSPLIT,$0-44
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_s390x.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_s390x.s
new file mode 100644
index 000000000..11889859f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_s390x.s
@@ -0,0 +1,28 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build s390x
+// +build linux
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for s390x, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ BR syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ BR syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ BR syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ BR syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/bluetooth_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/bluetooth_linux.go
new file mode 100644
index 000000000..6e3229697
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/bluetooth_linux.go
@@ -0,0 +1,35 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Bluetooth sockets and messages
+
+package unix
+
+// Bluetooth Protocols
+const (
+ BTPROTO_L2CAP = 0
+ BTPROTO_HCI = 1
+ BTPROTO_SCO = 2
+ BTPROTO_RFCOMM = 3
+ BTPROTO_BNEP = 4
+ BTPROTO_CMTP = 5
+ BTPROTO_HIDP = 6
+ BTPROTO_AVDTP = 7
+)
+
+const (
+ HCI_CHANNEL_RAW = 0
+ HCI_CHANNEL_USER = 1
+ HCI_CHANNEL_MONITOR = 2
+ HCI_CHANNEL_CONTROL = 3
+)
+
+// Socketoption Level
+const (
+ SOL_BLUETOOTH = 0x112
+ SOL_HCI = 0x0
+ SOL_L2CAP = 0x6
+ SOL_RFCOMM = 0x12
+ SOL_SCO = 0x11
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh b/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh
index de95a4bbc..3e224c57e 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh
@@ -161,7 +161,7 @@ freebsd_arm)
mkerrors="$mkerrors"
mksyscall="./mksyscall.pl -l32 -arm"
mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
- # Let the type of C char be singed for making the bare syscall
+ # Let the type of C char be signed for making the bare syscall
# API consistent across over platforms.
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
;;
@@ -194,7 +194,7 @@ linux_arm64)
exit 1
fi
mksysnum="./mksysnum_linux.pl $unistd_h"
- # Let the type of C char be singed for making the bare syscall
+ # Let the type of C char be signed for making the bare syscall
# API consistent across over platforms.
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
;;
@@ -212,6 +212,17 @@ linux_ppc64le)
mksysnum="./mksysnum_linux.pl $unistd_h"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
;;
+linux_s390x)
+ GOOSARCH_in=syscall_linux_s390x.go
+ unistd_h=/usr/include/asm/unistd.h
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_linux.pl $unistd_h"
+ # Let the type of C char be signed to make the bare sys
+ # API more consistent between platforms.
+ # This is a deliberate departure from the way the syscall
+ # package generates its version of the types file.
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+ ;;
netbsd_386)
mkerrors="$mkerrors -m32"
mksyscall="./mksyscall.pl -l32 -netbsd"
@@ -269,6 +280,6 @@ esac
if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
if [ -n "$mktypes" ]; then
echo "echo // +build $GOARCH,$GOOS > ztypes_$GOOSARCH.go";
- echo "$mktypes types_$GOOS.go | gofmt >>ztypes_$GOOSARCH.go";
+ echo "$mktypes types_$GOOS.go | go run mkpost.go >>ztypes_$GOOSARCH.go";
fi
) | $run
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh b/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh
index c40d788c4..c40d788c4 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mkpost.go b/Godeps/_workspace/src/golang.org/x/sys/unix/mkpost.go
new file mode 100644
index 000000000..ed50d902a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mkpost.go
@@ -0,0 +1,62 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// mkpost processes the output of cgo -godefs to
+// modify the generated types. It is used to clean up
+// the sys API in an architecture specific manner.
+//
+// mkpost is run after cgo -godefs by mkall.sh.
+package main
+
+import (
+ "fmt"
+ "go/format"
+ "io/ioutil"
+ "log"
+ "os"
+ "regexp"
+)
+
+func main() {
+ b, err := ioutil.ReadAll(os.Stdin)
+ if err != nil {
+ log.Fatal(err)
+ }
+ s := string(b)
+
+ goarch := os.Getenv("GOARCH")
+ goos := os.Getenv("GOOS")
+ if goarch == "s390x" && goos == "linux" {
+ // Export the types of PtraceRegs fields.
+ re := regexp.MustCompile("ptrace(Psw|Fpregs|Per)")
+ s = re.ReplaceAllString(s, "Ptrace$1")
+
+ // Replace padding fields inserted by cgo with blank identifiers.
+ re = regexp.MustCompile("Pad_cgo[A-Za-z0-9_]*")
+ s = re.ReplaceAllString(s, "_")
+
+ // Replace other unwanted fields with blank identifiers.
+ re = regexp.MustCompile("X_[A-Za-z0-9_]*")
+ s = re.ReplaceAllString(s, "_")
+
+ // Replace the control_regs union with a blank identifier for now.
+ re = regexp.MustCompile("(Control_regs)\\s+\\[0\\]uint64")
+ s = re.ReplaceAllString(s, "_ [0]uint64")
+ }
+
+ // gofmt
+ b, err = format.Source([]byte(s))
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // Append this command to the header to show where the new file
+ // came from.
+ re := regexp.MustCompile("(cgo -godefs [a-zA-Z0-9_]+\\.go.*)")
+ b = re.ReplaceAll(b, []byte("$1 | go run mkpost.go"))
+
+ fmt.Printf("%s", b)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl
index b1e7766da..b1e7766da 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl
index 06bade768..06bade768 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl
index be67afa41..be67afa41 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl
index d3e5147fc..d3e5147fc 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl
index 266a248c7..266a248c7 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl
index b767e124c..b767e124c 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl
index 4d4017deb..4d4017deb 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl
index e74616a65..e74616a65 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl
index ae5aad586..ae5aad586 100644..100755
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go
index 70af5a728..f1493a3e6 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go
@@ -62,7 +62,7 @@ func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {
func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
- if h.Len < SizeofCmsghdr || int(h.Len) > len(b) {
+ if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {
return nil, nil, EINVAL
}
return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go
index a48d47cff..571e6993c 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go
@@ -68,6 +68,8 @@ func (tv *Timeval) Nano() int64 {
return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
}
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
// use is a no-op, but the compiler cannot see that it is.
// Calling use(p) ensures that p is kept live until that point.
//go:noescape
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go
index 0d1771c3f..3d534d2da 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go
@@ -144,6 +144,7 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
uintptr(options),
0,
)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
return nil, e1
}
@@ -196,6 +197,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
}
r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))
+ use(unsafe.Pointer(_p0))
n = int(r0)
if e1 != 0 {
err = e1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go
index 3195c8bf5..c172a3da5 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go
index 7adb98ded..fc1e5a4a8 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go
@@ -23,8 +23,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go
index e47ffd739..d286cf408 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go
@@ -19,8 +19,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go
index 2560a9599..c33905cdc 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go
index fbbe0dce2..ec408ee78 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go
@@ -109,6 +109,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
}
r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ use(unsafe.Pointer(_p0))
n = int(r0)
if e1 != 0 {
err = e1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go
deleted file mode 100644
index 41c2e6978..000000000
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build 386,dragonfly
-
-package unix
-
-import (
- "syscall"
- "unsafe"
-)
-
-func Getpagesize() int { return 4096 }
-
-func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-
-func NsecToTimespec(nsec int64) (ts Timespec) {
- ts.Sec = int32(nsec / 1e9)
- ts.Nsec = int32(nsec % 1e9)
- return
-}
-
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
-func NsecToTimeval(nsec int64) (tv Timeval) {
- nsec += 999 // round up to microsecond
- tv.Usec = int32(nsec % 1e9 / 1e3)
- tv.Sec = int32(nsec / 1e9)
- return
-}
-
-func SetKevent(k *Kevent_t, fd, mode, flags int) {
- k.Ident = uint32(fd)
- k.Filter = int16(mode)
- k.Flags = uint16(flags)
-}
-
-func (iov *Iovec) SetLen(length int) {
- iov.Len = uint32(length)
-}
-
-func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
-}
-
-func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
-}
-
-func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
- var writtenOut uint64 = 0
- _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
-
- written = int(writtenOut)
-
- if e1 != 0 {
- err = e1
- }
- return
-}
-
-func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
index 2ed92590e..da7cb7982 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = nsec % 1e9 / 1e3
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go
index ec56ed608..520ccbeaf 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go
@@ -129,6 +129,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
}
r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ use(unsafe.Pointer(_p0))
n = int(r0)
if e1 != 0 {
err = e1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go
index 6255d40ff..6a0cd804d 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go
index 8b395d596..e142540ef 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = nsec % 1e9 / 1e3
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go
index 4e72d46a8..5504cb125 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go
@@ -21,8 +21,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return tv.Sec*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go
index 5048e563b..6d10c9cff 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go
@@ -36,10 +36,10 @@ func Creat(path string, mode uint32) (fd int, err error) {
return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
}
-//sys linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
+//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
func Link(oldpath string, newpath string) (err error) {
- return linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)
+ return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)
}
func Mkdir(path string, mode uint32) (err error) {
@@ -60,6 +60,15 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
return openat(dirfd, path, flags|O_LARGEFILE, mode)
}
+//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
+
+func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ if len(fds) == 0 {
+ return ppoll(nil, 0, timeout, sigmask)
+ }
+ return ppoll(&fds[0], len(fds), timeout, sigmask)
+}
+
//sys readlinkat(dirfd int, path string, buf []byte) (n int, err error)
func Readlink(path string, buf []byte) (n int, err error) {
@@ -92,13 +101,24 @@ func Unlinkat(dirfd int, path string, flags int) error {
//sys utimes(path string, times *[2]Timeval) (err error)
-func Utimes(path string, tv []Timeval) (err error) {
+func Utimes(path string, tv []Timeval) error {
if tv == nil {
+ err := utimensat(AT_FDCWD, path, nil, 0)
+ if err != ENOSYS {
+ return err
+ }
return utimes(path, nil)
}
if len(tv) != 2 {
return EINVAL
}
+ var ts [2]Timespec
+ ts[0] = NsecToTimespec(TimevalToNsec(tv[0]))
+ ts[1] = NsecToTimespec(TimevalToNsec(tv[1]))
+ err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+ if err != ENOSYS {
+ return err
+ }
return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
}
@@ -383,6 +403,19 @@ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
}
+type SockaddrHCI struct {
+ Dev uint16
+ Channel uint16
+ raw RawSockaddrHCI
+}
+
+func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ sa.raw.Family = AF_BLUETOOTH
+ sa.raw.Dev = sa.Dev
+ sa.raw.Channel = sa.Channel
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
+}
+
func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
switch rsa.Addr.Family {
case AF_NETLINK:
@@ -848,7 +881,6 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
//sysnb EpollCreate(size int) (fd int, err error)
//sysnb EpollCreate1(flag int) (fd int, err error)
//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
-//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
//sys Exit(code int) = SYS_EXIT_GROUP
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
@@ -883,7 +915,6 @@ func Getpgrp() (pid int) {
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
-//sys Pause() (err error)
//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
//sysnb prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) = SYS_PRLIMIT64
//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
@@ -895,6 +926,7 @@ func Getpgrp() (pid int) {
//sysnb Setpgid(pid int, pgid int) (err error)
//sysnb Setsid() (pid int, err error)
//sysnb Settimeofday(tv *Timeval) (err error)
+//sys Setns(fd int, nstype int) (err error)
// issue 1435.
// On linux Setuid and Setgid only affects the current thread, not the process.
@@ -921,7 +953,6 @@ func Setgid(uid int) (err error) {
//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2
//sys Unshare(flags int) (err error)
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
-//sys Utime(path string, buf *Utimbuf) (err error)
//sys write(fd int, p []byte) (n int, err error)
//sys exitThread(code int) (err error) = SYS_EXIT
//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
@@ -1021,8 +1052,6 @@ func Munmap(b []byte) (err error) {
// Newfstatat
// Nfsservctl
// Personality
-// Poll
-// Ppoll
// Pselect6
// Ptrace
// Putpmsg
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go
index 7171219af..2b881b979 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go
@@ -24,8 +24,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Sec = int32(nsec / 1e9)
@@ -93,6 +91,8 @@ func Pipe2(p []int, flags int) (err error) {
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Pause() (err error)
func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
page := uintptr(offset / 4096)
@@ -181,6 +181,8 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
//sysnb Gettimeofday(tv *Timeval) (err error)
//sysnb Time(t *Time_t) (tt Time_t, err error)
+//sys Utime(path string, buf *Utimbuf) (err error)
+
// On x86 Linux, all the socket calls go through an extra indirection,
// I think because the 5-register system call interface can't handle
// the 6-argument calls like sendto and recvfrom. Instead the
@@ -386,3 +388,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
func (cmsg *Cmsghdr) SetLen(length int) {
cmsg.Len = uint32(length)
}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go
index ae70c2afc..18911c2d9 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go
@@ -9,6 +9,7 @@ package unix
import "syscall"
//sys Dup2(oldfd int, newfd int) (err error)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
//sys Fchown(fd int, uid int, gid int) (err error)
//sys Fstat(fd int, stat *Stat_t) (err error)
@@ -25,6 +26,7 @@ import "syscall"
//sys Lchown(path string, uid int, gid int) (err error)
//sys Listen(s int, n int) (err error)
//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Pause() (err error)
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
@@ -86,6 +88,8 @@ func Time(t *Time_t) (tt Time_t, err error) {
return Time_t(tv.Sec), nil
}
+//sys Utime(path string, buf *Utimbuf) (err error)
+
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
func NsecToTimespec(nsec int64) (ts Timespec) {
@@ -94,8 +98,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Sec = nsec / 1e9
@@ -144,3 +146,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
func (cmsg *Cmsghdr) SetLen(length int) {
cmsg.Len = uint64(length)
}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go
index abc41c3ea..71d870228 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go
@@ -108,7 +108,28 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
// Vsyscalls on amd64.
//sysnb Gettimeofday(tv *Timeval) (err error)
-//sysnb Time(t *Time_t) (tt Time_t, err error)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Pause() (err error)
+
+func Time(t *Time_t) (Time_t, error) {
+ var tv Timeval
+ err := Gettimeofday(&tv)
+ if err != nil {
+ return 0, err
+ }
+ if t != nil {
+ *t = Time_t(tv.Sec)
+ }
+ return Time_t(tv.Sec), nil
+}
+
+func Utime(path string, buf *Utimbuf) error {
+ tv := []Timeval{
+ {Sec: buf.Actime},
+ {Sec: buf.Modtime},
+ }
+ return Utimes(path, tv)
+}
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
@@ -158,7 +179,7 @@ type rlimit32 struct {
Max uint32
}
-//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT
const rlimInf32 = ^uint32(0)
const rlimInf64 = ^uint64(0)
@@ -231,3 +252,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
func (cmsg *Cmsghdr) SetLen(length int) {
cmsg.Len = uint32(length)
}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go
index f3d72dfd3..4b6ff2a80 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go
@@ -8,6 +8,7 @@ package unix
const _SYS_dup = SYS_DUP3
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
//sys Fchown(fd int, uid int, gid int) (err error)
//sys Fstat(fd int, stat *Stat_t) (err error)
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
@@ -70,7 +71,6 @@ func Lstat(path string, stat *Stat_t) (err error) {
func Getpagesize() int { return 65536 }
//sysnb Gettimeofday(tv *Timeval) (err error)
-//sysnb Time(t *Time_t) (tt Time_t, err error)
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
@@ -80,8 +80,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Sec = nsec / 1e9
@@ -89,6 +87,26 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
return
}
+func Time(t *Time_t) (Time_t, error) {
+ var tv Timeval
+ err := Gettimeofday(&tv)
+ if err != nil {
+ return 0, err
+ }
+ if t != nil {
+ *t = Time_t(tv.Sec)
+ }
+ return Time_t(tv.Sec), nil
+}
+
+func Utime(path string, buf *Utimbuf) error {
+ tv := []Timeval{
+ {Sec: buf.Actime},
+ {Sec: buf.Modtime},
+ }
+ return Utimes(path, tv)
+}
+
func Pipe(p []int) (err error) {
if len(p) != 2 {
return EINVAL
@@ -133,6 +151,18 @@ func InotifyInit() (fd int, err error) {
return InotifyInit1(0)
}
+func Dup2(oldfd int, newfd int) (err error) {
+ return Dup3(oldfd, newfd, 0)
+}
+
+func Pause() (err error) {
+ _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
// these when the deprecated syscalls that the syscall package relies on
// are removed.
@@ -148,3 +178,15 @@ const (
SYS_EPOLL_CREATE = 1042
SYS_EPOLL_WAIT = 1069
)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ var ts *Timespec
+ if timeout >= 0 {
+ ts = new(Timespec)
+ *ts = NsecToTimespec(int64(timeout) * 1e6)
+ }
+ if len(fds) == 0 {
+ return ppoll(nil, 0, ts, nil)
+ }
+ return ppoll(&fds[0], len(fds), ts, nil)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_mips64x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_mips64x.go
new file mode 100644
index 000000000..440f54ee9
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_mips64x.go
@@ -0,0 +1,215 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+// +build mips64 mips64le
+
+package unix
+
+// Linux introduced getdents64 syscall for N64 ABI only in 3.10
+// (May 21 2013, rev dec33abaafc89bcbd78f85fad0513170415a26d5),
+// to support older kernels, we have to use getdents for mips64.
+// Also note that struct dirent is different for these two.
+// Lookup linux_dirent{,64} in kernel source code for details.
+const _SYS_getdents = SYS_GETDENTS
+
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (euid int)
+//sysnb Getgid() (gid int)
+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Getuid() (uid int)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Listen(s int, n int) (err error)
+//sys Pause() (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys Setfsgid(gid int) (err error)
+//sys Setfsuid(uid int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sys Shutdown(fd int, how int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys Statfs(path string, buf *Statfs_t) (err error)
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb setgroups(n int, list *_Gid_t) (err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb Gettimeofday(tv *Timeval) (err error)
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ var tv Timeval
+ err = Gettimeofday(&tv)
+ if err != nil {
+ return 0, err
+ }
+ if t != nil {
+ *t = Time_t(tv.Sec)
+ }
+ return Time_t(tv.Sec), nil
+}
+
+//sys Utime(path string, buf *Utimbuf) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = nsec / 1e9
+ tv.Usec = nsec % 1e9 / 1e3
+ return
+}
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, 0)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+func Ioperm(from int, num int, on int) (err error) {
+ return ENOSYS
+}
+
+func Iopl(level int) (err error) {
+ return ENOSYS
+}
+
+type stat_t struct {
+ Dev uint32
+ Pad0 [3]int32
+ Ino uint64
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Pad1 [3]uint32
+ Size int64
+ Atime uint32
+ Atime_nsec uint32
+ Mtime uint32
+ Mtime_nsec uint32
+ Ctime uint32
+ Ctime_nsec uint32
+ Blksize uint32
+ Pad2 uint32
+ Blocks int64
+}
+
+//sys fstat(fd int, st *stat_t) (err error)
+//sys lstat(path string, st *stat_t) (err error)
+//sys stat(path string, st *stat_t) (err error)
+
+func Fstat(fd int, s *Stat_t) (err error) {
+ st := &stat_t{}
+ err = fstat(fd, st)
+ fillStat_t(s, st)
+ return
+}
+
+func Lstat(path string, s *Stat_t) (err error) {
+ st := &stat_t{}
+ err = lstat(path, st)
+ fillStat_t(s, st)
+ return
+}
+
+func Stat(path string, s *Stat_t) (err error) {
+ st := &stat_t{}
+ err = stat(path, st)
+ fillStat_t(s, st)
+ return
+}
+
+func fillStat_t(s *Stat_t, st *stat_t) {
+ s.Dev = st.Dev
+ s.Ino = st.Ino
+ s.Mode = st.Mode
+ s.Nlink = st.Nlink
+ s.Uid = st.Uid
+ s.Gid = st.Gid
+ s.Rdev = st.Rdev
+ s.Size = st.Size
+ s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}
+ s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}
+ s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}
+ s.Blksize = st.Blksize
+ s.Blocks = st.Blocks
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Regs[64] }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Regs[64] = pc }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint64(length)
+}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go
index 67eed6334..60770f627 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go
@@ -7,6 +7,8 @@
package unix
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Dup2(oldfd int, newfd int) (err error)
//sys Fchown(fd int, uid int, gid int) (err error)
//sys Fstat(fd int, stat *Stat_t) (err error)
//sys Fstatfs(fd int, buf *Statfs_t) (err error)
@@ -16,11 +18,13 @@ package unix
//sysnb Getgid() (gid int)
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT
//sysnb Getuid() (uid int)
+//sysnb InotifyInit() (fd int, err error)
//sys Ioperm(from int, num int, on int) (err error)
//sys Iopl(level int) (err error)
//sys Lchown(path string, uid int, gid int) (err error)
//sys Listen(s int, n int) (err error)
//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Pause() (err error)
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
@@ -62,6 +66,8 @@ func Getpagesize() int { return 65536 }
//sysnb Gettimeofday(tv *Timeval) (err error)
//sysnb Time(t *Time_t) (tt Time_t, err error)
+//sys Utime(path string, buf *Utimbuf) (err error)
+
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
func NsecToTimespec(nsec int64) (ts Timespec) {
@@ -70,8 +76,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Sec = nsec / 1e9
@@ -94,3 +98,38 @@ func (msghdr *Msghdr) SetControllen(length int) {
func (cmsg *Cmsghdr) SetLen(length int) {
cmsg.Len = uint64(length)
}
+
+//sysnb pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe(&pp)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_s390x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_s390x.go
new file mode 100644
index 000000000..81c5f4732
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_s390x.go
@@ -0,0 +1,329 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build s390x,linux
+
+package unix
+
+import (
+ "unsafe"
+)
+
+//sys Dup2(oldfd int, newfd int) (err error)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (euid int)
+//sysnb Getgid() (gid int)
+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Getuid() (uid int)
+//sysnb InotifyInit() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Pause() (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys Setfsgid(gid int) (err error)
+//sys Setfsuid(uid int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, buf *Statfs_t) (err error)
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys Truncate(path string, length int64) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb setgroups(n int, list *_Gid_t) (err error)
+
+func Getpagesize() int { return 4096 }
+
+//sysnb Gettimeofday(tv *Timeval) (err error)
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ var tv Timeval
+ err = Gettimeofday(&tv)
+ if err != nil {
+ return 0, err
+ }
+ if t != nil {
+ *t = Time_t(tv.Sec)
+ }
+ return Time_t(tv.Sec), nil
+}
+
+//sys Utime(path string, buf *Utimbuf) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = nsec / 1e9
+ tv.Usec = nsec % 1e9 / 1e3
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0.
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+func Ioperm(from int, num int, on int) (err error) {
+ return ENOSYS
+}
+
+func Iopl(level int) (err error) {
+ return ENOSYS
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint64(length)
+}
+
+// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.
+// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}
+ r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)
+ use(unsafe.Pointer(&mmap_args[0]))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// On s390x Linux, all the socket calls go through an extra indirection.
+// The arguments to the underlying system call (SYS_SOCKETCALL) are the
+// number below and a pointer to an array of uintptr.
+const (
+ // see linux/net.h
+ netSocket = 1
+ netBind = 2
+ netConnect = 3
+ netListen = 4
+ netAccept = 5
+ netGetSockName = 6
+ netGetPeerName = 7
+ netSocketPair = 8
+ netSend = 9
+ netRecv = 10
+ netSendTo = 11
+ netRecvFrom = 12
+ netShutdown = 13
+ netSetSockOpt = 14
+ netGetSockOpt = 15
+ netSendMsg = 16
+ netRecvMsg = 17
+ netAccept4 = 18
+ netRecvMMsg = 19
+ netSendMMsg = 20
+)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) {
+ args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+ fd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(fd), nil
+}
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {
+ args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}
+ fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(fd), nil
+}
+
+func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {
+ args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+ _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {
+ args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+ _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) error {
+ args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}
+ _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {
+ args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {
+ args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func socket(domain int, typ int, proto int) (int, error) {
+ args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}
+ fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(fd), nil
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {
+ args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}
+ _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {
+ args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {
+ var base uintptr
+ if len(p) > 0 {
+ base = uintptr(unsafe.Pointer(&p[0]))
+ }
+ args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}
+ n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(n), nil
+}
+
+func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {
+ var base uintptr
+ if len(p) > 0 {
+ base = uintptr(unsafe.Pointer(&p[0]))
+ }
+ args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (int, error) {
+ args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}
+ n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(n), nil
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (int, error) {
+ args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}
+ n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return 0, err
+ }
+ return int(n), nil
+}
+
+func Listen(s int, n int) error {
+ args := [2]uintptr{uintptr(s), uintptr(n)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+func Shutdown(s, how int) error {
+ args := [2]uintptr{uintptr(s), uintptr(how)}
+ _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)
+ if err != 0 {
+ return err
+ }
+ return nil
+}
+
+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+ if len(fds) == 0 {
+ return poll(nil, 0, timeout)
+ }
+ return poll(&fds[0], len(fds), timeout)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go
index 1b0e1af12..afaca0983 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go
@@ -16,8 +16,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go
index 1b6dcbe35..a6ff04ce5 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go
@@ -16,8 +16,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go
index 87d1d6fed..68a6969b2 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go
@@ -16,8 +16,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go
index 246131d2a..554a82342 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go
@@ -111,6 +111,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
}
r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ use(unsafe.Pointer(_p0))
n = int(r0)
if e1 != 0 {
err = e1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go
index 9529b20e8..a66ddc59c 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go
@@ -16,8 +16,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = int32(nsec % 1e9 / 1e3)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go
index fc6402946..0776c1faf 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go
@@ -16,8 +16,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = nsec % 1e9 / 1e3
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go
index 2e44630cd..5aff62c3b 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go
@@ -14,8 +14,6 @@ func NsecToTimespec(nsec int64) (ts Timespec) {
return
}
-func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999 // round up to microsecond
tv.Usec = nsec % 1e9 / 1e3
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go
index d5275875f..7dea79a8e 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go
@@ -24,6 +24,7 @@ package unix
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netpacket/packet.h>
+#include <poll.h>
#include <signal.h>
#include <stdio.h>
#include <sys/epoll.h>
@@ -55,6 +56,8 @@ package unix
#include <unistd.h>
#include <ustat.h>
#include <utime.h>
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
#ifdef TCSETS2
// On systems that have "struct termios2" use this as type Termios.
@@ -98,17 +101,33 @@ typedef struct user_regs PtraceRegs;
typedef struct user_pt_regs PtraceRegs;
#elif defined(__powerpc64__)
typedef struct pt_regs PtraceRegs;
+#elif defined(__mips__)
+typedef struct user PtraceRegs;
+#elif defined(__s390x__)
+typedef struct _user_regs_struct PtraceRegs;
#else
typedef struct user_regs_struct PtraceRegs;
#endif
+#if defined(__s390x__)
+typedef struct _user_psw_struct ptracePsw;
+typedef struct _user_fpregs_struct ptraceFpregs;
+typedef struct _user_per_struct ptracePer;
+#else
+typedef struct {} ptracePsw;
+typedef struct {} ptraceFpregs;
+typedef struct {} ptracePer;
+#endif
+
// The real epoll_event is a union, and godefs doesn't handle it well.
struct my_epoll_event {
uint32_t events;
-#ifdef __ARM_EABI__
+#if defined(__ARM_EABI__) || defined(__aarch64__)
// padding is not specified in linux/eventpoll.h but added to conform to the
// alignment requirements of EABI
int32_t padFd;
+#elif defined(__powerpc64__) || defined(__s390x__)
+ int32_t _padFd;
#endif
int32_t fd;
int32_t pad;
@@ -194,6 +213,8 @@ type RawSockaddrLinklayer C.struct_sockaddr_ll
type RawSockaddrNetlink C.struct_sockaddr_nl
+type RawSockaddrHCI C.struct_sockaddr_hci
+
type RawSockaddr C.struct_sockaddr
type RawSockaddrAny C.struct_sockaddr_any
@@ -233,6 +254,7 @@ const (
SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl
+ SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci
SizeofLinger = C.sizeof_struct_linger
SizeofIPMreq = C.sizeof_struct_ip_mreq
SizeofIPMreqn = C.sizeof_struct_ip_mreqn
@@ -383,6 +405,13 @@ const SizeofInotifyEvent = C.sizeof_struct_inotify_event
// Register structures
type PtraceRegs C.PtraceRegs
+// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
+type ptracePsw C.ptracePsw
+
+type ptraceFpregs C.ptraceFpregs
+
+type ptracePer C.ptracePer
+
// Misc
type FdSet C.fd_set
@@ -398,9 +427,24 @@ type EpollEvent C.struct_my_epoll_event
const (
AT_FDCWD = C.AT_FDCWD
AT_REMOVEDIR = C.AT_REMOVEDIR
+ AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
)
+type PollFd C.struct_pollfd
+
+const (
+ POLLIN = C.POLLIN
+ POLLPRI = C.POLLPRI
+ POLLOUT = C.POLLOUT
+ POLLRDHUP = C.POLLRDHUP
+ POLLERR = C.POLLERR
+ POLLHUP = C.POLLHUP
+ POLLNVAL = C.POLLNVAL
+)
+
+type Sigset_t C.sigset_t
+
// Terminal handling
type Termios C.termios_t
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go
deleted file mode 100644
index 2a329f06e..000000000
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go
+++ /dev/null
@@ -1,1530 +0,0 @@
-// mkerrors.sh -m32
-// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-
-// +build 386,dragonfly
-
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs -- -m32 _const.go
-
-package unix
-
-import "syscall"
-
-const (
- AF_APPLETALK = 0x10
- AF_ATM = 0x1e
- AF_BLUETOOTH = 0x21
- AF_CCITT = 0xa
- AF_CHAOS = 0x5
- AF_CNT = 0x15
- AF_COIP = 0x14
- AF_DATAKIT = 0x9
- AF_DECnet = 0xc
- AF_DLI = 0xd
- AF_E164 = 0x1a
- AF_ECMA = 0x8
- AF_HYLINK = 0xf
- AF_IEEE80211 = 0x23
- AF_IMPLINK = 0x3
- AF_INET = 0x2
- AF_INET6 = 0x1c
- AF_IPX = 0x17
- AF_ISDN = 0x1a
- AF_ISO = 0x7
- AF_LAT = 0xe
- AF_LINK = 0x12
- AF_LOCAL = 0x1
- AF_MAX = 0x24
- AF_MPLS = 0x22
- AF_NATM = 0x1d
- AF_NETGRAPH = 0x20
- AF_NS = 0x6
- AF_OSI = 0x7
- AF_PUP = 0x4
- AF_ROUTE = 0x11
- AF_SIP = 0x18
- AF_SNA = 0xb
- AF_UNIX = 0x1
- AF_UNSPEC = 0x0
- B0 = 0x0
- B110 = 0x6e
- B115200 = 0x1c200
- B1200 = 0x4b0
- B134 = 0x86
- B14400 = 0x3840
- B150 = 0x96
- B1800 = 0x708
- B19200 = 0x4b00
- B200 = 0xc8
- B230400 = 0x38400
- B2400 = 0x960
- B28800 = 0x7080
- B300 = 0x12c
- B38400 = 0x9600
- B4800 = 0x12c0
- B50 = 0x32
- B57600 = 0xe100
- B600 = 0x258
- B7200 = 0x1c20
- B75 = 0x4b
- B76800 = 0x12c00
- B9600 = 0x2580
- BIOCFLUSH = 0x20004268
- BIOCGBLEN = 0x40044266
- BIOCGDLT = 0x4004426a
- BIOCGDLTLIST = 0xc0084279
- BIOCGETIF = 0x4020426b
- BIOCGHDRCMPLT = 0x40044274
- BIOCGRSIG = 0x40044272
- BIOCGRTIMEOUT = 0x4008426e
- BIOCGSEESENT = 0x40044276
- BIOCGSTATS = 0x4008426f
- BIOCIMMEDIATE = 0x80044270
- BIOCLOCK = 0x2000427a
- BIOCPROMISC = 0x20004269
- BIOCSBLEN = 0xc0044266
- BIOCSDLT = 0x80044278
- BIOCSETF = 0x80084267
- BIOCSETIF = 0x8020426c
- BIOCSETWF = 0x8008427b
- BIOCSHDRCMPLT = 0x80044275
- BIOCSRSIG = 0x80044273
- BIOCSRTIMEOUT = 0x8008426d
- BIOCSSEESENT = 0x80044277
- BIOCVERSION = 0x40044271
- BPF_A = 0x10
- BPF_ABS = 0x20
- BPF_ADD = 0x0
- BPF_ALIGNMENT = 0x4
- BPF_ALU = 0x4
- BPF_AND = 0x50
- BPF_B = 0x10
- BPF_DEFAULTBUFSIZE = 0x1000
- BPF_DIV = 0x30
- BPF_H = 0x8
- BPF_IMM = 0x0
- BPF_IND = 0x40
- BPF_JA = 0x0
- BPF_JEQ = 0x10
- BPF_JGE = 0x30
- BPF_JGT = 0x20
- BPF_JMP = 0x5
- BPF_JSET = 0x40
- BPF_K = 0x0
- BPF_LD = 0x0
- BPF_LDX = 0x1
- BPF_LEN = 0x80
- BPF_LSH = 0x60
- BPF_MAJOR_VERSION = 0x1
- BPF_MAXBUFSIZE = 0x80000
- BPF_MAXINSNS = 0x200
- BPF_MAX_CLONES = 0x80
- BPF_MEM = 0x60
- BPF_MEMWORDS = 0x10
- BPF_MINBUFSIZE = 0x20
- BPF_MINOR_VERSION = 0x1
- BPF_MISC = 0x7
- BPF_MSH = 0xa0
- BPF_MUL = 0x20
- BPF_NEG = 0x80
- BPF_OR = 0x40
- BPF_RELEASE = 0x30bb6
- BPF_RET = 0x6
- BPF_RSH = 0x70
- BPF_ST = 0x2
- BPF_STX = 0x3
- BPF_SUB = 0x10
- BPF_TAX = 0x0
- BPF_TXA = 0x80
- BPF_W = 0x0
- BPF_X = 0x8
- BRKINT = 0x2
- CFLUSH = 0xf
- CLOCAL = 0x8000
- CREAD = 0x800
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
- CS8 = 0x300
- CSIZE = 0x300
- CSTART = 0x11
- CSTATUS = 0x14
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
- DLT_A653_ICM = 0xb9
- DLT_AIRONET_HEADER = 0x78
- DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
- DLT_ARCNET = 0x7
- DLT_ARCNET_LINUX = 0x81
- DLT_ATM_CLIP = 0x13
- DLT_ATM_RFC1483 = 0xb
- DLT_AURORA = 0x7e
- DLT_AX25 = 0x3
- DLT_AX25_KISS = 0xca
- DLT_BACNET_MS_TP = 0xa5
- DLT_BLUETOOTH_HCI_H4 = 0xbb
- DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
- DLT_CAN20B = 0xbe
- DLT_CHAOS = 0x5
- DLT_CHDLC = 0x68
- DLT_CISCO_IOS = 0x76
- DLT_C_HDLC = 0x68
- DLT_C_HDLC_WITH_DIR = 0xcd
- DLT_DOCSIS = 0x8f
- DLT_ECONET = 0x73
- DLT_EN10MB = 0x1
- DLT_EN3MB = 0x2
- DLT_ENC = 0x6d
- DLT_ERF = 0xc5
- DLT_ERF_ETH = 0xaf
- DLT_ERF_POS = 0xb0
- DLT_FDDI = 0xa
- DLT_FLEXRAY = 0xd2
- DLT_FRELAY = 0x6b
- DLT_FRELAY_WITH_DIR = 0xce
- DLT_GCOM_SERIAL = 0xad
- DLT_GCOM_T1E1 = 0xac
- DLT_GPF_F = 0xab
- DLT_GPF_T = 0xaa
- DLT_GPRS_LLC = 0xa9
- DLT_HHDLC = 0x79
- DLT_IBM_SN = 0x92
- DLT_IBM_SP = 0x91
- DLT_IEEE802 = 0x6
- DLT_IEEE802_11 = 0x69
- DLT_IEEE802_11_RADIO = 0x7f
- DLT_IEEE802_11_RADIO_AVS = 0xa3
- DLT_IEEE802_15_4 = 0xc3
- DLT_IEEE802_15_4_LINUX = 0xbf
- DLT_IEEE802_15_4_NONASK_PHY = 0xd7
- DLT_IEEE802_16_MAC_CPS = 0xbc
- DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
- DLT_IPFILTER = 0x74
- DLT_IPMB = 0xc7
- DLT_IPMB_LINUX = 0xd1
- DLT_IP_OVER_FC = 0x7a
- DLT_JUNIPER_ATM1 = 0x89
- DLT_JUNIPER_ATM2 = 0x87
- DLT_JUNIPER_CHDLC = 0xb5
- DLT_JUNIPER_ES = 0x84
- DLT_JUNIPER_ETHER = 0xb2
- DLT_JUNIPER_FRELAY = 0xb4
- DLT_JUNIPER_GGSN = 0x85
- DLT_JUNIPER_ISM = 0xc2
- DLT_JUNIPER_MFR = 0x86
- DLT_JUNIPER_MLFR = 0x83
- DLT_JUNIPER_MLPPP = 0x82
- DLT_JUNIPER_MONITOR = 0xa4
- DLT_JUNIPER_PIC_PEER = 0xae
- DLT_JUNIPER_PPP = 0xb3
- DLT_JUNIPER_PPPOE = 0xa7
- DLT_JUNIPER_PPPOE_ATM = 0xa8
- DLT_JUNIPER_SERVICES = 0x88
- DLT_JUNIPER_ST = 0xc8
- DLT_JUNIPER_VP = 0xb7
- DLT_LAPB_WITH_DIR = 0xcf
- DLT_LAPD = 0xcb
- DLT_LIN = 0xd4
- DLT_LINUX_IRDA = 0x90
- DLT_LINUX_LAPD = 0xb1
- DLT_LINUX_SLL = 0x71
- DLT_LOOP = 0x6c
- DLT_LTALK = 0x72
- DLT_MFR = 0xb6
- DLT_MOST = 0xd3
- DLT_MTP2 = 0x8c
- DLT_MTP2_WITH_PHDR = 0x8b
- DLT_MTP3 = 0x8d
- DLT_NULL = 0x0
- DLT_PCI_EXP = 0x7d
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x12
- DLT_PPI = 0xc0
- DLT_PPP = 0x9
- DLT_PPP_BSDOS = 0x10
- DLT_PPP_ETHER = 0x33
- DLT_PPP_PPPD = 0xa6
- DLT_PPP_SERIAL = 0x32
- DLT_PPP_WITH_DIR = 0xcc
- DLT_PRISM_HEADER = 0x77
- DLT_PRONET = 0x4
- DLT_RAIF1 = 0xc6
- DLT_RAW = 0xc
- DLT_REDBACK_SMARTEDGE = 0x20
- DLT_RIO = 0x7c
- DLT_SCCP = 0x8e
- DLT_SITA = 0xc4
- DLT_SLIP = 0x8
- DLT_SLIP_BSDOS = 0xf
- DLT_SUNATM = 0x7b
- DLT_SYMANTEC_FIREWALL = 0x63
- DLT_TZSP = 0x80
- DLT_USB = 0xba
- DLT_USB_LINUX = 0xbd
- DLT_X2E_SERIAL = 0xd5
- DLT_X2E_XORAYA = 0xd6
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DBF = 0xf
- DT_DIR = 0x4
- DT_FIFO = 0x1
- DT_LNK = 0xa
- DT_REG = 0x8
- DT_SOCK = 0xc
- DT_UNKNOWN = 0x0
- DT_WHT = 0xe
- ECHO = 0x8
- ECHOCTL = 0x40
- ECHOE = 0x2
- ECHOK = 0x4
- ECHOKE = 0x1
- ECHONL = 0x10
- ECHOPRT = 0x20
- EVFILT_AIO = -0x3
- EVFILT_EXCEPT = -0x8
- EVFILT_MARKER = 0xf
- EVFILT_PROC = -0x5
- EVFILT_READ = -0x1
- EVFILT_SIGNAL = -0x6
- EVFILT_SYSCOUNT = 0x8
- EVFILT_TIMER = -0x7
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
- EV_DISABLE = 0x8
- EV_ENABLE = 0x4
- EV_EOF = 0x8000
- EV_ERROR = 0x4000
- EV_FLAG1 = 0x2000
- EV_NODATA = 0x1000
- EV_ONESHOT = 0x10
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
- EXTB = 0x9600
- EXTEXIT_LWP = 0x10000
- EXTEXIT_PROC = 0x0
- EXTEXIT_SETINT = 0x1
- EXTEXIT_SIMPLE = 0x0
- EXTPROC = 0x800
- FD_CLOEXEC = 0x1
- FD_SETSIZE = 0x400
- FLUSHO = 0x800000
- F_DUP2FD = 0xa
- F_DUP2FD_CLOEXEC = 0x12
- F_DUPFD = 0x0
- F_DUPFD_CLOEXEC = 0x11
- F_GETFD = 0x1
- F_GETFL = 0x3
- F_GETLK = 0x7
- F_GETOWN = 0x5
- F_OK = 0x0
- F_RDLCK = 0x1
- F_SETFD = 0x2
- F_SETFL = 0x4
- F_SETLK = 0x8
- F_SETLKW = 0x9
- F_SETOWN = 0x6
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
- IFF_ALLMULTI = 0x200
- IFF_ALTPHYS = 0x4000
- IFF_BROADCAST = 0x2
- IFF_CANTCHANGE = 0x118e72
- IFF_DEBUG = 0x4
- IFF_LINK0 = 0x1000
- IFF_LINK1 = 0x2000
- IFF_LINK2 = 0x4000
- IFF_LOOPBACK = 0x8
- IFF_MONITOR = 0x40000
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
- IFF_NPOLLING = 0x100000
- IFF_OACTIVE = 0x400
- IFF_OACTIVE_COMPAT = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_POLLING = 0x10000
- IFF_POLLING_COMPAT = 0x10000
- IFF_PPROMISC = 0x20000
- IFF_PROMISC = 0x100
- IFF_RUNNING = 0x40
- IFF_SIMPLEX = 0x800
- IFF_SMART = 0x20
- IFF_STATICARP = 0x80000
- IFF_UP = 0x1
- IFNAMSIZ = 0x10
- IFT_1822 = 0x2
- IFT_A12MPPSWITCH = 0x82
- IFT_AAL2 = 0xbb
- IFT_AAL5 = 0x31
- IFT_ADSL = 0x5e
- IFT_AFLANE8023 = 0x3b
- IFT_AFLANE8025 = 0x3c
- IFT_ARAP = 0x58
- IFT_ARCNET = 0x23
- IFT_ARCNETPLUS = 0x24
- IFT_ASYNC = 0x54
- IFT_ATM = 0x25
- IFT_ATMDXI = 0x69
- IFT_ATMFUNI = 0x6a
- IFT_ATMIMA = 0x6b
- IFT_ATMLOGICAL = 0x50
- IFT_ATMRADIO = 0xbd
- IFT_ATMSUBINTERFACE = 0x86
- IFT_ATMVCIENDPT = 0xc2
- IFT_ATMVIRTUAL = 0x95
- IFT_BGPPOLICYACCOUNTING = 0xa2
- IFT_BRIDGE = 0xd1
- IFT_BSC = 0x53
- IFT_CARP = 0xf8
- IFT_CCTEMUL = 0x3d
- IFT_CEPT = 0x13
- IFT_CES = 0x85
- IFT_CHANNEL = 0x46
- IFT_CNR = 0x55
- IFT_COFFEE = 0x84
- IFT_COMPOSITELINK = 0x9b
- IFT_DCN = 0x8d
- IFT_DIGITALPOWERLINE = 0x8a
- IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
- IFT_DLSW = 0x4a
- IFT_DOCSCABLEDOWNSTREAM = 0x80
- IFT_DOCSCABLEMACLAYER = 0x7f
- IFT_DOCSCABLEUPSTREAM = 0x81
- IFT_DS0 = 0x51
- IFT_DS0BUNDLE = 0x52
- IFT_DS1FDL = 0xaa
- IFT_DS3 = 0x1e
- IFT_DTM = 0x8c
- IFT_DVBASILN = 0xac
- IFT_DVBASIOUT = 0xad
- IFT_DVBRCCDOWNSTREAM = 0x93
- IFT_DVBRCCMACLAYER = 0x92
- IFT_DVBRCCUPSTREAM = 0x94
- IFT_ENC = 0xf4
- IFT_EON = 0x19
- IFT_EPLRS = 0x57
- IFT_ESCON = 0x49
- IFT_ETHER = 0x6
- IFT_FAITH = 0xf2
- IFT_FAST = 0x7d
- IFT_FASTETHER = 0x3e
- IFT_FASTETHERFX = 0x45
- IFT_FDDI = 0xf
- IFT_FIBRECHANNEL = 0x38
- IFT_FRAMERELAYINTERCONNECT = 0x3a
- IFT_FRAMERELAYMPI = 0x5c
- IFT_FRDLCIENDPT = 0xc1
- IFT_FRELAY = 0x20
- IFT_FRELAYDCE = 0x2c
- IFT_FRF16MFRBUNDLE = 0xa3
- IFT_FRFORWARD = 0x9e
- IFT_G703AT2MB = 0x43
- IFT_G703AT64K = 0x42
- IFT_GIF = 0xf0
- IFT_GIGABITETHERNET = 0x75
- IFT_GR303IDT = 0xb2
- IFT_GR303RDT = 0xb1
- IFT_H323GATEKEEPER = 0xa4
- IFT_H323PROXY = 0xa5
- IFT_HDH1822 = 0x3
- IFT_HDLC = 0x76
- IFT_HDSL2 = 0xa8
- IFT_HIPERLAN2 = 0xb7
- IFT_HIPPI = 0x2f
- IFT_HIPPIINTERFACE = 0x39
- IFT_HOSTPAD = 0x5a
- IFT_HSSI = 0x2e
- IFT_HY = 0xe
- IFT_IBM370PARCHAN = 0x48
- IFT_IDSL = 0x9a
- IFT_IEEE1394 = 0x90
- IFT_IEEE80211 = 0x47
- IFT_IEEE80212 = 0x37
- IFT_IEEE8023ADLAG = 0xa1
- IFT_IFGSN = 0x91
- IFT_IMT = 0xbe
- IFT_INTERLEAVE = 0x7c
- IFT_IP = 0x7e
- IFT_IPFORWARD = 0x8e
- IFT_IPOVERATM = 0x72
- IFT_IPOVERCDLC = 0x6d
- IFT_IPOVERCLAW = 0x6e
- IFT_IPSWITCH = 0x4e
- IFT_ISDN = 0x3f
- IFT_ISDNBASIC = 0x14
- IFT_ISDNPRIMARY = 0x15
- IFT_ISDNS = 0x4b
- IFT_ISDNU = 0x4c
- IFT_ISO88022LLC = 0x29
- IFT_ISO88023 = 0x7
- IFT_ISO88024 = 0x8
- IFT_ISO88025 = 0x9
- IFT_ISO88025CRFPINT = 0x62
- IFT_ISO88025DTR = 0x56
- IFT_ISO88025FIBER = 0x73
- IFT_ISO88026 = 0xa
- IFT_ISUP = 0xb3
- IFT_L2VLAN = 0x87
- IFT_L3IPVLAN = 0x88
- IFT_L3IPXVLAN = 0x89
- IFT_LAPB = 0x10
- IFT_LAPD = 0x4d
- IFT_LAPF = 0x77
- IFT_LOCALTALK = 0x2a
- IFT_LOOP = 0x18
- IFT_MEDIAMAILOVERIP = 0x8b
- IFT_MFSIGLINK = 0xa7
- IFT_MIOX25 = 0x26
- IFT_MODEM = 0x30
- IFT_MPC = 0x71
- IFT_MPLS = 0xa6
- IFT_MPLSTUNNEL = 0x96
- IFT_MSDSL = 0x8f
- IFT_MVL = 0xbf
- IFT_MYRINET = 0x63
- IFT_NFAS = 0xaf
- IFT_NSIP = 0x1b
- IFT_OPTICALCHANNEL = 0xc3
- IFT_OPTICALTRANSPORT = 0xc4
- IFT_OTHER = 0x1
- IFT_P10 = 0xc
- IFT_P80 = 0xd
- IFT_PARA = 0x22
- IFT_PFLOG = 0xf5
- IFT_PFSYNC = 0xf6
- IFT_PLC = 0xae
- IFT_POS = 0xab
- IFT_PPP = 0x17
- IFT_PPPMULTILINKBUNDLE = 0x6c
- IFT_PROPBWAP2MP = 0xb8
- IFT_PROPCNLS = 0x59
- IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
- IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
- IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
- IFT_PROPMUX = 0x36
- IFT_PROPVIRTUAL = 0x35
- IFT_PROPWIRELESSP2P = 0x9d
- IFT_PTPSERIAL = 0x16
- IFT_PVC = 0xf1
- IFT_QLLC = 0x44
- IFT_RADIOMAC = 0xbc
- IFT_RADSL = 0x5f
- IFT_REACHDSL = 0xc0
- IFT_RFC1483 = 0x9f
- IFT_RS232 = 0x21
- IFT_RSRB = 0x4f
- IFT_SDLC = 0x11
- IFT_SDSL = 0x60
- IFT_SHDSL = 0xa9
- IFT_SIP = 0x1f
- IFT_SLIP = 0x1c
- IFT_SMDSDXI = 0x2b
- IFT_SMDSICIP = 0x34
- IFT_SONET = 0x27
- IFT_SONETOVERHEADCHANNEL = 0xb9
- IFT_SONETPATH = 0x32
- IFT_SONETVT = 0x33
- IFT_SRP = 0x97
- IFT_SS7SIGLINK = 0x9c
- IFT_STACKTOSTACK = 0x6f
- IFT_STARLAN = 0xb
- IFT_STF = 0xf3
- IFT_T1 = 0x12
- IFT_TDLC = 0x74
- IFT_TERMPAD = 0x5b
- IFT_TR008 = 0xb0
- IFT_TRANSPHDLC = 0x7b
- IFT_TUNNEL = 0x83
- IFT_ULTRA = 0x1d
- IFT_USB = 0xa0
- IFT_V11 = 0x40
- IFT_V35 = 0x2d
- IFT_V36 = 0x41
- IFT_V37 = 0x78
- IFT_VDSL = 0x61
- IFT_VIRTUALIPADDRESS = 0x70
- IFT_VOICEEM = 0x64
- IFT_VOICEENCAP = 0x67
- IFT_VOICEFXO = 0x65
- IFT_VOICEFXS = 0x66
- IFT_VOICEOVERATM = 0x98
- IFT_VOICEOVERFRAMERELAY = 0x99
- IFT_VOICEOVERIP = 0x68
- IFT_X213 = 0x5d
- IFT_X25 = 0x5
- IFT_X25DDN = 0x4
- IFT_X25HUNTGROUP = 0x7a
- IFT_X25MLP = 0x79
- IFT_X25PLE = 0x28
- IFT_XETHER = 0x1a
- IGNBRK = 0x1
- IGNCR = 0x80
- IGNPAR = 0x4
- IMAXBEL = 0x2000
- INLCR = 0x40
- INPCK = 0x10
- IN_CLASSA_HOST = 0xffffff
- IN_CLASSA_MAX = 0x80
- IN_CLASSA_NET = 0xff000000
- IN_CLASSA_NSHIFT = 0x18
- IN_CLASSB_HOST = 0xffff
- IN_CLASSB_MAX = 0x10000
- IN_CLASSB_NET = 0xffff0000
- IN_CLASSB_NSHIFT = 0x10
- IN_CLASSC_HOST = 0xff
- IN_CLASSC_NET = 0xffffff00
- IN_CLASSC_NSHIFT = 0x8
- IN_CLASSD_HOST = 0xfffffff
- IN_CLASSD_NET = 0xf0000000
- IN_CLASSD_NSHIFT = 0x1c
- IN_LOOPBACKNET = 0x7f
- IPPROTO_3PC = 0x22
- IPPROTO_ADFS = 0x44
- IPPROTO_AH = 0x33
- IPPROTO_AHIP = 0x3d
- IPPROTO_APES = 0x63
- IPPROTO_ARGUS = 0xd
- IPPROTO_AX25 = 0x5d
- IPPROTO_BHA = 0x31
- IPPROTO_BLT = 0x1e
- IPPROTO_BRSATMON = 0x4c
- IPPROTO_CARP = 0x70
- IPPROTO_CFTP = 0x3e
- IPPROTO_CHAOS = 0x10
- IPPROTO_CMTP = 0x26
- IPPROTO_CPHB = 0x49
- IPPROTO_CPNX = 0x48
- IPPROTO_DDP = 0x25
- IPPROTO_DGP = 0x56
- IPPROTO_DIVERT = 0xfe
- IPPROTO_DONE = 0x101
- IPPROTO_DSTOPTS = 0x3c
- IPPROTO_EGP = 0x8
- IPPROTO_EMCON = 0xe
- IPPROTO_ENCAP = 0x62
- IPPROTO_EON = 0x50
- IPPROTO_ESP = 0x32
- IPPROTO_ETHERIP = 0x61
- IPPROTO_FRAGMENT = 0x2c
- IPPROTO_GGP = 0x3
- IPPROTO_GMTP = 0x64
- IPPROTO_GRE = 0x2f
- IPPROTO_HELLO = 0x3f
- IPPROTO_HMP = 0x14
- IPPROTO_HOPOPTS = 0x0
- IPPROTO_ICMP = 0x1
- IPPROTO_ICMPV6 = 0x3a
- IPPROTO_IDP = 0x16
- IPPROTO_IDPR = 0x23
- IPPROTO_IDRP = 0x2d
- IPPROTO_IGMP = 0x2
- IPPROTO_IGP = 0x55
- IPPROTO_IGRP = 0x58
- IPPROTO_IL = 0x28
- IPPROTO_INLSP = 0x34
- IPPROTO_INP = 0x20
- IPPROTO_IP = 0x0
- IPPROTO_IPCOMP = 0x6c
- IPPROTO_IPCV = 0x47
- IPPROTO_IPEIP = 0x5e
- IPPROTO_IPIP = 0x4
- IPPROTO_IPPC = 0x43
- IPPROTO_IPV4 = 0x4
- IPPROTO_IPV6 = 0x29
- IPPROTO_IRTP = 0x1c
- IPPROTO_KRYPTOLAN = 0x41
- IPPROTO_LARP = 0x5b
- IPPROTO_LEAF1 = 0x19
- IPPROTO_LEAF2 = 0x1a
- IPPROTO_MAX = 0x100
- IPPROTO_MAXID = 0x34
- IPPROTO_MEAS = 0x13
- IPPROTO_MHRP = 0x30
- IPPROTO_MICP = 0x5f
- IPPROTO_MOBILE = 0x37
- IPPROTO_MTP = 0x5c
- IPPROTO_MUX = 0x12
- IPPROTO_ND = 0x4d
- IPPROTO_NHRP = 0x36
- IPPROTO_NONE = 0x3b
- IPPROTO_NSP = 0x1f
- IPPROTO_NVPII = 0xb
- IPPROTO_OSPFIGP = 0x59
- IPPROTO_PFSYNC = 0xf0
- IPPROTO_PGM = 0x71
- IPPROTO_PIGP = 0x9
- IPPROTO_PIM = 0x67
- IPPROTO_PRM = 0x15
- IPPROTO_PUP = 0xc
- IPPROTO_PVP = 0x4b
- IPPROTO_RAW = 0xff
- IPPROTO_RCCMON = 0xa
- IPPROTO_RDP = 0x1b
- IPPROTO_ROUTING = 0x2b
- IPPROTO_RSVP = 0x2e
- IPPROTO_RVD = 0x42
- IPPROTO_SATEXPAK = 0x40
- IPPROTO_SATMON = 0x45
- IPPROTO_SCCSP = 0x60
- IPPROTO_SCTP = 0x84
- IPPROTO_SDRP = 0x2a
- IPPROTO_SEP = 0x21
- IPPROTO_SKIP = 0x39
- IPPROTO_SRPC = 0x5a
- IPPROTO_ST = 0x7
- IPPROTO_SVMTP = 0x52
- IPPROTO_SWIPE = 0x35
- IPPROTO_TCF = 0x57
- IPPROTO_TCP = 0x6
- IPPROTO_TLSP = 0x38
- IPPROTO_TP = 0x1d
- IPPROTO_TPXX = 0x27
- IPPROTO_TRUNK1 = 0x17
- IPPROTO_TRUNK2 = 0x18
- IPPROTO_TTP = 0x54
- IPPROTO_UDP = 0x11
- IPPROTO_UNKNOWN = 0x102
- IPPROTO_VINES = 0x53
- IPPROTO_VISA = 0x46
- IPPROTO_VMTP = 0x51
- IPPROTO_WBEXPAK = 0x4f
- IPPROTO_WBMON = 0x4e
- IPPROTO_WSN = 0x4a
- IPPROTO_XNET = 0xf
- IPPROTO_XTP = 0x24
- IPV6_AUTOFLOWLABEL = 0x3b
- IPV6_BINDV6ONLY = 0x1b
- IPV6_CHECKSUM = 0x1a
- IPV6_DEFAULT_MULTICAST_HOPS = 0x1
- IPV6_DEFAULT_MULTICAST_LOOP = 0x1
- IPV6_DEFHLIM = 0x40
- IPV6_DONTFRAG = 0x3e
- IPV6_DSTOPTS = 0x32
- IPV6_FAITH = 0x1d
- IPV6_FLOWINFO_MASK = 0xffffff0f
- IPV6_FLOWLABEL_MASK = 0xffff0f00
- IPV6_FRAGTTL = 0x78
- IPV6_FW_ADD = 0x1e
- IPV6_FW_DEL = 0x1f
- IPV6_FW_FLUSH = 0x20
- IPV6_FW_GET = 0x22
- IPV6_FW_ZERO = 0x21
- IPV6_HLIMDEC = 0x1
- IPV6_HOPLIMIT = 0x2f
- IPV6_HOPOPTS = 0x31
- IPV6_IPSEC_POLICY = 0x1c
- IPV6_JOIN_GROUP = 0xc
- IPV6_LEAVE_GROUP = 0xd
- IPV6_MAXHLIM = 0xff
- IPV6_MAXPACKET = 0xffff
- IPV6_MMTU = 0x500
- IPV6_MSFILTER = 0x4a
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
- IPV6_MULTICAST_LOOP = 0xb
- IPV6_NEXTHOP = 0x30
- IPV6_PATHMTU = 0x2c
- IPV6_PKTINFO = 0x2e
- IPV6_PKTOPTIONS = 0x34
- IPV6_PORTRANGE = 0xe
- IPV6_PORTRANGE_DEFAULT = 0x0
- IPV6_PORTRANGE_HIGH = 0x1
- IPV6_PORTRANGE_LOW = 0x2
- IPV6_PREFER_TEMPADDR = 0x3f
- IPV6_RECVDSTOPTS = 0x28
- IPV6_RECVHOPLIMIT = 0x25
- IPV6_RECVHOPOPTS = 0x27
- IPV6_RECVPATHMTU = 0x2b
- IPV6_RECVPKTINFO = 0x24
- IPV6_RECVRTHDR = 0x26
- IPV6_RECVTCLASS = 0x39
- IPV6_RTHDR = 0x33
- IPV6_RTHDRDSTOPTS = 0x23
- IPV6_RTHDR_LOOSE = 0x0
- IPV6_RTHDR_STRICT = 0x1
- IPV6_RTHDR_TYPE_0 = 0x0
- IPV6_SOCKOPT_RESERVED1 = 0x3
- IPV6_TCLASS = 0x3d
- IPV6_UNICAST_HOPS = 0x4
- IPV6_USE_MIN_MTU = 0x2a
- IPV6_V6ONLY = 0x1b
- IPV6_VERSION = 0x60
- IPV6_VERSION_MASK = 0xf0
- IP_ADD_MEMBERSHIP = 0xc
- IP_DEFAULT_MULTICAST_LOOP = 0x1
- IP_DEFAULT_MULTICAST_TTL = 0x1
- IP_DF = 0x4000
- IP_DROP_MEMBERSHIP = 0xd
- IP_DUMMYNET_CONFIGURE = 0x3c
- IP_DUMMYNET_DEL = 0x3d
- IP_DUMMYNET_FLUSH = 0x3e
- IP_DUMMYNET_GET = 0x40
- IP_FAITH = 0x16
- IP_FW_ADD = 0x32
- IP_FW_DEL = 0x33
- IP_FW_FLUSH = 0x34
- IP_FW_GET = 0x36
- IP_FW_RESETLOG = 0x37
- IP_FW_ZERO = 0x35
- IP_HDRINCL = 0x2
- IP_IPSEC_POLICY = 0x15
- IP_MAXPACKET = 0xffff
- IP_MAX_MEMBERSHIPS = 0x14
- IP_MF = 0x2000
- IP_MINTTL = 0x42
- IP_MSS = 0x240
- IP_MULTICAST_IF = 0x9
- IP_MULTICAST_LOOP = 0xb
- IP_MULTICAST_TTL = 0xa
- IP_MULTICAST_VIF = 0xe
- IP_OFFMASK = 0x1fff
- IP_OPTIONS = 0x1
- IP_PORTRANGE = 0x13
- IP_PORTRANGE_DEFAULT = 0x0
- IP_PORTRANGE_HIGH = 0x1
- IP_PORTRANGE_LOW = 0x2
- IP_RECVDSTADDR = 0x7
- IP_RECVIF = 0x14
- IP_RECVOPTS = 0x5
- IP_RECVRETOPTS = 0x6
- IP_RECVTTL = 0x41
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
- IP_RSVP_OFF = 0x10
- IP_RSVP_ON = 0xf
- IP_RSVP_VIF_OFF = 0x12
- IP_RSVP_VIF_ON = 0x11
- IP_TOS = 0x3
- IP_TTL = 0x4
- ISIG = 0x80
- ISTRIP = 0x20
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
- LOCK_UN = 0x8
- MADV_AUTOSYNC = 0x7
- MADV_CONTROL_END = 0xb
- MADV_CONTROL_START = 0xa
- MADV_CORE = 0x9
- MADV_DONTNEED = 0x4
- MADV_FREE = 0x5
- MADV_INVAL = 0xa
- MADV_NOCORE = 0x8
- MADV_NORMAL = 0x0
- MADV_NOSYNC = 0x6
- MADV_RANDOM = 0x1
- MADV_SEQUENTIAL = 0x2
- MADV_SETMAP = 0xb
- MADV_WILLNEED = 0x3
- MAP_ANON = 0x1000
- MAP_COPY = 0x2
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
- MAP_HASSEMAPHORE = 0x200
- MAP_INHERIT = 0x80
- MAP_NOCORE = 0x20000
- MAP_NOEXTEND = 0x100
- MAP_NORESERVE = 0x40
- MAP_NOSYNC = 0x800
- MAP_PRIVATE = 0x2
- MAP_RENAME = 0x20
- MAP_SHARED = 0x1
- MAP_SIZEALIGN = 0x40000
- MAP_STACK = 0x400
- MAP_TRYFIXED = 0x10000
- MAP_VPAGETABLE = 0x2000
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
- MSG_CTRUNC = 0x20
- MSG_DONTROUTE = 0x4
- MSG_DONTWAIT = 0x80
- MSG_EOF = 0x100
- MSG_EOR = 0x8
- MSG_FBLOCKING = 0x10000
- MSG_FMASK = 0xffff0000
- MSG_FNONBLOCKING = 0x20000
- MSG_NOSIGNAL = 0x400
- MSG_NOTIFICATION = 0x200
- MSG_OOB = 0x1
- MSG_PEEK = 0x2
- MSG_SYNC = 0x800
- MSG_TRUNC = 0x10
- MSG_WAITALL = 0x40
- MS_ASYNC = 0x1
- MS_INVALIDATE = 0x2
- MS_SYNC = 0x0
- NAME_MAX = 0xff
- NET_RT_DUMP = 0x1
- NET_RT_FLAGS = 0x2
- NET_RT_IFLIST = 0x3
- NET_RT_MAXID = 0x4
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
- NOTE_DELETE = 0x1
- NOTE_EXEC = 0x20000000
- NOTE_EXIT = 0x80000000
- NOTE_EXTEND = 0x4
- NOTE_FORK = 0x40000000
- NOTE_LINK = 0x10
- NOTE_LOWAT = 0x1
- NOTE_OOB = 0x2
- NOTE_PCTRLMASK = 0xf0000000
- NOTE_PDATAMASK = 0xfffff
- NOTE_RENAME = 0x20
- NOTE_REVOKE = 0x40
- NOTE_TRACK = 0x1
- NOTE_TRACKERR = 0x2
- NOTE_WRITE = 0x2
- OCRNL = 0x10
- ONLCR = 0x2
- ONLRET = 0x40
- ONOCR = 0x20
- ONOEOT = 0x8
- OPOST = 0x1
- O_ACCMODE = 0x3
- O_APPEND = 0x8
- O_ASYNC = 0x40
- O_CLOEXEC = 0x20000
- O_CREAT = 0x200
- O_DIRECT = 0x10000
- O_DIRECTORY = 0x8000000
- O_EXCL = 0x800
- O_EXLOCK = 0x20
- O_FAPPEND = 0x100000
- O_FASYNCWRITE = 0x800000
- O_FBLOCKING = 0x40000
- O_FBUFFERED = 0x2000000
- O_FMASK = 0x7fc0000
- O_FNONBLOCKING = 0x80000
- O_FOFFSET = 0x200000
- O_FSYNC = 0x80
- O_FSYNCWRITE = 0x400000
- O_FUNBUFFERED = 0x1000000
- O_MAPONREAD = 0x4000000
- O_NDELAY = 0x4
- O_NOCTTY = 0x8000
- O_NOFOLLOW = 0x100
- O_NONBLOCK = 0x4
- O_RDONLY = 0x0
- O_RDWR = 0x2
- O_SHLOCK = 0x10
- O_SYNC = 0x80
- O_TRUNC = 0x400
- O_WRONLY = 0x1
- PARENB = 0x1000
- PARMRK = 0x8
- PARODD = 0x2000
- PENDIN = 0x20000000
- PRIO_PGRP = 0x1
- PRIO_PROCESS = 0x0
- PRIO_USER = 0x2
- PROT_EXEC = 0x4
- PROT_NONE = 0x0
- PROT_READ = 0x1
- PROT_WRITE = 0x2
- RLIMIT_AS = 0xa
- RLIMIT_CORE = 0x4
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
- RLIMIT_NOFILE = 0x8
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
- RTAX_BRD = 0x7
- RTAX_DST = 0x0
- RTAX_GATEWAY = 0x1
- RTAX_GENMASK = 0x3
- RTAX_IFA = 0x5
- RTAX_IFP = 0x4
- RTAX_MAX = 0xb
- RTAX_MPLS1 = 0x8
- RTAX_MPLS2 = 0x9
- RTAX_MPLS3 = 0xa
- RTAX_NETMASK = 0x2
- RTA_AUTHOR = 0x40
- RTA_BRD = 0x80
- RTA_DST = 0x1
- RTA_GATEWAY = 0x2
- RTA_GENMASK = 0x8
- RTA_IFA = 0x20
- RTA_IFP = 0x10
- RTA_MPLS1 = 0x100
- RTA_MPLS2 = 0x200
- RTA_MPLS3 = 0x400
- RTA_NETMASK = 0x4
- RTF_BLACKHOLE = 0x1000
- RTF_BROADCAST = 0x400000
- RTF_CLONING = 0x100
- RTF_DONE = 0x40
- RTF_DYNAMIC = 0x10
- RTF_GATEWAY = 0x2
- RTF_HOST = 0x4
- RTF_LLINFO = 0x400
- RTF_LOCAL = 0x200000
- RTF_MODIFIED = 0x20
- RTF_MPLSOPS = 0x1000000
- RTF_MULTICAST = 0x800000
- RTF_PINNED = 0x100000
- RTF_PRCLONING = 0x10000
- RTF_PROTO1 = 0x8000
- RTF_PROTO2 = 0x4000
- RTF_PROTO3 = 0x40000
- RTF_REJECT = 0x8
- RTF_STATIC = 0x800
- RTF_UP = 0x1
- RTF_WASCLONED = 0x20000
- RTF_XRESOLVE = 0x200
- RTM_ADD = 0x1
- RTM_CHANGE = 0x3
- RTM_DELADDR = 0xd
- RTM_DELETE = 0x2
- RTM_DELMADDR = 0x10
- RTM_GET = 0x4
- RTM_IEEE80211 = 0x12
- RTM_IFANNOUNCE = 0x11
- RTM_IFINFO = 0xe
- RTM_LOCK = 0x8
- RTM_LOSING = 0x5
- RTM_MISS = 0x7
- RTM_NEWADDR = 0xc
- RTM_NEWMADDR = 0xf
- RTM_OLDADD = 0x9
- RTM_OLDDEL = 0xa
- RTM_REDIRECT = 0x6
- RTM_RESOLVE = 0xb
- RTM_RTTUNIT = 0xf4240
- RTM_VERSION = 0x6
- RTV_EXPIRE = 0x4
- RTV_HOPCOUNT = 0x2
- RTV_IWCAPSEGS = 0x400
- RTV_IWMAXSEGS = 0x200
- RTV_MSL = 0x100
- RTV_MTU = 0x1
- RTV_RPIPE = 0x8
- RTV_RTT = 0x40
- RTV_RTTVAR = 0x80
- RTV_SPIPE = 0x10
- RTV_SSTHRESH = 0x20
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
- SCM_CREDS = 0x3
- SCM_RIGHTS = 0x1
- SCM_TIMESTAMP = 0x2
- SHUT_RD = 0x0
- SHUT_RDWR = 0x2
- SHUT_WR = 0x1
- SIOCADDMULTI = 0x80206931
- SIOCADDRT = 0x8030720a
- SIOCAIFADDR = 0x8040691a
- SIOCALIFADDR = 0x8118691b
- SIOCATMARK = 0x40047307
- SIOCDELMULTI = 0x80206932
- SIOCDELRT = 0x8030720b
- SIOCDIFADDR = 0x80206919
- SIOCDIFPHYADDR = 0x80206949
- SIOCDLIFADDR = 0x8118691d
- SIOCGDRVSPEC = 0xc01c697b
- SIOCGETSGCNT = 0xc0147210
- SIOCGETVIFCNT = 0xc014720f
- SIOCGHIWAT = 0x40047301
- SIOCGIFADDR = 0xc0206921
- SIOCGIFBRDADDR = 0xc0206923
- SIOCGIFCAP = 0xc020691f
- SIOCGIFCONF = 0xc0086924
- SIOCGIFDATA = 0xc0206926
- SIOCGIFDSTADDR = 0xc0206922
- SIOCGIFFLAGS = 0xc0206911
- SIOCGIFGENERIC = 0xc020693a
- SIOCGIFGMEMB = 0xc024698a
- SIOCGIFINDEX = 0xc0206920
- SIOCGIFMEDIA = 0xc0286938
- SIOCGIFMETRIC = 0xc0206917
- SIOCGIFMTU = 0xc0206933
- SIOCGIFNETMASK = 0xc0206925
- SIOCGIFPDSTADDR = 0xc0206948
- SIOCGIFPHYS = 0xc0206935
- SIOCGIFPOLLCPU = 0xc020697e
- SIOCGIFPSRCADDR = 0xc0206947
- SIOCGIFSTATUS = 0xc331693b
- SIOCGIFTSOLEN = 0xc0206980
- SIOCGLIFADDR = 0xc118691c
- SIOCGLIFPHYADDR = 0xc118694b
- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
- SIOCGPRIVATE_0 = 0xc0206950
- SIOCGPRIVATE_1 = 0xc0206951
- SIOCIFCREATE = 0xc020697a
- SIOCIFCREATE2 = 0xc020697c
- SIOCIFDESTROY = 0x80206979
- SIOCIFGCLONERS = 0xc00c6978
- SIOCSDRVSPEC = 0x801c697b
- SIOCSHIWAT = 0x80047300
- SIOCSIFADDR = 0x8020690c
- SIOCSIFBRDADDR = 0x80206913
- SIOCSIFCAP = 0x8020691e
- SIOCSIFDSTADDR = 0x8020690e
- SIOCSIFFLAGS = 0x80206910
- SIOCSIFGENERIC = 0x80206939
- SIOCSIFLLADDR = 0x8020693c
- SIOCSIFMEDIA = 0xc0206937
- SIOCSIFMETRIC = 0x80206918
- SIOCSIFMTU = 0x80206934
- SIOCSIFNAME = 0x80206928
- SIOCSIFNETMASK = 0x80206916
- SIOCSIFPHYADDR = 0x80406946
- SIOCSIFPHYS = 0x80206936
- SIOCSIFPOLLCPU = 0x8020697d
- SIOCSIFTSOLEN = 0x8020697f
- SIOCSLIFPHYADDR = 0x8118694a
- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
- SOCK_DGRAM = 0x2
- SOCK_MAXADDRLEN = 0xff
- SOCK_RAW = 0x3
- SOCK_RDM = 0x4
- SOCK_SEQPACKET = 0x5
- SOCK_STREAM = 0x1
- SOL_SOCKET = 0xffff
- SOMAXCONN = 0x80
- SO_ACCEPTCONN = 0x2
- SO_ACCEPTFILTER = 0x1000
- SO_BROADCAST = 0x20
- SO_DEBUG = 0x1
- SO_DONTROUTE = 0x10
- SO_ERROR = 0x1007
- SO_KEEPALIVE = 0x8
- SO_LINGER = 0x80
- SO_NOSIGPIPE = 0x800
- SO_OOBINLINE = 0x100
- SO_RCVBUF = 0x1002
- SO_RCVLOWAT = 0x1004
- SO_RCVTIMEO = 0x1006
- SO_REUSEADDR = 0x4
- SO_REUSEPORT = 0x200
- SO_SNDBUF = 0x1001
- SO_SNDLOWAT = 0x1003
- SO_SNDSPACE = 0x100a
- SO_SNDTIMEO = 0x1005
- SO_TIMESTAMP = 0x400
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
- TCIFLUSH = 0x1
- TCIOFLUSH = 0x3
- TCOFLUSH = 0x2
- TCP_FASTKEEP = 0x80
- TCP_KEEPCNT = 0x400
- TCP_KEEPIDLE = 0x100
- TCP_KEEPINIT = 0x20
- TCP_KEEPINTVL = 0x200
- TCP_MAXBURST = 0x4
- TCP_MAXHLEN = 0x3c
- TCP_MAXOLEN = 0x28
- TCP_MAXSEG = 0x2
- TCP_MAXWIN = 0xffff
- TCP_MAX_WINSHIFT = 0xe
- TCP_MINMSS = 0x100
- TCP_MIN_WINSHIFT = 0x5
- TCP_MSS = 0x200
- TCP_NODELAY = 0x1
- TCP_NOOPT = 0x8
- TCP_NOPUSH = 0x4
- TCP_SIGNATURE_ENABLE = 0x10
- TCSAFLUSH = 0x2
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
- TIOCCONS = 0x80047462
- TIOCDCDTIMESTAMP = 0x40087458
- TIOCDRAIN = 0x2000745e
- TIOCEXCL = 0x2000740d
- TIOCEXT = 0x80047460
- TIOCFLUSH = 0x80047410
- TIOCGDRAINWAIT = 0x40047456
- TIOCGETA = 0x402c7413
- TIOCGETD = 0x4004741a
- TIOCGPGRP = 0x40047477
- TIOCGSID = 0x40047463
- TIOCGSIZE = 0x40087468
- TIOCGWINSZ = 0x40087468
- TIOCISPTMASTER = 0x20007455
- TIOCMBIC = 0x8004746b
- TIOCMBIS = 0x8004746c
- TIOCMGDTRWAIT = 0x4004745a
- TIOCMGET = 0x4004746a
- TIOCMODG = 0x40047403
- TIOCMODS = 0x80047404
- TIOCMSDTRWAIT = 0x8004745b
- TIOCMSET = 0x8004746d
- TIOCM_CAR = 0x40
- TIOCM_CD = 0x40
- TIOCM_CTS = 0x20
- TIOCM_DSR = 0x100
- TIOCM_DTR = 0x2
- TIOCM_LE = 0x1
- TIOCM_RI = 0x80
- TIOCM_RNG = 0x80
- TIOCM_RTS = 0x4
- TIOCM_SR = 0x10
- TIOCM_ST = 0x8
- TIOCNOTTY = 0x20007471
- TIOCNXCL = 0x2000740e
- TIOCOUTQ = 0x40047473
- TIOCPKT = 0x80047470
- TIOCPKT_DATA = 0x0
- TIOCPKT_DOSTOP = 0x20
- TIOCPKT_FLUSHREAD = 0x1
- TIOCPKT_FLUSHWRITE = 0x2
- TIOCPKT_IOCTL = 0x40
- TIOCPKT_NOSTOP = 0x10
- TIOCPKT_START = 0x8
- TIOCPKT_STOP = 0x4
- TIOCREMOTE = 0x80047469
- TIOCSBRK = 0x2000747b
- TIOCSCTTY = 0x20007461
- TIOCSDRAINWAIT = 0x80047457
- TIOCSDTR = 0x20007479
- TIOCSETA = 0x802c7414
- TIOCSETAF = 0x802c7416
- TIOCSETAW = 0x802c7415
- TIOCSETD = 0x8004741b
- TIOCSIG = 0x2000745f
- TIOCSPGRP = 0x80047476
- TIOCSSIZE = 0x80087467
- TIOCSTART = 0x2000746e
- TIOCSTAT = 0x20007465
- TIOCSTI = 0x80017472
- TIOCSTOP = 0x2000746f
- TIOCSWINSZ = 0x80087467
- TIOCTIMESTAMP = 0x40087459
- TIOCUCNTL = 0x80047466
- TOSTOP = 0x400000
- VCHECKPT = 0x13
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
- VEOL = 0x1
- VEOL2 = 0x2
- VERASE = 0x3
- VERASE2 = 0x7
- VINTR = 0x8
- VKILL = 0x5
- VLNEXT = 0xe
- VMIN = 0x10
- VQUIT = 0x9
- VREPRINT = 0x6
- VSTART = 0xc
- VSTATUS = 0x12
- VSTOP = 0xd
- VSUSP = 0xa
- VTIME = 0x11
- VWERASE = 0x4
- WCONTINUED = 0x4
- WCOREFLAG = 0x80
- WLINUXCLONE = 0x80000000
- WNOHANG = 0x1
- WSTOPPED = 0x7f
- WUNTRACED = 0x2
-)
-
-// Errors
-const (
- E2BIG = syscall.Errno(0x7)
- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x30)
- EADDRNOTAVAIL = syscall.Errno(0x31)
- EAFNOSUPPORT = syscall.Errno(0x2f)
- EAGAIN = syscall.Errno(0x23)
- EALREADY = syscall.Errno(0x25)
- EASYNC = syscall.Errno(0x63)
- EAUTH = syscall.Errno(0x50)
- EBADF = syscall.Errno(0x9)
- EBADMSG = syscall.Errno(0x59)
- EBADRPC = syscall.Errno(0x48)
- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x55)
- ECHILD = syscall.Errno(0xa)
- ECONNABORTED = syscall.Errno(0x35)
- ECONNREFUSED = syscall.Errno(0x3d)
- ECONNRESET = syscall.Errno(0x36)
- EDEADLK = syscall.Errno(0xb)
- EDESTADDRREQ = syscall.Errno(0x27)
- EDOM = syscall.Errno(0x21)
- EDOOFUS = syscall.Errno(0x58)
- EDQUOT = syscall.Errno(0x45)
- EEXIST = syscall.Errno(0x11)
- EFAULT = syscall.Errno(0xe)
- EFBIG = syscall.Errno(0x1b)
- EFTYPE = syscall.Errno(0x4f)
- EHOSTDOWN = syscall.Errno(0x40)
- EHOSTUNREACH = syscall.Errno(0x41)
- EIDRM = syscall.Errno(0x52)
- EILSEQ = syscall.Errno(0x56)
- EINPROGRESS = syscall.Errno(0x24)
- EINTR = syscall.Errno(0x4)
- EINVAL = syscall.Errno(0x16)
- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x38)
- EISDIR = syscall.Errno(0x15)
- ELAST = syscall.Errno(0x63)
- ELOOP = syscall.Errno(0x3e)
- EMFILE = syscall.Errno(0x18)
- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x28)
- EMULTIHOP = syscall.Errno(0x5a)
- ENAMETOOLONG = syscall.Errno(0x3f)
- ENEEDAUTH = syscall.Errno(0x51)
- ENETDOWN = syscall.Errno(0x32)
- ENETRESET = syscall.Errno(0x34)
- ENETUNREACH = syscall.Errno(0x33)
- ENFILE = syscall.Errno(0x17)
- ENOATTR = syscall.Errno(0x57)
- ENOBUFS = syscall.Errno(0x37)
- ENODEV = syscall.Errno(0x13)
- ENOENT = syscall.Errno(0x2)
- ENOEXEC = syscall.Errno(0x8)
- ENOLCK = syscall.Errno(0x4d)
- ENOLINK = syscall.Errno(0x5b)
- ENOMEDIUM = syscall.Errno(0x5d)
- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x53)
- ENOPROTOOPT = syscall.Errno(0x2a)
- ENOSPC = syscall.Errno(0x1c)
- ENOSYS = syscall.Errno(0x4e)
- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x39)
- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x42)
- ENOTSOCK = syscall.Errno(0x26)
- ENOTSUP = syscall.Errno(0x2d)
- ENOTTY = syscall.Errno(0x19)
- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x2d)
- EOVERFLOW = syscall.Errno(0x54)
- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x2e)
- EPIPE = syscall.Errno(0x20)
- EPROCLIM = syscall.Errno(0x43)
- EPROCUNAVAIL = syscall.Errno(0x4c)
- EPROGMISMATCH = syscall.Errno(0x4b)
- EPROGUNAVAIL = syscall.Errno(0x4a)
- EPROTO = syscall.Errno(0x5c)
- EPROTONOSUPPORT = syscall.Errno(0x2b)
- EPROTOTYPE = syscall.Errno(0x29)
- ERANGE = syscall.Errno(0x22)
- EREMOTE = syscall.Errno(0x47)
- EROFS = syscall.Errno(0x1e)
- ERPCMISMATCH = syscall.Errno(0x49)
- ESHUTDOWN = syscall.Errno(0x3a)
- ESOCKTNOSUPPORT = syscall.Errno(0x2c)
- ESPIPE = syscall.Errno(0x1d)
- ESRCH = syscall.Errno(0x3)
- ESTALE = syscall.Errno(0x46)
- ETIMEDOUT = syscall.Errno(0x3c)
- ETOOMANYREFS = syscall.Errno(0x3b)
- ETXTBSY = syscall.Errno(0x1a)
- EUNUSED94 = syscall.Errno(0x5e)
- EUNUSED95 = syscall.Errno(0x5f)
- EUNUSED96 = syscall.Errno(0x60)
- EUNUSED97 = syscall.Errno(0x61)
- EUNUSED98 = syscall.Errno(0x62)
- EUSERS = syscall.Errno(0x44)
- EWOULDBLOCK = syscall.Errno(0x23)
- EXDEV = syscall.Errno(0x12)
-)
-
-// Signals
-const (
- SIGABRT = syscall.Signal(0x6)
- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x14)
- SIGCKPT = syscall.Signal(0x21)
- SIGCKPTEXIT = syscall.Signal(0x22)
- SIGCONT = syscall.Signal(0x13)
- SIGEMT = syscall.Signal(0x7)
- SIGFPE = syscall.Signal(0x8)
- SIGHUP = syscall.Signal(0x1)
- SIGILL = syscall.Signal(0x4)
- SIGINFO = syscall.Signal(0x1d)
- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x17)
- SIGIOT = syscall.Signal(0x6)
- SIGKILL = syscall.Signal(0x9)
- SIGPIPE = syscall.Signal(0xd)
- SIGPROF = syscall.Signal(0x1b)
- SIGQUIT = syscall.Signal(0x3)
- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x11)
- SIGSYS = syscall.Signal(0xc)
- SIGTERM = syscall.Signal(0xf)
- SIGTHR = syscall.Signal(0x20)
- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x12)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
- SIGURG = syscall.Signal(0x10)
- SIGUSR1 = syscall.Signal(0x1e)
- SIGUSR2 = syscall.Signal(0x1f)
- SIGVTALRM = syscall.Signal(0x1a)
- SIGWINCH = syscall.Signal(0x1c)
- SIGXCPU = syscall.Signal(0x18)
- SIGXFSZ = syscall.Signal(0x19)
-)
-
-// Error table
-var errors = [...]string{
- 1: "operation not permitted",
- 2: "no such file or directory",
- 3: "no such process",
- 4: "interrupted system call",
- 5: "input/output error",
- 6: "device not configured",
- 7: "argument list too long",
- 8: "exec format error",
- 9: "bad file descriptor",
- 10: "no child processes",
- 11: "resource deadlock avoided",
- 12: "cannot allocate memory",
- 13: "permission denied",
- 14: "bad address",
- 15: "block device required",
- 16: "device busy",
- 17: "file exists",
- 18: "cross-device link",
- 19: "operation not supported by device",
- 20: "not a directory",
- 21: "is a directory",
- 22: "invalid argument",
- 23: "too many open files in system",
- 24: "too many open files",
- 25: "inappropriate ioctl for device",
- 26: "text file busy",
- 27: "file too large",
- 28: "no space left on device",
- 29: "illegal seek",
- 30: "read-only file system",
- 31: "too many links",
- 32: "broken pipe",
- 33: "numerical argument out of domain",
- 34: "result too large",
- 35: "resource temporarily unavailable",
- 36: "operation now in progress",
- 37: "operation already in progress",
- 38: "socket operation on non-socket",
- 39: "destination address required",
- 40: "message too long",
- 41: "protocol wrong type for socket",
- 42: "protocol not available",
- 43: "protocol not supported",
- 44: "socket type not supported",
- 45: "operation not supported",
- 46: "protocol family not supported",
- 47: "address family not supported by protocol family",
- 48: "address already in use",
- 49: "can't assign requested address",
- 50: "network is down",
- 51: "network is unreachable",
- 52: "network dropped connection on reset",
- 53: "software caused connection abort",
- 54: "connection reset by peer",
- 55: "no buffer space available",
- 56: "socket is already connected",
- 57: "socket is not connected",
- 58: "can't send after socket shutdown",
- 59: "too many references: can't splice",
- 60: "operation timed out",
- 61: "connection refused",
- 62: "too many levels of symbolic links",
- 63: "file name too long",
- 64: "host is down",
- 65: "no route to host",
- 66: "directory not empty",
- 67: "too many processes",
- 68: "too many users",
- 69: "disc quota exceeded",
- 70: "stale NFS file handle",
- 71: "too many levels of remote in path",
- 72: "RPC struct is bad",
- 73: "RPC version wrong",
- 74: "RPC prog. not avail",
- 75: "program version wrong",
- 76: "bad procedure for program",
- 77: "no locks available",
- 78: "function not implemented",
- 79: "inappropriate file type or format",
- 80: "authentication error",
- 81: "need authenticator",
- 82: "identifier removed",
- 83: "no message of desired type",
- 84: "value too large to be stored in data type",
- 85: "operation canceled",
- 86: "illegal byte sequence",
- 87: "attribute not found",
- 88: "programming error",
- 89: "bad message",
- 90: "multihop attempted",
- 91: "link has been severed",
- 92: "protocol error",
- 93: "no medium found",
- 94: "unknown error: 94",
- 95: "unknown error: 95",
- 96: "unknown error: 96",
- 97: "unknown error: 97",
- 98: "unknown error: 98",
- 99: "unknown error: 99",
-}
-
-// Signal table
-var signals = [...]string{
- 1: "hangup",
- 2: "interrupt",
- 3: "quit",
- 4: "illegal instruction",
- 5: "trace/BPT trap",
- 6: "abort trap",
- 7: "EMT trap",
- 8: "floating point exception",
- 9: "killed",
- 10: "bus error",
- 11: "segmentation fault",
- 12: "bad system call",
- 13: "broken pipe",
- 14: "alarm clock",
- 15: "terminated",
- 16: "urgent I/O condition",
- 17: "suspended (signal)",
- 18: "suspended",
- 19: "continued",
- 20: "child exited",
- 21: "stopped (tty input)",
- 22: "stopped (tty output)",
- 23: "I/O possible",
- 24: "cputime limit exceeded",
- 25: "filesize limit exceeded",
- 26: "virtual timer expired",
- 27: "profiling timer expired",
- 28: "window size changes",
- 29: "information request",
- 30: "user defined signal 1",
- 31: "user defined signal 2",
- 32: "thread Scheduler",
- 33: "checkPoint",
- 34: "checkPointExit",
-}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go
index d370be0ec..8f920124b 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go
@@ -216,6 +216,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
@@ -826,6 +827,7 @@ const (
O_RDWR = 0x2
O_RSYNC = 0x101000
O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
O_TRUNC = 0x200
O_WRONLY = 0x1
PACKET_ADD_MEMBERSHIP = 0x1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go
index b83fb40b3..49b6c3546 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go
@@ -216,6 +216,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
@@ -826,6 +827,7 @@ const (
O_RDWR = 0x2
O_RSYNC = 0x101000
O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
O_TRUNC = 0x200
O_WRONLY = 0x1
PACKET_ADD_MEMBERSHIP = 0x1
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go
index 1cc76a78c..f036758f9 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go
@@ -212,6 +212,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go
index 47027b79c..16dcbc9cb 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go
@@ -222,6 +222,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64.go
new file mode 100644
index 000000000..36535b242
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64.go
@@ -0,0 +1,1917 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IB = 0x1b
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_MPLS = 0x1c
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_6LOWPAN = 0x339
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LL_OFF = -0x200000
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_NET_OFF = -0x100000
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_TAI = 0xb
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CREAD = 0x80
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_80221 = 0x8917
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_LOOPBACK = 0x9000
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_TSN = 0x22f0
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ ETH_P_XDSA = 0xf8
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x2000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0xe
+ F_GETLK64 = 0xe
+ F_GETOWN = 0x17
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OFD_GETLK = 0x24
+ F_OFD_SETLK = 0x25
+ F_OFD_SETLKW = 0x26
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETOWN = 0x18
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x100
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_MANAGETEMPADDR = 0x100
+ IFA_F_MCAUTOJOIN = 0x400
+ IFA_F_NODAD = 0x2
+ IFA_F_NOPREFIXROUTE = 0x200
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_STABLE_PRIVACY = 0x800
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x8
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_ECHO = 0x40000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MASTER = 0x400
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x80
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PATHMTU = 0x3d
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_INTERFACE = 0x4
+ IPV6_PMTUDISC_OMIT = 0x5
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPATHMTU = 0x3c
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_CHECKSUM = 0x17
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_NODEFRAG = 0x16
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_INTERFACE = 0x4
+ IP_PMTUDISC_OMIT = 0x5
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x800
+ MAP_ANONYMOUS = 0x800
+ MAP_DENYWRITE = 0x2000
+ MAP_EXECUTABLE = 0x4000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x1000
+ MAP_HUGETLB = 0x80000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x8000
+ MAP_NONBLOCK = 0x20000
+ MAP_NORESERVE = 0x400
+ MAP_POPULATE = 0x10000
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x800
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x40000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_LAZYTIME = 0x2000000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x2800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CAP_ACK = 0xa
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_LISTEN_ALL_NSID = 0x8
+ NETLINK_LIST_MEMBERSHIPS = 0x9
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x1000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x100
+ O_DIRECT = 0x8000
+ O_DIRECTORY = 0x10000
+ O_DSYNC = 0x10
+ O_EXCL = 0x400
+ O_FSYNC = 0x4010
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x80
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x800
+ O_NOFOLLOW = 0x20000
+ O_NONBLOCK = 0x80
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x4010
+ O_SYNC = 0x4010
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CBPF = 0x6
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_DATA = 0x16
+ PACKET_FANOUT_EBPF = 0x7
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_QM = 0x5
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_KERNEL = 0x7
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_QDISC_BYPASS = 0x14
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_ROLLOVER_STATS = 0x15
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_USER = 0x6
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_CAP_AMBIENT = 0x2f
+ PR_CAP_AMBIENT_CLEAR_ALL = 0x4
+ PR_CAP_AMBIENT_IS_SET = 0x1
+ PR_CAP_AMBIENT_LOWER = 0x3
+ PR_CAP_AMBIENT_RAISE = 0x2
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_FP_MODE_FR = 0x1
+ PR_FP_MODE_FRE = 0x2
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_FP_MODE = 0x2e
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_THP_DISABLE = 0x2a
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_MPX_DISABLE_MANAGEMENT = 0x2c
+ PR_MPX_ENABLE_MANAGEMENT = 0x2b
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_FP_MODE = 0x2d
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_MAP = 0xe
+ PR_SET_MM_MAP_SIZE = 0xf
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_THP_DISABLE = 0x29
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_GET_THREAD_AREA = 0x19
+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
+ PTRACE_GET_WATCH_REGS = 0xd0
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x3000ff
+ PTRACE_O_SUSPEND_SECCOMP = 0x200000
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKDATA_3264 = 0xc1
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKTEXT_3264 = 0xc0
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKEDATA_3264 = 0xc3
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKETEXT_3264 = 0xc2
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SET_THREAD_AREA = 0x1a
+ PTRACE_SET_WATCH_REGS = 0xd1
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ RLIMIT_AS = 0x6
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x5
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CC_ALGO = 0x10
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_MASK = 0xf
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0x10
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x16
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELNSID = 0x59
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETNSID = 0x5a
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x5b
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWNSID = 0x58
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x13
+ RTM_NR_MSGTYPES = 0x4c
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_COMPARE_MASK = 0x11
+ RTNH_F_DEAD = 0x1
+ RTNH_F_LINKDOWN = 0x10
+ RTNH_F_OFFLOAD = 0x8
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BABEL = 0x2a
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x40047307
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x40047309
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x80047308
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x1
+ SOCK_NONBLOCK = 0x80
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x2
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0xffff
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1009
+ SO_ATTACH_BPF = 0x32
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BPF_EXTENSIONS = 0x30
+ SO_BROADCAST = 0x20
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_BPF = 0x1b
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x1029
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_GET_FILTER = 0x1a
+ SO_INCOMING_CPU = 0x31
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0x100
+ SO_PASSCRED = 0x11
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x12
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1e
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x1028
+ SO_RCVBUF = 0x1002
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x1001
+ SO_SNDBUFFORCE = 0x1f
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_STYLE = 0x1008
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x1008
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCFLSH = 0x5407
+ TCIFLUSH = 0x0
+ TCIOFLUSH = 0x2
+ TCOFLUSH = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x5410
+ TCSBRK = 0x5405
+ TCXONC = 0x5406
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x80047478
+ TIOCEXCL = 0x740d
+ TIOCGDEV = 0x40045432
+ TIOCGETD = 0x7400
+ TIOCGETP = 0x7408
+ TIOCGEXCL = 0x40045440
+ TIOCGICOUNT = 0x5492
+ TIOCGLCKTRMIOS = 0x548b
+ TIOCGLTC = 0x7474
+ TIOCGPGRP = 0x40047477
+ TIOCGPKT = 0x40045438
+ TIOCGPTLCK = 0x40045439
+ TIOCGPTN = 0x40045430
+ TIOCGRS485 = 0x4020542e
+ TIOCGSERIAL = 0x5484
+ TIOCGSID = 0x7416
+ TIOCGSOFTCAR = 0x5481
+ TIOCGWINSZ = 0x40087468
+ TIOCINQ = 0x467f
+ TIOCLINUX = 0x5483
+ TIOCMBIC = 0x741c
+ TIOCMBIS = 0x741b
+ TIOCMGET = 0x741d
+ TIOCMIWAIT = 0x5491
+ TIOCMSET = 0x741a
+ TIOCM_CAR = 0x100
+ TIOCM_CD = 0x100
+ TIOCM_CTS = 0x40
+ TIOCM_DSR = 0x400
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x200
+ TIOCM_RNG = 0x200
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x20
+ TIOCM_ST = 0x10
+ TIOCNOTTY = 0x5471
+ TIOCNXCL = 0x740e
+ TIOCOUTQ = 0x7472
+ TIOCPKT = 0x5470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x5480
+ TIOCSERCONFIG = 0x5488
+ TIOCSERGETLSR = 0x548e
+ TIOCSERGETMULTI = 0x548f
+ TIOCSERGSTRUCT = 0x548d
+ TIOCSERGWILD = 0x5489
+ TIOCSERSETMULTI = 0x5490
+ TIOCSERSWILD = 0x548a
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x7401
+ TIOCSETN = 0x740a
+ TIOCSETP = 0x7409
+ TIOCSIG = 0x80045436
+ TIOCSLCKTRMIOS = 0x548c
+ TIOCSLTC = 0x7475
+ TIOCSPGRP = 0x80047476
+ TIOCSPTLCK = 0x80045431
+ TIOCSRS485 = 0xc020542f
+ TIOCSSERIAL = 0x5485
+ TIOCSSOFTCAR = 0x5482
+ TIOCSTI = 0x5472
+ TIOCSWINSZ = 0x80087467
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x8000
+ TUNATTACHFILTER = 0x801054d5
+ TUNDETACHFILTER = 0x801054d6
+ TUNGETFEATURES = 0x400454cf
+ TUNGETFILTER = 0x401054db
+ TUNGETIFF = 0x400454d2
+ TUNGETSNDBUF = 0x400454d3
+ TUNGETVNETBE = 0x400454df
+ TUNGETVNETHDRSZ = 0x400454d7
+ TUNGETVNETLE = 0x400454dd
+ TUNSETDEBUG = 0x800454c9
+ TUNSETGROUP = 0x800454ce
+ TUNSETIFF = 0x800454ca
+ TUNSETIFINDEX = 0x800454da
+ TUNSETLINK = 0x800454cd
+ TUNSETNOCSUM = 0x800454c8
+ TUNSETOFFLOAD = 0x800454d0
+ TUNSETOWNER = 0x800454cc
+ TUNSETPERSIST = 0x800454cb
+ TUNSETQUEUE = 0x800454d9
+ TUNSETSNDBUF = 0x800454d4
+ TUNSETTXFILTER = 0x800454d1
+ TUNSETVNETBE = 0x800454de
+ TUNSETVNETHDRSZ = 0x800454d8
+ TUNSETVNETLE = 0x800454dc
+ VDISCARD = 0xd
+ VEOF = 0x10
+ VEOL = 0x11
+ VEOL2 = 0x6
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x4
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VSWTCH = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x7d)
+ EADDRNOTAVAIL = syscall.Errno(0x7e)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x7c)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x95)
+ EBADE = syscall.Errno(0x32)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x51)
+ EBADMSG = syscall.Errno(0x4d)
+ EBADR = syscall.Errno(0x33)
+ EBADRQC = syscall.Errno(0x36)
+ EBADSLT = syscall.Errno(0x37)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x9e)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x25)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x82)
+ ECONNREFUSED = syscall.Errno(0x92)
+ ECONNRESET = syscall.Errno(0x83)
+ EDEADLK = syscall.Errno(0x2d)
+ EDEADLOCK = syscall.Errno(0x38)
+ EDESTADDRREQ = syscall.Errno(0x60)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x46d)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x93)
+ EHOSTUNREACH = syscall.Errno(0x94)
+ EHWPOISON = syscall.Errno(0xa8)
+ EIDRM = syscall.Errno(0x24)
+ EILSEQ = syscall.Errno(0x58)
+ EINIT = syscall.Errno(0x8d)
+ EINPROGRESS = syscall.Errno(0x96)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x85)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x8b)
+ EKEYEXPIRED = syscall.Errno(0xa2)
+ EKEYREJECTED = syscall.Errno(0xa4)
+ EKEYREVOKED = syscall.Errno(0xa3)
+ EL2HLT = syscall.Errno(0x2c)
+ EL2NSYNC = syscall.Errno(0x26)
+ EL3HLT = syscall.Errno(0x27)
+ EL3RST = syscall.Errno(0x28)
+ ELIBACC = syscall.Errno(0x53)
+ ELIBBAD = syscall.Errno(0x54)
+ ELIBEXEC = syscall.Errno(0x57)
+ ELIBMAX = syscall.Errno(0x56)
+ ELIBSCN = syscall.Errno(0x55)
+ ELNRNG = syscall.Errno(0x29)
+ ELOOP = syscall.Errno(0x5a)
+ EMEDIUMTYPE = syscall.Errno(0xa0)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x61)
+ EMULTIHOP = syscall.Errno(0x4a)
+ ENAMETOOLONG = syscall.Errno(0x4e)
+ ENAVAIL = syscall.Errno(0x8a)
+ ENETDOWN = syscall.Errno(0x7f)
+ ENETRESET = syscall.Errno(0x81)
+ ENETUNREACH = syscall.Errno(0x80)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x35)
+ ENOBUFS = syscall.Errno(0x84)
+ ENOCSI = syscall.Errno(0x2b)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0xa1)
+ ENOLCK = syscall.Errno(0x2e)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x9f)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x23)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x63)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x59)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x86)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x5d)
+ ENOTNAM = syscall.Errno(0x89)
+ ENOTRECOVERABLE = syscall.Errno(0xa6)
+ ENOTSOCK = syscall.Errno(0x5f)
+ ENOTSUP = syscall.Errno(0x7a)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x50)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x7a)
+ EOVERFLOW = syscall.Errno(0x4f)
+ EOWNERDEAD = syscall.Errno(0xa5)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x7b)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x78)
+ EPROTOTYPE = syscall.Errno(0x62)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x52)
+ EREMDEV = syscall.Errno(0x8e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x8c)
+ ERESTART = syscall.Errno(0x5b)
+ ERFKILL = syscall.Errno(0xa7)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x8f)
+ ESOCKTNOSUPPORT = syscall.Errno(0x79)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x97)
+ ESTRPIPE = syscall.Errno(0x5c)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x91)
+ ETOOMANYREFS = syscall.Errno(0x90)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x87)
+ EUNATCH = syscall.Errno(0x2a)
+ EUSERS = syscall.Errno(0x5e)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x12)
+ SIGCLD = syscall.Signal(0x12)
+ SIGCONT = syscall.Signal(0x19)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x16)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x16)
+ SIGPROF = syscall.Signal(0x1d)
+ SIGPWR = syscall.Signal(0x13)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x17)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x18)
+ SIGTTIN = syscall.Signal(0x1a)
+ SIGTTOU = syscall.Signal(0x1b)
+ SIGURG = syscall.Signal(0x15)
+ SIGUSR1 = syscall.Signal(0x10)
+ SIGUSR2 = syscall.Signal(0x11)
+ SIGVTALRM = syscall.Signal(0x1c)
+ SIGWINCH = syscall.Signal(0x14)
+ SIGXCPU = syscall.Signal(0x1e)
+ SIGXFSZ = syscall.Signal(0x1f)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "no message of desired type",
+ 36: "identifier removed",
+ 37: "channel number out of range",
+ 38: "level 2 not synchronized",
+ 39: "level 3 halted",
+ 40: "level 3 reset",
+ 41: "link number out of range",
+ 42: "protocol driver not attached",
+ 43: "no CSI structure available",
+ 44: "level 2 halted",
+ 45: "resource deadlock avoided",
+ 46: "no locks available",
+ 50: "invalid exchange",
+ 51: "invalid request descriptor",
+ 52: "exchange full",
+ 53: "no anode",
+ 54: "invalid request code",
+ 55: "invalid slot",
+ 56: "file locking deadlock error",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 73: "RFS specific error",
+ 74: "multihop attempted",
+ 77: "bad message",
+ 78: "file name too long",
+ 79: "value too large for defined data type",
+ 80: "name not unique on network",
+ 81: "file descriptor in bad state",
+ 82: "remote address changed",
+ 83: "can not access a needed shared library",
+ 84: "accessing a corrupted shared library",
+ 85: ".lib section in a.out corrupted",
+ 86: "attempting to link in too many shared libraries",
+ 87: "cannot exec a shared library directly",
+ 88: "invalid or incomplete multibyte or wide character",
+ 89: "function not implemented",
+ 90: "too many levels of symbolic links",
+ 91: "interrupted system call should be restarted",
+ 92: "streams pipe error",
+ 93: "directory not empty",
+ 94: "too many users",
+ 95: "socket operation on non-socket",
+ 96: "destination address required",
+ 97: "message too long",
+ 98: "protocol wrong type for socket",
+ 99: "protocol not available",
+ 120: "protocol not supported",
+ 121: "socket type not supported",
+ 122: "operation not supported",
+ 123: "protocol family not supported",
+ 124: "address family not supported by protocol",
+ 125: "address already in use",
+ 126: "cannot assign requested address",
+ 127: "network is down",
+ 128: "network is unreachable",
+ 129: "network dropped connection on reset",
+ 130: "software caused connection abort",
+ 131: "connection reset by peer",
+ 132: "no buffer space available",
+ 133: "transport endpoint is already connected",
+ 134: "transport endpoint is not connected",
+ 135: "structure needs cleaning",
+ 137: "not a XENIX named type file",
+ 138: "no XENIX semaphores available",
+ 139: "is a named type file",
+ 140: "remote I/O error",
+ 141: "unknown error 141",
+ 142: "unknown error 142",
+ 143: "cannot send after transport endpoint shutdown",
+ 144: "too many references: cannot splice",
+ 145: "connection timed out",
+ 146: "connection refused",
+ 147: "host is down",
+ 148: "no route to host",
+ 149: "operation already in progress",
+ 150: "operation now in progress",
+ 151: "stale file handle",
+ 158: "operation canceled",
+ 159: "no medium found",
+ 160: "wrong medium type",
+ 161: "required key not available",
+ 162: "key has expired",
+ 163: "key has been revoked",
+ 164: "key was rejected by service",
+ 165: "owner died",
+ 166: "state not recoverable",
+ 167: "operation not possible due to RF-kill",
+ 168: "memory page has hardware error",
+ 1133: "disk quota exceeded",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "user defined signal 1",
+ 17: "user defined signal 2",
+ 18: "child exited",
+ 19: "power failure",
+ 20: "window changed",
+ 21: "urgent I/O condition",
+ 22: "I/O possible",
+ 23: "stopped (signal)",
+ 24: "stopped",
+ 25: "continued",
+ 26: "stopped (tty input)",
+ 27: "stopped (tty output)",
+ 28: "virtual timer expired",
+ 29: "profiling timer expired",
+ 30: "CPU time limit exceeded",
+ 31: "file size limit exceeded",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64le.go
new file mode 100644
index 000000000..112f05de5
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_mips64le.go
@@ -0,0 +1,1917 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IB = 0x1b
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_MPLS = 0x1c
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_6LOWPAN = 0x339
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LL_OFF = -0x200000
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_NET_OFF = -0x100000
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_TAI = 0xb
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CREAD = 0x80
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_80221 = 0x8917
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_LOOPBACK = 0x9000
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_TSN = 0x22f0
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ ETH_P_XDSA = 0xf8
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x2000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0xe
+ F_GETLK64 = 0xe
+ F_GETOWN = 0x17
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OFD_GETLK = 0x24
+ F_OFD_SETLK = 0x25
+ F_OFD_SETLKW = 0x26
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETOWN = 0x18
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x100
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_MANAGETEMPADDR = 0x100
+ IFA_F_MCAUTOJOIN = 0x400
+ IFA_F_NODAD = 0x2
+ IFA_F_NOPREFIXROUTE = 0x200
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_STABLE_PRIVACY = 0x800
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x8
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_ECHO = 0x40000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MASTER = 0x400
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x80
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PATHMTU = 0x3d
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_INTERFACE = 0x4
+ IPV6_PMTUDISC_OMIT = 0x5
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPATHMTU = 0x3c
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_CHECKSUM = 0x17
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_NODEFRAG = 0x16
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_INTERFACE = 0x4
+ IP_PMTUDISC_OMIT = 0x5
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x800
+ MAP_ANONYMOUS = 0x800
+ MAP_DENYWRITE = 0x2000
+ MAP_EXECUTABLE = 0x4000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x1000
+ MAP_HUGETLB = 0x80000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x8000
+ MAP_NONBLOCK = 0x20000
+ MAP_NORESERVE = 0x400
+ MAP_POPULATE = 0x10000
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x800
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x40000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_LAZYTIME = 0x2000000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x2800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CAP_ACK = 0xa
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_LISTEN_ALL_NSID = 0x8
+ NETLINK_LIST_MEMBERSHIPS = 0x9
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x1000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x100
+ O_DIRECT = 0x8000
+ O_DIRECTORY = 0x10000
+ O_DSYNC = 0x10
+ O_EXCL = 0x400
+ O_FSYNC = 0x4010
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x80
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x800
+ O_NOFOLLOW = 0x20000
+ O_NONBLOCK = 0x80
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x4010
+ O_SYNC = 0x4010
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CBPF = 0x6
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_DATA = 0x16
+ PACKET_FANOUT_EBPF = 0x7
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_QM = 0x5
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_KERNEL = 0x7
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_QDISC_BYPASS = 0x14
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_ROLLOVER_STATS = 0x15
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_USER = 0x6
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_CAP_AMBIENT = 0x2f
+ PR_CAP_AMBIENT_CLEAR_ALL = 0x4
+ PR_CAP_AMBIENT_IS_SET = 0x1
+ PR_CAP_AMBIENT_LOWER = 0x3
+ PR_CAP_AMBIENT_RAISE = 0x2
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_FP_MODE_FR = 0x1
+ PR_FP_MODE_FRE = 0x2
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_FP_MODE = 0x2e
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_THP_DISABLE = 0x2a
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_MPX_DISABLE_MANAGEMENT = 0x2c
+ PR_MPX_ENABLE_MANAGEMENT = 0x2b
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_FP_MODE = 0x2d
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_MAP = 0xe
+ PR_SET_MM_MAP_SIZE = 0xf
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_THP_DISABLE = 0x29
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_GET_THREAD_AREA = 0x19
+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
+ PTRACE_GET_WATCH_REGS = 0xd0
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x3000ff
+ PTRACE_O_SUSPEND_SECCOMP = 0x200000
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKDATA_3264 = 0xc1
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKTEXT_3264 = 0xc0
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKEDATA_3264 = 0xc3
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKETEXT_3264 = 0xc2
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SET_THREAD_AREA = 0x1a
+ PTRACE_SET_WATCH_REGS = 0xd1
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ RLIMIT_AS = 0x6
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x5
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CC_ALGO = 0x10
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_MASK = 0xf
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0x10
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x16
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELNSID = 0x59
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETNSID = 0x5a
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x5b
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWNSID = 0x58
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x13
+ RTM_NR_MSGTYPES = 0x4c
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_COMPARE_MASK = 0x11
+ RTNH_F_DEAD = 0x1
+ RTNH_F_LINKDOWN = 0x10
+ RTNH_F_OFFLOAD = 0x8
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BABEL = 0x2a
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x40047307
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x40047309
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x80047308
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x1
+ SOCK_NONBLOCK = 0x80
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x2
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0xffff
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1009
+ SO_ATTACH_BPF = 0x32
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BPF_EXTENSIONS = 0x30
+ SO_BROADCAST = 0x20
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_BPF = 0x1b
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x1029
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_GET_FILTER = 0x1a
+ SO_INCOMING_CPU = 0x31
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0x100
+ SO_PASSCRED = 0x11
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x12
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1e
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x1028
+ SO_RCVBUF = 0x1002
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x1001
+ SO_SNDBUFFORCE = 0x1f
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_STYLE = 0x1008
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x1008
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCFLSH = 0x5407
+ TCIFLUSH = 0x0
+ TCIOFLUSH = 0x2
+ TCOFLUSH = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x5410
+ TCSBRK = 0x5405
+ TCXONC = 0x5406
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x80047478
+ TIOCEXCL = 0x740d
+ TIOCGDEV = 0x40045432
+ TIOCGETD = 0x7400
+ TIOCGETP = 0x7408
+ TIOCGEXCL = 0x40045440
+ TIOCGICOUNT = 0x5492
+ TIOCGLCKTRMIOS = 0x548b
+ TIOCGLTC = 0x7474
+ TIOCGPGRP = 0x40047477
+ TIOCGPKT = 0x40045438
+ TIOCGPTLCK = 0x40045439
+ TIOCGPTN = 0x40045430
+ TIOCGRS485 = 0x4020542e
+ TIOCGSERIAL = 0x5484
+ TIOCGSID = 0x7416
+ TIOCGSOFTCAR = 0x5481
+ TIOCGWINSZ = 0x40087468
+ TIOCINQ = 0x467f
+ TIOCLINUX = 0x5483
+ TIOCMBIC = 0x741c
+ TIOCMBIS = 0x741b
+ TIOCMGET = 0x741d
+ TIOCMIWAIT = 0x5491
+ TIOCMSET = 0x741a
+ TIOCM_CAR = 0x100
+ TIOCM_CD = 0x100
+ TIOCM_CTS = 0x40
+ TIOCM_DSR = 0x400
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x200
+ TIOCM_RNG = 0x200
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x20
+ TIOCM_ST = 0x10
+ TIOCNOTTY = 0x5471
+ TIOCNXCL = 0x740e
+ TIOCOUTQ = 0x7472
+ TIOCPKT = 0x5470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x5480
+ TIOCSERCONFIG = 0x5488
+ TIOCSERGETLSR = 0x548e
+ TIOCSERGETMULTI = 0x548f
+ TIOCSERGSTRUCT = 0x548d
+ TIOCSERGWILD = 0x5489
+ TIOCSERSETMULTI = 0x5490
+ TIOCSERSWILD = 0x548a
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x7401
+ TIOCSETN = 0x740a
+ TIOCSETP = 0x7409
+ TIOCSIG = 0x80045436
+ TIOCSLCKTRMIOS = 0x548c
+ TIOCSLTC = 0x7475
+ TIOCSPGRP = 0x80047476
+ TIOCSPTLCK = 0x80045431
+ TIOCSRS485 = 0xc020542f
+ TIOCSSERIAL = 0x5485
+ TIOCSSOFTCAR = 0x5482
+ TIOCSTI = 0x5472
+ TIOCSWINSZ = 0x80087467
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x8000
+ TUNATTACHFILTER = 0x801054d5
+ TUNDETACHFILTER = 0x801054d6
+ TUNGETFEATURES = 0x400454cf
+ TUNGETFILTER = 0x401054db
+ TUNGETIFF = 0x400454d2
+ TUNGETSNDBUF = 0x400454d3
+ TUNGETVNETBE = 0x400454df
+ TUNGETVNETHDRSZ = 0x400454d7
+ TUNGETVNETLE = 0x400454dd
+ TUNSETDEBUG = 0x800454c9
+ TUNSETGROUP = 0x800454ce
+ TUNSETIFF = 0x800454ca
+ TUNSETIFINDEX = 0x800454da
+ TUNSETLINK = 0x800454cd
+ TUNSETNOCSUM = 0x800454c8
+ TUNSETOFFLOAD = 0x800454d0
+ TUNSETOWNER = 0x800454cc
+ TUNSETPERSIST = 0x800454cb
+ TUNSETQUEUE = 0x800454d9
+ TUNSETSNDBUF = 0x800454d4
+ TUNSETTXFILTER = 0x800454d1
+ TUNSETVNETBE = 0x800454de
+ TUNSETVNETHDRSZ = 0x800454d8
+ TUNSETVNETLE = 0x800454dc
+ VDISCARD = 0xd
+ VEOF = 0x10
+ VEOL = 0x11
+ VEOL2 = 0x6
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x4
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VSWTCH = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x7d)
+ EADDRNOTAVAIL = syscall.Errno(0x7e)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x7c)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x95)
+ EBADE = syscall.Errno(0x32)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x51)
+ EBADMSG = syscall.Errno(0x4d)
+ EBADR = syscall.Errno(0x33)
+ EBADRQC = syscall.Errno(0x36)
+ EBADSLT = syscall.Errno(0x37)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x9e)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x25)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x82)
+ ECONNREFUSED = syscall.Errno(0x92)
+ ECONNRESET = syscall.Errno(0x83)
+ EDEADLK = syscall.Errno(0x2d)
+ EDEADLOCK = syscall.Errno(0x38)
+ EDESTADDRREQ = syscall.Errno(0x60)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x46d)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x93)
+ EHOSTUNREACH = syscall.Errno(0x94)
+ EHWPOISON = syscall.Errno(0xa8)
+ EIDRM = syscall.Errno(0x24)
+ EILSEQ = syscall.Errno(0x58)
+ EINIT = syscall.Errno(0x8d)
+ EINPROGRESS = syscall.Errno(0x96)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x85)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x8b)
+ EKEYEXPIRED = syscall.Errno(0xa2)
+ EKEYREJECTED = syscall.Errno(0xa4)
+ EKEYREVOKED = syscall.Errno(0xa3)
+ EL2HLT = syscall.Errno(0x2c)
+ EL2NSYNC = syscall.Errno(0x26)
+ EL3HLT = syscall.Errno(0x27)
+ EL3RST = syscall.Errno(0x28)
+ ELIBACC = syscall.Errno(0x53)
+ ELIBBAD = syscall.Errno(0x54)
+ ELIBEXEC = syscall.Errno(0x57)
+ ELIBMAX = syscall.Errno(0x56)
+ ELIBSCN = syscall.Errno(0x55)
+ ELNRNG = syscall.Errno(0x29)
+ ELOOP = syscall.Errno(0x5a)
+ EMEDIUMTYPE = syscall.Errno(0xa0)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x61)
+ EMULTIHOP = syscall.Errno(0x4a)
+ ENAMETOOLONG = syscall.Errno(0x4e)
+ ENAVAIL = syscall.Errno(0x8a)
+ ENETDOWN = syscall.Errno(0x7f)
+ ENETRESET = syscall.Errno(0x81)
+ ENETUNREACH = syscall.Errno(0x80)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x35)
+ ENOBUFS = syscall.Errno(0x84)
+ ENOCSI = syscall.Errno(0x2b)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0xa1)
+ ENOLCK = syscall.Errno(0x2e)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x9f)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x23)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x63)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x59)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x86)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x5d)
+ ENOTNAM = syscall.Errno(0x89)
+ ENOTRECOVERABLE = syscall.Errno(0xa6)
+ ENOTSOCK = syscall.Errno(0x5f)
+ ENOTSUP = syscall.Errno(0x7a)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x50)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x7a)
+ EOVERFLOW = syscall.Errno(0x4f)
+ EOWNERDEAD = syscall.Errno(0xa5)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x7b)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x78)
+ EPROTOTYPE = syscall.Errno(0x62)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x52)
+ EREMDEV = syscall.Errno(0x8e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x8c)
+ ERESTART = syscall.Errno(0x5b)
+ ERFKILL = syscall.Errno(0xa7)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x8f)
+ ESOCKTNOSUPPORT = syscall.Errno(0x79)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x97)
+ ESTRPIPE = syscall.Errno(0x5c)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x91)
+ ETOOMANYREFS = syscall.Errno(0x90)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x87)
+ EUNATCH = syscall.Errno(0x2a)
+ EUSERS = syscall.Errno(0x5e)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x12)
+ SIGCLD = syscall.Signal(0x12)
+ SIGCONT = syscall.Signal(0x19)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x16)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x16)
+ SIGPROF = syscall.Signal(0x1d)
+ SIGPWR = syscall.Signal(0x13)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x17)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x18)
+ SIGTTIN = syscall.Signal(0x1a)
+ SIGTTOU = syscall.Signal(0x1b)
+ SIGURG = syscall.Signal(0x15)
+ SIGUSR1 = syscall.Signal(0x10)
+ SIGUSR2 = syscall.Signal(0x11)
+ SIGVTALRM = syscall.Signal(0x1c)
+ SIGWINCH = syscall.Signal(0x14)
+ SIGXCPU = syscall.Signal(0x1e)
+ SIGXFSZ = syscall.Signal(0x1f)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "no message of desired type",
+ 36: "identifier removed",
+ 37: "channel number out of range",
+ 38: "level 2 not synchronized",
+ 39: "level 3 halted",
+ 40: "level 3 reset",
+ 41: "link number out of range",
+ 42: "protocol driver not attached",
+ 43: "no CSI structure available",
+ 44: "level 2 halted",
+ 45: "resource deadlock avoided",
+ 46: "no locks available",
+ 50: "invalid exchange",
+ 51: "invalid request descriptor",
+ 52: "exchange full",
+ 53: "no anode",
+ 54: "invalid request code",
+ 55: "invalid slot",
+ 56: "file locking deadlock error",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 73: "RFS specific error",
+ 74: "multihop attempted",
+ 77: "bad message",
+ 78: "file name too long",
+ 79: "value too large for defined data type",
+ 80: "name not unique on network",
+ 81: "file descriptor in bad state",
+ 82: "remote address changed",
+ 83: "can not access a needed shared library",
+ 84: "accessing a corrupted shared library",
+ 85: ".lib section in a.out corrupted",
+ 86: "attempting to link in too many shared libraries",
+ 87: "cannot exec a shared library directly",
+ 88: "invalid or incomplete multibyte or wide character",
+ 89: "function not implemented",
+ 90: "too many levels of symbolic links",
+ 91: "interrupted system call should be restarted",
+ 92: "streams pipe error",
+ 93: "directory not empty",
+ 94: "too many users",
+ 95: "socket operation on non-socket",
+ 96: "destination address required",
+ 97: "message too long",
+ 98: "protocol wrong type for socket",
+ 99: "protocol not available",
+ 120: "protocol not supported",
+ 121: "socket type not supported",
+ 122: "operation not supported",
+ 123: "protocol family not supported",
+ 124: "address family not supported by protocol",
+ 125: "address already in use",
+ 126: "cannot assign requested address",
+ 127: "network is down",
+ 128: "network is unreachable",
+ 129: "network dropped connection on reset",
+ 130: "software caused connection abort",
+ 131: "connection reset by peer",
+ 132: "no buffer space available",
+ 133: "transport endpoint is already connected",
+ 134: "transport endpoint is not connected",
+ 135: "structure needs cleaning",
+ 137: "not a XENIX named type file",
+ 138: "no XENIX semaphores available",
+ 139: "is a named type file",
+ 140: "remote I/O error",
+ 141: "unknown error 141",
+ 142: "unknown error 142",
+ 143: "cannot send after transport endpoint shutdown",
+ 144: "too many references: cannot splice",
+ 145: "connection timed out",
+ 146: "connection refused",
+ 147: "host is down",
+ 148: "no route to host",
+ 149: "operation already in progress",
+ 150: "operation now in progress",
+ 151: "stale file handle",
+ 158: "operation canceled",
+ 159: "no medium found",
+ 160: "wrong medium type",
+ 161: "required key not available",
+ 162: "key has expired",
+ 163: "key has been revoked",
+ 164: "key was rejected by service",
+ 165: "owner died",
+ 166: "state not recoverable",
+ 167: "operation not possible due to RF-kill",
+ 168: "memory page has hardware error",
+ 1133: "disk quota exceeded",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "user defined signal 1",
+ 17: "user defined signal 2",
+ 18: "child exited",
+ 19: "power failure",
+ 20: "window changed",
+ 21: "urgent I/O condition",
+ 22: "I/O possible",
+ 23: "stopped (signal)",
+ 24: "stopped",
+ 25: "continued",
+ 26: "stopped (tty input)",
+ 27: "stopped (tty output)",
+ 28: "virtual timer expired",
+ 29: "profiling timer expired",
+ 30: "CPU time limit exceeded",
+ 31: "file size limit exceeded",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go
index 5b90d07ed..8b42ca2fe 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go
@@ -223,6 +223,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
index 0861bd566..e8d12b5d6 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
@@ -222,6 +222,7 @@ const (
CLONE_FILES = 0x400
CLONE_FS = 0x200
CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
CLONE_NEWIPC = 0x8000000
CLONE_NEWNET = 0x40000000
CLONE_NEWNS = 0x20000
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_s390x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_s390x.go
new file mode 100644
index 000000000..329f25e7c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_s390x.go
@@ -0,0 +1,2027 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build s390x,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IB = 0x1b
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_MPLS = 0x1c
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_6LOWPAN = 0x339
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BOTHER = 0x1000
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LL_OFF = -0x200000
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_NET_OFF = -0x100000
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x2000
+ BSDLY = 0x2000
+ CBAUD = 0x100f
+ CBAUDEX = 0x1000
+ CFLUSH = 0xf
+ CIBAUD = 0x100f0000
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_TAI = 0xb
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWCGROUP = 0x2000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x200
+ CR2 = 0x400
+ CR3 = 0x600
+ CRDLY = 0x600
+ CREAD = 0x80
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_80221 = 0x8917
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_LOOPBACK = 0x9000
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_TSN = 0x22f0
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ ETH_P_XDSA = 0xf8
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x8000
+ FFDLY = 0x8000
+ FLUSHO = 0x1000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0x5
+ F_GETLK64 = 0x5
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OFD_GETLK = 0x24
+ F_OFD_SETLK = 0x25
+ F_OFD_SETLKW = 0x26
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ IBSHIFT = 0x10
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_MANAGETEMPADDR = 0x100
+ IFA_F_MCAUTOJOIN = 0x400
+ IFA_F_NODAD = 0x2
+ IFA_F_NOPREFIXROUTE = 0x200
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_STABLE_PRIVACY = 0x800
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x8
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_ECHO = 0x40000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MASTER = 0x400
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MPLS = 0x89
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PATHMTU = 0x3d
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_INTERFACE = 0x4
+ IPV6_PMTUDISC_OMIT = 0x5
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPATHMTU = 0x3c
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BIND_ADDRESS_NO_PORT = 0x18
+ IP_BLOCK_SOURCE = 0x26
+ IP_CHECKSUM = 0x17
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_NODEFRAG = 0x16
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_INTERFACE = 0x4
+ IP_PMTUDISC_OMIT = 0x5
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUCLC = 0x200
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x2000
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x4000
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MCL_ONFAULT = 0x4
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_LAZYTIME = 0x2000000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x2800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CAP_ACK = 0xa
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_LISTEN_ALL_NSID = 0x8
+ NETLINK_LIST_MEMBERSHIPS = 0x9
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x100
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_FILTERED = 0x20
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x2
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x4000
+ O_DIRECTORY = 0x10000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x20000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CBPF = 0x6
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_DATA = 0x16
+ PACKET_FANOUT_EBPF = 0x7
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_QM = 0x5
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_KERNEL = 0x7
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_QDISC_BYPASS = 0x14
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_ROLLOVER_STATS = 0x15
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_USER = 0x6
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_CAP_AMBIENT = 0x2f
+ PR_CAP_AMBIENT_CLEAR_ALL = 0x4
+ PR_CAP_AMBIENT_IS_SET = 0x1
+ PR_CAP_AMBIENT_LOWER = 0x3
+ PR_CAP_AMBIENT_RAISE = 0x2
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_FP_MODE_FR = 0x1
+ PR_FP_MODE_FRE = 0x2
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_FP_MODE = 0x2e
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_THP_DISABLE = 0x2a
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_MPX_DISABLE_MANAGEMENT = 0x2c
+ PR_MPX_ENABLE_MANAGEMENT = 0x2b
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_FP_MODE = 0x2d
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_MAP = 0xe
+ PR_SET_MM_MAP_SIZE = 0xf
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_THP_DISABLE = 0x29
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_DISABLE_TE = 0x5010
+ PTRACE_ENABLE_TE = 0x5009
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_GET_LAST_BREAK = 0x5006
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x3000ff
+ PTRACE_O_SUSPEND_SECCOMP = 0x200000
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKDATA_AREA = 0x5003
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKTEXT_AREA = 0x5002
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_PEEKUSR_AREA = 0x5000
+ PTRACE_PEEK_SYSTEM_CALL = 0x5007
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKEDATA_AREA = 0x5005
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKETEXT_AREA = 0x5004
+ PTRACE_POKEUSR = 0x6
+ PTRACE_POKEUSR_AREA = 0x5001
+ PTRACE_POKE_SYSTEM_CALL = 0x5008
+ PTRACE_PROT = 0x15
+ PTRACE_SECCOMP_GET_FILTER = 0x420c
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SINGLEBLOCK = 0xc
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TE_ABORT_RAND = 0x5011
+ PTRACE_TRACEME = 0x0
+ PT_ACR0 = 0x90
+ PT_ACR1 = 0x94
+ PT_ACR10 = 0xb8
+ PT_ACR11 = 0xbc
+ PT_ACR12 = 0xc0
+ PT_ACR13 = 0xc4
+ PT_ACR14 = 0xc8
+ PT_ACR15 = 0xcc
+ PT_ACR2 = 0x98
+ PT_ACR3 = 0x9c
+ PT_ACR4 = 0xa0
+ PT_ACR5 = 0xa4
+ PT_ACR6 = 0xa8
+ PT_ACR7 = 0xac
+ PT_ACR8 = 0xb0
+ PT_ACR9 = 0xb4
+ PT_CR_10 = 0x168
+ PT_CR_11 = 0x170
+ PT_CR_9 = 0x160
+ PT_ENDREGS = 0x1af
+ PT_FPC = 0xd8
+ PT_FPR0 = 0xe0
+ PT_FPR1 = 0xe8
+ PT_FPR10 = 0x130
+ PT_FPR11 = 0x138
+ PT_FPR12 = 0x140
+ PT_FPR13 = 0x148
+ PT_FPR14 = 0x150
+ PT_FPR15 = 0x158
+ PT_FPR2 = 0xf0
+ PT_FPR3 = 0xf8
+ PT_FPR4 = 0x100
+ PT_FPR5 = 0x108
+ PT_FPR6 = 0x110
+ PT_FPR7 = 0x118
+ PT_FPR8 = 0x120
+ PT_FPR9 = 0x128
+ PT_GPR0 = 0x10
+ PT_GPR1 = 0x18
+ PT_GPR10 = 0x60
+ PT_GPR11 = 0x68
+ PT_GPR12 = 0x70
+ PT_GPR13 = 0x78
+ PT_GPR14 = 0x80
+ PT_GPR15 = 0x88
+ PT_GPR2 = 0x20
+ PT_GPR3 = 0x28
+ PT_GPR4 = 0x30
+ PT_GPR5 = 0x38
+ PT_GPR6 = 0x40
+ PT_GPR7 = 0x48
+ PT_GPR8 = 0x50
+ PT_GPR9 = 0x58
+ PT_IEEE_IP = 0x1a8
+ PT_LASTOFF = 0x1a8
+ PT_ORIGGPR2 = 0xd0
+ PT_PSWADDR = 0x8
+ PT_PSWMASK = 0x0
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CC_ALGO = 0x10
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_MASK = 0xf
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0x10
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x16
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELNSID = 0x59
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_LOOKUP_TABLE = 0x1000
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETNSID = 0x5a
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x5b
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWNSID = 0x58
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x13
+ RTM_NR_MSGTYPES = 0x4c
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_COMPARE_MASK = 0x11
+ RTNH_F_DEAD = 0x1
+ RTNH_F_LINKDOWN = 0x10
+ RTNH_F_OFFLOAD = 0x8
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BABEL = 0x2a
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_BPF = 0x32
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BPF_EXTENSIONS = 0x30
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_BPF = 0x1b
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_GET_FILTER = 0x1a
+ SO_INCOMING_CPU = 0x31
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x10
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x11
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_REUSEPORT = 0xf
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x800
+ TAB2 = 0x1000
+ TAB3 = 0x1800
+ TABDLY = 0x1800
+ TCFLSH = 0x540b
+ TCGETA = 0x5405
+ TCGETS = 0x5401
+ TCGETS2 = 0x802c542a
+ TCGETX = 0x5432
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CC_INFO = 0x1a
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_NOTSENT_LOWAT = 0x19
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SAVED_SYN = 0x1c
+ TCP_SAVE_SYN = 0x1b
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x5409
+ TCSBRKP = 0x5425
+ TCSETA = 0x5406
+ TCSETAF = 0x5408
+ TCSETAW = 0x5407
+ TCSETS = 0x5402
+ TCSETS2 = 0x402c542b
+ TCSETSF = 0x5404
+ TCSETSF2 = 0x402c542d
+ TCSETSW = 0x5403
+ TCSETSW2 = 0x402c542c
+ TCSETX = 0x5433
+ TCSETXF = 0x5434
+ TCSETXW = 0x5435
+ TCXONC = 0x540a
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x80045432
+ TIOCGETD = 0x5424
+ TIOCGEXCL = 0x80045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGPGRP = 0x540f
+ TIOCGPKT = 0x80045438
+ TIOCGPTLCK = 0x80045439
+ TIOCGPTN = 0x80045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x5413
+ TIOCINQ = 0x541b
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x5411
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x5423
+ TIOCSIG = 0x40045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSPGRP = 0x5410
+ TIOCSPTLCK = 0x40045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTI = 0x5412
+ TIOCSWINSZ = 0x5414
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x100
+ TUNATTACHFILTER = 0x401054d5
+ TUNDETACHFILTER = 0x401054d6
+ TUNGETFEATURES = 0x800454cf
+ TUNGETFILTER = 0x801054db
+ TUNGETIFF = 0x800454d2
+ TUNGETSNDBUF = 0x800454d3
+ TUNGETVNETBE = 0x800454df
+ TUNGETVNETHDRSZ = 0x800454d7
+ TUNGETVNETLE = 0x800454dd
+ TUNSETDEBUG = 0x400454c9
+ TUNSETGROUP = 0x400454ce
+ TUNSETIFF = 0x400454ca
+ TUNSETIFINDEX = 0x400454da
+ TUNSETLINK = 0x400454cd
+ TUNSETNOCSUM = 0x400454c8
+ TUNSETOFFLOAD = 0x400454d0
+ TUNSETOWNER = 0x400454cc
+ TUNSETPERSIST = 0x400454cb
+ TUNSETQUEUE = 0x400454d9
+ TUNSETSNDBUF = 0x400454d4
+ TUNSETTXFILTER = 0x400454d1
+ TUNSETVNETBE = 0x400454de
+ TUNSETVNETHDRSZ = 0x400454d8
+ TUNSETVNETLE = 0x400454dc
+ VDISCARD = 0xd
+ VEOF = 0x4
+ VEOL = 0xb
+ VEOL2 = 0x10
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x6
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4
+ XTABS = 0x1800
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x23)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go
index a15aaf120..031034a34 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
index 74606b2f4..ee96f78ba 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go
index 640e85426..e52cd0d54 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
index 933f67bbf..9863ef99e 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
index 3fa6ff796..78de48dcf 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go
index 1a0e528cd..fade994dc 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
index 6e4cf1455..c28281e83 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
index 1872d3230..a18ba5c88 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go
index ff6c39dc2..1f7a75669 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1588,6 +1566,33 @@ func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func getrlimit(resource int, rlim *rlimit32) (err error) {
_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
if e1 != 0 {
@@ -1626,3 +1631,30 @@ func Time(t *Time_t) (tt Time_t, err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go
index c2438522d..b4e24fc0a 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1232,6 +1210,23 @@ func Dup2(oldfd int, newfd int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
if e1 != 0 {
@@ -1397,6 +1392,16 @@ func Lstat(path string, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Pread(fd int, p []byte, offset int64) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1803,6 +1808,22 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func pipe(p *[2]_C_int) (err error) {
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
if e1 != 0 {
@@ -1820,3 +1841,14 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go
index dd66c9758..20bf33ce5 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1655,9 +1633,25 @@ func Gettimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Time(t *Time_t) (tt Time_t, err error) {
- r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
- tt = Time_t(r0)
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1738,7 +1732,7 @@ func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func getrlimit(resource int, rlim *rlimit32) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1754,3 +1748,14 @@ func setrlimit(resource int, rlim *rlimit32) (err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go
index d0a6ed829..c7286db48 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1222,6 +1200,23 @@ func Munlockall() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Fchown(fd int, uid int, gid int) (err error) {
_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
if e1 != 0 {
@@ -1730,17 +1725,6 @@ func Gettimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Time(t *Time_t) (tt Time_t, err error) {
- r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
- tt = Time_t(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func pipe2(p *[2]_C_int, flags int) (err error) {
_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
if e1 != 0 {
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64.go
new file mode 100644
index 000000000..b709ed2f5
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64.go
@@ -0,0 +1,1803 @@
+// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fstat(fd int, st *stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func lstat(path string, st *stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, st *stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
new file mode 100644
index 000000000..5cb1c5671
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
@@ -0,0 +1,1803 @@
+// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64le,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fstat(fd int, st *stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func lstat(path string, st *stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, st *stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
index f58a3ff2f..873bb18f7 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1222,6 +1200,33 @@ func Munlockall() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Fchown(fd int, uid int, gid int) (err error) {
_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
if e1 != 0 {
@@ -1304,6 +1309,17 @@ func Getuid() (uid int) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Ioperm(from int, num int, on int) (err error) {
_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
if e1 != 0 {
@@ -1366,6 +1382,16 @@ func Lstat(path string, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Pread(fd int, p []byte, offset int64) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1790,3 +1816,50 @@ func Time(t *Time_t) (tt Time_t, err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
index 22fc7a457..bf08835c5 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
@@ -14,7 +14,7 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(oldpath)
if err != nil {
@@ -53,6 +53,17 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
@@ -370,23 +381,6 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(events) > 0 {
- _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func Exit(code int) {
Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
return
@@ -746,16 +740,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func PivotRoot(newroot string, putold string) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(newroot)
@@ -922,6 +906,16 @@ func Settimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Setpriority(which int, who int, prio int) (err error) {
_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
@@ -1063,22 +1057,6 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- use(unsafe.Pointer(_p0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1222,6 +1200,33 @@ func Munlockall() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Fchown(fd int, uid int, gid int) (err error) {
_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
if e1 != 0 {
@@ -1304,6 +1309,17 @@ func Getuid() (uid int) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Ioperm(from int, num int, on int) (err error) {
_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
if e1 != 0 {
@@ -1366,6 +1382,16 @@ func Lstat(path string, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
func Pread(fd int, p []byte, offset int64) (n int, err error) {
var _p0 unsafe.Pointer
if len(p) > 0 {
@@ -1790,3 +1816,50 @@ func Time(t *Time_t) (tt Time_t, err error) {
}
return
}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_s390x.go
index 32e46af60..dbaa53b98 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_s390x.go
@@ -1,7 +1,7 @@
-// mksyscall.pl -l32 -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_386.go
+// mksyscall.pl syscall_linux.go syscall_linux_s390x.go
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-// +build 386,dragonfly
+// +build s390x,linux
package unix
@@ -14,9 +14,20 @@ var _ syscall.Errno
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
+func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -25,8 +36,15 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func setgroups(ngid int, gid *_Gid_t) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -35,9 +53,9 @@ func setgroups(ngid int, gid *_Gid_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -46,9 +64,21 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -57,8 +87,20 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -67,8 +109,14 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -77,9 +125,14 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func socket(domain int, typ int, proto int) (fd int, err error) {
- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -88,8 +141,14 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -98,8 +157,8 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -108,8 +167,15 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -118,8 +184,9 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -128,8 +195,8 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Shutdown(s int, how int) (err error) {
- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -138,8 +205,14 @@ func Shutdown(s int, how int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -148,15 +221,26 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
}
- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -165,14 +249,14 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
}
- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -181,9 +265,9 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -192,9 +276,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -203,9 +292,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -214,14 +308,8 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
- var _p0 unsafe.Pointer
- if len(mib) > 0 {
- _p0 = unsafe.Pointer(&mib[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -230,14 +318,8 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- use(unsafe.Pointer(_p0))
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -246,8 +328,9 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func futimes(fd int, timeval *[2]Timeval) (err error) {
- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -256,9 +339,8 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
- val = int(r0)
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -267,10 +349,9 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func pipe() (r int, w int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
- r = int(r0)
- w = int(r1)
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -279,15 +360,9 @@ func pipe() (r int, w int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
- n = int(r0)
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -296,15 +371,8 @@ func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
- n = int(r0)
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -313,13 +381,20 @@ func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Access(path string, mode uint32) (err error) {
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -329,8 +404,8 @@ func Access(path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -339,14 +414,8 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- use(unsafe.Pointer(_p0))
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -355,14 +424,8 @@ func Chdir(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Chflags(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- use(unsafe.Pointer(_p0))
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -371,13 +434,13 @@ func Chflags(path string, flags int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Chmod(path string, mode uint32) (err error) {
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -387,13 +450,13 @@ func Chmod(path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Chown(path string, uid int, gid int) (err error) {
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -403,14 +466,9 @@ func Chown(path string, uid int, gid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Chroot(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
- use(unsafe.Pointer(_p0))
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -419,8 +477,8 @@ func Chroot(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Close(fd int) (err error) {
- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -429,9 +487,8 @@ func Close(fd int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Dup(fd int) (nfd int, err error) {
- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
- nfd = int(r0)
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -440,8 +497,8 @@ func Dup(fd int) (nfd int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Dup2(from int, to int) (err error) {
- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -450,15 +507,26 @@ func Dup2(from int, to int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -467,28 +535,25 @@ func Fchdir(fd int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fchflags(fd int, flags int) (err error) {
- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fchmod(fd int, mode uint32) (err error) {
- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -497,8 +562,8 @@ func Fchown(fd int, uid int, gid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -507,9 +572,35 @@ func Flock(fd int, how int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fpathconf(fd int, name int) (val int, err error) {
- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
- val = int(r0)
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -518,8 +609,15 @@ func Fpathconf(fd int, name int) (val int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -528,8 +626,9 @@ func Fstat(fd int, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -538,8 +637,9 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -548,8 +648,8 @@ func Fsync(fd int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -558,14 +658,14 @@ func Ftruncate(fd int, length int64) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+func Klogctl(typ int, buf []byte) (n int, err error) {
var _p0 unsafe.Pointer
if len(buf) > 0 {
_p0 = unsafe.Pointer(&buf[0])
} else {
_p0 = unsafe.Pointer(&_zero)
}
- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -575,41 +675,63 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Geteuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
- uid = int(r0)
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getgid() (gid int) {
- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getpgid(pid int) (pgid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
- pgid = int(r0)
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -618,33 +740,57 @@ func Getpgid(pid int) (pgid int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getpgrp() (pgrp int) {
- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
- pgrp = int(r0)
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getpid() (pid int) {
- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
- pid = int(r0)
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getppid() (ppid int) {
- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
- ppid = int(r0)
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getpriority(which int, who int) (prio int, err error) {
- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
- prio = int(r0)
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -653,8 +799,20 @@ func Getpriority(which int, who int) (prio int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -663,8 +821,20 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -673,9 +843,14 @@ func Getrusage(who int, rusage *Rusage) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getsid(pid int) (sid int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
- sid = int(r0)
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -684,8 +859,14 @@ func Getsid(pid int) (sid int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -694,24 +875,29 @@ func Gettimeofday(tv *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Getuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Issetugid() (tainted bool) {
- r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
- tainted = bool(r0 != 0)
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Kill(pid int, signum syscall.Signal) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -720,9 +906,8 @@ func Kill(pid int, signum syscall.Signal) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Kqueue() (fd int, err error) {
- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- fd = int(r0)
+func Setns(fd int, nstype int) (err error) {
+ _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -731,14 +916,8 @@ func Kqueue() (fd int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- use(unsafe.Pointer(_p0))
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -747,18 +926,24 @@ func Lchown(path string, uid int, gid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Link(path string, link string) (err error) {
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
- _p1, err = BytePtrFromString(link)
+ _p1, err = BytePtrFromString(attr)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
@@ -769,8 +954,15 @@ func Link(path string, link string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -779,14 +971,19 @@ func Listen(s int, backlog int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
}
- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- use(unsafe.Pointer(_p0))
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -795,14 +992,27 @@ func Lstat(path string, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
}
- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- use(unsafe.Pointer(_p0))
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -811,13 +1021,13 @@ func Mkdir(path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Mkfifo(path string, mode uint32) (err error) {
+func Unmount(target string, flags int) (err error) {
var _p0 *byte
- _p0, err = BytePtrFromString(path)
+ _p0, err = BytePtrFromString(target)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -827,14 +1037,18 @@ func Mkfifo(path string, mode uint32) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
}
- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- use(unsafe.Pointer(_p0))
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -843,14 +1057,15 @@ func Mknod(path string, mode uint32, dev int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Mlock(b []byte) (err error) {
+func write(fd int, p []byte) (n int, err error) {
var _p0 unsafe.Pointer
- if len(b) > 0 {
- _p0 = unsafe.Pointer(&b[0])
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
} else {
_p0 = unsafe.Pointer(&_zero)
}
- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -859,8 +1074,56 @@ func Mlock(b []byte) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Mlockall(flags int) (err error) {
- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -885,14 +1148,14 @@ func Mprotect(b []byte, prot int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Munlock(b []byte) (err error) {
+func Mlock(b []byte) (err error) {
var _p0 unsafe.Pointer
if len(b) > 0 {
_p0 = unsafe.Pointer(&b[0])
} else {
_p0 = unsafe.Pointer(&_zero)
}
- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -901,8 +1164,14 @@ func Munlock(b []byte) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Munlockall() (err error) {
- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -911,8 +1180,8 @@ func Munlockall() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -921,15 +1190,8 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- use(unsafe.Pointer(_p0))
- fd = int(r0)
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -938,15 +1200,8 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- use(unsafe.Pointer(_p0))
- val = int(r0)
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -955,14 +1210,14 @@ func Pathconf(path string, name int) (val int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func read(fd int, p []byte) (n int, err error) {
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
} else {
_p0 = unsafe.Pointer(&_zero)
}
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
@@ -972,21 +1227,8 @@ func read(fd int, p []byte) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Readlink(path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 unsafe.Pointer
- if len(buf) > 0 {
- _p1 = unsafe.Pointer(&buf[0])
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- use(unsafe.Pointer(_p0))
- n = int(r0)
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -995,20 +1237,8 @@ func Readlink(path string, buf []byte) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(to)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- use(unsafe.Pointer(_p0))
- use(unsafe.Pointer(_p1))
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1017,14 +1247,8 @@ func Rename(from string, to string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
- use(unsafe.Pointer(_p0))
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1033,14 +1257,8 @@ func Revoke(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Rmdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
- use(unsafe.Pointer(_p0))
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1049,9 +1267,8 @@ func Rmdir(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
- newoffset = int64(int64(r1)<<32 | int64(r0))
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1060,18 +1277,32 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
return
}
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setegid(egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1080,8 +1311,17 @@ func Setegid(egid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Seteuid(euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1090,8 +1330,14 @@ func Seteuid(euid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setgid(gid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1100,13 +1346,13 @@ func Setgid(gid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setlogin(name string) (err error) {
+func Lstat(path string, stat *Stat_t) (err error) {
var _p0 *byte
- _p0, err = BytePtrFromString(name)
+ _p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -1116,8 +1362,8 @@ func Setlogin(name string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1126,8 +1372,15 @@ func Setpgid(pid int, pgid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setpriority(which int, who int, prio int) (err error) {
- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1136,8 +1389,15 @@ func Setpriority(which int, who int, prio int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1146,8 +1406,9 @@ func Setregid(rgid int, egid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1156,8 +1417,9 @@ func Setreuid(ruid int, euid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setresgid(rgid int, egid int, sgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1166,8 +1428,9 @@ func Setresgid(rgid int, egid int, sgid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setresuid(ruid int, euid int, suid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1176,8 +1439,8 @@ func Setresuid(ruid int, euid int, suid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1186,9 +1449,8 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1197,8 +1459,8 @@ func Setsid() (pid int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Settimeofday(tp *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1207,8 +1469,8 @@ func Settimeofday(tp *Timeval) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Setuid(uid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1217,14 +1479,8 @@ func Setuid(uid int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- use(unsafe.Pointer(_p0))
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1233,14 +1489,8 @@ func Stat(path string, stat *Stat_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Statfs(path string, stat *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- use(unsafe.Pointer(_p0))
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1249,20 +1499,8 @@ func Statfs(path string, stat *Statfs_t) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- var _p1 *byte
- _p1, err = BytePtrFromString(link)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- use(unsafe.Pointer(_p0))
- use(unsafe.Pointer(_p1))
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1271,8 +1509,9 @@ func Symlink(path string, link string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1281,13 +1520,13 @@ func Sync() (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Truncate(path string, length int64) (err error) {
+func Stat(path string, stat *Stat_t) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -1297,21 +1536,13 @@ func Truncate(path string, length int64) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Umask(newmask int) (oldmask int) {
- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-func Undelete(path string) (err error) {
+func Statfs(path string, buf *Statfs_t) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -1321,14 +1552,8 @@ func Undelete(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
- use(unsafe.Pointer(_p0))
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1337,13 +1562,13 @@ func Unlink(path string) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func Unmount(path string, flags int) (err error) {
+func Truncate(path string, length int64) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)
if err != nil {
return
}
- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
@@ -1353,15 +1578,19 @@ func Unmount(path string, flags int) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func write(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
- _p0 = unsafe.Pointer(&p[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
}
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1370,9 +1599,8 @@ func write(fd int, p []byte) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
- ret = uintptr(r0)
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1381,8 +1609,14 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func munmap(addr uintptr, length uintptr) (err error) {
- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1391,9 +1625,8 @@ func munmap(addr uintptr, length uintptr) (err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
if e1 != 0 {
err = errnoErr(e1)
}
@@ -1402,8 +1635,8 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
n = int(r0)
if e1 != 0 {
err = errnoErr(e1)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go
index 00ca1f9c1..b16e1d0ee 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
index 03f31b973..b63667da9 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
index 84dc61cfa..b0d19038d 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go
index 02b3528a6..f91a5b856 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
index 7dc2b7eaf..2e8d59d72 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
@@ -222,6 +222,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
_p0 = unsafe.Pointer(&_zero)
}
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ use(_p0)
if e1 != 0 {
err = errnoErr(e1)
}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go
deleted file mode 100644
index 785240a75..000000000
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go
+++ /dev/null
@@ -1,304 +0,0 @@
-// mksysnum_dragonfly.pl
-// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-
-// +build 386,dragonfly
-
-package unix
-
-const (
- // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
- SYS_EXIT = 1 // { void exit(int rval); }
- SYS_FORK = 2 // { int fork(void); }
- SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
- SYS_CLOSE = 6 // { int close(int fd); }
- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, \
- SYS_LINK = 9 // { int link(char *path, char *link); }
- SYS_UNLINK = 10 // { int unlink(char *path); }
- SYS_CHDIR = 12 // { int chdir(char *path); }
- SYS_FCHDIR = 13 // { int fchdir(int fd); }
- SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
- SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
- SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, \
- SYS_GETPID = 20 // { pid_t getpid(void); }
- SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, \
- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
- SYS_SETUID = 23 // { int setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t getuid(void); }
- SYS_GETEUID = 25 // { uid_t geteuid(void); }
- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, \
- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
- SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, \
- SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
- SYS_ACCESS = 33 // { int access(char *path, int flags); }
- SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); }
- SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); }
- SYS_SYNC = 36 // { int sync(void); }
- SYS_KILL = 37 // { int kill(int pid, int signum); }
- SYS_GETPPID = 39 // { pid_t getppid(void); }
- SYS_DUP = 41 // { int dup(u_int fd); }
- SYS_PIPE = 42 // { int pipe(void); }
- SYS_GETEGID = 43 // { gid_t getegid(void); }
- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, \
- SYS_GETGID = 47 // { gid_t getgid(void); }
- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
- SYS_ACCT = 51 // { int acct(char *path); }
- SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
- SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
- SYS_REBOOT = 55 // { int reboot(int opt); }
- SYS_REVOKE = 56 // { int revoke(char *path); }
- SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
- SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); }
- SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
- SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
- SYS_CHROOT = 61 // { int chroot(char *path); }
- SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
- SYS_VFORK = 66 // { pid_t vfork(void); }
- SYS_SBRK = 69 // { int sbrk(int incr); }
- SYS_SSTK = 70 // { int sstk(int incr); }
- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
- SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_GETPGRP = 81 // { int getpgrp(void); }
- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, \
- SYS_SWAPON = 85 // { int swapon(char *name); }
- SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
- SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
- SYS_FSYNC = 95 // { int fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
- SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
- SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
- SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
- SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
- SYS_RENAME = 128 // { int rename(char *from, char *to); }
- SYS_FLOCK = 131 // { int flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, \
- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
- SYS_RMDIR = 137 // { int rmdir(char *path); }
- SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
- SYS_SETSID = 147 // { int setsid(void); }
- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
- SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
- SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
- SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
- SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
- SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
- SYS_UNAME = 164 // { int uname(struct utsname *name); }
- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
- SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, \
- SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, \
- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
- SYS_SETGID = 181 // { int setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
- SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
- // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int
- SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, \
- SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); }
- SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
- SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
- SYS_UNDELETE = 205 // { int undelete(char *path); }
- SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
- SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
- SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
- SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, \
- SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
- SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \
- SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, \
- SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
- SYS_MSGSND = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \
- SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
- SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
- SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, \
- SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
- SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
- SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
- SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, \
- SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
- SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
- SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
- SYS_RFORK = 251 // { int rfork(int flags); }
- SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
- SYS_ISSETUGID = 253 // { int issetugid(void); }
- SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
- SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
- SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
- SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
- SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
- SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
- SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
- SYS_MODNEXT = 300 // { int modnext(int modid); }
- SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); }
- SYS_MODFNEXT = 302 // { int modfnext(int modid); }
- SYS_MODFIND = 303 // { int modfind(const char *name); }
- SYS_KLDLOAD = 304 // { int kldload(const char *file); }
- SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
- SYS_KLDFIND = 306 // { int kldfind(const char *file); }
- SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
- SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
- SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
- SYS_GETSID = 310 // { int getsid(pid_t pid); }
- SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
- SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
- SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); }
- SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
- SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
- SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
- SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); }
- SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); }
- SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
- SYS_YIELD = 321 // { int yield(void); }
- SYS_MLOCKALL = 324 // { int mlockall(int how); }
- SYS_MUNLOCKALL = 325 // { int munlockall(void); }
- SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); }
- SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
- SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
- SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
- SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
- SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
- SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
- SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
- SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
- SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
- SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
- SYS_JAIL = 338 // { int jail(struct jail *jail); }
- SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, \
- SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
- SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, \
- SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
- SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); }
- SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,\
- SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,\
- SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
- SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
- SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
- SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
- SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
- SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
- SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
- SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
- SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
- SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, \
- SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, \
- SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
- SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
- SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
- SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
- SYS_KQUEUE = 362 // { int kqueue(void); }
- SYS_KEVENT = 363 // { int kevent(int fd, \
- SYS_SCTP_PEELOFF = 364 // { int sctp_peeloff(int sd, caddr_t name ); }
- SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); }
- SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
- SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
- SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); }
- SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
- SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
- SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); }
- SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); }
- SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }
- SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }
- SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }
- SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }
- SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); }
- SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }
- SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }
- SYS_CLOSEFROM = 474 // { int closefrom(int fd); }
- SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); }
- SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); }
- SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); }
- SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
- SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, \
- SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); }
- SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
- SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
- SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
- SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
- SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); }
- SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); }
- SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, \
- SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
- SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, \
- SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, \
- SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
- SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
- SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); }
- SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); }
- SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); }
- SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
- SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
- SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
- SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); }
- SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
- SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
- SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, \
- SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); }
- SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, \
- SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, \
- SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
- SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); }
- SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, \
- SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, \
- SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); }
- SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); }
- SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, \
- SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, \
- SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, \
- SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
- SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
- SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, \
- SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
- SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); }
- SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); }
- SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); }
- SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, \
- SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
- SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
- SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, \
- SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, \
- SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); }
- SYS_SWAPOFF = 529 // { int swapoff(char *name); }
- SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, \
- SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, \
- SYS_EACCESS = 532 // { int eaccess(char *path, int flags); }
- SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); }
- SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
- SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
-)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64.go
new file mode 100644
index 000000000..5ffe1c719
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64.go
@@ -0,0 +1,327 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build mips64,linux
+
+package unix
+
+const (
+ SYS_READ = 5000
+ SYS_WRITE = 5001
+ SYS_OPEN = 5002
+ SYS_CLOSE = 5003
+ SYS_STAT = 5004
+ SYS_FSTAT = 5005
+ SYS_LSTAT = 5006
+ SYS_POLL = 5007
+ SYS_LSEEK = 5008
+ SYS_MMAP = 5009
+ SYS_MPROTECT = 5010
+ SYS_MUNMAP = 5011
+ SYS_BRK = 5012
+ SYS_RT_SIGACTION = 5013
+ SYS_RT_SIGPROCMASK = 5014
+ SYS_IOCTL = 5015
+ SYS_PREAD64 = 5016
+ SYS_PWRITE64 = 5017
+ SYS_READV = 5018
+ SYS_WRITEV = 5019
+ SYS_ACCESS = 5020
+ SYS_PIPE = 5021
+ SYS__NEWSELECT = 5022
+ SYS_SCHED_YIELD = 5023
+ SYS_MREMAP = 5024
+ SYS_MSYNC = 5025
+ SYS_MINCORE = 5026
+ SYS_MADVISE = 5027
+ SYS_SHMGET = 5028
+ SYS_SHMAT = 5029
+ SYS_SHMCTL = 5030
+ SYS_DUP = 5031
+ SYS_DUP2 = 5032
+ SYS_PAUSE = 5033
+ SYS_NANOSLEEP = 5034
+ SYS_GETITIMER = 5035
+ SYS_SETITIMER = 5036
+ SYS_ALARM = 5037
+ SYS_GETPID = 5038
+ SYS_SENDFILE = 5039
+ SYS_SOCKET = 5040
+ SYS_CONNECT = 5041
+ SYS_ACCEPT = 5042
+ SYS_SENDTO = 5043
+ SYS_RECVFROM = 5044
+ SYS_SENDMSG = 5045
+ SYS_RECVMSG = 5046
+ SYS_SHUTDOWN = 5047
+ SYS_BIND = 5048
+ SYS_LISTEN = 5049
+ SYS_GETSOCKNAME = 5050
+ SYS_GETPEERNAME = 5051
+ SYS_SOCKETPAIR = 5052
+ SYS_SETSOCKOPT = 5053
+ SYS_GETSOCKOPT = 5054
+ SYS_CLONE = 5055
+ SYS_FORK = 5056
+ SYS_EXECVE = 5057
+ SYS_EXIT = 5058
+ SYS_WAIT4 = 5059
+ SYS_KILL = 5060
+ SYS_UNAME = 5061
+ SYS_SEMGET = 5062
+ SYS_SEMOP = 5063
+ SYS_SEMCTL = 5064
+ SYS_SHMDT = 5065
+ SYS_MSGGET = 5066
+ SYS_MSGSND = 5067
+ SYS_MSGRCV = 5068
+ SYS_MSGCTL = 5069
+ SYS_FCNTL = 5070
+ SYS_FLOCK = 5071
+ SYS_FSYNC = 5072
+ SYS_FDATASYNC = 5073
+ SYS_TRUNCATE = 5074
+ SYS_FTRUNCATE = 5075
+ SYS_GETDENTS = 5076
+ SYS_GETCWD = 5077
+ SYS_CHDIR = 5078
+ SYS_FCHDIR = 5079
+ SYS_RENAME = 5080
+ SYS_MKDIR = 5081
+ SYS_RMDIR = 5082
+ SYS_CREAT = 5083
+ SYS_LINK = 5084
+ SYS_UNLINK = 5085
+ SYS_SYMLINK = 5086
+ SYS_READLINK = 5087
+ SYS_CHMOD = 5088
+ SYS_FCHMOD = 5089
+ SYS_CHOWN = 5090
+ SYS_FCHOWN = 5091
+ SYS_LCHOWN = 5092
+ SYS_UMASK = 5093
+ SYS_GETTIMEOFDAY = 5094
+ SYS_GETRLIMIT = 5095
+ SYS_GETRUSAGE = 5096
+ SYS_SYSINFO = 5097
+ SYS_TIMES = 5098
+ SYS_PTRACE = 5099
+ SYS_GETUID = 5100
+ SYS_SYSLOG = 5101
+ SYS_GETGID = 5102
+ SYS_SETUID = 5103
+ SYS_SETGID = 5104
+ SYS_GETEUID = 5105
+ SYS_GETEGID = 5106
+ SYS_SETPGID = 5107
+ SYS_GETPPID = 5108
+ SYS_GETPGRP = 5109
+ SYS_SETSID = 5110
+ SYS_SETREUID = 5111
+ SYS_SETREGID = 5112
+ SYS_GETGROUPS = 5113
+ SYS_SETGROUPS = 5114
+ SYS_SETRESUID = 5115
+ SYS_GETRESUID = 5116
+ SYS_SETRESGID = 5117
+ SYS_GETRESGID = 5118
+ SYS_GETPGID = 5119
+ SYS_SETFSUID = 5120
+ SYS_SETFSGID = 5121
+ SYS_GETSID = 5122
+ SYS_CAPGET = 5123
+ SYS_CAPSET = 5124
+ SYS_RT_SIGPENDING = 5125
+ SYS_RT_SIGTIMEDWAIT = 5126
+ SYS_RT_SIGQUEUEINFO = 5127
+ SYS_RT_SIGSUSPEND = 5128
+ SYS_SIGALTSTACK = 5129
+ SYS_UTIME = 5130
+ SYS_MKNOD = 5131
+ SYS_PERSONALITY = 5132
+ SYS_USTAT = 5133
+ SYS_STATFS = 5134
+ SYS_FSTATFS = 5135
+ SYS_SYSFS = 5136
+ SYS_GETPRIORITY = 5137
+ SYS_SETPRIORITY = 5138
+ SYS_SCHED_SETPARAM = 5139
+ SYS_SCHED_GETPARAM = 5140
+ SYS_SCHED_SETSCHEDULER = 5141
+ SYS_SCHED_GETSCHEDULER = 5142
+ SYS_SCHED_GET_PRIORITY_MAX = 5143
+ SYS_SCHED_GET_PRIORITY_MIN = 5144
+ SYS_SCHED_RR_GET_INTERVAL = 5145
+ SYS_MLOCK = 5146
+ SYS_MUNLOCK = 5147
+ SYS_MLOCKALL = 5148
+ SYS_MUNLOCKALL = 5149
+ SYS_VHANGUP = 5150
+ SYS_PIVOT_ROOT = 5151
+ SYS__SYSCTL = 5152
+ SYS_PRCTL = 5153
+ SYS_ADJTIMEX = 5154
+ SYS_SETRLIMIT = 5155
+ SYS_CHROOT = 5156
+ SYS_SYNC = 5157
+ SYS_ACCT = 5158
+ SYS_SETTIMEOFDAY = 5159
+ SYS_MOUNT = 5160
+ SYS_UMOUNT2 = 5161
+ SYS_SWAPON = 5162
+ SYS_SWAPOFF = 5163
+ SYS_REBOOT = 5164
+ SYS_SETHOSTNAME = 5165
+ SYS_SETDOMAINNAME = 5166
+ SYS_CREATE_MODULE = 5167
+ SYS_INIT_MODULE = 5168
+ SYS_DELETE_MODULE = 5169
+ SYS_GET_KERNEL_SYMS = 5170
+ SYS_QUERY_MODULE = 5171
+ SYS_QUOTACTL = 5172
+ SYS_NFSSERVCTL = 5173
+ SYS_GETPMSG = 5174
+ SYS_PUTPMSG = 5175
+ SYS_AFS_SYSCALL = 5176
+ SYS_RESERVED177 = 5177
+ SYS_GETTID = 5178
+ SYS_READAHEAD = 5179
+ SYS_SETXATTR = 5180
+ SYS_LSETXATTR = 5181
+ SYS_FSETXATTR = 5182
+ SYS_GETXATTR = 5183
+ SYS_LGETXATTR = 5184
+ SYS_FGETXATTR = 5185
+ SYS_LISTXATTR = 5186
+ SYS_LLISTXATTR = 5187
+ SYS_FLISTXATTR = 5188
+ SYS_REMOVEXATTR = 5189
+ SYS_LREMOVEXATTR = 5190
+ SYS_FREMOVEXATTR = 5191
+ SYS_TKILL = 5192
+ SYS_RESERVED193 = 5193
+ SYS_FUTEX = 5194
+ SYS_SCHED_SETAFFINITY = 5195
+ SYS_SCHED_GETAFFINITY = 5196
+ SYS_CACHEFLUSH = 5197
+ SYS_CACHECTL = 5198
+ SYS_SYSMIPS = 5199
+ SYS_IO_SETUP = 5200
+ SYS_IO_DESTROY = 5201
+ SYS_IO_GETEVENTS = 5202
+ SYS_IO_SUBMIT = 5203
+ SYS_IO_CANCEL = 5204
+ SYS_EXIT_GROUP = 5205
+ SYS_LOOKUP_DCOOKIE = 5206
+ SYS_EPOLL_CREATE = 5207
+ SYS_EPOLL_CTL = 5208
+ SYS_EPOLL_WAIT = 5209
+ SYS_REMAP_FILE_PAGES = 5210
+ SYS_RT_SIGRETURN = 5211
+ SYS_SET_TID_ADDRESS = 5212
+ SYS_RESTART_SYSCALL = 5213
+ SYS_SEMTIMEDOP = 5214
+ SYS_FADVISE64 = 5215
+ SYS_TIMER_CREATE = 5216
+ SYS_TIMER_SETTIME = 5217
+ SYS_TIMER_GETTIME = 5218
+ SYS_TIMER_GETOVERRUN = 5219
+ SYS_TIMER_DELETE = 5220
+ SYS_CLOCK_SETTIME = 5221
+ SYS_CLOCK_GETTIME = 5222
+ SYS_CLOCK_GETRES = 5223
+ SYS_CLOCK_NANOSLEEP = 5224
+ SYS_TGKILL = 5225
+ SYS_UTIMES = 5226
+ SYS_MBIND = 5227
+ SYS_GET_MEMPOLICY = 5228
+ SYS_SET_MEMPOLICY = 5229
+ SYS_MQ_OPEN = 5230
+ SYS_MQ_UNLINK = 5231
+ SYS_MQ_TIMEDSEND = 5232
+ SYS_MQ_TIMEDRECEIVE = 5233
+ SYS_MQ_NOTIFY = 5234
+ SYS_MQ_GETSETATTR = 5235
+ SYS_VSERVER = 5236
+ SYS_WAITID = 5237
+ SYS_ADD_KEY = 5239
+ SYS_REQUEST_KEY = 5240
+ SYS_KEYCTL = 5241
+ SYS_SET_THREAD_AREA = 5242
+ SYS_INOTIFY_INIT = 5243
+ SYS_INOTIFY_ADD_WATCH = 5244
+ SYS_INOTIFY_RM_WATCH = 5245
+ SYS_MIGRATE_PAGES = 5246
+ SYS_OPENAT = 5247
+ SYS_MKDIRAT = 5248
+ SYS_MKNODAT = 5249
+ SYS_FCHOWNAT = 5250
+ SYS_FUTIMESAT = 5251
+ SYS_NEWFSTATAT = 5252
+ SYS_UNLINKAT = 5253
+ SYS_RENAMEAT = 5254
+ SYS_LINKAT = 5255
+ SYS_SYMLINKAT = 5256
+ SYS_READLINKAT = 5257
+ SYS_FCHMODAT = 5258
+ SYS_FACCESSAT = 5259
+ SYS_PSELECT6 = 5260
+ SYS_PPOLL = 5261
+ SYS_UNSHARE = 5262
+ SYS_SPLICE = 5263
+ SYS_SYNC_FILE_RANGE = 5264
+ SYS_TEE = 5265
+ SYS_VMSPLICE = 5266
+ SYS_MOVE_PAGES = 5267
+ SYS_SET_ROBUST_LIST = 5268
+ SYS_GET_ROBUST_LIST = 5269
+ SYS_KEXEC_LOAD = 5270
+ SYS_GETCPU = 5271
+ SYS_EPOLL_PWAIT = 5272
+ SYS_IOPRIO_SET = 5273
+ SYS_IOPRIO_GET = 5274
+ SYS_UTIMENSAT = 5275
+ SYS_SIGNALFD = 5276
+ SYS_TIMERFD = 5277
+ SYS_EVENTFD = 5278
+ SYS_FALLOCATE = 5279
+ SYS_TIMERFD_CREATE = 5280
+ SYS_TIMERFD_GETTIME = 5281
+ SYS_TIMERFD_SETTIME = 5282
+ SYS_SIGNALFD4 = 5283
+ SYS_EVENTFD2 = 5284
+ SYS_EPOLL_CREATE1 = 5285
+ SYS_DUP3 = 5286
+ SYS_PIPE2 = 5287
+ SYS_INOTIFY_INIT1 = 5288
+ SYS_PREADV = 5289
+ SYS_PWRITEV = 5290
+ SYS_RT_TGSIGQUEUEINFO = 5291
+ SYS_PERF_EVENT_OPEN = 5292
+ SYS_ACCEPT4 = 5293
+ SYS_RECVMMSG = 5294
+ SYS_FANOTIFY_INIT = 5295
+ SYS_FANOTIFY_MARK = 5296
+ SYS_PRLIMIT64 = 5297
+ SYS_NAME_TO_HANDLE_AT = 5298
+ SYS_OPEN_BY_HANDLE_AT = 5299
+ SYS_CLOCK_ADJTIME = 5300
+ SYS_SYNCFS = 5301
+ SYS_SENDMMSG = 5302
+ SYS_SETNS = 5303
+ SYS_PROCESS_VM_READV = 5304
+ SYS_PROCESS_VM_WRITEV = 5305
+ SYS_KCMP = 5306
+ SYS_FINIT_MODULE = 5307
+ SYS_GETDENTS64 = 5308
+ SYS_SCHED_SETATTR = 5309
+ SYS_SCHED_GETATTR = 5310
+ SYS_RENAMEAT2 = 5311
+ SYS_SECCOMP = 5312
+ SYS_GETRANDOM = 5313
+ SYS_MEMFD_CREATE = 5314
+ SYS_BPF = 5315
+ SYS_EXECVEAT = 5316
+ SYS_USERFAULTFD = 5317
+ SYS_MEMBARRIER = 5318
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
new file mode 100644
index 000000000..d192b940c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
@@ -0,0 +1,327 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build mips64le,linux
+
+package unix
+
+const (
+ SYS_READ = 5000
+ SYS_WRITE = 5001
+ SYS_OPEN = 5002
+ SYS_CLOSE = 5003
+ SYS_STAT = 5004
+ SYS_FSTAT = 5005
+ SYS_LSTAT = 5006
+ SYS_POLL = 5007
+ SYS_LSEEK = 5008
+ SYS_MMAP = 5009
+ SYS_MPROTECT = 5010
+ SYS_MUNMAP = 5011
+ SYS_BRK = 5012
+ SYS_RT_SIGACTION = 5013
+ SYS_RT_SIGPROCMASK = 5014
+ SYS_IOCTL = 5015
+ SYS_PREAD64 = 5016
+ SYS_PWRITE64 = 5017
+ SYS_READV = 5018
+ SYS_WRITEV = 5019
+ SYS_ACCESS = 5020
+ SYS_PIPE = 5021
+ SYS__NEWSELECT = 5022
+ SYS_SCHED_YIELD = 5023
+ SYS_MREMAP = 5024
+ SYS_MSYNC = 5025
+ SYS_MINCORE = 5026
+ SYS_MADVISE = 5027
+ SYS_SHMGET = 5028
+ SYS_SHMAT = 5029
+ SYS_SHMCTL = 5030
+ SYS_DUP = 5031
+ SYS_DUP2 = 5032
+ SYS_PAUSE = 5033
+ SYS_NANOSLEEP = 5034
+ SYS_GETITIMER = 5035
+ SYS_SETITIMER = 5036
+ SYS_ALARM = 5037
+ SYS_GETPID = 5038
+ SYS_SENDFILE = 5039
+ SYS_SOCKET = 5040
+ SYS_CONNECT = 5041
+ SYS_ACCEPT = 5042
+ SYS_SENDTO = 5043
+ SYS_RECVFROM = 5044
+ SYS_SENDMSG = 5045
+ SYS_RECVMSG = 5046
+ SYS_SHUTDOWN = 5047
+ SYS_BIND = 5048
+ SYS_LISTEN = 5049
+ SYS_GETSOCKNAME = 5050
+ SYS_GETPEERNAME = 5051
+ SYS_SOCKETPAIR = 5052
+ SYS_SETSOCKOPT = 5053
+ SYS_GETSOCKOPT = 5054
+ SYS_CLONE = 5055
+ SYS_FORK = 5056
+ SYS_EXECVE = 5057
+ SYS_EXIT = 5058
+ SYS_WAIT4 = 5059
+ SYS_KILL = 5060
+ SYS_UNAME = 5061
+ SYS_SEMGET = 5062
+ SYS_SEMOP = 5063
+ SYS_SEMCTL = 5064
+ SYS_SHMDT = 5065
+ SYS_MSGGET = 5066
+ SYS_MSGSND = 5067
+ SYS_MSGRCV = 5068
+ SYS_MSGCTL = 5069
+ SYS_FCNTL = 5070
+ SYS_FLOCK = 5071
+ SYS_FSYNC = 5072
+ SYS_FDATASYNC = 5073
+ SYS_TRUNCATE = 5074
+ SYS_FTRUNCATE = 5075
+ SYS_GETDENTS = 5076
+ SYS_GETCWD = 5077
+ SYS_CHDIR = 5078
+ SYS_FCHDIR = 5079
+ SYS_RENAME = 5080
+ SYS_MKDIR = 5081
+ SYS_RMDIR = 5082
+ SYS_CREAT = 5083
+ SYS_LINK = 5084
+ SYS_UNLINK = 5085
+ SYS_SYMLINK = 5086
+ SYS_READLINK = 5087
+ SYS_CHMOD = 5088
+ SYS_FCHMOD = 5089
+ SYS_CHOWN = 5090
+ SYS_FCHOWN = 5091
+ SYS_LCHOWN = 5092
+ SYS_UMASK = 5093
+ SYS_GETTIMEOFDAY = 5094
+ SYS_GETRLIMIT = 5095
+ SYS_GETRUSAGE = 5096
+ SYS_SYSINFO = 5097
+ SYS_TIMES = 5098
+ SYS_PTRACE = 5099
+ SYS_GETUID = 5100
+ SYS_SYSLOG = 5101
+ SYS_GETGID = 5102
+ SYS_SETUID = 5103
+ SYS_SETGID = 5104
+ SYS_GETEUID = 5105
+ SYS_GETEGID = 5106
+ SYS_SETPGID = 5107
+ SYS_GETPPID = 5108
+ SYS_GETPGRP = 5109
+ SYS_SETSID = 5110
+ SYS_SETREUID = 5111
+ SYS_SETREGID = 5112
+ SYS_GETGROUPS = 5113
+ SYS_SETGROUPS = 5114
+ SYS_SETRESUID = 5115
+ SYS_GETRESUID = 5116
+ SYS_SETRESGID = 5117
+ SYS_GETRESGID = 5118
+ SYS_GETPGID = 5119
+ SYS_SETFSUID = 5120
+ SYS_SETFSGID = 5121
+ SYS_GETSID = 5122
+ SYS_CAPGET = 5123
+ SYS_CAPSET = 5124
+ SYS_RT_SIGPENDING = 5125
+ SYS_RT_SIGTIMEDWAIT = 5126
+ SYS_RT_SIGQUEUEINFO = 5127
+ SYS_RT_SIGSUSPEND = 5128
+ SYS_SIGALTSTACK = 5129
+ SYS_UTIME = 5130
+ SYS_MKNOD = 5131
+ SYS_PERSONALITY = 5132
+ SYS_USTAT = 5133
+ SYS_STATFS = 5134
+ SYS_FSTATFS = 5135
+ SYS_SYSFS = 5136
+ SYS_GETPRIORITY = 5137
+ SYS_SETPRIORITY = 5138
+ SYS_SCHED_SETPARAM = 5139
+ SYS_SCHED_GETPARAM = 5140
+ SYS_SCHED_SETSCHEDULER = 5141
+ SYS_SCHED_GETSCHEDULER = 5142
+ SYS_SCHED_GET_PRIORITY_MAX = 5143
+ SYS_SCHED_GET_PRIORITY_MIN = 5144
+ SYS_SCHED_RR_GET_INTERVAL = 5145
+ SYS_MLOCK = 5146
+ SYS_MUNLOCK = 5147
+ SYS_MLOCKALL = 5148
+ SYS_MUNLOCKALL = 5149
+ SYS_VHANGUP = 5150
+ SYS_PIVOT_ROOT = 5151
+ SYS__SYSCTL = 5152
+ SYS_PRCTL = 5153
+ SYS_ADJTIMEX = 5154
+ SYS_SETRLIMIT = 5155
+ SYS_CHROOT = 5156
+ SYS_SYNC = 5157
+ SYS_ACCT = 5158
+ SYS_SETTIMEOFDAY = 5159
+ SYS_MOUNT = 5160
+ SYS_UMOUNT2 = 5161
+ SYS_SWAPON = 5162
+ SYS_SWAPOFF = 5163
+ SYS_REBOOT = 5164
+ SYS_SETHOSTNAME = 5165
+ SYS_SETDOMAINNAME = 5166
+ SYS_CREATE_MODULE = 5167
+ SYS_INIT_MODULE = 5168
+ SYS_DELETE_MODULE = 5169
+ SYS_GET_KERNEL_SYMS = 5170
+ SYS_QUERY_MODULE = 5171
+ SYS_QUOTACTL = 5172
+ SYS_NFSSERVCTL = 5173
+ SYS_GETPMSG = 5174
+ SYS_PUTPMSG = 5175
+ SYS_AFS_SYSCALL = 5176
+ SYS_RESERVED177 = 5177
+ SYS_GETTID = 5178
+ SYS_READAHEAD = 5179
+ SYS_SETXATTR = 5180
+ SYS_LSETXATTR = 5181
+ SYS_FSETXATTR = 5182
+ SYS_GETXATTR = 5183
+ SYS_LGETXATTR = 5184
+ SYS_FGETXATTR = 5185
+ SYS_LISTXATTR = 5186
+ SYS_LLISTXATTR = 5187
+ SYS_FLISTXATTR = 5188
+ SYS_REMOVEXATTR = 5189
+ SYS_LREMOVEXATTR = 5190
+ SYS_FREMOVEXATTR = 5191
+ SYS_TKILL = 5192
+ SYS_RESERVED193 = 5193
+ SYS_FUTEX = 5194
+ SYS_SCHED_SETAFFINITY = 5195
+ SYS_SCHED_GETAFFINITY = 5196
+ SYS_CACHEFLUSH = 5197
+ SYS_CACHECTL = 5198
+ SYS_SYSMIPS = 5199
+ SYS_IO_SETUP = 5200
+ SYS_IO_DESTROY = 5201
+ SYS_IO_GETEVENTS = 5202
+ SYS_IO_SUBMIT = 5203
+ SYS_IO_CANCEL = 5204
+ SYS_EXIT_GROUP = 5205
+ SYS_LOOKUP_DCOOKIE = 5206
+ SYS_EPOLL_CREATE = 5207
+ SYS_EPOLL_CTL = 5208
+ SYS_EPOLL_WAIT = 5209
+ SYS_REMAP_FILE_PAGES = 5210
+ SYS_RT_SIGRETURN = 5211
+ SYS_SET_TID_ADDRESS = 5212
+ SYS_RESTART_SYSCALL = 5213
+ SYS_SEMTIMEDOP = 5214
+ SYS_FADVISE64 = 5215
+ SYS_TIMER_CREATE = 5216
+ SYS_TIMER_SETTIME = 5217
+ SYS_TIMER_GETTIME = 5218
+ SYS_TIMER_GETOVERRUN = 5219
+ SYS_TIMER_DELETE = 5220
+ SYS_CLOCK_SETTIME = 5221
+ SYS_CLOCK_GETTIME = 5222
+ SYS_CLOCK_GETRES = 5223
+ SYS_CLOCK_NANOSLEEP = 5224
+ SYS_TGKILL = 5225
+ SYS_UTIMES = 5226
+ SYS_MBIND = 5227
+ SYS_GET_MEMPOLICY = 5228
+ SYS_SET_MEMPOLICY = 5229
+ SYS_MQ_OPEN = 5230
+ SYS_MQ_UNLINK = 5231
+ SYS_MQ_TIMEDSEND = 5232
+ SYS_MQ_TIMEDRECEIVE = 5233
+ SYS_MQ_NOTIFY = 5234
+ SYS_MQ_GETSETATTR = 5235
+ SYS_VSERVER = 5236
+ SYS_WAITID = 5237
+ SYS_ADD_KEY = 5239
+ SYS_REQUEST_KEY = 5240
+ SYS_KEYCTL = 5241
+ SYS_SET_THREAD_AREA = 5242
+ SYS_INOTIFY_INIT = 5243
+ SYS_INOTIFY_ADD_WATCH = 5244
+ SYS_INOTIFY_RM_WATCH = 5245
+ SYS_MIGRATE_PAGES = 5246
+ SYS_OPENAT = 5247
+ SYS_MKDIRAT = 5248
+ SYS_MKNODAT = 5249
+ SYS_FCHOWNAT = 5250
+ SYS_FUTIMESAT = 5251
+ SYS_NEWFSTATAT = 5252
+ SYS_UNLINKAT = 5253
+ SYS_RENAMEAT = 5254
+ SYS_LINKAT = 5255
+ SYS_SYMLINKAT = 5256
+ SYS_READLINKAT = 5257
+ SYS_FCHMODAT = 5258
+ SYS_FACCESSAT = 5259
+ SYS_PSELECT6 = 5260
+ SYS_PPOLL = 5261
+ SYS_UNSHARE = 5262
+ SYS_SPLICE = 5263
+ SYS_SYNC_FILE_RANGE = 5264
+ SYS_TEE = 5265
+ SYS_VMSPLICE = 5266
+ SYS_MOVE_PAGES = 5267
+ SYS_SET_ROBUST_LIST = 5268
+ SYS_GET_ROBUST_LIST = 5269
+ SYS_KEXEC_LOAD = 5270
+ SYS_GETCPU = 5271
+ SYS_EPOLL_PWAIT = 5272
+ SYS_IOPRIO_SET = 5273
+ SYS_IOPRIO_GET = 5274
+ SYS_UTIMENSAT = 5275
+ SYS_SIGNALFD = 5276
+ SYS_TIMERFD = 5277
+ SYS_EVENTFD = 5278
+ SYS_FALLOCATE = 5279
+ SYS_TIMERFD_CREATE = 5280
+ SYS_TIMERFD_GETTIME = 5281
+ SYS_TIMERFD_SETTIME = 5282
+ SYS_SIGNALFD4 = 5283
+ SYS_EVENTFD2 = 5284
+ SYS_EPOLL_CREATE1 = 5285
+ SYS_DUP3 = 5286
+ SYS_PIPE2 = 5287
+ SYS_INOTIFY_INIT1 = 5288
+ SYS_PREADV = 5289
+ SYS_PWRITEV = 5290
+ SYS_RT_TGSIGQUEUEINFO = 5291
+ SYS_PERF_EVENT_OPEN = 5292
+ SYS_ACCEPT4 = 5293
+ SYS_RECVMMSG = 5294
+ SYS_FANOTIFY_INIT = 5295
+ SYS_FANOTIFY_MARK = 5296
+ SYS_PRLIMIT64 = 5297
+ SYS_NAME_TO_HANDLE_AT = 5298
+ SYS_OPEN_BY_HANDLE_AT = 5299
+ SYS_CLOCK_ADJTIME = 5300
+ SYS_SYNCFS = 5301
+ SYS_SENDMMSG = 5302
+ SYS_SETNS = 5303
+ SYS_PROCESS_VM_READV = 5304
+ SYS_PROCESS_VM_WRITEV = 5305
+ SYS_KCMP = 5306
+ SYS_FINIT_MODULE = 5307
+ SYS_GETDENTS64 = 5308
+ SYS_SCHED_SETATTR = 5309
+ SYS_SCHED_GETATTR = 5310
+ SYS_RENAMEAT2 = 5311
+ SYS_SECCOMP = 5312
+ SYS_GETRANDOM = 5313
+ SYS_MEMFD_CREATE = 5314
+ SYS_BPF = 5315
+ SYS_EXECVEAT = 5316
+ SYS_USERFAULTFD = 5317
+ SYS_MEMBARRIER = 5318
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_s390x.go
new file mode 100644
index 000000000..42d4f5cda
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_s390x.go
@@ -0,0 +1,328 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build s390x,linux
+
+package unix
+
+const (
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_RESTART_SYSCALL = 7
+ SYS_CREAT = 8
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_EXECVE = 11
+ SYS_CHDIR = 12
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_UMOUNT = 22
+ SYS_PTRACE = 26
+ SYS_ALARM = 27
+ SYS_PAUSE = 29
+ SYS_UTIME = 30
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_RENAME = 38
+ SYS_MKDIR = 39
+ SYS_RMDIR = 40
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_BRK = 45
+ SYS_SIGNAL = 48
+ SYS_ACCT = 51
+ SYS_UMOUNT2 = 52
+ SYS_IOCTL = 54
+ SYS_FCNTL = 55
+ SYS_SETPGID = 57
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_USTAT = 62
+ SYS_DUP2 = 63
+ SYS_GETPPID = 64
+ SYS_GETPGRP = 65
+ SYS_SETSID = 66
+ SYS_SIGACTION = 67
+ SYS_SIGSUSPEND = 72
+ SYS_SIGPENDING = 73
+ SYS_SETHOSTNAME = 74
+ SYS_SETRLIMIT = 75
+ SYS_GETRUSAGE = 77
+ SYS_GETTIMEOFDAY = 78
+ SYS_SETTIMEOFDAY = 79
+ SYS_SYMLINK = 83
+ SYS_READLINK = 85
+ SYS_USELIB = 86
+ SYS_SWAPON = 87
+ SYS_REBOOT = 88
+ SYS_READDIR = 89
+ SYS_MMAP = 90
+ SYS_MUNMAP = 91
+ SYS_TRUNCATE = 92
+ SYS_FTRUNCATE = 93
+ SYS_FCHMOD = 94
+ SYS_GETPRIORITY = 96
+ SYS_SETPRIORITY = 97
+ SYS_STATFS = 99
+ SYS_FSTATFS = 100
+ SYS_SOCKETCALL = 102
+ SYS_SYSLOG = 103
+ SYS_SETITIMER = 104
+ SYS_GETITIMER = 105
+ SYS_STAT = 106
+ SYS_LSTAT = 107
+ SYS_FSTAT = 108
+ SYS_LOOKUP_DCOOKIE = 110
+ SYS_VHANGUP = 111
+ SYS_IDLE = 112
+ SYS_WAIT4 = 114
+ SYS_SWAPOFF = 115
+ SYS_SYSINFO = 116
+ SYS_IPC = 117
+ SYS_FSYNC = 118
+ SYS_SIGRETURN = 119
+ SYS_CLONE = 120
+ SYS_SETDOMAINNAME = 121
+ SYS_UNAME = 122
+ SYS_ADJTIMEX = 124
+ SYS_MPROTECT = 125
+ SYS_SIGPROCMASK = 126
+ SYS_CREATE_MODULE = 127
+ SYS_INIT_MODULE = 128
+ SYS_DELETE_MODULE = 129
+ SYS_GET_KERNEL_SYMS = 130
+ SYS_QUOTACTL = 131
+ SYS_GETPGID = 132
+ SYS_FCHDIR = 133
+ SYS_BDFLUSH = 134
+ SYS_SYSFS = 135
+ SYS_PERSONALITY = 136
+ SYS_AFS_SYSCALL = 137
+ SYS_GETDENTS = 141
+ SYS_FLOCK = 143
+ SYS_MSYNC = 144
+ SYS_READV = 145
+ SYS_WRITEV = 146
+ SYS_GETSID = 147
+ SYS_FDATASYNC = 148
+ SYS__SYSCTL = 149
+ SYS_MLOCK = 150
+ SYS_MUNLOCK = 151
+ SYS_MLOCKALL = 152
+ SYS_MUNLOCKALL = 153
+ SYS_SCHED_SETPARAM = 154
+ SYS_SCHED_GETPARAM = 155
+ SYS_SCHED_SETSCHEDULER = 156
+ SYS_SCHED_GETSCHEDULER = 157
+ SYS_SCHED_YIELD = 158
+ SYS_SCHED_GET_PRIORITY_MAX = 159
+ SYS_SCHED_GET_PRIORITY_MIN = 160
+ SYS_SCHED_RR_GET_INTERVAL = 161
+ SYS_NANOSLEEP = 162
+ SYS_MREMAP = 163
+ SYS_QUERY_MODULE = 167
+ SYS_POLL = 168
+ SYS_NFSSERVCTL = 169
+ SYS_PRCTL = 172
+ SYS_RT_SIGRETURN = 173
+ SYS_RT_SIGACTION = 174
+ SYS_RT_SIGPROCMASK = 175
+ SYS_RT_SIGPENDING = 176
+ SYS_RT_SIGTIMEDWAIT = 177
+ SYS_RT_SIGQUEUEINFO = 178
+ SYS_RT_SIGSUSPEND = 179
+ SYS_PREAD64 = 180
+ SYS_PWRITE64 = 181
+ SYS_GETCWD = 183
+ SYS_CAPGET = 184
+ SYS_CAPSET = 185
+ SYS_SIGALTSTACK = 186
+ SYS_SENDFILE = 187
+ SYS_GETPMSG = 188
+ SYS_PUTPMSG = 189
+ SYS_VFORK = 190
+ SYS_PIVOT_ROOT = 217
+ SYS_MINCORE = 218
+ SYS_MADVISE = 219
+ SYS_GETDENTS64 = 220
+ SYS_READAHEAD = 222
+ SYS_SETXATTR = 224
+ SYS_LSETXATTR = 225
+ SYS_FSETXATTR = 226
+ SYS_GETXATTR = 227
+ SYS_LGETXATTR = 228
+ SYS_FGETXATTR = 229
+ SYS_LISTXATTR = 230
+ SYS_LLISTXATTR = 231
+ SYS_FLISTXATTR = 232
+ SYS_REMOVEXATTR = 233
+ SYS_LREMOVEXATTR = 234
+ SYS_FREMOVEXATTR = 235
+ SYS_GETTID = 236
+ SYS_TKILL = 237
+ SYS_FUTEX = 238
+ SYS_SCHED_SETAFFINITY = 239
+ SYS_SCHED_GETAFFINITY = 240
+ SYS_TGKILL = 241
+ SYS_IO_SETUP = 243
+ SYS_IO_DESTROY = 244
+ SYS_IO_GETEVENTS = 245
+ SYS_IO_SUBMIT = 246
+ SYS_IO_CANCEL = 247
+ SYS_EXIT_GROUP = 248
+ SYS_EPOLL_CREATE = 249
+ SYS_EPOLL_CTL = 250
+ SYS_EPOLL_WAIT = 251
+ SYS_SET_TID_ADDRESS = 252
+ SYS_FADVISE64 = 253
+ SYS_TIMER_CREATE = 254
+ SYS_TIMER_SETTIME = 255
+ SYS_TIMER_GETTIME = 256
+ SYS_TIMER_GETOVERRUN = 257
+ SYS_TIMER_DELETE = 258
+ SYS_CLOCK_SETTIME = 259
+ SYS_CLOCK_GETTIME = 260
+ SYS_CLOCK_GETRES = 261
+ SYS_CLOCK_NANOSLEEP = 262
+ SYS_STATFS64 = 265
+ SYS_FSTATFS64 = 266
+ SYS_REMAP_FILE_PAGES = 267
+ SYS_MBIND = 268
+ SYS_GET_MEMPOLICY = 269
+ SYS_SET_MEMPOLICY = 270
+ SYS_MQ_OPEN = 271
+ SYS_MQ_UNLINK = 272
+ SYS_MQ_TIMEDSEND = 273
+ SYS_MQ_TIMEDRECEIVE = 274
+ SYS_MQ_NOTIFY = 275
+ SYS_MQ_GETSETATTR = 276
+ SYS_KEXEC_LOAD = 277
+ SYS_ADD_KEY = 278
+ SYS_REQUEST_KEY = 279
+ SYS_KEYCTL = 280
+ SYS_WAITID = 281
+ SYS_IOPRIO_SET = 282
+ SYS_IOPRIO_GET = 283
+ SYS_INOTIFY_INIT = 284
+ SYS_INOTIFY_ADD_WATCH = 285
+ SYS_INOTIFY_RM_WATCH = 286
+ SYS_MIGRATE_PAGES = 287
+ SYS_OPENAT = 288
+ SYS_MKDIRAT = 289
+ SYS_MKNODAT = 290
+ SYS_FCHOWNAT = 291
+ SYS_FUTIMESAT = 292
+ SYS_UNLINKAT = 294
+ SYS_RENAMEAT = 295
+ SYS_LINKAT = 296
+ SYS_SYMLINKAT = 297
+ SYS_READLINKAT = 298
+ SYS_FCHMODAT = 299
+ SYS_FACCESSAT = 300
+ SYS_PSELECT6 = 301
+ SYS_PPOLL = 302
+ SYS_UNSHARE = 303
+ SYS_SET_ROBUST_LIST = 304
+ SYS_GET_ROBUST_LIST = 305
+ SYS_SPLICE = 306
+ SYS_SYNC_FILE_RANGE = 307
+ SYS_TEE = 308
+ SYS_VMSPLICE = 309
+ SYS_MOVE_PAGES = 310
+ SYS_GETCPU = 311
+ SYS_EPOLL_PWAIT = 312
+ SYS_UTIMES = 313
+ SYS_FALLOCATE = 314
+ SYS_UTIMENSAT = 315
+ SYS_SIGNALFD = 316
+ SYS_TIMERFD = 317
+ SYS_EVENTFD = 318
+ SYS_TIMERFD_CREATE = 319
+ SYS_TIMERFD_SETTIME = 320
+ SYS_TIMERFD_GETTIME = 321
+ SYS_SIGNALFD4 = 322
+ SYS_EVENTFD2 = 323
+ SYS_INOTIFY_INIT1 = 324
+ SYS_PIPE2 = 325
+ SYS_DUP3 = 326
+ SYS_EPOLL_CREATE1 = 327
+ SYS_PREADV = 328
+ SYS_PWRITEV = 329
+ SYS_RT_TGSIGQUEUEINFO = 330
+ SYS_PERF_EVENT_OPEN = 331
+ SYS_FANOTIFY_INIT = 332
+ SYS_FANOTIFY_MARK = 333
+ SYS_PRLIMIT64 = 334
+ SYS_NAME_TO_HANDLE_AT = 335
+ SYS_OPEN_BY_HANDLE_AT = 336
+ SYS_CLOCK_ADJTIME = 337
+ SYS_SYNCFS = 338
+ SYS_SETNS = 339
+ SYS_PROCESS_VM_READV = 340
+ SYS_PROCESS_VM_WRITEV = 341
+ SYS_S390_RUNTIME_INSTR = 342
+ SYS_KCMP = 343
+ SYS_FINIT_MODULE = 344
+ SYS_SCHED_SETATTR = 345
+ SYS_SCHED_GETATTR = 346
+ SYS_RENAMEAT2 = 347
+ SYS_SECCOMP = 348
+ SYS_GETRANDOM = 349
+ SYS_MEMFD_CREATE = 350
+ SYS_BPF = 351
+ SYS_S390_PCI_MMIO_WRITE = 352
+ SYS_S390_PCI_MMIO_READ = 353
+ SYS_EXECVEAT = 354
+ SYS_USERFAULTFD = 355
+ SYS_MEMBARRIER = 356
+ SYS_RECVMMSG = 357
+ SYS_SENDMMSG = 358
+ SYS_SOCKET = 359
+ SYS_SOCKETPAIR = 360
+ SYS_BIND = 361
+ SYS_CONNECT = 362
+ SYS_LISTEN = 363
+ SYS_ACCEPT4 = 364
+ SYS_GETSOCKOPT = 365
+ SYS_SETSOCKOPT = 366
+ SYS_GETSOCKNAME = 367
+ SYS_GETPEERNAME = 368
+ SYS_SENDTO = 369
+ SYS_SENDMSG = 370
+ SYS_RECVFROM = 371
+ SYS_RECVMSG = 372
+ SYS_SHUTDOWN = 373
+ SYS_MLOCK2 = 374
+ SYS_SELECT = 142
+ SYS_GETRLIMIT = 191
+ SYS_LCHOWN = 198
+ SYS_GETUID = 199
+ SYS_GETGID = 200
+ SYS_GETEUID = 201
+ SYS_GETEGID = 202
+ SYS_SETREUID = 203
+ SYS_SETREGID = 204
+ SYS_GETGROUPS = 205
+ SYS_SETGROUPS = 206
+ SYS_FCHOWN = 207
+ SYS_SETRESUID = 208
+ SYS_GETRESUID = 209
+ SYS_SETRESGID = 210
+ SYS_GETRESGID = 211
+ SYS_CHOWN = 212
+ SYS_SETUID = 213
+ SYS_SETGID = 214
+ SYS_SETFSUID = 215
+ SYS_SETFSGID = 216
+ SYS_NEWFSTATAT = 293
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go
deleted file mode 100644
index b7e7ff088..000000000
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go
+++ /dev/null
@@ -1,437 +0,0 @@
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs types_dragonfly.go
-
-// +build 386,dragonfly
-
-package unix
-
-const (
- sizeofPtr = 0x4
- sizeofShort = 0x2
- sizeofInt = 0x4
- sizeofLong = 0x4
- sizeofLongLong = 0x8
-)
-
-type (
- _C_short int16
- _C_int int32
- _C_long int32
- _C_long_long int64
-)
-
-type Timespec struct {
- Sec int32
- Nsec int32
-}
-
-type Timeval struct {
- Sec int32
- Usec int32
-}
-
-type Rusage struct {
- Utime Timeval
- Stime Timeval
- Maxrss int32
- Ixrss int32
- Idrss int32
- Isrss int32
- Minflt int32
- Majflt int32
- Nswap int32
- Inblock int32
- Oublock int32
- Msgsnd int32
- Msgrcv int32
- Nsignals int32
- Nvcsw int32
- Nivcsw int32
-}
-
-type Rlimit struct {
- Cur int64
- Max int64
-}
-
-type _Gid_t uint32
-
-const (
- S_IFMT = 0xf000
- S_IFIFO = 0x1000
- S_IFCHR = 0x2000
- S_IFDIR = 0x4000
- S_IFBLK = 0x6000
- S_IFREG = 0x8000
- S_IFLNK = 0xa000
- S_IFSOCK = 0xc000
- S_ISUID = 0x800
- S_ISGID = 0x400
- S_ISVTX = 0x200
- S_IRUSR = 0x100
- S_IWUSR = 0x80
- S_IXUSR = 0x40
-)
-
-type Stat_t struct {
- Ino uint64
- Nlink uint32
- Dev uint32
- Mode uint16
- Padding1 uint16
- Uid uint32
- Gid uint32
- Rdev uint32
- Atim Timespec
- Mtim Timespec
- Ctim Timespec
- Size int64
- Blocks int64
- Blksize uint32
- Flags uint32
- Gen uint32
- Lspare int32
- Qspare1 int64
- Qspare2 int64
-}
-
-type Statfs_t struct {
- Spare2 int32
- Bsize int32
- Iosize int32
- Blocks int32
- Bfree int32
- Bavail int32
- Files int32
- Ffree int32
- Fsid Fsid
- Owner uint32
- Type int32
- Flags int32
- Syncwrites int32
- Asyncwrites int32
- Fstypename [16]int8
- Mntonname [80]int8
- Syncreads int32
- Asyncreads int32
- Spares1 int16
- Mntfromname [80]int8
- Spares2 int16
- Spare [2]int32
-}
-
-type Flock_t struct {
- Start int64
- Len int64
- Pid int32
- Type int16
- Whence int16
-}
-
-type Dirent struct {
- Fileno uint64
- Namlen uint16
- Type uint8
- Unused1 uint8
- Unused2 uint32
- Name [256]int8
-}
-
-type Fsid struct {
- Val [2]int32
-}
-
-type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type RawSockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
-type RawSockaddrUnix struct {
- Len uint8
- Family uint8
- Path [104]int8
-}
-
-type RawSockaddrDatalink struct {
- Len uint8
- Family uint8
- Index uint16
- Type uint8
- Nlen uint8
- Alen uint8
- Slen uint8
- Data [12]int8
- Rcf uint16
- Route [16]uint16
-}
-
-type RawSockaddr struct {
- Len uint8
- Family uint8
- Data [14]int8
-}
-
-type RawSockaddrAny struct {
- Addr RawSockaddr
- Pad [92]int8
-}
-
-type _Socklen uint32
-
-type Linger struct {
- Onoff int32
- Linger int32
-}
-
-type Iovec struct {
- Base *byte
- Len uint32
-}
-
-type IPMreq struct {
- Multiaddr [4]byte /* in_addr */
- Interface [4]byte /* in_addr */
-}
-
-type IPv6Mreq struct {
- Multiaddr [16]byte /* in6_addr */
- Interface uint32
-}
-
-type Msghdr struct {
- Name *byte
- Namelen uint32
- Iov *Iovec
- Iovlen int32
- Control *byte
- Controllen uint32
- Flags int32
-}
-
-type Cmsghdr struct {
- Len uint32
- Level int32
- Type int32
-}
-
-type Inet6Pktinfo struct {
- Addr [16]byte /* in6_addr */
- Ifindex uint32
-}
-
-type IPv6MTUInfo struct {
- Addr RawSockaddrInet6
- Mtu uint32
-}
-
-type ICMPv6Filter struct {
- Filt [8]uint32
-}
-
-const (
- SizeofSockaddrInet4 = 0x10
- SizeofSockaddrInet6 = 0x1c
- SizeofSockaddrAny = 0x6c
- SizeofSockaddrUnix = 0x6a
- SizeofSockaddrDatalink = 0x36
- SizeofLinger = 0x8
- SizeofIPMreq = 0x8
- SizeofIPv6Mreq = 0x14
- SizeofMsghdr = 0x1c
- SizeofCmsghdr = 0xc
- SizeofInet6Pktinfo = 0x14
- SizeofIPv6MTUInfo = 0x20
- SizeofICMPv6Filter = 0x20
-)
-
-const (
- PTRACE_TRACEME = 0x0
- PTRACE_CONT = 0x7
- PTRACE_KILL = 0x8
-)
-
-type Kevent_t struct {
- Ident uint32
- Filter int16
- Flags uint16
- Fflags uint32
- Data int32
- Udata *byte
-}
-
-type FdSet struct {
- Bits [32]uint32
-}
-
-const (
- SizeofIfMsghdr = 0x68
- SizeofIfData = 0x58
- SizeofIfaMsghdr = 0x14
- SizeofIfmaMsghdr = 0x10
- SizeofIfAnnounceMsghdr = 0x18
- SizeofRtMsghdr = 0x5c
- SizeofRtMetrics = 0x38
-)
-
-type IfMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Addrs int32
- Flags int32
- Index uint16
- Pad_cgo_0 [2]byte
- Data IfData
-}
-
-type IfData struct {
- Type uint8
- Physical uint8
- Addrlen uint8
- Hdrlen uint8
- Recvquota uint8
- Xmitquota uint8
- Pad_cgo_0 [2]byte
- Mtu uint32
- Metric uint32
- Link_state uint32
- Baudrate uint64
- Ipackets uint32
- Ierrors uint32
- Opackets uint32
- Oerrors uint32
- Collisions uint32
- Ibytes uint32
- Obytes uint32
- Imcasts uint32
- Omcasts uint32
- Iqdrops uint32
- Noproto uint32
- Hwassist uint32
- Unused uint32
- Lastchange Timeval
-}
-
-type IfaMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Addrs int32
- Flags int32
- Index uint16
- Pad_cgo_0 [2]byte
- Metric int32
-}
-
-type IfmaMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Addrs int32
- Flags int32
- Index uint16
- Pad_cgo_0 [2]byte
-}
-
-type IfAnnounceMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Index uint16
- Name [16]int8
- What uint16
-}
-
-type RtMsghdr struct {
- Msglen uint16
- Version uint8
- Type uint8
- Index uint16
- Pad_cgo_0 [2]byte
- Flags int32
- Addrs int32
- Pid int32
- Seq int32
- Errno int32
- Use int32
- Inits uint32
- Rmx RtMetrics
-}
-
-type RtMetrics struct {
- Locks uint32
- Mtu uint32
- Pksent uint32
- Expire uint32
- Sendpipe uint32
- Ssthresh uint32
- Rtt uint32
- Rttvar uint32
- Recvpipe uint32
- Hopcount uint32
- Mssopt uint16
- Pad uint16
- Msl uint32
- Iwmaxsegs uint32
- Iwcapsegs uint32
-}
-
-const (
- SizeofBpfVersion = 0x4
- SizeofBpfStat = 0x8
- SizeofBpfProgram = 0x8
- SizeofBpfInsn = 0x8
- SizeofBpfHdr = 0x14
-)
-
-type BpfVersion struct {
- Major uint16
- Minor uint16
-}
-
-type BpfStat struct {
- Recv uint32
- Drop uint32
-}
-
-type BpfProgram struct {
- Len uint32
- Insns *BpfInsn
-}
-
-type BpfInsn struct {
- Code uint16
- Jt uint8
- Jf uint8
- K uint32
-}
-
-type BpfHdr struct {
- Tstamp Timeval
- Caplen uint32
- Datalen uint32
- Hdrlen uint16
- Pad_cgo_0 [2]byte
-}
-
-type Termios struct {
- Iflag uint32
- Oflag uint32
- Cflag uint32
- Lflag uint32
- Cc [20]uint8
- Ispeed uint32
- Ospeed uint32
-}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go
index cf5db0e1b..f3ddf5345 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go
@@ -151,6 +151,15 @@ type Flock_t struct {
Pid int32
}
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
type RawSockaddrInet4 struct {
Family uint16
Port uint16
@@ -188,6 +197,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]int8
@@ -310,6 +325,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -574,10 +590,31 @@ type EpollEvent struct {
const (
AT_FDCWD = -0x64
- AT_SYMLINK_NOFOLLOW = 0x100
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go
index ac27784ab..a923bef35 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go
@@ -153,6 +153,15 @@ type Flock_t struct {
Pad_cgo_1 [4]byte
}
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
type RawSockaddrInet4 struct {
Family uint16
Port uint16
@@ -190,6 +199,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]int8
@@ -314,6 +329,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -592,10 +608,31 @@ type EpollEvent struct {
const (
AT_FDCWD = -0x64
- AT_SYMLINK_NOFOLLOW = 0x100
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go
index b318bb851..817ac9c29 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go
@@ -192,6 +192,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]uint8
@@ -314,6 +320,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -563,10 +570,31 @@ type EpollEvent struct {
const (
AT_FDCWD = -0x64
- AT_SYMLINK_NOFOLLOW = 0x100
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go
index a159aadab..e786addf7 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go
@@ -200,6 +200,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]int8
@@ -324,6 +330,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -573,6 +580,7 @@ type Ustat_t struct {
type EpollEvent struct {
Events uint32
+ PadFd int32
Fd int32
Pad int32
}
@@ -580,9 +588,30 @@ type EpollEvent struct {
const (
AT_FDCWD = -0x64
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64.go
new file mode 100644
index 000000000..b29894deb
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64.go
@@ -0,0 +1,627 @@
+// +build mips64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint32
+ Pad1 [3]int32
+ Ino uint64
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Pad2 [3]uint32
+ Size int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Blksize uint32
+ Pad4 uint32
+ Blocks int64
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Frsize int64
+ Blocks uint64
+ Bfree uint64
+ Files uint64
+ Ffree uint64
+ Bavail uint64
+ Fsid Fsid
+ Namelen int64
+ Flags int64
+ Spare [5]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x27
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Regs [102]uint64
+ U_tsize uint64
+ U_dsize uint64
+ U_ssize uint64
+ Start_code uint64
+ Start_data uint64
+ Start_stack uint64
+ Signal int64
+ U_ar0 uint64
+ Magic uint64
+ U_comm [32]int8
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]int8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [32]uint8
+ Pad_cgo_0 [3]byte
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64le.go
new file mode 100644
index 000000000..d9af71b69
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_mips64le.go
@@ -0,0 +1,627 @@
+// +build mips64le,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint32
+ Pad1 [3]int32
+ Ino uint64
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Pad2 [3]uint32
+ Size int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Blksize uint32
+ Pad4 uint32
+ Blocks int64
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Frsize int64
+ Blocks uint64
+ Bfree uint64
+ Files uint64
+ Ffree uint64
+ Bavail uint64
+ Fsid Fsid
+ Namelen int64
+ Flags int64
+ Spare [5]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x27
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Regs [102]uint64
+ U_tsize uint64
+ U_dsize uint64
+ U_ssize uint64
+ Start_code uint64
+ Start_data uint64
+ Start_stack uint64
+ Signal int64
+ U_ar0 uint64
+ Magic uint64
+ U_comm [32]int8
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]int8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [32]uint8
+ Pad_cgo_0 [3]byte
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go
index b14cbfef0..4218170a9 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go
@@ -201,6 +201,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]uint8
@@ -325,6 +331,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -582,17 +589,39 @@ type Ustat_t struct {
}
type EpollEvent struct {
- Events uint32
- Fd int32
- Pad int32
+ Events uint32
+ X_padFd int32
+ Fd int32
+ Pad int32
}
const (
AT_FDCWD = -0x64
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
index 22c96a2f0..7db4c78c6 100644
--- a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
@@ -201,6 +201,12 @@ type RawSockaddrNetlink struct {
Groups uint32
}
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
type RawSockaddr struct {
Family uint16
Data [14]uint8
@@ -325,6 +331,7 @@ const (
SizeofSockaddrUnix = 0x6e
SizeofSockaddrLinklayer = 0x14
SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
@@ -582,17 +589,39 @@ type Ustat_t struct {
}
type EpollEvent struct {
- Events uint32
- Fd int32
- Pad int32
+ Events uint32
+ X_padFd int32
+ Fd int32
+ Pad int32
}
const (
AT_FDCWD = -0x64
AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
AT_SYMLINK_NOFOLLOW = 0x100
)
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
type Termios struct {
Iflag uint32
Oflag uint32
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_s390x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_s390x.go
new file mode 100644
index 000000000..76ee57cbf
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_s390x.go
@@ -0,0 +1,649 @@
+// +build s390x,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -fsigned-char types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ _ [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ _ [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ _ [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ _ [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Nlink uint64
+ Mode uint32
+ Uid uint32
+ Gid uint32
+ _ int32
+ Rdev uint64
+ Size int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Blksize int64
+ Blocks int64
+ _ [3]int64
+}
+
+type Statfs_t struct {
+ Type uint32
+ Bsize uint32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen uint32
+ Frsize uint32
+ Flags uint32
+ Spare [4]uint32
+ _ [4]byte
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ _ [5]byte
+}
+
+type Fsid struct {
+ _ [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ _ [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ _ [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x6
+ FADV_NOREUSE = 0x7
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddrHCI struct {
+ Family uint16
+ Dev uint16
+ Channel uint16
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ _ [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ _ [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ _ [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofSockaddrHCI = 0x6
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x27
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ _ uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ _ [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Psw PtracePsw
+ Gprs [16]uint64
+ Acrs [16]uint32
+ Orig_gpr2 uint64
+ Fp_regs PtraceFpregs
+ Per_info PtracePer
+ Ieee_instruction_pointer uint64
+}
+
+type PtracePsw struct {
+ Mask uint64
+ Addr uint64
+}
+
+type PtraceFpregs struct {
+ Fpc uint32
+ _ [4]byte
+ Fprs [16]float64
+}
+
+type PtracePer struct {
+ _ [0]uint64
+ _ [24]byte
+ _ [8]byte
+ Starting_addr uint64
+ Ending_addr uint64
+ Perc_atmid uint16
+ _ [6]byte
+ Address uint64
+ Access_id uint8
+ _ [7]byte
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ _ [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ _ [0]int8
+ _ [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ _ [4]byte
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ _ [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ _ int32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_FOLLOW = 0x400
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+ Fd int32
+ Events int16
+ Revents int16
+}
+
+const (
+ POLLIN = 0x1
+ POLLPRI = 0x2
+ POLLOUT = 0x4
+ POLLRDHUP = 0x2000
+ POLLERR = 0x8
+ POLLHUP = 0x10
+ POLLNVAL = 0x20
+)
+
+type Sigset_t struct {
+ X__val [16]uint64
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [19]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
index 8e1db0202..099108121 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
@@ -90,6 +90,14 @@ var encodings = []struct {
"http://encoding.spec.whatwg.org/index-ibm866.txt",
},
{
+ "ISO 8859-1",
+ "ISOLatin1",
+ "",
+ "ISO8859_1",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/iso-8859_1-1998.ucm",
+ },
+ {
"ISO 8859-2",
"ISOLatin2",
"",
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
index 4143f0662..2bcef84d3 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
@@ -1232,6 +1232,181 @@ var codePage866 = charmap{
},
}
+// ISO8859_1 is the ISO 8859-1 encoding.
+var ISO8859_1 encoding.Encoding = &iso8859_1
+
+var iso8859_1 = charmap{
+ name: "ISO 8859-1",
+ mib: identifier.ISOLatin1,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},
+ {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},
+ {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
+ {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
+ {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},
+ {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},
+ {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
+ {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},
+ {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
+ {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},
+ {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},
+ {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}},
+ {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},
+ {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},
+ {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}},
+ {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
+ {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},
+ {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
+ {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},
+ {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+ {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},
+ {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},
+ {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},
+ {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+ {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},
+ {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},
+ {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
+ {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},
+ {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},
+ {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
+ {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+ {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},
+ {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+ {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},
+ {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
+ {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+ {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
+ {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
+ {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+ {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},
+ {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+ {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
+ {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+ {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
+ {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+ {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+ {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
+ {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},
+ {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
+ {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
+ {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+ {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+ {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+ {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
+ {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},
+ {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
+ {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},
+ {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+ {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
+ {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},
+ {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087,
+ 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f,
+ 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097,
+ 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f,
+ 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,
+ 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,
+ 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,
+ 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,
+ 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,
+ 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,
+ 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7,
+ 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df,
+ 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7,
+ 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef,
+ 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7,
+ 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff,
+ },
+}
+
// ISO8859_2 is the ISO 8859-2 encoding.
var ISO8859_2 encoding.Encoding = &iso8859_2
@@ -5966,6 +6141,7 @@ var listAll = []encoding.Encoding{
CodePage858,
CodePage862,
CodePage866,
+ ISO8859_1,
ISO8859_2,
ISO8859_3,
ISO8859_4,
@@ -5999,4 +6175,4 @@ var listAll = []encoding.Encoding{
XUserDefined,
}
-// Total table size 70448 bytes (68KiB); checksum: 811C9DC5
+// Total table size 72520 bytes (70KiB); checksum: 811C9DC5
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go b/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
index 47fcd1fb1..abc2c9ad1 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
@@ -52,7 +52,7 @@ type Decoder struct {
}
// Bytes converts the given encoded bytes to UTF-8. It returns the converted
-// bytes or 0, err if any error occurred.
+// bytes or nil, err if any error occurred.
func (d *Decoder) Bytes(b []byte) ([]byte, error) {
b, _, err := transform.Bytes(d, b)
if err != nil {
@@ -62,7 +62,7 @@ func (d *Decoder) Bytes(b []byte) ([]byte, error) {
}
// String converts the given encoded string to UTF-8. It returns the converted
-// string or 0, err if any error occurred.
+// string or "", err if any error occurred.
func (d *Decoder) String(s string) (string, error) {
s, _, err := transform.String(d, s)
if err != nil {
@@ -95,7 +95,7 @@ type Encoder struct {
_ struct{}
}
-// Bytes converts bytes from UTF-8. It returns the converted bytes or 0, err if
+// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if
// any error occurred.
func (e *Encoder) Bytes(b []byte) ([]byte, error) {
b, _, err := transform.Bytes(e, b)
@@ -106,7 +106,7 @@ func (e *Encoder) Bytes(b []byte) ([]byte, error) {
}
// String converts a string from UTF-8. It returns the converted string or
-// 0, err if any error occurred.
+// "", err if any error occurred.
func (e *Encoder) String(s string) (string, error) {
s, _, err := transform.String(e, s)
if err != nil {
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/ianaindex.go b/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/ianaindex.go
deleted file mode 100644
index da899e09e..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/ianaindex.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package ianaindex maps names to Encodings as specified by the IANA registry.
-// This includes both the MIME and IANA names.
-//
-// See http://www.iana.org/assignments/character-sets/character-sets.xhtml for
-// more details.
-package ianaindex
-
-import (
- "golang.org/x/text/encoding"
-)
-
-// TODO: allow users to specify their own aliases?
-// TODO: allow users to specify their own indexes?
-// TODO: allow canonicalizing names
-
-// NOTE: only use these top-level variables if we can get the linker to drop
-// the indexes when they are not used. Make them a function or perhaps only
-// support MIME otherwise.
-
-var (
- // MIME is an index to map MIME names. It does not support aliases.
- MIME *Index
-
- // IANA is an index that supports all names and aliases using IANA names as
- // the canonical identifier.
- IANA *Index
-)
-
-// Index maps names registered by IANA to Encodings.
-type Index struct {
-}
-
-// Get returns an Encoding for IANA-registered names. Matching is
-// case-insensitive.
-func (x *Index) Get(name string) (encoding.Encoding, error) {
- panic("TODO: implement")
-}
-
-// Name reports the canonical name of the given Encoding. It will return an
-// error if the e is not associated with a known encoding scheme.
-func (x *Index) Name(e encoding.Encoding) (string, error) {
- panic("TODO: implement")
-}
-
-// TODO: the coverage of this index is rather spotty. Allowing users to set
-// encodings would allow:
-// - users to increase coverage
-// - allow a partially loaded set of encodings in case the user doesn't need to
-// them all.
-// - write an OS-specific wrapper for supported encodings and set them.
-// The exact definition of Set depends a bit on if and how we want to let users
-// write their own Encoding implementations. Also, it is not possible yet to
-// only partially load the encodings without doing some refactoring. Until this
-// is solved, we might as well not support Set.
-// // Set sets the e to be used for the encoding scheme identified by name. Only
-// // canonical names may be used. An empty name assigns e to its internally
-// // associated encoding scheme.
-// func (x *Index) Set(name string, e encoding.Encoding) error {
-// panic("TODO: implement")
-// }
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
index 424cb8be0..099aecc31 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
@@ -39,7 +39,7 @@ loop:
case 0xa1 <= c0 && c0 < 0xe0:
r, size = rune(c0)+(0xff61-0xa1), 1
- case (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xf0):
+ case (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xfd):
if c0 <= 0x9f {
c0 -= 0x70
} else {
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go b/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
index 46622013c..f3f2c4eb0 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
@@ -25,9 +25,6 @@ import (
// the introduction of some kind of error type for conveying the erroneous code
// point.
-// TODO:
-// - Define UTF-32?
-
// UTF8 is the UTF-8 encoding.
var UTF8 encoding.Encoding = utf8enc
@@ -290,6 +287,12 @@ func (u *utf16Decoder) Reset() {
}
func (u *utf16Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ if len(src) == 0 {
+ if atEOF && u.current.bomPolicy&requireBOM != 0 {
+ return 0, 0, ErrMissingBOM
+ }
+ return 0, 0, nil
+ }
if u.current.bomPolicy&acceptBOM != 0 {
if len(src) < 2 {
return 0, 0, transform.ErrShortSrc
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go b/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go
deleted file mode 100644
index 52c11a932..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package display
-
-// This file contains sets of data for specific languages. Users can use these
-// to create smaller collections of supported languages and reduce total table
-// size.
-
-// The variable names defined here correspond to those in package language.
-
-var (
- Afrikaans *Dictionary = &af // af
- Amharic *Dictionary = &am // am
- Arabic *Dictionary = &ar // ar
- ModernStandardArabic *Dictionary = Arabic // ar-001
- Azerbaijani *Dictionary = &az // az
- Bulgarian *Dictionary = &bg // bg
- Bengali *Dictionary = &bn // bn
- Catalan *Dictionary = &ca // ca
- Czech *Dictionary = &cs // cs
- Danish *Dictionary = &da // da
- German *Dictionary = &de // de
- Greek *Dictionary = &el // el
- English *Dictionary = &en // en
- AmericanEnglish *Dictionary = English // en-US
- BritishEnglish *Dictionary = English // en-GB
- Spanish *Dictionary = &es // es
- EuropeanSpanish *Dictionary = Spanish // es-ES
- LatinAmericanSpanish *Dictionary = Spanish // es-419
- Estonian *Dictionary = &et // et
- Persian *Dictionary = &fa // fa
- Finnish *Dictionary = &fi // fi
- Filipino *Dictionary = &fil // fil
- French *Dictionary = &fr // fr
- Gujarati *Dictionary = &gu // gu
- Hebrew *Dictionary = &he // he
- Hindi *Dictionary = &hi // hi
- Croatian *Dictionary = &hr // hr
- Hungarian *Dictionary = &hu // hu
- Armenian *Dictionary = &hy // hy
- Indonesian *Dictionary = &id // id
- Icelandic *Dictionary = &is // is
- Italian *Dictionary = &it // it
- Japanese *Dictionary = &ja // ja
- Georgian *Dictionary = &ka // ka
- Kazakh *Dictionary = &kk // kk
- Khmer *Dictionary = &km // km
- Kannada *Dictionary = &kn // kn
- Korean *Dictionary = &ko // ko
- Kirghiz *Dictionary = &ky // ky
- Lao *Dictionary = &lo // lo
- Lithuanian *Dictionary = &lt // lt
- Latvian *Dictionary = &lv // lv
- Macedonian *Dictionary = &mk // mk
- Malayalam *Dictionary = &ml // ml
- Mongolian *Dictionary = &mn // mn
- Marathi *Dictionary = &mr // mr
- Malay *Dictionary = &ms // ms
- Burmese *Dictionary = &my // my
- Nepali *Dictionary = &ne // ne
- Dutch *Dictionary = &nl // nl
- Norwegian *Dictionary = &no // no
- Punjabi *Dictionary = &pa // pa
- Polish *Dictionary = &pl // pl
- Portuguese *Dictionary = &pt // pt
- BrazilianPortuguese *Dictionary = Portuguese // pt-BR
- EuropeanPortuguese *Dictionary = &ptPT // pt-PT
- Romanian *Dictionary = &ro // ro
- Russian *Dictionary = &ru // ru
- Sinhala *Dictionary = &si // si
- Slovak *Dictionary = &sk // sk
- Slovenian *Dictionary = &sl // sl
- Albanian *Dictionary = &sq // sq
- Serbian *Dictionary = &sr // sr
- SerbianLatin *Dictionary = &srLatn // sr
- Swedish *Dictionary = &sv // sv
- Swahili *Dictionary = &sw // sw
- Tamil *Dictionary = &ta // ta
- Telugu *Dictionary = &te // te
- Thai *Dictionary = &th // th
- Turkish *Dictionary = &tr // tr
- Ukrainian *Dictionary = &uk // uk
- Urdu *Dictionary = &ur // ur
- Uzbek *Dictionary = &uz // uz
- Vietnamese *Dictionary = &vi // vi
- Chinese *Dictionary = &zh // zh
- SimplifiedChinese *Dictionary = Chinese // zh-Hans
- TraditionalChinese *Dictionary = &zhHant // zh-Hant
- Zulu *Dictionary = &zu // zu
-)
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/display.go b/Godeps/_workspace/src/golang.org/x/text/language/display/display.go
deleted file mode 100644
index 6091cc500..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/language/display/display.go
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:generate go run maketables.go -output tables.go
-
-// Package display provides display names for languages, scripts and regions in
-// a requested language.
-//
-// The data is based on CLDR's localeDisplayNames. It includes the names of the
-// draft level "contributed" or "approved". The resulting tables are quite
-// large. The display package is designed so that users can reduce the linked-in
-// table sizes by cherry picking the languages one wishes to support. There is a
-// Dictionary defined for a selected set of common languages for this purpose.
-package display
-
-import (
- "strings"
-
- "golang.org/x/text/language"
-)
-
-/*
-TODO:
-All fairly low priority at the moment:
- - Include alternative and variants as an option (using func options).
- - Option for returning the empty string for undefined values.
- - Support variants, currencies, time zones, option names and other data
- provided in CLDR.
- - Do various optimizations:
- - Reduce size of offset tables.
- - Consider compressing infrequently used languages and decompress on demand.
-*/
-
-// A Namer is used to get the name for a given value, such as a Tag, Language,
-// Script or Region.
-type Namer interface {
- // Name returns a display string for the given value. A Namer returns an
- // empty string for values it does not support. A Namer may support naming
- // an unspecified value. For example, when getting the name for a region for
- // a tag that does not have a defined Region, it may return the name for an
- // unknown region. It is up to the user to filter calls to Name for values
- // for which one does not want to have a name string.
- Name(x interface{}) string
-}
-
-var (
- // Supported lists the languages for which names are defined.
- Supported language.Coverage
-
- // The set of all possible values for which names are defined. Note that not
- // all Namer implementations will cover all the values of a given type.
- // A Namer will return the empty string for unsupported values.
- Values language.Coverage
-
- matcher language.Matcher
-)
-
-func init() {
- tags := make([]language.Tag, numSupported)
- s := supported
- for i := range tags {
- p := strings.IndexByte(s, '|')
- tags[i] = language.Raw.Make(s[:p])
- s = s[p+1:]
- }
- matcher = language.NewMatcher(tags)
- Supported = language.NewCoverage(tags)
-
- Values = language.NewCoverage(langTagSet.Tags, supportedScripts, supportedRegions)
-}
-
-// Languages returns a Namer for naming languages. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either language.Base
-// or language.Tag. Note that the result may differ between passing a tag or its
-// base language. For example, for English, passing "nl-BE" would return Flemish
-// whereas passing "nl" returns "Dutch".
-func Languages(t language.Tag) Namer {
- if _, index, conf := matcher.Match(t); conf != language.No {
- return languageNamer(index)
- }
- return nil
-}
-
-type languageNamer int
-
-func (n languageNamer) name(i int) string {
- return lookup(langHeaders[:], int(n), i)
-}
-
-// Name implements the Namer interface for language names.
-func (n languageNamer) Name(x interface{}) string {
- return nameLanguage(n, x)
-}
-
-// nonEmptyIndex walks up the parent chain until a non-empty header is found.
-// It returns -1 if no index could be found.
-func nonEmptyIndex(h []header, index int) int {
- for ; index != -1 && h[index].data == ""; index = int(parents[index]) {
- }
- return index
-}
-
-// Scripts returns a Namer for naming scripts. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either a
-// language.Script or a language.Tag. It will not attempt to infer a script for
-// tags with an unspecified script.
-func Scripts(t language.Tag) Namer {
- if _, index, conf := matcher.Match(t); conf != language.No {
- if index = nonEmptyIndex(scriptHeaders[:], index); index != -1 {
- return scriptNamer(index)
- }
- }
- return nil
-}
-
-type scriptNamer int
-
-func (n scriptNamer) name(i int) string {
- return lookup(scriptHeaders[:], int(n), i)
-}
-
-// Name implements the Namer interface for script names.
-func (n scriptNamer) Name(x interface{}) string {
- return nameScript(n, x)
-}
-
-// Regions returns a Namer for naming regions. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either a
-// language.Region or a language.Tag. It will not attempt to infer a region for
-// tags with an unspecified region.
-func Regions(t language.Tag) Namer {
- if _, index, conf := matcher.Match(t); conf != language.No {
- if index = nonEmptyIndex(regionHeaders[:], index); index != -1 {
- return regionNamer(index)
- }
- }
- return nil
-}
-
-type regionNamer int
-
-func (n regionNamer) name(i int) string {
- return lookup(regionHeaders[:], int(n), i)
-}
-
-// Name implements the Namer interface for region names.
-func (n regionNamer) Name(x interface{}) string {
- return nameRegion(n, x)
-}
-
-// Tags returns a Namer for giving a full description of a tag. The names of
-// scripts and regions that are not already implied by the language name will
-// in appended within parentheses. It returns nil if there is not data for the
-// given tag. The type passed to Name must be a tag.
-func Tags(t language.Tag) Namer {
- if _, index, conf := matcher.Match(t); conf != language.No {
- return tagNamer(index)
- }
- return nil
-}
-
-type tagNamer int
-
-// Name implements the Namer interface for tag names.
-func (n tagNamer) Name(x interface{}) string {
- return nameTag(languageNamer(n), scriptNamer(n), regionNamer(n), x)
-}
-
-// lookup finds the name for an entry in a global table, traversing the
-// inheritance hierarchy if needed.
-func lookup(table []header, dict, want int) string {
- for dict != -1 {
- if s := table[dict].name(want); s != "" {
- return s
- }
- dict = int(parents[dict])
- }
- return ""
-}
-
-// A Dictionary holds a collection of Namers for a single language. One can
-// reduce the amount of data linked in to a binary by only referencing
-// Dictionaries for the languages one needs to support instead of using the
-// generic Namer factories.
-type Dictionary struct {
- parent *Dictionary
- lang header
- script header
- region header
-}
-
-// Tags returns a Namer for giving a full description of a tag. The names of
-// scripts and regions that are not already implied by the language name will
-// in appended within parentheses. It returns nil if there is not data for the
-// given tag. The type passed to Name must be a tag.
-func (d *Dictionary) Tags() Namer {
- return dictTags{d}
-}
-
-type dictTags struct {
- d *Dictionary
-}
-
-// Name implements the Namer interface for tag names.
-func (n dictTags) Name(x interface{}) string {
- return nameTag(dictLanguages{n.d}, dictScripts{n.d}, dictRegions{n.d}, x)
-}
-
-// Languages returns a Namer for naming languages. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either language.Base
-// or language.Tag. Note that the result may differ between passing a tag or its
-// base language. For example, for English, passing "nl-BE" would return Flemish
-// whereas passing "nl" returns "Dutch".
-func (d *Dictionary) Languages() Namer {
- return dictLanguages{d}
-}
-
-type dictLanguages struct {
- d *Dictionary
-}
-
-func (n dictLanguages) name(i int) string {
- for d := n.d; d != nil; d = d.parent {
- if s := d.lang.name(i); s != "" {
- return s
- }
- }
- return ""
-}
-
-// Name implements the Namer interface for language names.
-func (n dictLanguages) Name(x interface{}) string {
- return nameLanguage(n, x)
-}
-
-// Scripts returns a Namer for naming scripts. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either a
-// language.Script or a language.Tag. It will not attempt to infer a script for
-// tags with an unspecified script.
-func (d *Dictionary) Scripts() Namer {
- return dictScripts{d}
-}
-
-type dictScripts struct {
- d *Dictionary
-}
-
-func (n dictScripts) name(i int) string {
- for d := n.d; d != nil; d = d.parent {
- if s := d.script.name(i); s != "" {
- return s
- }
- }
- return ""
-}
-
-// Name implements the Namer interface for script names.
-func (n dictScripts) Name(x interface{}) string {
- return nameScript(n, x)
-}
-
-// Regions returns a Namer for naming regions. It returns nil if there is no
-// data for the given tag. The type passed to Name must be either a
-// language.Region or a language.Tag. It will not attempt to infer a region for
-// tags with an unspecified region.
-func (d *Dictionary) Regions() Namer {
- return dictRegions{d}
-}
-
-type dictRegions struct {
- d *Dictionary
-}
-
-func (n dictRegions) name(i int) string {
- for d := n.d; d != nil; d = d.parent {
- if s := d.region.name(i); s != "" {
- return s
- }
- }
- return ""
-}
-
-// Name implements the Namer interface for region names.
-func (n dictRegions) Name(x interface{}) string {
- return nameRegion(n, x)
-}
-
-// A SelfNamer implements a Namer that returns the name of language in this same
-// language. It provides a very compact mechanism to provide a comprehensive
-// list of languages to users in their native language.
-type SelfNamer struct {
- // Supported defines the values supported by this Namer.
- Supported language.Coverage
-}
-
-var (
- // Self is a shared instance of a SelfNamer.
- Self *SelfNamer = &self
-
- self = SelfNamer{language.NewCoverage(selfTagSet.Tags)}
-)
-
-// Name returns the name of a given language tag in the language identified by
-// this tag. It supports both the language.Base and language.Tag types.
-func (n SelfNamer) Name(x interface{}) string {
- t, _ := language.All.Compose(x)
- base, scr, reg := t.Raw()
- baseScript := language.Script{}
- if (scr == language.Script{} && reg != language.Region{}) {
- // For looking up in the self dictionary, we need to select the
- // maximized script. This is even the case if the script isn't
- // specified.
- s1, _ := t.Script()
- if baseScript = getScript(base); baseScript != s1 {
- scr = s1
- }
- }
-
- i, scr, reg := selfTagSet.index(base, scr, reg)
- if i == -1 {
- return ""
- }
-
- // Only return the display name if the script matches the expected script.
- if (scr != language.Script{}) {
- if (baseScript == language.Script{}) {
- baseScript = getScript(base)
- }
- if baseScript != scr {
- return ""
- }
- }
-
- return selfHeaders[0].name(i)
-}
-
-// getScript returns the maximized script for a base language.
-func getScript(b language.Base) language.Script {
- tag, _ := language.Raw.Compose(b)
- scr, _ := tag.Script()
- return scr
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go b/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go
deleted file mode 100644
index 794098ad7..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package display
-
-// This file contains common lookup code that is shared between the various
-// implementations of Namer and Dictionaries.
-
-import (
- "fmt"
- "sort"
- "strings"
-
- "golang.org/x/text/language"
-)
-
-type namer interface {
- // name gets the string for the given index. It should walk the
- // inheritance chain if a value is not present in the base index.
- name(idx int) string
-}
-
-func nameLanguage(n namer, x interface{}) string {
- t, _ := language.All.Compose(x)
- i, _, _ := langTagSet.index(t.Raw())
- return n.name(i)
-}
-
-func nameScript(n namer, x interface{}) string {
- t, _ := language.DeprecatedScript.Compose(x)
- _, s, _ := t.Raw()
- return n.name(scriptIndex.index(s.String()))
-}
-
-func nameRegion(n namer, x interface{}) string {
- t, _ := language.DeprecatedRegion.Compose(x)
- _, _, r := t.Raw()
- return n.name(regionIndex.index(r.String()))
-}
-
-func nameTag(langN, scrN, regN namer, x interface{}) string {
- t, ok := x.(language.Tag)
- if !ok {
- return ""
- }
- const form = language.All &^ language.SuppressScript
- if c, err := form.Canonicalize(t); err == nil {
- t = c
- }
- i, scr, reg := langTagSet.index(t.Raw())
- if i == -1 {
- return ""
- }
-
- str := langN.name(i)
- if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR {
- ss, sr := "", ""
- if hasS {
- ss = scrN.name(scriptIndex.index(scr.String()))
- }
- if hasR {
- sr = regN.name(regionIndex.index(reg.String()))
- }
- // TODO: use patterns in CLDR or at least confirm they are the same for
- // all languages.
- if ss != "" && sr != "" {
- return fmt.Sprintf("%s (%s, %s)", str, ss, sr)
- }
- if ss != "" || sr != "" {
- return fmt.Sprintf("%s (%s%s)", str, ss, sr)
- }
- }
- return str
-}
-
-// header contains the data and indexes for a single namer.
-// data contains a series of strings concatenated into one. index contains the
-// offsets for a string in data. For example, consider a header that defines
-// strings for the languages de, el, en, fi, and nl:
-//
-// header{
-// data: "GermanGreekEnglishDutch",
-// index: []uint16{ 0, 6, 11, 18, 18, 23 },
-// }
-//
-// For a language with index i, the string is defined by
-// data[index[i]:index[i+1]]. So the number of elements in index is always one
-// greater than the number of languages for which header defines a value.
-// A string for a language may be empty, which means the name is undefined. In
-// the above example, the name for fi (Finnish) is undefined.
-type header struct {
- data string
- index []uint16
-}
-
-// name looks up the name for a tag in the dictionary, given its index.
-func (h *header) name(i int) string {
- if 0 <= i && i < len(h.index)-1 {
- return h.data[h.index[i]:h.index[i+1]]
- }
- return ""
-}
-
-// tagSet is used to find the index of a language in a set of tags.
-type tagSet struct {
- single tagIndex
- long []string
-}
-
-var (
- langTagSet = tagSet{
- single: langIndex,
- long: langTagsLong,
- }
-
- // selfTagSet is used for indexing the language strings in their own
- // language.
- selfTagSet = tagSet{
- single: selfIndex,
- long: selfTagsLong,
- }
-
- zzzz = language.MustParseScript("Zzzz")
- zz = language.MustParseRegion("ZZ")
-)
-
-// index returns the index of the tag for the given base, script and region or
-// its parent if the tag is not available. If the match is for a parent entry,
-// the excess script and region are returned.
-func (ts *tagSet) index(base language.Base, scr language.Script, reg language.Region) (int, language.Script, language.Region) {
- lang := base.String()
- index := -1
- if (scr != language.Script{} || reg != language.Region{}) {
- if scr == zzzz {
- scr = language.Script{}
- }
- if reg == zz {
- reg = language.Region{}
- }
-
- i := sort.SearchStrings(ts.long, lang)
- // All entries have either a script or a region and not both.
- scrStr, regStr := scr.String(), reg.String()
- for ; i < len(ts.long) && strings.HasPrefix(ts.long[i], lang); i++ {
- if s := ts.long[i][len(lang)+1:]; s == scrStr {
- scr = language.Script{}
- index = i + ts.single.len()
- break
- } else if s == regStr {
- reg = language.Region{}
- index = i + ts.single.len()
- break
- }
- }
- }
- if index == -1 {
- index = ts.single.index(lang)
- }
- return index, scr, reg
-}
-
-func (ts *tagSet) Tags() []language.Tag {
- tags := make([]language.Tag, 0, ts.single.len()+len(ts.long))
- ts.single.keys(func(s string) {
- tags = append(tags, language.Raw.MustParse(s))
- })
- for _, s := range ts.long {
- tags = append(tags, language.Raw.MustParse(s))
- }
- return tags
-}
-
-func supportedScripts() []language.Script {
- scr := make([]language.Script, 0, scriptIndex.len())
- scriptIndex.keys(func(s string) {
- scr = append(scr, language.MustParseScript(s))
- })
- return scr
-}
-
-func supportedRegions() []language.Region {
- reg := make([]language.Region, 0, regionIndex.len())
- regionIndex.keys(func(s string) {
- reg = append(reg, language.MustParseRegion(s))
- })
- return reg
-}
-
-// tagIndex holds a concatenated lists of subtags of length 2 to 4, one string
-// for each length, which can be used in combination with binary search to get
-// the index associated with a tag.
-// For example, a tagIndex{
-// "arenesfrruzh", // 6 2-byte tags.
-// "barwae", // 2 3-byte tags.
-// "",
-// }
-// would mean that the 2-byte tag "fr" had an index of 3, and the 3-byte tag
-// "wae" had an index of 7.
-type tagIndex [3]string
-
-func (t *tagIndex) index(s string) int {
- sz := len(s)
- if sz < 2 || 4 < sz {
- return -1
- }
- a := t[sz-2]
- index := sort.Search(len(a)/sz, func(i int) bool {
- p := i * sz
- return a[p:p+sz] >= s
- })
- p := index * sz
- if end := p + sz; end > len(a) || a[p:end] != s {
- return -1
- }
- // Add the number of tags for smaller sizes.
- for i := 0; i < sz-2; i++ {
- index += len(t[i]) / (i + 2)
- }
- return index
-}
-
-// len returns the number of tags that are contained in the tagIndex.
-func (t *tagIndex) len() (n int) {
- for i, s := range t {
- n += len(s) / (i + 2)
- }
- return n
-}
-
-// keys calls f for each tag.
-func (t *tagIndex) keys(f func(key string)) {
- for i, s := range *t {
- for ; s != ""; s = s[i+2:] {
- f(s[:i+2])
- }
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go b/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go
deleted file mode 100644
index 3fcd9c87d..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go
+++ /dev/null
@@ -1,596 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Generator for display name tables.
-
-package main
-
-import (
- "bytes"
- "flag"
- "fmt"
- "log"
- "reflect"
- "sort"
- "strings"
-
- "golang.org/x/text/internal/gen"
- "golang.org/x/text/language"
- "golang.org/x/text/unicode/cldr"
-)
-
-var (
- test = flag.Bool("test", false,
- "test existing tables; can be used to compare web data with package data.")
- outputFile = flag.String("output", "tables.go", "output file")
-
- stats = flag.Bool("stats", false, "prints statistics to stderr")
-
- short = flag.Bool("short", false, `Use "short" alternatives, when available.`)
- draft = flag.String("draft",
- "contributed",
- `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`)
- pkg = flag.String("package",
- "display",
- "the name of the package in which the generated file is to be included")
-
- tags = newTagSet("tags",
- []language.Tag{},
- "space-separated list of tags to include or empty for all")
- dict = newTagSet("dict",
- dictTags(),
- "space-separated list or tags for which to include a Dictionary. "+
- `"" means the common list from go.text/language.`)
-)
-
-func dictTags() (tag []language.Tag) {
- // TODO: replace with language.Common.Tags() once supported.
- const str = "af am ar ar-001 az bg bn ca cs da de el en en-US en-GB " +
- "es es-ES es-419 et fa fi fil fr fr-CA gu he hi hr hu hy id is it ja " +
- "ka kk km kn ko ky lo lt lv mk ml mn mr ms my ne nl no pa pl pt pt-BR " +
- "pt-PT ro ru si sk sl sq sr sr-Latn sv sw ta te th tr uk ur uz vi " +
- "zh zh-Hans zh-Hant zu"
-
- for _, s := range strings.Split(str, " ") {
- tag = append(tag, language.MustParse(s))
- }
- return tag
-}
-
-func main() {
- gen.Init()
-
- // Read the CLDR zip file.
- r := gen.OpenCLDRCoreZip()
- defer r.Close()
-
- d := &cldr.Decoder{}
- d.SetDirFilter("main", "supplemental")
- d.SetSectionFilter("localeDisplayNames")
- data, err := d.DecodeZip(r)
- if err != nil {
- log.Fatalf("DecodeZip: %v", err)
- }
-
- w := gen.NewCodeWriter()
- defer w.WriteGoFile(*outputFile, "display")
-
- gen.WriteCLDRVersion(w)
-
- b := builder{
- w: w,
- data: data,
- group: make(map[string]*group),
- }
- b.generate()
-}
-
-const tagForm = language.All
-
-// tagSet is used to parse command line flags of tags. It implements the
-// flag.Value interface.
-type tagSet map[language.Tag]bool
-
-func newTagSet(name string, tags []language.Tag, usage string) tagSet {
- f := tagSet(make(map[language.Tag]bool))
- for _, t := range tags {
- f[t] = true
- }
- flag.Var(f, name, usage)
- return f
-}
-
-// String implements the String method of the flag.Value interface.
-func (f tagSet) String() string {
- tags := []string{}
- for t := range f {
- tags = append(tags, t.String())
- }
- sort.Strings(tags)
- return strings.Join(tags, " ")
-}
-
-// Set implements Set from the flag.Value interface.
-func (f tagSet) Set(s string) error {
- if s != "" {
- for _, s := range strings.Split(s, " ") {
- if s != "" {
- tag, err := tagForm.Parse(s)
- if err != nil {
- return err
- }
- f[tag] = true
- }
- }
- }
- return nil
-}
-
-func (f tagSet) contains(t language.Tag) bool {
- if len(f) == 0 {
- return true
- }
- return f[t]
-}
-
-// builder is used to create all tables with display name information.
-type builder struct {
- w *gen.CodeWriter
-
- data *cldr.CLDR
-
- fromLocs []string
-
- // destination tags for the current locale.
- toTags []string
- toTagIndex map[string]int
-
- // list of supported tags
- supported []language.Tag
-
- // key-value pairs per group
- group map[string]*group
-
- // statistics
- sizeIndex int // total size of all indexes of headers
- sizeData int // total size of all data of headers
- totalSize int
-}
-
-type group struct {
- // Maps from a given language to the Namer data for this language.
- lang map[language.Tag]keyValues
- headers []header
-
- toTags []string
- threeStart int
- fourPlusStart int
-}
-
-// set sets the typ to the name for locale loc.
-func (g *group) set(t language.Tag, typ, name string) {
- kv := g.lang[t]
- if kv == nil {
- kv = make(keyValues)
- g.lang[t] = kv
- }
- if kv[typ] == "" {
- kv[typ] = name
- }
-}
-
-type keyValues map[string]string
-
-type header struct {
- tag language.Tag
- data string
- index []uint16
-}
-
-var versionInfo = `// Version is deprecated. Use CLDRVersion.
-const Version = %#v
-
-`
-
-var self = language.MustParse("mul")
-
-// generate builds and writes all tables.
-func (b *builder) generate() {
- fmt.Fprintf(b.w, versionInfo, cldr.Version)
-
- b.filter()
- b.setData("lang", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
- if ldn.Languages != nil {
- for _, v := range ldn.Languages.Language {
- tag := tagForm.MustParse(v.Type)
- if tags.contains(tag) {
- g.set(loc, tag.String(), v.Data())
- }
- }
- }
- })
- b.setData("script", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
- if ldn.Scripts != nil {
- for _, v := range ldn.Scripts.Script {
- code := language.MustParseScript(v.Type)
- if code.IsPrivateUse() { // Qaaa..Qabx
- // TODO: data currently appears to be very meager.
- // Reconsider if we have data for English.
- if loc == language.English {
- log.Fatal("Consider including data for private use scripts.")
- }
- continue
- }
- g.set(loc, code.String(), v.Data())
- }
- }
- })
- b.setData("region", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
- if ldn.Territories != nil {
- for _, v := range ldn.Territories.Territory {
- g.set(loc, language.MustParseRegion(v.Type).String(), v.Data())
- }
- }
- })
-
- b.makeSupported()
-
- b.writeParents()
-
- b.writeGroup("lang")
- b.writeGroup("script")
- b.writeGroup("region")
-
- b.w.WriteConst("numSupported", len(b.supported))
- buf := bytes.Buffer{}
- for _, tag := range b.supported {
- fmt.Fprint(&buf, tag.String(), "|")
- }
- b.w.WriteConst("supported", buf.String())
-
- b.writeDictionaries()
-
- b.supported = []language.Tag{self}
-
- // Compute the names of locales in their own language. Some of these names
- // may be specified in their parent locales. We iterate the maximum depth
- // of the parent three times to match successive parents of tags until a
- // possible match is found.
- for i := 0; i < 4; i++ {
- b.setData("self", func(g *group, tag language.Tag, ldn *cldr.LocaleDisplayNames) {
- parent := tag
- if b, s, r := tag.Raw(); i > 0 && (s != language.Script{} && r == language.Region{}) {
- parent, _ = language.Raw.Compose(b)
- }
- if ldn.Languages != nil {
- for _, v := range ldn.Languages.Language {
- key := tagForm.MustParse(v.Type)
- saved := key
- if key == parent {
- g.set(self, tag.String(), v.Data())
- }
- for k := 0; k < i; k++ {
- key = key.Parent()
- }
- if key == tag {
- g.set(self, saved.String(), v.Data()) // set does not overwrite a value.
- }
- }
- }
- })
- }
-
- b.writeGroup("self")
-}
-
-func (b *builder) setData(name string, f func(*group, language.Tag, *cldr.LocaleDisplayNames)) {
- b.sizeIndex = 0
- b.sizeData = 0
- b.toTags = nil
- b.fromLocs = nil
- b.toTagIndex = make(map[string]int)
-
- g := b.group[name]
- if g == nil {
- g = &group{lang: make(map[language.Tag]keyValues)}
- b.group[name] = g
- }
- for _, loc := range b.data.Locales() {
- // We use RawLDML instead of LDML as we are managing our own inheritance
- // in this implementation.
- ldml := b.data.RawLDML(loc)
-
- // We do not support the POSIX variant (it is not a supported BCP 47
- // variant). This locale also doesn't happen to contain any data, so
- // we'll skip it by checking for this.
- tag, err := tagForm.Parse(loc)
- if err != nil {
- if ldml.LocaleDisplayNames != nil {
- log.Fatalf("setData: %v", err)
- }
- continue
- }
- if ldml.LocaleDisplayNames != nil && tags.contains(tag) {
- f(g, tag, ldml.LocaleDisplayNames)
- }
- }
-}
-
-func (b *builder) filter() {
- filter := func(s *cldr.Slice) {
- if *short {
- s.SelectOnePerGroup("alt", []string{"short", ""})
- } else {
- s.SelectOnePerGroup("alt", []string{"stand-alone", ""})
- }
- d, err := cldr.ParseDraft(*draft)
- if err != nil {
- log.Fatalf("filter: %v", err)
- }
- s.SelectDraft(d)
- }
- for _, loc := range b.data.Locales() {
- if ldn := b.data.RawLDML(loc).LocaleDisplayNames; ldn != nil {
- if ldn.Languages != nil {
- s := cldr.MakeSlice(&ldn.Languages.Language)
- if filter(&s); len(ldn.Languages.Language) == 0 {
- ldn.Languages = nil
- }
- }
- if ldn.Scripts != nil {
- s := cldr.MakeSlice(&ldn.Scripts.Script)
- if filter(&s); len(ldn.Scripts.Script) == 0 {
- ldn.Scripts = nil
- }
- }
- if ldn.Territories != nil {
- s := cldr.MakeSlice(&ldn.Territories.Territory)
- if filter(&s); len(ldn.Territories.Territory) == 0 {
- ldn.Territories = nil
- }
- }
- }
- }
-}
-
-// makeSupported creates a list of all supported locales.
-func (b *builder) makeSupported() {
- // tags across groups
- for _, g := range b.group {
- for t, _ := range g.lang {
- b.supported = append(b.supported, t)
- }
- }
- b.supported = b.supported[:unique(tagsSorter(b.supported))]
-
-}
-
-type tagsSorter []language.Tag
-
-func (a tagsSorter) Len() int { return len(a) }
-func (a tagsSorter) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
-func (a tagsSorter) Less(i, j int) bool { return a[i].String() < a[j].String() }
-
-func (b *builder) writeGroup(name string) {
- g := b.group[name]
-
- for _, kv := range g.lang {
- for t, _ := range kv {
- g.toTags = append(g.toTags, t)
- }
- }
- g.toTags = g.toTags[:unique(tagsBySize(g.toTags))]
-
- // Allocate header per supported value.
- g.headers = make([]header, len(b.supported))
- for i, sup := range b.supported {
- kv, ok := g.lang[sup]
- if !ok {
- g.headers[i].tag = sup
- continue
- }
- data := []byte{}
- index := make([]uint16, len(g.toTags), len(g.toTags)+1)
- for j, t := range g.toTags {
- index[j] = uint16(len(data))
- data = append(data, kv[t]...)
- }
- index = append(index, uint16(len(data)))
-
- // Trim the tail of the index.
- // TODO: indexes can be reduced in size quite a bit more.
- n := len(index)
- for ; n >= 2 && index[n-2] == index[n-1]; n-- {
- }
- index = index[:n]
-
- // Workaround for a bug in CLDR 26.
- // See http://unicode.org/cldr/trac/ticket/8042.
- if cldr.Version == "26" && sup.String() == "hsb" {
- data = bytes.Replace(data, []byte{'"'}, nil, 1)
- }
- g.headers[i] = header{sup, string(data), index}
- }
- g.writeTable(b.w, name)
-}
-
-type tagsBySize []string
-
-func (l tagsBySize) Len() int { return len(l) }
-func (l tagsBySize) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
-func (l tagsBySize) Less(i, j int) bool {
- a, b := l[i], l[j]
- // Sort single-tag entries based on size first. Otherwise alphabetic.
- if len(a) != len(b) && (len(a) <= 4 || len(b) <= 4) {
- return len(a) < len(b)
- }
- return a < b
-}
-
-// parentIndices returns slice a of len(tags) where tags[a[i]] is the parent
-// of tags[i].
-func parentIndices(tags []language.Tag) []int16 {
- index := make(map[language.Tag]int16)
- for i, t := range tags {
- index[t] = int16(i)
- }
-
- // Construct default parents.
- parents := make([]int16, len(tags))
- for i, t := range tags {
- parents[i] = -1
- for t = t.Parent(); t != language.Und; t = t.Parent() {
- if j, ok := index[t]; ok {
- parents[i] = j
- break
- }
- }
- }
- return parents
-}
-
-func (b *builder) writeParents() {
- parents := parentIndices(b.supported)
- fmt.Fprintf(b.w, "var parents = ")
- b.w.WriteArray(parents)
-}
-
-// writeKeys writes keys to a special index used by the display package.
-// tags are assumed to be sorted by length.
-func writeKeys(w *gen.CodeWriter, name string, keys []string) {
- w.Size += int(3 * reflect.TypeOf("").Size())
- w.WriteComment("Number of keys: %d", len(keys))
- fmt.Fprintf(w, "var (\n\t%sIndex = tagIndex{\n", name)
- for i := 2; i <= 4; i++ {
- sub := []string{}
- for _, t := range keys {
- if len(t) != i {
- break
- }
- sub = append(sub, t)
- }
- s := strings.Join(sub, "")
- w.WriteString(s)
- fmt.Fprintf(w, ",\n")
- keys = keys[len(sub):]
- }
- fmt.Fprintln(w, "\t}")
- if len(keys) > 0 {
- w.Size += int(reflect.TypeOf([]string{}).Size())
- fmt.Fprintf(w, "\t%sTagsLong = ", name)
- w.WriteSlice(keys)
- }
- fmt.Fprintln(w, ")\n")
-}
-
-// identifier creates an identifier from the given tag.
-func identifier(t language.Tag) string {
- return strings.Replace(t.String(), "-", "", -1)
-}
-
-func (h *header) writeEntry(w *gen.CodeWriter, name string) {
- if len(dict) > 0 && dict.contains(h.tag) {
- fmt.Fprintf(w, "\t{ // %s\n", h.tag)
- fmt.Fprintf(w, "\t\t%[1]s%[2]sStr,\n\t\t%[1]s%[2]sIdx,\n", identifier(h.tag), name)
- fmt.Fprintln(w, "\t},")
- } else if len(h.data) == 0 {
- fmt.Fprintln(w, "\t\t{}, //", h.tag)
- } else {
- fmt.Fprintf(w, "\t{ // %s\n", h.tag)
- w.WriteString(h.data)
- fmt.Fprintln(w, ",")
- w.WriteSlice(h.index)
- fmt.Fprintln(w, ",\n\t},")
- }
-}
-
-// write the data for the given header as single entries. The size for this data
-// was already accounted for in writeEntry.
-func (h *header) writeSingle(w *gen.CodeWriter, name string) {
- if len(dict) > 0 && dict.contains(h.tag) {
- tag := identifier(h.tag)
- w.WriteConst(tag+name+"Str", h.data)
-
- // Note that we create a slice instead of an array. If we use an array
- // we need to refer to it as a[:] in other tables, which will cause the
- // array to always be included by the linker. See Issue 7651.
- w.WriteVar(tag+name+"Idx", h.index)
- }
-}
-
-// WriteTable writes an entry for a single Namer.
-func (g *group) writeTable(w *gen.CodeWriter, name string) {
- start := w.Size
- writeKeys(w, name, g.toTags)
- w.Size += len(g.headers) * int(reflect.ValueOf(g.headers[0]).Type().Size())
-
- fmt.Fprintf(w, "var %sHeaders = [%d]header{\n", name, len(g.headers))
-
- title := strings.Title(name)
- for _, h := range g.headers {
- h.writeEntry(w, title)
- }
- fmt.Fprintln(w, "}\n")
-
- for _, h := range g.headers {
- h.writeSingle(w, title)
- }
- n := w.Size - start
- fmt.Fprintf(w, "// Total size for %s: %d bytes (%d KB)\n\n", name, n, n/1000)
-}
-
-func (b *builder) writeDictionaries() {
- fmt.Fprintln(b.w, "// Dictionary entries of frequent languages")
- fmt.Fprintln(b.w, "var (")
- parents := parentIndices(b.supported)
-
- for i, t := range b.supported {
- if dict.contains(t) {
- ident := identifier(t)
- fmt.Fprintf(b.w, "\t%s = Dictionary{ // %s\n", ident, t)
- if p := parents[i]; p == -1 {
- fmt.Fprintln(b.w, "\t\tnil,")
- } else {
- fmt.Fprintf(b.w, "\t\t&%s,\n", identifier(b.supported[p]))
- }
- fmt.Fprintf(b.w, "\t\theader{%[1]sLangStr, %[1]sLangIdx},\n", ident)
- fmt.Fprintf(b.w, "\t\theader{%[1]sScriptStr, %[1]sScriptIdx},\n", ident)
- fmt.Fprintf(b.w, "\t\theader{%[1]sRegionStr, %[1]sRegionIdx},\n", ident)
- fmt.Fprintln(b.w, "\t}")
- }
- }
- fmt.Fprintln(b.w, ")")
-
- var s string
- var a []uint16
- sz := reflect.TypeOf(s).Size()
- sz += reflect.TypeOf(a).Size()
- sz *= 3
- sz += reflect.TypeOf(&a).Size()
- n := int(sz) * len(dict)
- fmt.Fprintf(b.w, "// Total size for %d entries: %d bytes (%d KB)\n\n", len(dict), n, n/1000)
-
- b.w.Size += n
-}
-
-// unique sorts the given lists and removes duplicate entries by swapping them
-// past position k, where k is the number of unique values. It returns k.
-func unique(a sort.Interface) int {
- if a.Len() == 0 {
- return 0
- }
- sort.Sort(a)
- k := 1
- for i := 1; i < a.Len(); i++ {
- if a.Less(k-1, i) {
- if k != i {
- a.Swap(k, i)
- }
- k++
- }
- }
- return k
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go b/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go
deleted file mode 100644
index d67f517bc..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go
+++ /dev/null
@@ -1,44965 +0,0 @@
-// This file was generated by go generate; DO NOT EDIT
-
-package display
-
-// CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "28"
-
-// Version is deprecated. Use CLDRVersion.
-const Version = "28"
-
-var parents = [218]int16{
- // Entry 0 - 3F
- -1, -1, -1, -1, -1, 4, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 18, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 33, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 43, 43, -1, -1,
- 47, 48, 48, -1, -1, -1, -1, 54,
- -1, -1, -1, -1, -1, 60, 60, -1,
- // Entry 40 - 7F
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- // Entry 80 - BF
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 154, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 167, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 183, -1, 185, -1, -1, -1, -1, -1,
- // Entry C0 - FF
- -1, -1, -1, -1, -1, -1, -1, 198,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 211, -1, -1, -1,
- 215, -1,
-}
-
-// Number of keys: 609
-var (
- langIndex = tagIndex{
- "aaabaeafakamanarasavayazbabebgbibmbnbobrbscacechcocrcscucvcydadedvdzeeel" +
- "eneoeseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhziaidieigiiikio" +
- "isitiujajvkakgkikjkkklkmknkokrkskukvkwkylalblglilnloltlulvmgmhmimkml" +
- "mnmrmsmtmynandnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsd" +
- "sesgsiskslsmsnsosqsrssstsusvswtatetgthtitktntotrtstttyugukuruzvevivo" +
- "wawoxhyiyozazhzu",
- "aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarwaryarzasa" +
- "aseastavkawabalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbgnbhobikbinbjnbk" +
- "mblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkchmc" +
- "hnchochpchrchyckbcopcpscrhcsbdakdardavdeldendgrdindjedoidsbdtpduadum" +
- "dyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofrpfrrfr" +
- "sfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucgurguzg" +
- "wihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjprjrbjut" +
- "kaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjklnkmbko" +
- "ikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijlivlktl" +
- "molollozlrcltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmdemdfmdr" +
- "menmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemyvmznna" +
- "nnapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonziosaotap" +
- "agpalpampappaupcdpdcpdtpeopflphnpmspntponprgproqucqugrajraprarrgnrif" +
- "rofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcsdhseesehse" +
- "iselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssystqsuksuss" +
- "uxswbswcsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpitrutrv" +
- "tsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwaewalwa" +
- "rwaswbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza",
- "",
- }
- langTagsLong = []string{ // 22 elements
- "ar-001",
- "az-Arab",
- "de-AT",
- "de-CH",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-US",
- "es-419",
- "es-ES",
- "es-MX",
- "fa-AF",
- "fr-CA",
- "fr-CH",
- "nds-NL",
- "nl-BE",
- "pt-BR",
- "pt-PT",
- "ro-MD",
- "sr-Latn",
- "zh-Hans",
- "zh-Hant",
- }
-)
-
-var langHeaders = [218]header{
- { // af
- afLangStr,
- afLangIdx,
- },
- { // agq
- "AkanÀmalìÀlabìBɛ̀làlusànBùugɨlìaBɨ̀ŋgalìChɛ̂Dzamɛ̀Gɨ̀lêʔKɨŋgeleSɨ̀kpanìs" +
- "KpɛɛshìaKɨ̀fàlàŋsiKɨtsɔŋkaŋEndìHɔŋgalìaÈndònɛshìaEgbòÈtalìaDzàkpànêD" +
- "zàbvànêKɨmɛ̀kùulîaMàlaeBùumɛsɛ̀Nɛ̀kpalìDɔ̂sKpuwndzabìKpɔlìsKpotùwgîi" +
- "LùmanyìaLushìaLùwandàSòmalìSuedìsTamìTàeTʉʉkìsÙkɛlɛnìaUudùwVìyɛtnàmê" +
- "YulùbaChàenêZulùAghem",
- []uint16{ // 188 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x002b,
- 0x002b, 0x002b, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
- 0x0037, 0x0037, 0x0037, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x004f, 0x0058, 0x0058, 0x0064,
- 0x0064, 0x0064, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x007e,
- 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x008b,
- 0x008b, 0x0090, 0x0090, 0x0090, 0x0090, 0x009b, 0x009b, 0x009b,
- // Entry 40 - 7F
- 0x009b, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00b6, 0x00b6, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
- 0x00cc, 0x00cc, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00e2, 0x00e2, 0x00ee, 0x00ee, 0x00ee,
- 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x0112,
- // Entry 80 - BF
- 0x0112, 0x011d, 0x011d, 0x011d, 0x011d, 0x0127, 0x012e, 0x0137,
- 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
- 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0146, 0x0146, 0x014b, 0x014b, 0x014b, 0x014f, 0x014f, 0x014f,
- 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164,
- 0x016a, 0x016a, 0x016a, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177,
- 0x0177, 0x017e, 0x017e, 0x0186, 0x018b, 0x018b, 0x018b, 0x018b,
- 0x018b, 0x018b, 0x018b, 0x0190,
- },
- },
- { // ak
- "AkanAmarikArabikBelarus kasaBɔlgeria kasaBengali kasaKyɛk kasaGyaamanGre" +
- "ek kasaBorɔfoSpain kasaPɛɛhyia kasaFrɛnkyeHausaHindiHangri kasaIndon" +
- "ihyia kasaIgboItaly kasaGyapan kasaGyabanis kasaKambodia kasaKorea k" +
- "asaMalay kasaBɛɛmis kasaNɛpal kasaDɛɛkyePungyabi kasaPɔland kasaPɔɔt" +
- "ugal kasaRomenia kasaRahyia kasaRewanda kasaSomalia kasaSweden kasaT" +
- "amil kasaTaeland kasaTɛɛki kasaUkren kasaUrdu kasaViɛtnam kasaYoruba" +
- "Kyaena kasaZulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001c, 0x002a,
- 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0051, 0x0058, 0x0058, 0x0062,
- 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x007d,
- 0x007d, 0x0082, 0x0082, 0x0082, 0x0082, 0x008d, 0x008d, 0x008d,
- // Entry 40 - 7F
- 0x008d, 0x009c, 0x009c, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
- 0x00aa, 0x00aa, 0x00b5, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00f0, 0x00f0, 0x00f0,
- 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0110, 0x0110, 0x011c,
- // Entry 80 - BF
- 0x011c, 0x012b, 0x012b, 0x012b, 0x012b, 0x0137, 0x0142, 0x014e,
- 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
- 0x014e, 0x014e, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x0165, 0x0165, 0x016f, 0x016f, 0x016f, 0x017b, 0x017b, 0x017b,
- 0x017b, 0x017b, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0191,
- 0x019a, 0x019a, 0x019a, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01ad, 0x01ad, 0x01b8, 0x01bc,
- },
- },
- { // am
- amLangStr,
- amLangIdx,
- },
- { // ar
- arLangStr,
- arLangIdx,
- },
- { // ar-EG
- "الدنماركية",
- []uint16{ // 32 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014,
- },
- },
- { // as
- "অসমীয়া",
- []uint16{ // 10 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0015,
- },
- },
- { // asa
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKichekiKijerumaniKigiri" +
- "kiKiingeredhaKihithpaniaKiajemiKifaranthaKihauthaKihindiKihungariKii" +
- "ndonethiaKiigboKiitaliaanoKijapaniKijavaKikambodiaKikoreaKimalesiaKi" +
- "burmaKinepaliKiholandhiKipunjabiKipolandiKirenoKiromaniaKiruthiKinya" +
- "randwaKithomaliKithwidiKitamilKitailandiKiturukiKiukraniaKiurduKivie" +
- "tinamuKiyorubaKichinaKidhuluKipare",
- []uint16{ // 205 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0055, 0x0055, 0x0060,
- 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0079,
- 0x0079, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, 0x0089, 0x0089,
- // Entry 40 - 7F
- 0x0089, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x00a6, 0x00a6, 0x00ae, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00be, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00c5, 0x00ce, 0x00ce, 0x00d5, 0x00d5, 0x00d5,
- 0x00dd, 0x00dd, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f9,
- // Entry 80 - BF
- 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0108, 0x010f, 0x011a,
- 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x011a, 0x011a, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x012b, 0x012b, 0x0132, 0x0132, 0x0132, 0x013c, 0x013c, 0x013c,
- 0x013c, 0x013c, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x014d,
- 0x0153, 0x0153, 0x0153, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
- 0x015e, 0x0166, 0x0166, 0x016d, 0x0174, 0x0174, 0x0174, 0x0174,
- 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
- // Entry C0 - FF
- 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
- 0x0174, 0x0174, 0x0174, 0x0174, 0x017a,
- },
- },
- { // ast
- "afarabkhazianuavestanínafrikaansakanamháricuaragonésárabeasamésaváricuay" +
- "maraazerbaixanubashkirbielorrusubúlgarubislamabambarabengalíntibetan" +
- "ubretónbosniucatalánchechenuchamorrocorsucreechecueslávicu eclesiást" +
- "icuchuvashgalésdanésalemándivehidzongkhaewegrieguinglésesperantoespa" +
- "ñolestoniuvascupersafulahfinlandésfixanuferoésfrancésfrisón occiden" +
- "talirlandésgaélicu escocésgalleguguaraníguyaratímanésḥausahebréuhind" +
- "ihiri motucroatahaitianuhúngaruarmeniuhererointerlinguaindonesiuinte" +
- "rlingueigboyi de Sichuáninupiaqidoislandésitalianuinuktitutxaponésxa" +
- "vanésxeorxanukongokikuyukuanyamakazaquistanínkalaallisutḥemercanarés" +
- "coreanukanuricachemiréscurdukomicórnicukirguistanínllatínluxemburgué" +
- "sgandalimburguéslingalalaosianulituanuluba-katangaletónmalgaxemarsha" +
- "llésmaorímacedoniumalayalammongolmarathimalayumaltésbirmanunaurundeb" +
- "ele del nortenepalésndonganeerlandésnoruegu Nynorsknoruegu Bokmålnde" +
- "bele del surnavajonyanjaoccitanuojibwaoromooriyaoséticupunyabípalipo" +
- "lacupashtuportuguésquechuaromancherundirumanurusukinyarwandasánscrit" +
- "usardusindhisami del nortesangocingaléseslovacueslovenusamoanushonas" +
- "omalínalbanuserbiuswatisotho del sursondanéssuecusuaḥilitamiltelugut" +
- "axiquistaníntailandéstigrinyaturcomanutswanatonganuturcutsongatártar" +
- "utahitianuuigurucraínurduuzbequistanínvendavietnamínvolapükvalónwolo" +
- "fxhosayiddishyorubazhuangchinuzulúachinésacoliadangmeadygheárabe de " +
- "Túnezafrihiliaghemainuacadianualabamaaleutgheg d’Albaniaaltai del su" +
- "ringlés antiguuangikaaraméumapuchearaonaarapahoárabe d’Arxeliaarawak" +
- "árabe de Marruecosárabe d’Exiptuasullingua de signos americanaastur" +
- "ianukotavaawadhibaluchibalinésbávarubasaabamunbatak tobaghomalabejab" +
- "embabetawibenabafutbadagabalochi occidentalbhojpuribikolbinibanjarko" +
- "msiksikabishnupriyabakhtiaribrajbrahuibodoakooseburiatbuginésbulubli" +
- "nmedumbacaddocaribecayugaatsamcebuanuchigachibchachagataichuukésmari" +
- "xíriga chinookchoctawchipewyanucheroquicheyennekurdu centralcópticuc" +
- "apiznonturcu de Crimeakashubianudakotadargwataitadelawareslavedogrib" +
- "dinkazarmadogribaxu sorbiudusun centraldualaneerlandés mediujola-fon" +
- "yidyuladazagaembúefikemilianuexipciu antiguuekajukelamitainglés medi" +
- "uyupik centralewondoestremeñufangfilipínfinlandés de Tornedalenfonfr" +
- "ancés cajunfrancés mediufrancés antiguuarpitanufrisón del nortefrisó" +
- "n orientalfriulianugagagauzchinu gangayogbayadari zoroastrianugeezgi" +
- "lbertésgilakialtualemán mediualtualemán antiguugoan konkanigondigoro" +
- "ntalogóticugrebogriegu antiguualemán de Suizawayuufrafragusiigwichʼi" +
- "nhaidachinu hakkahawaianuhindi de Fijihiligaynonhititahmongaltu sorb" +
- "iuchinu xianghupaibanibibioilokoingushingrianuinglés criollu xamaica" +
- "nulojbanngombamachamexudeo-persaxudeo-árabejutlandéskara-kalpakkabil" +
- "eñukachinjjukambakawikabardianukanembutyapmakondecabuverdianukenyang" +
- "korokaingangkhasikhotanéskoyra chiinikhowarkirmanjkikakokalenjinkimb" +
- "undukomi-permyakkonkanikosraeanukpellekarachay-balkarkriokinaray-aka" +
- "relianukurukhshambalabafiacolonianukumykkutenailadinolangilahndalamb" +
- "alezghianulingua franca novaligurianulivonianulakotalombardumongoloz" +
- "iluri del nortelatgalianuluba-lulualuisenolundaluomizoluyiachinu lli" +
- "terariulazmadurésmafamagahimaithilimakasarmandingomasáimabamokshaman" +
- "darmendemerumorisyenírlandés mediumakhuwa-meettometa’micmacminangkab" +
- "aumanchúmanipurimohawkmossimari occidentalmundangmúltiples llingüesc" +
- "reekmirandésmarwarimentawaimyeneerzyamazanderanichinu min nannapolit" +
- "anunamabaxu alemánnewariniasniueanuao nagakwasiongiemboonnogainorueg" +
- "u antiguunovialn’kosotho del nortenuernewari clásicunyamwezinyankole" +
- "nyoronzimaOsageturcu otomanupangasinanpahlavipampangapapiamentopalau" +
- "anupícarualemán de Pennsylvaniaplautdietschpersa antiguualemán palat" +
- "inufeniciupiamontéspónticupohnpeianuprusianuprovenzal antiguukʼicheʼ" +
- "quichua del altiplanu de Chimborazorajasthanínrapanuirarotonganuroma" +
- "ñolrifianuromboromanírotumanurusynrovianaaromanianurwasandavéssakha" +
- "araméu samaritanusamburusasaksantalisaurashtrangambaysangusicilianus" +
- "cotssardu sassarésKurdu del sursénecasenaseriselkupkoyraboro senniir" +
- "landés antiguusamogitianutachelhitshanárabe chadianusidamobaxu siles" +
- "ianuselayaréssami del surlule samiinari samiskolt samisoninkesogdian" +
- "usranan tongoserersahofrisón de Saterlandsukumasususumeriucomorianus" +
- "wahili del Congusiriacu clásicusiriacusilesianutulutimnetesoterenate" +
- "tumtigretivtokelautsakhurklingontlingittalixíntamashektonga nyasatok" +
- " pisinturoyotarokotsakoniutsimshiantati musulmántumbukatuvalutasawaq" +
- "tuvinianutamazight del Atles centraludmurtugaríticuumbundurootvaiven" +
- "ecianuvepsiuflamencu occidentalfranconianu del Mainvóticuvorovunjowa" +
- "lserwolayttawaraywashowarlpirichinu wucalmucomingrelianusogayaoyapés" +
- "yangbenyembanheengatucantonészapotecasimbólicu Blisszeelandészenagat" +
- "amazight estándar de Marruecoszuniensin conteníu llingüísticuzazaára" +
- "be estándar modernualemán d’Austriaaltualemán de Suizainglés d’Austr" +
- "aliainglés de Canadáinglés de Gran Bretañainglés d’Estaos Xuníosespa" +
- "ñol d’América Llatinaespañol européuespañol de Méxicufrancés de Can" +
- "adáfrancés de Suizabaxu saxónflamencuportugués del Brasilportugués e" +
- "uropéumoldavuserbo-croatachinu simplificáuchinu tradicional",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0018, 0x0021, 0x0025, 0x002e, 0x0037,
- 0x003d, 0x0044, 0x004c, 0x0052, 0x005d, 0x0064, 0x006e, 0x0076,
- 0x007d, 0x0084, 0x008d, 0x0095, 0x009c, 0x00a2, 0x00aa, 0x00b2,
- 0x00ba, 0x00bf, 0x00c3, 0x00c8, 0x00df, 0x00e6, 0x00ec, 0x00f2,
- 0x00f9, 0x00ff, 0x0107, 0x010a, 0x0110, 0x0117, 0x0120, 0x0128,
- 0x012f, 0x0134, 0x0139, 0x013e, 0x0148, 0x014e, 0x0155, 0x015d,
- 0x016f, 0x0178, 0x0189, 0x0190, 0x0198, 0x01a1, 0x01a7, 0x01ae,
- 0x01b5, 0x01ba, 0x01c3, 0x01c9, 0x01d1, 0x01d9, 0x01e0, 0x01e6,
- // Entry 40 - 7F
- 0x01f1, 0x01fa, 0x0205, 0x0209, 0x0217, 0x021e, 0x0221, 0x022a,
- 0x0232, 0x023b, 0x0243, 0x024b, 0x0253, 0x0258, 0x025e, 0x0266,
- 0x0274, 0x027f, 0x0286, 0x028e, 0x0295, 0x029b, 0x02a6, 0x02ab,
- 0x02af, 0x02b7, 0x02c4, 0x02cb, 0x02d8, 0x02dd, 0x02e8, 0x02ef,
- 0x02f7, 0x02fe, 0x030a, 0x0310, 0x0317, 0x0322, 0x0328, 0x0331,
- 0x033a, 0x0340, 0x0347, 0x034d, 0x0354, 0x035b, 0x0360, 0x0371,
- 0x0379, 0x037f, 0x038a, 0x0399, 0x03a8, 0x03b7, 0x03bd, 0x03c3,
- 0x03cb, 0x03d1, 0x03d6, 0x03db, 0x03e3, 0x03eb, 0x03ef, 0x03f5,
- // Entry 80 - BF
- 0x03fb, 0x0405, 0x040c, 0x0414, 0x0419, 0x041f, 0x0423, 0x042e,
- 0x0438, 0x043d, 0x0443, 0x0451, 0x0456, 0x045f, 0x0467, 0x046f,
- 0x0476, 0x047b, 0x0483, 0x0489, 0x048f, 0x0494, 0x04a1, 0x04aa,
- 0x04af, 0x04b8, 0x04bd, 0x04c3, 0x04d1, 0x04db, 0x04e3, 0x04ec,
- 0x04f2, 0x04f9, 0x04fe, 0x0504, 0x050c, 0x0515, 0x051a, 0x0521,
- 0x0525, 0x0533, 0x0538, 0x0542, 0x054a, 0x0550, 0x0555, 0x055a,
- 0x0561, 0x0567, 0x056d, 0x0572, 0x0577, 0x057f, 0x0584, 0x058b,
- 0x0591, 0x05a1, 0x05a9, 0x05ae, 0x05b2, 0x05ba, 0x05c1, 0x05c6,
- // Entry C0 - FF
- 0x05d6, 0x05e3, 0x05f2, 0x05f8, 0x05ff, 0x0606, 0x060c, 0x0613,
- 0x0625, 0x062b, 0x063e, 0x064f, 0x0652, 0x066d, 0x0676, 0x067c,
- 0x0682, 0x0689, 0x0691, 0x0698, 0x069d, 0x06a2, 0x06ac, 0x06b3,
- 0x06b7, 0x06bc, 0x06c2, 0x06c6, 0x06cb, 0x06d1, 0x06e3, 0x06eb,
- 0x06f0, 0x06f4, 0x06fa, 0x06fd, 0x0704, 0x070f, 0x0718, 0x071c,
- 0x0722, 0x0726, 0x072c, 0x0732, 0x073a, 0x073e, 0x0742, 0x0749,
- 0x074e, 0x0754, 0x075a, 0x075f, 0x0766, 0x076b, 0x0772, 0x077a,
- 0x0782, 0x0786, 0x0795, 0x079c, 0x07a6, 0x07ae, 0x07b6, 0x07c3,
- // Entry 100 - 13F
- 0x07cb, 0x07d3, 0x07e2, 0x07ec, 0x07f2, 0x07f8, 0x07fd, 0x0805,
- 0x080a, 0x0810, 0x0815, 0x081a, 0x081f, 0x082a, 0x0837, 0x083c,
- 0x084d, 0x0857, 0x085c, 0x0862, 0x0867, 0x086b, 0x0873, 0x0882,
- 0x0888, 0x088f, 0x089c, 0x08a9, 0x08af, 0x08b9, 0x08bd, 0x08c5,
- 0x08dd, 0x08e0, 0x08ee, 0x08fc, 0x090c, 0x0914, 0x0925, 0x0935,
- 0x093e, 0x0940, 0x0946, 0x094f, 0x0953, 0x0958, 0x0969, 0x096d,
- 0x0977, 0x097d, 0x098e, 0x09a1, 0x09ad, 0x09b2, 0x09bb, 0x09c2,
- 0x09c7, 0x09d5, 0x09e5, 0x09ea, 0x09f0, 0x09f5, 0x09fe, 0x0a03,
- // Entry 140 - 17F
- 0x0a0e, 0x0a16, 0x0a23, 0x0a2d, 0x0a33, 0x0a38, 0x0a43, 0x0a4e,
- 0x0a52, 0x0a56, 0x0a5c, 0x0a61, 0x0a67, 0x0a6f, 0x0a88, 0x0a8e,
- 0x0a94, 0x0a9b, 0x0aa6, 0x0ab2, 0x0abc, 0x0ac7, 0x0ad0, 0x0ad6,
- 0x0ad9, 0x0ade, 0x0ae2, 0x0aec, 0x0af3, 0x0af7, 0x0afe, 0x0b0a,
- 0x0b11, 0x0b15, 0x0b1d, 0x0b22, 0x0b2b, 0x0b37, 0x0b3d, 0x0b46,
- 0x0b4a, 0x0b52, 0x0b5a, 0x0b66, 0x0b6d, 0x0b76, 0x0b7c, 0x0b8b,
- 0x0b8f, 0x0b98, 0x0ba1, 0x0ba7, 0x0baf, 0x0bb4, 0x0bbd, 0x0bc2,
- 0x0bc9, 0x0bcf, 0x0bd4, 0x0bda, 0x0bdf, 0x0be8, 0x0bfa, 0x0c03,
- // Entry 180 - 1BF
- 0x0c0c, 0x0c12, 0x0c1a, 0x0c1f, 0x0c23, 0x0c31, 0x0c3b, 0x0c45,
- 0x0c4c, 0x0c51, 0x0c54, 0x0c58, 0x0c5d, 0x0c6d, 0x0c70, 0x0c78,
- 0x0c7c, 0x0c82, 0x0c8a, 0x0c91, 0x0c99, 0x0c9f, 0x0ca3, 0x0ca9,
- 0x0caf, 0x0cb4, 0x0cb8, 0x0cc0, 0x0cd0, 0x0cde, 0x0ce5, 0x0ceb,
- 0x0cf6, 0x0cfd, 0x0d05, 0x0d0b, 0x0d10, 0x0d1f, 0x0d26, 0x0d3a,
- 0x0d3f, 0x0d48, 0x0d4f, 0x0d57, 0x0d5c, 0x0d61, 0x0d6c, 0x0d79,
- 0x0d83, 0x0d87, 0x0d93, 0x0d99, 0x0d9d, 0x0da4, 0x0dab, 0x0db1,
- 0x0dba, 0x0dbf, 0x0dce, 0x0dd4, 0x0dda, 0x0de9, 0x0ded, 0x0dfc,
- // Entry 1C0 - 1FF
- 0x0e04, 0x0e0c, 0x0e11, 0x0e16, 0x0e1b, 0x0e28, 0x0e32, 0x0e39,
- 0x0e41, 0x0e4b, 0x0e53, 0x0e5a, 0x0e71, 0x0e7d, 0x0e8a, 0x0e9a,
- 0x0ea1, 0x0eab, 0x0eb3, 0x0ebd, 0x0ec5, 0x0ed6, 0x0edf, 0x0f02,
- 0x0f0e, 0x0f15, 0x0f20, 0x0f28, 0x0f2f, 0x0f34, 0x0f3b, 0x0f43,
- 0x0f48, 0x0f4f, 0x0f59, 0x0f5c, 0x0f65, 0x0f6a, 0x0f7c, 0x0f83,
- 0x0f88, 0x0f8f, 0x0f99, 0x0fa0, 0x0fa5, 0x0fae, 0x0fb3, 0x0fc2,
- 0x0fcf, 0x0fd6, 0x0fda, 0x0fde, 0x0fe4, 0x0ff3, 0x1004, 0x100f,
- 0x1018, 0x101c, 0x102b, 0x1031, 0x103f, 0x1049, 0x1055, 0x105e,
- // Entry 200 - 23F
- 0x1068, 0x1072, 0x1079, 0x1081, 0x108d, 0x1092, 0x1096, 0x10aa,
- 0x10b0, 0x10b4, 0x10bb, 0x10c4, 0x10d5, 0x10e5, 0x10ec, 0x10f5,
- 0x10f9, 0x10fe, 0x1102, 0x1108, 0x110d, 0x1112, 0x1115, 0x111c,
- 0x1123, 0x112a, 0x1131, 0x1139, 0x1141, 0x114c, 0x1155, 0x115b,
- 0x1161, 0x1169, 0x1172, 0x1180, 0x1187, 0x118d, 0x1194, 0x119d,
- 0x11b8, 0x11be, 0x11c8, 0x11cf, 0x11d3, 0x11d6, 0x11df, 0x11e5,
- 0x11f8, 0x120c, 0x1213, 0x1217, 0x121c, 0x1222, 0x122a, 0x122f,
- 0x1234, 0x123c, 0x1244, 0x124b, 0x1256, 0x125a, 0x125d, 0x1263,
- // Entry 240 - 27F
- 0x126a, 0x126f, 0x1278, 0x1281, 0x1289, 0x1299, 0x12a3, 0x12a9,
- 0x12c9, 0x12cd, 0x12eb, 0x12ef, 0x1307, 0x1307, 0x131a, 0x132e,
- 0x1343, 0x1355, 0x136d, 0x1387, 0x13a4, 0x13b5, 0x13c8, 0x13c8,
- 0x13db, 0x13ec, 0x13f7, 0x13ff, 0x1414, 0x1427, 0x142e, 0x143a,
- 0x144c, 0x145d,
- },
- },
- { // az
- azLangStr,
- azLangIdx,
- },
- { // az-Cyrl
- "азәрбајҹан дилиалман дилиинҝилис дилииспан дилифрансыз дилииталјан дилиј" +
- "апон дилипортугал дилирус диличин дили",
- []uint16{ // 180 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0047, 0x0047, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- // Entry 40 - 7F
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0088, 0x0088, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- // Entry 80 - BF
- 0x009b, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00d2,
- },
- },
- { // bas
- "Hɔp u akanHɔp u amhārìkHɔp u arâbHɔp u bièlòrûsHɔp u bûlgârHɔp u bɛŋgàli" +
- "Hɔp u cɛ̂kHɔp u jamânHɔp u gri ᷇kyàHɔp u ŋgisìHɔp u panyāHɔp u pɛrsì" +
- "àHɔp u pulàsiHɔp u ɓausaHɔp u hindìHɔp u hɔŋgrìiHɔp u indònesìàHɔp " +
- "u iɓòHɔp u italìàHɔp u yapànHɔp u yavàHɔp u kmɛ̂rHɔp u kɔrēàHɔp u ma" +
- "kɛ᷆Hɔp u birmànHɔp u nepa᷆lHɔp u nlɛ̀ndiHɔp u pɛnjàbiHɔp u pɔlɔ̄nàHɔ" +
- "p u pɔtɔ̄kìHɔp u rùmanìàHɔp u ruslàndHɔp u ruāndàHɔp u somàlîHɔp u s" +
- "uɛ᷆dHɔp u tamu᷆lHɔp u tâyHɔp u tûrkHɔp u ukrǎnìàHɔp u urdùHɔp u vyɛ̄" +
- "dnàmHɔp u yorūbàHɔp u kinàHɔp u zulùƁàsàa",
- []uint16{ // 213 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001b, 0x001b,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0048,
- 0x0048, 0x0048, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059,
- 0x0059, 0x0059, 0x0059, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0085, 0x0093, 0x0093, 0x00a0,
- 0x00a0, 0x00a0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00be,
- 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00cb,
- 0x00cb, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e9, 0x00e9, 0x00e9,
- // Entry 40 - 7F
- 0x00e9, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
- 0x0117, 0x0117, 0x0124, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
- 0x0130, 0x0130, 0x013e, 0x013e, 0x014d, 0x014d, 0x014d, 0x014d,
- 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
- 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
- 0x014d, 0x014d, 0x014d, 0x015c, 0x015c, 0x016a, 0x016a, 0x016a,
- 0x0179, 0x0179, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0199, 0x0199, 0x01ab,
- // Entry 80 - BF
- 0x01ab, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01ce, 0x01dd, 0x01ec,
- 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec,
- 0x01ec, 0x01ec, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x020a, 0x020a, 0x0219, 0x0219, 0x0219, 0x0224, 0x0224, 0x0224,
- 0x0224, 0x0224, 0x0230, 0x0230, 0x0230, 0x0230, 0x0230, 0x0241,
- 0x024d, 0x024d, 0x024d, 0x025f, 0x025f, 0x025f, 0x025f, 0x025f,
- 0x025f, 0x026e, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286,
- 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
- // Entry C0 - FF
- 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
- 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
- 0x0286, 0x0286, 0x0286, 0x0286, 0x028e,
- },
- },
- { // be
- "абхазскаяафрыкаансаканамхарскаяарагонскаяарабскаяасамскаяаварскаяаймараа" +
- "зербайджанскаябашкірскаябеларускаябалгарскаябамбарабенгальскаятыбец" +
- "каябрэтонскаябаснійскаякаталанскаячачэнскаякарсіканскаячэшскаячуваш" +
- "скаявалійскаядацкаянямецкаядзонгкхаэвегрэчаскаяанглійскаяэсперантаі" +
- "спанскаяэстонскаябаскскаяфарсіфінскаяфіджыйскаяфарэрскаяфранцузская" +
- "фрызскаяірландскаяшатландская гэльскаягалісійскаягуаранігуджарацімэ" +
- "нскаяхаўсаіўрытхіндзіхарвацкаягаіцянскаявенгерскаяармянскаяінтэрлін" +
- "гваінданезійскаяінтэрлінгвеігбаСычуань Іісландскаяітальянскаяінукты" +
- "тутяпонскаяяванскаягрузінскаякікуюказахскаягрэнландскаякхмерскаякан" +
- "адакарэйскаякашмірскаякурдскаякорнскаякіргізскаялацінскаялюксембург" +
- "скаягандалінгалалаоскаялітоўскаялуба-катангалатышскаямалагасійскаям" +
- "аарымакедонскаямалаяламмангольскаямаратхімалайскаямальтыйскаябірман" +
- "скаяпаўночная ндэбеленепальскаягаландскаянарвежская (нюнорск)нарвеж" +
- "ская (букмал)правансальскаяаромаорыяпанджабіпольскаяпуштупартугальс" +
- "каякечуарэтараманскаярундзірумынскаярускаякіньяруандасанскрытсіндхі" +
- "паўночнасаамскаясангасінгальскаяславацкаяславенскаяшонасамалійскаяа" +
- "лбанскаясербскаясундскаяшведскаясуахілітамільскаятэлугутаджыкскаята" +
- "йскаятыгрыньятуркменскаятанганскаятурэцкаятатарскаяуйгурскаяукраінс" +
- "каяурдуузбекскаяв’етнамскаявалофкосаідышёрубакітайскаязулуадыгейска" +
- "яагемакадзкаяалеуцкаястараанглійскаяарамейскаямапучэасуастурыйскаяб" +
- "ембабеназаходняя белуджскаябодабурацкаячыгачэрокіцэнтральнакурдская" +
- "копцкаятайтазарманіжнелужыцкаядуаладыёла-фон’іэмбустараэгіпецкаятаг" +
- "альскаястарафранцузскаягагаузскаястарагрэцкаяшвейцарская нямецкаягу" +
- "сіігавайскаяверхнелужыцкаянгомбэмачамэкабільскаякамбамакондэкабувер" +
- "дзьянукойра чыінікаленджынкомі-пярмяцкаяконканішамбалабафіялангалак" +
- "отапаўночны лурылуалуямасаімерумаўрыкійскаямакуа-меетаметамагаўкска" +
- "ямундангмазандэранскаянаманіжненямецкаяквасіанконуэрньянколекічэром" +
- "барваякуцкаясамбурусангупаўднёвакурдскаясенакойрабара сеннітачалхіт" +
- "паўднёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаясуахілі Ко" +
- "нгатэсоклінгонтасавакмовы тамазігхтаўневядомая моваваівуньёвальбіры" +
- "согастандартны мараканскі тамазігхтняма моўнага матэрыялусучасная с" +
- "тандартная арабскаянямецкая (аўстр.)нямецкая (швейц.)англійская (аў" +
- "страл.)англійская (канад.)англійская (ЗША)іспанская (лацінаамер.)іс" +
- "панская (еўрап.)іспанская (мексікан.)французская (канад.)французска" +
- "я (швейц.)ніжнесаксонскаяфламандскаяпартугальская (бразіл.)партугал" +
- "ьская (еўрап.)малдаўскаясербска-харвацкаяспрошчаная кітайскаятрадыц" +
- "ыйная кітайская",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003e, 0x0052,
- 0x0062, 0x0072, 0x0082, 0x008e, 0x00ac, 0x00c0, 0x00d4, 0x00e8,
- 0x00e8, 0x00f6, 0x010c, 0x011c, 0x0130, 0x0144, 0x015a, 0x016c,
- 0x016c, 0x0184, 0x0184, 0x0192, 0x0192, 0x01a4, 0x01b6, 0x01c2,
- 0x01d2, 0x01d2, 0x01e2, 0x01e8, 0x01fa, 0x020e, 0x0220, 0x0232,
- 0x0244, 0x0254, 0x025e, 0x025e, 0x026c, 0x0280, 0x0292, 0x02a8,
- 0x02b8, 0x02cc, 0x02f3, 0x0309, 0x0317, 0x0329, 0x0337, 0x0341,
- 0x034b, 0x0357, 0x0357, 0x0369, 0x037d, 0x0391, 0x03a3, 0x03a3,
- // Entry 40 - 7F
- 0x03b9, 0x03d3, 0x03e9, 0x03f1, 0x0402, 0x0402, 0x0402, 0x0416,
- 0x042c, 0x043e, 0x044e, 0x045e, 0x0472, 0x0472, 0x047c, 0x047c,
- 0x048e, 0x04a6, 0x04b8, 0x04c4, 0x04d6, 0x04d6, 0x04ea, 0x04fa,
- 0x04fa, 0x050a, 0x051e, 0x0530, 0x054c, 0x0556, 0x0556, 0x0564,
- 0x0572, 0x0584, 0x059b, 0x05ad, 0x05c7, 0x05c7, 0x05d1, 0x05e7,
- 0x05f7, 0x060d, 0x061b, 0x062d, 0x0643, 0x0657, 0x0657, 0x0678,
- 0x068c, 0x068c, 0x06a0, 0x06c5, 0x06e8, 0x06e8, 0x06e8, 0x06e8,
- 0x0704, 0x0704, 0x070e, 0x0716, 0x0716, 0x0726, 0x0726, 0x0736,
- // Entry 80 - BF
- 0x0740, 0x075a, 0x0764, 0x077e, 0x078a, 0x079c, 0x07a8, 0x07be,
- 0x07ce, 0x07ce, 0x07da, 0x07fa, 0x0804, 0x081a, 0x082c, 0x0840,
- 0x0840, 0x0848, 0x085e, 0x0870, 0x0880, 0x0880, 0x0880, 0x0890,
- 0x08a0, 0x08ae, 0x08c2, 0x08ce, 0x08e2, 0x08f0, 0x0900, 0x0916,
- 0x0916, 0x092a, 0x093a, 0x093a, 0x094c, 0x094c, 0x095e, 0x0972,
- 0x097a, 0x098c, 0x098c, 0x09a3, 0x09a3, 0x09a3, 0x09ad, 0x09b5,
- 0x09bd, 0x09c7, 0x09c7, 0x09d9, 0x09e1, 0x09e1, 0x09e1, 0x09e1,
- 0x09f5, 0x09f5, 0x09f5, 0x09fd, 0x09fd, 0x0a0d, 0x0a0d, 0x0a1d,
- // Entry C0 - FF
- 0x0a1d, 0x0a1d, 0x0a3b, 0x0a3b, 0x0a4f, 0x0a5b, 0x0a5b, 0x0a5b,
- 0x0a5b, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a61, 0x0a61, 0x0a77, 0x0a77,
- 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77,
- 0x0a77, 0x0a81, 0x0a81, 0x0a89, 0x0a89, 0x0a89, 0x0aae, 0x0aae,
- 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae,
- 0x0aae, 0x0ab6, 0x0ab6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6,
- 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ace, 0x0ace, 0x0ace,
- 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ada, 0x0ada, 0x0afe,
- // Entry 100 - 13F
- 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b16, 0x0b16,
- 0x0b16, 0x0b16, 0x0b16, 0x0b20, 0x0b20, 0x0b3a, 0x0b3a, 0x0b44,
- 0x0b44, 0x0b5a, 0x0b5a, 0x0b5a, 0x0b62, 0x0b62, 0x0b62, 0x0b7e,
- 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b92,
- 0x0b92, 0x0b92, 0x0b92, 0x0b92, 0x0bb2, 0x0bb2, 0x0bb2, 0x0bb2,
- 0x0bb2, 0x0bb2, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6,
- 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6,
- 0x0bc6, 0x0bde, 0x0c05, 0x0c05, 0x0c05, 0x0c0f, 0x0c0f, 0x0c0f,
- // Entry 140 - 17F
- 0x0c0f, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c3d, 0x0c3d,
- 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d,
- 0x0c49, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c69, 0x0c69,
- 0x0c69, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c81, 0x0c9b,
- 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cb0, 0x0cb0,
- 0x0cb0, 0x0cc2, 0x0cc2, 0x0cdd, 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb,
- 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb, 0x0cf9, 0x0d03, 0x0d03, 0x0d03,
- 0x0d03, 0x0d03, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d,
- // Entry 180 - 1BF
- 0x0d0d, 0x0d19, 0x0d19, 0x0d19, 0x0d19, 0x0d32, 0x0d32, 0x0d32,
- 0x0d32, 0x0d32, 0x0d38, 0x0d38, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e,
- 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d48, 0x0d48, 0x0d48,
- 0x0d48, 0x0d48, 0x0d50, 0x0d68, 0x0d68, 0x0d7d, 0x0d85, 0x0d85,
- 0x0d85, 0x0d85, 0x0d85, 0x0d99, 0x0d99, 0x0d99, 0x0da7, 0x0da7,
- 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0dc3, 0x0dc3,
- 0x0dc3, 0x0dcb, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0df1,
- 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df7, 0x0df7, 0x0dff, 0x0dff,
- // Entry 1C0 - 1FF
- 0x0dff, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f,
- 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f,
- 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e17, 0x0e17,
- 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e21, 0x0e21, 0x0e21,
- 0x0e21, 0x0e21, 0x0e21, 0x0e27, 0x0e27, 0x0e35, 0x0e35, 0x0e43,
- 0x0e43, 0x0e43, 0x0e43, 0x0e43, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d,
- 0x0e6d, 0x0e6d, 0x0e75, 0x0e75, 0x0e75, 0x0e92, 0x0e92, 0x0e92,
- 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ec2, 0x0edb,
- // Entry 200 - 23F
- 0x0ef6, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11,
- 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f2a, 0x0f2a, 0x0f2a, 0x0f2a,
- 0x0f2a, 0x0f2a, 0x0f32, 0x0f32, 0x0f32, 0x0f32, 0x0f32, 0x0f32,
- 0x0f32, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40,
- 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f4e, 0x0f4e,
- 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f88, 0x0f8e, 0x0f8e, 0x0f8e,
- 0x0f8e, 0x0f8e, 0x0f8e, 0x0f8e, 0x0f98, 0x0f98, 0x0f98, 0x0f98,
- 0x0f98, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fb0, 0x0fb0, 0x0fb0,
- // Entry 240 - 27F
- 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0,
- 0x0fec, 0x0fec, 0x1016, 0x1016, 0x104e, 0x104e, 0x106c, 0x108a,
- 0x10b0, 0x10d2, 0x10d2, 0x10ef, 0x1119, 0x1139, 0x115f, 0x115f,
- 0x1183, 0x11a7, 0x11c5, 0x11db, 0x1205, 0x122d, 0x1241, 0x1262,
- 0x1289, 0x12b2,
- },
- },
- { // bem
- "Ichi AkanIchi AmhariIchi ArabIchi BelarusIchi BulgarianiIchi BengaliIchi" +
- " ChekiIchi JemaniIchi GrikiIchi SunguIchi SpanishiIchi PesiaIchi Fre" +
- "nchiIchi HausaIchi HinduIchi HangarianIchi IndonesianiIchi IboIchi I" +
- "talianiIchi JapanisiIchi JavanisiIchi KhmerIchi KorianiIchi Maleshan" +
- "iIchi BurmaIchi NepaliIchi DachiIchi PunjabiIchi PolishiIchi Potogis" +
- "iIchi RomanianiIchi RusianiIchi RwandaIchi SomaliaIchi SwideniIchi T" +
- "amilIchi ThaiIchi TakishiIchi UkranianiIchi UruduIchi VietinamuIchi " +
- "YorubaIchi ChainisiIchi ZuluIchibemba",
- []uint16{ // 218 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0029, 0x0038,
- 0x0038, 0x0038, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006d, 0x006d, 0x007a,
- 0x007a, 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a,
- 0x009a, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b2, 0x00b2, 0x00b2,
- // Entry 40 - 7F
- 0x00b2, 0x00c2, 0x00c2, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
- 0x00d7, 0x00d7, 0x00e4, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
- 0x00f1, 0x00f1, 0x00fb, 0x00fb, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0115, 0x0115, 0x011f, 0x011f, 0x011f,
- 0x012a, 0x012a, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c,
- // Entry 80 - BF
- 0x014c, 0x0159, 0x0159, 0x0159, 0x0159, 0x0167, 0x0173, 0x017e,
- 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e,
- 0x017e, 0x017e, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a,
- 0x0196, 0x0196, 0x01a0, 0x01a0, 0x01a0, 0x01a9, 0x01a9, 0x01a9,
- 0x01a9, 0x01a9, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01c3,
- 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db,
- 0x01db, 0x01e6, 0x01e6, 0x01f3, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
- 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
- // Entry C0 - FF
- 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
- 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
- 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
- 0x01fc, 0x0205,
- },
- },
- { // bez
- "HiakanHiamhariHiharabuHibelarusiHibulgariaHibanglaHichekiHijerumaniHigir" +
- "ikiHiingerezaHihispaniaHiajemiHifaransaHihausaHihindiHihungariHiindo" +
- "nesiaHiiboHiitalianoHijapaniHijavaHikambodiaHikoreaHimalesiaHiburmaH" +
- "inepaliHiholanziHipunjabiHipolandiHilenoHilomaniaHilusiHinyarwandaHi" +
- "somaliHiswidiHitamilHitailandHitulukiHiukraniaHiurduHivietinamuHiyor" +
- "ubaHichinaHizuluHibena",
- []uint16{ // 220 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0055, 0x0055, 0x005f,
- 0x005f, 0x005f, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0076,
- 0x0076, 0x007d, 0x007d, 0x007d, 0x007d, 0x0086, 0x0086, 0x0086,
- // Entry 40 - 7F
- 0x0086, 0x0091, 0x0091, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0142,
- 0x0148, 0x0148, 0x0148, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
- 0x0153, 0x015b, 0x015b, 0x0162, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- // Entry C0 - FF
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x016e,
- },
- },
- { // bg
- bgLangStr,
- bgLangIdx,
- },
- { // bm
- "akankanamarikikanlarabukanbiyelorisikanbuligarikanbamanakanbɛngalikancɛk" +
- "ikanalimaɲikangɛrɛsikanangilɛkanesipaɲolkanperisanikantubabukanawusa" +
- "kaninidikanoŋirikanƐndonezikanigibokanitalikanzapɔnekanjavanekankamb" +
- "ojikankorekanmalɛzikanbirimanikannepalekanolandekanpɛnijabikanpolone" +
- "kanpɔritigalikanrumanikanirisikanruwandakansomalikansuwɛdikantamulik" +
- "antayikanturikikanukɛrɛnikanurudukanwiyɛtinamukanyorubakansiniwakanz" +
- "ulukan",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0011, 0x0011,
- 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0027, 0x0032,
- 0x0032, 0x003b, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x0046, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x0059, 0x0059, 0x0059, 0x0059, 0x0064, 0x006e, 0x006e, 0x007a,
- 0x007a, 0x007a, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x0096,
- 0x0096, 0x009e, 0x009e, 0x009e, 0x009e, 0x00a7, 0x00a7, 0x00a7,
- // Entry 40 - 7F
- 0x00a7, 0x00b3, 0x00b3, 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00bb,
- 0x00c3, 0x00c3, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fc, 0x00fc, 0x00fc,
- 0x0105, 0x0105, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
- 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x011a, 0x011a, 0x0123,
- // Entry 80 - BF
- 0x0123, 0x0131, 0x0131, 0x0131, 0x0131, 0x013a, 0x0142, 0x014c,
- 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
- 0x014c, 0x014c, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155,
- 0x015f, 0x015f, 0x0168, 0x0168, 0x0168, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0184,
- 0x018c, 0x018c, 0x018c, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a,
- 0x019a, 0x01a3, 0x01a3, 0x01ac, 0x01b3,
- },
- },
- { // bn
- bnLangStr,
- bnLangIdx,
- },
- { // bo
- "བོད་སྐད་རྫོང་ཁདབྱིན་ཇིའི་སྐད།ཧིན་དིཉི་ཧོང་སྐད་ནེ་པ་ལིཨུ་རུ་སུ་སྐད་རྒྱ་སྐ" +
- "ད་ཟ་ཟའ་སྐད།དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)དབྱ" +
- "ིན་ཇིའི་སྐད། (ཨ་རི་)",
- []uint16{ // 596 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x002a, 0x002a, 0x002a, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
- // Entry 40 - 7F
- 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
- 0x0069, 0x0069, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
- 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
- // Entry 80 - BF
- 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry C0 - FF
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 100 - 13F
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 140 - 17F
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 180 - 1BF
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 1C0 - 1FF
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 200 - 23F
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 240 - 27F
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
- 0x00f9, 0x013e, 0x0189, 0x01c8,
- },
- },
- {}, // bo-IN
- { // br
- "afarabkhazegavestegafrikaansakanamharegaragonegarabegasamegavaraymaraaze" +
- "rbaidjanegbachkirbelarusegbulgaregbislamabambarabengalitibetanegbrez" +
- "honegbosnegkatalanegtchetchenegchamorrukorsegkritchekegslavoneg iliz" +
- "tchouvatchkembraegdanegalamanegdivehidzongkhaewegresianegsaoznegespe" +
- "rantegspagnolegestonegeuskaregpersegfinnegfidjiegfaeroeggallegfrizeg" +
- " ar Cʼhornôgiwerzhonegskoseggalizegguaranigujaratimanaveghaousahebra" +
- "eghindihiri motukroateghaitieghungaregarmenianeghererointerlinguaind" +
- "onezeginterlingueigboyieg Sichuaninupiaqidoislandegitalianeginuktitu" +
- "tjapanegjavanegjorjianegkongokikuyukwanyamakazakkhmerkanaregkoreaneg" +
- "kanourikashmirikurdegkerneveuregkirgizlatinluksembourgeggandalimbour" +
- "geglingalalaoseglituanegluba-katangalatviegmalgachegmarshallmaorimak" +
- "edonegmalayalammongolegmarathimalaysegmaltegbirmanegnauruegndebele a" +
- "n Norzhnepalegndonganederlandegnorvegeg nynorsknorvegeg bokmålndebel" +
- "e ar Sunavacʼhonyanjaokitanegojibwaoriyaosetegpunjabipalipolonegpach" +
- "toportugalegkechuaegromañchegrundiroumanegrusianegkinyarwandasanskri" +
- "tegsardegsindhisámi an Norzhsangosinghalegslovakegslovenegsamoanshon" +
- "asomalialbanegserbegswatisotho ar Susundanegsvedegswahilitamilegtelo" +
- "ugoutadjikthaitigrignaturkmenegtswanatongaturkegtsongatatartahitiane" +
- "gouigouregukrainegourdououzbekegvendavietnamegvolapükwallonegwolofxh" +
- "osayiddishyoroubazhuangsinaegzoulouegachinegacoliadangmeadygeiegarab" +
- "eg Tuniziaafrihiliaghemainouegakadegalabamaegaleouteggegegaltaieg ar" +
- " Suhensaoznegangikaarameegaraoukanegaraonaarapahoarabeg Aljeriaarawa" +
- "kegarabeg Marokoarabeg Egiptasuyezh sinoù Amerikaasturianegawadhibal" +
- "outchibalinegbavariegbasaabedawiegbembabenabaloutchi ar Cʼhornôgbhoj" +
- "puribikolbinibrajbrahwegbodoakoosebouriatbugiblincaddokaribegatsamce" +
- "buanochibchamariegchoktawchipewyancherokeecheyennekurdeg soranikopte" +
- "gturkeg Krimeakachoubegdakotadargwadelawaredogribdinkadogriizelsorab" +
- "egnederlandeg krenndyulaembuefikhenegiptegekajukelamegkrennsaoznegew" +
- "ondofangfilipinegfinneg traoñienn an Tornefongalleg cajunkrenncʼhall" +
- "eghencʼhallegarpitanegfrizeg an Norzhfrizeg ar Reterfrioulaneggagaga" +
- "ouzegsinaeg Gangayogbayagezeggilbertegkrennalamaneg uhelhenalamaneg " +
- "uhelgorontalogoteggrebohencʼhresianegalamaneg Suishaidasinaeg Hakkah" +
- "awaieghiligaynonhmonguhelsorabegsinaeg Xianhupaibanibibioingouchegkr" +
- "eoleg Jamaikayuzev-persegyuzev-arabegkarakalpakkabilegkachinkambakab" +
- "ardegkabuverdianukhasikhotanegkimbundukonkanikosraekpellekaratchay-b" +
- "alkarkareliegkurukhkolunegkutenailadinolahndalambalezgilingua franca" +
- " novaliguriegmongoloziluba-lulualuisenolundaluolushailuyiasinaeg len" +
- "negelmagahimaithilimasaimokshamandarmendemorisegkrenniwerzhonegmanch" +
- "oumanipurimohawkmarieg ar Cʼhornôgyezhoù liesmuskogimirandegerzasina" +
- "eg Min Nannapolitanegalamaneg izelnewariniasniueaoegnogayhennorsegno" +
- "vialsotho an Norzhnewari klaselnyamwezinyankolenyoroosageturkeg otom" +
- "anpangasinanpahlavipampangapapiamentopalaupikardegalamaneg Pennsylva" +
- "niahenbersegfenikianegpiemontegpontegpohnpeihenbruseghenbrovañsegkic" +
- "huaeg Chimborazorajasthanirapanuirarotongaromagnolegromboromaniegaro" +
- "umanegrwasandaweyakoutegarameeg ar Samaritanedsasaksantalisikiliegsk" +
- "otegsasaresegheniwerzhonegtachelitegshanarabeg Tchadsidamosámi ar Su" +
- "sámi Luleåsámi Inarisámi Skoltsoninkesogdiegserersumeregkomoregswahi" +
- "li Kongosirieg klaselsiriegsileziegtoulouegterenotetumtigreanegtivto" +
- "kelauklingontinglittamachegnyasa tongatok pisinturoyoegtsimshiantumb" +
- "ukatuvalutouvatamazigteg Kreizatlasoudmourtegougaritegumbunduyezh di" +
- "anavvaiveneziegvepsegflandrezeg ar c’hornôgvotyakegvoroegwalserwalam" +
- "owaraywashosinaeg WukalmoukmegrelegyaoyapegkantonegzapotegBlisszelan" +
- "degzenagatamacheg Maroko standartzunidiyezharabeg modernalamaneg Aos" +
- "triaalamaneg uhel Suissaozneg Aostraliasaozneg Kanadasaozneg Breizh-" +
- "Veursaozneg Amerikaspagnoleg Amerika latinspagnoleg Europaspagnoleg " +
- "Mecʼhikogalleg Kanadagalleg Suissaksoneg izelflandrezegportugaleg Br" +
- "azilportugaleg Europamoldovegserb-kroategsinaeg eeunaetsinaeg hengou" +
- "nel",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x0020, 0x0027, 0x002f,
- 0x0035, 0x003b, 0x003f, 0x0045, 0x0052, 0x0059, 0x0062, 0x006a,
- 0x0071, 0x0078, 0x007f, 0x0088, 0x0091, 0x0097, 0x00a0, 0x00ab,
- 0x00b3, 0x00b9, 0x00bc, 0x00c3, 0x00d0, 0x00da, 0x00e2, 0x00e7,
- 0x00ef, 0x00f5, 0x00fd, 0x0100, 0x0109, 0x0110, 0x011a, 0x0123,
- 0x012a, 0x0132, 0x0138, 0x0138, 0x013e, 0x0145, 0x014c, 0x0152,
- 0x0166, 0x0170, 0x0176, 0x017d, 0x0184, 0x018c, 0x0193, 0x0199,
- 0x01a0, 0x01a5, 0x01ae, 0x01b5, 0x01bc, 0x01c4, 0x01ce, 0x01d4,
- // Entry 40 - 7F
- 0x01df, 0x01e8, 0x01f3, 0x01f7, 0x0203, 0x020a, 0x020d, 0x0215,
- 0x021e, 0x0227, 0x022e, 0x0235, 0x023e, 0x0243, 0x0249, 0x0251,
- 0x0256, 0x0256, 0x025b, 0x0262, 0x026a, 0x0271, 0x0279, 0x027f,
- 0x027f, 0x028a, 0x0290, 0x0295, 0x02a2, 0x02a7, 0x02b1, 0x02b8,
- 0x02be, 0x02c6, 0x02d2, 0x02d9, 0x02e2, 0x02ea, 0x02ef, 0x02f8,
- 0x0301, 0x0309, 0x0310, 0x0318, 0x031e, 0x0326, 0x032d, 0x033d,
- 0x0344, 0x034a, 0x0355, 0x0365, 0x0375, 0x0382, 0x038b, 0x0391,
- 0x0399, 0x039f, 0x039f, 0x03a4, 0x03aa, 0x03b1, 0x03b5, 0x03bc,
- // Entry 80 - BF
- 0x03c2, 0x03cc, 0x03d4, 0x03de, 0x03e3, 0x03eb, 0x03f3, 0x03fe,
- 0x0408, 0x040e, 0x0414, 0x0422, 0x0427, 0x0430, 0x0438, 0x0440,
- 0x0446, 0x044b, 0x0451, 0x0458, 0x045e, 0x0463, 0x046e, 0x0476,
- 0x047c, 0x0483, 0x048a, 0x0492, 0x0498, 0x049c, 0x04a4, 0x04ad,
- 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04c9, 0x04d3, 0x04dc, 0x04e4,
- 0x04ea, 0x04f2, 0x04f7, 0x0500, 0x0508, 0x0510, 0x0515, 0x051a,
- 0x0521, 0x0528, 0x052e, 0x0534, 0x053c, 0x0543, 0x0548, 0x054f,
- 0x0557, 0x0565, 0x056d, 0x0572, 0x0579, 0x057f, 0x0588, 0x0590,
- // Entry C0 - FF
- 0x0595, 0x05a2, 0x05ac, 0x05b2, 0x05b9, 0x05c3, 0x05c9, 0x05d0,
- 0x05de, 0x05e6, 0x05f3, 0x05ff, 0x0602, 0x0615, 0x061f, 0x061f,
- 0x0625, 0x062e, 0x0635, 0x063d, 0x0642, 0x0642, 0x0642, 0x0642,
- 0x064a, 0x064f, 0x064f, 0x0653, 0x0653, 0x0653, 0x066a, 0x0672,
- 0x0677, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067f,
- 0x0686, 0x068a, 0x0690, 0x0697, 0x069b, 0x069b, 0x069f, 0x069f,
- 0x06a4, 0x06ab, 0x06ab, 0x06b0, 0x06b7, 0x06b7, 0x06be, 0x06be,
- 0x06be, 0x06c4, 0x06c4, 0x06cb, 0x06d4, 0x06dc, 0x06e4, 0x06f1,
- // Entry 100 - 13F
- 0x06f7, 0x06f7, 0x0704, 0x070d, 0x0713, 0x0719, 0x0719, 0x0721,
- 0x0721, 0x0727, 0x072c, 0x072c, 0x0731, 0x073c, 0x073c, 0x073c,
- 0x074d, 0x074d, 0x0752, 0x0752, 0x0756, 0x075a, 0x075a, 0x0764,
- 0x076a, 0x0770, 0x077c, 0x077c, 0x0782, 0x0782, 0x0786, 0x078f,
- 0x07a9, 0x07ac, 0x07b8, 0x07c6, 0x07d2, 0x07db, 0x07ea, 0x07f9,
- 0x0803, 0x0805, 0x080e, 0x0818, 0x081c, 0x0821, 0x0821, 0x0826,
- 0x082f, 0x082f, 0x0841, 0x0851, 0x0851, 0x0851, 0x085a, 0x085f,
- 0x0864, 0x0873, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0885,
- // Entry 140 - 17F
- 0x0891, 0x0898, 0x0898, 0x08a2, 0x08a2, 0x08a7, 0x08b2, 0x08bd,
- 0x08c1, 0x08c5, 0x08cb, 0x08cb, 0x08d4, 0x08d4, 0x08e3, 0x08e3,
- 0x08e3, 0x08e3, 0x08ef, 0x08fb, 0x08fb, 0x0905, 0x090c, 0x0912,
- 0x0912, 0x0917, 0x0917, 0x091f, 0x091f, 0x091f, 0x091f, 0x092b,
- 0x092b, 0x092b, 0x092b, 0x0930, 0x0938, 0x0938, 0x0938, 0x0938,
- 0x0938, 0x0938, 0x0940, 0x0940, 0x0947, 0x094d, 0x0953, 0x0963,
- 0x0963, 0x0963, 0x096b, 0x0971, 0x0971, 0x0971, 0x0978, 0x0978,
- 0x097f, 0x0985, 0x0985, 0x098b, 0x0990, 0x0995, 0x09a7, 0x09af,
- // Entry 180 - 1BF
- 0x09af, 0x09af, 0x09af, 0x09b4, 0x09b8, 0x09b8, 0x09b8, 0x09c2,
- 0x09c9, 0x09ce, 0x09d1, 0x09d7, 0x09dc, 0x09eb, 0x09eb, 0x09eb,
- 0x09eb, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09fe, 0x09fe, 0x0a04,
- 0x0a0a, 0x0a0f, 0x0a0f, 0x0a16, 0x0a25, 0x0a25, 0x0a25, 0x0a25,
- 0x0a25, 0x0a2c, 0x0a34, 0x0a3a, 0x0a3a, 0x0a4e, 0x0a4e, 0x0a5a,
- 0x0a61, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a6d, 0x0a6d, 0x0a7b,
- 0x0a86, 0x0a86, 0x0a93, 0x0a99, 0x0a9d, 0x0aa1, 0x0aa5, 0x0aa5,
- 0x0aa5, 0x0aaa, 0x0ab3, 0x0ab9, 0x0ab9, 0x0ac7, 0x0ac7, 0x0ad4,
- // Entry 1C0 - 1FF
- 0x0adc, 0x0ae4, 0x0ae9, 0x0ae9, 0x0aee, 0x0afb, 0x0b05, 0x0b0c,
- 0x0b14, 0x0b1e, 0x0b23, 0x0b2b, 0x0b40, 0x0b40, 0x0b49, 0x0b49,
- 0x0b53, 0x0b5c, 0x0b62, 0x0b69, 0x0b72, 0x0b7f, 0x0b7f, 0x0b92,
- 0x0b9c, 0x0ba3, 0x0bac, 0x0bb6, 0x0bb6, 0x0bbb, 0x0bc3, 0x0bc3,
- 0x0bc3, 0x0bc3, 0x0bcc, 0x0bcf, 0x0bd6, 0x0bde, 0x0bf4, 0x0bf4,
- 0x0bf9, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c08, 0x0c0e, 0x0c17,
- 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c24, 0x0c24,
- 0x0c2e, 0x0c32, 0x0c3e, 0x0c44, 0x0c44, 0x0c44, 0x0c4f, 0x0c5b,
- // Entry 200 - 23F
- 0x0c66, 0x0c71, 0x0c78, 0x0c7f, 0x0c7f, 0x0c84, 0x0c84, 0x0c84,
- 0x0c84, 0x0c84, 0x0c8b, 0x0c92, 0x0c9f, 0x0cac, 0x0cb2, 0x0cba,
- 0x0cc2, 0x0cc2, 0x0cc2, 0x0cc8, 0x0ccd, 0x0cd6, 0x0cd9, 0x0ce0,
- 0x0ce0, 0x0ce7, 0x0cee, 0x0cee, 0x0cf6, 0x0d01, 0x0d0a, 0x0d12,
- 0x0d12, 0x0d12, 0x0d1b, 0x0d1b, 0x0d22, 0x0d28, 0x0d28, 0x0d2d,
- 0x0d42, 0x0d4c, 0x0d55, 0x0d5c, 0x0d67, 0x0d6a, 0x0d72, 0x0d78,
- 0x0d91, 0x0d91, 0x0d99, 0x0d9f, 0x0d9f, 0x0da5, 0x0dab, 0x0db0,
- 0x0db5, 0x0db5, 0x0dbe, 0x0dc5, 0x0dcd, 0x0dcd, 0x0dd0, 0x0dd5,
- // Entry 240 - 27F
- 0x0dd5, 0x0dd5, 0x0dd5, 0x0ddd, 0x0de4, 0x0de9, 0x0df1, 0x0df7,
- 0x0e0f, 0x0e13, 0x0e19, 0x0e19, 0x0e26, 0x0e26, 0x0e36, 0x0e48,
- 0x0e59, 0x0e67, 0x0e7a, 0x0e89, 0x0ea0, 0x0eb0, 0x0ec3, 0x0ec3,
- 0x0ed0, 0x0edb, 0x0ee8, 0x0ef2, 0x0f03, 0x0f14, 0x0f1c, 0x0f28,
- 0x0f36, 0x0f46,
- },
- },
- { // brx
- "अब्खाज़ियन्अवस्तन्अफ्रीकीअकनअम्हारिक्आर्गोनीअरबीअसामीअवारिक्आयमाराअज़रबै" +
- "जानीबशख़िर्बैलोरूसियन्बल्गैरियन्बिस्लामाबांबाराबंगलातिब्बतीब्रटोंब" +
- "ोस्नियाईकातालान्चेचेन्चामोरोकोर्सीकन्क्रीचेक्चर्च स्लाविक्चुवाश्वै" +
- "ल्श्डैनीश्ज़र्मनदीवेहीभुटानीएवेग्रीकअंग्रेज़ीएस्पेरान्तोस्पैनिशऐस्" +
- "टोनियन्बास्क्फार्सीफुलाह्फिनिश्फ़ीजीफिरोज़ीफ्रांसीसीपश्चीमी फ्रीज़" +
- "ियन्आईरिशस्कॉट्स् गैलिक्गैलिशियन्गुआरानीगुजरातीमैंक्सहउसाहिब्रुहिं" +
- "दीहीरी मोटुक्रोएशन्हाईशीयन्हंगैरीयन्अरमेनियन्हेरेरोईन्टरलिंग्वाइन्" +
- "डोनेशियन्ईन्टरलिंग्वेईग्बोसीचुआन् यीइनुपियाक़्ईडोआईस्लैंडिक्ईटालिय" +
- "न्इनूक्टीटूत्जापानीजावानीसजॉर्जियन्कॉंगोकिकुयुकुआनयामाक़ज़ाख़्कलाल" +
- "ीसुतख्मेरकन्नड्कोरीयन्कनुरीकश्मिरीकुर्दीकोमीकौर्नवॉलीकिरग़ीज़्लैटी" +
- "न्लुक्समबुर्गीगांडालींबुर्गीलिंगालालाओसीयन्लिथुआनियन्लुबा कटांगाला" +
- "टवियन् (लैट्टीश)मालागासीमार्शलीमाओरीमैसेडोनियन्मलयालममोंगोलियनमराठ" +
- "ीमलायमालटीज़्बर्मीनाऊरूउत्तर न्दबेलेनेपालीन्डोंगाडच्नॉर्वेजियन् नी" +
- "नॉर्स्क्नोर्वेगी बोकमालदक्षिणी न्दबेलेनावाहोन्यानजाओक्सीतानओहीबवाओ" +
- "रोमो (अफ़ान)उड़ियाओस्सेटीपंजाबीपालीपोलिशपख़्तुपुर्तगालीक्वेचुआरेह्" +
- "टो-रोमान्सकिरून्दीरूमानीयन्रुसीकिन्यारुआण्डासंस्कृत्सार्दीनीसिंधीउ" +
- "त्तरी सामीसांग्रोसींहालास्लोवाक्स्लोवेनियन्सामोअनशोनासोमालीआल्बेनि" +
- "यन्सर्बियन्स्वाटिसुन्दानीस्वीडिशस्वाहिलीतमिळतेलुगुताजिक्थाईतिग्रीन" +
- "्यातुर्कमेनत्स्वानाटॉंगातुर्कीसोंगाटाटर्टाहिटिउईग़ुरयूक्रेनियन्ऊर्" +
- "दुउज़बेक्वेंडावियेतनामीवोलापोकवालुनवोलोफख़ोसायीद्दीशयोरूबाज़ुआंगची" +
- "नीज़ुलूअचेहनीअकोलीअडांगमेअडीगेअफ्रीहीलीऐनूअकाडिनीअलुटपुरानी अंग्रे" +
- "ज़ीअंगीकाअरामाईकअरापाहोअरावाकअवधीबलूचीबालिनीबास्क़्बेजाबेंबाभोजपुर" +
- "ीबिकोल्बिनीसीकसीकाब्रजबड़ोबुरियातबुगीनीब्लीनकाद्दौकारीब्आत्समचेबुआ" +
- "नोचीबचाचगताईचुकेसेमारीचीनूक् जार्गन्चौक्टोचिपेवियान्चीरोकीशायान्कॉ" +
- "प्टीक्तुर्की क्रिमियाकाशुबियान्डकौटादर्गवादलावार्स्लेव्डोगरीब्डींग" +
- "काडोगरीसोर्बियन्डुआलामध्य डचद्युआलाएफीक्प्राचीन मिस्रीएकाजुकएलामीम" +
- "ध्य अंग्रेज़ीएवौंडोफाँग्फिलिपिनोफोनमध्य फ्रांसीसीपुरानी फ्रांसीसीउ" +
- "त्तरी फ्रीज़ियन्पूर्वी फ्रीज़ियन्फ्रीउलीअन्गागायोग्बायागीज़्गीलबर्" +
- "टीमध्य उच्चस्तरी जर्मनपुरानी उच्चस्तरी जर्मनगाँडीगोरंटालोगॉथिकग्रे" +
- "बोप्राचीन यूनानीस्वीस जर्मनग्वीचलीनहईडाहवाईअनहीलीगैनोनहीत्तीह्मौंग" +
- "ऊपरी सौर्बियनहूपाईबान्ईलोकोईंगुषलोजबानयहुदी फ़ारसीयहुदी अरबीकारा क" +
- "लपककाबील्कचीन्जुकंबाकावीकबार्डी भाषात्याप्कोरोख़ासीख़ोतानीकींबुंडु" +
- "कोंकणीकोस्राईयन्क्पेलेकराचय् बलकार्करेलियन्कुरुख़्कुमीक्कुतेनाईलाड" +
- "़ीनोलाह्डांलांबालेज़गीयानमोंगोलोज़ीलुबा लुलुआलुईसेनोलुंडालुओलुशाईम" +
- "ादुरीमघीमैथीलीमक्सरमांडींगोमसाईमोक्षामंदारमेंदेमध्य आईरीश भाषामीकम" +
- "ाकमिनंगकाबाउमांचुमणीपुरीमोहोकमोस्सीक्रीकमीरांडीमारवाड़ीऐर्ज़ियानेआ" +
- "पोलिटननीजी स्तरिय जर्मननेवारीनियासनियुइआननोगाईपुरानी नॉर्स्न्गकोपु" +
- "रानी नेवारीन्यामवेज़ीन्यानकोलेन्यौरोन्ज़ीमाओसेजतुर्की ओटोमानपांगास" +
- "ीननपहलवीपंपंगापापीआमेन्तोपालाऊपुरानी फ़ारसीफीनीसीपोहनपीपुरानी प्रो" +
- "वाँसालराजस्थानीरापानुईरारोटोंगारुमानीआरोमानीसंडावेयकुट्समारीती आरा" +
- "माईक़सासकसंतालीसीसीलीअनस्कॉटसेलकुपपुरानी आईरीशशानसीदामोपश्चीमी साम" +
- "ीलुले सामीईनारी सामीस्कोल्ट् सामीसोनिंगकेसोगडीयनस्रनान् टॉंगोसेरेर" +
- "सुकुमासुसुसुमेरिअनपारंपरीक सिरिआकसिरिआकतीमनेतेरेनोतेतुमटीग्रेटीव्ट" +
- "ोकेलौक्लींगदनट्लिंगीततमाशेकन्यासा टॉंगातोक पिसीनत्सीमशीआन्टुँबुकाट" +
- "ुवालुटुवीउड़मुर्तउगारितीउंबुंडुरुटवाईवोटीकवालामोवारयवाशोकालमीकयाओय" +
- "ापीज़ज़ापोतेकब्लीस चिन्हज़ेनागाज़ुनीरिक्तज़ाज़ाजर्मन (ऑस्ट्रिया)उच" +
- "्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग्रेज़ी (कनाडाई)अ" +
- "ंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्पैनिशईवेरियाई स्" +
- "पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्डेवियन्सर्बो-क्र" +
- "ोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0021, 0x0036, 0x004b, 0x0054, 0x006f, 0x0084,
- 0x0090, 0x009f, 0x00b4, 0x00c6, 0x00e4, 0x00f9, 0x011a, 0x0138,
- 0x0150, 0x0165, 0x0174, 0x0189, 0x019b, 0x01b6, 0x01ce, 0x01e0,
- 0x01f2, 0x020d, 0x0219, 0x0225, 0x024a, 0x025c, 0x026e, 0x0280,
- 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031f,
- 0x033d, 0x034f, 0x0361, 0x0373, 0x0385, 0x0394, 0x03a9, 0x03c4,
- 0x03f8, 0x0407, 0x0432, 0x044d, 0x0462, 0x0477, 0x0489, 0x0495,
- 0x04a7, 0x04b6, 0x04cf, 0x04e7, 0x04ff, 0x051a, 0x0535, 0x0547,
- // Entry 40 - 7F
- 0x056b, 0x058f, 0x05b3, 0x05c2, 0x05de, 0x05fc, 0x0605, 0x0626,
- 0x063e, 0x065f, 0x0671, 0x0686, 0x06a1, 0x06b0, 0x06c2, 0x06da,
- 0x06f2, 0x070a, 0x0719, 0x072b, 0x0740, 0x074f, 0x0764, 0x0776,
- 0x0782, 0x079d, 0x07b8, 0x07ca, 0x07ee, 0x07fd, 0x0818, 0x082d,
- 0x0845, 0x0863, 0x0882, 0x08b2, 0x08ca, 0x08df, 0x08ee, 0x090f,
- 0x0921, 0x093c, 0x094b, 0x0957, 0x096f, 0x097e, 0x098d, 0x09b2,
- 0x09c4, 0x09d9, 0x09e2, 0x0a22, 0x0a4d, 0x0a78, 0x0a8a, 0x0a9f,
- 0x0ab7, 0x0ac9, 0x0aea, 0x0afc, 0x0b11, 0x0b23, 0x0b2f, 0x0b3e,
- // Entry 80 - BF
- 0x0b50, 0x0b6b, 0x0b80, 0x0ba8, 0x0bc0, 0x0bdb, 0x0be7, 0x0c0e,
- 0x0c26, 0x0c3e, 0x0c4d, 0x0c6c, 0x0c81, 0x0c96, 0x0cae, 0x0ccf,
- 0x0ce1, 0x0ced, 0x0cff, 0x0d1d, 0x0d35, 0x0d47, 0x0d47, 0x0d5f,
- 0x0d74, 0x0d8c, 0x0d98, 0x0daa, 0x0dbc, 0x0dc5, 0x0de3, 0x0dfb,
- 0x0e13, 0x0e22, 0x0e34, 0x0e43, 0x0e52, 0x0e64, 0x0e76, 0x0e97,
- 0x0ea6, 0x0ebb, 0x0eca, 0x0ee5, 0x0efa, 0x0f09, 0x0f18, 0x0f27,
- 0x0f3c, 0x0f4e, 0x0f60, 0x0f6c, 0x0f7b, 0x0f8d, 0x0f9c, 0x0fb1,
- 0x0fc0, 0x0fc0, 0x0fdb, 0x0fdb, 0x0fe4, 0x0ff9, 0x0ff9, 0x1005,
- // Entry C0 - FF
- 0x1005, 0x1005, 0x1033, 0x1045, 0x105a, 0x105a, 0x105a, 0x106f,
- 0x106f, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081,
- 0x108d, 0x109c, 0x10ae, 0x10ae, 0x10c3, 0x10c3, 0x10c3, 0x10c3,
- 0x10cf, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10f3,
- 0x1105, 0x1111, 0x1111, 0x1111, 0x1126, 0x1126, 0x1126, 0x1132,
- 0x1132, 0x113e, 0x113e, 0x1153, 0x1165, 0x1165, 0x1174, 0x1174,
- 0x1186, 0x1198, 0x1198, 0x11a7, 0x11bc, 0x11bc, 0x11cb, 0x11da,
- 0x11ec, 0x11f8, 0x1220, 0x1232, 0x1250, 0x1262, 0x1274, 0x1274,
- // Entry 100 - 13F
- 0x128c, 0x128c, 0x12b7, 0x12d5, 0x12e4, 0x12f6, 0x12f6, 0x130b,
- 0x131d, 0x1332, 0x1344, 0x1344, 0x1353, 0x136e, 0x136e, 0x137d,
- 0x1390, 0x1390, 0x13a5, 0x13a5, 0x13a5, 0x13b4, 0x13b4, 0x13dc,
- 0x13ee, 0x13fd, 0x1425, 0x1425, 0x1437, 0x1437, 0x1446, 0x145e,
- 0x145e, 0x1467, 0x1467, 0x148f, 0x14bd, 0x14bd, 0x14ee, 0x151f,
- 0x153d, 0x1543, 0x1543, 0x1543, 0x154f, 0x1561, 0x1561, 0x1570,
- 0x1588, 0x1588, 0x15c0, 0x15fe, 0x15fe, 0x160d, 0x1625, 0x1634,
- 0x1646, 0x166e, 0x168d, 0x168d, 0x168d, 0x168d, 0x16a5, 0x16b1,
- // Entry 140 - 17F
- 0x16b1, 0x16c3, 0x16c3, 0x16de, 0x16f0, 0x1702, 0x1727, 0x1727,
- 0x1733, 0x1742, 0x1742, 0x1751, 0x1760, 0x1760, 0x1760, 0x1772,
- 0x1772, 0x1772, 0x1794, 0x17b0, 0x17b0, 0x17c9, 0x17db, 0x17ea,
- 0x17f0, 0x17fc, 0x1808, 0x182a, 0x182a, 0x183c, 0x183c, 0x183c,
- 0x183c, 0x1848, 0x1848, 0x1857, 0x186c, 0x186c, 0x186c, 0x186c,
- 0x186c, 0x186c, 0x1884, 0x1884, 0x1896, 0x18b4, 0x18c6, 0x18eb,
- 0x18eb, 0x18eb, 0x1903, 0x1918, 0x1918, 0x1918, 0x1918, 0x192a,
- 0x193f, 0x1954, 0x1954, 0x1969, 0x1978, 0x1993, 0x1993, 0x1993,
- // Entry 180 - 1BF
- 0x1993, 0x1993, 0x1993, 0x19a2, 0x19b1, 0x19b1, 0x19b1, 0x19cd,
- 0x19e2, 0x19f1, 0x19fa, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a1b,
- 0x1a1b, 0x1a24, 0x1a36, 0x1a45, 0x1a5d, 0x1a69, 0x1a69, 0x1a7b,
- 0x1a8a, 0x1a99, 0x1a99, 0x1a99, 0x1ac2, 0x1ac2, 0x1ac2, 0x1ad4,
- 0x1af2, 0x1b01, 0x1b16, 0x1b25, 0x1b37, 0x1b37, 0x1b37, 0x1b37,
- 0x1b46, 0x1b5b, 0x1b73, 0x1b73, 0x1b73, 0x1b8b, 0x1b8b, 0x1b8b,
- 0x1ba6, 0x1ba6, 0x1bd5, 0x1be7, 0x1bf6, 0x1c0b, 0x1c0b, 0x1c0b,
- 0x1c0b, 0x1c1a, 0x1c3f, 0x1c3f, 0x1c4e, 0x1c4e, 0x1c4e, 0x1c73,
- // Entry 1C0 - 1FF
- 0x1c91, 0x1cac, 0x1cbe, 0x1cd3, 0x1cdf, 0x1d04, 0x1d1f, 0x1d2e,
- 0x1d40, 0x1d61, 0x1d70, 0x1d70, 0x1d70, 0x1d70, 0x1d95, 0x1d95,
- 0x1da7, 0x1da7, 0x1da7, 0x1db9, 0x1db9, 0x1dea, 0x1dea, 0x1dea,
- 0x1e05, 0x1e1a, 0x1e35, 0x1e35, 0x1e35, 0x1e35, 0x1e47, 0x1e47,
- 0x1e47, 0x1e47, 0x1e5c, 0x1e5c, 0x1e6e, 0x1e7d, 0x1eab, 0x1eab,
- 0x1eb7, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ee1, 0x1ef0, 0x1ef0,
- 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1f02, 0x1f02, 0x1f24, 0x1f24,
- 0x1f24, 0x1f2d, 0x1f2d, 0x1f3f, 0x1f3f, 0x1f3f, 0x1f61, 0x1f7a,
- // Entry 200 - 23F
- 0x1f96, 0x1fbb, 0x1fd3, 0x1fe8, 0x200d, 0x201c, 0x201c, 0x201c,
- 0x202e, 0x203a, 0x2052, 0x2052, 0x2052, 0x207d, 0x208f, 0x208f,
- 0x208f, 0x209e, 0x209e, 0x20b0, 0x20bf, 0x20d1, 0x20dd, 0x20ef,
- 0x20ef, 0x2107, 0x211f, 0x211f, 0x2131, 0x2153, 0x216c, 0x216c,
- 0x216c, 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, 0x21b1, 0x21bd,
- 0x21bd, 0x21d5, 0x21ea, 0x21ff, 0x2208, 0x2211, 0x2211, 0x2211,
- 0x2211, 0x2211, 0x2220, 0x2220, 0x2220, 0x2220, 0x2232, 0x223e,
- 0x224a, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, 0x2265, 0x2277,
- // Entry 240 - 27F
- 0x2277, 0x2277, 0x2277, 0x2277, 0x228f, 0x22ae, 0x22ae, 0x22c3,
- 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x22f3, 0x2320, 0x235f,
- 0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, 0x249b, 0x249b,
- 0x24cb, 0x24f8, 0x24f8, 0x250a, 0x250a, 0x250a, 0x252b, 0x2553,
- 0x2577, 0x25a1,
- },
- },
- { // bs
- "afarskiabhazijskiavestanskiafrikanerskiakanamharskiaragonežanskiarapskia" +
- "semijskiavarskiajmaraazerbejdžanskibaškirskibjeloruskibugarskibislam" +
- "abambarabengalskitibetanskibretonskibosanskikatalonskičečenskičamoro" +
- "korzikanskikričeškistaroslovenskičuvaškivelškidanskinjemačkidivehijs" +
- "kidžongaevegrčkiengleskiesperantošpanskiestonskibaskijskiperzijskifu" +
- "lahfinskifidžijskifarskifrancuskifrizijskiirskiškotski galskigalskig" +
- "varanigudžaratimankshausahebrejskihindihiri motuhrvatskihaićanskimađ" +
- "arskijermenskihererointerlingvaindonezijskiinterlingveigbosičuan jii" +
- "nupiakidoislandskiitalijanskiinuktitutjapanskijavanskigruzijskikongo" +
- "kikujukuanjamakazačkikalalisutskikmerskikanadakorejskikanurikašmirik" +
- "urdskikomikorniškikirgiskilatinskiluksemburškigandalimburgišlingalal" +
- "aoškilitvanskiluba-katangaletonskimalagazijskimaršalskimaorskimakedo" +
- "nskimalajalammongolskimaratimalajskimalteškiburmanskinaurusjeverni n" +
- "debelenepalskindongaholandskinorveški njorsknorveški bokmaljužni nde" +
- "belenavahonjanjaprovansalskiojibvaoromoorijskiosetskipandžabskipalip" +
- "oljskipaštunskiportugalskikvenčareto-romanskirundirumunskiruskikinja" +
- "rvandasanskritsardinijskisindisjeverni samisangosingaleskislovačkisl" +
- "ovenačkisamoanskišonasomalskialbanskisrpskisvatisesotosundanskišveds" +
- "kisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskitsvanaton" +
- "ganskiturskitsongatatarskitahićanskiujgurskiukrajinskiurduuzbečkiven" +
- "davijetnamskivolapükvalunvolofkosajidišjorubanskizuangkineskizuluači" +
- "neskiakoliadangmejskiadigejskiafrihiliaghemainuakadijskialjutjužni a" +
- "ltaistaroengleskiangikaarmajskiaraukanskiarapahoaravakasuasturijskia" +
- "vadhibalučibalinezijskibasabejabembabenazapadni belučkibojpuribikolb" +
- "inisiksikabrajbodoburiatbuginežanskiiblinkadokaripskiatsamcebuanočig" +
- "ačibčačagataičukeskimaričinukskičoktavskičipvijanskičirokičejenskiso" +
- "ranski kurdskikoptskikrimeanski turskikašubijanskidakotadargvataitad" +
- "elaverslavskidogribdinkazarmadogridonjolužičkosrpskidualasrednji hol" +
- "andskijola-fonyiđulaembuefikskistaroegipatskiekajukelamitskisrednji " +
- "engleskievondofangfilipinskifonsrednji francuskistarofrancuskisevern" +
- "o-frizijskiistočni frizijskifriulijskigagagauškigajogbajadžizgilbert" +
- "škisrednji visoki nemačkistaronemačkigondigorontalogotskigrebostaro" +
- "grčkišvajcarski njemačkigusiihaidahavajskihiligajnonhititehmonggornj" +
- "olužičkosrpskihupaibanilokoingušetskilojbanngombamachamejudeo-persij" +
- "skijudeo-arapskikara-kalpaškikabilekačinžjukambakavikabardijskitjapm" +
- "akondezelenortskikorokasikotanizijskikoyra chiinikalenjinkimbundukom" +
- "i-permjačkikonkanikosreanskikpelekaračaj-balkarkarelijskikurukhshamb" +
- "alabafiakumikkutenailadinolangilandalambalezgianlakotamongolozisjeve" +
- "rni luriluba-lulualuisenolundaluolušailuyiamadureškimagahimaitilimak" +
- "asarmandingomasaimokšamandarmendemerumauricijski kreolskisrednji irs" +
- "kimakhuwa-meettometa’mikmakminangkabaumančumanipurimahavskimosimunda" +
- "ngviše jezikakriškimirandeškimarvarierzijamazanderanskineapolitanski" +
- "namaniski nemačkinevariniasniueankwasionogaistari norskinkoseverni s" +
- "otonuerklasični nevarinjamvezinjankolenjoronzimaosageotomanski tursk" +
- "ipangasinskipahlavipampangapapiamentopalauanskistaropersijskifeničan" +
- "skiponpejskistaroprovansalskikičerađastanirapanuirarotonganromboroma" +
- "niaromanijskiruasandavejakutsamaritanski aramejskisamburusasaksantal" +
- "isangusicilijanskiškotskijužnokurdskisenaselkapkojraboro senistaroir" +
- "skitahelhitšansidamojužni samilule samiinari samiskoltski jeziksonin" +
- "kesodžijenskisrananski tongoserersukumasususumerskikongoanski swahil" +
- "iklasični sirijskisirijskitimnetesoterenotetumtigretivtokelauklingon" +
- "skitlingittamašeknjasa tongatok pisintsimšiantumbukatuvalutasavaktuv" +
- "inijskimarokanski tamazigtudmurtugaritskiumbundurunvaivotskivunjoval" +
- "amovarejvašovarlpirikalmiksogajaojapeškizapotečkiblisimbolizenagasta" +
- "ndardni marokanski tamazigtzunibez lingvističkog sadržajazazamoderni" +
- " standardni arapskiaustrijski njemačkigornjonjemački (švicarski)aust" +
- "ralski engleskikanadski engleskibritanski engleskiamerički engleskil" +
- "atinoamerički španskievropski španskimeksički španskikanadski francu" +
- "skišvajcarski francuskiniskosaksonskiflamanskimoldavskisrpskohrvatsk" +
- "ikineski (pojednostavljeni)kineski (tradicionalni)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0007, 0x0011, 0x001b, 0x0027, 0x002b, 0x0033, 0x0041,
- 0x0048, 0x0051, 0x0058, 0x005e, 0x006d, 0x0077, 0x0081, 0x0089,
- 0x0090, 0x0097, 0x00a0, 0x00aa, 0x00b3, 0x00bb, 0x00c5, 0x00cf,
- 0x00d6, 0x00e1, 0x00e4, 0x00eb, 0x00f9, 0x0102, 0x0109, 0x010f,
- 0x0118, 0x0122, 0x0129, 0x012c, 0x0132, 0x013a, 0x0143, 0x014b,
- 0x0153, 0x015c, 0x0165, 0x016a, 0x0170, 0x017a, 0x0180, 0x0189,
- 0x0192, 0x0197, 0x01a6, 0x01ac, 0x01b3, 0x01bd, 0x01c2, 0x01c7,
- 0x01d0, 0x01d5, 0x01de, 0x01e6, 0x01f0, 0x01f9, 0x0202, 0x0208,
- // Entry 40 - 7F
- 0x0213, 0x021f, 0x022a, 0x022e, 0x0238, 0x023f, 0x0242, 0x024b,
- 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
- 0x0293, 0x029f, 0x02a6, 0x02ac, 0x02b4, 0x02ba, 0x02c2, 0x02c9,
- 0x02cd, 0x02d6, 0x02de, 0x02e6, 0x02f3, 0x02f8, 0x0302, 0x0309,
- 0x0310, 0x0319, 0x0325, 0x032d, 0x0339, 0x0343, 0x034a, 0x0354,
- 0x035d, 0x0366, 0x036c, 0x0374, 0x037d, 0x0386, 0x038b, 0x039b,
- 0x03a3, 0x03a9, 0x03b2, 0x03c2, 0x03d2, 0x03e0, 0x03e6, 0x03ec,
- 0x03f8, 0x03fe, 0x0403, 0x040a, 0x0411, 0x041c, 0x0420, 0x0427,
- // Entry 80 - BF
- 0x0431, 0x043c, 0x0443, 0x0450, 0x0455, 0x045d, 0x0462, 0x046d,
- 0x0475, 0x0480, 0x0485, 0x0492, 0x0497, 0x04a1, 0x04aa, 0x04b5,
- 0x04be, 0x04c3, 0x04cb, 0x04d3, 0x04d9, 0x04de, 0x04e4, 0x04ed,
- 0x04f5, 0x04fc, 0x0504, 0x050a, 0x0514, 0x051e, 0x0526, 0x0530,
- 0x0536, 0x053f, 0x0545, 0x054b, 0x0553, 0x055e, 0x0566, 0x0570,
- 0x0574, 0x057c, 0x0581, 0x058c, 0x0594, 0x0599, 0x059e, 0x05a2,
- 0x05a8, 0x05b2, 0x05b7, 0x05be, 0x05c2, 0x05cb, 0x05d0, 0x05db,
- 0x05e4, 0x05e4, 0x05ec, 0x05f1, 0x05f5, 0x05fe, 0x05fe, 0x0603,
- // Entry C0 - FF
- 0x0603, 0x060f, 0x061c, 0x0622, 0x062a, 0x0634, 0x0634, 0x063b,
- 0x063b, 0x0641, 0x0641, 0x0641, 0x0644, 0x0644, 0x064e, 0x064e,
- 0x0654, 0x065b, 0x0667, 0x0667, 0x066b, 0x066b, 0x066b, 0x066b,
- 0x066f, 0x0674, 0x0674, 0x0678, 0x0678, 0x0678, 0x0688, 0x068f,
- 0x0694, 0x0698, 0x0698, 0x0698, 0x069f, 0x069f, 0x069f, 0x06a3,
- 0x06a3, 0x06a7, 0x06a7, 0x06ad, 0x06bb, 0x06bb, 0x06bf, 0x06bf,
- 0x06c3, 0x06cb, 0x06cb, 0x06d0, 0x06d7, 0x06dc, 0x06e3, 0x06eb,
- 0x06f3, 0x06f7, 0x0700, 0x070a, 0x0716, 0x071d, 0x0726, 0x0736,
- // Entry 100 - 13F
- 0x073d, 0x073d, 0x074e, 0x075b, 0x0761, 0x0767, 0x076c, 0x0773,
- 0x077a, 0x0780, 0x0785, 0x078a, 0x078f, 0x07a3, 0x07a3, 0x07a8,
- 0x07b9, 0x07c3, 0x07c8, 0x07c8, 0x07cc, 0x07d3, 0x07d3, 0x07e1,
- 0x07e7, 0x07f0, 0x0800, 0x0800, 0x0806, 0x0806, 0x080a, 0x0814,
- 0x0814, 0x0817, 0x0817, 0x0828, 0x0836, 0x0836, 0x0847, 0x0859,
- 0x0863, 0x0865, 0x086e, 0x086e, 0x0872, 0x0877, 0x0877, 0x087c,
- 0x0887, 0x0887, 0x089e, 0x08ab, 0x08ab, 0x08b0, 0x08b9, 0x08bf,
- 0x08c4, 0x08cf, 0x08e4, 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08ee,
- // Entry 140 - 17F
- 0x08ee, 0x08f6, 0x08f6, 0x0900, 0x0906, 0x090b, 0x0920, 0x0920,
- 0x0924, 0x0928, 0x0928, 0x092d, 0x0938, 0x0938, 0x0938, 0x093e,
- 0x0944, 0x094b, 0x095a, 0x0967, 0x0967, 0x0975, 0x097b, 0x0981,
- 0x0985, 0x098a, 0x098e, 0x0999, 0x0999, 0x099d, 0x09a4, 0x09af,
- 0x09af, 0x09b3, 0x09b3, 0x09b7, 0x09c3, 0x09cf, 0x09cf, 0x09cf,
- 0x09cf, 0x09d7, 0x09df, 0x09ee, 0x09f5, 0x09ff, 0x0a04, 0x0a13,
- 0x0a13, 0x0a13, 0x0a1d, 0x0a23, 0x0a2b, 0x0a30, 0x0a30, 0x0a35,
- 0x0a3c, 0x0a42, 0x0a47, 0x0a4c, 0x0a51, 0x0a58, 0x0a58, 0x0a58,
- // Entry 180 - 1BF
- 0x0a58, 0x0a5e, 0x0a5e, 0x0a63, 0x0a67, 0x0a74, 0x0a74, 0x0a7e,
- 0x0a85, 0x0a8a, 0x0a8d, 0x0a93, 0x0a98, 0x0a98, 0x0a98, 0x0aa2,
- 0x0aa2, 0x0aa8, 0x0aaf, 0x0ab6, 0x0abe, 0x0ac3, 0x0ac3, 0x0ac9,
- 0x0acf, 0x0ad4, 0x0ad8, 0x0aec, 0x0af9, 0x0b07, 0x0b0e, 0x0b14,
- 0x0b1f, 0x0b25, 0x0b2d, 0x0b35, 0x0b39, 0x0b39, 0x0b40, 0x0b4c,
- 0x0b53, 0x0b5e, 0x0b65, 0x0b65, 0x0b65, 0x0b6b, 0x0b78, 0x0b78,
- 0x0b85, 0x0b89, 0x0b97, 0x0b9d, 0x0ba1, 0x0ba7, 0x0ba7, 0x0bad,
- 0x0bad, 0x0bb2, 0x0bbe, 0x0bbe, 0x0bc1, 0x0bcd, 0x0bd1, 0x0be1,
- // Entry 1C0 - 1FF
- 0x0be9, 0x0bf1, 0x0bf6, 0x0bfb, 0x0c00, 0x0c10, 0x0c1b, 0x0c22,
- 0x0c2a, 0x0c34, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c4c, 0x0c4c,
- 0x0c57, 0x0c57, 0x0c57, 0x0c60, 0x0c60, 0x0c71, 0x0c76, 0x0c76,
- 0x0c80, 0x0c87, 0x0c91, 0x0c91, 0x0c91, 0x0c96, 0x0c9c, 0x0c9c,
- 0x0c9c, 0x0c9c, 0x0ca7, 0x0caa, 0x0cb1, 0x0cb6, 0x0ccc, 0x0cd3,
- 0x0cd8, 0x0cdf, 0x0cdf, 0x0cdf, 0x0ce4, 0x0cf0, 0x0cf8, 0x0cf8,
- 0x0d05, 0x0d05, 0x0d09, 0x0d09, 0x0d0f, 0x0d1d, 0x0d27, 0x0d27,
- 0x0d2f, 0x0d33, 0x0d33, 0x0d39, 0x0d39, 0x0d39, 0x0d44, 0x0d4d,
- // Entry 200 - 23F
- 0x0d57, 0x0d65, 0x0d6c, 0x0d78, 0x0d87, 0x0d8c, 0x0d8c, 0x0d8c,
- 0x0d92, 0x0d96, 0x0d9e, 0x0d9e, 0x0db0, 0x0dc2, 0x0dca, 0x0dca,
- 0x0dca, 0x0dcf, 0x0dd3, 0x0dd9, 0x0dde, 0x0de3, 0x0de6, 0x0ded,
- 0x0ded, 0x0df7, 0x0dfe, 0x0dfe, 0x0e06, 0x0e11, 0x0e1a, 0x0e1a,
- 0x0e1a, 0x0e1a, 0x0e23, 0x0e23, 0x0e2a, 0x0e30, 0x0e37, 0x0e41,
- 0x0e54, 0x0e5a, 0x0e63, 0x0e6a, 0x0e6d, 0x0e70, 0x0e70, 0x0e70,
- 0x0e70, 0x0e70, 0x0e76, 0x0e76, 0x0e7b, 0x0e7b, 0x0e81, 0x0e86,
- 0x0e8b, 0x0e93, 0x0e93, 0x0e99, 0x0e99, 0x0e9d, 0x0ea0, 0x0ea8,
- // Entry 240 - 27F
- 0x0ea8, 0x0ea8, 0x0ea8, 0x0ea8, 0x0eb2, 0x0ebc, 0x0ebc, 0x0ec2,
- 0x0ee0, 0x0ee4, 0x0f00, 0x0f04, 0x0f1e, 0x0f1e, 0x0f32, 0x0f4e,
- 0x0f61, 0x0f72, 0x0f84, 0x0f96, 0x0fae, 0x0fbf, 0x0fd1, 0x0fd1,
- 0x0fe3, 0x0ff8, 0x1006, 0x100f, 0x100f, 0x100f, 0x1018, 0x1026,
- 0x1040, 0x1057,
- },
- },
- { // bs-Cyrl
- "афарскиабказијскиавестанскиафриканерскиаканамхарскиарагонежанскиарапскиа" +
- "семијскиаварскиајмараазербејџанскибашкирбелорускибугарскибисламабам" +
- "барабенгласкитибетанскибретонскибосанскикаталонскичеченскичаморокор" +
- "зиканскикричешкистарословенскичувашкивелшкиданскинемачкидивехијскиџ" +
- "онгаевегрчкиенглескиесперантошпанскиестонскибаскијскиперсијскифулах" +
- "финскифиджијскифарскифранцускифризијскиирскишкотски галскигалскигва" +
- "ранигуџаратиманксхаусахебрејскихиндихири мотухрватскихаитскимађарск" +
- "ијерменскихерероинтерлингваиндонежанскимеђујезичкиигбосичуан јиунуп" +
- "иакидоисландскииталијанскиинуктитутјапанскијаванскигрузијскиконгоки" +
- "кујукуањамакозачкикалалисуткмерскиканадакорејскиканурикашмирскикурд" +
- "скикомикорнишкикиргискилатинскилуксембуршкигандалимбургишлингалалао" +
- "скилитванскилуба-катангалетонскималагасијскимаршалскимаорскимакедон" +
- "скималајаламмонголскимаратималајскимелтешкибурманскинаурусеверни нд" +
- "ебеленепалскиндонгахоландскинорвешки њорскнорвешки бокмалјужни ндеб" +
- "еленавахоњањапровансалскиојибваоромооријскиосетскипанџабскипалипољс" +
- "кипаштунскипортугалскиквенчарето-романскирундирумунскирускикинјаруа" +
- "ндасанскритсардињаскисиндисеверни самисангосингалескисловачкисловен" +
- "ачкисамоанскишонасомалскиалбанскисрпскисватисесотосунданскишведскис" +
- "вахилитамилскителугутађиктајландскитигрињатуркменскитсванатонгатурс" +
- "китсонгататарскитахићанскиујгурскиукрајинскиурдуузбечкивендавијетна" +
- "мскиволапуквалунволофксхосајидишјорубажуангкинескизулуачинескиаколи" +
- "адангмејскиадигејскиафрихилиаинуакадијскиаљутјужни алтаистароенглес" +
- "киангикаармајскиароканијскиарапахоаравакастуријскиавадхибалучибалин" +
- "езијскибасабејабембабојпурибиколбинисисикабрајбуриатбугинежанскибли" +
- "нкадокарипскиатсамскицебуаночибчачагатаичукескимаричинукскичоктавск" +
- "ичипвијанскичерокичејенскикоптскикримеански турскикашубијанскидакот" +
- "адаргваделаверславскидогрибдинкадогриниски сорбијанскидуаласредњи х" +
- "оландскиђулаефикскистароегипатскиекајукеламитскисредњи енглескиевон" +
- "дофангтагалогфонсредњи францускистарофранцускисеверно-фризијскиисто" +
- "чни фризијскифриулијскигагајогбајаџизгилбертшкисредњи високи немачк" +
- "истаронемачкигондигоронталоготскигребостарогрчкишвајцарски немачкиг" +
- "вич’инхаидахавајскихилигајнонхититехмонггорњи сорбијскихупаибанилок" +
- "оингвишкилојбанјудео-персијскијудео-арапскикара-калпашкикабилекачин" +
- "ђукамбакавикабардијскитјапкорокасикотанешкикимбундуконканикосреанск" +
- "икпелекарачај-балкаркарелијскикурукхкумиккутенаиладиноландаламбалез" +
- "гианмонголозилуба-лулуалуисенолундалуолушаимадурешкимагахимаитилима" +
- "касармандингомасаимокшамандармендесредњи ирскимикмакминангкабауманч" +
- "уманипуримахавскимосивише језикакришкимирандешкимарвариерзијанеапол" +
- "итанскиниски немачкиневариниасниуеанногаистари норскин’косеверни со" +
- "токласични неварињамвезињанколењоронзимаосагеотомански турскипангас" +
- "инскипахлавипампангапапиаментопалауанскистароперсијскифеничанскипон" +
- "пејскистаропровансалскирађастанирапануираротонганроманиароманијскис" +
- "андавејакутсамаритански арамејскисасаксанталисицилијанскишкотскисел" +
- "капстароирскишансидамојужни самилуле самиинари самисколтски језиксо" +
- "нинкесоџијенскисранански тонгосерерсукумасусусумерскикоморскикласич" +
- "ни сиријскисиријскитимнетеренотетумтигретивтокелауклингонскитлингит" +
- "тамашекњаса тонгаток писинтсимшиантумбукатувалутувинијскиудмуртугар" +
- "итскиумбундурутваивотскиваламоварајвашокалмикјаојапешкикантонскизап" +
- "отечкиблисимболизенагазунибез лингвистичког садржајазазаАустријски " +
- "немачкиШвајцарски високи немачкиАустралијски енглескиКанадски енгле" +
- "скиБритански енглескиСАД енглескиЛатино-амерички шпанскиИберијски ш" +
- "панскиКанадски францускиШвајцарски францускифламанскиБразилски порт" +
- "угалскиИберијски португалскимолдавскисрпскохрватскикинески (поједно" +
- "стављен)кинески (традиционални)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0022, 0x0036, 0x004e, 0x0056, 0x0066, 0x0080,
- 0x008e, 0x00a0, 0x00ae, 0x00ba, 0x00d4, 0x00e0, 0x00f2, 0x0102,
- 0x0110, 0x011e, 0x0130, 0x0144, 0x0156, 0x0166, 0x017a, 0x018a,
- 0x0196, 0x01ac, 0x01b2, 0x01bc, 0x01d8, 0x01e6, 0x01f2, 0x01fe,
- 0x020c, 0x0220, 0x022a, 0x0230, 0x023a, 0x024a, 0x025c, 0x026a,
- 0x027a, 0x028c, 0x029e, 0x02a8, 0x02b4, 0x02c6, 0x02d2, 0x02e4,
- 0x02f6, 0x0300, 0x031b, 0x0327, 0x0335, 0x0345, 0x034f, 0x0359,
- 0x036b, 0x0375, 0x0386, 0x0396, 0x03a4, 0x03b4, 0x03c6, 0x03d2,
- // Entry 40 - 7F
- 0x03e8, 0x0400, 0x0416, 0x041e, 0x042f, 0x043d, 0x0443, 0x0455,
- 0x046b, 0x047d, 0x048d, 0x049d, 0x04af, 0x04b9, 0x04c5, 0x04d3,
- 0x04e1, 0x04f3, 0x0501, 0x050d, 0x051d, 0x0529, 0x053b, 0x0549,
- 0x0551, 0x0561, 0x0571, 0x0581, 0x0599, 0x05a3, 0x05b5, 0x05c3,
- 0x05cf, 0x05e1, 0x05f8, 0x0608, 0x0620, 0x0632, 0x0640, 0x0654,
- 0x0666, 0x0678, 0x0684, 0x0694, 0x06a4, 0x06b6, 0x06c0, 0x06dd,
- 0x06ed, 0x06f9, 0x070b, 0x0726, 0x0743, 0x075c, 0x0768, 0x0770,
- 0x0788, 0x0794, 0x079e, 0x07ac, 0x07ba, 0x07cc, 0x07d4, 0x07e0,
- // Entry 80 - BF
- 0x07f2, 0x0808, 0x0814, 0x082d, 0x0837, 0x0847, 0x0851, 0x0867,
- 0x0877, 0x088b, 0x0895, 0x08ac, 0x08b6, 0x08ca, 0x08da, 0x08ee,
- 0x0900, 0x0908, 0x0918, 0x0928, 0x0934, 0x093e, 0x094a, 0x095c,
- 0x096a, 0x0978, 0x0988, 0x0994, 0x099e, 0x09b2, 0x09c0, 0x09d4,
- 0x09e0, 0x09ea, 0x09f6, 0x0a02, 0x0a12, 0x0a26, 0x0a36, 0x0a4a,
- 0x0a52, 0x0a60, 0x0a6a, 0x0a80, 0x0a8e, 0x0a98, 0x0aa2, 0x0aae,
- 0x0ab8, 0x0ac4, 0x0ace, 0x0adc, 0x0ae4, 0x0af4, 0x0afe, 0x0b14,
- 0x0b26, 0x0b26, 0x0b36, 0x0b36, 0x0b3e, 0x0b50, 0x0b50, 0x0b58,
- // Entry C0 - FF
- 0x0b58, 0x0b6d, 0x0b87, 0x0b93, 0x0ba3, 0x0bb9, 0x0bb9, 0x0bc7,
- 0x0bc7, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0be7, 0x0be7,
- 0x0bf3, 0x0bff, 0x0c17, 0x0c17, 0x0c1f, 0x0c1f, 0x0c1f, 0x0c1f,
- 0x0c27, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c3f,
- 0x0c49, 0x0c51, 0x0c51, 0x0c51, 0x0c5d, 0x0c5d, 0x0c5d, 0x0c65,
- 0x0c65, 0x0c65, 0x0c65, 0x0c71, 0x0c89, 0x0c89, 0x0c91, 0x0c91,
- 0x0c99, 0x0ca9, 0x0ca9, 0x0cb9, 0x0cc7, 0x0cc7, 0x0cd1, 0x0cdf,
- 0x0ced, 0x0cf5, 0x0d05, 0x0d17, 0x0d2d, 0x0d39, 0x0d49, 0x0d49,
- // Entry 100 - 13F
- 0x0d57, 0x0d57, 0x0d78, 0x0d90, 0x0d9c, 0x0da8, 0x0da8, 0x0db6,
- 0x0dc4, 0x0dd0, 0x0dda, 0x0dda, 0x0de4, 0x0e05, 0x0e05, 0x0e0f,
- 0x0e2e, 0x0e2e, 0x0e36, 0x0e36, 0x0e36, 0x0e44, 0x0e44, 0x0e60,
- 0x0e6c, 0x0e7e, 0x0e9b, 0x0e9b, 0x0ea7, 0x0ea7, 0x0eaf, 0x0ebd,
- 0x0ebd, 0x0ec3, 0x0ec3, 0x0ee2, 0x0efe, 0x0efe, 0x0f1f, 0x0f40,
- 0x0f54, 0x0f58, 0x0f58, 0x0f58, 0x0f60, 0x0f6a, 0x0f6a, 0x0f70,
- 0x0f84, 0x0f84, 0x0fac, 0x0fc4, 0x0fc4, 0x0fce, 0x0fe0, 0x0fec,
- 0x0ff6, 0x100a, 0x102d, 0x102d, 0x102d, 0x102d, 0x103c, 0x1046,
- // Entry 140 - 17F
- 0x1046, 0x1056, 0x1056, 0x106a, 0x1076, 0x1080, 0x109d, 0x109d,
- 0x10a5, 0x10ad, 0x10ad, 0x10b7, 0x10c7, 0x10c7, 0x10c7, 0x10d3,
- 0x10d3, 0x10d3, 0x10f0, 0x1109, 0x1109, 0x1122, 0x112e, 0x1138,
- 0x113c, 0x1146, 0x114e, 0x1164, 0x1164, 0x116c, 0x116c, 0x116c,
- 0x116c, 0x1174, 0x1174, 0x117c, 0x118e, 0x118e, 0x118e, 0x118e,
- 0x118e, 0x118e, 0x119e, 0x119e, 0x11ac, 0x11c0, 0x11ca, 0x11e5,
- 0x11e5, 0x11e5, 0x11f9, 0x1205, 0x1205, 0x1205, 0x1205, 0x120f,
- 0x121d, 0x1229, 0x1229, 0x1233, 0x123d, 0x124b, 0x124b, 0x124b,
- // Entry 180 - 1BF
- 0x124b, 0x124b, 0x124b, 0x1255, 0x125d, 0x125d, 0x125d, 0x1270,
- 0x127e, 0x1288, 0x128e, 0x1298, 0x1298, 0x1298, 0x1298, 0x12aa,
- 0x12aa, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x12ec, 0x12ec, 0x12f6,
- 0x1302, 0x130c, 0x130c, 0x130c, 0x1323, 0x1323, 0x1323, 0x132f,
- 0x1345, 0x134f, 0x135f, 0x136f, 0x1377, 0x1377, 0x1377, 0x138c,
- 0x1398, 0x13ac, 0x13ba, 0x13ba, 0x13ba, 0x13c6, 0x13c6, 0x13c6,
- 0x13e0, 0x13e0, 0x13f9, 0x1405, 0x140d, 0x1419, 0x1419, 0x1419,
- 0x1419, 0x1423, 0x143a, 0x143a, 0x1443, 0x145a, 0x145a, 0x1477,
- // Entry 1C0 - 1FF
- 0x1485, 0x1493, 0x149b, 0x14a5, 0x14af, 0x14ce, 0x14e4, 0x14f2,
- 0x1502, 0x1516, 0x152a, 0x152a, 0x152a, 0x152a, 0x1546, 0x1546,
- 0x155a, 0x155a, 0x155a, 0x156c, 0x156c, 0x158e, 0x158e, 0x158e,
- 0x15a0, 0x15ae, 0x15c2, 0x15c2, 0x15c2, 0x15c2, 0x15ce, 0x15ce,
- 0x15ce, 0x15ce, 0x15e4, 0x15e4, 0x15f2, 0x15fc, 0x1627, 0x1627,
- 0x1631, 0x163f, 0x163f, 0x163f, 0x163f, 0x1657, 0x1665, 0x1665,
- 0x1665, 0x1665, 0x1665, 0x1665, 0x1671, 0x1671, 0x1685, 0x1685,
- 0x1685, 0x168b, 0x168b, 0x1697, 0x1697, 0x1697, 0x16aa, 0x16bb,
- // Entry 200 - 23F
- 0x16ce, 0x16e9, 0x16f7, 0x170b, 0x1728, 0x1732, 0x1732, 0x1732,
- 0x173e, 0x1746, 0x1756, 0x1766, 0x1766, 0x1787, 0x1797, 0x1797,
- 0x1797, 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17c1, 0x17c7, 0x17d5,
- 0x17d5, 0x17e9, 0x17f7, 0x17f7, 0x1805, 0x1818, 0x1829, 0x1829,
- 0x1829, 0x1829, 0x1839, 0x1839, 0x1847, 0x1853, 0x1853, 0x1867,
- 0x1867, 0x1873, 0x1885, 0x1893, 0x1899, 0x189f, 0x189f, 0x189f,
- 0x189f, 0x189f, 0x18ab, 0x18ab, 0x18ab, 0x18ab, 0x18b7, 0x18c1,
- 0x18c9, 0x18c9, 0x18c9, 0x18d5, 0x18d5, 0x18d5, 0x18db, 0x18e9,
- // Entry 240 - 27F
- 0x18e9, 0x18e9, 0x18e9, 0x18fb, 0x190d, 0x1921, 0x1921, 0x192d,
- 0x192d, 0x1935, 0x1967, 0x196f, 0x196f, 0x196f, 0x1992, 0x19c2,
- 0x19eb, 0x1a0c, 0x1a2f, 0x1a46, 0x1a72, 0x1a93, 0x1a93, 0x1a93,
- 0x1ab6, 0x1add, 0x1add, 0x1aef, 0x1b18, 0x1b41, 0x1b53, 0x1b6f,
- 0x1b9c, 0x1bc7,
- },
- },
- { // ca
- caLangStr,
- caLangIdx,
- },
- { // ce
- "абхазхойнафрикаансаканамхаройнӀаьрбийнассамийназербайджанийнбашкирийнбел" +
- "орусийнболгарийнбамбарабенгалийнтибетхойнбретонийнбоснийнкаталонийн" +
- "нохчийнкорсиканийнчехийнчувашийнваллийндатхойннемцойндзонг-кээвегре" +
- "кийнингалсанэсперантоиспанхойнэстонийнбаскийнгӀажарийнфиннийнфиджиф" +
- "арерийнфранцузийнмалхбузен-фризийнирландхойнгалисийнгуаранигуджарат" +
- "имэнийнхаусажугтийнхиндихорватийнгаитийнвенгрийнэрмалойниндонезихой" +
- "нигбосычуаньисландхойнитальянийнинуктитутяпонийняванийнгуьржийнкику" +
- "йюказахийнгренландхойнкхмерийнканнадакорейнкашмирикурдийнкорнуоллий" +
- "нгӀиргӀизойнлатинанлюксембургхойнгандалингалалаоссийнлитвахойнлуба-" +
- "катангалатышийнмалагасийнмаоримакедонхойнмалаяламмонголийнмаратхима" +
- "лайнмальтойнбирманийнкъилбаседа ндебелинепалхойнголландхойннорвегий" +
- "н нюнорскнорвегийн букмолоромоорипанджабиполякийнпуштупортугалихойн" +
- "кечуароманшийнрундирумынийноьрсийнкиньяруандасанскритсиндхикъилбасе" +
- "да саамийнсангосингалхойнсловакийнсловенийншонасомалиалбанойнсербий" +
- "нсунданхойншведийнсуахилитамилхойнтелугутаджикийнтайнтигриньятуркме" +
- "нийнтонганийнтуркойнгӀезалойнуйгурийнукраинийнурдуузбекийнвьетнамхо" +
- "йнволофкосайорубакитайнзулуагхӀемарауканхойнасубембабенамалхбузен-б" +
- "елуджийнбодочигачерокиюккъерчу курдийнтаитазармасорбийндуаладьола-ф" +
- "оньиэмбуфилиппинийнгагаузийншвейцарин немцойнгусиигавайнлакхара сер" +
- "бийннгомбамачамекабилийнкамбамакондекабувердьянукойра чииникаленджи" +
- "нкоми-пермякийнконканишамбалабафиалангилакотакъилбаседа лурилуо (Ке" +
- "ни а, Танзани а)лухьямасаимерумаврикин креолийнмакуа-мееттометамоха" +
- "укмундангмазандеранхойннамалахара германхойнквасионконуэрньянколеки" +
- "черомборуандасамбурусангусенакойраборо сеннитахелхитсаамийн (къилба" +
- ")луле-саамийнинари-саамийнскольт-саамийнсуахили (Конго)тесотасавакта" +
- "мазигхтийнбоьвзуш боцу моттваивунджоварлпирисогамороккон стандартан" +
- " тамазигхтийнметтан чулацам боцушХӀинца болу стандартан Ӏаьрбийнавст" +
- "рин немцойншвейцарин лакхара немцойнАвстралин ингалсанканадан ингал" +
- "санбританин ингалсанамерикан ингалсанлатинан американ испанхойневро" +
- "пан испанхойнмексикан испанхойнканадан французийншвейцарин французи" +
- "йнлахара саксонийнфламандийнбразилин португалихойневропан португали" +
- "хойнмолдавийнатта китайнламастан китайн",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003c, 0x003c,
- 0x004c, 0x005c, 0x005c, 0x005c, 0x0078, 0x008a, 0x009e, 0x00b0,
- 0x00b0, 0x00be, 0x00d0, 0x00e2, 0x00f4, 0x0102, 0x0116, 0x0124,
- 0x0124, 0x013a, 0x013a, 0x0146, 0x0146, 0x0156, 0x0164, 0x0172,
- 0x0180, 0x0180, 0x018f, 0x0195, 0x01a3, 0x01b3, 0x01c5, 0x01d7,
- 0x01e7, 0x01f5, 0x0207, 0x0207, 0x0215, 0x021f, 0x022f, 0x0243,
- 0x0264, 0x0278, 0x0278, 0x0288, 0x0296, 0x02a8, 0x02b4, 0x02be,
- 0x02cc, 0x02d6, 0x02d6, 0x02e8, 0x02f6, 0x0306, 0x0316, 0x0316,
- // Entry 40 - 7F
- 0x0316, 0x032e, 0x032e, 0x0336, 0x0344, 0x0344, 0x0344, 0x0358,
- 0x036c, 0x037e, 0x038c, 0x039a, 0x03aa, 0x03aa, 0x03b6, 0x03b6,
- 0x03c6, 0x03de, 0x03ee, 0x03fc, 0x0408, 0x0408, 0x0416, 0x0424,
- 0x0424, 0x043a, 0x0450, 0x045e, 0x047a, 0x0484, 0x0484, 0x0492,
- 0x04a2, 0x04b4, 0x04cb, 0x04db, 0x04ef, 0x04ef, 0x04f9, 0x050f,
- 0x051f, 0x0531, 0x053f, 0x054b, 0x055b, 0x056d, 0x056d, 0x0590,
- 0x05a2, 0x05a2, 0x05b8, 0x05d9, 0x05f8, 0x05f8, 0x05f8, 0x05f8,
- 0x05f8, 0x05f8, 0x0602, 0x0608, 0x0608, 0x0618, 0x0618, 0x0628,
- // Entry 80 - BF
- 0x0632, 0x064c, 0x0656, 0x0668, 0x0672, 0x0682, 0x0690, 0x06a6,
- 0x06b6, 0x06b6, 0x06c2, 0x06e5, 0x06ef, 0x0703, 0x0715, 0x0727,
- 0x0727, 0x072f, 0x073b, 0x074b, 0x0759, 0x0759, 0x0759, 0x076d,
- 0x077b, 0x0789, 0x079b, 0x07a7, 0x07b9, 0x07c1, 0x07d1, 0x07e5,
- 0x07e5, 0x07f7, 0x0805, 0x0805, 0x0817, 0x0817, 0x0827, 0x0839,
- 0x0841, 0x0851, 0x0851, 0x0867, 0x0867, 0x0867, 0x0871, 0x0879,
- 0x0879, 0x0885, 0x0885, 0x0891, 0x0899, 0x0899, 0x0899, 0x0899,
- 0x0899, 0x0899, 0x0899, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5,
- // Entry C0 - FF
- 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08bb, 0x08bb, 0x08bb,
- 0x08bb, 0x08bb, 0x08bb, 0x08bb, 0x08c1, 0x08c1, 0x08c1, 0x08c1,
- 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1,
- 0x08c1, 0x08cb, 0x08cb, 0x08d3, 0x08d3, 0x08d3, 0x08f8, 0x08f8,
- 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8,
- 0x08f8, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900,
- 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0908, 0x0908, 0x0908,
- 0x0908, 0x0908, 0x0908, 0x0908, 0x0908, 0x0914, 0x0914, 0x0933,
- // Entry 100 - 13F
- 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x093d, 0x093d,
- 0x093d, 0x093d, 0x093d, 0x0947, 0x0947, 0x0955, 0x0955, 0x095f,
- 0x095f, 0x0974, 0x0974, 0x0974, 0x097c, 0x097c, 0x097c, 0x097c,
- 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x0992,
- 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992,
- 0x0992, 0x0992, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4,
- 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4,
- 0x09a4, 0x09a4, 0x09c5, 0x09c5, 0x09c5, 0x09cf, 0x09cf, 0x09cf,
- // Entry 140 - 17F
- 0x09cf, 0x09db, 0x09db, 0x09db, 0x09db, 0x09db, 0x09f8, 0x09f8,
- 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8,
- 0x0a04, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a20, 0x0a20,
- 0x0a20, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a38, 0x0a50,
- 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a65, 0x0a65, 0x0a65,
- 0x0a65, 0x0a77, 0x0a77, 0x0a92, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0,
- 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aae, 0x0ab8, 0x0ab8, 0x0ab8,
- 0x0ab8, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2,
- // Entry 180 - 1BF
- 0x0ac2, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0aeb, 0x0aeb, 0x0aeb,
- 0x0aeb, 0x0aeb, 0x0b12, 0x0b12, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c,
- 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b26, 0x0b26, 0x0b26,
- 0x0b26, 0x0b26, 0x0b2e, 0x0b4f, 0x0b4f, 0x0b66, 0x0b6e, 0x0b6e,
- 0x0b6e, 0x0b6e, 0x0b6e, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b88, 0x0b88,
- 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0ba4, 0x0ba4,
- 0x0ba4, 0x0bac, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd9,
- 0x0bd9, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7, 0x0be7,
- // Entry 1C0 - 1FF
- 0x0be7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7,
- 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7,
- 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bff, 0x0bff,
- 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c09, 0x0c09, 0x0c09,
- 0x0c09, 0x0c09, 0x0c09, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c23,
- 0x0c23, 0x0c23, 0x0c23, 0x0c23, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d,
- 0x0c2d, 0x0c2d, 0x0c35, 0x0c35, 0x0c35, 0x0c52, 0x0c52, 0x0c52,
- 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c7f, 0x0c96,
- // Entry 200 - 23F
- 0x0caf, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca,
- 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0ce5, 0x0ce5, 0x0ce5, 0x0ce5,
- 0x0ce5, 0x0ce5, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced,
- 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced,
- 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0cfb, 0x0cfb,
- 0x0d13, 0x0d13, 0x0d13, 0x0d13, 0x0d33, 0x0d39, 0x0d39, 0x0d39,
- 0x0d39, 0x0d39, 0x0d39, 0x0d39, 0x0d45, 0x0d45, 0x0d45, 0x0d45,
- 0x0d45, 0x0d55, 0x0d55, 0x0d55, 0x0d55, 0x0d5d, 0x0d5d, 0x0d5d,
- // Entry 240 - 27F
- 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d,
- 0x0d9b, 0x0d9b, 0x0dc1, 0x0dc1, 0x0dfc, 0x0dfc, 0x0e19, 0x0e49,
- 0x0e6c, 0x0e8b, 0x0eac, 0x0ecd, 0x0eff, 0x0f20, 0x0f43, 0x0f43,
- 0x0f66, 0x0f8d, 0x0fac, 0x0fc0, 0x0feb, 0x1014, 0x1026, 0x1026,
- 0x103b, 0x1058,
- },
- },
- { // cgg
- "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" +
- "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" +
- "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" +
- "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" +
- "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" +
- "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" +
- "inaOruzuruRukiga",
- []uint16{ // 246 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031,
- 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e,
- 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a,
- 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c,
- // Entry 40 - 7F
- 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
- 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1,
- 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115,
- // Entry 80 - BF
- 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d,
- 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d,
- 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163,
- 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176,
- 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
- 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry C0 - FF
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01ac,
- },
- },
- { // chr
- "ᎠᏂᏓᏥᎩᎵᏏᏍᏆᏂᎦᎸᏥᎬᏩᎵᏲᏥᎢᏣᏩᏂᏏᏉᏧᎦᎵᏲᏂᎢᏓᎶᏂᎨᎦᏳᎦᎠᏣᏗᏣᎳᎩᎼᎻᎦᎠᎫᏌᏏᏂᎦᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗ",
- []uint16{ // 557 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- // Entry 40 - 7F
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0039, 0x0039, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- // Entry 80 - BF
- 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- // Entry C0 - FF
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0081, 0x0081, 0x0081,
- // Entry 100 - 13F
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- // Entry 140 - 17F
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- // Entry 180 - 1BF
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- // Entry 1C0 - 1FF
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- // Entry 200 - 23F
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x00c1,
- },
- },
- { // ckb
- "ئەمهەرینجیعەرەبیئاسامیئازەربایجانیبێلاڕووسیبۆلگاریبەنگلادێشیبرێتونیبۆسنی" +
- "كاتالۆنیچەكیوێلزیدانماركیئاڵمانییۆنانیئینگلیزیئێسپیرانتۆئیسپانیئیست" +
- "ۆنیباسکیفارسیفینلەندیفەرانسیفریسیی ڕۆژاوائیرلەندیگالیسیگووارانیگوجا" +
- "راتیهیبرێهیندیكرواتیهەنگاری (مەجاری)ئەرمەنیئێەندونیزیئیسلەندیئیتالی" +
- "ژاپۆنیجاڤانیگۆرجستانیکوردیكرگیزیلاتینیلينگالالاویلیتوانیلێتۆنیماكێد" +
- "ۆنیمەنگۆلیماراتینیپالیهۆڵەندیئۆرییاپەنجابیپۆڵۆنیایی (لەهستانی)پەشتو" +
- "وپورتوگالیڕۆمانیڕووسیسانسکريتسيندیسینهەلیسلۆڤاكیسلۆڤێنیسۆمالیئاڵبان" +
- "یسەربیسودانیسویدیتامیلیتەلۆگویتاجیکیتایلەندیتیگرینیایتورکمانیتورکیئ" +
- "ويخووریئۆكراینیئۆردووئوزبەکیڤیەتنامیچینیزولوکوردیی ناوەندیمازەندەرا" +
- "نیکوردیی باشووریسامی باشووریزمانی نەناسراوئازەربایجانی باشووریئینگل" +
- "یزیی ئۆسترالیاییئینگلیزیی کەنەداییئینگلیزیی بریتانیاییئینگلیزیی ئەم" +
- "ەریکاییپورتوگاڵی برازیلپورتوگاڵی (پورتوگاڵ)",
- []uint16{ // 606 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014,
- 0x0020, 0x002c, 0x002c, 0x002c, 0x0044, 0x0044, 0x0056, 0x0064,
- 0x0064, 0x0064, 0x0078, 0x0078, 0x0086, 0x0090, 0x00a0, 0x00a0,
- 0x00a0, 0x00a0, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00b2, 0x00c2,
- 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00dc, 0x00ec, 0x0100, 0x010e,
- 0x011c, 0x0126, 0x0130, 0x0130, 0x0140, 0x0140, 0x0140, 0x014e,
- 0x0167, 0x0177, 0x0177, 0x0183, 0x0193, 0x01a3, 0x01a3, 0x01a3,
- 0x01ad, 0x01b7, 0x01b7, 0x01c3, 0x01c3, 0x01e0, 0x01ee, 0x01ee,
- // Entry 40 - 7F
- 0x01ee, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0212,
- 0x021e, 0x021e, 0x022a, 0x0236, 0x0248, 0x0248, 0x0248, 0x0248,
- 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0252,
- 0x0252, 0x0252, 0x025e, 0x026a, 0x026a, 0x026a, 0x026a, 0x0278,
- 0x0280, 0x028e, 0x028e, 0x029a, 0x029a, 0x029a, 0x029a, 0x02aa,
- 0x02aa, 0x02b8, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4,
- 0x02d0, 0x02d0, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de,
- 0x02de, 0x02de, 0x02de, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x031d,
- // Entry 80 - BF
- 0x0329, 0x033b, 0x033b, 0x033b, 0x033b, 0x0347, 0x0351, 0x0351,
- 0x0361, 0x0361, 0x036b, 0x036b, 0x036b, 0x0379, 0x0387, 0x0395,
- 0x0395, 0x0395, 0x03a1, 0x03af, 0x03b9, 0x03b9, 0x03b9, 0x03c5,
- 0x03cf, 0x03cf, 0x03db, 0x03e9, 0x03f5, 0x0405, 0x0417, 0x0427,
- 0x0427, 0x0427, 0x0431, 0x0431, 0x0431, 0x0431, 0x0441, 0x0451,
- 0x045d, 0x046b, 0x046b, 0x047b, 0x047b, 0x047b, 0x047b, 0x047b,
- 0x047b, 0x047b, 0x047b, 0x0483, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- // Entry C0 - FF
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x04a6,
- // Entry 100 - 13F
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- // Entry 140 - 17F
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- // Entry 180 - 1BF
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
- 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- // Entry 1C0 - 1FF
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
- 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7,
- 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04ee, 0x04ee,
- // Entry 200 - 23F
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
- 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- // Entry 240 - 27F
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0530, 0x0530, 0x0530,
- 0x0559, 0x057c, 0x05a3, 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05ca,
- 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05e9, 0x060e,
- },
- },
- { // cs
- csLangStr,
- csLangIdx,
- },
- { // cy
- "AffaregAbchasegAfestanegAffricânegAcanegAmharegAragonegArabegAsamegAfare" +
- "gAymaregAserbaijanegBashcortegBelarwsegBwlgaregBislamaBambaregBengal" +
- "egTibetegLlydawegBosniegCatalanegTsietsienegTsiamorroCorsegCriTsiece" +
- "gHen SlafonegTshwfashegCymraegDanegAlmaenegDifehiDzongkhaEweGroegSae" +
- "snegEsperantoSbaenegEstonegBasgegPersegFfwlaFfinnegFfijïegFfaröegFfr" +
- "angegFfriseg y GorllewinGwyddelegGaeleg yr AlbanGalisiegGuaraníGwjar" +
- "atiManawegHawsaHebraegHindiCroategCreol HaitiHwngaregArmenegHereroIn" +
- "terlinguaIndonesegInterlingueIgboNwoswInwpiacegIslandegEidalegInwcti" +
- "twtJapaneegJafanaegGeorgegCongoKikuyuCasachegKalaallisutChmeregKanna" +
- "daCoreegCanwriCashmiregCwrdegComiCernywegCirgisegLladinLwcsembwrgegG" +
- "andaLimbwrgegLingalaLaoegLithwanegLuba-KatangaLatfiegMalagasegMarsia" +
- "legMaoriMacedonegMalayalamMongolegMarathiMaleiegMaltegByrmanegNawrŵe" +
- "gNdebele GogleddolNepalegNdongaIseldiregNorwyeg NynorskNorwyeg Bokmå" +
- "lNdebele DeheuolNafahoNianjaOcsitanegOjibwaOromoOriyaOsetegPwnjabegP" +
- "aliPwylegPashtoPortiwgeegQuechuaRománshRwndiRwmanegRwsegCiniarŵandeg" +
- "SansgritSardegSindhiSami GogleddolSangoSinhalegSlofacegSlofenegSamöe" +
- "gShonaSomalegAlbanegSerbegSwatiSesothegSwndanegSwedegSwahiliTamilegT" +
- "eluguTajicegThaiTigrinyaTwrcmenegTswanaTongegTyrcegTsongaegTataregUi" +
- "ghurWcreinegWrdwWsbecegFendegFietnamegWalwnegWoloffXhosaIddew-Almaen" +
- "egIorwbaTsieineegSwlwAcehnegAcoliAdangmegCircaseg GorllewinolArabeg " +
- "TunisiaAffrihiliAghemegAinŵegAcadegAlabamäegAlewtegGhegeg AlbaniaAlt" +
- "äeg DeheuolHen SaesnegAngikaAramaegArawcanegAraonaegArapahoArabeg A" +
- "lgeriaArawacegArabeg MorocoArabeg yr AifftAswIaith Arwyddion America" +
- "AstwrianegAwadhiBalwtsiBalïegBasâegBamwmegBejäegBembegBenaBaffwtegBa" +
- "dagaBalochi GorllewinolComegSiksikaBrahuiBodoAcwsegBwriategBwlwCadoC" +
- "aribegAtsamegTsigaMariegSioctoTsierocîCheyenneCwrdeg SoraniCoptegTyr" +
- "ceg y CrimeaDacotaegDargwaTaitaDincaZarmaegDogriSorbeg IsafDiwalegIs" +
- "eldireg CanolJola-FonyiEmbwHen EifftegElamegSaesneg CanolEwondoExtre" +
- "maduregFfilipinegFfinneg TornedalFfrangeg CajwnFfrangeg CanolHen Ffr" +
- "angegArpitanegFfriseg y GogleddFfriseg y DwyrainFfriwlegGagauzGaioGb" +
- "aiaDareg y ZoroastriaidGilbertegUchel Almaeneg CanolHen Uchel Almaen" +
- "egGothegHen RoegAlmaeneg y SwistirGusiiHaidaHawäiegHethegHmongegSorb" +
- "eg UchafIbanegIbibioIlocanegIngwsiegNgombaMatsiameIddew-BersiegIddew" +
- "-ArabegCara-CalpacegCabilegCambaCircaseg DwyreiniolTyapegMacondegCab" +
- "oferdianegCàsegKoyra ChiiniChowaregKalenjinKomi-PermyakConcaniCarele" +
- "gShambalaBaffiaCwlenegCwmicegIddew-SbaenegLangiLahndaLambaLezghegLak" +
- "otaLombardegMongoLoziLuri GogleddolLatgalegLwndaLŵoLwshaiegLwyiaMadw" +
- "regMagahiMaithiliMacasaregMandingoMasaiMocsiaMandaregMendegMêrwMoris" +
- "yenGwyddeleg CanolMakhuwa-MeettoMetaMicmacegManshwManipwriMohocegMos" +
- "iMari GorllewinolMundangmwy nag un iaithMirandegMarwariMasanderaniNa" +
- "pliegNamaIsel AlmaenegNewaegAo NagaKwasioHen NorsegN’KoSotho Gogledd" +
- "olNŵeregHen NewariNiamweziNiancoleNioroNzimegOsagegTyrceg OtomanPang" +
- "asinegPahlafiPampangaPicardegAlmaeneg PensylfaniaHen BersiegAlmaeneg" +
- " PalatinPhoenicegPiedmontegPontegPohnpeianegPrwsegHen BrofensalegK’i" +
- "che’RajasthanegRapanŵiRaratongegRomboRomaniRotumanegAromanegRwaSandä" +
- "wegAramaeg SamariaSambŵrwSasacegSantaliNgambeiegSangwSisilegSgotegSa" +
- "sareseg SardiniaCwrdeg DeheuolSenecaSenaSeriSelcypegKoyraboro SenniH" +
- "en WyddelegSamogitegTachelhitArabeg ChadSidamoIs-silesiegSami Deheuo" +
- "lSami LwleSami InariSami ScoltSonincegSogdegSereregFfriseg Saterland" +
- "SwcwmaSwsŵegSwmeregComoregSwahili’r CongoHen SyriegSyriegSilesiegTul" +
- "uTimnegTesoTerenaTetumegTigregTifegTocelawegTsakhuregKlingonLlingitT" +
- "alyshegTamashecegTok PisinTarokoTsaconegTwmbwcaTwfalwegTasawaqTamase" +
- "it Canolbarth MorocoFotiacegWgaritegUmbunduy GwraiddFaiegFenisegFeps" +
- "Fflemeg GorllewinolFotegFunjoWalseregWalamoWinarayegWashoWarlpiriCal" +
- "mycegSogaIembaegCantoneegZapotecegBlisssymbolsZêlandegTamaseit Safon" +
- "olZuniDim cynnwys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg " +
- "DeheuolAlmaeneg AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSa" +
- "esneg CanadaSaesneg PrydainSaesneg AmericaSbaeneg America LadinSbaen" +
- "eg EwropSbaeneg MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg Ise" +
- "lFflemegPortiwgeeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategTsiein" +
- "eeg SymledigTsieineeg Traddodiadol",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0007, 0x000f, 0x0018, 0x0023, 0x0029, 0x0030, 0x0038,
- 0x003e, 0x0044, 0x004a, 0x0051, 0x005d, 0x0067, 0x0070, 0x0078,
- 0x007f, 0x0087, 0x008f, 0x0096, 0x009e, 0x00a5, 0x00ae, 0x00b9,
- 0x00c2, 0x00c8, 0x00cb, 0x00d2, 0x00de, 0x00e8, 0x00ef, 0x00f4,
- 0x00fc, 0x0102, 0x010a, 0x010d, 0x0112, 0x0119, 0x0122, 0x0129,
- 0x0130, 0x0136, 0x013c, 0x0141, 0x0148, 0x0150, 0x0158, 0x0160,
- 0x0173, 0x017c, 0x018b, 0x0193, 0x019b, 0x01a3, 0x01aa, 0x01af,
- 0x01b6, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d5, 0x01dc, 0x01e2,
- // Entry 40 - 7F
- 0x01ed, 0x01f6, 0x0201, 0x0205, 0x020a, 0x0213, 0x0213, 0x021b,
- 0x0222, 0x022b, 0x0233, 0x023b, 0x0242, 0x0247, 0x024d, 0x024d,
- 0x0255, 0x0260, 0x0267, 0x026e, 0x0274, 0x027a, 0x0283, 0x0289,
- 0x028d, 0x0295, 0x029d, 0x02a3, 0x02af, 0x02b4, 0x02bd, 0x02c4,
- 0x02c9, 0x02d2, 0x02de, 0x02e5, 0x02ee, 0x02f7, 0x02fc, 0x0305,
- 0x030e, 0x0316, 0x031d, 0x0324, 0x032a, 0x0332, 0x033a, 0x034b,
- 0x0352, 0x0358, 0x0361, 0x0370, 0x037f, 0x038e, 0x0394, 0x039a,
- 0x03a3, 0x03a9, 0x03ae, 0x03b3, 0x03b9, 0x03c1, 0x03c5, 0x03cb,
- // Entry 80 - BF
- 0x03d1, 0x03db, 0x03e2, 0x03ea, 0x03ef, 0x03f6, 0x03fb, 0x0408,
- 0x0410, 0x0416, 0x041c, 0x042a, 0x042f, 0x0437, 0x043f, 0x0447,
- 0x044e, 0x0453, 0x045a, 0x0461, 0x0467, 0x046c, 0x0474, 0x047c,
- 0x0482, 0x0489, 0x0490, 0x0496, 0x049d, 0x04a1, 0x04a9, 0x04b2,
- 0x04b8, 0x04be, 0x04c4, 0x04cc, 0x04d3, 0x04d3, 0x04d9, 0x04e1,
- 0x04e5, 0x04ec, 0x04f2, 0x04fb, 0x04fb, 0x0502, 0x0508, 0x050d,
- 0x051b, 0x0521, 0x0521, 0x052a, 0x052e, 0x0535, 0x053a, 0x0542,
- 0x0556, 0x0564, 0x056d, 0x0574, 0x057b, 0x0581, 0x058b, 0x0592,
- // Entry C0 - FF
- 0x05a0, 0x05af, 0x05ba, 0x05c0, 0x05c7, 0x05d0, 0x05d8, 0x05df,
- 0x05ed, 0x05f5, 0x0602, 0x0611, 0x0614, 0x062b, 0x0635, 0x0635,
- 0x063b, 0x0642, 0x0649, 0x0649, 0x0650, 0x0657, 0x0657, 0x0657,
- 0x065e, 0x0664, 0x0664, 0x0668, 0x0670, 0x0676, 0x0689, 0x0689,
- 0x0689, 0x0689, 0x0689, 0x068e, 0x0695, 0x0695, 0x0695, 0x0695,
- 0x069b, 0x069f, 0x06a5, 0x06ad, 0x06ad, 0x06b1, 0x06b1, 0x06b1,
- 0x06b5, 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06c8, 0x06c8, 0x06c8,
- 0x06c8, 0x06ce, 0x06ce, 0x06d4, 0x06d4, 0x06dd, 0x06e5, 0x06f2,
- // Entry 100 - 13F
- 0x06f8, 0x06f8, 0x0707, 0x0707, 0x070f, 0x0715, 0x071a, 0x071a,
- 0x071a, 0x071a, 0x071f, 0x0726, 0x072b, 0x0736, 0x0736, 0x073d,
- 0x074c, 0x0756, 0x0756, 0x0756, 0x075a, 0x075a, 0x075a, 0x0765,
- 0x0765, 0x076b, 0x0778, 0x0778, 0x077e, 0x078a, 0x078a, 0x0794,
- 0x07a4, 0x07a4, 0x07b2, 0x07c0, 0x07cc, 0x07d5, 0x07e6, 0x07f7,
- 0x07ff, 0x07ff, 0x0805, 0x0805, 0x0809, 0x080e, 0x0822, 0x0822,
- 0x082b, 0x082b, 0x083f, 0x0851, 0x0851, 0x0851, 0x0851, 0x0857,
- 0x0857, 0x085f, 0x0871, 0x0871, 0x0871, 0x0876, 0x0876, 0x087b,
- // Entry 140 - 17F
- 0x087b, 0x0883, 0x0883, 0x0883, 0x0889, 0x0890, 0x089c, 0x089c,
- 0x089c, 0x08a2, 0x08a8, 0x08b0, 0x08b8, 0x08b8, 0x08b8, 0x08b8,
- 0x08be, 0x08c6, 0x08d3, 0x08df, 0x08df, 0x08ec, 0x08f3, 0x08f3,
- 0x08f3, 0x08f8, 0x08f8, 0x090b, 0x090b, 0x0911, 0x0919, 0x0926,
- 0x0926, 0x0926, 0x0926, 0x092c, 0x092c, 0x0938, 0x0940, 0x0940,
- 0x0940, 0x0948, 0x0948, 0x0954, 0x095b, 0x095b, 0x095b, 0x095b,
- 0x095b, 0x095b, 0x0962, 0x0962, 0x096a, 0x0970, 0x0977, 0x097e,
- 0x097e, 0x098b, 0x0990, 0x0996, 0x099b, 0x09a2, 0x09a2, 0x09a2,
- // Entry 180 - 1BF
- 0x09a2, 0x09a8, 0x09b1, 0x09b6, 0x09ba, 0x09c8, 0x09d0, 0x09d0,
- 0x09d0, 0x09d5, 0x09d9, 0x09e1, 0x09e6, 0x09e6, 0x09e6, 0x09ed,
- 0x09ed, 0x09f3, 0x09fb, 0x0a04, 0x0a0c, 0x0a11, 0x0a11, 0x0a17,
- 0x0a1f, 0x0a25, 0x0a2a, 0x0a32, 0x0a41, 0x0a4f, 0x0a53, 0x0a5b,
- 0x0a5b, 0x0a61, 0x0a69, 0x0a70, 0x0a74, 0x0a84, 0x0a8b, 0x0a9b,
- 0x0a9b, 0x0aa3, 0x0aaa, 0x0aaa, 0x0aaa, 0x0aaa, 0x0ab5, 0x0ab5,
- 0x0abc, 0x0ac0, 0x0acd, 0x0ad3, 0x0ad3, 0x0ad3, 0x0ada, 0x0ae0,
- 0x0ae0, 0x0ae0, 0x0aea, 0x0aea, 0x0af0, 0x0aff, 0x0b06, 0x0b10,
- // Entry 1C0 - 1FF
- 0x0b18, 0x0b20, 0x0b25, 0x0b2b, 0x0b31, 0x0b3e, 0x0b48, 0x0b4f,
- 0x0b57, 0x0b57, 0x0b57, 0x0b5f, 0x0b73, 0x0b73, 0x0b7e, 0x0b8e,
- 0x0b97, 0x0ba1, 0x0ba7, 0x0bb2, 0x0bb8, 0x0bc7, 0x0bd2, 0x0bd2,
- 0x0bdd, 0x0be5, 0x0bef, 0x0bef, 0x0bef, 0x0bf4, 0x0bfa, 0x0c03,
- 0x0c03, 0x0c03, 0x0c0b, 0x0c0e, 0x0c17, 0x0c17, 0x0c26, 0x0c2e,
- 0x0c35, 0x0c3c, 0x0c3c, 0x0c45, 0x0c4a, 0x0c51, 0x0c57, 0x0c69,
- 0x0c77, 0x0c7d, 0x0c81, 0x0c85, 0x0c8d, 0x0c9c, 0x0ca8, 0x0cb1,
- 0x0cba, 0x0cba, 0x0cc5, 0x0ccb, 0x0cd6, 0x0cd6, 0x0ce2, 0x0ceb,
- // Entry 200 - 23F
- 0x0cf5, 0x0cff, 0x0d07, 0x0d0d, 0x0d0d, 0x0d14, 0x0d14, 0x0d25,
- 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d51, 0x0d5b, 0x0d61, 0x0d69,
- 0x0d6d, 0x0d73, 0x0d77, 0x0d7d, 0x0d84, 0x0d8a, 0x0d8f, 0x0d98,
- 0x0da1, 0x0da8, 0x0daf, 0x0db7, 0x0dc1, 0x0dc1, 0x0dca, 0x0dca,
- 0x0dd0, 0x0dd8, 0x0dd8, 0x0dd8, 0x0ddf, 0x0de7, 0x0dee, 0x0dee,
- 0x0e08, 0x0e10, 0x0e18, 0x0e1f, 0x0e28, 0x0e2d, 0x0e34, 0x0e38,
- 0x0e4b, 0x0e4b, 0x0e50, 0x0e50, 0x0e55, 0x0e5d, 0x0e63, 0x0e6c,
- 0x0e71, 0x0e79, 0x0e79, 0x0e81, 0x0e81, 0x0e85, 0x0e85, 0x0e85,
- // Entry 240 - 27F
- 0x0e85, 0x0e8c, 0x0e8c, 0x0e95, 0x0e9e, 0x0eaa, 0x0eb3, 0x0eb3,
- 0x0ec3, 0x0ec7, 0x0edd, 0x0ee4, 0x0ef9, 0x0f0d, 0x0f1d, 0x0f37,
- 0x0f48, 0x0f56, 0x0f65, 0x0f74, 0x0f89, 0x0f96, 0x0fa5, 0x0fa5,
- 0x0fb4, 0x0fc6, 0x0fd3, 0x0fda, 0x0feb, 0x0ffb, 0x1003, 0x1010,
- 0x1022, 0x1038,
- },
- },
- { // da
- daLangStr,
- daLangIdx,
- },
- { // dav
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluKitaita",
- []uint16{ // 263 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0170,
- },
- },
- { // de
- deLangStr,
- deLangIdx,
- },
- { // de-CH
- "WeissrussischAltpreussisch",
- []uint16{ // 469 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 40 - 7F
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 80 - BF
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry C0 - FF
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 100 - 13F
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 140 - 17F
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 180 - 1BF
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 1C0 - 1FF
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x001a,
- },
- },
- { // dje
- "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
- " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
- "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
- "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" +
- " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" +
- "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" +
- "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " +
- "senniUrdu senniVietnaam senniYorbance senniSinuwa senniZulu senniZar" +
- "maciine",
- []uint16{ // 268 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
- 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
- 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
- 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
- // Entry 40 - 7F
- 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
- 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
- 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a,
- // Entry 80 - BF
- 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c,
- 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
- 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
- 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7,
- 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
- 0x01ff, 0x020d, 0x020d, 0x0219, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- // Entry C0 - FF
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- // Entry 100 - 13F
- 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
- 0x0223, 0x0223, 0x0223, 0x022d,
- },
- },
- { // dsb
- "afaršćinaabchazšćinaafrikansakanšćinaamharšćinaaragonšćinaarabšćinaasamš" +
- "ćinaawaršćinaaymaršćinaazerbajdžanšćinabaškiršćinaběłorušćinabulgar" +
- "šćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišćinaka" +
- "tanlanšćinačamoršćinakorsišćinakričešćinawalizišćinadanšćinanimšćina" +
- "divehidzongkhaewegrichišćinaengelšćinaesperantošpańšćinaestišćinabas" +
- "kišćinapersišćinafinšćinafidžišćinaferejšćinafrancojšćinafrizišćinai" +
- "ršćinašotišćinagalicišćinaguaranigudžaratšćinamanšćinahausahebrejšći" +
- "nahindišćinachorwatšćinahaitišćinahungoršćinaarmeńšćinainterlinguain" +
- "donešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinajapań" +
- "šćinajavašćinageorgišćinakikuyukazachšćinagrönlandšćinakambodžanšći" +
- "nakannadšćinakorejańšćinakašmiršćinakurdišćinakornišćinakirgišćinała" +
- "tyńšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinal" +
- "uba-katangaletišćinamalgašćinamaorišćinamakedońšćinamalajamšćinamong" +
- "olšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinapódpołnocn" +
- "e ndebelenepalšćinanižozemšćinanorwegske nynorsknorwegske bokmålnava" +
- "hookcitanšćinaoromoorojišćinapandžabšćinapólšćinapaštunšćinaportugal" +
- "šćinakečuaretoromańšćinakirundišćinarumunšćinarušćinakinjarwandasan" +
- "skritsardinšćinasindšćinalapšćinasangosingalšćinasłowakšćinasłowjeńš" +
- "ćinasamošćinašonšćinasomališćinaalbanšćinaserbišćinasiswatipódpołdn" +
- "jowa sotšćina (Sesotho)sundanšćinašwedšćinaswahilišćinatamilšćinatel" +
- "ugšćinatadžikišćinathailandšćinatigrinjaturkmeńšćinatswanatonganšćin" +
- "aturkojšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaurdušćin" +
- "ausbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajorubšćin" +
- "azhuangchinšćinazuluaghemanglosaksojšćinaarawkašćinapareasturšćinabe" +
- "mbabenabodobugišćinachigachoctawšćinacherokeesoranitaitazarmadolnose" +
- "rbšćinadualajola-fonyiembufilipinšćinagagauzšćinagotišćinašwicarska " +
- "nimšćinagusiihawaiišćinagórnoserbšćinangombamachamekabylšćinakambama" +
- "kondekapverdšćinakoyra chiinikalenjinkomi-permyakkonkanišambalabafia" +
- "langilakotšćinaluoluhyamasaišćinamerumauriciska kreolšćinamakhuwa-me" +
- "ettometa’mohawkšćinamundangkriknamadolnonimšćinakwasion’konuernyanko" +
- "leprusčinakʼicheʼromborwasamburusangusicilianišćinasenakoyra sennita" +
- "šelhitpódpołdnjowa samišćinalule-samišćinainari-samišćinaskolt-sami" +
- "šćinasaterfrizišćinakongojska swahilišćinatesotasawaqcentralnoatlas" +
- "ki tamazightnjeznata rěcvaivunjosogastandardny marokkański tamazight" +
- "žedno rěcne wopśimjeśemoderna wusokoarabšćinaawstriska nimšćinašwic" +
- "arska wusokonimšćinaawstralska engelšćinakanadiska engelšćinabritisk" +
- "a engelšćinaameriska engelšćinałatyńskoamerikańska špańšćinaeuropejs" +
- "ka špańšćinamexikańska špańšćinakanadiska francojšćinašwicarska fran" +
- "cojšćinaflamšćinabrazilska portugalšćinaeuropejska portugalšćinamold" +
- "awišćinaserbochorwatšćinachinšćina (zjadnorjona)chinšćina (tradicion" +
- "alna)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000b, 0x0018, 0x0018, 0x0020, 0x002b, 0x0037, 0x0044,
- 0x004f, 0x005a, 0x0065, 0x0071, 0x0084, 0x0092, 0x00a1, 0x00ae,
- 0x00bb, 0x00c2, 0x00cf, 0x00db, 0x00e8, 0x00f4, 0x0103, 0x0103,
- 0x0110, 0x011c, 0x011f, 0x0129, 0x0129, 0x0129, 0x0136, 0x0140,
- 0x014a, 0x0150, 0x0158, 0x015b, 0x0168, 0x0174, 0x017d, 0x018a,
- 0x0195, 0x01a1, 0x01ad, 0x01ad, 0x01b7, 0x01c4, 0x01d0, 0x01de,
- 0x01ea, 0x01f3, 0x01ff, 0x020c, 0x0213, 0x0223, 0x022d, 0x0232,
- 0x023f, 0x024b, 0x024b, 0x0259, 0x0265, 0x0272, 0x027f, 0x027f,
- // Entry 40 - 7F
- 0x028a, 0x0297, 0x0297, 0x029b, 0x02a5, 0x02ac, 0x02af, 0x02bc,
- 0x02c7, 0x02d3, 0x02e0, 0x02eb, 0x02f8, 0x02f8, 0x02fe, 0x02fe,
- 0x030b, 0x031b, 0x032c, 0x0339, 0x0348, 0x0348, 0x0356, 0x0362,
- 0x0362, 0x036e, 0x037a, 0x0388, 0x0398, 0x03a3, 0x03b0, 0x03b7,
- 0x03c1, 0x03cd, 0x03d9, 0x03e4, 0x03f0, 0x03f0, 0x03fc, 0x040b,
- 0x0419, 0x0426, 0x0433, 0x043f, 0x044b, 0x0457, 0x0463, 0x0478,
- 0x0484, 0x0484, 0x0493, 0x04a4, 0x04b5, 0x04b5, 0x04bb, 0x04bb,
- 0x04c9, 0x04c9, 0x04ce, 0x04da, 0x04da, 0x04e9, 0x04e9, 0x04f4,
- // Entry 80 - BF
- 0x0502, 0x0511, 0x0517, 0x0528, 0x0536, 0x0542, 0x054b, 0x0556,
- 0x055e, 0x056b, 0x0576, 0x0580, 0x0585, 0x0592, 0x05a0, 0x05b0,
- 0x05bb, 0x05c6, 0x05d3, 0x05df, 0x05eb, 0x05f2, 0x0615, 0x0622,
- 0x062e, 0x063c, 0x0648, 0x0654, 0x0663, 0x0672, 0x067a, 0x0689,
- 0x068f, 0x069c, 0x06a9, 0x06af, 0x06bb, 0x06c8, 0x06d4, 0x06e1,
- 0x06ec, 0x06f8, 0x06f8, 0x0706, 0x070e, 0x071a, 0x071f, 0x0724,
- 0x072f, 0x073b, 0x0741, 0x074c, 0x0750, 0x0750, 0x0750, 0x0750,
- 0x0750, 0x0750, 0x0750, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755,
- // Entry C0 - FF
- 0x0755, 0x0755, 0x0767, 0x0767, 0x0767, 0x0774, 0x0774, 0x0774,
- 0x0774, 0x0774, 0x0774, 0x0774, 0x0778, 0x0778, 0x0784, 0x0784,
- 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784,
- 0x0784, 0x0789, 0x0789, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d,
- 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d,
- 0x078d, 0x0791, 0x0791, 0x0791, 0x079c, 0x079c, 0x079c, 0x079c,
- 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x07a1, 0x07a1, 0x07a1,
- 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07af, 0x07b7, 0x07b7, 0x07bd,
- // Entry 100 - 13F
- 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07c2, 0x07c2,
- 0x07c2, 0x07c2, 0x07c2, 0x07c7, 0x07c7, 0x07d7, 0x07d7, 0x07dc,
- 0x07dc, 0x07e6, 0x07e6, 0x07e6, 0x07ea, 0x07ea, 0x07ea, 0x07ea,
- 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07f8,
- 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8,
- 0x07f8, 0x07f8, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805,
- 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0810,
- 0x0810, 0x0810, 0x0825, 0x0825, 0x0825, 0x082a, 0x082a, 0x082a,
- // Entry 140 - 17F
- 0x082a, 0x0837, 0x0837, 0x0837, 0x0837, 0x0837, 0x0848, 0x0848,
- 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848,
- 0x084e, 0x0855, 0x0855, 0x0855, 0x0855, 0x0855, 0x0861, 0x0861,
- 0x0861, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x086d, 0x087b,
- 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x0887, 0x0887, 0x0887,
- 0x0887, 0x088f, 0x088f, 0x089b, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08aa, 0x08af, 0x08af, 0x08af,
- 0x08af, 0x08af, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4,
- // Entry 180 - 1BF
- 0x08b4, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0,
- 0x08c0, 0x08c0, 0x08c3, 0x08c3, 0x08c8, 0x08c8, 0x08c8, 0x08c8,
- 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4, 0x08d4, 0x08d4,
- 0x08d4, 0x08d4, 0x08d8, 0x08ef, 0x08ef, 0x08fd, 0x0904, 0x0904,
- 0x0904, 0x0904, 0x0904, 0x0911, 0x0911, 0x0911, 0x0918, 0x0918,
- 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c,
- 0x091c, 0x0920, 0x092f, 0x092f, 0x092f, 0x092f, 0x092f, 0x0935,
- 0x0935, 0x0935, 0x0935, 0x0935, 0x093b, 0x093b, 0x093f, 0x093f,
- // Entry 1C0 - 1FF
- 0x093f, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947,
- 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947,
- 0x0947, 0x0947, 0x0947, 0x0947, 0x0950, 0x0950, 0x0959, 0x0959,
- 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, 0x095e, 0x095e, 0x095e,
- 0x095e, 0x095e, 0x095e, 0x0961, 0x0961, 0x0961, 0x0961, 0x0968,
- 0x0968, 0x0968, 0x0968, 0x0968, 0x096d, 0x097d, 0x097d, 0x097d,
- 0x097d, 0x097d, 0x0981, 0x0981, 0x0981, 0x098c, 0x098c, 0x098c,
- 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x09af, 0x09bf,
- // Entry 200 - 23F
- 0x09d0, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09f2,
- 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a0a,
- 0x0a0a, 0x0a0a, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e,
- 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e,
- 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a15, 0x0a15,
- 0x0a2f, 0x0a2f, 0x0a2f, 0x0a2f, 0x0a3c, 0x0a3f, 0x0a3f, 0x0a3f,
- 0x0a3f, 0x0a3f, 0x0a3f, 0x0a3f, 0x0a44, 0x0a44, 0x0a44, 0x0a44,
- 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a48, 0x0a48, 0x0a48,
- // Entry 240 - 27F
- 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48,
- 0x0a69, 0x0a69, 0x0a83, 0x0a83, 0x0a9c, 0x0a9c, 0x0ab0, 0x0acb,
- 0x0ae2, 0x0af8, 0x0b0d, 0x0b22, 0x0b46, 0x0b5e, 0x0b77, 0x0b77,
- 0x0b8f, 0x0ba8, 0x0ba8, 0x0bb3, 0x0bcc, 0x0be6, 0x0bf4, 0x0c07,
- 0x0c20, 0x0c3b,
- },
- },
- { // dua
- "duálá",
- []uint16{ // 272 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,
- },
- },
- { // dyo
- "akanamharikarabbelarusbulgaaribengalisekalmangreekangleespañolpersanfran" +
- "sehausaenduongruaindoneesiigboitaliensaponeesavaneekmeerkoreemaleesi" +
- "birmaninepaleesneerlandepenjabipoloneesportugeesrumeenrusruandasomal" +
- "isueditamiltayturkiukrainurduvietnamyorubasinuasulujoola",
- []uint16{ // 274 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x001e,
- 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x002d, 0x002d, 0x002d, 0x002d, 0x0032, 0x0037, 0x0037, 0x003f,
- 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004b,
- 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0050,
- 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x005a, 0x005a, 0x005a,
- // Entry 40 - 7F
- 0x005a, 0x0063, 0x0063, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067,
- 0x006e, 0x006e, 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
- 0x007c, 0x007c, 0x0081, 0x0081, 0x0086, 0x0086, 0x0086, 0x0086,
- 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
- 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
- 0x0086, 0x0086, 0x0086, 0x008d, 0x008d, 0x0094, 0x0094, 0x0094,
- 0x009c, 0x009c, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5,
- 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00ac, 0x00ac, 0x00b4,
- // Entry 80 - BF
- 0x00b4, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00c3, 0x00c6, 0x00cc,
- 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
- 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
- 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00df, 0x00df, 0x00df,
- 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00ea,
- 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
- 0x00f5, 0x00fb, 0x00fb, 0x0100, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- // Entry C0 - FF
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- // Entry 100 - 13F
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0109,
- },
- },
- { // dz
- "ཨ་ཕར་ཁཨཱབ་ཁ་ཟི་ཡ་ཁཨཕ་རི་ཀཱནས་ཁཨམ་ཧ་རིཀ་ཁཨེ་ར་བིཀ་ཁཨ་ས་མིས་ཁཨ་ཛར་བྷའི་ཇཱན" +
- "་ཁབེལ་ཨ་རུས་ཁབཱལ་གེ་རི་ཡཱན་ཁབངྒ་ལ་ཁབོད་ཁབྷོས་ནི་ཡཱན་ཁཀེ་ཊ་ལཱན་ཁཅེཀ" +
- "་ཁཝེལཤ་ཁཌེ་ནིཤ་ཁཇཱར་མཱན་ཁདི་བེ་ཧི་ཁརྫོང་ཁགྲིཀ་ཁཨིང་ལིཤ་ཁཨེས་པ་རཱན་" +
- "ཏོ་ཁཨིས་པེ་ནིཤ་ཁཨེས་ཊོ་ནི་ཡཱན་ཁབཱསཀ་ཁཔར་ཤི་ཡཱན་ཁཕི་ནིཤ་ཁཕི་ཇི་ཡཱན་" +
- "ཁཕཱ་རོ་ཨིས་ཁཕྲནཅ་ཁནུབ་ཕྼི་སི་ཡན་ཁཨཱའི་རིཤ་ཁགལ་ཨིས་ཨི་ཡན་ཁགུ་ཝ་ར་ནི" +
- "་ཁགུ་ཇ་ར་ཏི་ཁཧཝ་ས་ཁཧེ་བྲུ་ཁཧིན་དི་ཁཀྲོ་ཨེ་ཤི་ཡཱན་ཁཧེ་ཏི་ཡཱན་ཁཧཱང་ག" +
- "ྷ་རི་ཡཱན་ཁཨར་མི་ནི་ཡཱན་ཁཨིན་ཌོ་ནེ་ཤི་ཡཱན་ཁཨིག་བོ་ཁཨ་ཡིས་ལེན་ཌིཀ་ཁཨ" +
- "ི་ཊ་ལི་ཡཱན་ཁཇཱ་པཱ་ནིས་ཁཇཱ་བ་ནིས་ཁཇཽ་ཇི་ཡཱན་ཁཀ་ཛགས་ཁཁེ་མེར་ཁཀ་ན་ཌ་ཁ" +
- "ཀོ་རི་ཡཱན་ཁཀཱཤ་མི་རི་ཁཀར་ཌིཤ་ཁཀིར་གིས་ཁལེ་ཊིན་ཁལག་ཛམ་བོརྒ་ཁལཱ་ཝོས་" +
- "ཁལི་ཐུ་ཝེ་ནི་ཡཱན་ཁལཊ་བི་ཡཱན་ཁམ་ལ་ག་སི་ཁམ་ཨོ་རི་ཁམ་སེ་ཌོ་ནི་ཡཱན་ཁམ་" +
- "ལ་ཡ་ལམ་ཁམ་ར་ཐི་ཁམ་ལེ་ཁམཱལ་ཊ་ཁབར་མིས་ཁནེ་པཱལི་ཁཌཆ་ཁནོར་ཝེ་ཇི་ཡཱན་ནོ" +
- "རསཀ་ཁནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁཨོ་རི་ཡ་ཁཔཱན་ཇ་བི་ཁཔོ་ལིཤ་ཁཔཱཤ་ཏོ་ཁཔོར" +
- "་ཅུ་གིས་ཁཀྭེ་ཆུ་ཨ་ཁརོ་མེ་ནིཤ་ཁརོ་མེ་ནི་ཡཱན་ཁཨུ་རུ་སུའི་ཁསཾསྐྲྀཏ་ཁས" +
- "ིན་དཱི་ཁསིང་ཧ་ལ་ཁསུ་ལོ་བཱཀ་ཁསུ་ལོ་བི་ནི་ཡཱན་ཁསོ་མ་ལི་ཁཨཱལ་བེ་ནི་ཡཱ" +
- "ན་ཁསཱར་བྷི་ཡཱན་ཁསཱུན་ད་ནིས་ཁསུའི་ཌིཤ་ཁསྭཱ་ཧི་ལི་ཁཏ་མིལ་ཁཏེ་ལུ་གུ་ཁ" +
- "ཏ་ཇིཀ་ཁཐཱའི་ཁཏིག་རི་ཉ་ཁཊཱརཀ་མེན་ཁཊོང་གྷན་ཁཊཱར་ཀིཤ་ཁཊ་ཊར་ཁཝི་གུར་ཁཡ" +
- "ུ་ཀེ་རེ་ནི་ཡཱན་ཁཨུར་དུ་ཁཨུས་བེཀ་ཁབེཊ་ནཱ་མིས་ཁཝོ་ལོཕ་ཁཞོ་ས་ཁཡོ་རུ་བ" +
- "་ཁརྒྱ་མི་ཁཟུ་ལུ་ཁད་ཀོ་ཏ་ཁཕི་ལི་པི་ནོ་ཁསུ་ཡིས་ཇཱར་མཱན་ཁཧ་ཝ་ཡིའི་ཁཀ་" +
- "ཆིན་ཁཀོ་རོ་ཁམན་ཇུ་ཁཤཱན་ཁཁ་ངོ་མ་ཤེསཔསྐད་རིག་ནང་དོན་མེདཔཨཱོས་ཊྲི་ཡཱན" +
- "་ཇཱར་མཱན་ཁསུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁཀེ་ན" +
- "་ཌི་ཡཱན་ཨིང་ལིཤ་ཁབྲི་ཊིཤ་ཨིང་ལིཤ་ཁཡུ་ཨེས་ཨིང་ལིཤ་ཁལེ་ཊིན་ཨ་མེ་རི་ཀ" +
- "ཱན་གི་ཨིས་པེ་ནིཤ་ཁཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁསུ་ཡིས་" +
- "ཕྲནཅ་ཁཕྷེལེ་མིཤ་ཁབྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་" +
- "ཁརྒྱ་མི་ཁ་འཇམ་སངམསྔ་དུས་ཀྱི་རྒྱ་མི་ཁ",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0036, 0x0036, 0x005a, 0x005a, 0x0078, 0x0078,
- 0x0096, 0x00b1, 0x00b1, 0x00b1, 0x00de, 0x00de, 0x00ff, 0x012c,
- 0x012c, 0x012c, 0x0141, 0x0150, 0x0150, 0x0177, 0x0195, 0x0195,
- 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01b6, 0x01ce,
- 0x01e9, 0x0207, 0x0219, 0x0219, 0x022b, 0x0246, 0x0270, 0x0294,
- 0x02c1, 0x02d3, 0x02f4, 0x02f4, 0x030c, 0x032d, 0x034e, 0x0360,
- 0x038d, 0x03ab, 0x03ab, 0x03d5, 0x03f6, 0x0417, 0x0417, 0x0429,
- 0x0441, 0x0459, 0x0459, 0x0486, 0x04a7, 0x04d4, 0x04fe, 0x04fe,
- // Entry 40 - 7F
- 0x04fe, 0x0534, 0x0534, 0x054c, 0x054c, 0x054c, 0x054c, 0x0579,
- 0x05a0, 0x05a0, 0x05c1, 0x05df, 0x0600, 0x0600, 0x0600, 0x0600,
- 0x0615, 0x0615, 0x062d, 0x0642, 0x0663, 0x0663, 0x0684, 0x069c,
- 0x069c, 0x069c, 0x06b7, 0x06cf, 0x06f3, 0x06f3, 0x06f3, 0x06f3,
- 0x070b, 0x073e, 0x073e, 0x075f, 0x077d, 0x077d, 0x0798, 0x07c8,
- 0x07e6, 0x07e6, 0x07fe, 0x0810, 0x0825, 0x083d, 0x083d, 0x083d,
- 0x0858, 0x0858, 0x0864, 0x08a3, 0x08e8, 0x08e8, 0x08e8, 0x08e8,
- 0x08e8, 0x08e8, 0x08e8, 0x0903, 0x0903, 0x0921, 0x0921, 0x0939,
- // Entry 80 - BF
- 0x0951, 0x0975, 0x0993, 0x09b4, 0x09b4, 0x09de, 0x0a02, 0x0a02,
- 0x0a1d, 0x0a1d, 0x0a38, 0x0a38, 0x0a38, 0x0a53, 0x0a74, 0x0aa7,
- 0x0aa7, 0x0aa7, 0x0ac2, 0x0aef, 0x0b16, 0x0b16, 0x0b16, 0x0b3a,
- 0x0b58, 0x0b79, 0x0b8e, 0x0bac, 0x0bc1, 0x0bd3, 0x0bf1, 0x0c0f,
- 0x0c0f, 0x0c2a, 0x0c45, 0x0c45, 0x0c57, 0x0c57, 0x0c6f, 0x0ca2,
- 0x0cba, 0x0cd5, 0x0cd5, 0x0cf9, 0x0cf9, 0x0cf9, 0x0d11, 0x0d23,
- 0x0d23, 0x0d3e, 0x0d3e, 0x0d56, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- // Entry C0 - FF
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
- // Entry 100 - 13F
- 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
- 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
- 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
- 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0daa,
- 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
- 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
- 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
- 0x0daa, 0x0daa, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda,
- // Entry 140 - 17F
- 0x0dda, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8,
- 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8,
- 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0e0d,
- 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d,
- 0x0e0d, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- // Entry 180 - 1BF
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
- 0x0e22, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- // Entry 1C0 - 1FF
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
- 0x0e37, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- // Entry 200 - 23F
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
- 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
- 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
- 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
- // Entry 240 - 27F
- 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
- 0x0e67, 0x0e67, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ee2, 0x0f33,
- 0x0f7e, 0x0fbd, 0x0ff0, 0x1020, 0x1086, 0x10cb, 0x10cb, 0x10cb,
- 0x1101, 0x1128, 0x1128, 0x1149, 0x1194, 0x11df, 0x11df, 0x11df,
- 0x120f, 0x1248,
- },
- },
- { // ebu
- "KĩakanKĩamhariKĩarabuKĩmbelarusiKĩbulgariaKĩbanglaKĩchekiKĩnjeremaniKĩng" +
- "rikiKĩthunguKĩhispaniaKĩanjemiKĩfaransaKĩhausaKĩhindĩKĩhungariKĩindo" +
- "nesiaKĩigboKĩitalianoKĩnjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburm" +
- "aKĩnepaliKĩholanziKĩpunjabiKĩpolandiKĩrenoKĩromaniaKĩrusiKĩnyarwanda" +
- "KĩsomaliKĩswidiKĩtamilKĩtailandiKĩturukiKĩukraniaKĩurduKĩvietinamuKĩ" +
- "yorubaKĩchinaKĩzuluKĩembu",
- []uint16{ // 277 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x002f,
- 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x004c, 0x004c, 0x004c, 0x004c, 0x0055, 0x005e, 0x005e, 0x0069,
- 0x0069, 0x0069, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x007c,
- 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084,
- 0x0084, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00b5, 0x00b5, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb,
- 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
- 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112,
- // Entry 80 - BF
- 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136,
- 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
- 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x016d,
- 0x0174, 0x0174, 0x0174, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0189, 0x0189, 0x0191, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- // Entry C0 - FF
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- // Entry 100 - 13F
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x0198, 0x0198, 0x019f,
- },
- },
- { // ee
- "abkhaziagbeafrikaangbeblugbeamhariagbeArabiagbeassamegbeaymargbeazerbaij" +
- "angbebelarusiagbebulgariagbebambaragbeBengaligbetibetagbebretongbebo" +
- "sniagbekatalagbetsɛkgbewalesgbedenmarkgbeGermaniagbedivehgbedzongkha" +
- "gbeEʋegbegrisigbeYevugbeesperantogbeSpanishgbeestoniagbebasqugbepers" +
- "iagbefinlanɖgbefidzigbeFransegbeirelanɖgbegalatagbeguarangbegujarati" +
- "hausagbehebrigbeHindigbekroatiagbehaitigbehungarigbearmeniagbeIndone" +
- "siagbeigbogbeicelanɖgbeItaliagbeJapangbedzavangbegɔgiagbekazakhstang" +
- "bekhmergbekannadagbeKoreagbekashmirgbekurdiagbekirghistangbelatinlak" +
- "sembɔggbelingalalaogbelithuaniagbelatviagbemalagasegbemaorgbemakedon" +
- "iagbemalayagbemongoliagbemarathiagbemalaygbemaltagbeburmagbedziehe n" +
- "debelegbenepalgbeHollandgbenɔweigbe ninɔsknɔweigbe bokmålnyanjagbeor" +
- "iyagbeossetiagbepundzabgbePolishgbepashtogbePortuguesegbekwetsuagber" +
- "omanshgberundigberomaniagbeRussiagberuwandagbesanskrigbesindhgbedzie" +
- "he samigbesangogbesinhalgbeslovakiagbesloveniagbesamoagbeshonagbesom" +
- "aliagbealbaniagbeserbiagbeswatgbeanyiehe sothogbeswedengbeswahilitam" +
- "ilgbetelegugbetadzikistangbeThailandgbetigrinyagbetɛkmengbetswanagbe" +
- "tongagbeTurkishgbetsongagbetahitigbeuighurgbeukraingbeurdugbeuzbekis" +
- "tangbevendagbevietnamgbewolofgbexhosagbeyorubagbeChinagbezulugbeaghe" +
- "mgbeasagbebembagbebenagbebodogbeembugbeefigbefilipingbeswizerlanɖtɔw" +
- "o ƒe germaniagbehawaigbecape verdegbelahndagbeluyiagbegbegbɔgblɔ sɔg" +
- "bɔwodziehe sothogberombogberwagbesakagbekomorogbetetumgbetok pisigbe" +
- "gbegbɔgblɔ manyawalsegbecantongbegbegbɔgblɔ manɔmeeGermaniagbe (Aust" +
- "ria)Germaniagbe (Switzerland)Yevugbe (Australia)Yevugbe (Canada)Yevu" +
- "gbe (Britain)Yevugbe (America)Spanishgbe (Latin America)Spanishgbe (" +
- "Europe)Spanishgbe (Mexico)Fransegbe (Canada)Fransegbe (Switzerland)F" +
- "lemishgbePortuguesegbe (Brazil)Portuguesegbe (Europe)serbo-croatiagb" +
- "etsainagbeblema tsainagbe",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000b, 0x000b, 0x0016, 0x001c, 0x0026, 0x0026,
- 0x002f, 0x0038, 0x0038, 0x0040, 0x004d, 0x004d, 0x0059, 0x0064,
- 0x0064, 0x006e, 0x0078, 0x0081, 0x008a, 0x0093, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00b6,
- 0x00c1, 0x00c9, 0x00d4, 0x00db, 0x00e3, 0x00ea, 0x00f6, 0x0100,
- 0x010a, 0x0112, 0x011b, 0x011b, 0x0126, 0x012e, 0x012e, 0x0137,
- 0x0137, 0x0142, 0x0142, 0x014b, 0x0154, 0x015c, 0x015c, 0x0164,
- 0x016c, 0x0174, 0x0174, 0x017e, 0x0186, 0x0190, 0x019a, 0x019a,
- // Entry 40 - 7F
- 0x019a, 0x01a6, 0x01a6, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b8,
- 0x01c1, 0x01c1, 0x01c9, 0x01d2, 0x01db, 0x01db, 0x01db, 0x01db,
- 0x01e8, 0x01e8, 0x01f0, 0x01fa, 0x0202, 0x0202, 0x020c, 0x0215,
- 0x0215, 0x0215, 0x0222, 0x0227, 0x0234, 0x0234, 0x0234, 0x023b,
- 0x0241, 0x024d, 0x024d, 0x0256, 0x0261, 0x0261, 0x0268, 0x0274,
- 0x027d, 0x0288, 0x0293, 0x029b, 0x02a3, 0x02ab, 0x02ab, 0x02bc,
- 0x02c4, 0x02c4, 0x02ce, 0x02df, 0x02f0, 0x02f0, 0x02f0, 0x02f9,
- 0x02f9, 0x02f9, 0x02f9, 0x0301, 0x030b, 0x0315, 0x0315, 0x031e,
- // Entry 80 - BF
- 0x0327, 0x0334, 0x033e, 0x0348, 0x0350, 0x035a, 0x0363, 0x036d,
- 0x0377, 0x0377, 0x037f, 0x038d, 0x0395, 0x039e, 0x03a9, 0x03b4,
- 0x03bc, 0x03c4, 0x03ce, 0x03d8, 0x03e1, 0x03e8, 0x03f8, 0x03f8,
- 0x0401, 0x0408, 0x0410, 0x0419, 0x0427, 0x0432, 0x043d, 0x0447,
- 0x0450, 0x0458, 0x0462, 0x046b, 0x046b, 0x0474, 0x047d, 0x0486,
- 0x048d, 0x049a, 0x04a2, 0x04ac, 0x04ac, 0x04ac, 0x04b4, 0x04bc,
- 0x04bc, 0x04c5, 0x04c5, 0x04cd, 0x04d4, 0x04d4, 0x04d4, 0x04d4,
- 0x04d4, 0x04d4, 0x04d4, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc,
- // Entry C0 - FF
- 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc,
- 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e2, 0x04e2, 0x04e2, 0x04e2,
- 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2,
- 0x04e2, 0x04ea, 0x04ea, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1,
- 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1,
- 0x04f1, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
- // Entry 100 - 13F
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04ff, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x050f,
- 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
- 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
- 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
- 0x050f, 0x050f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f,
- // Entry 140 - 17F
- 0x052f, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
- 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
- 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
- 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0544,
- 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
- 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
- 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
- 0x0544, 0x0544, 0x0544, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d,
- // Entry 180 - 1BF
- 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d,
- 0x054d, 0x054d, 0x054d, 0x054d, 0x0555, 0x0555, 0x0555, 0x0555,
- 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555,
- 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555,
- 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x056b,
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x057a, 0x057a, 0x057a,
- // Entry 1C0 - 1FF
- 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
- 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
- 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
- 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x0582, 0x0582, 0x0582,
- 0x0582, 0x0582, 0x0582, 0x0588, 0x0588, 0x058f, 0x058f, 0x058f,
- 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
- 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
- 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
- // Entry 200 - 23F
- 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
- 0x058f, 0x058f, 0x058f, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598,
- 0x0598, 0x0598, 0x0598, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
- 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05ab, 0x05ab,
- 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab,
- 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05bd, 0x05bd, 0x05bd, 0x05bd,
- 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, 0x05c5,
- 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5,
- // Entry 240 - 27F
- 0x05c5, 0x05c5, 0x05c5, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce,
- 0x05ce, 0x05ce, 0x05e3, 0x05e3, 0x05e3, 0x05e3, 0x05f8, 0x0611,
- 0x0624, 0x0634, 0x0645, 0x0656, 0x0670, 0x0683, 0x0696, 0x0696,
- 0x06a8, 0x06bf, 0x06bf, 0x06c9, 0x06df, 0x06f5, 0x06f5, 0x0705,
- 0x070e, 0x071d,
- },
- },
- { // el
- elLangStr,
- elLangIdx,
- },
- { // en
- enLangStr,
- enLangIdx,
- },
- { // en-AU
- "BamumUnited States EnglishMoldovan",
- []uint16{ // 607 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 100 - 13F
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 140 - 17F
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 180 - 1BF
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 1C0 - 1FF
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 200 - 23F
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 240 - 27F
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
- 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0022,
- },
- },
- { // en-GB
- enGBLangStr,
- enGBLangIdx,
- },
- { // eo
- "afaraabĥazaafrikansatwamharaarabaasamaajmaraazerbajĝanabaŝkirabelorusabu" +
- "lgarabislamobengalatibetabretonabosniakatalunakorsikaĉeĥakimradanage" +
- "rmanamahladzonkogrekaanglaesperantohispanaestonaeŭskapersafinnafiĝia" +
- "feroafrancafrisairlandagaelagalegagvaraniaguĝaratahaŭsahebreahindakr" +
- "oatahaitia kreolahungaraarmenainterlingvaoindoneziaokcidentaloeskima" +
- "islandaitalainuitajapanajavakartvelakazaĥagronlandakmerakanarakoreak" +
- "aŝmirakurdakirgizalatinoluksemburgalingalalaŭalitovalatvamalagasamao" +
- "riamakedonamalajalamamongolamaratamalajamaltabirmanauranepalanederla" +
- "ndanovnorvegadannorvegaokcitanaoromaorijopanĝabapolapaŝtoaportugalak" +
- "eĉuaromanĉaburundarumanarusaruandasanskritosindasangoasinhalaslovaka" +
- "slovenasamoaŝonasomalaalbanaserbasvaziasotasundasvedasvahilatamilate" +
- "luguataĝikatajatigrajaturkmenacvanatongaaturkacongatataraujguraukrai" +
- "naurduouzbekavjetnamavolapukovolofaksosajidajorubaĝuangaĉinazuluaibi" +
- "bioefikafilipinahavajaklingonanekonata lingvonelingvaĵobrazilportuga" +
- "laeŭropportugalaserbo-Kroataĉina simpligitaĉina tradicia",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x000c, 0x000c, 0x0015, 0x0017, 0x001d, 0x001d,
- 0x0022, 0x0027, 0x0027, 0x002d, 0x0039, 0x0041, 0x0049, 0x0050,
- 0x0057, 0x0057, 0x005e, 0x0064, 0x006b, 0x0071, 0x0079, 0x0079,
- 0x0079, 0x0080, 0x0080, 0x0086, 0x0086, 0x0086, 0x008b, 0x008f,
- 0x0096, 0x009b, 0x00a1, 0x00a1, 0x00a6, 0x00ab, 0x00b4, 0x00bb,
- 0x00c1, 0x00c7, 0x00cc, 0x00cc, 0x00d1, 0x00d7, 0x00dc, 0x00e2,
- 0x00e7, 0x00ee, 0x00f3, 0x00f9, 0x0101, 0x010a, 0x010a, 0x0110,
- 0x0116, 0x011b, 0x011b, 0x0121, 0x012e, 0x0135, 0x013b, 0x013b,
- // Entry 40 - 7F
- 0x0147, 0x0150, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0168,
- 0x016d, 0x0173, 0x0179, 0x017d, 0x0185, 0x0185, 0x0185, 0x0185,
- 0x018c, 0x0195, 0x019a, 0x01a0, 0x01a5, 0x01a5, 0x01ad, 0x01b2,
- 0x01b2, 0x01b2, 0x01b9, 0x01bf, 0x01ca, 0x01ca, 0x01ca, 0x01d1,
- 0x01d6, 0x01dc, 0x01dc, 0x01e1, 0x01e9, 0x01e9, 0x01ef, 0x01f7,
- 0x0201, 0x0208, 0x020e, 0x0214, 0x0219, 0x021e, 0x0223, 0x0223,
- 0x0229, 0x0229, 0x0233, 0x023d, 0x0247, 0x0247, 0x0247, 0x0247,
- 0x024f, 0x024f, 0x0254, 0x0259, 0x0259, 0x0261, 0x0261, 0x0265,
- // Entry 80 - BF
- 0x026c, 0x0275, 0x027b, 0x0283, 0x028a, 0x0290, 0x0294, 0x029a,
- 0x02a3, 0x02a3, 0x02a8, 0x02a8, 0x02ae, 0x02b5, 0x02bc, 0x02c3,
- 0x02c8, 0x02cd, 0x02d3, 0x02d9, 0x02de, 0x02e4, 0x02e8, 0x02ed,
- 0x02f2, 0x02f9, 0x02ff, 0x0306, 0x030d, 0x0311, 0x0318, 0x0320,
- 0x0325, 0x032b, 0x0330, 0x0335, 0x033b, 0x033b, 0x0341, 0x0348,
- 0x034d, 0x0353, 0x0353, 0x035b, 0x0363, 0x0363, 0x0369, 0x036e,
- 0x0372, 0x0378, 0x037f, 0x0384, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- // Entry C0 - FF
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- // Entry 100 - 13F
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0394, 0x0394, 0x0394,
- 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x039c,
- 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
- 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
- 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
- 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
- // Entry 140 - 17F
- 0x039c, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- // Entry 180 - 1BF
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- // Entry 1C0 - 1FF
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- // Entry 200 - 23F
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
- 0x03a2, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa,
- 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa,
- 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
- 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
- 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
- // Entry 240 - 27F
- 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
- 0x03b9, 0x03b9, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4,
- 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4,
- 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03d3, 0x03e2, 0x03e2, 0x03ee,
- 0x03fe, 0x040c,
- },
- },
- { // es
- esLangStr,
- esLangIdx,
- },
- { // es-419
- es419LangStr,
- es419LangIdx,
- },
- {}, // es-CL
- { // es-MX
- "bashkir",
- []uint16{ // 14 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,
- },
- },
- { // et
- etLangStr,
- etLangIdx,
- },
- { // eu
- "abkhazeraafrikaansaakaneraamhareraarabieraassameraaimaraazerbaijanerabas" +
- "hkirrerabielorrusierabulgarierabambarerabengaleratibeterabretoierabo" +
- "snierakatalanakorsikeratxekieragaleseradanieraalemanadivehieradzongk" +
- "haeweeragrezieraingelesaesperantoaespainieraestonieraeuskarapersiera" +
- "finlandierafijierafaroerafrantsesafrisieragaelikoaeskoziako gaelikoa" +
- "galizieraguaranieragujarateramanxerahausahebreerahindiakroazierahait" +
- "ierahungarieraarmenieraInterlinguaindonesierainterlingueigboerasichu" +
- "an yiaislandieraitalierainuiterajaponierajaverageorgieraKikongoakiku" +
- "yuerakazakherakalaallisuterakhemererakannaderakoreerakashmirerakurdu" +
- "erakornubierakirgizeralatinaluxenburgeraganderalingalalaoseralituani" +
- "eraluba-katangeraletonieramalagasyeramaorieramazedonieramalayalamera" +
- "mongolieramaratheramalaysieramalteraburmatarraiparraldeko ndebeleera" +
- "nepaleranederlanderanynorsk norvegierabokmala (Norvegia)nyanjaOkzita" +
- "nieraoromoeraoriyeraosetierapunjaberapolonierapaxtueraportugesaquech" +
- "ueraerromantxerarundieraerrumanieraerrusierakinyaruandasanskritoasin" +
- "dhiaiparraldeko samierasangoerasinhalaeslovakieraeslovenierasamoeras" +
- "honerasomalieraalbanieraserbieraswatierahegoaldeko sothoerasundanera" +
- "suedieraswahilitamileratelugueratajikistanerathailandieratigriñeratu" +
- "rkmenieratswaneratongeraturkieratsongeratatareratahitierauigurrerauk" +
- "raineraurduauzbekeravenderavietnamerawoloferaxhoseraJiddishayorubera" +
- "txinerazulueraAcholieraaghemeramaputxeaasuabemberabenerabodoerachige" +
- "ratxerokierasoranierataiterazarmerabehe-sorabieradualerafonyi jolera" +
- "embuaefikeratagalogaGagagauzeraalemana (Suitza)gusiierahawaiieragoi-" +
- "sorabierangombamachamerakabilerakamberamakonderaCabo Verdeko kreolak" +
- "oyra chiinierakalenjinerakomi-permyakerakonkanierashambalerabafieral" +
- "angieralakoteraLozieraLuba-lulualuoeraluhyeramasaieramerueraMauritan" +
- "iako kreoleramakhuwa-meettoerameteramohawkeramudangerahizkuntza anit" +
- "zaknamerakwasieran’koerapedieranuereraankolerak’iche’raromboerarwaer" +
- "asamburuerasanguerasenerakoyraboro senniatachelhitahegoaldeko samier" +
- "aLule samieraInari samieraSkolt samieraKongoko swahiliatesoeratetuma" +
- "Klingoneratok pisinaTumbukeratasawaqaMaroko erdialdeko tamazightahiz" +
- "kuntza ezezagunavaieravunjoasogeratamazight estandarraez dago eduki " +
- "linguistikorikarabiera moderno estandarraaleman garaia (Suitza)ingel" +
- "esa (AEB)espainiera (Europa)flandrieraportugesa (Europa)serbokroazie" +
- "ratxinera soilduatxinera tradizionala",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022,
- 0x002a, 0x0032, 0x0032, 0x0038, 0x0045, 0x0050, 0x005d, 0x0067,
- 0x0067, 0x0070, 0x0079, 0x0081, 0x008a, 0x0092, 0x009a, 0x009a,
- 0x009a, 0x00a3, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00b3, 0x00ba,
- 0x00c1, 0x00ca, 0x00d2, 0x00d8, 0x00e0, 0x00e8, 0x00f2, 0x00fc,
- 0x0105, 0x010c, 0x0114, 0x0114, 0x011f, 0x0126, 0x012d, 0x0136,
- 0x013e, 0x0146, 0x0158, 0x0161, 0x016b, 0x0175, 0x017c, 0x0181,
- 0x0189, 0x018f, 0x018f, 0x0198, 0x01a0, 0x01aa, 0x01b3, 0x01b3,
- // Entry 40 - 7F
- 0x01be, 0x01c9, 0x01d4, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01f0,
- 0x01f8, 0x0200, 0x0209, 0x020f, 0x0218, 0x0220, 0x0229, 0x0229,
- 0x0232, 0x0240, 0x0249, 0x0252, 0x0259, 0x0259, 0x0263, 0x026b,
- 0x026b, 0x0275, 0x027e, 0x0284, 0x0290, 0x0297, 0x0297, 0x029e,
- 0x02a5, 0x02af, 0x02bd, 0x02c6, 0x02d1, 0x02d1, 0x02d9, 0x02e4,
- 0x02f0, 0x02fa, 0x0303, 0x030d, 0x0314, 0x031e, 0x031e, 0x0334,
- 0x033c, 0x033c, 0x0348, 0x035a, 0x036c, 0x036c, 0x036c, 0x0372,
- 0x037d, 0x037d, 0x0385, 0x038c, 0x0394, 0x039d, 0x039d, 0x03a6,
- // Entry 80 - BF
- 0x03ae, 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03df, 0x03e8, 0x03f3,
- 0x03fd, 0x03fd, 0x0404, 0x0417, 0x041f, 0x0426, 0x0431, 0x043c,
- 0x0443, 0x044a, 0x0453, 0x045c, 0x0464, 0x046c, 0x047f, 0x0488,
- 0x0490, 0x0497, 0x049f, 0x04a8, 0x04b5, 0x04c1, 0x04cb, 0x04d6,
- 0x04de, 0x04e5, 0x04ed, 0x04f5, 0x04fd, 0x0506, 0x050f, 0x0518,
- 0x051d, 0x0525, 0x052c, 0x0536, 0x0536, 0x0536, 0x053e, 0x0545,
- 0x054d, 0x0555, 0x0555, 0x055c, 0x0563, 0x0563, 0x056c, 0x056c,
- 0x056c, 0x056c, 0x056c, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574,
- // Entry C0 - FF
- 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c, 0x057c,
- 0x057c, 0x057c, 0x057c, 0x057c, 0x0580, 0x0580, 0x0580, 0x0580,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580,
- 0x0580, 0x0587, 0x0587, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d,
- 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d,
- 0x058d, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
- 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x059b, 0x059b, 0x059b,
- 0x059b, 0x059b, 0x059b, 0x059b, 0x059b, 0x05a5, 0x05a5, 0x05ae,
- // Entry 100 - 13F
- 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b5, 0x05b5,
- 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05ca, 0x05ca, 0x05d1,
- 0x05d1, 0x05dd, 0x05dd, 0x05dd, 0x05e2, 0x05e9, 0x05e9, 0x05e9,
- 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05f1,
- 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1,
- 0x05f1, 0x05f3, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc,
- 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc,
- 0x05fc, 0x05fc, 0x060c, 0x060c, 0x060c, 0x0614, 0x0614, 0x0614,
- // Entry 140 - 17F
- 0x0614, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x062a, 0x062a,
- 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a,
- 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0641, 0x0641,
- 0x0641, 0x0648, 0x0648, 0x0648, 0x0648, 0x0648, 0x0651, 0x0664,
- 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0673, 0x0673, 0x0673,
- 0x0673, 0x067e, 0x067e, 0x068d, 0x0697, 0x0697, 0x0697, 0x0697,
- 0x0697, 0x0697, 0x0697, 0x0697, 0x06a1, 0x06a8, 0x06a8, 0x06a8,
- 0x06a8, 0x06a8, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
- // Entry 180 - 1BF
- 0x06b0, 0x06b8, 0x06b8, 0x06b8, 0x06bf, 0x06bf, 0x06bf, 0x06c9,
- 0x06c9, 0x06c9, 0x06cf, 0x06cf, 0x06d6, 0x06d6, 0x06d6, 0x06d6,
- 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06de, 0x06de, 0x06de,
- 0x06de, 0x06de, 0x06e5, 0x06fa, 0x06fa, 0x070b, 0x0711, 0x0711,
- 0x0711, 0x0711, 0x0711, 0x071a, 0x071a, 0x071a, 0x0723, 0x0734,
- 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734,
- 0x0734, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0742,
- 0x0742, 0x0742, 0x0742, 0x0742, 0x074b, 0x0752, 0x0759, 0x0759,
- // Entry 1C0 - 1FF
- 0x0759, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761,
- 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761,
- 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x076e, 0x076e,
- 0x076e, 0x076e, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776,
- 0x0776, 0x0776, 0x0776, 0x077c, 0x077c, 0x077c, 0x077c, 0x0786,
- 0x0786, 0x0786, 0x0786, 0x0786, 0x078e, 0x078e, 0x078e, 0x078e,
- 0x078e, 0x078e, 0x0794, 0x0794, 0x0794, 0x07a4, 0x07a4, 0x07a4,
- 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07cc,
- // Entry 200 - 23F
- 0x07d9, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6,
- 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07f6, 0x07f6, 0x07f6, 0x07f6,
- 0x07f6, 0x07f6, 0x07fd, 0x07fd, 0x0803, 0x0803, 0x0803, 0x0803,
- 0x0803, 0x080d, 0x080d, 0x080d, 0x080d, 0x080d, 0x0817, 0x0817,
- 0x0817, 0x0817, 0x0817, 0x0817, 0x0820, 0x0820, 0x0828, 0x0828,
- 0x0844, 0x0844, 0x0844, 0x0844, 0x0857, 0x085d, 0x085d, 0x085d,
- 0x085d, 0x085d, 0x085d, 0x085d, 0x0863, 0x0863, 0x0863, 0x0863,
- 0x0863, 0x0863, 0x0863, 0x0863, 0x0863, 0x0869, 0x0869, 0x0869,
- // Entry 240 - 27F
- 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869,
- 0x087d, 0x087d, 0x0899, 0x0899, 0x08b4, 0x08b4, 0x08b4, 0x08ca,
- 0x08ca, 0x08ca, 0x08ca, 0x08d8, 0x08d8, 0x08eb, 0x08eb, 0x08eb,
- 0x08eb, 0x08eb, 0x08eb, 0x08f5, 0x08f5, 0x0907, 0x0907, 0x0915,
- 0x0924, 0x0938,
- },
- },
- { // ewo
- "Ǹkɔ́bɔ akánǸkɔ́bɔ amáriaǸkɔ́bɔ arábiaǸkɔ́bɔ belarúsianǸkɔ́bɔ buləgárianǸ" +
- "kɔ́bɔ bɛngalíǸkɔ́bɔ tsɛ́gǸkɔ́bɔ ndzámanǸkɔ́bɔ gəlɛ́gǸkɔ́bɔ éngəlísǹk" +
- "ɔ́bɔ kpənyáǹkɔ́bɔ fɛ́rəsianǸkɔ́bɔ fulɛnsíǸkɔ́bɔ aúsáǸkɔ́bɔ hindíǸkɔ" +
- "́bɔ ungáríanǸkɔ́bɔ ɛndonésianǸkɔ́bɔ ibóǸkɔ́bɔ etáliɛnǸkɔ́bɔ hapɔ́nǸ" +
- "kɔ́bɔ havanísǸkɔ́bɔ kəmɛ́rǸkɔ́bɔ koréanǸkɔ́bɔ malɛ́sianǸkɔ́bɔ birəmá" +
- "nǹkɔ́bɔ nefálianǸkɔ́bɔ nɛrəlándíaǹkɔ́bɔ funəhábiaǹkɔ́bɔ fólisǹkɔ́bɔ " +
- "fɔtugɛ́sńkɔ́bɔ románíaǹkɔ́bɔ rúsianǹkɔ́bɔ ruwandáǹkɔ́bɔ somáliaǹkɔ́b" +
- "ɔ suwɛ́dǹkɔ́bɔ tamílǹkɔ́bɔ táilanǹkɔ́bɔ túrəkiǹkɔ́bɔ ukeléniaǹkɔ́bɔ" +
- " urudúǹkɔ́bɔ hiɛdənámǹkɔ́bɔ yorúbaǸkɔ́bɔ tsainísǹkɔ́bɔ zulúewondo",
- []uint16{ // 285 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0022, 0x0022,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x004a, 0x0061,
- 0x0061, 0x0061, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x00ae, 0x00c3, 0x00c3, 0x00d6,
- 0x00d6, 0x00d6, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0101,
- 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0112,
- 0x0112, 0x0123, 0x0123, 0x0123, 0x0123, 0x0138, 0x0138, 0x0138,
- // Entry 40 - 7F
- 0x0138, 0x014f, 0x014f, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
- 0x0172, 0x0172, 0x0185, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
- 0x0198, 0x0198, 0x01ac, 0x01ac, 0x01be, 0x01be, 0x01be, 0x01be,
- 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be,
- 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be,
- 0x01be, 0x01be, 0x01be, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8,
- 0x01fc, 0x01fc, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x022b, 0x022b, 0x023c,
- // Entry 80 - BF
- 0x023c, 0x0252, 0x0252, 0x0252, 0x0252, 0x0266, 0x0278, 0x028b,
- 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b,
- 0x028b, 0x028b, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e,
- 0x02b1, 0x02b1, 0x02c2, 0x02c2, 0x02c2, 0x02d4, 0x02d4, 0x02d4,
- 0x02d4, 0x02d4, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02fb,
- 0x030c, 0x030c, 0x030c, 0x0322, 0x0322, 0x0322, 0x0322, 0x0322,
- 0x0322, 0x0334, 0x0334, 0x0347, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- // Entry C0 - FF
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- // Entry 100 - 13F
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
- 0x0357, 0x0357, 0x0357, 0x0357, 0x035d,
- },
- },
- { // fa
- faLangStr,
- faLangIdx,
- },
- { // fa-AF
- "هسپانویفنلندیآیرلندیکروشیاییاندونیزیاییآیسلندیایتالویجاپانیکوریاییقرغزیم" +
- "غلینیپالیهالندینارویژیپولندیپرتگالیسویدنیتاجکی",
- []uint16{ // 157 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, 0x001a, 0x001a, 0x001a,
- 0x001a, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- // Entry 40 - 7F
- 0x0038, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x005c,
- 0x006a, 0x006a, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076,
- 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a2, 0x00a2, 0x00ae, 0x00ae, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c8,
- // Entry 80 - BF
- 0x00c8, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00ec,
- },
- },
- { // ff
- "AkaanAmarikAarabeereBelaruuseBulgariireBengaliCekkereDocceereGerkeEngele" +
- "ereEspañolPerseerePulaarFarayseereHawsaŋkooreHinndiHongariireEndones" +
- "iireIgibooreItaliyeereSaponeereSawaneereKemeereKoreereMalayeereBurme" +
- "eseNepaaleereDacceerePunjabeerePoloneerePurtugeereRomaneereRiisRuwaa" +
- "nndeereSomaliiSweedeereTamilTaayTurkeereUkereneereUrduWiyetnameereYo" +
- "rrubaaSinuwaareSuluŋkoore",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000b, 0x000b,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001d, 0x0027,
- 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x004b, 0x004b, 0x0053,
- 0x0053, 0x0053, 0x005b, 0x0061, 0x0061, 0x0061, 0x0061, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0077,
- 0x0077, 0x007d, 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087,
- // Entry 40 - 7F
- 0x0087, 0x0092, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x00a4, 0x00a4, 0x00ad, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
- 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
- 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
- 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
- 0x00c4, 0x00c4, 0x00c4, 0x00cd, 0x00cd, 0x00d5, 0x00d5, 0x00d5,
- 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fa,
- // Entry 80 - BF
- 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, 0x010d, 0x0111, 0x011d,
- 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d,
- 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
- 0x012d, 0x012d, 0x0132, 0x0132, 0x0132, 0x0136, 0x0136, 0x0136,
- 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x0148,
- 0x014c, 0x014c, 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
- 0x0158, 0x0160, 0x0160, 0x0169, 0x0174,
- },
- },
- { // fi
- fiLangStr,
- fiLangIdx,
- },
- { // fil
- filLangStr,
- filLangIdx,
- },
- { // fo
- "abkhasisktafrikaansakanamharisktarabisktassamesisktaymaraaserbajdsjanskt" +
- "bashkirhvitarussisktbulgarsktbambarabengalskttibetsktbretonsktbosnis" +
- "ktkatalanitjetjensktkorsikansktkekkisktchuvashwalisisktdanskttýsktdi" +
- "vehidzongkhaewegriksktensktesperantospansktestisktbaskisktpersisktfi" +
- "nsktfijimálføroysktfransktvestur frísisktírsktskotskt gælisktgalisis" +
- "ktguaranigujaratimanxhausahebraiskthindikroatiskthaitisktungarsktarm" +
- "ensktinterlinguaindonesisktinterlingueigbosichuan yiíslendsktitalskt" +
- "inuktitutjapansktjavansktgeorgisktkikuyukazakhkalaallisutkhmerkannad" +
- "akoreansktkashmirikurdisktcornisktkyrgyzlatínluksemborgsktgandalinga" +
- "lalaosktlitavisktluba-katangalettisktmalagassisktmaorimakedónsktmala" +
- "yalammongolsktmarathimalaiisktmaltisktburmesisktnorður ndebelenepals" +
- "kthálendsktnýnorsktnorskt bókmálnyanjaoccitanoromooriyaossetisktpunj" +
- "abipólsktpashtoportugiskisktquechuaretoromansktrundirumensktrussiskt" +
- "kinyarwandasanskritsindhinorður sámisktsangosingalesisktslovakisktsl" +
- "ovensktsamoisktshonasomalisktalbansktserbisktswatisktsesothosundanes" +
- "isktsvensktswahilitamilskttelugutajiktailendskttigrinyaturkmenskttsw" +
- "anatongansktturkiskttsongatatartahitisktuyghurukrainskturduusbekiskt" +
- "vendavjetnamesisktwolofxhosajiddisktyorubakinesisktsuluaghemmapuchea" +
- "subembabenavestur balochibodobakossichigacherokeemiðkurdiskttaitasar" +
- "malágt sorbiandualajola-fonyiembuefikfilipinisktgagauztýskt (Sveis)g" +
- "usiihawaiiansktovara sorbianngombamachamekabylekambamakondegrønhøvda" +
- "oyggjarsktkoyra chiinikalenjinkomi-permyakkonkanishambalabafialangil" +
- "ahndalakotanorður luriluoluyiamasaimerumorisyenmakhuwa-meettometaʼmo" +
- "hawkmundangmazanderaninamalágt týsktkwasionʼkonuernyankolekʼicheʼrom" +
- "borwasamburusangusuður kurdisktsenakoyraboro sennitachelhitsuður sám" +
- "isktlule sámisktinari samiskolt sámisktshimaorékongo svahilitesotetu" +
- "mklingonskttok pisintasawaqmiðatlasfjøll tamazightókent málvaivunjow" +
- "arlpirisogakantonesísktvanligt marokanskt tamazighteinki málsligt in" +
- "nihaldhøgt týskt (Sveis)lágt saksisktflamsktportugiskiskt (Brasilia)" +
- "portugiskiskt (Evropa)moldavisktserbokroatiskteinkult kinesisktvanli" +
- "gt kinesiskt",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0017, 0x0020, 0x0020,
- 0x0028, 0x0033, 0x0033, 0x0039, 0x0048, 0x004f, 0x005c, 0x0065,
- 0x0065, 0x006c, 0x0075, 0x007d, 0x0086, 0x008e, 0x0096, 0x00a0,
- 0x00a0, 0x00ab, 0x00ab, 0x00b3, 0x00b3, 0x00ba, 0x00c3, 0x00c9,
- 0x00cf, 0x00d5, 0x00dd, 0x00e0, 0x00e7, 0x00ec, 0x00f5, 0x00fc,
- 0x0103, 0x010b, 0x0113, 0x0113, 0x0119, 0x0121, 0x012a, 0x0131,
- 0x0141, 0x0147, 0x0157, 0x0160, 0x0167, 0x016f, 0x0173, 0x0178,
- 0x0181, 0x0186, 0x0186, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01a7,
- // Entry 40 - 7F
- 0x01b2, 0x01bd, 0x01c8, 0x01cc, 0x01d6, 0x01d6, 0x01d6, 0x01e0,
- 0x01e7, 0x01f0, 0x01f8, 0x0200, 0x0209, 0x0209, 0x020f, 0x020f,
- 0x0215, 0x0220, 0x0225, 0x022c, 0x0235, 0x0235, 0x023d, 0x0245,
- 0x0245, 0x024d, 0x0253, 0x0259, 0x0266, 0x026b, 0x026b, 0x0272,
- 0x0278, 0x0281, 0x028d, 0x0295, 0x02a1, 0x02a1, 0x02a6, 0x02b1,
- 0x02ba, 0x02c3, 0x02ca, 0x02d3, 0x02db, 0x02e5, 0x02e5, 0x02f4,
- 0x02fc, 0x02fc, 0x0306, 0x030f, 0x031e, 0x031e, 0x031e, 0x0324,
- 0x032b, 0x032b, 0x0330, 0x0335, 0x033e, 0x0345, 0x0345, 0x034c,
- // Entry 80 - BF
- 0x0352, 0x035f, 0x0366, 0x0372, 0x0377, 0x037f, 0x0387, 0x0392,
- 0x039a, 0x039a, 0x03a0, 0x03b0, 0x03b5, 0x03c1, 0x03cb, 0x03d4,
- 0x03dc, 0x03e1, 0x03ea, 0x03f2, 0x03fa, 0x0402, 0x0409, 0x0415,
- 0x041c, 0x0423, 0x042b, 0x0431, 0x0436, 0x0440, 0x0448, 0x0452,
- 0x0458, 0x0461, 0x0469, 0x046f, 0x0474, 0x047d, 0x0483, 0x048c,
- 0x0490, 0x0499, 0x049e, 0x04ab, 0x04ab, 0x04ab, 0x04b0, 0x04b5,
- 0x04bd, 0x04c3, 0x04c3, 0x04cc, 0x04d0, 0x04d0, 0x04d0, 0x04d0,
- 0x04d0, 0x04d0, 0x04d0, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5,
- // Entry C0 - FF
- 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04dc, 0x04dc, 0x04dc,
- 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04df, 0x04df, 0x04df, 0x04df,
- 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df,
- 0x04df, 0x04e4, 0x04e4, 0x04e8, 0x04e8, 0x04e8, 0x04f6, 0x04f6,
- 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6,
- 0x04f6, 0x04fa, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501,
- 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0506, 0x0506, 0x0506,
- 0x0506, 0x0506, 0x0506, 0x0506, 0x0506, 0x050e, 0x050e, 0x051a,
- // Entry 100 - 13F
- 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051f, 0x051f,
- 0x051f, 0x051f, 0x051f, 0x0524, 0x0524, 0x0531, 0x0531, 0x0536,
- 0x0536, 0x0540, 0x0540, 0x0540, 0x0544, 0x0548, 0x0548, 0x0548,
- 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0553,
- 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553,
- 0x0553, 0x0553, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559,
- 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559,
- 0x0559, 0x0559, 0x0567, 0x0567, 0x0567, 0x056c, 0x056c, 0x056c,
- // Entry 140 - 17F
- 0x056c, 0x0577, 0x0577, 0x0577, 0x0577, 0x0577, 0x0584, 0x0584,
- 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584,
- 0x058a, 0x0591, 0x0591, 0x0591, 0x0591, 0x0591, 0x0597, 0x0597,
- 0x0597, 0x059c, 0x059c, 0x059c, 0x059c, 0x059c, 0x05a3, 0x05b8,
- 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05c4, 0x05c4, 0x05c4,
- 0x05c4, 0x05cc, 0x05cc, 0x05d8, 0x05df, 0x05df, 0x05df, 0x05df,
- 0x05df, 0x05df, 0x05df, 0x05df, 0x05e7, 0x05ec, 0x05ec, 0x05ec,
- 0x05ec, 0x05ec, 0x05f1, 0x05f7, 0x05f7, 0x05f7, 0x05f7, 0x05f7,
- // Entry 180 - 1BF
- 0x05f7, 0x05fd, 0x05fd, 0x05fd, 0x05fd, 0x0609, 0x0609, 0x0609,
- 0x0609, 0x0609, 0x060c, 0x060c, 0x0611, 0x0611, 0x0611, 0x0611,
- 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0616, 0x0616, 0x0616,
- 0x0616, 0x0616, 0x061a, 0x0622, 0x0622, 0x0630, 0x0636, 0x0636,
- 0x0636, 0x0636, 0x0636, 0x063c, 0x063c, 0x063c, 0x0643, 0x0643,
- 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x064e, 0x064e,
- 0x064e, 0x0652, 0x065e, 0x065e, 0x065e, 0x065e, 0x065e, 0x0664,
- 0x0664, 0x0664, 0x0664, 0x0664, 0x0669, 0x0669, 0x066d, 0x066d,
- // Entry 1C0 - 1FF
- 0x066d, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675,
- 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675,
- 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x067e, 0x067e,
- 0x067e, 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683,
- 0x0683, 0x0683, 0x0683, 0x0686, 0x0686, 0x0686, 0x0686, 0x068d,
- 0x068d, 0x068d, 0x068d, 0x068d, 0x0692, 0x0692, 0x0692, 0x0692,
- 0x06a1, 0x06a1, 0x06a5, 0x06a5, 0x06a5, 0x06b4, 0x06b4, 0x06b4,
- 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06cc, 0x06d9,
- // Entry 200 - 23F
- 0x06e3, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1,
- 0x06f1, 0x06f1, 0x06f1, 0x06fa, 0x0707, 0x0707, 0x0707, 0x0707,
- 0x0707, 0x0707, 0x070b, 0x070b, 0x0710, 0x0710, 0x0710, 0x0710,
- 0x0710, 0x071a, 0x071a, 0x071a, 0x071a, 0x071a, 0x0723, 0x0723,
- 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x072a, 0x072a,
- 0x0743, 0x0743, 0x0743, 0x0743, 0x074e, 0x0751, 0x0751, 0x0751,
- 0x0751, 0x0751, 0x0751, 0x0751, 0x0756, 0x0756, 0x0756, 0x0756,
- 0x0756, 0x075e, 0x075e, 0x075e, 0x075e, 0x0762, 0x0762, 0x0762,
- // Entry 240 - 27F
- 0x0762, 0x0762, 0x0762, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f,
- 0x078b, 0x078b, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07b7,
- 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7,
- 0x07b7, 0x07b7, 0x07c5, 0x07cc, 0x07e4, 0x07fa, 0x0804, 0x0812,
- 0x0823, 0x0834,
- },
- },
- { // fr
- frLangStr,
- frLangIdx,
- },
- { // fr-CA
- frCALangStr,
- frCALangIdx,
- },
- { // fr-CH
- "kurde méridional",
- []uint16{ // 497 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 140 - 17F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 1C0 - 1FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0011,
- },
- },
- { // fur
- "afarabcazianavestanafrikaansamaricaragonêsarapassamêsavaraymaràazerbaija" +
- "nibielorùsbulgarbengalêstibetanbretonbosniaccatalancecenchamorrocors" +
- "creececsclâf de glesiegalêsdanêstodescgrêcinglêsesperantospagnûlesto" +
- "nbascpersianfulahfinlandêsfizianfaroêsfrancêsfrisiangaelic irlandêsg" +
- "aelic scozêsgalizianguaranìgujaratimanxebraichindicravuathaitianongj" +
- "arêsarmenindonesianigboinupiaqidoislandêstalianinuktitutgjaponêsgjeo" +
- "rgjiankazackalaallisutkhmerkannadacoreancurdcornualiêslatinlussembur" +
- "ghêslimburghêslingalalaolituanletonmalagasymaorimacedonmalayalammong" +
- "ulmarathimalêsmaltêsndebele setentrionâlnepalêsolandêsnorvegjês nyno" +
- "rsknorvegjês bokmålnavajoocitanoriyaoseticpunjabipolacpashtoportughê" +
- "squechuarumançromenrussanscritsardegnûlsindhisami setentrionâlsangos" +
- "inalêsslovacslovensamoansomalalbanêsserpswatisotho meridionâlsundanê" +
- "ssvedêsswahilitamiltelegutagicthaiturcmenturctartartahitianuigurucra" +
- "inurduuzbecvendavietnamitevalonwolofxhosayiddishyorubacinêszuluvieri" +
- " inglêsaramaicasturiancopticsclâfvieri egjizianfilipinvieri francêsf" +
- "urlangoticvieri grêcladinlenghis multiplismirandêsnapoletanbas todes" +
- "cvieri norvegjêssotho setentrionâlturc otomanpapiamentovieri persian" +
- "vieri provenzâlsicilianscozêsvieri irlandêssumerictetumindeterminade" +
- "todesc de Austriealt todesc de Svuizareinglês australianinglês canad" +
- "êsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl ib" +
- "ericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianp" +
- "ortughês ibericmoldâfcinês semplificâtcinês tradizionâl",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x001c, 0x0022, 0x002b,
- 0x002f, 0x0037, 0x003b, 0x0042, 0x004d, 0x004d, 0x0056, 0x005c,
- 0x005c, 0x005c, 0x0065, 0x006c, 0x0072, 0x0079, 0x0080, 0x0085,
- 0x008d, 0x0091, 0x0095, 0x0098, 0x00a8, 0x00a8, 0x00ae, 0x00b4,
- 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00bf, 0x00c6, 0x00cf, 0x00d7,
- 0x00dc, 0x00e0, 0x00e7, 0x00ec, 0x00f6, 0x00fc, 0x0103, 0x010b,
- 0x0112, 0x0122, 0x0130, 0x0138, 0x0140, 0x0148, 0x014c, 0x014c,
- 0x0152, 0x0157, 0x0157, 0x015e, 0x0165, 0x016e, 0x0173, 0x0173,
- // Entry 40 - 7F
- 0x0173, 0x017d, 0x017d, 0x0181, 0x0181, 0x0188, 0x018b, 0x0194,
- 0x019a, 0x01a3, 0x01ac, 0x01ac, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
- 0x01bb, 0x01c6, 0x01cb, 0x01d2, 0x01d8, 0x01d8, 0x01d8, 0x01dc,
- 0x01dc, 0x01e7, 0x01e7, 0x01ec, 0x01fa, 0x01fa, 0x0205, 0x020c,
- 0x020f, 0x0215, 0x0215, 0x021a, 0x0222, 0x0222, 0x0227, 0x022e,
- 0x0237, 0x023d, 0x0244, 0x024a, 0x0251, 0x0251, 0x0251, 0x0266,
- 0x026e, 0x026e, 0x0276, 0x0288, 0x029a, 0x029a, 0x02a0, 0x02a0,
- 0x02a6, 0x02a6, 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02b8, 0x02bd,
- // Entry 80 - BF
- 0x02c3, 0x02cd, 0x02d4, 0x02db, 0x02db, 0x02e0, 0x02e3, 0x02e3,
- 0x02eb, 0x02f5, 0x02fb, 0x030d, 0x0312, 0x031a, 0x0320, 0x0326,
- 0x032c, 0x032c, 0x0331, 0x0339, 0x033d, 0x0342, 0x0353, 0x035c,
- 0x0363, 0x036a, 0x036f, 0x0375, 0x037a, 0x037e, 0x037e, 0x0385,
- 0x0385, 0x0385, 0x0389, 0x0389, 0x038f, 0x0397, 0x039c, 0x03a2,
- 0x03a6, 0x03ab, 0x03b0, 0x03ba, 0x03ba, 0x03bf, 0x03c4, 0x03c9,
- 0x03d0, 0x03d6, 0x03d6, 0x03dc, 0x03e0, 0x03e0, 0x03e0, 0x03e0,
- 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0,
- // Entry C0 - FF
- 0x03e0, 0x03e0, 0x03ed, 0x03ed, 0x03f4, 0x03f4, 0x03f4, 0x03f4,
- 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
- // Entry 100 - 13F
- 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402,
- 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408,
- 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0416,
- 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x041d,
- 0x041d, 0x041d, 0x041d, 0x041d, 0x042b, 0x042b, 0x042b, 0x042b,
- 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431,
- 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0436,
- 0x0436, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- // Entry 140 - 17F
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
- 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- // Entry 180 - 1BF
- 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0457,
- 0x0457, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460,
- 0x0469, 0x0469, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473,
- 0x0473, 0x0473, 0x0483, 0x0483, 0x0483, 0x0496, 0x0496, 0x0496,
- // Entry 1C0 - 1FF
- 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x04a1, 0x04a1, 0x04a1,
- 0x04a1, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04b8, 0x04b8,
- 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04c8, 0x04c8, 0x04c8,
- 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8,
- 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8,
- 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04d0, 0x04d7, 0x04d7,
- 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04e6, 0x04e6,
- 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6,
- // Entry 200 - 23F
- 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6,
- 0x04e6, 0x04e6, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed,
- 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
- 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
- 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
- 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
- 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
- 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
- // Entry 240 - 27F
- 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
- 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x0510, 0x0526,
- 0x0538, 0x0548, 0x0558, 0x0566, 0x0581, 0x0590, 0x0590, 0x0590,
- 0x05a3, 0x05b7, 0x05b7, 0x05be, 0x05d2, 0x05e3, 0x05ea, 0x05ea,
- 0x05fd, 0x0610,
- },
- },
- { // fy
- "AfarAbchazyskAvestyskAfrikaanskAkanAmhaarskAragoneeskArabyskAssameeskAva" +
- "ryskAymaraAzerbeidzjaanskBasjkierskWyt-RussyskBulgaarskBislamaBambar" +
- "aBengaalskTibetaanskBretonskBosnyskKatalaanskTsjetsjeenskChamorroKor" +
- "sikaanskCreeTsjechyskKerkslavyskTsjoevasjyskWelskDeenskDútskDivehiDz" +
- "ongkhaEweGryksIngelskEsperantoSpaanskEstlânskBaskyskPerzyskFulahFins" +
- "kFijyskFaeröerskFrânskWest-FryskIerskSchotsk GaelicGalisyskGuaraníGu" +
- "jaratiManksHausaHebreeuwskHindiHiri MotuKroatyskHaïtiaanskHongaarskA" +
- "rmeenskHereroInterlinguaYndonezyskInterlingueIgboSichuan YiInupiaqId" +
- "oYslânsItaliaanskInuktitutJapansJavaanskGeorgyskKongoKikuyuKuanyamaK" +
- "azachsGrienlânsKhmerKannadaKoreaanskKanuriKasjmiriKoerdyskKomiCornis" +
- "hKirgizyskLatynLuxemburgsGandaLimburgsLingalaLaotiaanskLitouwsLuba-K" +
- "atangaLetlânsMalagasyskMarshalleesMaoriMacedonyskMalayalamMongoolsMa" +
- "rathiMaleisMalteesBirmeesNauruaanskNoard-NdbeleNepaleesNdongaNederlâ" +
- "nskNoors - NynorskNoors - BokmålSûd-NdbeleNavajoNyanjaOccitaanskOjib" +
- "waOromoOdiaOssetyskPunjabiPaliPoalskPasjtoePortugeeskQuechuaReto-Rom" +
- "aanskKirundiRoemeenskRussyskKinyarwandaSanskrietSardinyskSindhiNoard" +
- "-SamyskSangoSingaleesSlowaaksSloveenskSamoaanskShonaSomalyskAlbanees" +
- "kServyskSwaziSûd-SothoSoendaneeskZweedsSwahiliTamilTeluguTadzjieksTh" +
- "aisTigrinyaTurkmeensTswanaTongaanskTurksTsongaTataarsTahityskOeigoer" +
- "sOekraïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddyskYo" +
- "rubaZhuangSineeskZuluAtjeeskAkoliAdangmeAdygheAfrihiliAghemAinuAkkad" +
- "yskAleutSûd-AltaïskâldingelskAngikaArameeskAraukaanskArapahoArawakAs" +
- "uAsturyskAwadhiBaloetsjyskBalineeskBasaBamounGhomala’BejaBembaBenaBa" +
- "futBhojpuriBikolBiniKomSiksikaBrajBodoAkooseBuriatBugineeskBuluBlinM" +
- "edumbaKaddoKaribyskCayugaAtsamCebuanoChigaChibchaChagataiChuukeeskMa" +
- "riChinook-jargonChoctawChipewyanCherokeeCheyenneSoranîKoptyskKrim-Ta" +
- "taarskKasjoebyskDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriN" +
- "edersorbyskDualaMiddelnederlânskJola-FonyiDyulaDazagaEmbuEfikAldegyp" +
- "tyskEkajukElamityskMiddelingelskEwondoFangFilipynskFonMiddelfrânskAl" +
- "dfrânskNoard-FryskEast-FryskFriulyskGaGayoGbayaGeezGilberteeskMiddel" +
- "heechdútskAlsheechdútskGondiGorontaloGothyskGreboAldgryksSwitsers Dú" +
- "tskGusiiGwichʼinHaidaHawaïaanskHiligaynonHettityskHmongOppersorbyskH" +
- "upaIbanIbibioIlokoIngoesjLojbanNgombaMachameJudeo-PerzyskJudeo-Araby" +
- "skKarakalpaksKabyleKachinJjuKambaKawiKabardyskKanembuTyapMakondeKaap" +
- "verdysk CreoolsKoroKhasiKhotaneeskKoyra ChiiniKakoKalenjinKimbunduKo" +
- "nkaniKosraeaanskKpelleKarachay-BalkarKarelyskKurukhShambalaBafiaKöls" +
- "chKoemuksKutenaiLadinoLangiLahndaLambaLezgyskLakotaMongoLoziLuba-Lul" +
- "uaLuisenoLundaLuoLushaiLuyiaMadureesMafaMagahiMaithiliMakassaarsMand" +
- "ingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMe" +
- "ta’Mi’kmaqMinangkabauMantsjoeManipoeriMohawkMossiMundangMeardere tal" +
- "enCreekMirandeesMarwariMyeneErzjaNapolitaanskNamaLaagduitsNewariNias" +
- "NiueaanskNgumbaNgiemboonNogaiAldnoarskN’koNoard-SothoNuerKlassiek Ne" +
- "wariNyamweziNyankoleNyoroNzimaOsageOttomaansk-TurksPangasinanPahlavi" +
- "PampangaPapiamentsPalauaanskAldperzyskFoenisyskPohnpeiaanskAldproven" +
- "çaalsRajasthaniRapanuiRarotonganRomboRomaniAromaniaanskRwaSandaweJa" +
- "koetsSamaritaansk-ArameeskSamburuSasakSantaliNgambaySanguSiciliaansk" +
- "SchotsSenecaSenaSelkupKoyraboro SenniAldyrskTashelhiytShanTsjadysk A" +
- "rabyskSidamoSûd-SamyskLule SamiInari SamiSkolt SamiSoninkeSogdyskSra" +
- "nantongoSererSahoSukumaSoesoeSoemeryskShimaoreCongo SwahiliKlassiek " +
- "SyryskSyryskTimneTesoTerenoTetunTigreTivTokelausKlingonTlingitTamash" +
- "ekNyasa TongaTok PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvi" +
- "nyskTamazight (Sintraal-Marokko)OedmoertsOegarityskUmbunduRootVaiVot" +
- "yskVunjoWalserWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantone" +
- "eskZapotecBlissymbolenZenagaStandert Marokkaanske TamazightZuniGjin " +
- "linguïstyske ynhâldZazaModern standert ArabyskEastenryks DútskSwitse" +
- "rsk HeechdútskAustralysk IngelskKanadeesk IngelskBritsk IngelskAmeri" +
- "kaansk IngelskLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaans" +
- "k SpaanskKanadeesk FrânskSwitserse FrânskVlaamsBrazyljaansk Portugee" +
- "sEuropees PortugeesMoldavyskServokroatyskFerienfâldich SineeskTradis" +
- "joneel Sineesk",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035,
- 0x003c, 0x0045, 0x004c, 0x0052, 0x0061, 0x006b, 0x0076, 0x007f,
- 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a8, 0x00af, 0x00b9, 0x00c5,
- 0x00cd, 0x00d8, 0x00dc, 0x00e5, 0x00f0, 0x00fc, 0x0101, 0x0107,
- 0x010d, 0x0113, 0x011b, 0x011e, 0x0123, 0x012a, 0x0133, 0x013a,
- 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, 0x0161, 0x016b, 0x0172,
- 0x017c, 0x0181, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01ac, 0x01b1,
- 0x01bb, 0x01c0, 0x01c9, 0x01d1, 0x01dc, 0x01e5, 0x01ed, 0x01f3,
- // Entry 40 - 7F
- 0x01fe, 0x0208, 0x0213, 0x0217, 0x0221, 0x0228, 0x022b, 0x0232,
- 0x023c, 0x0245, 0x024b, 0x0253, 0x025b, 0x0260, 0x0266, 0x026e,
- 0x0275, 0x027f, 0x0284, 0x028b, 0x0294, 0x029a, 0x02a2, 0x02aa,
- 0x02ae, 0x02b5, 0x02be, 0x02c3, 0x02cd, 0x02d2, 0x02da, 0x02e1,
- 0x02eb, 0x02f2, 0x02fe, 0x0306, 0x0310, 0x031b, 0x0320, 0x032a,
- 0x0333, 0x033b, 0x0342, 0x0348, 0x034f, 0x0356, 0x0360, 0x036c,
- 0x0374, 0x037a, 0x0385, 0x0394, 0x03a3, 0x03ae, 0x03b4, 0x03ba,
- 0x03c4, 0x03ca, 0x03cf, 0x03d3, 0x03db, 0x03e2, 0x03e6, 0x03ec,
- // Entry 80 - BF
- 0x03f3, 0x03fd, 0x0404, 0x0411, 0x0418, 0x0421, 0x0428, 0x0433,
- 0x043c, 0x0445, 0x044b, 0x0457, 0x045c, 0x0465, 0x046d, 0x0476,
- 0x047f, 0x0484, 0x048c, 0x0495, 0x049c, 0x04a1, 0x04ab, 0x04b6,
- 0x04bc, 0x04c3, 0x04c8, 0x04ce, 0x04d7, 0x04dc, 0x04e4, 0x04ed,
- 0x04f3, 0x04fc, 0x0501, 0x0507, 0x050e, 0x0516, 0x051e, 0x0528,
- 0x052c, 0x0534, 0x0539, 0x0543, 0x054b, 0x0550, 0x0555, 0x055a,
- 0x0561, 0x0567, 0x056d, 0x0574, 0x0578, 0x057f, 0x0584, 0x058b,
- 0x0591, 0x0591, 0x0599, 0x059e, 0x05a2, 0x05aa, 0x05aa, 0x05af,
- // Entry C0 - FF
- 0x05af, 0x05bc, 0x05c7, 0x05cd, 0x05d5, 0x05df, 0x05df, 0x05e6,
- 0x05e6, 0x05ec, 0x05ec, 0x05ec, 0x05ef, 0x05ef, 0x05f7, 0x05f7,
- 0x05fd, 0x0608, 0x0611, 0x0611, 0x0615, 0x061b, 0x061b, 0x0625,
- 0x0629, 0x062e, 0x062e, 0x0632, 0x0637, 0x0637, 0x0637, 0x063f,
- 0x0644, 0x0648, 0x0648, 0x064b, 0x0652, 0x0652, 0x0652, 0x0656,
- 0x0656, 0x065a, 0x0660, 0x0666, 0x066f, 0x0673, 0x0677, 0x067e,
- 0x0683, 0x068b, 0x0691, 0x0696, 0x069d, 0x06a2, 0x06a9, 0x06b1,
- 0x06ba, 0x06be, 0x06cc, 0x06d3, 0x06dc, 0x06e4, 0x06ec, 0x06f3,
- // Entry 100 - 13F
- 0x06fa, 0x06fa, 0x0707, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a,
- 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x0750, 0x0750, 0x0755,
- 0x0766, 0x0770, 0x0775, 0x077b, 0x077f, 0x0783, 0x0783, 0x078e,
- 0x0794, 0x079d, 0x07aa, 0x07aa, 0x07b0, 0x07b0, 0x07b4, 0x07bd,
- 0x07bd, 0x07c0, 0x07c0, 0x07cd, 0x07d7, 0x07d7, 0x07e2, 0x07ec,
- 0x07f4, 0x07f6, 0x07f6, 0x07f6, 0x07fa, 0x07ff, 0x07ff, 0x0803,
- 0x080e, 0x080e, 0x081f, 0x082d, 0x082d, 0x0832, 0x083b, 0x0842,
- 0x0847, 0x084f, 0x085e, 0x085e, 0x085e, 0x0863, 0x086c, 0x0871,
- // Entry 140 - 17F
- 0x0871, 0x087c, 0x087c, 0x0886, 0x088f, 0x0894, 0x08a0, 0x08a0,
- 0x08a4, 0x08a8, 0x08ae, 0x08b3, 0x08ba, 0x08ba, 0x08ba, 0x08c0,
- 0x08c6, 0x08cd, 0x08da, 0x08e7, 0x08e7, 0x08f2, 0x08f8, 0x08fe,
- 0x0901, 0x0906, 0x090a, 0x0913, 0x091a, 0x091e, 0x0925, 0x0938,
- 0x0938, 0x093c, 0x093c, 0x0941, 0x094b, 0x0957, 0x0957, 0x0957,
- 0x095b, 0x0963, 0x096b, 0x096b, 0x0972, 0x097d, 0x0983, 0x0992,
- 0x0992, 0x0992, 0x099a, 0x09a0, 0x09a8, 0x09ad, 0x09b4, 0x09bb,
- 0x09c2, 0x09c8, 0x09cd, 0x09d3, 0x09d8, 0x09df, 0x09df, 0x09df,
- // Entry 180 - 1BF
- 0x09df, 0x09e5, 0x09e5, 0x09ea, 0x09ee, 0x09ee, 0x09ee, 0x09f8,
- 0x09ff, 0x0a04, 0x0a07, 0x0a0d, 0x0a12, 0x0a12, 0x0a12, 0x0a1a,
- 0x0a1e, 0x0a24, 0x0a2c, 0x0a36, 0x0a3e, 0x0a43, 0x0a47, 0x0a4d,
- 0x0a53, 0x0a58, 0x0a5c, 0x0a64, 0x0a6e, 0x0a7c, 0x0a83, 0x0a8c,
- 0x0a97, 0x0a9f, 0x0aa8, 0x0aae, 0x0ab3, 0x0ab3, 0x0aba, 0x0ac8,
- 0x0acd, 0x0ad6, 0x0add, 0x0add, 0x0ae2, 0x0ae7, 0x0ae7, 0x0ae7,
- 0x0af3, 0x0af7, 0x0b00, 0x0b06, 0x0b0a, 0x0b13, 0x0b13, 0x0b19,
- 0x0b22, 0x0b27, 0x0b30, 0x0b30, 0x0b36, 0x0b41, 0x0b45, 0x0b54,
- // Entry 1C0 - 1FF
- 0x0b5c, 0x0b64, 0x0b69, 0x0b6e, 0x0b73, 0x0b83, 0x0b8d, 0x0b94,
- 0x0b9c, 0x0ba6, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bba, 0x0bba,
- 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcf, 0x0bcf, 0x0bde, 0x0bde, 0x0bde,
- 0x0be8, 0x0bef, 0x0bf9, 0x0bf9, 0x0bf9, 0x0bfe, 0x0c04, 0x0c04,
- 0x0c04, 0x0c04, 0x0c10, 0x0c13, 0x0c1a, 0x0c21, 0x0c36, 0x0c3d,
- 0x0c42, 0x0c49, 0x0c49, 0x0c50, 0x0c55, 0x0c60, 0x0c66, 0x0c66,
- 0x0c66, 0x0c6c, 0x0c70, 0x0c70, 0x0c76, 0x0c85, 0x0c8c, 0x0c8c,
- 0x0c96, 0x0c9a, 0x0caa, 0x0cb0, 0x0cb0, 0x0cb0, 0x0cbb, 0x0cc4,
- // Entry 200 - 23F
- 0x0cce, 0x0cd8, 0x0cdf, 0x0ce6, 0x0cf1, 0x0cf6, 0x0cfa, 0x0cfa,
- 0x0d00, 0x0d06, 0x0d0f, 0x0d17, 0x0d24, 0x0d33, 0x0d39, 0x0d39,
- 0x0d39, 0x0d3e, 0x0d42, 0x0d48, 0x0d4d, 0x0d52, 0x0d55, 0x0d5d,
- 0x0d5d, 0x0d64, 0x0d6b, 0x0d6b, 0x0d73, 0x0d7e, 0x0d87, 0x0d87,
- 0x0d8d, 0x0d8d, 0x0d96, 0x0d96, 0x0d9f, 0x0daa, 0x0db1, 0x0db9,
- 0x0dd5, 0x0dde, 0x0de8, 0x0def, 0x0df3, 0x0df6, 0x0df6, 0x0df6,
- 0x0df6, 0x0df6, 0x0dfc, 0x0dfc, 0x0e01, 0x0e07, 0x0e0d, 0x0e12,
- 0x0e17, 0x0e17, 0x0e17, 0x0e1d, 0x0e1d, 0x0e21, 0x0e24, 0x0e2a,
- // Entry 240 - 27F
- 0x0e31, 0x0e36, 0x0e36, 0x0e40, 0x0e47, 0x0e53, 0x0e53, 0x0e59,
- 0x0e78, 0x0e7c, 0x0e96, 0x0e9a, 0x0eb1, 0x0eb1, 0x0ec2, 0x0ed7,
- 0x0ee9, 0x0efa, 0x0f08, 0x0f1b, 0x0f36, 0x0f47, 0x0f5a, 0x0f5a,
- 0x0f6b, 0x0f7c, 0x0f7c, 0x0f82, 0x0f98, 0x0faa, 0x0fb3, 0x0fc0,
- 0x0fd6, 0x0fea,
- },
- },
- { // ga
- "AfáirisAbcáisisAivéistisAfracáinisAcáinisAmáirisAragóinisAraibisAsaimisA" +
- "váirisAidhmirisAsarbaiseáinisBaiscírisBealarúisisBulgáirisBioslaimis" +
- "BeangáilisTibéidisBriotáinisBoisnisCatalóinisSeisnisSeamóirisCorsaic" +
- "isCraísSeicisSlavais na hEaglaiseSuvaisisBreatnaisDanmhairgisGearmái" +
- "nisDivéihisSeoinicisGréigisBéarlaEsperantoSpáinnisEastóinisBascaisPe" +
- "irsisFuláinisFionlainnisFidsisFaróisFraincisFreaslainnis IartharachG" +
- "aeilgeGaeilge na hAlbanGailísisGuaráinisGúisearáitisManainnisHásaisE" +
- "abhraisHiondúisMotúis HíríCróitisCriól HáítíochUngáirisAirméinisHeir" +
- "éirisInterlinguaIndinéisisInterlingueÍogbóisIniúipiaicisIdoÍoslainn" +
- "isIodáilisIonúitisSeapáinisIáivisSeoirsisCongóisCiocúisCuainiáimisCa" +
- "saicisKalaallisutCiméirisCannadaisCóiréisCanúirisCaismírisCoirdisCoi" +
- "misCoirnisCirgisisLaidinLucsambuirgisLugandaisLiongáilisLaoisisLiotu" +
- "áinisLúba-CataingisLaitvisMalagáisisMairsillisMaoraisMacadóinisMail" +
- "éalaimisMongóilisMaraitisMalaeisMáltaisBurmaisNárúisNdeibéilis an T" +
- "uaiscirtNeipeailisNdongaisOllainnisNua-IoruaisIoruais BokmålNdeibéil" +
- "is an DeiscirtNavachóisSiséivisOcsatáinisÓisibisOraimisOirísisOiséit" +
- "isPuinseáibisPáilisPolainnisPaistisPortaingéilisCeatsuaisRómainisRúi" +
- "ndisRómáinisRúisisCiniaruaindisSanscraitSairdínisSindisSáimis Thuaid" +
- "hSangóisSiolóinisSlóvaicisSlóivéinisSamóisSeoinisSomáilisAlbáinisSei" +
- "rbisSuaisisSeasóitisSundaisSualainnisSvahaílisTamailisTeileagúisTáid" +
- "sícisTéalainnisTigrinisTuircméinisSuáinisTongaisTuircisSongaisTatair" +
- "isTaihítisUigiúirisÚcráinisUrdúisÚisbéiceastáinisVeindisVítneaimisVo" +
- "lapükVallúnaisVolaifisCóisisGiúdaisIarúibisSiuáingisSínisSúlúisAidhn" +
- "iúisAcáidisSean-BhéarlaAramaisMapúitsisAstúirisBailísBaváirisBeimbis" +
- "BuiriáitisBuiginisSeabúáinisMairisSeiricisCoptaisCaisiúibisZarmaisSo" +
- "rbais ÍochtarachMeán-OllainnisSean-ÉigiptisMeán-BhéarlaFilipínisMeán" +
- "-FhraincisSean-FhraincisFreaslainnis an TuaiscirtFriúilisAetóipisMeá" +
- "n-Ard-GhearmáinisSean-Ard-GhearmáinisSean-GhréigisGearmáinis Eilvéis" +
- "eachUaúisHaicéisHaváisHiondúis FhidsíHilgeanóinisHitisMongaisSorbais" +
- " UachtarachHúipisIbibisIongúisIútlainnisCara-ChalpáisConcáinisCairéi" +
- "lisCurúicisLaidínisPuinseáibis IartharachLiogúirisLiovóinisLombairdi" +
- "sMeindisMeán-GhaeilgeManapúirisMóháicisMairis IartharachMioraindéisM" +
- "armhairisGearmáinis ÍochtarachNíobhaisSean-LochlainnisSútúis an Tuai" +
- "scirtSean-PheirsisPrúisisRomainisArómáinisSachaisAramais ShamárachSa" +
- "ntáilisSicilisAlbainisSean-GhaeilgeSáimis LuleSogdánaisSuiméirisSvah" +
- "aílis an ChongóSiricisSiléisisKlingonUdmairtisTeanga AnaithnidVeinéi" +
- "sisPléimeannais IartharachCailmícisCantainisSéalainnisZúinisGan ábha" +
- "r teangeolaíochAraibis ChaighdeánachGearmáinis OstarachArd-Ghearmáin" +
- "is EilvéiseachBéarla AstrálachBéarla CeanadachBéarla BriotanachBéarl" +
- "a MeiriceánachSpáinnis Mheiriceá LaidinighSpáinnis EorpachSpáinnis M" +
- "heicsiceachFraincis CheanadachFraincis EilvéiseachSacsainis Íochtara" +
- "chPléimeannaisPortaingéilis na BrasaílePortaingéilis IbéarachMoldáiv" +
- "isSeirbea-ChróitisSínis ShimplitheSínis Thraidisiúnta",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0008, 0x0011, 0x001b, 0x0026, 0x002e, 0x0036, 0x0040,
- 0x0047, 0x004e, 0x0056, 0x005f, 0x006e, 0x0078, 0x0084, 0x008e,
- 0x0098, 0x0098, 0x00a3, 0x00ac, 0x00b7, 0x00be, 0x00c9, 0x00d0,
- 0x00da, 0x00e3, 0x00e9, 0x00ef, 0x0103, 0x010b, 0x0114, 0x011f,
- 0x012a, 0x0133, 0x013c, 0x013c, 0x0144, 0x014b, 0x0154, 0x015d,
- 0x0167, 0x016e, 0x0175, 0x017e, 0x0189, 0x018f, 0x0196, 0x019e,
- 0x01b5, 0x01bc, 0x01cd, 0x01d6, 0x01e0, 0x01ee, 0x01f7, 0x01fe,
- 0x0206, 0x020f, 0x021d, 0x0225, 0x0237, 0x0240, 0x024a, 0x0254,
- // Entry 40 - 7F
- 0x025f, 0x026a, 0x0275, 0x027e, 0x027e, 0x028b, 0x028e, 0x0299,
- 0x02a2, 0x02ab, 0x02b5, 0x02bc, 0x02c4, 0x02cc, 0x02d4, 0x02e0,
- 0x02e8, 0x02f3, 0x02fc, 0x0305, 0x030e, 0x0317, 0x0321, 0x0328,
- 0x032e, 0x0335, 0x033d, 0x0343, 0x0350, 0x0359, 0x0359, 0x0364,
- 0x036b, 0x0376, 0x0385, 0x038c, 0x0397, 0x03a1, 0x03a8, 0x03b3,
- 0x03c0, 0x03ca, 0x03d2, 0x03d9, 0x03e1, 0x03e8, 0x03f0, 0x0408,
- 0x0412, 0x041a, 0x0423, 0x042e, 0x043d, 0x0454, 0x045e, 0x0467,
- 0x0472, 0x047a, 0x0481, 0x0489, 0x0492, 0x049e, 0x04a5, 0x04ae,
- // Entry 80 - BF
- 0x04b5, 0x04c3, 0x04cc, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x04fb,
- 0x0504, 0x050e, 0x0514, 0x0523, 0x052b, 0x0535, 0x053f, 0x054b,
- 0x0552, 0x0559, 0x0562, 0x056b, 0x0572, 0x0579, 0x0583, 0x058a,
- 0x0594, 0x059e, 0x05a6, 0x05b1, 0x05bc, 0x05c7, 0x05cf, 0x05db,
- 0x05e3, 0x05ea, 0x05f1, 0x05f8, 0x0600, 0x0609, 0x0613, 0x061d,
- 0x0624, 0x0637, 0x063e, 0x0649, 0x0651, 0x065b, 0x0663, 0x066a,
- 0x0672, 0x067b, 0x0685, 0x068b, 0x0693, 0x0693, 0x0693, 0x0693,
- 0x0693, 0x0693, 0x0693, 0x0693, 0x069d, 0x06a5, 0x06a5, 0x06a5,
- // Entry C0 - FF
- 0x06a5, 0x06a5, 0x06b2, 0x06b2, 0x06b9, 0x06c3, 0x06c3, 0x06c3,
- 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06cc, 0x06cc,
- 0x06cc, 0x06cc, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06dc,
- 0x06dc, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
- 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
- 0x06e3, 0x06e3, 0x06e3, 0x06ee, 0x06f6, 0x06f6, 0x06f6, 0x06f6,
- 0x06f6, 0x06f6, 0x06f6, 0x06f6, 0x0702, 0x0702, 0x0702, 0x0702,
- 0x0702, 0x0708, 0x0708, 0x0708, 0x0708, 0x0710, 0x0710, 0x0710,
- // Entry 100 - 13F
- 0x0717, 0x0717, 0x0717, 0x0722, 0x0722, 0x0722, 0x0722, 0x0722,
- 0x0722, 0x0722, 0x0722, 0x0729, 0x0729, 0x073c, 0x073c, 0x073c,
- 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x0759,
- 0x0759, 0x0759, 0x0767, 0x0767, 0x0767, 0x0767, 0x0767, 0x0771,
- 0x0771, 0x0771, 0x0771, 0x0780, 0x078e, 0x078e, 0x07a7, 0x07a7,
- 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b9,
- 0x07b9, 0x07b9, 0x07cf, 0x07e4, 0x07e4, 0x07e4, 0x07e4, 0x07e4,
- 0x07e4, 0x07f2, 0x080a, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810,
- // Entry 140 - 17F
- 0x0818, 0x081f, 0x0830, 0x083d, 0x0842, 0x0849, 0x085b, 0x085b,
- 0x0862, 0x0862, 0x0868, 0x0868, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x087b, 0x0889, 0x0889, 0x0889,
- 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889,
- 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889,
- 0x0889, 0x0889, 0x0889, 0x0889, 0x0893, 0x0893, 0x0893, 0x0893,
- 0x0893, 0x0893, 0x089d, 0x08a6, 0x08a6, 0x08a6, 0x08a6, 0x08a6,
- 0x08a6, 0x08af, 0x08af, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08d0,
- // Entry 180 - 1BF
- 0x08da, 0x08da, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
- 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
- 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
- 0x08e4, 0x08eb, 0x08eb, 0x08eb, 0x08f9, 0x08f9, 0x08f9, 0x08f9,
- 0x08f9, 0x08f9, 0x0904, 0x090e, 0x090e, 0x091f, 0x091f, 0x091f,
- 0x091f, 0x092b, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935,
- 0x0935, 0x0935, 0x094c, 0x094c, 0x094c, 0x0955, 0x0955, 0x0955,
- 0x0955, 0x0955, 0x0965, 0x0965, 0x0965, 0x097a, 0x097a, 0x097a,
- // Entry 1C0 - 1FF
- 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a,
- 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x0987, 0x0987,
- 0x0987, 0x0987, 0x0987, 0x0987, 0x098f, 0x098f, 0x098f, 0x098f,
- 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x0997, 0x0997,
- 0x0997, 0x0997, 0x09a2, 0x09a2, 0x09a2, 0x09a9, 0x09bb, 0x09bb,
- 0x09bb, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09cc, 0x09d4, 0x09d4,
- 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09e1, 0x09e1,
- 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09ed,
- // Entry 200 - 23F
- 0x09ed, 0x09ed, 0x09ed, 0x09f7, 0x09f7, 0x09f7, 0x09f7, 0x09f7,
- 0x09f7, 0x09f7, 0x0a01, 0x0a01, 0x0a16, 0x0a16, 0x0a1d, 0x0a26,
- 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26,
- 0x0a26, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d,
- 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d,
- 0x0a2d, 0x0a36, 0x0a36, 0x0a36, 0x0a46, 0x0a46, 0x0a50, 0x0a50,
- 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68,
- 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, 0x0a72, 0x0a72, 0x0a72,
- // Entry 240 - 27F
- 0x0a72, 0x0a72, 0x0a72, 0x0a7b, 0x0a7b, 0x0a7b, 0x0a86, 0x0a86,
- 0x0a86, 0x0a8d, 0x0aa6, 0x0aa6, 0x0abc, 0x0abc, 0x0ad0, 0x0aed,
- 0x0aff, 0x0b10, 0x0b22, 0x0b37, 0x0b55, 0x0b66, 0x0b7c, 0x0b7c,
- 0x0b8f, 0x0ba4, 0x0bb9, 0x0bc6, 0x0be1, 0x0bf9, 0x0c03, 0x0c14,
- 0x0c25, 0x0c3a,
- },
- },
- { // gd
- "AfarAbchasaisAvestanaisAfraganaisAkanAmtharaisAragonaisArabaisAsamaisAva" +
- "raisAymaraAsarbaideànaisBashkirBealaruisisBulgaraisBislamaBambaraBea" +
- "ngailisTibeitisBreatnaisBosnaisCatalanaisDeideanaisChamorroCorsaisCr" +
- "eeSeacaisSlàbhais na h-EaglaiseChuvashCuimrisDanmhairgisGearmailtisD" +
- "ivehiDzongkhaEweGreugaisBeurlaEsperantoSpàinntisEastoinisBasgaisPeir" +
- "sisFulahFionnlannaisFìdisFàrothaisFraingisFrìoslannais ShiarachGaeil" +
- "geGàidhligGailìsisGuaraníGujaratiGaelgHausaEabhraHindisHiri MotuCròt" +
- "haisisCrìtheol HaidhtiUngairisAirmeinisHereroInterlinguaInnd-InnsisI" +
- "nterlingueIgboYi SichuanInupiaqIdoInnis TìlisEadailtisInuktitutSeapa" +
- "naisDeàbhanaisCairtbheilisKongoKikuyuKuanyamaCasachaisKalaallisutCmè" +
- "arKannadaCoirèanaisKanuriCaismirisCùrdaisKomiCòrnaisCìorgasaisLaidea" +
- "nnLugsamburgaisGandaCànan LimburgLingalaLàthoLiotuainisLuba-KatangaL" +
- "aitbheisMalagasaisMarshallaisMāoriMasadonaisMalayalamMongolaisMarath" +
- "iMalaidhisMaltaisBurmaisNabhruNdebele ThuathachNeapàlaisNdongaDuitsi" +
- "sNynorsk na NirribhidhBokmål na NirribhidhNdebele DheasachNavajoChic" +
- "hewaOgsatanaisOjibwaOromoOdiaOsseticPanjabiPaliPòlainnisPashtoPortag" +
- "ailisCeatsuaRumainsKirundiRomàinisRuisisKinyarwandaSanskritSàrdaisSi" +
- "ndhiSàmais ThuathachSangoSinhalaSlòbhacaisSlòbhainisSamothaisShonaSo" +
- "màilisAlbàinisSèirbisSwatiLeasotach DheasachCànan SundaSuainisKiswah" +
- "iliTaimilisTeluguTaidigisTàidhTigrinyaTurcmanaisTswanaTongaisTurcais" +
- "TsongaTataraisCànan TahitiÙigiuraisUcràinisÙrduUsbagaisVendaBhiet-Na" +
- "maisVolapükWalloonWolofXhosaIùdhaisIorubaZhuangSìnisZuluBasa AcèhAco" +
- "liAdangmeAdygheArabais ThuiniseachAfrihiliAghemAinuAcadaisAlabamaAle" +
- "utaisAlbàinis GhegeachSeann-BheurlaAngikaAramaisMapucheAraonaArapaho" +
- "Arabais AildireachArawakArabais MhorocachArabais ÈipheiteachAsuCainn" +
- "t-shanais na h-AimeireagaAstùraisKotavaAwadhiBaluchìCànan BaliBasaaB" +
- "amunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBalochi ShiarachB" +
- "hojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAk" +
- "ooseBuriatCànan nam BugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuano" +
- "ChigaChibchaChagataiCànan ChuukMariChinuk WawaChoctawChipewyanCherok" +
- "eeCheyenneCùrdais SoranîCoptaisCapiznonTurcais ChriomachCaisiubaisDa" +
- "kotaDargwaTaitaDelawareSlaveyDogribDinkaZarmaDogriSòrbais Ìochdarach" +
- "Dusun MheadhanachDualaMeadhan-DhuitsisJola-FonyiDyulaDazagaEmbuEfikÈ" +
- "ipheitis ÀrsaidhEkajukElamaisMeadhan-BheurlaYupik MheadhanachEwondoC" +
- "ànan na h-ExtremaduraFangFilipinisMeänkieliFonFraingis nan CajunMea" +
- "dhan-FhraingisSeann-FhraingisArpitanFrìoslannais ThuathachFrìoslanna" +
- "is EarachFriùilisGaGagauzGanGayoGbayaDari ZoroastrachGe’ezCiribeasai" +
- "sGilakiMeadhan-Àrd-GearmailtisSeann-Àrd-GearmailtisKonkani GoaGondiG" +
- "orontaloGotaisGreboGreugais ÀrsaidhGearmailtis EilbheiseachWayuuFraf" +
- "raGusiiGwichʼinHaidaHakkaCànan Hawai’iHindis FhìditheachHiligaynonCà" +
- "nan HetHmongSòrbais UachdarachXiangHupaIbanIbibioIlokoIngushBeurla C" +
- "rìtheolach DiameugaLojbanNgombaMachamePeirsis IùdhachArabais Iùdhach" +
- "Kara-KalpakKabyleKachinJjuKambaKawiKanembuTyapMakondeKabuverdianuKen" +
- "yangKoroKaingangKhasiCànan KhotanKoyra ChiiniKhowarKirmanjkiKakoKale" +
- "njinKimbunduKomi-PermyakKonkaniKpelleKarachay-BalkarKrioKinaray-aKur" +
- "ukhShambalaBafiaKumykKutenaiLadinoLangiLahndaLambaLingua Franca Nova" +
- "LiogùraisLakhótaLombardaisMongoLoziLuri ThuathachLuba-LuluaLuiseñoLu" +
- "ndaLuoMizoLuyiaSìnis an LitreachaisLazCànan MadhuraMafaMagahiMaithil" +
- "iMakasarMandingoMaasaiMabaMokshaMandarMendeMeruMorisyenMeadhan-Ghaei" +
- "lgeMakhuwa-MeettoMeta’Mi’kmaqMinangkabauManchuManipuriMohawkMossiMar" +
- "i ShiarachMundangIomadh cànanCreekMarwariMentawaiMyeneErzyaMazandera" +
- "niMin NanNamaGearmailtis ÌochdarachNewariNiasCànan NiueAo NagaKwasio" +
- "NgiemboonNogaiSeann-LochlannaisNovialN’KoLeasotais ThuathachNuerNewa" +
- "ri ChlasaigeachNyamweziNyankoleNyoroNzimaOsageTurcais OtomanachPanga" +
- "sinanPahlaviPampangaPapiamentoPalabhaisPicardGearmailtis Phennsylvan" +
- "iaPlautdietschSeann-PheirsisPhenicisPiedmonteseCànan PohnpeiPruisisS" +
- "eann-PhrovençalK’iche’Quichua Àrd-tìr ChimborazoRajasthaniRapa NuiCà" +
- "nan RarotongaRomagnolRomboRomanaisRusynRovianaRwaSandaweSachaisArama" +
- "is ShamaritanachSamburuSasakSantaliSaurashtraNgambaySanguSisilisAlba" +
- "isSassareseCùrdais DheasachSenecaSenaSeriSelkupKoyraboro SenniSeann-" +
- "GhaeilgeTachelhitShanArabais SeàdachSidamoSelayarSàmais DheasachSàma" +
- "is LuleSàmais InariSàmais SkoltSoninkeSranan TongoSererSahoSukumaSus" +
- "uCànan SumerComoraisKiswahili na CongoSuraidheac ChlasaigeachSuraidh" +
- "eacTuluTimneTesoTerênaTetumTigreTivTokelauTsakhurKlingonTlingitTalys" +
- "hTamashekNyasa TongaTok PisinTuroyoTarokoTsimshianTatiTumbukaTubhalu" +
- "TasawaqCànan TuvaTamazight Meadhan na h-AtlasUdmurtUmbunduRootVaiVep" +
- "sFlannrais SiarachVõroVunjoGearmailtis WallisWolayttaWarayWashoWarlp" +
- "iriWuKalmykSogaYaoCànan YapYangbenYembaNheengatuCantonaisZapotecComh" +
- "arran BlissCànan ZeelandZenagaTamazight Stannardach MorocoZuñiSusbai" +
- "nt nach eil ’na chànanZazakiNuadh-Arabais StannardachGearmailtis na " +
- "h-OstaireÀrd-Ghearmailtis na h-EilbheiseBeurla AstràiliaBeurla Chana" +
- "daBeurla BhreatainnBeurla na h-AimeireagaSpàinntis na h-Aimeireaga L" +
- "aidinneachSpàinntis EòrpachSpàinntis MheagsagachFraingis ChanadaFrai" +
- "ngis EilbheiseachSagsannais ÌochdarachFlannraisPortagailis Bhraisile" +
- "achPortagailis EòrpachMoldobhaisSèirb-ChròthaisisSìnis ShimplichteSì" +
- "nis Thradaiseanta",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037,
- 0x003e, 0x0045, 0x004c, 0x0052, 0x0061, 0x0068, 0x0073, 0x007c,
- 0x0083, 0x008a, 0x0094, 0x009c, 0x00a5, 0x00ac, 0x00b6, 0x00c0,
- 0x00c8, 0x00cf, 0x00d3, 0x00da, 0x00f1, 0x00f8, 0x00ff, 0x010a,
- 0x0115, 0x011b, 0x0123, 0x0126, 0x012e, 0x0134, 0x013d, 0x0147,
- 0x0150, 0x0157, 0x015e, 0x0163, 0x016f, 0x0175, 0x017f, 0x0187,
- 0x019d, 0x01a4, 0x01ad, 0x01b6, 0x01be, 0x01c6, 0x01cb, 0x01d0,
- 0x01d6, 0x01dc, 0x01e5, 0x01f0, 0x0201, 0x0209, 0x0212, 0x0218,
- // Entry 40 - 7F
- 0x0223, 0x022e, 0x0239, 0x023d, 0x0247, 0x024e, 0x0251, 0x025d,
- 0x0266, 0x026f, 0x0278, 0x0283, 0x028f, 0x0294, 0x029a, 0x02a2,
- 0x02ab, 0x02b6, 0x02bc, 0x02c3, 0x02ce, 0x02d4, 0x02dd, 0x02e5,
- 0x02e9, 0x02f1, 0x02fc, 0x0304, 0x0311, 0x0316, 0x0324, 0x032b,
- 0x0331, 0x033b, 0x0347, 0x0350, 0x035a, 0x0365, 0x036b, 0x0375,
- 0x037e, 0x0387, 0x038e, 0x0397, 0x039e, 0x03a5, 0x03ab, 0x03bc,
- 0x03c6, 0x03cc, 0x03d3, 0x03e8, 0x03fd, 0x040d, 0x0413, 0x041b,
- 0x0425, 0x042b, 0x0430, 0x0434, 0x043b, 0x0442, 0x0446, 0x0450,
- // Entry 80 - BF
- 0x0456, 0x0461, 0x0468, 0x046f, 0x0476, 0x047f, 0x0485, 0x0490,
- 0x0498, 0x04a0, 0x04a6, 0x04b7, 0x04bc, 0x04c3, 0x04ce, 0x04d9,
- 0x04e2, 0x04e7, 0x04f0, 0x04f9, 0x0501, 0x0506, 0x0518, 0x0524,
- 0x052b, 0x0534, 0x053c, 0x0542, 0x054a, 0x0550, 0x0558, 0x0562,
- 0x0568, 0x056f, 0x0576, 0x057c, 0x0584, 0x0591, 0x059b, 0x05a4,
- 0x05a9, 0x05b1, 0x05b6, 0x05c2, 0x05ca, 0x05d1, 0x05d6, 0x05db,
- 0x05e3, 0x05e9, 0x05ef, 0x05f5, 0x05f9, 0x0603, 0x0608, 0x060f,
- 0x0615, 0x0628, 0x0630, 0x0635, 0x0639, 0x0640, 0x0647, 0x064f,
- // Entry C0 - FF
- 0x0661, 0x0661, 0x066e, 0x0674, 0x067b, 0x0682, 0x0688, 0x068f,
- 0x06a1, 0x06a7, 0x06b8, 0x06cc, 0x06cf, 0x06ed, 0x06f6, 0x06fc,
- 0x0702, 0x070a, 0x0715, 0x0715, 0x071a, 0x071f, 0x0729, 0x0730,
- 0x0734, 0x0739, 0x073f, 0x0743, 0x0748, 0x074e, 0x075e, 0x0766,
- 0x076b, 0x076f, 0x0775, 0x0778, 0x077f, 0x078a, 0x0793, 0x0797,
- 0x079d, 0x07a1, 0x07a7, 0x07ad, 0x07bd, 0x07c1, 0x07c5, 0x07cc,
- 0x07d1, 0x07d6, 0x07dc, 0x07e1, 0x07e8, 0x07ed, 0x07f4, 0x07fc,
- 0x0808, 0x080c, 0x0817, 0x081e, 0x0827, 0x082f, 0x0837, 0x0847,
- // Entry 100 - 13F
- 0x084e, 0x0856, 0x0867, 0x0871, 0x0877, 0x087d, 0x0882, 0x088a,
- 0x0890, 0x0896, 0x089b, 0x08a0, 0x08a5, 0x08b9, 0x08ca, 0x08cf,
- 0x08df, 0x08e9, 0x08ee, 0x08f4, 0x08f8, 0x08fc, 0x08fc, 0x090f,
- 0x0915, 0x091c, 0x092b, 0x093c, 0x0942, 0x0959, 0x095d, 0x0966,
- 0x0970, 0x0973, 0x0985, 0x0996, 0x09a5, 0x09ac, 0x09c3, 0x09d7,
- 0x09e0, 0x09e2, 0x09e8, 0x09eb, 0x09ef, 0x09f4, 0x0a04, 0x0a0b,
- 0x0a16, 0x0a1c, 0x0a34, 0x0a4a, 0x0a55, 0x0a5a, 0x0a63, 0x0a69,
- 0x0a6e, 0x0a7f, 0x0a97, 0x0a9c, 0x0aa2, 0x0aa7, 0x0ab0, 0x0ab5,
- // Entry 140 - 17F
- 0x0aba, 0x0aca, 0x0add, 0x0ae7, 0x0af1, 0x0af6, 0x0b09, 0x0b0e,
- 0x0b12, 0x0b16, 0x0b1c, 0x0b21, 0x0b27, 0x0b27, 0x0b43, 0x0b49,
- 0x0b4f, 0x0b56, 0x0b66, 0x0b76, 0x0b76, 0x0b81, 0x0b87, 0x0b8d,
- 0x0b90, 0x0b95, 0x0b99, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb7,
- 0x0bbe, 0x0bc2, 0x0bca, 0x0bcf, 0x0bdc, 0x0be8, 0x0bee, 0x0bf7,
- 0x0bfb, 0x0c03, 0x0c0b, 0x0c17, 0x0c1e, 0x0c1e, 0x0c24, 0x0c33,
- 0x0c37, 0x0c40, 0x0c40, 0x0c46, 0x0c4e, 0x0c53, 0x0c53, 0x0c58,
- 0x0c5f, 0x0c65, 0x0c6a, 0x0c70, 0x0c75, 0x0c75, 0x0c87, 0x0c91,
- // Entry 180 - 1BF
- 0x0c91, 0x0c99, 0x0ca3, 0x0ca8, 0x0cac, 0x0cba, 0x0cba, 0x0cc4,
- 0x0ccc, 0x0cd1, 0x0cd4, 0x0cd8, 0x0cdd, 0x0cf2, 0x0cf5, 0x0d03,
- 0x0d07, 0x0d0d, 0x0d15, 0x0d1c, 0x0d24, 0x0d2a, 0x0d2e, 0x0d34,
- 0x0d3a, 0x0d3f, 0x0d43, 0x0d4b, 0x0d5b, 0x0d69, 0x0d70, 0x0d79,
- 0x0d84, 0x0d8a, 0x0d92, 0x0d98, 0x0d9d, 0x0daa, 0x0db1, 0x0dbe,
- 0x0dc3, 0x0dc3, 0x0dca, 0x0dd2, 0x0dd7, 0x0ddc, 0x0de7, 0x0dee,
- 0x0dee, 0x0df2, 0x0e09, 0x0e0f, 0x0e13, 0x0e1e, 0x0e25, 0x0e2b,
- 0x0e34, 0x0e39, 0x0e4a, 0x0e50, 0x0e56, 0x0e69, 0x0e6d, 0x0e80,
- // Entry 1C0 - 1FF
- 0x0e88, 0x0e90, 0x0e95, 0x0e9a, 0x0e9f, 0x0eb0, 0x0eba, 0x0ec1,
- 0x0ec9, 0x0ed3, 0x0edc, 0x0ee2, 0x0efb, 0x0f07, 0x0f15, 0x0f15,
- 0x0f1d, 0x0f28, 0x0f28, 0x0f36, 0x0f3d, 0x0f4e, 0x0f59, 0x0f75,
- 0x0f7f, 0x0f87, 0x0f97, 0x0f9f, 0x0f9f, 0x0fa4, 0x0fac, 0x0fac,
- 0x0fb1, 0x0fb8, 0x0fb8, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fde, 0x0fe5,
- 0x0fea, 0x0ff1, 0x0ffb, 0x1002, 0x1007, 0x100e, 0x1014, 0x101d,
- 0x102e, 0x1034, 0x1038, 0x103c, 0x1042, 0x1051, 0x105f, 0x105f,
- 0x1068, 0x106c, 0x107c, 0x1082, 0x1082, 0x1089, 0x1099, 0x10a5,
- // Entry 200 - 23F
- 0x10b2, 0x10bf, 0x10c6, 0x10c6, 0x10d2, 0x10d7, 0x10db, 0x10db,
- 0x10e1, 0x10e5, 0x10f1, 0x10f9, 0x110b, 0x1122, 0x112c, 0x112c,
- 0x1130, 0x1135, 0x1139, 0x1140, 0x1145, 0x114a, 0x114d, 0x1154,
- 0x115b, 0x1162, 0x1169, 0x116f, 0x1177, 0x1182, 0x118b, 0x1191,
- 0x1197, 0x1197, 0x11a0, 0x11a4, 0x11ab, 0x11b2, 0x11b9, 0x11c4,
- 0x11e0, 0x11e6, 0x11e6, 0x11ed, 0x11f1, 0x11f4, 0x11f4, 0x11f8,
- 0x1209, 0x1209, 0x1209, 0x120e, 0x1213, 0x1225, 0x122d, 0x1232,
- 0x1237, 0x123f, 0x1241, 0x1247, 0x1247, 0x124b, 0x124e, 0x1258,
- // Entry 240 - 27F
- 0x125f, 0x1264, 0x126d, 0x1276, 0x127d, 0x128c, 0x129a, 0x12a0,
- 0x12bc, 0x12c1, 0x12e0, 0x12e6, 0x12ff, 0x12ff, 0x1317, 0x1337,
- 0x1348, 0x1356, 0x1367, 0x137d, 0x13a3, 0x13b6, 0x13cc, 0x13cc,
- 0x13dc, 0x13f1, 0x1407, 0x1410, 0x1428, 0x143c, 0x1446, 0x1459,
- 0x146b, 0x147f,
- },
- },
- { // gl
- "abkhazoafrikaansakánamáricoaragonésárabeassamésaimaráacerbaixanobaskirbi" +
- "elorrusobúlgarobmbengalítibetanobretónbosniocatalánChechenocorsochec" +
- "oeslavo eclesiásticoChuvashgalésdinamarquésalemándivehidzongkhaewégr" +
- "egoinglésesperantoespañolestonianoéuscaropersafinésfixianofaroésfran" +
- "césfrisónirlandésgaélico escocésgalegoguaraníguxaratianomanxhausaheb" +
- "reohindicroatahaitianohúngaroarmeniointerlinguaindonesioiboyi sichua" +
- "nésislandésitalianoiuxaponésxavanésxeorxianokongokikuyucasacoklcambo" +
- "dianokannadacoreanocachemirkurdokwquirguizlatínluxemburguésgandaling" +
- "alalaotianolituanoluba-Katangaletónmalgaxemaorímacedoniomalabarmongo" +
- "lmarathimalaiomaltésbirmanondebele do nortenepalíholandésnoruegués n" +
- "ynorsknoruegués bokmalchewaoccitanooromooriyaosetiopunjabipolacopaxt" +
- "únportuguésquechuaromancherundiromanésrusoruandéssánscritosindhisam" +
- "i do nortesangocingaléseslovacoeslovenosamoanoshonasomalíalbanésserb" +
- "ioswatisesotosondanéssuecoswahilitamiltelugutaxicotailandéstigriñatu" +
- "rcomanotswanatonganésturcoxitsongatártarotahitianouigurucraínourdúuz" +
- "becovendavietnamitawólofxhosayiddishiorubachinészulúacoliagqarameoma" +
- "pucheasuasturianobembabezBaluchi occidentalbrxkigacheroquicurdo sora" +
- "nítaitazarmadsbdualajola-fonyiembuibibioexipcio antigofilipinogagaga" +
- "uzgrego antigoalemán suízogusiihawaianohsbngombamapachekabilekambama" +
- "kondecaboverdianokoyra Chiiniklnkomi permiokonkanishambalabafiaLangi" +
- "LakotaloziLurí do norteluba-lulualuoluyiamasaimerucrioulo mauritanom" +
- "ghmgomohawkmundangvarias linguasMazandaranínaqBaixo alemánnmgnqoseso" +
- "tho sa leboanusnyankolequichéromborwksaqsbpKurdo meridionalsenasesta" +
- "chelhitsmasmjsmnsmsswctesotetúnklingontok pisintumbukatwqtzmLingua d" +
- "escoñecidavaivunjoWarlpirisogatamazight de Marrocos estándarsen cont" +
- "ido lingüísticoárabe estándar modernoalemán de austriaalto alemán su" +
- "ízoinglés australianoinglés canadianoinglés británicoinglés dos Est" +
- "ados Unidosespañol latinoamericanocastelánespañol de Méxicofrancés c" +
- "anadianofrancés suízoBaixo saxónflamencoportugués brasileiroportugué" +
- "s europeoserbocroatachinés simplificadochinés tradicional",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0015, 0x001d, 0x0026,
- 0x002c, 0x0034, 0x0034, 0x003b, 0x0046, 0x004c, 0x0056, 0x005e,
- 0x005e, 0x0060, 0x0068, 0x0070, 0x0077, 0x007d, 0x0085, 0x008d,
- 0x008d, 0x0092, 0x0092, 0x0097, 0x00ab, 0x00b2, 0x00b8, 0x00c4,
- 0x00cb, 0x00d1, 0x00d9, 0x00dd, 0x00e2, 0x00e9, 0x00f2, 0x00fa,
- 0x0103, 0x010b, 0x0110, 0x0110, 0x0116, 0x011d, 0x0124, 0x012c,
- 0x0133, 0x013c, 0x014d, 0x0153, 0x015b, 0x0166, 0x016a, 0x016f,
- 0x0175, 0x017a, 0x017a, 0x0180, 0x0188, 0x0190, 0x0197, 0x0197,
- // Entry 40 - 7F
- 0x01a2, 0x01ab, 0x01ab, 0x01ae, 0x01bb, 0x01bb, 0x01bb, 0x01c4,
- 0x01cc, 0x01ce, 0x01d6, 0x01de, 0x01e7, 0x01ec, 0x01f2, 0x01f2,
- 0x01f8, 0x01fa, 0x0204, 0x020b, 0x0212, 0x0212, 0x021a, 0x021f,
- 0x021f, 0x0221, 0x0229, 0x022f, 0x023c, 0x0241, 0x0241, 0x0248,
- 0x0250, 0x0257, 0x0263, 0x0269, 0x0270, 0x0270, 0x0276, 0x027f,
- 0x0286, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a7, 0x02a7, 0x02b7,
- 0x02be, 0x02be, 0x02c7, 0x02d9, 0x02ea, 0x02ea, 0x02ea, 0x02ef,
- 0x02f7, 0x02f7, 0x02fc, 0x0301, 0x0307, 0x030e, 0x030e, 0x0314,
- // Entry 80 - BF
- 0x031b, 0x0325, 0x032c, 0x0334, 0x0339, 0x0341, 0x0345, 0x034d,
- 0x0357, 0x0357, 0x035d, 0x036a, 0x036f, 0x0378, 0x0380, 0x0388,
- 0x038f, 0x0394, 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b4, 0x03bd,
- 0x03c2, 0x03c9, 0x03ce, 0x03d4, 0x03da, 0x03e4, 0x03ec, 0x03f5,
- 0x03fb, 0x0404, 0x0409, 0x0411, 0x0419, 0x0422, 0x0427, 0x042f,
- 0x0434, 0x043a, 0x043f, 0x0449, 0x0449, 0x0449, 0x044f, 0x0454,
- 0x045b, 0x0461, 0x0461, 0x0468, 0x046d, 0x046d, 0x0472, 0x0472,
- 0x0472, 0x0472, 0x0472, 0x0475, 0x0475, 0x0475, 0x0475, 0x0475,
- // Entry C0 - FF
- 0x0475, 0x0475, 0x0475, 0x0475, 0x047b, 0x0482, 0x0482, 0x0482,
- 0x0482, 0x0482, 0x0482, 0x0482, 0x0485, 0x0485, 0x048e, 0x048e,
- 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
- 0x048e, 0x0493, 0x0493, 0x0496, 0x0496, 0x0496, 0x04a8, 0x04a8,
- 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8,
- 0x04a8, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab,
- 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04af, 0x04af, 0x04af,
- 0x04af, 0x04af, 0x04af, 0x04af, 0x04af, 0x04b7, 0x04b7, 0x04c4,
- // Entry 100 - 13F
- 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c9, 0x04c9,
- 0x04c9, 0x04c9, 0x04c9, 0x04ce, 0x04ce, 0x04d1, 0x04d1, 0x04d6,
- 0x04d6, 0x04e0, 0x04e0, 0x04e0, 0x04e4, 0x04ea, 0x04ea, 0x04f8,
- 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0502, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0514, 0x0522, 0x0522, 0x0522, 0x0527, 0x0527, 0x0527,
- // Entry 140 - 17F
- 0x0527, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x0532, 0x0532,
- 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532,
- 0x0538, 0x053f, 0x053f, 0x053f, 0x053f, 0x053f, 0x0545, 0x0545,
- 0x0545, 0x054a, 0x054a, 0x054a, 0x054a, 0x054a, 0x0551, 0x055d,
- 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0569, 0x0569, 0x0569,
- 0x0569, 0x056c, 0x056c, 0x0577, 0x057e, 0x057e, 0x057e, 0x057e,
- 0x057e, 0x057e, 0x057e, 0x057e, 0x0586, 0x058b, 0x058b, 0x058b,
- 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590,
- // Entry 180 - 1BF
- 0x0590, 0x0596, 0x0596, 0x0596, 0x059a, 0x05a8, 0x05a8, 0x05b2,
- 0x05b2, 0x05b2, 0x05b5, 0x05b5, 0x05ba, 0x05ba, 0x05ba, 0x05ba,
- 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05bf, 0x05bf, 0x05bf,
- 0x05bf, 0x05bf, 0x05c3, 0x05d4, 0x05d4, 0x05d7, 0x05da, 0x05da,
- 0x05da, 0x05da, 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e7, 0x05f5,
- 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x0601, 0x0601,
- 0x0601, 0x0604, 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0614,
- 0x0614, 0x0614, 0x0614, 0x0614, 0x0617, 0x0627, 0x062a, 0x062a,
- // Entry 1C0 - 1FF
- 0x062a, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632,
- 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632,
- 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0639, 0x0639,
- 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x063e, 0x063e, 0x063e,
- 0x063e, 0x063e, 0x063e, 0x0641, 0x0641, 0x0641, 0x0641, 0x0644,
- 0x0644, 0x0644, 0x0644, 0x0644, 0x0647, 0x0647, 0x0647, 0x0647,
- 0x0657, 0x0657, 0x065b, 0x065b, 0x065b, 0x065e, 0x065e, 0x065e,
- 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x066a, 0x066d,
- // Entry 200 - 23F
- 0x0670, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673,
- 0x0673, 0x0673, 0x0673, 0x0673, 0x0676, 0x0676, 0x0676, 0x0676,
- 0x0676, 0x0676, 0x067a, 0x067a, 0x0680, 0x0680, 0x0680, 0x0680,
- 0x0680, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0690, 0x0690,
- 0x0690, 0x0690, 0x0690, 0x0690, 0x0697, 0x0697, 0x069a, 0x069a,
- 0x069d, 0x069d, 0x069d, 0x069d, 0x06b0, 0x06b3, 0x06b3, 0x06b3,
- 0x06b3, 0x06b3, 0x06b3, 0x06b3, 0x06b8, 0x06b8, 0x06b8, 0x06b8,
- 0x06b8, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c4, 0x06c4, 0x06c4,
- // Entry 240 - 27F
- 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
- 0x06e3, 0x06e3, 0x06fc, 0x06fc, 0x0714, 0x0714, 0x0726, 0x0739,
- 0x074c, 0x075d, 0x076f, 0x0789, 0x07a1, 0x07aa, 0x07bd, 0x07bd,
- 0x07cf, 0x07de, 0x07ea, 0x07f2, 0x0807, 0x0819, 0x0819, 0x0824,
- 0x0838, 0x084b,
- },
- },
- { // gsw
- "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" +
- "ischAwarischAymaraAserbaidschanischBaschkirischWiissrussischBulgaari" +
- "schBislamaBambaraBengalischTibeetischBrötoonischBosnischKatalaanisch" +
- "TschetscheenischChamorroKorsischCreeTschechischChileslawischTschuwas" +
- "chischWalisischTänischTüütschMalediivischDschongkhaEweGriechischÄngl" +
- "ischEschperantoSchpanischEestnischBaskischPersischFulFinnischFidschi" +
- "anischFäröischFranzösischFriesischIirischSchottisch-GäälischGalizisc" +
- "hGuaraniGujaratiManx-GäälischHaussaHebräischHindiHiri-MotuKroazischH" +
- "aitischUngarischArmenischHereroInterlinguaIndonesischInterlingueIgbo" +
- "Sezuanischs YiInupiakIdoIisländischItaliänischInukitutJapanischJavan" +
- "ischGeorgischKongolesischKikuyu-SchpraachKwanyamaKasachischGröönländ" +
- "ischKambodschanischKannadaKoreaanischKanuri-SchpraachKaschmirischKur" +
- "dischKomi-SchpraachKornischKirgiisischLatiinLuxemburgischGanda-Schpr" +
- "aachLimburgischLingalaLaozischLitauischLubaLettischMadagassischMarsc" +
- "hallesischMaoriMazedonischMalayalamMongolischMarathiMalaiischMaltesi" +
- "schBirmanischNauruischNord-Ndebele-SchpraachNepalesischNdongaNiderlä" +
- "ndischNorwegisch NynorskNorwegisch BokmålSüüd-Ndebele-SchpraachNavaj" +
- "o-SchpraachChewa-SchpraachOkzitanischOjibwa-SchpraachOromoOrijaOssez" +
- "ischPandschabischPaliPolnischPaschtuPortugiisischQuechuaRätoromanisc" +
- "hRundi-SchpraachRumänischRussischRuandischSanschkritSardischSindhiNo" +
- "rd-SamischSangoSinghalesischSlowakischSlowenischSamoanischSchhonaSom" +
- "aliAlbanischSerbischSwaziSüüd-Sotho-SchpraachSundanesischSchwedischS" +
- "uaheliTamilischTeluguTadschikischThailändischTigrinjaTurkmenischTswa" +
- "na-SchpraachTongaischTürkischTsongaTatarischTahitischUigurischUkrain" +
- "ischUrduUsbekischVenda-SchpraachVietnamesischVolapükWallonischWolofX" +
- "hosaJiddischYorubaZhuangChineesischZuluAcehAcholiAdangmeAdygaiAfrihi" +
- "liAinuAkkadischAleutischSüüd-AltaischAltänglischAngikaAramääischArau" +
- "kanischArapahoArawakAschturianischAwadhiBelutschischBalinesischBasaa" +
- "BedauyeBembaBhodschpuriBikolischBiniBlackfoot-SchpraachBraj-BhakhaBu" +
- "rjatischBugineesischBlinCaddoKariibischAtsamCebuanoTschibtschaTschag" +
- "ataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheye" +
- "nneKoptischKrimtatarischKaschubischTakotaTargiinischDelaware-Schpraa" +
- "chSlaveyTogribTinkaTogriNidersorbischTualaMittelniderländischTiulaEf" +
- "ikischAltägyptischEkajukElamischMittelänglischEwondoPangwe-Schpraach" +
- "FilipinoFonMittelfranzösischAltfranzösischNordfriesischOschtfriesisc" +
- "hFriulischGaGayoGbayaGeezGilbertesischMittelhochtüütschAlthochtüütsc" +
- "hGondiMongondouGotischGreboAltgriechischSchwiizertüütschKutchinischH" +
- "aidaHawaiianischHiligaynonischHethitischMiaoObersorbischHupaIbanisch" +
- "IlokanoInguschischLojbanischJüüdisch-PersischJüüdisch-ArabischKaraka" +
- "lpakischKabylischKachin-SchpraachJjuKambaKawiKabardinischTyapKoroKha" +
- "sischSakischKimbundu-SchpraachKonkaniKosraeanischKpelle-SchpraachKar" +
- "atschaiisch-BalkarischKarelischOraon-SchpraachKumükischKutenai-Schpr" +
- "aachLadinoLahndanischLambanischLesgischMongoRotse-SchpraachLuba-Lulu" +
- "aLuiseno-SchpraachLunda-SchpraachLuo-SchpraachLushai-SchpraachMadure" +
- "sischKhottaMaithiliMakassarischManding-SchpraachMassai-SchpraachMoks" +
- "chamordwinischMandaresischMende-SchpraachMittelirischMicmac-Schpraac" +
- "hMinangkabau-SchpraachMandschurischMeithei-SchpraachMohawk-Schpraach" +
- "Mossi-SchpraachMehrschpraachigMuskogee-SchpraachMirandesischMarwaris" +
- "chErzyaNeapolitanischNidertüütschNewarischNias-SchpraachNiue-Schpraa" +
- "chNogaischAltnordischN’KoNord-Sotho-SchpraachAlt-NewariNyamwezi-Schp" +
- "raachNyankoleNyoroNzimaOsage-SchpraachOsmanischPangasinanischMittelp" +
- "ersischPampanggan-SchpraachPapiamentoPalauAltpersischPhönikischPonap" +
- "eanischAltprovenzalischRajasthaniOschterinsel-SchpraachRarotonganisc" +
- "hZigüünerschpraachAromunischSandawe-SchpraachJakutischSamaritanischS" +
- "asakSantaliSizilianischSchottischSelkupischAltirischSchan-SchpraachS" +
- "idamoSüüd-SamischLule-SamischInari-SamischSkolt-SamischSoninke-Schpr" +
- "aachSogdischSrananischSerer-SchpraachSukuma-SchpraachSusuSumerischAl" +
- "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" +
- "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" +
- "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" +
- "UdmurtischUgaritischMbundu-SchpraachRootVai-SchpraachWotischWalamo-S" +
- "chpraachWarayWasho-SchpraachKalmückischYao-SchpraachYapesischZapotek" +
- "ischBliss-SymboolZenagaZuni-SchpraachKän schpraachliche InhaltZazaÖs" +
- "chtriichischs TüütschSchwiizer HochtüütschAuschtralischs ÄnglischKan" +
- "adischs ÄnglischBritischs ÄnglischAmerikanischs ÄnglischLatiinamerik" +
- "anischs SchpanischIbeerischs SchpanischKanadischs FranzösischSchwiiz" +
- "er FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" +
- "isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells " +
- "Chineesisch",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
- 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008f,
- 0x0096, 0x009d, 0x00a7, 0x00b1, 0x00bd, 0x00c5, 0x00d1, 0x00e1,
- 0x00e9, 0x00f1, 0x00f5, 0x0100, 0x010d, 0x011b, 0x0124, 0x012c,
- 0x0135, 0x0141, 0x014b, 0x014e, 0x0158, 0x0161, 0x016c, 0x0176,
- 0x017f, 0x0187, 0x018f, 0x0192, 0x019a, 0x01a7, 0x01b1, 0x01bd,
- 0x01c6, 0x01cd, 0x01e2, 0x01eb, 0x01f2, 0x01fa, 0x0209, 0x020f,
- 0x0219, 0x021e, 0x0227, 0x0230, 0x0238, 0x0241, 0x024a, 0x0250,
- // Entry 40 - 7F
- 0x025b, 0x0266, 0x0271, 0x0275, 0x0283, 0x028a, 0x028d, 0x0299,
- 0x02a5, 0x02ad, 0x02b6, 0x02bf, 0x02c8, 0x02d4, 0x02e4, 0x02ec,
- 0x02f6, 0x0306, 0x0315, 0x031c, 0x0327, 0x0337, 0x0343, 0x034b,
- 0x0359, 0x0361, 0x036c, 0x0372, 0x037f, 0x038e, 0x0399, 0x03a0,
- 0x03a8, 0x03b1, 0x03b5, 0x03bd, 0x03c9, 0x03d8, 0x03dd, 0x03e8,
- 0x03f1, 0x03fb, 0x0402, 0x040b, 0x0415, 0x041f, 0x0428, 0x043e,
- 0x0449, 0x044f, 0x045d, 0x046f, 0x0481, 0x0499, 0x04a9, 0x04b8,
- 0x04c3, 0x04d3, 0x04d8, 0x04dd, 0x04e6, 0x04f3, 0x04f7, 0x04ff,
- // Entry 80 - BF
- 0x0506, 0x0513, 0x051a, 0x0528, 0x0537, 0x0541, 0x0549, 0x0552,
- 0x055c, 0x0564, 0x056a, 0x0576, 0x057b, 0x0588, 0x0592, 0x059c,
- 0x05a6, 0x05ad, 0x05b3, 0x05bc, 0x05c4, 0x05c9, 0x05df, 0x05eb,
- 0x05f5, 0x05fc, 0x0605, 0x060b, 0x0617, 0x0624, 0x062c, 0x0637,
- 0x0647, 0x0650, 0x0659, 0x065f, 0x0668, 0x0671, 0x067a, 0x0684,
- 0x0688, 0x0691, 0x06a0, 0x06ad, 0x06b5, 0x06bf, 0x06c4, 0x06c9,
- 0x06d1, 0x06d7, 0x06dd, 0x06e8, 0x06ec, 0x06f0, 0x06f6, 0x06fd,
- 0x0703, 0x0703, 0x070b, 0x070b, 0x070f, 0x0718, 0x0718, 0x0721,
- // Entry C0 - FF
- 0x0721, 0x0730, 0x073c, 0x0742, 0x074e, 0x0759, 0x0759, 0x0760,
- 0x0760, 0x0766, 0x0766, 0x0766, 0x0766, 0x0766, 0x0774, 0x0774,
- 0x077a, 0x0786, 0x0791, 0x0791, 0x0796, 0x0796, 0x0796, 0x0796,
- 0x079d, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07ad,
- 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07cd, 0x07cd, 0x07cd, 0x07d8,
- 0x07d8, 0x07d8, 0x07d8, 0x07e2, 0x07ee, 0x07ee, 0x07f2, 0x07f2,
- 0x07f7, 0x0801, 0x0801, 0x0806, 0x080d, 0x080d, 0x0818, 0x0825,
- 0x082f, 0x083e, 0x0845, 0x084c, 0x0855, 0x085d, 0x0865, 0x0865,
- // Entry 100 - 13F
- 0x086d, 0x086d, 0x087a, 0x0885, 0x088b, 0x0896, 0x0896, 0x08a8,
- 0x08ae, 0x08b4, 0x08b9, 0x08b9, 0x08be, 0x08cb, 0x08cb, 0x08d0,
- 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08e9, 0x08f1, 0x08f1, 0x08fe,
- 0x0904, 0x090c, 0x091b, 0x091b, 0x0921, 0x0921, 0x0931, 0x0939,
- 0x0939, 0x093c, 0x093c, 0x094e, 0x095d, 0x095d, 0x096a, 0x0978,
- 0x0981, 0x0983, 0x0983, 0x0983, 0x0987, 0x098c, 0x098c, 0x0990,
- 0x099d, 0x099d, 0x09b0, 0x09c0, 0x09c0, 0x09c5, 0x09ce, 0x09d5,
- 0x09da, 0x09e7, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a04, 0x0a09,
- // Entry 140 - 17F
- 0x0a09, 0x0a15, 0x0a15, 0x0a23, 0x0a2d, 0x0a31, 0x0a3d, 0x0a3d,
- 0x0a41, 0x0a49, 0x0a49, 0x0a50, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a65,
- 0x0a65, 0x0a65, 0x0a78, 0x0a8b, 0x0a8b, 0x0a99, 0x0aa2, 0x0ab2,
- 0x0ab5, 0x0aba, 0x0abe, 0x0aca, 0x0aca, 0x0ace, 0x0ace, 0x0ace,
- 0x0ace, 0x0ad2, 0x0ad2, 0x0ada, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1,
- 0x0ae1, 0x0ae1, 0x0af3, 0x0af3, 0x0afa, 0x0b06, 0x0b16, 0x0b2f,
- 0x0b2f, 0x0b2f, 0x0b38, 0x0b47, 0x0b47, 0x0b47, 0x0b47, 0x0b51,
- 0x0b62, 0x0b68, 0x0b68, 0x0b73, 0x0b7d, 0x0b85, 0x0b85, 0x0b85,
- // Entry 180 - 1BF
- 0x0b85, 0x0b85, 0x0b85, 0x0b8a, 0x0b99, 0x0b99, 0x0b99, 0x0ba3,
- 0x0bb4, 0x0bc3, 0x0bd0, 0x0be0, 0x0be0, 0x0be0, 0x0be0, 0x0beb,
- 0x0beb, 0x0bf1, 0x0bf9, 0x0c05, 0x0c16, 0x0c26, 0x0c26, 0x0c38,
- 0x0c44, 0x0c53, 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c6f,
- 0x0c84, 0x0c91, 0x0ca2, 0x0cb2, 0x0cc1, 0x0cc1, 0x0cc1, 0x0cd0,
- 0x0ce2, 0x0cee, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cfd, 0x0cfd, 0x0cfd,
- 0x0d0b, 0x0d0b, 0x0d19, 0x0d22, 0x0d30, 0x0d3e, 0x0d3e, 0x0d3e,
- 0x0d3e, 0x0d46, 0x0d51, 0x0d51, 0x0d57, 0x0d6b, 0x0d6b, 0x0d75,
- // Entry 1C0 - 1FF
- 0x0d87, 0x0d8f, 0x0d94, 0x0d99, 0x0da8, 0x0db1, 0x0dbf, 0x0dcd,
- 0x0de1, 0x0deb, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0dfb, 0x0dfb,
- 0x0e06, 0x0e06, 0x0e06, 0x0e12, 0x0e12, 0x0e22, 0x0e22, 0x0e22,
- 0x0e2c, 0x0e42, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e63, 0x0e63,
- 0x0e63, 0x0e63, 0x0e6d, 0x0e6d, 0x0e7e, 0x0e87, 0x0e94, 0x0e94,
- 0x0e99, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eac, 0x0eb6, 0x0eb6,
- 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0ec0, 0x0ec0, 0x0ec9, 0x0ec9,
- 0x0ec9, 0x0ed8, 0x0ed8, 0x0ede, 0x0ede, 0x0ede, 0x0eec, 0x0ef8,
- // Entry 200 - 23F
- 0x0f05, 0x0f12, 0x0f23, 0x0f2b, 0x0f35, 0x0f44, 0x0f44, 0x0f44,
- 0x0f54, 0x0f58, 0x0f61, 0x0f61, 0x0f61, 0x0f6b, 0x0f72, 0x0f72,
- 0x0f72, 0x0f77, 0x0f77, 0x0f87, 0x0f96, 0x0f9b, 0x0fa8, 0x0fb5,
- 0x0fb5, 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd8, 0x0fe8, 0x0ff6, 0x0ff6,
- 0x0ff6, 0x0ff6, 0x1009, 0x1009, 0x101a, 0x1026, 0x1026, 0x102f,
- 0x102f, 0x1039, 0x1043, 0x1053, 0x1057, 0x1064, 0x1064, 0x1064,
- 0x1064, 0x1064, 0x106b, 0x106b, 0x106b, 0x106b, 0x107b, 0x1080,
- 0x108f, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, 0x10a8, 0x10b1,
- // Entry 240 - 27F
- 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10bc, 0x10c9, 0x10c9, 0x10cf,
- 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x10fb, 0x1115, 0x112c,
- 0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, 0x11b5, 0x11b5,
- 0x11cc, 0x11e2, 0x11e2, 0x11ed, 0x1209, 0x1220, 0x122a, 0x1239,
- 0x1251, 0x126a,
- },
- },
- { // gu
- guLangStr,
- guLangIdx,
- },
- { // guz
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluEkegusii",
- []uint16{ // 318 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171,
- },
- },
- { // gv
- "Gaelg",
- []uint16{ // 55 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005,
- },
- },
- { // ha
- "AkanAmharikLarabciBelarusanciBulgaranciBengaliHarshen CakJamusanciGirkan" +
- "ciTuranciIspaniyanciParisanciFaransanciHausaHarshen HindiHarshen Hun" +
- "gariHarshen IndunusiyaInyamuranciItaliyanciJapananciJabananciHarshen" +
- " KimarHarshen KoreyaHarshen MalaiBurmanciNepaliHolanciPunjabiHarshen" +
- " PolanHarshen PortugalRomaniyanciRashanciKiniyaruwandaSomaliHarshen " +
- "SuwedanTamilThaiHarshen TurkiyyaHarshen YukurenHarshen UrduHarshen B" +
- "iyetinamYarbanciHarshen SinHarshen Zulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0027,
- 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0051, 0x0051, 0x005c,
- 0x005c, 0x005c, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0074,
- 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090,
- // Entry 40 - 7F
- 0x0090, 0x00a2, 0x00a2, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00b7, 0x00b7, 0x00c0, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
- 0x00c9, 0x00c9, 0x00d6, 0x00d6, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- 0x00e4, 0x00e4, 0x00e4, 0x00f1, 0x00f1, 0x00f9, 0x00f9, 0x00f9,
- 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x011a,
- // Entry 80 - BF
- 0x011a, 0x012a, 0x012a, 0x012a, 0x012a, 0x0135, 0x013d, 0x014a,
- 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
- 0x014a, 0x014a, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150,
- 0x015f, 0x015f, 0x0164, 0x0164, 0x0164, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0187,
- 0x0193, 0x0193, 0x0193, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
- 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01c3,
- },
- },
- { // haw
- "ʻAlapiaWaleKenemakaKelemāniaHelenePelekāniaPanioloPīkīPalaniʻAilikiHeber" +
- "aʻĪkāliaKepanīKōleaLākinaMāoriHōlaniPukikīLūkiaKāmoaKuekeneTongaPola" +
- "polaWiekanamaPākēKuikilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kū" +
- "pono ʻole paha ka ʻōleloPelekāne Nū HōlaniPelekāne KanakāPelekānia P" +
- "ekekānePelekānia ʻAmelikaPalani KanakāKuikilaniPukikī PalakilaPākē H" +
- "oʻomaʻalahi ʻiaPākē Kuʻuna",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000c, 0x0014,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x002e, 0x002e, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x0041,
- 0x0041, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
- // Entry 40 - 7F
- 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
- 0x0059, 0x0059, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d,
- 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0073, 0x0073,
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
- 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
- 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
- // Entry 80 - BF
- 0x007a, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d,
- 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094,
- 0x0094, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1,
- 0x00a1, 0x00a1, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00aa, 0x00aa, 0x00aa, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- // Entry C0 - FF
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- // Entry 100 - 13F
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
- // Entry 140 - 17F
- 0x00c4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- // Entry 180 - 1BF
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- // Entry 1C0 - 1FF
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- // Entry 200 - 23F
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
- 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- // Entry 240 - 27F
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x011c, 0x012d, 0x0141, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155,
- 0x0163, 0x016c, 0x016c, 0x016c, 0x017c, 0x017c, 0x017c, 0x017c,
- 0x0196, 0x01a4,
- },
- },
- { // he
- heLangStr,
- heLangIdx,
- },
- { // hi
- hiLangStr,
- hiLangIdx,
- },
- { // hr
- hrLangStr,
- hrLangIdx,
- },
- { // hsb
- "afaršćinaabchazišćinaafrikaanšćinaakanšćinaamharšćinaaragonšćinaarabšćin" +
- "aasamšćinaawaršćinaaymaršćinaazerbajdźanšćinabaškiršćinaběłorušćinab" +
- "ołharšćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišći" +
- "nakatalanšćinačamoršćinakorsišćinakričěšćinawalizišćinadanšćinaněmči" +
- "nadivehidzongkhaewegrjekšćinajendźelšćinaesperantošpanišćinaestišćin" +
- "abaskišćinapersišćinafinšćinafidźišćinafäröšćinafrancošćinafrizišćin" +
- "airšćinašotiska gelšćinagalicišćinaguaranigujaratimanšćinahausahebre" +
- "jšćinahindišćinachorwatšćinahaitišćinamadźaršćinaarmenšćinainterling" +
- "uaindonešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinaj" +
- "apanšćinajavašćinageorgišćinakikuyukazachšćinagröndlandšćinakhmeršći" +
- "nakannadšćinakorejšćinakašmiršćinakurdišćinakornišćinakirgišćinałaćo" +
- "nšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinalub" +
- "a-katangaletišćinamalagassišćinamaoršćinamakedonšćinamalajamšćinamon" +
- "golšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinasewjero-n" +
- "debelenepalšćinanižozemšćinanorwegšćina (nynorsk)norwegšćina (bokmål" +
- ")navahookcitanšćinaoromoorijšćinapandźabšćinapólšćinapaštunšćinaport" +
- "ugalšćinakečuaretoromanšćinakirundišćinarumunšćinarušćinakinjarwanda" +
- "sanskritsardinšćinasindhišćinasewjerosamišćinasangosinghalšćinasłowa" +
- "kšćinasłowjenšćinasamoašćinašonašćinasomališćinaalbanšćinaserbišćina" +
- "siswatijužnosotšćina (Sesotho)sundanezišćinašwedšćinasuahelšćinatami" +
- "lšćinatelugutadźikšćinathailandšćinatigrinšćinaturkmenšćinatswanaton" +
- "gašćinaturkowšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaur" +
- "dušćinauzbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajor" +
- "ubašćinazhuangchinšćinazulušćinaaghemšćinaanglosakšćinaarawkanšćinap" +
- "areasturšćinabembabenabodobuginezišćinachigachoctawšćinacherokeesora" +
- "nitaitazarmadelnjoserbšćinadualajola-fonyiembufilipinšćinagagauzišći" +
- "nagotšćinašwicarska němčinagusiihawaiišćinahornjoserbšćinangombamach" +
- "amekabylšćinakambamakondekapverdšćinakoyra chiinikalenjinpermska kom" +
- "išćinakonkanišambalabafialangilakotaluoluhyamasaišćinamerumauriciska" +
- " kreolšćinamakhuwa-meettometa’mohawkšćinamundangkriknamadelnjoněmčin" +
- "akwasion’konuernyankoleprušćinakʼicheʼromborwasamburusangusicilšćina" +
- "senakoyra sennitašelhitjužnosamišćinalule-samišćinainari-samišćinask" +
- "olt-samišćinasaterfrizišćinakongoska suahelšćinatesotasawaqtamazight" +
- " (srjedźny Marokko)njeznata rěčvaivunjosogatamazightžadyn rěčny wobs" +
- "ahmoderna wysokoarabšćinaawstriska němčinašwicarska wysokoněmčinaaws" +
- "tralska jendźelšćinakanadiska jendźelšćinabritiska jendźelšćinaameri" +
- "ska jendźelšćinałaćonskoameriska španišćinaeuropska španišćinamexisk" +
- "a španišćinakanadiska francošćinašwicarska francošćinaflamšćinabrazi" +
- "lska portugalšćinaeuropska portugalšćinamoldawšćinaserbochorwatšćina" +
- "chinšćina (zjednorjena)chinšćina (tradicionalna)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000b, 0x0019, 0x0019, 0x0028, 0x0033, 0x003f, 0x004c,
- 0x0057, 0x0062, 0x006d, 0x0079, 0x008c, 0x009a, 0x00a9, 0x00b7,
- 0x00c4, 0x00cb, 0x00d8, 0x00e4, 0x00f1, 0x00fd, 0x010b, 0x010b,
- 0x0118, 0x0124, 0x0127, 0x0132, 0x0132, 0x0132, 0x013f, 0x0149,
- 0x0152, 0x0158, 0x0160, 0x0163, 0x016f, 0x017e, 0x0187, 0x0194,
- 0x019f, 0x01ab, 0x01b7, 0x01b7, 0x01c1, 0x01ce, 0x01db, 0x01e8,
- 0x01f4, 0x01fd, 0x0210, 0x021d, 0x0224, 0x022c, 0x0236, 0x023b,
- 0x0248, 0x0254, 0x0254, 0x0262, 0x026e, 0x027c, 0x0288, 0x0288,
- // Entry 40 - 7F
- 0x0293, 0x02a0, 0x02a0, 0x02a4, 0x02ae, 0x02b5, 0x02b8, 0x02c5,
- 0x02d0, 0x02dc, 0x02e8, 0x02f3, 0x0300, 0x0300, 0x0306, 0x0306,
- 0x0313, 0x0324, 0x0330, 0x033d, 0x0349, 0x0349, 0x0357, 0x0363,
- 0x0363, 0x036f, 0x037b, 0x0389, 0x0399, 0x03a4, 0x03b1, 0x03b8,
- 0x03c2, 0x03ce, 0x03da, 0x03e5, 0x03f5, 0x03f5, 0x0400, 0x040e,
- 0x041c, 0x0429, 0x0436, 0x0442, 0x044e, 0x045a, 0x0466, 0x0475,
- 0x0481, 0x0481, 0x0490, 0x04a7, 0x04be, 0x04be, 0x04c4, 0x04c4,
- 0x04d2, 0x04d2, 0x04d7, 0x04e2, 0x04e2, 0x04f1, 0x04f1, 0x04fc,
- // Entry 80 - BF
- 0x050a, 0x0519, 0x051f, 0x052f, 0x053d, 0x0549, 0x0552, 0x055d,
- 0x0565, 0x0572, 0x057f, 0x0591, 0x0596, 0x05a4, 0x05b2, 0x05c1,
- 0x05cd, 0x05d9, 0x05e6, 0x05f2, 0x05fe, 0x0605, 0x061f, 0x062f,
- 0x063b, 0x0648, 0x0654, 0x065a, 0x0668, 0x0677, 0x0684, 0x0692,
- 0x0698, 0x06a4, 0x06b1, 0x06b7, 0x06c3, 0x06d0, 0x06dc, 0x06e9,
- 0x06f4, 0x0700, 0x0700, 0x070e, 0x0716, 0x0722, 0x0727, 0x072c,
- 0x0737, 0x0744, 0x074a, 0x0755, 0x0760, 0x0760, 0x0760, 0x0760,
- 0x0760, 0x0760, 0x0760, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c,
- // Entry C0 - FF
- 0x076c, 0x076c, 0x077b, 0x077b, 0x077b, 0x0789, 0x0789, 0x0789,
- 0x0789, 0x0789, 0x0789, 0x0789, 0x078d, 0x078d, 0x0799, 0x0799,
- 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799,
- 0x0799, 0x079e, 0x079e, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2,
- 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2,
- 0x07a2, 0x07a6, 0x07a6, 0x07a6, 0x07b5, 0x07b5, 0x07b5, 0x07b5,
- 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07ba, 0x07ba, 0x07ba,
- 0x07ba, 0x07ba, 0x07ba, 0x07c8, 0x07c8, 0x07d0, 0x07d0, 0x07d6,
- // Entry 100 - 13F
- 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07db, 0x07db,
- 0x07db, 0x07db, 0x07db, 0x07e0, 0x07e0, 0x07f1, 0x07f1, 0x07f6,
- 0x07f6, 0x0800, 0x0800, 0x0800, 0x0804, 0x0804, 0x0804, 0x0804,
- 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0812,
- 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812,
- 0x0812, 0x0812, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x082a,
- 0x082a, 0x082a, 0x083e, 0x083e, 0x083e, 0x0843, 0x0843, 0x0843,
- // Entry 140 - 17F
- 0x0843, 0x0850, 0x0850, 0x0850, 0x0850, 0x0850, 0x0861, 0x0861,
- 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861,
- 0x0867, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087a, 0x087a,
- 0x087a, 0x087f, 0x087f, 0x087f, 0x087f, 0x087f, 0x0886, 0x0894,
- 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x08a0, 0x08a0, 0x08a0,
- 0x08a0, 0x08a8, 0x08a8, 0x08bb, 0x08c2, 0x08c2, 0x08c2, 0x08c2,
- 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08ca, 0x08cf, 0x08cf, 0x08cf,
- 0x08cf, 0x08cf, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4,
- // Entry 180 - 1BF
- 0x08d4, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da,
- 0x08da, 0x08da, 0x08dd, 0x08dd, 0x08e2, 0x08e2, 0x08e2, 0x08e2,
- 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08ee, 0x08ee, 0x08ee,
- 0x08ee, 0x08ee, 0x08f2, 0x0909, 0x0909, 0x0917, 0x091e, 0x091e,
- 0x091e, 0x091e, 0x091e, 0x092b, 0x092b, 0x092b, 0x0932, 0x0932,
- 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936,
- 0x0936, 0x093a, 0x0949, 0x0949, 0x0949, 0x0949, 0x0949, 0x094f,
- 0x094f, 0x094f, 0x094f, 0x094f, 0x0955, 0x0955, 0x0959, 0x0959,
- // Entry 1C0 - 1FF
- 0x0959, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961,
- 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961,
- 0x0961, 0x0961, 0x0961, 0x0961, 0x096b, 0x096b, 0x0974, 0x0974,
- 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, 0x0979, 0x0979, 0x0979,
- 0x0979, 0x0979, 0x0979, 0x097c, 0x097c, 0x097c, 0x097c, 0x0983,
- 0x0983, 0x0983, 0x0983, 0x0983, 0x0988, 0x0994, 0x0994, 0x0994,
- 0x0994, 0x0994, 0x0998, 0x0998, 0x0998, 0x09a3, 0x09a3, 0x09a3,
- 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09bd, 0x09cd,
- // Entry 200 - 23F
- 0x09de, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x0a00,
- 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a16, 0x0a16, 0x0a16, 0x0a16,
- 0x0a16, 0x0a16, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a,
- 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a,
- 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a21, 0x0a21,
- 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a4c, 0x0a4f, 0x0a4f, 0x0a4f,
- 0x0a4f, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a54, 0x0a54, 0x0a54, 0x0a54,
- 0x0a54, 0x0a54, 0x0a54, 0x0a54, 0x0a54, 0x0a58, 0x0a58, 0x0a58,
- // Entry 240 - 27F
- 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58,
- 0x0a61, 0x0a61, 0x0a76, 0x0a76, 0x0a8f, 0x0a8f, 0x0aa2, 0x0abc,
- 0x0ad6, 0x0aef, 0x0b07, 0x0b1f, 0x0b3f, 0x0b55, 0x0b6a, 0x0b6a,
- 0x0b81, 0x0b99, 0x0b99, 0x0ba4, 0x0bbd, 0x0bd5, 0x0be2, 0x0bf5,
- 0x0c0e, 0x0c29,
- },
- },
- { // hu
- huLangStr,
- huLangIdx,
- },
- { // hy
- hyLangStr,
- hyLangIdx,
- },
- { // id
- idLangStr,
- idLangIdx,
- },
- { // ig
- "AkanAmariikịArabiikịBelaruusuBọlụgarịaBengaliCheekịJamaanGiriikịOyiboPan" +
- "yaPeshanFụrenchAwụsaHindiMagịyaIndonisiaIgboItaloJapaneseJavaKeme, E" +
- "titiKoriaMaleyiMịanmaNepaliDọọchPunjabiPoliishiPotokiRumeniaRọshanRụ" +
- "wandaSomaliSụwidiishiTamụlụTaịTọkiishiUkureenịUruduViyetịnaamụYoruba" +
- "MandarịịnịZulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000e, 0x000e,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0030,
- 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
- 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x004e, 0x0053, 0x0053, 0x0058,
- 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0067,
- 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x006e,
- 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007b, 0x007b, 0x007b,
- // Entry 40 - 7F
- 0x007b, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,
- 0x008d, 0x008d, 0x0095, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00a9, 0x00a9, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00b7, 0x00b7,
- 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d5,
- // Entry 80 - BF
- 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00f3,
- 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3,
- 0x00f3, 0x00f3, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
- 0x0105, 0x0105, 0x010f, 0x010f, 0x010f, 0x0114, 0x0114, 0x0114,
- 0x0114, 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128,
- 0x012d, 0x012d, 0x012d, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
- 0x013c, 0x0142, 0x0142, 0x0152, 0x0156,
- },
- },
- { // ii
- "ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, 0x0012, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- // Entry 40 - 7F
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x003c, 0x003c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- // Entry 80 - BF
- 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry C0 - FF
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 100 - 13F
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 140 - 17F
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 180 - 1BF
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 1C0 - 1FF
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 200 - 23F
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- // Entry 240 - 27F
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0093, 0x00a2,
- },
- },
- { // is
- isLangStr,
- isLangIdx,
- },
- { // it
- itLangStr,
- itLangIdx,
- },
- { // ja
- jaLangStr,
- jaLangIdx,
- },
- { // jgo
- "AlâbɛNjámanŊgɛlɛ̂kAŋgɛlúshiFɛlánciShinwâNdaꞌacú-pʉɔ yi pɛ́ ká kɛ́ jí",
- []uint16{ // 557 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x0019, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- // Entry 40 - 7F
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- // Entry 80 - BF
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- // Entry C0 - FF
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- // Entry 100 - 13F
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- // Entry 140 - 17F
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- // Entry 180 - 1BF
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- // Entry 1C0 - 1FF
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- // Entry 200 - 23F
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x005c,
- },
- },
- { // jmc
- "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
- "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
- "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
- "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
- "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
- "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKim" +
- "achame",
- []uint16{ // 338 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
- 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
- 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
- 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
- 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
- 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
- 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
- // Entry 80 - BF
- 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
- 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
- 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
- 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
- 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry C0 - FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 100 - 13F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 140 - 17F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x01a2,
- },
- },
- { // ka
- kaLangStr,
- kaLangIdx,
- },
- { // kab
- "TakanitTamahrictTaɛrabtTabilarusitTabulgaritTabengalitTačikitTalmantTagr" +
- "ikitTaglizitTaspenyulitTafarisitTafransistTahwasitTahenditTahungarit" +
- "TandunisitTigbutTaṭalyanitTajapunitTajavanitTakemritTakuritTamalawit" +
- "TaburmisitTanipalitTadučitTapunjabitTapulunitTapurtugalitTarumanitTa" +
- "rusitTaruwanditTaṣumalitTaswiditTaṭamulitTaṭaylunditTaṭurkitTukranit" +
- "TurdutTabyiṭnamitTayurubitTacinwat, TamundarintTazulutTaqbaylit",
- []uint16{ // 343 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0023, 0x002d,
- 0x002d, 0x002d, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
- 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
- 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0056, 0x0056, 0x0061,
- 0x0061, 0x0061, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0074,
- 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c,
- 0x007c, 0x0084, 0x0084, 0x0084, 0x0084, 0x008e, 0x008e, 0x008e,
- // Entry 40 - 7F
- 0x008e, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e,
- 0x00aa, 0x00aa, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00de, 0x00de, 0x00de,
- 0x00e7, 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
- 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f9, 0x00f9, 0x0102,
- // Entry 80 - BF
- 0x0102, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x011e, 0x0128,
- 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128,
- 0x0128, 0x0128, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
- 0x013b, 0x013b, 0x0146, 0x0146, 0x0146, 0x0153, 0x0153, 0x0153,
- 0x0153, 0x0153, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x0165,
- 0x016b, 0x016b, 0x016b, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
- 0x0178, 0x0181, 0x0181, 0x0196, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- // Entry C0 - FF
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- // Entry 100 - 13F
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- // Entry 140 - 17F
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01a6,
- },
- },
- { // kam
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluKikamba",
- []uint16{ // 346 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 140 - 17F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0170,
- },
- },
- { // kde
- "ChakanChamhaliChalabuChibelalusiChibulgaliaChibanglaChichechiChidyeluman" +
- "iChigilichiChiingelezaChihispaniaChiajemiChifalansaChihausaChihindiC" +
- "hihungaliChiiongonesiaChiigboChiitalianoChidyapaniChidyavaChikambodi" +
- "aChikoleaChimalesiaChibulmaChinepaliChiholanziChipunjabiChipolandiCh" +
- "ilenoChilomaniaChilusiChinyalwandaChisomaliChiswidiChitamilChitailan" +
- "diChituluchiChiuklaniaChiulduChivietinamuChiyolubaChichinaChizuluChi" +
- "makonde",
- []uint16{ // 351 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x002b,
- 0x002b, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
- 0x0049, 0x0049, 0x0049, 0x0049, 0x0053, 0x005e, 0x005e, 0x0069,
- 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0083,
- 0x0083, 0x008b, 0x008b, 0x008b, 0x008b, 0x0095, 0x0095, 0x0095,
- // Entry 40 - 7F
- 0x0095, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00b4, 0x00b4, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb,
- 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
- 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112,
- // Entry 80 - BF
- 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136,
- 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
- 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
- 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
- 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry C0 - FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 100 - 13F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 140 - 17F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x01a3,
- },
- },
- { // kea
- "abkaziuafrikanerakanamarikuarabiasamesaimaraazerbaijanubaxkirbielorusubú" +
- "lgarubambarabengalitibetanubretãubosniukatalãutxetxenukórsikutxekutx" +
- "uvaxigalesdinamarkesalimãudzonkaevegreguinglessperantuspanholstonian" +
- "ubaskupersafinlandesfijianufaroesfransesfrisiu osidentalirlandesgale" +
- "guguaranigujaratimanksauzaebraikuindikroataaitianuúngaruarméniuindon" +
- "éziuibonuosuislandesitalianuinuktitutjaponesjavanesjorjianukikuiuka" +
- "zakgroenlandeskmerkanareskorianukaxmirakurdukórnikukirgizlatinluxemb" +
- "urgeslugandalausianulituanesletãumalgaximaorimasedoniumalaialammarat" +
- "imalaiumaltesbirmanesnepalesolandesnorueges nynorsknorueges bokmålor" +
- "omooriyapandjabipulakupaxtopurtugeskexuaromanxirumenurusukiniaruanda" +
- "sanskritusindisingalesslovakusloveniusomalialbanessérviusundanessuek" +
- "usuaílitamiltelugutajiktailandestigriniaturkmenutonganesturkutatarui" +
- "gurukranianuurduuzbekivietnamitauolofkozaiorubaxineszuluaghemaraukan" +
- "uasubembabenabodoxigaxerokikurdu sentraltaitazarmasórbiu baxudualajo" +
- "la-fonyiembufilipinugagauzalimãu di Suisagusiiavaianusórbiu altuñomb" +
- "amatxamekabilakambakabuverdianukoira txiinikalenjinkomi-permiakkonka" +
- "nibafiakuaziokitxekoiraboro seniinari samisuaíli kongolestamazait di" +
- " Atlas Sentrallingua diskonxedusem konteudo linguistikuarabi mudernu" +
- "alimãu austriakualtu alimãu suisuingles australianuingles kanadianui" +
- "ngles britanikuingles merkanuspanhol latinu-merkanuspanhol europeusp" +
- "anhol mexikanufranses kanadianufranses suisuflamengupurtuges brazile" +
- "rupurtuges europeuxines simplifikaduxines tradisional",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0014, 0x001b, 0x001b,
- 0x0020, 0x0026, 0x0026, 0x002c, 0x0037, 0x003d, 0x0046, 0x004e,
- 0x004e, 0x0055, 0x005c, 0x0064, 0x006b, 0x0071, 0x0079, 0x0081,
- 0x0081, 0x0089, 0x0089, 0x008e, 0x008e, 0x0095, 0x009a, 0x00a4,
- 0x00ab, 0x00ab, 0x00b1, 0x00b4, 0x00b9, 0x00bf, 0x00c7, 0x00ce,
- 0x00d6, 0x00db, 0x00e0, 0x00e0, 0x00e9, 0x00f0, 0x00f6, 0x00fd,
- 0x010d, 0x0115, 0x0115, 0x011b, 0x0122, 0x012a, 0x012f, 0x0133,
- 0x013a, 0x013e, 0x013e, 0x0144, 0x014b, 0x0152, 0x015a, 0x015a,
- // Entry 40 - 7F
- 0x015a, 0x0164, 0x0164, 0x0167, 0x016c, 0x016c, 0x016c, 0x0174,
- 0x017c, 0x0185, 0x018c, 0x0193, 0x019b, 0x019b, 0x01a1, 0x01a1,
- 0x01a6, 0x01b1, 0x01b5, 0x01bc, 0x01c3, 0x01c3, 0x01ca, 0x01cf,
- 0x01cf, 0x01d7, 0x01dd, 0x01e2, 0x01ed, 0x01f4, 0x01f4, 0x01f4,
- 0x01fc, 0x0204, 0x0204, 0x020a, 0x0211, 0x0211, 0x0216, 0x021f,
- 0x0228, 0x0228, 0x022e, 0x0234, 0x023a, 0x0242, 0x0242, 0x0242,
- 0x0249, 0x0249, 0x0250, 0x0260, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0275, 0x027a, 0x027a, 0x0282, 0x0282, 0x0288,
- // Entry 80 - BF
- 0x028d, 0x0295, 0x029a, 0x02a1, 0x02a1, 0x02a7, 0x02ab, 0x02b6,
- 0x02bf, 0x02bf, 0x02c4, 0x02c4, 0x02c4, 0x02cc, 0x02d3, 0x02db,
- 0x02db, 0x02db, 0x02e1, 0x02e8, 0x02ef, 0x02ef, 0x02ef, 0x02f7,
- 0x02fc, 0x0303, 0x0308, 0x030e, 0x0313, 0x031c, 0x0324, 0x032c,
- 0x032c, 0x0334, 0x0339, 0x0339, 0x033e, 0x033e, 0x0343, 0x034c,
- 0x0350, 0x0356, 0x0356, 0x0360, 0x0360, 0x0360, 0x0365, 0x0369,
- 0x0369, 0x036f, 0x036f, 0x0374, 0x0378, 0x0378, 0x0378, 0x0378,
- 0x0378, 0x0378, 0x0378, 0x037d, 0x037d, 0x037d, 0x037d, 0x037d,
- // Entry C0 - FF
- 0x037d, 0x037d, 0x037d, 0x037d, 0x037d, 0x0385, 0x0385, 0x0385,
- 0x0385, 0x0385, 0x0385, 0x0385, 0x0388, 0x0388, 0x0388, 0x0388,
- 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388,
- 0x0388, 0x038d, 0x038d, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
- 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
- 0x0391, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395,
- 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0399, 0x0399, 0x0399,
- 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x039f, 0x039f, 0x03ac,
- // Entry 100 - 13F
- 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03b1, 0x03b1,
- 0x03b1, 0x03b1, 0x03b1, 0x03b6, 0x03b6, 0x03c2, 0x03c2, 0x03c7,
- 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03d5, 0x03d5, 0x03d5, 0x03d5,
- 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03dd,
- 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd,
- 0x03dd, 0x03dd, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3,
- 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3,
- 0x03e3, 0x03e3, 0x03f3, 0x03f3, 0x03f3, 0x03f8, 0x03f8, 0x03f8,
- // Entry 140 - 17F
- 0x03f8, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x040b, 0x040b,
- 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b,
- 0x0411, 0x0418, 0x0418, 0x0418, 0x0418, 0x0418, 0x041e, 0x041e,
- 0x041e, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x042f,
- 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x0443, 0x0443, 0x044f, 0x0456, 0x0456, 0x0456, 0x0456,
- 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- // Entry 180 - 1BF
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0461,
- 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
- // Entry 1C0 - 1FF
- 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
- 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
- 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0466, 0x0466,
- 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
- 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
- 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
- 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0474, 0x0474, 0x0474,
- 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474,
- // Entry 200 - 23F
- 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e,
- 0x047e, 0x047e, 0x047e, 0x047e, 0x048e, 0x048e, 0x048e, 0x048e,
- 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
- 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
- 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
- 0x04a7, 0x04a7, 0x04a7, 0x04a7, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
- 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
- 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
- // Entry 240 - 27F
- 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
- 0x04b8, 0x04b8, 0x04d0, 0x04d0, 0x04dd, 0x04dd, 0x04ee, 0x0500,
- 0x0512, 0x0522, 0x0532, 0x0540, 0x0556, 0x0565, 0x0575, 0x0575,
- 0x0586, 0x0593, 0x0593, 0x059b, 0x05ad, 0x05bd, 0x05bd, 0x05bd,
- 0x05cf, 0x05e0,
- },
- },
- { // khq
- "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
- " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
- "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
- "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" +
- "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" +
- "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" +
- "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" +
- "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " +
- "MandareŋJulu senniKoyra ciini",
- []uint16{ // 358 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
- 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
- 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
- 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
- // Entry 40 - 7F
- 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f,
- 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159,
- 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175,
- // Entry 80 - BF
- 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
- 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db,
- 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2,
- 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a,
- 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry C0 - FF
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 100 - 13F
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 140 - 17F
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0244,
- },
- },
- { // ki
- "KiakanKiamhariKĩarabuKibelarusiKibulgariaKibanglaKicheckiKĩnjeremaniKigi" +
- "rikiGĩthungũKihispaniaKiajemiKĩbaranjaKihausaKĩhĩndĩKihungariKiindon" +
- "esiaKiigboKĩtalianoKĩnjabaniKijavaGikuyuKikambodiaKikoreaKimalesiaKi" +
- "burmaKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKĩraciaKinyar" +
- "wandaKĩcumarĩKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietin" +
- "amuKiyorubaKĩcainaKizulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0058, 0x0058, 0x0062,
- 0x0062, 0x0062, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0073,
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a,
- 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x008d, 0x008d, 0x008d,
- // Entry 40 - 7F
- 0x008d, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e,
- 0x00a8, 0x00a8, 0x00b2, 0x00b8, 0x00b8, 0x00b8, 0x00be, 0x00be,
- 0x00be, 0x00be, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
- 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
- 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
- 0x00cf, 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df,
- 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0,
- 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f9, 0x00f9, 0x0102,
- // Entry 80 - BF
- 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0119, 0x0124,
- 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
- 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x0135, 0x0135, 0x013c, 0x013c, 0x013c, 0x0146, 0x0146, 0x0146,
- 0x0146, 0x0146, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x0157,
- 0x015d, 0x015d, 0x015d, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0170, 0x0170, 0x0178, 0x017e,
- },
- },
- { // kk
- kkLangStr,
- kkLangIdx,
- },
- { // kkj
- "yamannumbu buykakɔ",
- []uint16{ // 361 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- // Entry 40 - 7F
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- // Entry 80 - BF
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- // Entry C0 - FF
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- // Entry 100 - 13F
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- // Entry 140 - 17F
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x0013,
- },
- },
- { // kl
- "kalaallisut",
- []uint16{ // 82 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000b,
- },
- },
- { // kln
- "kutitab Akakutitab Amariekkutitab Arabukkutitab Belarusakutitab Bulgaria" +
- "kutitab Bengalikutitab Chekkutitab Chermanikutitab Greecekutitab Uin" +
- "geresakutitab Espianikkutitab Persiakutitab Kifaransakutitab Hausaku" +
- "titab Maindiikkutitab Hangarikutitab Indonesiakutitab Igbokutitab Ta" +
- "lianekkutitap Japankutitap Javanesekutitab Kher nebo Kwenkutitab Kor" +
- "eakutitab Malaykutitab Burmakutitab Nepalikutitab Boakutitab Punjabk" +
- "utitap Polandkutitab Portugalkutitab Romaniekkutitab Russiakutitab K" +
- "inyarwandakutitab Somaliekkutitab Swedenkutitab Tamilkutitab Thailan" +
- "dkutitab Turkeykutitab Ukrainekutitab Urdukutitab Vietnamkutitab Yor" +
- "ubakutitab Chinakutitab ZuluKalenjin",
- []uint16{ // 362 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001a, 0x001a,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0038, 0x0048,
- 0x0048, 0x0048, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0081, 0x0092, 0x0092, 0x00a2,
- 0x00a2, 0x00a2, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c1,
- 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ce,
- 0x00ce, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ed, 0x00ed, 0x00ed,
- // Entry 40 - 7F
- 0x00ed, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
- 0x011a, 0x011a, 0x0127, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
- 0x0137, 0x0137, 0x014d, 0x014d, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x015a, 0x0167, 0x0167, 0x0174, 0x0174, 0x0174,
- 0x0182, 0x0182, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
- 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x019b, 0x019b, 0x01a9,
- // Entry 80 - BF
- 0x01a9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01d7, 0x01ea,
- 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea,
- 0x01ea, 0x01ea, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa,
- 0x0208, 0x0208, 0x0215, 0x0215, 0x0215, 0x0225, 0x0225, 0x0225,
- 0x0225, 0x0225, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0242,
- 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, 0x025d, 0x025d,
- 0x025d, 0x026b, 0x026b, 0x0278, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- // Entry C0 - FF
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- // Entry 100 - 13F
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- // Entry 140 - 17F
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x028c,
- },
- },
- { // km
- kmLangStr,
- kmLangIdx,
- },
- { // kn
- knLangStr,
- knLangIdx,
- },
- { // ko
- koLangStr,
- koLangIdx,
- },
- { // kok
- "अफारअबखेज़ियनअफ्रिकान्सत्विअमहारिक्अरेबिक्असामीऐमराअज़रबैजानीबष्किरबैलोर" +
- "ुसियन्बल्गेरियनबिसलमाबंगालीतिबेतियनब्रेटनकटलानकोर्शियनज़ेक्वेळ्ष्ड" +
- "ानिषजर्मनभूटानीग्रीक्आंग्लइस्परान्टोस्पानिषइस्टोनियन्बास्कपर्षियन्" +
- "फिन्निष्फिजीफेरोस्फ्रेन्चफ्रिशियन्ऐरिषस्काटस् गेलिक्गेलीशियनगौरानी" +
- "गुजरातीहौसाहेब्रुहिन्दीक्रोयेषियन्हंगेरियन्आर्मीनियन्इन्टरलिंग्वाइ" +
- "न्डोनेषियनइन्टरलिंग्इनूपेयाक्आईस्लान्डिकइटालियनइन्युकट्टजापनीस्जाव" +
- "नीस्जार्जियन्कज़ख्ग्रीनलान्डिककंबोडियनकन्नडाकोरियन्कश्मीरीकुर्दिषक" +
- "िर्गिज़लाटिनलिंगालालाओतियन्लिथुआनियन्लाट्वियन् (लेट्टिष्)मलागसीमाओ" +
- "रीमसीडोनियन्मळियाळममंगोलियन्मराठीमलयमालतीस्बर्मीज़्नौरोनेपाळीडच्नो" +
- "र्वेजियनओसिटान्ओरोमो (अफान)ओरियापंजाबीपोलिषपाष्टो (पुष्टो)पोर्चुगी" +
- "ज़्क्वेच्वारहटो-रोमान्स्किरुन्दीरोमानियन्रष्यन्किन्यार्वान्डासंस्क" +
- "ृतसिंधीसांग्रोसिन्हलीस्स्लोवाकस्लोवेनियन्समोनशोनासोमाळीआल्बेनियन्स" +
- "ेर्बियन्सिस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजिकथाईतिग्र" +
- "िन्यातुर्कमनसेत्स्वानातोंगातुर्किषत्सोगातटारउधूरयुक्रेनियन्उर्दूउज" +
- "़बेकवियत्नामीज़ओलापुकउलोफ़झ़ौसाइद्दिष्यूरुबाझ्हुन्गचीनीस्जुलूतगालो" +
- "गकोंकणीमोल्डावियन्सेर्बो-क्रोयेषियन्",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0027, 0x0027, 0x0045, 0x0051, 0x0069, 0x0069,
- 0x007e, 0x008d, 0x008d, 0x0099, 0x00b7, 0x00c9, 0x00ea, 0x0105,
- 0x0117, 0x0117, 0x0129, 0x0141, 0x0153, 0x0153, 0x0162, 0x0162,
- 0x0162, 0x017a, 0x017a, 0x0189, 0x0189, 0x0189, 0x019b, 0x01aa,
- 0x01b9, 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01ec, 0x020a, 0x021f,
- 0x023d, 0x024c, 0x0264, 0x0264, 0x027c, 0x0288, 0x029a, 0x02af,
- 0x02ca, 0x02d6, 0x02fe, 0x0316, 0x0328, 0x033d, 0x033d, 0x0349,
- 0x035b, 0x036d, 0x036d, 0x038e, 0x038e, 0x03a9, 0x03c7, 0x03c7,
- // Entry 40 - 7F
- 0x03eb, 0x040c, 0x042a, 0x042a, 0x042a, 0x0445, 0x0445, 0x0466,
- 0x047b, 0x0496, 0x04ab, 0x04c0, 0x04db, 0x04db, 0x04db, 0x04db,
- 0x04ea, 0x050e, 0x0526, 0x0538, 0x054d, 0x054d, 0x0562, 0x0577,
- 0x0577, 0x0577, 0x058f, 0x059e, 0x059e, 0x059e, 0x059e, 0x05b3,
- 0x05cb, 0x05e9, 0x05e9, 0x061f, 0x0631, 0x0631, 0x0640, 0x065e,
- 0x0673, 0x068e, 0x069d, 0x06a6, 0x06bb, 0x06d3, 0x06df, 0x06df,
- 0x06f1, 0x06f1, 0x06fa, 0x06fa, 0x0718, 0x0718, 0x0718, 0x0718,
- 0x072d, 0x072d, 0x074b, 0x075a, 0x075a, 0x076c, 0x076c, 0x077b,
- // Entry 80 - BF
- 0x07a2, 0x07c3, 0x07db, 0x0800, 0x0818, 0x0833, 0x0845, 0x086f,
- 0x0884, 0x0884, 0x0893, 0x0893, 0x08a8, 0x08c3, 0x08d8, 0x08f9,
- 0x0905, 0x0911, 0x0923, 0x0941, 0x095c, 0x0974, 0x0986, 0x099b,
- 0x09b0, 0x09c8, 0x09d4, 0x09e6, 0x09f2, 0x09fb, 0x0a19, 0x0a2e,
- 0x0a4c, 0x0a5b, 0x0a70, 0x0a82, 0x0a8e, 0x0a8e, 0x0a9a, 0x0abb,
- 0x0aca, 0x0adc, 0x0adc, 0x0afd, 0x0b0f, 0x0b0f, 0x0b1e, 0x0b2d,
- 0x0b42, 0x0b54, 0x0b69, 0x0b7b, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- // Entry C0 - FF
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- // Entry 100 - 13F
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
- 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- // Entry 140 - 17F
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
- 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- // Entry 180 - 1BF
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- // Entry 1C0 - 1FF
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- // Entry 200 - 23F
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- // Entry 240 - 27F
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
- 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bcc, 0x0c00,
- },
- },
- { // ks
- "اَفاراَبخازِیاناَویستَناَفریٖکانٛزاَکاناَمہاریاَراگونیعربیاسٲمۍاَوارِکای" +
- "مارااَزَربیجانیبَشکیٖربیلَروٗشیَنبینابِسلامابَمبارابَنٛگٲلۍتِبتیبری" +
- "ٹَنبوسنِیَنکَتلانچیچَنکَموروکارسِکَنکریچیٚکچٔرچ سلاوِکچُواشویٚلشڈین" +
- "ِشجٔرمَندِویہیزونٛگکھاایٖویوٗنٲنیاَنٛگیٖزۍایٚسپَرینٹوسپینِشایٚسٹونی" +
- "َنباسکفارسیفُلاہفِنِشفِجیَنفَروسفریٚنچمغربی فرِشیَناَیرِشسکوٹِش گیے" +
- "لِکگیلِشِیَنگُوارَنیگُجرٲتیمینٛکسہاوساعبرٲنۍہِندیہِری موتوٗکروشِیَن" +
- "ہیتِیاںہَنٛگیریَناَرمینیَنہیٚریٖرواِنٹَرلِنٛگوااِنڈونیشیااِنٹَر لِن" +
- "ٛنگویےاِگبوسِچوان یٖیاِنُپِیاکاِڈوآیِسلینڈِکاِٹیلیَناِنُکتِتوٗجاپٲن" +
- "ۍجَوَنیٖزجارجِیَنکونٛگوکِکُیوٗکُوانیاماکازَخکَلالِسُتخَمیرکَنَڑکوری" +
- "َنکَنوٗریکٲشُرکُردِشکومیکورنِشکِرگِزلاتیٖنیلُکھزیمبورگِشگاندالِمبٔر" +
- "گِشلِنگالالاولِتھوانِیَنلوُبا کَتَنٛگالَتوِیَنمَلاگَسیمارشَلیٖزماور" +
- "یمیکَڈونیَنمٔلیالَممَنٛگولیمَرٲٹھۍمَلَےمَلتیٖسبٔمیٖزناورُشُمال ڈَبی" +
- "لنیٚپٲلۍڈونٛگاڈَچناروییَن نَے نورسکناروییَن بوکمالجنوب ڈیٚبیلنَواجو" +
- "نِیَنجااوکسیٖٹَناوجِبوااوٚرومواوٚرِیااوٚسیٚٹِکپَنجٲبۍپالیپالِشپَشتو" +
- "ٗپُرتَگیٖزکُویشُوارومانشرُندیرومٲنیروٗسیکِنیاوِنداسَنسکرٕتسراڈیٖنیس" +
- "ِندیشُمٲلی سَمیسَنگوسِنہالاسلووَکسلووینیَنسَمواَنشوناسومٲلیالبانِیَ" +
- "نسٔربِیَنسواتیجنوبی ستھوسَنڈَنیٖزسویٖڈِشسواہِلیتَمِلتیلگوٗتاجِکتھاے" +
- "ٹِگرِنیاتُرکمینسواناٹونٛگاتُرکِشژونٛگاتَتارتاہیشِیَنیوٗکرینیٲییاُرد" +
- "وٗاُزبیکوینداوِیَتنَمیٖزوولَپُکوَلوٗنوولوفکھوسایِدِشیورُبازُہانٛگچی" +
- "ٖنیزُلوٗاَچَےنیٖزاَکولیاَدَنٛگمیےاَدَیٖگیےاَفرِہِلیاینوٗاَکادِیَناَ" +
- "لویتیجنوٗبی اَلتاییپرون اَنٛگریٖزیاَنٛگِکااَرَمیکایرو کونِیَناَراپا" +
- "ہواَراوَکایسٹوٗریَناَوَدیبَلوٗچیبالِنیٖزباسابیجابیٚمبابوجپوٗریبِکول" +
- "بِنیسِکسِکابرٛجبُرِیَتبَگنیٖزبٕلِنکاڈوکارِباتسَمسیباونوچیٖبچاچھَگتا" +
- "ےچُکیٖزماریچِنوٗک جارگَنچوکتَوشیپویانچیٚروکیشییونکاپٹِککرٕمیٖن تُرک" +
- "یکَشوٗبِیَنڈکوٹادَرگواڈیٚلوییَرسلیوڈاگرِبڈِنکاڈوگریبوٚنِم ساربِیَند" +
- "ُوالاوَستی پُرتُگالیڈِیوٗلاایٚفِکقدیٖمی مِصریایٚکاجُکایٚلامایِٹوَسط" +
- "ی اَنٛگریٖزۍایٚوونڈوفینٛگفِلِپیٖنوفونوسطی فریٚنچپرون فریٚنچشُمٲلی ف" +
- "رِشیَنمشرِقی فرِشیَنفروٗلِیَنگاگیےیوگبایاگیٖزگِلبٔرٹیٖزوَسطی ہاے جٔ" +
- "رمَنپرون ہاے جٔرمَنگوندیگورینٹیلوگوتھِکگرِبوقدیٖم یوٗنٲنیسٕوِس جٔرم" +
- "َنگُوِچ اِنہَیداہوایِیَنہِلیٖگینَنہِتایِتہمونٛگہیٚرِم ساربِیَنہُپاا" +
- "ِباناِلوکواِنٛگُشلوجبانجوڈیو فارسیجوڈیو عربیکارا کَلپَککَبایِلکاچِن" +
- "جُوٗکامباکَویکَبارڈِیَنتَیَپکوروکھاسیکھوتَنیٖزکِمبُندوٗکونکَنیکوسری" +
- "یَنکَپیلیکراچیے بَلکارکَریلِیَنکُرُکھکُمِککُتینَےلیڈِنولَہَندالَمبا" +
- "لیزگِیَنمونٛگولوزیلوٗبا لوٗلُوالویِسینولُندالُوولُسہاےمَدُریٖزمَگاے" +
- "میتَھلیمَکَسارمَندِنٛگومَساےموکشامَندَرمیندیےوَستی ایرِشمِکمیکمِنَن" +
- "ٛگکَباومانٛچوٗمَنیپوٗریموہاکموسیواریاہ زبانکریٖکمِراندیٖزمارواڑیایٚ" +
- "رزِیانیٖپالیٹَنبوٚنِم جٔرمَننیٚوارینِیاسنِیویَننوگاےپرون نارسیایٚن " +
- "کوشمالی ستھوکلاسِکَل نیوارینِیَمویٚزینِیَنکولنِیورونَظیٖمااوٚسیجاوٹ" +
- "ومَن تُرکِشپَنٛگاسِنَنپَہلَویپَمپَنٛگاپَپِیامیٚنٹوپَلااُواںپرون فار" +
- "سیفونیٖشیَنپانپیٚیَنپرون پروویٚنچَلراجِستھٲنۍرَپانویرَروٹونٛگَنرومَ" +
- "نیاَرومانیسَندَویےیاکُتسَمارِتَن اَرامیکسَسَکسَنتالیسِچِلِیَنسکاٹسس" +
- "یٚلکُپپرون ایرِششانسِداموجنوٗبی سَمیلولیے سَمیاِناری سَمیسکولٹ سَمی" +
- "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" +
- "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" +
- "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" +
- "روٗٹواےووتِکوالامووَریےواشوکالمِکیاویَپیٖززَپوتیٚکزیناگازوٗنیکانٛہہ" +
- " تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنسٕوِس ہاےجٔرمَنآسٹریلیَن ا" +
- "َنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَنٛگریٖزۍیوٗ ایٚس اَنٛگریٖز" +
- "ۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس فریٚنچفلیٚ" +
- "مِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚو" +
- "د چیٖنیرِوٲجی چیٖنی",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c,
- 0x0074, 0x007e, 0x008c, 0x0098, 0x00ae, 0x00bc, 0x00d2, 0x00da,
- 0x00e8, 0x00f6, 0x0106, 0x0110, 0x011c, 0x012c, 0x0138, 0x0142,
- 0x014e, 0x015e, 0x0164, 0x016c, 0x0181, 0x018b, 0x0195, 0x019f,
- 0x01ab, 0x01b7, 0x01c7, 0x01cf, 0x01dd, 0x01ef, 0x0205, 0x0211,
- 0x0225, 0x022d, 0x0237, 0x0241, 0x024b, 0x0257, 0x0261, 0x026d,
- 0x0286, 0x0292, 0x02ab, 0x02bd, 0x02cd, 0x02db, 0x02e7, 0x02f1,
- 0x02fd, 0x0307, 0x031a, 0x032a, 0x0338, 0x034c, 0x035e, 0x036e,
- // Entry 40 - 7F
- 0x0388, 0x039c, 0x03bb, 0x03c5, 0x03d8, 0x03ea, 0x03f2, 0x0406,
- 0x0416, 0x042a, 0x0436, 0x0446, 0x0456, 0x0462, 0x0470, 0x0482,
- 0x048c, 0x049e, 0x04a8, 0x04b2, 0x04be, 0x04cc, 0x04d6, 0x04e2,
- 0x04ea, 0x04f6, 0x0502, 0x0510, 0x052a, 0x0534, 0x0546, 0x0554,
- 0x055a, 0x0570, 0x058b, 0x059b, 0x05ab, 0x05bd, 0x05c7, 0x05db,
- 0x05eb, 0x05fb, 0x0609, 0x0613, 0x0621, 0x062d, 0x0637, 0x064c,
- 0x065a, 0x0666, 0x066c, 0x068e, 0x06ab, 0x06c0, 0x06cc, 0x06da,
- 0x06ec, 0x06fa, 0x0708, 0x0716, 0x0728, 0x0736, 0x073e, 0x0748,
- // Entry 80 - BF
- 0x0754, 0x0766, 0x0776, 0x0782, 0x078c, 0x0798, 0x07a2, 0x07b6,
- 0x07c6, 0x07d6, 0x07e0, 0x07f5, 0x07ff, 0x080d, 0x0819, 0x082b,
- 0x0839, 0x0841, 0x084d, 0x085f, 0x086f, 0x0879, 0x088c, 0x089e,
- 0x08ac, 0x08ba, 0x08c4, 0x08d0, 0x08da, 0x08e2, 0x08f2, 0x0900,
- 0x090a, 0x0916, 0x0922, 0x092e, 0x0938, 0x094a, 0x094a, 0x0960,
- 0x096c, 0x0978, 0x0982, 0x0998, 0x09a6, 0x09b2, 0x09bc, 0x09c6,
- 0x09d0, 0x09dc, 0x09ea, 0x09f4, 0x09fe, 0x0a10, 0x0a1c, 0x0a30,
- 0x0a42, 0x0a42, 0x0a54, 0x0a54, 0x0a5e, 0x0a70, 0x0a70, 0x0a7e,
- // Entry C0 - FF
- 0x0a7e, 0x0a99, 0x0ab6, 0x0ac6, 0x0ad4, 0x0aeb, 0x0aeb, 0x0afb,
- 0x0afb, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b1d, 0x0b1d,
- 0x0b29, 0x0b37, 0x0b47, 0x0b47, 0x0b4f, 0x0b4f, 0x0b4f, 0x0b4f,
- 0x0b57, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b73,
- 0x0b7d, 0x0b85, 0x0b85, 0x0b85, 0x0b93, 0x0b93, 0x0b93, 0x0b9b,
- 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bc1, 0x0bc1,
- 0x0bc9, 0x0bd3, 0x0bd3, 0x0bdd, 0x0beb, 0x0beb, 0x0bf7, 0x0c05,
- 0x0c11, 0x0c19, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5a, 0x0c64, 0x0c64,
- // Entry 100 - 13F
- 0x0c70, 0x0c70, 0x0c89, 0x0c9d, 0x0ca7, 0x0cb3, 0x0cb3, 0x0cc5,
- 0x0ccd, 0x0cd9, 0x0ce3, 0x0ce3, 0x0ced, 0x0d0a, 0x0d0a, 0x0d16,
- 0x0d33, 0x0d33, 0x0d41, 0x0d41, 0x0d41, 0x0d4d, 0x0d4d, 0x0d64,
- 0x0d74, 0x0d88, 0x0da7, 0x0da7, 0x0db7, 0x0db7, 0x0dc1, 0x0dd3,
- 0x0dd3, 0x0dd9, 0x0dd9, 0x0dee, 0x0e03, 0x0e03, 0x0e1e, 0x0e39,
- 0x0e4b, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e59, 0x0e63, 0x0e63, 0x0e6b,
- 0x0e7f, 0x0e7f, 0x0e9d, 0x0eb9, 0x0eb9, 0x0ec3, 0x0ed5, 0x0ee1,
- 0x0eeb, 0x0f04, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f2c, 0x0f36,
- // Entry 140 - 17F
- 0x0f36, 0x0f46, 0x0f46, 0x0f5a, 0x0f68, 0x0f74, 0x0f91, 0x0f91,
- 0x0f99, 0x0fa3, 0x0fa3, 0x0faf, 0x0fbd, 0x0fbd, 0x0fbd, 0x0fc9,
- 0x0fc9, 0x0fc9, 0x0fde, 0x0ff1, 0x0ff1, 0x1006, 0x1014, 0x101e,
- 0x1026, 0x1030, 0x1038, 0x104c, 0x104c, 0x1056, 0x1056, 0x1056,
- 0x1056, 0x105e, 0x105e, 0x1068, 0x107a, 0x107a, 0x107a, 0x107a,
- 0x107a, 0x107a, 0x108c, 0x108c, 0x109a, 0x10aa, 0x10b6, 0x10cf,
- 0x10cf, 0x10cf, 0x10e1, 0x10ed, 0x10ed, 0x10ed, 0x10ed, 0x10f7,
- 0x1105, 0x1111, 0x1111, 0x111f, 0x1129, 0x1139, 0x1139, 0x1139,
- // Entry 180 - 1BF
- 0x1139, 0x1139, 0x1139, 0x1145, 0x114d, 0x114d, 0x114d, 0x1166,
- 0x1176, 0x1180, 0x1188, 0x1194, 0x1194, 0x1194, 0x1194, 0x11a4,
- 0x11a4, 0x11ae, 0x11bc, 0x11ca, 0x11dc, 0x11e6, 0x11e6, 0x11f0,
- 0x11fc, 0x1208, 0x1208, 0x1208, 0x121d, 0x121d, 0x121d, 0x1229,
- 0x1241, 0x124f, 0x1261, 0x126b, 0x1273, 0x1273, 0x1273, 0x1288,
- 0x1292, 0x12a4, 0x12b2, 0x12b2, 0x12b2, 0x12c2, 0x12c2, 0x12c2,
- 0x12d6, 0x12d6, 0x12ef, 0x12fd, 0x1307, 0x1315, 0x1315, 0x1315,
- 0x1315, 0x131f, 0x1332, 0x1332, 0x133f, 0x1352, 0x1352, 0x136f,
- // Entry 1C0 - 1FF
- 0x1383, 0x1393, 0x139f, 0x13ad, 0x13b9, 0x13d4, 0x13ea, 0x13f8,
- 0x140a, 0x1422, 0x1434, 0x1434, 0x1434, 0x1434, 0x1447, 0x1447,
- 0x1459, 0x1459, 0x1459, 0x146b, 0x146b, 0x1488, 0x1488, 0x1488,
- 0x149c, 0x14aa, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14cc, 0x14cc,
- 0x14cc, 0x14cc, 0x14dc, 0x14dc, 0x14ec, 0x14f6, 0x1517, 0x1517,
- 0x1521, 0x152f, 0x152f, 0x152f, 0x152f, 0x1541, 0x154b, 0x154b,
- 0x154b, 0x154b, 0x154b, 0x154b, 0x1559, 0x1559, 0x156c, 0x156c,
- 0x156c, 0x1572, 0x1572, 0x157e, 0x157e, 0x157e, 0x1593, 0x15a6,
- // Entry 200 - 23F
- 0x15bb, 0x15ce, 0x15de, 0x15ee, 0x1609, 0x1615, 0x1615, 0x1615,
- 0x1621, 0x162b, 0x163b, 0x163b, 0x163b, 0x163b, 0x164b, 0x164b,
- 0x164b, 0x1657, 0x1657, 0x1667, 0x1671, 0x167f, 0x1687, 0x1697,
- 0x1697, 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc, 0x16ed, 0x16ed,
- 0x16ed, 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, 0x171b, 0x172d,
- 0x172d, 0x173b, 0x174b, 0x175d, 0x1765, 0x176b, 0x176b, 0x176b,
- 0x176b, 0x176b, 0x1775, 0x1775, 0x1775, 0x1775, 0x1781, 0x178b,
- 0x1793, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, 0x17a5, 0x17b1,
- // Entry 240 - 27F
- 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17c1, 0x17c1, 0x17c1, 0x17cd,
- 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1815, 0x1832, 0x184f,
- 0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, 0x192b, 0x192b,
- 0x1948, 0x195f, 0x195f, 0x196d, 0x198e, 0x19b1, 0x19c5, 0x19e2,
- 0x19f7, 0x1a0e,
- },
- },
- { // ksb
- "KiakanKiamhaliKialabuKibelaausiKibulgaliaKibanglaKicheckiKijeumaniKigiik" +
- "iKiingeezaKihispaniaKiajemiKifalansaKihausaKihindiKihungaiKiindonesi" +
- "aKiigboKiitalianoKijapaniKijavaKikambodiaKikoleaKimalesiaKibulmaKine" +
- "paliKiholanziKipunjabiKipolandiKilenoKiomaniaKilusiKinyalwandaKisoma" +
- "liKiswidiKitamilKitailandiKituukiKiuklaniaKiulduKivietinamuKiyolubaK" +
- "ichinaKizuluKishambaa",
- []uint16{ // 373 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0049, 0x0052, 0x0052, 0x005c,
- 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c,
- 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073,
- 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0082, 0x0082, 0x0082,
- // Entry 40 - 7F
- 0x0082, 0x008d, 0x008d, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x009d, 0x009d, 0x00a5, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- 0x00ab, 0x00ab, 0x00b5, 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00bc, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc,
- 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e6, 0x00e6, 0x00ef,
- // Entry 80 - BF
- 0x00ef, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x0103, 0x010e,
- 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
- 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
- 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x013e,
- 0x0144, 0x0144, 0x0144, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f,
- 0x014f, 0x0157, 0x0157, 0x015e, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- // Entry C0 - FF
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- // Entry 100 - 13F
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- // Entry 140 - 17F
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x0164, 0x016d,
- },
- },
- { // ksf
- "riakanriamarikriarabribɛlɔrísribulgaríribɛngáliricɛ́kridjɛrmanrigrɛ́krii" +
- "ngɛrísrikpanyáripɛrsánripɛrɛsǝ́rikaksariíndíriɔngrɔáriindonɛsíriigbo" +
- "riitalyɛ́nrijapɔ́ŋrijawanɛ́rikmɛrrikɔrɛɛ́rimalaíribirmánrinepalɛ́riɔ" +
- "lándɛ́ripɛnjabíripɔlɔ́nripɔrtugɛ́rirɔmánrirísrirwandarisomalíriswɛ́d" +
- "ǝritamúlritaíriturkriukrɛ́nriurdúriwyɛtnámriyúubaricinɔárizúlurikpa",
- []uint16{ // 374 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x005b, 0x005b, 0x0064,
- 0x0064, 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0082,
- 0x0082, 0x008a, 0x008a, 0x008a, 0x008a, 0x0095, 0x0095, 0x0095,
- // Entry 40 - 7F
- 0x0095, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
- 0x00b3, 0x00b3, 0x00be, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
- 0x00c9, 0x00c9, 0x00d0, 0x00d0, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00e4, 0x00e4, 0x00ed, 0x00ed, 0x00ed,
- 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105,
- 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0110, 0x0110, 0x011b,
- // Entry 80 - BF
- 0x011b, 0x0128, 0x0128, 0x0128, 0x0128, 0x0131, 0x0137, 0x013f,
- 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x013f, 0x013f, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148,
- 0x0153, 0x0153, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0161,
- 0x0161, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0171,
- 0x0178, 0x0178, 0x0178, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
- 0x0183, 0x018b, 0x018b, 0x0194, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- // Entry C0 - FF
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- // Entry 100 - 13F
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- // Entry 140 - 17F
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
- 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a0,
- },
- },
- { // ksh
- "AfahreschAbchahseschAvästahneschAfrikaansAkahneschAmhahreschArrajonehses" +
- "chArahbeschAßamehseschAvahreschAimahreschAsserbaidschahneschBaschkih" +
- "reschWiißrußeschBulljaareschBambaraBängjaaleschTibehteschBettohnesch" +
- "BoßneschKattalahneschKorseschTschäscheschKerscheßlahweschTschowasche" +
- "schWallihseschDähneschDeutschDivehjeschButahneschEweJrihscheschÄngle" +
- "schEsperantoSchpahneschÄßneschBaskeschPärseschFinneschFidscheschFärr" +
- "öereschFranzüüseschWäßfriiseschIereschJalliizeschJuwaraaneschGutsch" +
- "arateschHaußaHebräjeschHindiKrowateschHa’iiteschUnjarreschArmeenesch" +
- "IndoneeseschIgboIdoIßländeschEtalljäneschInuktitutJapaaneschJavahnes" +
- "chJe’orjeschKassakeschKhmerKannadaKorrejaaneschKaschmiereschKurdesch" +
- "KirjihseschLateijneschLuxemborjeschLingjallaLahooteschLittoueschLätt" +
- "eschMadajaßkeschMaahoriMazedooneschMallajalamMongjoleschMarraateschM" +
- "allaijeschMalteeseschBurmesseschNood-NdebeleNepallesseschHolländesch" +
- "Neu-NorrweejeschNorrweejesch BokmålSchi-SchewaOriijaOßeeteschPanscha" +
- "abeschPollneschPaschtuuneschPochtojeseschKättschowaRätoromaaneschK-R" +
- "undeschRumäneschRußßeschKinja-RuandeschSanskritSinndiNood-Lappländes" +
- "chSangjoSingjaleeseschẞlovakeschẞloveeneschSammohaneschSchi-SchonaSo" +
- "maaleschAlbaaneschSärbeschSi-SwateschSöd-SootoSindaneeseschSchweedes" +
- "chSuaheeleschTamiileschTelluujuTadschiikeschTailändeschTijrenejaanes" +
- "chTörkmeeneschSe-ZwaaneschTongjaaneschTörkeschXi-ZongjaneschTattaare" +
- "schTahiteschUj’juuerschUkraineschUrdu/HindiUßbeekeschWendaVijätnamme" +
- "eseschWoloffIsi-KhoosaJoruubaSchineeseschSuuluAschenehseschTonehsesc" +
- "h ArahbeschAfrehihleschAkahdeschAle’uhteschAhl ÄngleschAljehresch Ar" +
- "ahbeschMarokahnesch ArahbeschÄjiptesch ArahbeschPareAmärrekahnesche " +
- "BlendeschprohchAstuhrejahneschBeluhtscheschBalinehseschBaireschBemba" +
- "BenaBischnuprejahneschBrajeschBrahuijeschBoddoBurejahteschBujinehses" +
- "chKopteschKaschuhbeschNiddersorbeschMeddelnehderlängschDassajahnesch" +
- "EmbuEfikEmilijahneschAhl ÄjipteschMeddelängleschZätrahl-JupikfilSchw" +
- "itzerdütschHauajaaneschEngjuscheschIngjrijahneschJamaikahnesch-Ängle" +
- "schLodschbahnJühdesch-PärseschJüteschKapvärdeschKölschde Landa-Schpr" +
- "oocheLuyjanesch-ongerscheidlijje Schprooche-Nood-SootoKiromboJackute" +
- "schKommooreschTetumschTook Pisin-onbikannte-Schprooch-WalserdütschKa" +
- "nton-Schineeseschkein SchproochSchtandatt ArahbeschSödasserbaidschah" +
- "neschDeutsch uß ÖßterichDeutsch uß de SchweijzÄnglesch uß Außtraalij" +
- "eÄnglesch uß KanadaÄnglesch uß JruußbrettannijeAmärrekaanesch Ängles" +
- "chSchpaanesch uß Latting-AmmärrikaSchpahnesch en SchpahnejeSchpahnes" +
- "ch en MäxikohFranzüüsesch uß KanadaFranzüüsesch uß de SchweijzFlämes" +
- "chBrasilljaanesch PochtojeseschPochtojesesch uß PochtojallSärbokowat" +
- "eschSchineesesch en de eijfacher SchreffSchineesesch en de tradizjon" +
- "älle Schreff",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0014, 0x0021, 0x002a, 0x0033, 0x003d, 0x004b,
- 0x0054, 0x0060, 0x0069, 0x0073, 0x0086, 0x0093, 0x00a0, 0x00ac,
- 0x00ac, 0x00b3, 0x00c0, 0x00ca, 0x00d5, 0x00de, 0x00eb, 0x00eb,
- 0x00eb, 0x00f3, 0x00f3, 0x0100, 0x0111, 0x011f, 0x012a, 0x0133,
- 0x013a, 0x0144, 0x014e, 0x0151, 0x015c, 0x0165, 0x016e, 0x0179,
- 0x0182, 0x018a, 0x0193, 0x0193, 0x019b, 0x01a5, 0x01b2, 0x01c0,
- 0x01ce, 0x01d5, 0x01d5, 0x01e0, 0x01ec, 0x01fa, 0x01fa, 0x0200,
- 0x020b, 0x0210, 0x0210, 0x021a, 0x0226, 0x0230, 0x023a, 0x023a,
- // Entry 40 - 7F
- 0x023a, 0x0246, 0x0246, 0x024a, 0x024a, 0x024a, 0x024d, 0x0259,
- 0x0266, 0x026f, 0x0279, 0x0283, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x0299, 0x0299, 0x029e, 0x02a5, 0x02b2, 0x02b2, 0x02bf, 0x02c7,
- 0x02c7, 0x02c7, 0x02d2, 0x02dd, 0x02ea, 0x02ea, 0x02ea, 0x02f3,
- 0x02fd, 0x0307, 0x0307, 0x0310, 0x031d, 0x031d, 0x0324, 0x0330,
- 0x033a, 0x0345, 0x0350, 0x035b, 0x0366, 0x0371, 0x0371, 0x037d,
- 0x038a, 0x038a, 0x0396, 0x03a6, 0x03ba, 0x03ba, 0x03ba, 0x03c5,
- 0x03c5, 0x03c5, 0x03c5, 0x03cb, 0x03d5, 0x03e2, 0x03e2, 0x03eb,
- // Entry 80 - BF
- 0x03f8, 0x0405, 0x0410, 0x041f, 0x0429, 0x0433, 0x043d, 0x044c,
- 0x0454, 0x0454, 0x045a, 0x046c, 0x0472, 0x0480, 0x048c, 0x0499,
- 0x04a5, 0x04b0, 0x04ba, 0x04c4, 0x04cd, 0x04d8, 0x04e2, 0x04ef,
- 0x04fa, 0x0505, 0x050f, 0x0517, 0x0524, 0x0530, 0x053f, 0x054c,
- 0x0558, 0x0564, 0x056d, 0x057b, 0x0586, 0x058f, 0x059c, 0x05a6,
- 0x05b0, 0x05bb, 0x05c0, 0x05d1, 0x05d1, 0x05d1, 0x05d7, 0x05e1,
- 0x05e1, 0x05e8, 0x05e8, 0x05f4, 0x05f9, 0x0606, 0x0606, 0x0606,
- 0x0606, 0x061a, 0x0626, 0x0626, 0x0626, 0x062f, 0x062f, 0x063c,
- // Entry C0 - FF
- 0x063c, 0x063c, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649,
- 0x065d, 0x065d, 0x0673, 0x0687, 0x068b, 0x06ab, 0x06ba, 0x06ba,
- 0x06ba, 0x06c7, 0x06d3, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db,
- 0x06db, 0x06e0, 0x06e0, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4,
- 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06f6, 0x06f6, 0x06fe,
- 0x0709, 0x070e, 0x070e, 0x071a, 0x0726, 0x0726, 0x0726, 0x0726,
- 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726,
- 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726,
- // Entry 100 - 13F
- 0x072e, 0x072e, 0x072e, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a,
- 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0748, 0x0748, 0x0748,
- 0x075c, 0x075c, 0x075c, 0x0769, 0x076d, 0x0771, 0x077e, 0x078c,
- 0x078c, 0x078c, 0x079b, 0x07a9, 0x07a9, 0x07a9, 0x07a9, 0x07ac,
- 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
- 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
- 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
- 0x07ac, 0x07ac, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc,
- // Entry 140 - 17F
- 0x07bc, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8,
- 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07d4, 0x07e2, 0x07f9, 0x0803,
- 0x0803, 0x0803, 0x0816, 0x0816, 0x081e, 0x081e, 0x081e, 0x081e,
- 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x082a,
- 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a,
- 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a,
- 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x0831, 0x0831,
- 0x0831, 0x0831, 0x0831, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844,
- // Entry 180 - 1BF
- 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844,
- 0x0844, 0x0844, 0x0844, 0x0844, 0x084e, 0x084e, 0x084e, 0x084e,
- 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e,
- 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e,
- 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x086b,
- 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b,
- 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b,
- 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x0875, 0x0875, 0x0875,
- // Entry 1C0 - 1FF
- 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
- 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
- 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
- 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x087c, 0x087c, 0x087c,
- 0x087c, 0x087c, 0x087c, 0x087c, 0x087c, 0x0886, 0x0886, 0x0886,
- 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
- 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
- 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
- // Entry 200 - 23F
- 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
- 0x0886, 0x0886, 0x0886, 0x0891, 0x0891, 0x0891, 0x0891, 0x0891,
- 0x0891, 0x0891, 0x0891, 0x0891, 0x0899, 0x0899, 0x0899, 0x0899,
- 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, 0x08a3, 0x08a3,
- 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3,
- 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08b9, 0x08b9, 0x08b9, 0x08b9,
- 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08c6, 0x08c6, 0x08c6,
- 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6,
- // Entry 240 - 27F
- 0x08c6, 0x08c6, 0x08c6, 0x08d9, 0x08d9, 0x08d9, 0x08d9, 0x08d9,
- 0x08d9, 0x08d9, 0x08e7, 0x08e7, 0x08fb, 0x0912, 0x0928, 0x093f,
- 0x0959, 0x096d, 0x098c, 0x09a5, 0x09c7, 0x09e0, 0x09f7, 0x09f7,
- 0x0a10, 0x0a2e, 0x0a2e, 0x0a37, 0x0a54, 0x0a70, 0x0a70, 0x0a7f,
- 0x0aa3, 0x0acc,
- },
- },
- { // kw
- "kernewek",
- []uint16{ // 90 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0008,
- },
- },
- { // ky
- kyLangStr,
- kyLangIdx,
- },
- { // lag
- "KɨakáaniKɨmʉháariKɨaráabuKɨberalúusiKɨbulugáriaKɨbangálaKɨchéekiKɨjerʉmá" +
- "aniKɨgiríkiKɨɨngeréesaKɨhispániaKɨajéemiKɨfaráansaKɨhaúusaKɨhíindiKɨ" +
- "hungáriKɨɨndonésiaKiígiboKɨtaliáanoKɨjapáaniKɨjáavaKɨkambódiaKɨkoréa" +
- "KɨmelésiaKɨbáamaKɨnepáaliKɨholáanziKɨpúnjabiKɨpólandiKɨréenoKɨromaní" +
- "aKɨrúusiKɨnyarwáandaKɨsómáaliKɨswíidiKɨtamíiliKɨtáilandiKɨturúukiKɨu" +
- "kɨraníaKɨúrduKɨvietináamuKɨyorúubaKɨchíinaKɨzúuluKɨlaangi",
- []uint16{ // 379 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002d, 0x003a,
- 0x003a, 0x003a, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
- 0x005d, 0x005d, 0x005d, 0x005d, 0x0067, 0x0075, 0x0075, 0x0081,
- 0x0081, 0x0081, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0097,
- 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a1,
- 0x00a1, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b6, 0x00b6, 0x00b6,
- // Entry 40 - 7F
- 0x00b6, 0x00c4, 0x00c4, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
- 0x00d8, 0x00d8, 0x00e3, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
- 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0101, 0x0101, 0x0101, 0x0101,
- 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101,
- 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101,
- 0x0101, 0x0101, 0x0101, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115,
- 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c,
- 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x0137, 0x0137, 0x0142,
- // Entry 80 - BF
- 0x0142, 0x014b, 0x014b, 0x014b, 0x014b, 0x0156, 0x015f, 0x016d,
- 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d,
- 0x016d, 0x016d, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179,
- 0x0183, 0x0183, 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a,
- 0x019a, 0x019a, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01b2,
- 0x01ba, 0x01ba, 0x01ba, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
- 0x01c8, 0x01d3, 0x01d3, 0x01dd, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- // Entry C0 - FF
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- // Entry 100 - 13F
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- // Entry 140 - 17F
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01ef,
- },
- },
- { // lb
- "AfarAbchaseschAvesteschAfrikaansAkanAmhareschAragoneseschArabeschAssames" +
- "eschAwareschAymaraAserbaidschaneschBaschkireschWäissrusseschBulgares" +
- "chBislamaBambara-SproochBengaleschTibeteschBretoneschBosneschKatalan" +
- "eschTschetscheneschChamorro-SproochKorseschCreeTschecheschKierchesla" +
- "weschTschuwascheschWaliseschDäneschDäitschMaldiveschBhutaneschEwe-Sp" +
- "roochGriicheschEngleschEsperantoSpueneschEstneschBaskeschPerseschFul" +
- "FinneschFidschianeschFäröeschFranséischWestfrieseschIreschSchottesch" +
- "t GälleschGalizeschGuaraniGujaratiManxHausaHebräeschHindiHiri-MotuKr" +
- "oateschHaitianeschUngareschArmeneschHerero-SproochInterlinguaIndones" +
- "eschInterlingueIgbo-SproochSichuan YiInupiakIdo-SproochIslänneschIta" +
- "lieneschInukitutJapaneschJavaneschGeorgeschKongoleseschKikuyu-Sprooc" +
- "hKwanyamaKasacheschGrönlänneschKambodschaneschKannadaKoreaneschKanur" +
- "i-SproochKaschmireschKurdeschKomi-SproochKorneschKirgiseschLatäinLët" +
- "zebuergeschGanda-SproochLimburgeschLingalaLaoteschLitaueschLuba-Kata" +
- "ngaLetteschMalagassi-SproochMarschalleseschMaoriMazedoneschMalayalam" +
- "MongoleschMarathiMalaieschMalteseschBirmaneschNaurueschNord-Ndebele-" +
- "SproochNepaleseschNdongaHollänneschNorwegesch NynorskNorwegesch Bokm" +
- "ålSüd-Ndebele-SproochNavajoNyanja-SproochOkzitaneschOjibwa-SproochO" +
- "romoOrijaOsseteschPandschabeschPaliPolneschPaschtuPortugiseschQuechu" +
- "aRätoromaneschRundi-SproochRumäneschRusseschRuandeschSanskritSardesc" +
- "hSindhiNordsameschSangoSinghaleseschSlowakeschSloweneschSamoaneschSh" +
- "onaSomaliAlbaneschSerbeschSwaziSüd-Sotho-SproochSundaneseschSchwedes" +
- "chSuaheliTamileschTeluguTadschikeschThailänneschTigrinjaTurkmeneschT" +
- "swana-SproochTongaeschTierkeschTsongaTatareschTahiteschUigureschUkra" +
- "ineschUrduUsbekeschVenda-SproochVietnameseschVolapükWallouneschWolof" +
- "XhosaJiddeschYorubaZhuangChineseschZuluAceh-SproochAcholi-SproochAda" +
- "ngmeAdygéieschTunesescht ArabeschAfrihiliAghemAinu-SproochAkkadeschA" +
- "labamaAleuteschGegeschSüd-AlaeschAlengleschAngikaAramäeschMapudungun" +
- "AraonaArapaho-SproochAlgerescht ArabeschArawak-SproochMarokkanescht " +
- "ArabeschEgyptescht ArabeschAsu (Tanzania)Amerikanesch ZeechesproochA" +
- "sturianeschKotavaAwadhiBelutscheschBalineseschBaireschBasaa-SproochB" +
- "amunBatak TobaGhomálá’BedauyeBemba-SproochBetawiBenaBafutBadagaBhods" +
- "chpuriBikol-SproochBini-SproochBanjareseschKomBlackfoot-SproochBishn" +
- "upriyaBachtiareschBraj-BhakhaBrahuiBodoAkooseBurjateschBugineseschBu" +
- "luBlinMedumbaCaddoKaribeschCayugaAtsamCebuanoKigaChibcha-SproochTsch" +
- "agataeschTrukeseschMariChinookChoctawChipewyanCherokeeCheyenneSorani" +
- "KopteschCapiznonKrimtatareschKaschubeschDakota-SproochDargineschTait" +
- "aDelaware-SproochSlaveDogribDinka-SproochZarmaDogriNiddersorbeschZen" +
- "tral-DusunDualaMëttelhollänneschJola-FonyiDyula-SproochDazagaKiembuE" +
- "fikEmilianeschEgypteschEkajukElameschMëttelengleschYup’ikEwondoExtre" +
- "madureschPangwe-SproochFilipinoMeänkieliFon-SproochCajunMëttelfransé" +
- "ischAlfranséischFrankoprovenzaleschNordfrieseschOstfrieseschFriulesc" +
- "hGa-SproochGagauseschGan-ChineseschGayoGbaya-SproochZoroastrianescht" +
- " DariGeezGilberteseschGilakiMëttelhéichdäitschAlhéichdäitschGoan-Kon" +
- "kaniGondi-SproochMongondouGoteschGrebo-SproochAlgriicheschSchwäizerd" +
- "äitschWayuuFarefareGusii-SproochKutchin-SproochHaida-SproochHakka-C" +
- "hineseschHawaieschFidschi-HindiHiligaynon-SproochHethiteschMiao-Spro" +
- "ochUewersorbeschXiang-ChineseschHupaIbanIbibioIlokano-SproochIngusch" +
- "eschIschoreschJamaikanesch-KreoleschLojbanNgombaMachameJiddesch-Pers" +
- "eschJiddesch-ArabeschJüteschKarakalpakeschKabyleschKachin-SproochJju" +
- "KambaKawiKabardineschKanembuTyapMakondeKabuverdianuKenyangKoroKainga" +
- "ngKhasi-SproochSakeschKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbund" +
- "u-SproochKomi-PermiakKonkaniKosraeaneschKpelle-SproochKaratschaiesch" +
- "-BalkareschKrioKinaray-aKareleschOraon-SproochShambalaBafiaKölschKum" +
- "ükeschKutenai-SproochLadinoLangiLahndaLamba-SproochLesgeschLingua F" +
- "ranca NovaLigureschLiveschLakota-SproochLombardeschMongoRotse-Sprooc" +
- "hLettgalleschLuba-LuluaLuiseno-SproochLunda-SproochLuo-SproochLushai" +
- "-SproochOlulujiaKlassescht ChineseschLasesch SproochMadureseschMafaK" +
- "hottaMaithiliMakassareschManding-SproochMassai-SproochMabaMokshaMand" +
- "areseschMende-SproochMeru-SproochMorisyenMëttelireschMakhuwa-MeettoM" +
- "eta’Micmac-SproochMinangkabau-SproochMandschureschMeithei-SproochMoh" +
- "awk-SproochMossi-SproochWest-MariMundangMéisproochegMuskogee-Sprooch" +
- "MirandeseschMarwariMentawaiMyeneErsja-MordwineschMazandaraniMin-Nan-" +
- "ChineseschNeapolitaneschNamaNidderdäitschNewariNias-SproochNiue-Spro" +
- "ochAo NagaKwasioNgiemboonNogaiAlnordeschNovialN’KoNord-Sotho-Sprooch" +
- "NuerAl-NewariNyamwezi-SproochNyankoleNyoroNzimaOsage-SproochOsmanesc" +
- "hPangasinan-SproochMëttelperseschPampanggan-SproochPapiamentoPalauPi" +
- "cardeschPennsylvaniadäitschPlattdäitschAlperseschPfälzesch DäitschPh" +
- "önikeschPiemonteseschPonteschPonapeaneschPreiseschAlprovenzaleschQu" +
- "iché-SproochKichwa (Chimborazo-Gebidder)RajasthaniOuschterinsel-Spro" +
- "ochRarotonganeschRomagnolTarifitRomboRomaniRotumaneschRussineschRovi" +
- "anaAromuneschRwaSandawe-SproochJakuteschSamaritaneschSamburuSasakSan" +
- "taliSaurashtraNgambaySanguSizilianeschSchotteschSassareseschSenecaSe" +
- "naSeriSelkupeschKoyra SenniAlireschSamogiteschTaschelhitSchan-Sprooc" +
- "hTschadesch-ArabeschSidamoNidderschleseschSelayarSüdsameschLule-Lapp" +
- "eschInari-LappeschSkolt-LappeschSoninke-SproochSogdeschSrananeschSer" +
- "er-SproochSahoSaterfrieseschSukuma-SproochSusuSumereschKomoreschKong" +
- "o-SwahiliAlsyreschSyreschSchleseschTuluTemneTesoTereno-SproochTetum-" +
- "SproochTigreTiv-SproochTokelauaneschTsachureschKlingoneschTlingit-Sp" +
- "roochTaleschTamaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakonesc" +
- "hTsimshian-SproochTateschTumbuka-SproochElliceaneschTasawaqTuwinesch" +
- "Mëttlert-Atlas-TamazightUdmurteschUgariteschMbundu-SproochRootVai-Sp" +
- "roochVenezeschWepseschWestflämeschMainfränkeschWoteschVoroVunjoWalli" +
- "serdäitschWalamo-SproochWarayWasho-SproochWu-ChineseschKalmückeschMi" +
- "ngrelesch SproochSogaYao-SproochYapeseschYangbenYembaNheengatuKanton" +
- "eseschZapotekeschBliss-SymbolerSeelänneschZenagaMarokkanescht Standa" +
- "rd-TamazightZuni-SproochKeng SproochinhalterZazaModernt Héicharabesc" +
- "hÉisträichescht DäitschSchwäizer HéichdäitschAustralescht EngleschKa" +
- "nadescht EngleschBritescht EngleschAmerikanescht EngleschLatäinameri" +
- "kanescht SpueneschEuropäescht SpueneschMexikanescht SpueneschKanades" +
- "cht FranséischSchwäizer FranséischFlämeschBrasilianescht Portugisesc" +
- "hEuropäescht PortugiseschMoldaweschSerbo-KroateschChinesesch (verein" +
- "facht)Chinesesch (traditionell)",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
- 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0085, 0x008f,
- 0x0096, 0x00a5, 0x00af, 0x00b8, 0x00c2, 0x00ca, 0x00d5, 0x00e4,
- 0x00f4, 0x00fc, 0x0100, 0x010b, 0x011a, 0x0128, 0x0131, 0x0139,
- 0x0141, 0x014b, 0x0155, 0x0160, 0x016a, 0x0172, 0x017b, 0x0184,
- 0x018c, 0x0194, 0x019c, 0x019f, 0x01a7, 0x01b4, 0x01be, 0x01c9,
- 0x01d6, 0x01dc, 0x01f1, 0x01fa, 0x0201, 0x0209, 0x020d, 0x0212,
- 0x021c, 0x0221, 0x022a, 0x0233, 0x023e, 0x0247, 0x0250, 0x025e,
- // Entry 40 - 7F
- 0x0269, 0x0274, 0x027f, 0x028b, 0x0295, 0x029c, 0x02a7, 0x02b2,
- 0x02bd, 0x02c5, 0x02ce, 0x02d7, 0x02e0, 0x02ec, 0x02fa, 0x0302,
- 0x030c, 0x031a, 0x0329, 0x0330, 0x033a, 0x0348, 0x0354, 0x035c,
- 0x0368, 0x0370, 0x037a, 0x0381, 0x0390, 0x039d, 0x03a8, 0x03af,
- 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03e5, 0x03f4, 0x03f9, 0x0404,
- 0x040d, 0x0417, 0x041e, 0x0427, 0x0431, 0x043b, 0x0444, 0x0458,
- 0x0463, 0x0469, 0x0475, 0x0487, 0x0499, 0x04ad, 0x04b3, 0x04c1,
- 0x04cc, 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04fa, 0x04fe, 0x0506,
- // Entry 80 - BF
- 0x050d, 0x0519, 0x0520, 0x052e, 0x053b, 0x0545, 0x054d, 0x0556,
- 0x055e, 0x0566, 0x056c, 0x0577, 0x057c, 0x0589, 0x0593, 0x059d,
- 0x05a7, 0x05ac, 0x05b2, 0x05bb, 0x05c3, 0x05c8, 0x05da, 0x05e6,
- 0x05f0, 0x05f7, 0x0600, 0x0606, 0x0612, 0x061f, 0x0627, 0x0632,
- 0x0640, 0x0649, 0x0652, 0x0658, 0x0661, 0x066a, 0x0673, 0x067d,
- 0x0681, 0x068a, 0x0697, 0x06a4, 0x06ac, 0x06b7, 0x06bc, 0x06c1,
- 0x06c9, 0x06cf, 0x06d5, 0x06df, 0x06e3, 0x06ef, 0x06fd, 0x0704,
- 0x070f, 0x0722, 0x072a, 0x072f, 0x073b, 0x0744, 0x074b, 0x0754,
- // Entry C0 - FF
- 0x075b, 0x0767, 0x0771, 0x0777, 0x0781, 0x078b, 0x0791, 0x07a0,
- 0x07b3, 0x07c1, 0x07d7, 0x07ea, 0x07f8, 0x0812, 0x081e, 0x0824,
- 0x082a, 0x0836, 0x0841, 0x0849, 0x0856, 0x085b, 0x0865, 0x0871,
- 0x0878, 0x0885, 0x088b, 0x088f, 0x0894, 0x089a, 0x089a, 0x08a5,
- 0x08b2, 0x08be, 0x08ca, 0x08cd, 0x08de, 0x08e9, 0x08f5, 0x0900,
- 0x0906, 0x090a, 0x0910, 0x091a, 0x0925, 0x0929, 0x092d, 0x0934,
- 0x0939, 0x0942, 0x0948, 0x094d, 0x0954, 0x0958, 0x0967, 0x0974,
- 0x097e, 0x0982, 0x0989, 0x0990, 0x0999, 0x09a1, 0x09a9, 0x09af,
- // Entry 100 - 13F
- 0x09b7, 0x09bf, 0x09cc, 0x09d7, 0x09e5, 0x09ef, 0x09f4, 0x0a04,
- 0x0a09, 0x0a0f, 0x0a1c, 0x0a21, 0x0a26, 0x0a34, 0x0a41, 0x0a46,
- 0x0a59, 0x0a63, 0x0a70, 0x0a76, 0x0a7c, 0x0a80, 0x0a8b, 0x0a94,
- 0x0a9a, 0x0aa2, 0x0ab1, 0x0ab9, 0x0abf, 0x0acd, 0x0adb, 0x0ae3,
- 0x0aed, 0x0af8, 0x0afd, 0x0b0f, 0x0b1c, 0x0b2f, 0x0b3c, 0x0b48,
- 0x0b51, 0x0b5b, 0x0b65, 0x0b73, 0x0b77, 0x0b84, 0x0b99, 0x0b9d,
- 0x0baa, 0x0bb0, 0x0bc5, 0x0bd5, 0x0be1, 0x0bee, 0x0bf7, 0x0bfe,
- 0x0c0b, 0x0c17, 0x0c29, 0x0c2e, 0x0c36, 0x0c43, 0x0c52, 0x0c5f,
- // Entry 140 - 17F
- 0x0c6f, 0x0c78, 0x0c85, 0x0c97, 0x0ca1, 0x0cad, 0x0cba, 0x0cca,
- 0x0cce, 0x0cd2, 0x0cd8, 0x0ce7, 0x0cf2, 0x0cfc, 0x0d12, 0x0d18,
- 0x0d1e, 0x0d25, 0x0d36, 0x0d47, 0x0d4f, 0x0d5d, 0x0d66, 0x0d74,
- 0x0d77, 0x0d7c, 0x0d80, 0x0d8c, 0x0d93, 0x0d97, 0x0d9e, 0x0daa,
- 0x0db1, 0x0db5, 0x0dbd, 0x0dca, 0x0dd1, 0x0ddd, 0x0de3, 0x0dec,
- 0x0df0, 0x0df8, 0x0e08, 0x0e14, 0x0e1b, 0x0e27, 0x0e35, 0x0e4e,
- 0x0e52, 0x0e5b, 0x0e64, 0x0e71, 0x0e79, 0x0e7e, 0x0e85, 0x0e8f,
- 0x0e9e, 0x0ea4, 0x0ea9, 0x0eaf, 0x0ebc, 0x0ec4, 0x0ed6, 0x0edf,
- // Entry 180 - 1BF
- 0x0ee6, 0x0ef4, 0x0eff, 0x0f04, 0x0f11, 0x0f11, 0x0f1d, 0x0f27,
- 0x0f36, 0x0f43, 0x0f4e, 0x0f5c, 0x0f64, 0x0f79, 0x0f88, 0x0f93,
- 0x0f97, 0x0f9d, 0x0fa5, 0x0fb1, 0x0fc0, 0x0fce, 0x0fd2, 0x0fd8,
- 0x0fe4, 0x0ff1, 0x0ffd, 0x1005, 0x1012, 0x1020, 0x1027, 0x1035,
- 0x1048, 0x1055, 0x1064, 0x1072, 0x107f, 0x1088, 0x108f, 0x109c,
- 0x10ac, 0x10b8, 0x10bf, 0x10c7, 0x10cc, 0x10dd, 0x10e8, 0x10fa,
- 0x1108, 0x110c, 0x111a, 0x1120, 0x112c, 0x1138, 0x113f, 0x1145,
- 0x114e, 0x1153, 0x115d, 0x1163, 0x1169, 0x117b, 0x117f, 0x1188,
- // Entry 1C0 - 1FF
- 0x1198, 0x11a0, 0x11a5, 0x11aa, 0x11b7, 0x11c0, 0x11d2, 0x11e1,
- 0x11f3, 0x11fd, 0x1202, 0x120c, 0x1220, 0x122d, 0x1237, 0x124a,
- 0x1255, 0x1262, 0x126a, 0x1276, 0x127f, 0x128e, 0x129d, 0x12b9,
- 0x12c3, 0x12d8, 0x12e6, 0x12ee, 0x12f5, 0x12fa, 0x1300, 0x130b,
- 0x1315, 0x131c, 0x1326, 0x1329, 0x1338, 0x1341, 0x134e, 0x1355,
- 0x135a, 0x1361, 0x136b, 0x1372, 0x1377, 0x1383, 0x138d, 0x1399,
- 0x1399, 0x139f, 0x13a3, 0x13a7, 0x13b1, 0x13bc, 0x13c4, 0x13cf,
- 0x13d9, 0x13e6, 0x13f9, 0x13ff, 0x140f, 0x1416, 0x1421, 0x142e,
- // Entry 200 - 23F
- 0x143c, 0x144a, 0x1459, 0x1461, 0x146b, 0x1478, 0x147c, 0x148a,
- 0x1498, 0x149c, 0x14a5, 0x14ae, 0x14bb, 0x14c4, 0x14cb, 0x14d5,
- 0x14d9, 0x14de, 0x14e2, 0x14f0, 0x14fd, 0x1502, 0x150d, 0x151a,
- 0x1525, 0x1530, 0x153f, 0x1546, 0x154d, 0x155b, 0x1569, 0x156f,
- 0x1575, 0x157f, 0x1590, 0x1597, 0x15a6, 0x15b2, 0x15b9, 0x15c2,
- 0x15db, 0x15e5, 0x15ef, 0x15fd, 0x1601, 0x160c, 0x1615, 0x161d,
- 0x162a, 0x1638, 0x163f, 0x1643, 0x1648, 0x1658, 0x1666, 0x166b,
- 0x1678, 0x1678, 0x1685, 0x1691, 0x16a4, 0x16a8, 0x16b3, 0x16bc,
- // Entry 240 - 27F
- 0x16c3, 0x16c8, 0x16d1, 0x16dd, 0x16e8, 0x16f6, 0x1702, 0x1708,
- 0x1728, 0x1734, 0x1748, 0x174c, 0x1762, 0x1762, 0x177b, 0x1794,
- 0x17a9, 0x17bc, 0x17ce, 0x17e4, 0x1802, 0x1818, 0x182e, 0x182e,
- 0x1844, 0x185a, 0x185a, 0x1863, 0x187e, 0x1897, 0x18a1, 0x18b0,
- 0x18c8, 0x18e1,
- },
- },
- { // lg
- "Lu-akaaniLu-amharikiLuwarabuLubelarusiLubulugariyaLubengaliLuceekeLudaak" +
- "iLugereeki/LuyonaaniLungerezaLusipanyaLuperusiLufalansaLuhawuzaLuhin" +
- "duLuhangareLuyindonezyaLuyiboLuyitaleLujapaniLunnajjavaLukmeLukoreya" +
- "LugandaLumalayiLubbamaLunepaliLuholandiLupunjabiLupolandiLupotugiizi" +
- "LulomaniyaLulasaLunarwandaLusomaliyaLuswideniLutamiiruLuttaayiLutake" +
- "LuyukurayineLu-uruduLuvyetinaamuLuyorubaLucayinaLuzzulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0026, 0x0032,
- 0x0032, 0x0032, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0049, 0x0049, 0x0049, 0x0049, 0x005c, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f,
- 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x0087,
- 0x0087, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00b1, 0x00b1, 0x00b9, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c8, 0x00c8, 0x00d0, 0x00d0, 0x00d0, 0x00d0,
- 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7,
- 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7,
- 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e6, 0x00e6, 0x00e6,
- 0x00ee, 0x00ee, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0100, 0x0100, 0x0109,
- // Entry 80 - BF
- 0x0109, 0x0114, 0x0114, 0x0114, 0x0114, 0x011e, 0x0124, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
- 0x0141, 0x0141, 0x014a, 0x014a, 0x014a, 0x0152, 0x0152, 0x0152,
- 0x0152, 0x0152, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164,
- 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
- 0x0178, 0x0180, 0x0180, 0x0188, 0x018f,
- },
- },
- { // lkt
- "Abkhaz IyápiAvestan IyápiAfrikaans IyápiAmharic IyápiArab IyápiAssamese " +
- "IyápiAvaric IyápiAzerbaijani IyápiBashkir IyápiBelarus IyápiBulgar I" +
- "yápiBengali IyápiTibetan IyápiBosnia IyápiCatalan IyápiChechen Iyápi" +
- "Maštíŋča Oyáte IyápiCzech IyápiChuvash IyápiWales IyápiDane IyápiIyá" +
- "šiča IyápiGreece IyápiWašíčuiyapiEsperanto IyápiSpayóla IyápiEstoni" +
- "a IyápiBasque IyápiPersian IyápiFinnish IyápiFiji IyápiFaroese Iyápi" +
- "Wašíču Ikčéka IyápiIrish IyápiGalician IyápiGuarani IyápiGujarati Iy" +
- "ápiHausa IyápiHebrew IyápiHindi IyápiCroatian IyápiHaiti IyápiHunga" +
- "ry IyápiArmenia IyápiIndonesia IyápiIgbo IyápiIceland IyápiItalia Iy" +
- "ápiKisúŋla IyápiJava IyápiGeoria IyápiKazakh IyápiKhmer IyápiKannad" +
- "a IyápiKorea IyápiKashmir IyápiKurd IyápiKirghiz IyápiLatin IyápiLux" +
- "embourg IyápiLao IyápiLithuania IyápiltLatvia IyápiMalagasy IyápiMao" +
- "ri IyápiMacedonia IyápiMalayalam IyápiMarathi IyápiMalay IyápiMaltes" +
- "e IyápiBurmese IyápiNepal IyápiDutch IyápiŠináglegleǧa IyápiȞaȟátȟuŋ" +
- "waŋ IyápiOriya IyápiPunjabi IyápiPolish IyápiPashto IyápiPortuguese " +
- "IyápiQuechua IyápiRomansh IyápiRomanian IyápiRussia IyápiSanskrit Iy" +
- "ápiSindhi IyápiSinhala IyápiSlovak IyápiSlovenian IyápiSomali Iyápi" +
- "Albanian IyápiSerbia IyápiSundanese IyápiSwedish IyápiSwahili IyápiT" +
- "amil IyápiTelugu IyápiTajik IyápiThai IyápiTigrinya IyápiTurkmen Iyá" +
- "piTongan IyápiTurkish IyápiTatar IyápiUyghur IyápiUkrain IyápiUrdu I" +
- "yápiUzbek IyápiVietnamese IyápiWolof IyápiXhosa IyápiYoruba IyápiPȟe" +
- "čhókaŋ Háŋska IyápiZulu IyápiAdyghe IyápiItóǧata Altai IyápiMaȟpíya" +
- " Tȟó IyápiBaluchi IyápiBamun IyápiBeja IyápiBuriat IyápiMari IyápiCh" +
- "erokee IyápiŠahíyela IyápiCoptic IyápiCrimean Turkish IyápiDakȟótiya" +
- "piDargwa IyápiDogri IyápiFilipino IyápiGbaya IyápiHawaiian IyápiIngu" +
- "sh IyápiKara-Kalpak IyápiKabardian IyápiLahnda IyápiLakȟólʼiyapiMizo" +
- " IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠa" +
- "gláša WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpay" +
- "ólaȟča IyápiFlemish IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋ" +
- "ska Iyápi Ȟče",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000d, 0x001b, 0x002b, 0x002b, 0x0039, 0x0039,
- 0x0044, 0x0053, 0x0060, 0x0060, 0x0072, 0x0080, 0x008e, 0x009b,
- 0x009b, 0x009b, 0x00a9, 0x00b7, 0x00b7, 0x00c4, 0x00d2, 0x00e0,
- 0x00e0, 0x00e0, 0x00fa, 0x0106, 0x0106, 0x0114, 0x0120, 0x012b,
- 0x013c, 0x013c, 0x013c, 0x013c, 0x0149, 0x0157, 0x0167, 0x0176,
- 0x0184, 0x0191, 0x019f, 0x019f, 0x01ad, 0x01b8, 0x01c6, 0x01df,
- 0x01df, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0217, 0x0217, 0x0223,
- 0x0230, 0x023c, 0x023c, 0x024b, 0x0257, 0x0265, 0x0273, 0x0273,
- // Entry 40 - 7F
- 0x0273, 0x0283, 0x0283, 0x028e, 0x028e, 0x028e, 0x028e, 0x029c,
- 0x02a9, 0x02a9, 0x02b9, 0x02c4, 0x02d1, 0x02d1, 0x02d1, 0x02d1,
- 0x02de, 0x02de, 0x02ea, 0x02f8, 0x0304, 0x0304, 0x0312, 0x031d,
- 0x031d, 0x031d, 0x032b, 0x0337, 0x0348, 0x0348, 0x0348, 0x0348,
- 0x0352, 0x0364, 0x0364, 0x0371, 0x0380, 0x0380, 0x038c, 0x039c,
- 0x03ac, 0x03ac, 0x03ba, 0x03c6, 0x03d4, 0x03e2, 0x03e2, 0x03e2,
- 0x03ee, 0x03ee, 0x03fa, 0x03fa, 0x03fa, 0x03fa, 0x0410, 0x0410,
- 0x0410, 0x0428, 0x0428, 0x0434, 0x0434, 0x0442, 0x0442, 0x044f,
- // Entry 80 - BF
- 0x045c, 0x046d, 0x047b, 0x0489, 0x0489, 0x0498, 0x04a5, 0x04a5,
- 0x04b4, 0x04b4, 0x04c1, 0x04c1, 0x04c1, 0x04cf, 0x04dc, 0x04ec,
- 0x04ec, 0x04ec, 0x04f9, 0x0508, 0x0515, 0x0515, 0x0515, 0x0525,
- 0x0533, 0x0541, 0x054d, 0x055a, 0x0566, 0x0571, 0x0580, 0x058e,
- 0x058e, 0x059b, 0x05a9, 0x05a9, 0x05b5, 0x05b5, 0x05c2, 0x05cf,
- 0x05da, 0x05e6, 0x05e6, 0x05f7, 0x05f7, 0x05f7, 0x0603, 0x060f,
- 0x060f, 0x061c, 0x061c, 0x0639, 0x0644, 0x0644, 0x0644, 0x0644,
- 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
- // Entry C0 - FF
- 0x0651, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x067d,
- 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d,
- 0x067d, 0x068b, 0x068b, 0x068b, 0x068b, 0x0697, 0x0697, 0x0697,
- 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2,
- 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2,
- 0x06a2, 0x06a2, 0x06a2, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af,
- 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af,
- 0x06af, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06c9, 0x06da, 0x06da,
- // Entry 100 - 13F
- 0x06e7, 0x06e7, 0x06fd, 0x06fd, 0x070a, 0x0717, 0x0717, 0x0717,
- 0x0717, 0x0717, 0x0717, 0x0717, 0x0723, 0x0723, 0x0723, 0x0723,
- 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723,
- 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0732,
- 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732,
- 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x073e, 0x073e, 0x073e,
- 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e,
- 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e,
- // Entry 140 - 17F
- 0x073e, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d,
- 0x074d, 0x074d, 0x074d, 0x074d, 0x075a, 0x075a, 0x075a, 0x075a,
- 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x076c, 0x076c, 0x076c,
- 0x076c, 0x076c, 0x076c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
- 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
- 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
- 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
- 0x077c, 0x077c, 0x077c, 0x0789, 0x0789, 0x0789, 0x0789, 0x0789,
- // Entry 180 - 1BF
- 0x0789, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798,
- 0x0798, 0x0798, 0x0798, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
- 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
- 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
- 0x07a3, 0x07a3, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- // Entry 1C0 - 1FF
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- // Entry 200 - 23F
- 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
- 0x07b2, 0x07b2, 0x07b2, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
- 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
- 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
- 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
- 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07de, 0x07de, 0x07de, 0x07de,
- 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
- 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
- // Entry 240 - 27F
- 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
- 0x07de, 0x07de, 0x07de, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9,
- 0x07e9, 0x07e9, 0x0802, 0x081d, 0x083a, 0x084e, 0x084e, 0x084e,
- 0x084e, 0x084e, 0x084e, 0x085c, 0x085c, 0x085c, 0x085c, 0x085c,
- 0x0882, 0x08a5,
- },
- },
- { // ln
- "akanliamarikilialabolibyelorisílibiligalilibengalilitshekɛlialemáligelek" +
- "ilingɛlɛ́salisipanyelipelésanɛlifalansɛ́hausalihindiliongililindonez" +
- "iigbolitalianolizapɔlizavalikambodzalikoreyalingálalimalezilibilimál" +
- "inepalɛlifalamálipendzabilipolonɛlipulutugɛ́siliromanilirisíkinyarwa" +
- "ndalisomalilisuwedɛlitamulilitayelitilikilikrɛniliurduliviyetinámiyo" +
- "rubalisinwazulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000d, 0x000d,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0059, 0x0059, 0x0062,
- 0x0062, 0x0062, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007a,
- 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007f,
- 0x007f, 0x0086, 0x0086, 0x0086, 0x0086, 0x008e, 0x008e, 0x008e,
- // Entry 40 - 7F
- 0x008e, 0x0097, 0x0097, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x00a4, 0x00a4, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
- 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, 0x00dc,
- 0x00e5, 0x00e5, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
- 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f8, 0x00f8, 0x0101,
- // Entry 80 - BF
- 0x0101, 0x0110, 0x0110, 0x0110, 0x0110, 0x0118, 0x011f, 0x012a,
- 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
- 0x012a, 0x012a, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
- 0x013b, 0x013b, 0x0143, 0x0143, 0x0143, 0x0149, 0x0149, 0x0149,
- 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159,
- 0x015f, 0x015f, 0x015f, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x0172, 0x0172, 0x0179, 0x017d,
- },
- },
- { // lo
- loLangStr,
- loLangIdx,
- },
- { // lrc
- "آذأربایئجانیآفریکانسآکانأمھأریأرأڤیآسامیآذأربایئجانی ھارگەباشکیریبئلاروٙ" +
- "سیبولغاریبامبارابأنگالیتأبأتیبئرئتونبوسنیاییکاتالانچئچئنیکوریسکانچو" +
- "اشیڤئلزیدانمارکیآلمانیزوٙنگخائڤئیوٙنانیئینگیلیسیئسپئرانتوئسپانیاییئ" +
- "ستونیاییباسکیفارسیفأنلاندیفیجیفاروٙسیفآرانسئ ئیفئریسی أفتونئشینئیرل" +
- "أندیگالیسیگوٙآرانیگوجأراتیمانکسھائوساعئبریھئنیکوروڤاتیھاییتیمأجاریأ" +
- "رمأنیأندونئزیاییئیگبوسی چوان ییئیسلأندیئیتالیاییئینوکتیتوٙتجاپوٙنیج" +
- "اڤئ ییگورجیکیکیوٙقأزاقکالالیسوٙتخئمئرکانادکورئ ییکأشمیریکوردی کورما" +
- "نجیکورنیشقئرقیزیلاتینلوٙکزامبوٙرگیگاندالینگالالاولیتوڤانیاییلوٙبا ک" +
- "اتانگالاتوڤیاییمالاگاشیمائوریمأقدوٙنیمالایامموغولیمأراتیمالاییمالتی" +
- "بئرمئ یینئدئبئلئ شومالینئپالیھولأندینورڤئجی نینورسکنورڤئجی بوٙکمالئ" +
- "وروموٙئوریاپأنجابیلأھئستانیپأشتوٙپورتئغالیکوچوٙارومانشراندیرومانیای" +
- "یروٙسیکینیاروآنداسانسکئریتسئندیسامی شومالیسانگوسینھالائسلوڤاکیئسلوڤ" +
- "ئنیاییشوناسوٙمالیآلبانیسئربیسوٙدانیسوٙئدیسأڤاحیلیتامیلتئلئگوتاجیکیت" +
- "ایلأندیتیگرینیاتورکأمأنیتوٙنگانتورکیتاتارئویغوٙرئوکراینیئوردوٙئوزبأ" +
- "کیڤییئتنامیڤولوفخوٙسایوروباچینیزولوآقئمماپوٙچئآسوٙبیمابئنابألوٙچی أ" +
- "قتوٙنئشینبودوچیگاچوروٙکیکوردی سوٙرانیتایتازارماسوربی ھاریدوٙالاجولا" +
- " فوٙنییئمبوفیلیپینیگاگائوزآلمانی سوٙئیسیگوٙسیھاڤاییسوربی ڤارونئگوٙمب" +
- "اماچامئکابیلئکامباماکوٙندئکاباردینوکی یورا چینیکالئجینکومی پئرمیاکک" +
- "وٙنکانیشامبالابافیالانگیلاکوٙتالۊری شومالیلوٙلوٙئیاماساییمئروموٙریس" +
- "یماخوڤا میتومئتاٛموٙھاڤکموٙندانگمازأندأرانیناماآلمانی ھاریکئڤاسیوٙن" +
- "ئکوٙنیوٙئرنیان کوٙلئکیچیرومبورئڤاسامبوٙروٙسانگوٙکوردی ھارگەسئناکیار" +
- "ابورو سئنیتاچئلھیتسامی ھارگەلۉلئ سامیئیناری سامیئسکولت سامیسأڤاحیلی" +
- " کونگوتئسوتاساڤاقتامازیغ مینجاییزوٙن نادیارڤایڤوٙنجوٙڤارلپیریسوٙگاتا" +
- "مازیغ مأراکئشیبی نئشوٙعروی مدرنآذأری ھارگەآلمانی ئوتریشیآلمانی سوٙی" +
- "یسیئینگیلیسی ئوستارالیاییئینگیلیسی کاناداییئینگیلیسی بئریتانیاییئین" +
- "گیلیسی ئمریکاییئسپانیایی ئمریکا لاتینئسپانیایی ئوروٙپائسپانیایی مئک" +
- "زیکفآرانسئ ئی کانادافآرانسئ ئی سوٙییسآلمانی ھارگە جافئلاماندیپورتئغ" +
- "الی بئرئزیلپورتئغالی ئوروٙپاییرومانیایی مولداڤیچینی سادە بیەچینی سو" +
- "نأتی",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0018, 0x0018, 0x0028, 0x0030, 0x003c, 0x003c,
- 0x0046, 0x0050, 0x0050, 0x0050, 0x0073, 0x0081, 0x0093, 0x00a1,
- 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00d7, 0x00e7, 0x00f5, 0x0101,
- 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, 0x011b, 0x0125, 0x0135,
- 0x0141, 0x0141, 0x014f, 0x0155, 0x0163, 0x0175, 0x0187, 0x0199,
- 0x01ab, 0x01b5, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e5, 0x01f8,
- 0x0217, 0x0227, 0x0227, 0x0233, 0x0243, 0x0253, 0x025d, 0x0269,
- 0x0273, 0x027b, 0x027b, 0x028b, 0x0297, 0x02a3, 0x02af, 0x02af,
- // Entry 40 - 7F
- 0x02af, 0x02c5, 0x02c5, 0x02cf, 0x02e1, 0x02e1, 0x02e1, 0x02f1,
- 0x0303, 0x0319, 0x0327, 0x0334, 0x033e, 0x033e, 0x034a, 0x034a,
- 0x0354, 0x0368, 0x0372, 0x037c, 0x0389, 0x0389, 0x0397, 0x03b2,
- 0x03b2, 0x03be, 0x03cc, 0x03d6, 0x03f0, 0x03fa, 0x03fa, 0x0408,
- 0x040e, 0x0424, 0x043d, 0x044f, 0x045f, 0x045f, 0x046b, 0x047b,
- 0x0489, 0x0495, 0x04a1, 0x04ad, 0x04b7, 0x04c6, 0x04c6, 0x04e3,
- 0x04ef, 0x04ef, 0x04fd, 0x051a, 0x0537, 0x0537, 0x0537, 0x0537,
- 0x0537, 0x0537, 0x0545, 0x054f, 0x054f, 0x055d, 0x055d, 0x056f,
- // Entry 80 - BF
- 0x057b, 0x058d, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05cb, 0x05e1,
- 0x05f3, 0x05f3, 0x05fd, 0x0612, 0x061c, 0x062a, 0x063a, 0x0650,
- 0x0650, 0x0658, 0x0666, 0x0672, 0x067c, 0x067c, 0x067c, 0x068a,
- 0x0696, 0x06a6, 0x06b0, 0x06bc, 0x06c8, 0x06d8, 0x06e8, 0x06fa,
- 0x06fa, 0x0708, 0x0712, 0x0712, 0x071c, 0x071c, 0x072a, 0x073a,
- 0x0746, 0x0754, 0x0754, 0x0766, 0x0766, 0x0766, 0x0770, 0x077a,
- 0x077a, 0x0786, 0x0786, 0x078e, 0x0796, 0x0796, 0x0796, 0x0796,
- 0x0796, 0x0796, 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e,
- // Entry C0 - FF
- 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07ac, 0x07ac, 0x07ac,
- 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07b4, 0x07b4, 0x07b4, 0x07b4,
- 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4,
- 0x07b4, 0x07bc, 0x07bc, 0x07c4, 0x07c4, 0x07c4, 0x07e7, 0x07e7,
- 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7,
- 0x07e7, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef,
- 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07f7, 0x07f7, 0x07f7,
- 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0805, 0x0805, 0x081e,
- // Entry 100 - 13F
- 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x0828, 0x0828,
- 0x0828, 0x0828, 0x0828, 0x0832, 0x0832, 0x0845, 0x0845, 0x0851,
- 0x0851, 0x0866, 0x0866, 0x0866, 0x086e, 0x086e, 0x086e, 0x086e,
- 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087e,
- 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e,
- 0x087e, 0x087e, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c,
- 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c,
- 0x088c, 0x088c, 0x08a7, 0x08a7, 0x08a7, 0x08b1, 0x08b1, 0x08b1,
- // Entry 140 - 17F
- 0x08b1, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08d0, 0x08d0,
- 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
- 0x08e0, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08f8, 0x08f8,
- 0x08f8, 0x0902, 0x0902, 0x0902, 0x0902, 0x0902, 0x0912, 0x0924,
- 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x093a, 0x093a, 0x093a,
- 0x093a, 0x0948, 0x0948, 0x095f, 0x096f, 0x096f, 0x096f, 0x096f,
- 0x096f, 0x096f, 0x096f, 0x096f, 0x097d, 0x0987, 0x0987, 0x0987,
- 0x0987, 0x0987, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991,
- // Entry 180 - 1BF
- 0x0991, 0x099f, 0x099f, 0x099f, 0x099f, 0x09b4, 0x09b4, 0x09b4,
- 0x09b4, 0x09b4, 0x09ba, 0x09ba, 0x09c6, 0x09c6, 0x09c6, 0x09c6,
- 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09d2, 0x09d2, 0x09d2,
- 0x09d2, 0x09d2, 0x09da, 0x09e8, 0x09e8, 0x09fd, 0x0a07, 0x0a07,
- 0x0a07, 0x0a07, 0x0a07, 0x0a15, 0x0a15, 0x0a15, 0x0a25, 0x0a25,
- 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a3b, 0x0a3b,
- 0x0a3b, 0x0a43, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a68,
- 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, 0x0a7e, 0x0a7e,
- // Entry 1C0 - 1FF
- 0x0a7e, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91,
- 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91,
- 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a99, 0x0a99,
- 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0aa3, 0x0aa3, 0x0aa3,
- 0x0aa3, 0x0aa3, 0x0aa3, 0x0aab, 0x0aab, 0x0aab, 0x0aab, 0x0abd,
- 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9,
- 0x0ade, 0x0ade, 0x0ae6, 0x0ae6, 0x0ae6, 0x0b01, 0x0b01, 0x0b01,
- 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b24, 0x0b35,
- // Entry 200 - 23F
- 0x0b4a, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f,
- 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a,
- 0x0b7a, 0x0b7a, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82,
- 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82,
- 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b90, 0x0b90,
- 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bc2, 0x0bc8, 0x0bc8, 0x0bc8,
- 0x0bc8, 0x0bc8, 0x0bc8, 0x0bc8, 0x0bd6, 0x0bd6, 0x0bd6, 0x0bd6,
- 0x0bd6, 0x0be6, 0x0be6, 0x0be6, 0x0be6, 0x0bf0, 0x0bf0, 0x0bf0,
- // Entry 240 - 27F
- 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0,
- 0x0c0f, 0x0c0f, 0x0c1e, 0x0c1e, 0x0c2f, 0x0c44, 0x0c5f, 0x0c7a,
- 0x0ca5, 0x0cc8, 0x0cf1, 0x0d14, 0x0d3e, 0x0d5f, 0x0d7e, 0x0d7e,
- 0x0d9e, 0x0dbe, 0x0dda, 0x0dec, 0x0e0d, 0x0e32, 0x0e53, 0x0e53,
- 0x0e6b, 0x0e80,
- },
- },
- { // lt
- ltLangStr,
- ltLangIdx,
- },
- { // lu
- "LiakanLiamharikiArabiBelarusiBulegariBengaliTshekiLizelumaniGilikiLingel" +
- "esaLihispaniaMpepajemiMfwàlànsaHausaHindiHongiliLindoneziaIgboLitali" +
- "LiyapaniJavaLikoreyaTshilubaLimalezianepaliolandiLipunjabiMpoloniMpu" +
- "tulugɛsiLiromaniLirisikinyarwandaLisomaliLisuwidiMtamuiliNtailandiNt" +
- "ulukiNkraniUrduLiviyetinamuNyorubashinɛNzulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0010, 0x0010,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x0025,
- 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0055,
- 0x0055, 0x0055, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069,
- 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e,
- 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, 0x007a, 0x007a,
- // Entry 40 - 7F
- 0x007a, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,
- 0x008e, 0x008e, 0x0096, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
- 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
- 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00aa, 0x00aa, 0x00aa, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3,
- 0x00b9, 0x00b9, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf,
- // Entry 80 - BF
- 0x00cf, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e3, 0x00e9, 0x00f4,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
- 0x00f4, 0x00f4, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x0104, 0x0104, 0x010c, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0122,
- 0x0126, 0x0126, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0139, 0x0139, 0x013f, 0x0144,
- },
- },
- { // luo
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluDholuo",
- []uint16{ // 395 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 140 - 17F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 180 - 1BF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x016f,
- },
- },
- { // luy
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiLusunguKihispaniaKiajemiKifaransaKihausaLuhindiKihungariKiindones" +
- "iaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKin" +
- "epaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKiso" +
- "maliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyoru" +
- "baKichinaKizuluLuluhia",
- []uint16{ // 397 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0052, 0x0052, 0x005c,
- 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c,
- 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073,
- 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, 0x0083, 0x0083,
- // Entry 40 - 7F
- 0x0083, 0x008e, 0x008e, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094,
- 0x009e, 0x009e, 0x00a6, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac,
- 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
- 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
- 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
- 0x00bd, 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd,
- 0x00d5, 0x00d5, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e7, 0x00e7, 0x00f0,
- // Entry 80 - BF
- 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x0105, 0x0110,
- 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
- 0x0110, 0x0110, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118,
- 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0130, 0x0130, 0x0130,
- 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0141,
- 0x0147, 0x0147, 0x0147, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
- 0x0152, 0x015a, 0x015a, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- // Entry C0 - FF
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- // Entry 100 - 13F
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- // Entry 140 - 17F
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- // Entry 180 - 1BF
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x016e,
- },
- },
- { // lv
- lvLangStr,
- lvLangIdx,
- },
- { // mas
- "nkʉtʉ́k ɔ́ɔ̄ lAkannkʉtʉ́k ɔ́ɔ̄ lAmharinkʉtʉ́k ɔ́ɔ̄ lmarabunkʉtʉ́k ɔ́ɔ̄ l" +
- "Belarusinkʉtʉ́k ɔ́ɔ̄ lBulgarialnkʉtʉ́k ɔ́ɔ̄ lBengalinkʉtʉ́k ɔ́ɔ̄ lch" +
- "ekinkʉtʉ́k ɔ́ɔ̄ ljerumaninkʉtʉ́k ɔ́ɔ̄ lgirikinkʉtʉ́k ɔ́ɔ̄ nkɨ́resank" +
- "ʉtʉ́k ɔ́ɔ̄ lspaniankʉtʉ́k ɔ́ɔ̄ lpersiankʉtʉ́k ɔ́ɔ̄ faransankʉtʉ́k ɔ" +
- "́ɔ̄ hausankʉtʉ́k ɔ́ɔ̄ lmoindinkʉtʉ́k ɔ́ɔ̄ lhungarinkʉtʉ́k ɔ́ɔ̄ Indo" +
- "nesiankʉtʉ́k ɔ́ɔ̄ Igbonkʉtʉ́k ɔ́ɔ̄ ltaliannkʉtʉ́k ɔ́ɔ̄ japaninkʉtʉ́k" +
- " ɔ́ɔ̄ ljanankʉtʉ́k ɔ́ɔ̄ lkambodiankʉtʉ́k ɔ́ɔ̄ lkoreankʉtʉ́k ɔ́ɔ̄ mal" +
- "aynkʉtʉ́k ɔ́ɔ̄ lBurmankʉtʉ́k ɔ́ɔ̄ lnepalinkʉtʉ́k ɔ́ɔ̄ lduchinkʉtʉ́k " +
- "ɔ́ɔ̄ lpunjabinkʉtʉ́k ɔ́ɔ̄ lpolandnkʉtʉ́k ɔ́ɔ̄ lportuguesenkʉtʉ́k ɔ́" +
- "ɔ̄ lromaniankʉtʉ́k ɔ́ɔ̄ lrusinkʉtʉ́k ɔ́ɔ̄ lruwandankʉtʉ́k ɔ́ɔ̄ lchu" +
- "marinkʉtʉ́k ɔ́ɔ̄ lswidinkʉtʉ́k ɔ́ɔ̄ ltamilnkʉtʉ́k ɔ́ɔ̄ ltainkʉtʉ́k ɔ" +
- "́ɔ̄ lturukinkʉtʉ́k ɔ́ɔ̄ lkraniankʉtʉ́k ɔ́ɔ̄ lurdunkʉtʉ́k ɔ́ɔ̄ lviet" +
- "inamunkʉtʉ́k ɔ́ɔ̄ lyorubankʉtʉ́k ɔ́ɔ̄ lchinankʉtʉ́k ɔ́ɔ̄ lzuluMaa",
- []uint16{ // 406 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0034, 0x0034,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x006c, 0x0089,
- 0x0089, 0x0089, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6,
- 0x00a6, 0x00a6, 0x00a6, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x0116, 0x0116, 0x0131,
- 0x0131, 0x0131, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0180,
- 0x0180, 0x019b, 0x019b, 0x019b, 0x019b, 0x01b7, 0x01b7, 0x01b7,
- // Entry 40 - 7F
- 0x01b7, 0x01d4, 0x01d4, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec,
- 0x0207, 0x0207, 0x0221, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a,
- 0x023a, 0x023a, 0x0257, 0x0257, 0x0271, 0x0271, 0x0271, 0x0271,
- 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271,
- 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271,
- 0x0271, 0x0271, 0x0271, 0x028a, 0x028a, 0x02a4, 0x02a4, 0x02a4,
- 0x02bf, 0x02bf, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9,
- 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02f5, 0x02f5, 0x0310,
- // Entry 80 - BF
- 0x0310, 0x032f, 0x032f, 0x032f, 0x032f, 0x034b, 0x0364, 0x0380,
- 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380,
- 0x0380, 0x0380, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
- 0x03b6, 0x03b6, 0x03d0, 0x03d0, 0x03d0, 0x03e8, 0x03e8, 0x03e8,
- 0x03e8, 0x03e8, 0x0403, 0x0403, 0x0403, 0x0403, 0x0403, 0x041e,
- 0x0437, 0x0437, 0x0437, 0x0455, 0x0455, 0x0455, 0x0455, 0x0455,
- 0x0455, 0x0470, 0x0470, 0x048a, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- // Entry C0 - FF
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- // Entry 100 - 13F
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- // Entry 140 - 17F
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- // Entry 180 - 1BF
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a6,
- },
- },
- { // mer
- "KĩakaniKĩamarĩkiKĩarabuKĩbelarusiKĩbulugĩriaKĩbangiraKĩchekiKĩnjamanĩKĩn" +
- "girikiKĩngerethaKĩspĩniKĩpasiaKĩfuransiKĩhausaKĩhĩndiKĩhangarĩKĩindo" +
- "nesiaKĩigboKĩitalĩKĩjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburmaKĩn" +
- "epaliKĩholandiKĩpunjabuKĩpolandiKĩpochogoKĩromaniaKĩrashiaKĩrwandaKĩ" +
- "somaliKĩswideniKĩtamiluKĩthailandiKĩtakĩKĩukirĩniKĩurduKĩvietinamuKĩ" +
- "yorubaKĩchinaKĩzuluKĩmĩrũ",
- []uint16{ // 411 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0013, 0x0013,
- 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, 0x0033,
- 0x0033, 0x0033, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
- 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0050, 0x0050, 0x0050, 0x0050, 0x005a, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0088,
- 0x0088, 0x0091, 0x0091, 0x0091, 0x0091, 0x009c, 0x009c, 0x009c,
- // Entry 40 - 7F
- 0x009c, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af,
- 0x00b8, 0x00b8, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
- 0x00c8, 0x00c8, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00ed, 0x00ed, 0x00ed,
- 0x00f6, 0x00f6, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
- 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x010a, 0x010a, 0x0114,
- // Entry 80 - BF
- 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013a,
- 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a,
- 0x013a, 0x013a, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143,
- 0x014d, 0x014d, 0x0156, 0x0156, 0x0156, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0175,
- 0x017c, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188,
- 0x0188, 0x0191, 0x0191, 0x0199, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- // Entry C0 - FF
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- // Entry 100 - 13F
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- // Entry 140 - 17F
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- // Entry 180 - 1BF
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01a0, 0x01a0, 0x01a9,
- },
- },
- { // mfe
- "akanamarikarabbielorisbilgarbengalitchekalmangrekangleespagnolpersanfran" +
- "sehaoussahindihongrwaindonezienigboitalienzaponezavanekhmer, santral" +
- "koreenmalebirmannepaleolandepenjabipoloneportigerouminrisrwandasomal" +
- "iswedwatamoulthaïtirkikrenienourdouvietnamienyorubasinwa, mandarinzo" +
- "uloukreol morisien",
- []uint16{ // 412 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x001c,
- 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
- 0x0023, 0x0023, 0x0023, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x002d, 0x002d, 0x002d, 0x002d, 0x0031, 0x0036, 0x0036, 0x003e,
- 0x003e, 0x003e, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004a,
- 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0051,
- 0x0051, 0x0056, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d,
- // Entry 40 - 7F
- 0x005d, 0x0067, 0x0067, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x0072, 0x0072, 0x0078, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x008c, 0x008c, 0x0092, 0x0092, 0x0092, 0x0092,
- 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
- 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
- 0x0092, 0x0092, 0x0092, 0x0096, 0x0096, 0x009c, 0x009c, 0x009c,
- 0x00a2, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
- 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b5,
- // Entry 80 - BF
- 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c5, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1,
- 0x00d7, 0x00d7, 0x00dd, 0x00dd, 0x00dd, 0x00e2, 0x00e2, 0x00e2,
- 0x00e2, 0x00e2, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ee,
- 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
- 0x00fe, 0x0104, 0x0104, 0x0113, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- // Entry C0 - FF
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- // Entry 100 - 13F
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- // Entry 140 - 17F
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- // Entry 180 - 1BF
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0127,
- },
- },
- { // mg
- "AkanAmharikaAraboBielorosyBiolgaraBengaliTsekyAlemaninaGrikaAnglisyEspan" +
- "iolaPersaFrantsayhaoussahindihongroàIndonezianinaigboItalianinaJapon" +
- "eyJavaneykhmerKoreaninaMalagasyMalayBirmanaNepaleHolandeyPenjabiPolo" +
- "neyPortiogeyRomanianinaRosianinaRoandeSomalianinaSoisaTamoilaTaioane" +
- "yTiorkaOkrainianinaOrdòVietnamianinaYôrobàSinoa, MandarinZolò",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x0022,
- 0x0022, 0x0022, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
- 0x0029, 0x0029, 0x0029, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x0037, 0x0037, 0x0037, 0x0037, 0x003c, 0x0043, 0x0043, 0x004c,
- 0x004c, 0x004c, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059,
- 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0060,
- 0x0060, 0x0065, 0x0065, 0x0065, 0x0065, 0x006d, 0x006d, 0x006d,
- // Entry 40 - 7F
- 0x006d, 0x007a, 0x007a, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
- 0x0088, 0x0088, 0x008f, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x0096, 0x0096, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
- 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
- 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ac,
- 0x00ac, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00b8, 0x00b8, 0x00b8,
- 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d4,
- // Entry 80 - BF
- 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f1, 0x00f7,
- 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x0116, 0x0116, 0x0116,
- 0x0116, 0x0116, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0128,
- 0x012d, 0x012d, 0x012d, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a,
- 0x013a, 0x0142, 0x0142, 0x0151, 0x0156,
- },
- },
- { // mgh
- "IkanImhariIarabuIbelausiIbulgariaIbanglaIchekiIjerimaniIgirikiIngilishiI" +
- "hispaniolaIajemiIfaransaIhausaIhindiIhungariIgboItalianoIjapaniIjava" +
- "IkambodiaIkoreaImalesiaIburmaInepaliIholanziIpunjabiIpolandiNrenoIro" +
- "maniaIrisiInyarandaIsomaliIswidiItamilItailandiIturukiIukranIhurduIv" +
- "yetinamuIyorubaIchinaIzuluMakua",
- []uint16{ // 414 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0021,
- 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x0037, 0x0037, 0x0037, 0x0037, 0x003e, 0x0047, 0x0047, 0x0052,
- 0x0052, 0x0052, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0060,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0066,
- 0x0066, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0074, 0x0074,
- // Entry 40 - 7F
- 0x0074, 0x0074, 0x0074, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0080, 0x0080, 0x0087, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c,
- 0x008c, 0x008c, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9,
- 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
- 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c8,
- // Entry 80 - BF
- 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d5, 0x00da, 0x00e3,
- 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
- 0x00e3, 0x00e3, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00f0, 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010c,
- 0x0112, 0x0112, 0x0112, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x0123, 0x0123, 0x0129, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- // Entry C0 - FF
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- // Entry 100 - 13F
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- // Entry 140 - 17F
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- // Entry 180 - 1BF
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x0133,
- },
- },
- { // mgo
- "metaʼngam tisɔʼ",
- []uint16{ // 557 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 140 - 17F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- // Entry 1C0 - 1FF
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- // Entry 200 - 23F
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0012,
- },
- },
- { // mk
- mkLangStr,
- mkLangIdx,
- },
- { // ml
- mlLangStr,
- mlLangIdx,
- },
- { // mn
- mnLangStr,
- mnLangIdx,
- },
- { // mr
- mrLangStr,
- mrLangIdx,
- },
- { // ms
- msLangStr,
- msLangIdx,
- },
- { // mt
- "AfarAbkażjanAvestanAfrikansAkanAmħarikuAragoneseGħarbiAssameseAvarikAjma" +
- "raAżerbajġaniBaxkirBelarussuBulgaruBislamaBambaraBengaliTibetjanBren" +
- "tonBosnijanKatalanĊeċenĊamorroKorsikuKrijĊekSlaviku tal-KnisjaĊuvaxW" +
- "elxDaniżĠermaniżDiveħiDżongkaEweGriegIngliżEsperantoSpanjolEstonjanB" +
- "askPersjanFulaħFinlandiżFiġiFawriżFranċiżFriżjanIrlandiżGalliku Skoċ" +
- "ċiżGallegjanGwaraniGuġaratiManksĦawsaEbrajkĦindiĦiri MotuKroatHaiti" +
- "anUngeriżArmenjanĦereroInterlinguaIndoneżjanInterlingueIgboSichuan Y" +
- "iInupjakIdoIżlandiżTaljanInukitutĠappuniżĠavaniżĠorġjanKongoKikujuKu" +
- "anyamaKażakKalallisutKmerKannadaKorejanKanuriKaxmiriKurdiżKomiKornik" +
- "uKirgiżLatinLetżburgiżGandaLimburgishLingaljanLaoLitwanjanLuba-Katan" +
- "gaLatvjanMalagażiMarxallMaoriMaċedonjanMalajalamMongoljanMaratiMalaj" +
- "anMaltiBurmiżNawuruNdebele, ta’ FuqNepaliżNdongaOlandiżNinorsk Norve" +
- "ġiżBokmahal NorveġiżNdebele, t’IsfelNavaħoĊiċewa; NjanġaOċċitanOġib" +
- "waOromo (Afan)OrijaOssettikuPunġabiPaliPollakkPaxtunPortugiżKeċwaRet" +
- "o-RomanzRundiRumenRussuKinjarwandaSanskritSardinjanSindiSami ta’ Fuq" +
- "SangoSinħaliżSlovakkSlovenSamojanXonaSomaliAlbaniżSerbSwatiSoto, t’I" +
- "sfelSundaniżSvediżSwaħiliTamilTeluguTaġikTajlandiżTigrinjaTurkmeniZw" +
- "anaTonganTorkTsongaTatarTaħitjanWigurUkranjanUrduUżbekVendaVjetnamiż" +
- "VolapukWalloonWolofĦożaJiddixJorubaŻwangĊiniżŻuluAċiniżAkoliAdangmeA" +
- "dygheAfriħiliAjnuAkkadjenAleutIngliż, AntikAngikaAramajkArawkanjanAr" +
- "apaħoArawakAsturianAwadħiBaluċiBaliniżBasaBejaBembaBojpuriBikolBiniS" +
- "iksikaBrajBurjatBuginiżBlinKaddoKaribAtsamSibwanoĊibċaĊagatajĊukeseM" +
- "ariĠargon taċ-ĊinukĊostawĊipewjanĊerokijXajennKoptikuCrimean Turkish" +
- "; Crimean TatarKashubianDakotaDargwaDelawerjanSlavDogribDinkaDogriLo" +
- "wer SorbianDwalaOlandiż, MedjevaliDjulaEfikEġizzjan (Antik)EkajukEla" +
- "mitIngliż, MedjevaliEwondoFangFilippinoFonFranċiż, MedjevaliFranċiż," +
- " AntikFrijuljanGaGajoGbajaGeezGilbertjanĠermaniku, Medjevali PulitĠe" +
- "rmaniku, Antik PulitGondiGorontaloGotikuĠerboGrieg, AntikGwiċinĦajda" +
- "ĦawajjanHiligaynonĦittitĦmongUpper SorbianĦupaIbanIlokoIngushLojban" +
- "Lhudi-PersjanLhudi-GħarbiKara-KalpakKabuljanKaċinKambaKawiKabardianK" +
- "asiKotaniżKimbunduKonkaniKosrejanKpelleKarachay-BalkarKuruskKumikuKu" +
- "tenajLadinoLandaLambaLeżgjanMongoLożiLuba-LuluwaLuwisinużLundaLuwaLu" +
- "xajMaduriżMagaħiMajtiliMakasarMandingwanMasajMokshaMandarMendeIrland" +
- "iż, MedjevaliMikmekMinangkabawManċurjanManipuriMoħakMossiLingwi Dive" +
- "rsiKriekMirandiżMarwariErzyaNeapolitanĠermaniż Komuni; Sassonu Komun" +
- "iNewariNijasNijuwejanNogaiSkandinav, AntikSoto, ta’ FuqClassical New" +
- "ariNjamweżiNyankoleNjoroNżimaOsaġjanTork (Imperu Ottoman)Pangasinjan" +
- "PaħlaviPampamgaPapjamentoPalawjanPersjan AntikFeniċjuPonpejanProvenz" +
- "al, AntikRaġastaniRapanwiRarotonganiŻingaruAromanijanSandaweJakutSam" +
- "ritanSaskaSantaliSkoċċiżSelkupIrlandiż, AntikXanSidamoSouthern SamiL" +
- "ule SamiInari SamiSkolt SamiSoninkeSogdienSererSukumaSusuSumerjanSir" +
- "janTimneTerenoTetumTigreTivTokelauKlingonTlingitTamaxekTonga (Njasa)" +
- "Tok PisinZimxjanTumbukaTuvaluTuvinjanUdmurtUgaritikuUmbunduGħerqVaiV" +
- "otikWalamoWarajWaxoKalmykJaoJapeseŻapotekŻenagaŻuniGħarbi Standard M" +
- "odernIngliż AwstraljanIngliż BrittanikuIngliż AmerikanFranċiż Kanadi" +
- "żFranċiż ŻvizzeruMoldavjanSerbo-KroatĊiniż Simplifikat",
- []uint16{ // 609 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0029, 0x0032,
- 0x0039, 0x0041, 0x0047, 0x004d, 0x005a, 0x0060, 0x0069, 0x0070,
- 0x0077, 0x007e, 0x0085, 0x008d, 0x0094, 0x009c, 0x00a3, 0x00aa,
- 0x00b2, 0x00b9, 0x00bd, 0x00c1, 0x00d3, 0x00d9, 0x00dd, 0x00e3,
- 0x00ed, 0x00f4, 0x00fc, 0x00ff, 0x0104, 0x010b, 0x0114, 0x011b,
- 0x0123, 0x0127, 0x012e, 0x0134, 0x013e, 0x0143, 0x014a, 0x0153,
- 0x015b, 0x0164, 0x0176, 0x017f, 0x0186, 0x018f, 0x0194, 0x019a,
- 0x01a0, 0x01a6, 0x01b0, 0x01b5, 0x01bc, 0x01c4, 0x01cc, 0x01d3,
- // Entry 40 - 7F
- 0x01de, 0x01e9, 0x01f4, 0x01f8, 0x0202, 0x0209, 0x020c, 0x0216,
- 0x021c, 0x0224, 0x022e, 0x0237, 0x0240, 0x0245, 0x024b, 0x0253,
- 0x0259, 0x0263, 0x0267, 0x026e, 0x0275, 0x027b, 0x0282, 0x0289,
- 0x028d, 0x0294, 0x029b, 0x02a0, 0x02ac, 0x02b1, 0x02bb, 0x02c4,
- 0x02c7, 0x02d0, 0x02dc, 0x02e3, 0x02ec, 0x02f3, 0x02f8, 0x0303,
- 0x030c, 0x0315, 0x031b, 0x0322, 0x0327, 0x032e, 0x0334, 0x0346,
- 0x034e, 0x0354, 0x035c, 0x036e, 0x0381, 0x0393, 0x039a, 0x03ab,
- 0x03b4, 0x03bb, 0x03c7, 0x03cc, 0x03d5, 0x03dd, 0x03e1, 0x03e8,
- // Entry 80 - BF
- 0x03ee, 0x03f7, 0x03fd, 0x0408, 0x040d, 0x0412, 0x0417, 0x0422,
- 0x042a, 0x0433, 0x0438, 0x0446, 0x044b, 0x0455, 0x045c, 0x0462,
- 0x0469, 0x046d, 0x0473, 0x047b, 0x047f, 0x0484, 0x0493, 0x049c,
- 0x04a3, 0x04ab, 0x04b0, 0x04b6, 0x04bc, 0x04c6, 0x04ce, 0x04d6,
- 0x04db, 0x04e1, 0x04e5, 0x04eb, 0x04f0, 0x04f9, 0x04fe, 0x0506,
- 0x050a, 0x0510, 0x0515, 0x051f, 0x0526, 0x052d, 0x0532, 0x0538,
- 0x053e, 0x0544, 0x054a, 0x0551, 0x0556, 0x055e, 0x0563, 0x056a,
- 0x0570, 0x0570, 0x0579, 0x0579, 0x057d, 0x0585, 0x0585, 0x058a,
- // Entry C0 - FF
- 0x058a, 0x058a, 0x0598, 0x059e, 0x05a5, 0x05af, 0x05af, 0x05b7,
- 0x05b7, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5,
- 0x05cc, 0x05d3, 0x05db, 0x05db, 0x05df, 0x05df, 0x05df, 0x05df,
- 0x05e3, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05ef,
- 0x05f4, 0x05f8, 0x05f8, 0x05f8, 0x05ff, 0x05ff, 0x05ff, 0x0603,
- 0x0603, 0x0603, 0x0603, 0x0609, 0x0611, 0x0611, 0x0615, 0x0615,
- 0x061a, 0x061f, 0x061f, 0x0624, 0x062b, 0x062b, 0x0632, 0x063a,
- 0x0641, 0x0645, 0x0658, 0x065f, 0x0668, 0x0670, 0x0676, 0x0676,
- // Entry 100 - 13F
- 0x067d, 0x067d, 0x069b, 0x06a4, 0x06aa, 0x06b0, 0x06b0, 0x06ba,
- 0x06be, 0x06c4, 0x06c9, 0x06c9, 0x06ce, 0x06db, 0x06db, 0x06e0,
- 0x06f3, 0x06f3, 0x06f8, 0x06f8, 0x06f8, 0x06fc, 0x06fc, 0x070d,
- 0x0713, 0x0719, 0x072b, 0x072b, 0x0731, 0x0731, 0x0735, 0x073e,
- 0x073e, 0x0741, 0x0741, 0x0755, 0x0765, 0x0765, 0x0765, 0x0765,
- 0x076e, 0x0770, 0x0770, 0x0770, 0x0774, 0x0779, 0x0779, 0x077d,
- 0x0787, 0x0787, 0x07a2, 0x07b9, 0x07b9, 0x07be, 0x07c7, 0x07cd,
- 0x07d3, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e6, 0x07ec,
- // Entry 140 - 17F
- 0x07ec, 0x07f5, 0x07f5, 0x07ff, 0x0806, 0x080c, 0x0819, 0x0819,
- 0x081e, 0x0822, 0x0822, 0x0827, 0x082d, 0x082d, 0x082d, 0x0833,
- 0x0833, 0x0833, 0x0840, 0x084d, 0x084d, 0x0858, 0x0860, 0x0866,
- 0x0866, 0x086b, 0x086f, 0x0878, 0x0878, 0x0878, 0x0878, 0x0878,
- 0x0878, 0x0878, 0x0878, 0x087c, 0x0884, 0x0884, 0x0884, 0x0884,
- 0x0884, 0x0884, 0x088c, 0x088c, 0x0893, 0x089b, 0x08a1, 0x08b0,
- 0x08b0, 0x08b0, 0x08b0, 0x08b6, 0x08b6, 0x08b6, 0x08b6, 0x08bc,
- 0x08c3, 0x08c9, 0x08c9, 0x08ce, 0x08d3, 0x08db, 0x08db, 0x08db,
- // Entry 180 - 1BF
- 0x08db, 0x08db, 0x08db, 0x08e0, 0x08e5, 0x08e5, 0x08e5, 0x08f0,
- 0x08fa, 0x08ff, 0x0903, 0x0908, 0x0908, 0x0908, 0x0908, 0x0910,
- 0x0910, 0x0917, 0x091e, 0x0925, 0x092f, 0x0934, 0x0934, 0x093a,
- 0x0940, 0x0945, 0x0945, 0x0945, 0x0959, 0x0959, 0x0959, 0x095f,
- 0x096a, 0x0974, 0x097c, 0x0982, 0x0987, 0x0987, 0x0987, 0x0995,
- 0x099a, 0x09a3, 0x09aa, 0x09aa, 0x09aa, 0x09af, 0x09af, 0x09af,
- 0x09b9, 0x09b9, 0x09da, 0x09e0, 0x09e5, 0x09ee, 0x09ee, 0x09ee,
- 0x09ee, 0x09f3, 0x0a03, 0x0a03, 0x0a03, 0x0a12, 0x0a12, 0x0a22,
- // Entry 1C0 - 1FF
- 0x0a2b, 0x0a33, 0x0a38, 0x0a3e, 0x0a46, 0x0a5b, 0x0a66, 0x0a6e,
- 0x0a76, 0x0a80, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a95, 0x0a95,
- 0x0a9d, 0x0a9d, 0x0a9d, 0x0aa5, 0x0aa5, 0x0ab5, 0x0ab5, 0x0ab5,
- 0x0abf, 0x0ac6, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad9, 0x0ad9,
- 0x0ad9, 0x0ad9, 0x0ae3, 0x0ae3, 0x0aea, 0x0aef, 0x0af7, 0x0af7,
- 0x0afc, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b0d, 0x0b0d,
- 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b13, 0x0b13, 0x0b23, 0x0b23,
- 0x0b23, 0x0b26, 0x0b26, 0x0b2c, 0x0b2c, 0x0b2c, 0x0b39, 0x0b42,
- // Entry 200 - 23F
- 0x0b4c, 0x0b56, 0x0b5d, 0x0b64, 0x0b64, 0x0b69, 0x0b69, 0x0b69,
- 0x0b6f, 0x0b73, 0x0b7b, 0x0b7b, 0x0b7b, 0x0b7b, 0x0b81, 0x0b81,
- 0x0b81, 0x0b86, 0x0b86, 0x0b8c, 0x0b91, 0x0b96, 0x0b99, 0x0ba0,
- 0x0ba0, 0x0ba7, 0x0bae, 0x0bae, 0x0bb5, 0x0bc2, 0x0bcb, 0x0bcb,
- 0x0bcb, 0x0bcb, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7,
- 0x0be7, 0x0bed, 0x0bf6, 0x0bfd, 0x0c03, 0x0c06, 0x0c06, 0x0c06,
- 0x0c06, 0x0c06, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c11, 0x0c16,
- 0x0c1a, 0x0c1a, 0x0c1a, 0x0c20, 0x0c20, 0x0c20, 0x0c23, 0x0c29,
- // Entry 240 - 27F
- 0x0c29, 0x0c29, 0x0c29, 0x0c29, 0x0c31, 0x0c31, 0x0c31, 0x0c38,
- 0x0c38, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c54, 0x0c54, 0x0c54, 0x0c54,
- 0x0c66, 0x0c66, 0x0c78, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c88,
- 0x0c9a, 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cb6, 0x0cc1,
- 0x0cd4,
- },
- },
- { // mua
- "akaŋamharikarabiyabelarussiyabulgariabengaliasyekyagermaŋgrekzah Anglofo" +
- "ŋEspaniyaPersiazah sǝr Franssǝhaussahindihungariyaindonesiyaigboita" +
- "liyazah sǝr JapoŋjavaniyakmerkoreamalasiyabirmaniaNepaliyazah sǝr ma" +
- " kasǝŋPǝnjabiPoloniyaZah sǝr PortugalRomaniyaRussiyaZah sǝr RwandaSo" +
- "maliyaSwediaTamulthTurkUkrainiaUrduVietnamiyaYorubazah SyiŋZuluMUNDA" +
- "Ŋ",
- []uint16{ // 423 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000c, 0x000c,
- 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0026,
- 0x0026, 0x0026, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003f, 0x004c, 0x004c, 0x0054,
- 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0071,
- 0x0071, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, 0x007f, 0x007f,
- // Entry 40 - 7F
- 0x007f, 0x0089, 0x0089, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d,
- 0x0094, 0x0094, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- 0x00ab, 0x00ab, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00c4,
- 0x00cc, 0x00cc, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df,
- 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00ef,
- // Entry 80 - BF
- 0x00ef, 0x0100, 0x0100, 0x0100, 0x0100, 0x0108, 0x010f, 0x011e,
- 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e,
- 0x011e, 0x011e, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
- 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, 0x0133, 0x0133, 0x0133,
- 0x0133, 0x0133, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x013f,
- 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
- 0x014d, 0x0153, 0x0153, 0x015c, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- // Entry C0 - FF
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- // Entry 100 - 13F
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- // Entry 140 - 17F
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- // Entry 180 - 1BF
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0167,
- },
- },
- { // my
- myLangStr,
- myLangIdx,
- },
- { // mzn
- "آبخازیآفریکانسآکانامهریعربیآسامیآذری ِترکیباشقیریبلاروسیبلغاریبامباراییب" +
- "نگالیتبتیبرِتونیبوسنیاییکاتالونیچچنیکورسیکانچکیچوواشیولزیدانمارکیآل" +
- "مانیدزونگخااوه\u200cیییونانیانگلیسیاسپرانتوایسپانیولیاستونیاییباسکی" +
- "فارسیفینیشفیجیاییفاروییفرانسویغربی فیریزیایریشگالیکگورانیگجراتیمانک" +
- "سهوساعبریهندیکرواتیهائتیاییمجاریارمنیاندونزیاییایگبوسیچوئان ییایسلن" +
- "دیایتالیاییانوکتیتوتجاپونیجاواییگرجیکیکویوقزاقیکالائلیسوتخمریکانّاد" +
- "اکُره\u200cییکشمیریکوردیکورنیشقرقیزیلاتینلوکزامبورگیگاندالینگالالائ" +
- "وییلتونیاییلوبا-کاتانگالاتویاییمالاگاسیمائوریمقدونیمالایالاممغولیما" +
- "راتیمالاییمالتیبرمه\u200cییشمالی ندبلهنپالیهلندینروژی نینورسکنروژی " +
- "بوکمالاورومواوریاپنجابیلهستونیپشتوپرتغالیقوئچوئارومانشروندیرومانیای" +
- "یروسیکنیاروآنداییسانسکریتسندیشمالی سامیسانگوسینهالااسلواکیاسلوونیای" +
- "یشوناسومالیاییآلبانیاییصربیسوندانسیسوئدیسواحیلیتامیلیتلوگوییتاجیکیت" +
- "اییتیگرینیاییترکمونیتونگانیترکیتاتاریئوغوریاوکراینیاردوازبکیویتنامی" +
- "وولفیخوسایوروباچینیزولوآقمماپوچهآسوبمباییبناییغربی بلوچیبدوییچیگاچر" +
- "وکیاییمیونی کوردیتایتازارماییپایین صربیدوئالاییجولا-فونیامبوفیلیپین" +
- "وگاگائوزیسوییس آلمانیگوسیهاواییاییبالایی صربینگومباماچامهقبایلیکامب" +
- "اییماکوندهکیپ وُردیکویرا چیینیکالنجینکومی-پرمیاککونکانیشامبالابافیا" +
- "ییلانگیلاکوتاشمالی لُریلوئولوییاماساییمِروییموریسینماخوئا-میتومِتاء" +
- "موهاکموندانگمازرونیناماپایین آلمانیکوئاسیونئکونوئرنیانکولهکئیچه" +
- "\u200cئیرومبوروآییسامبوروسانگووجنوبی کردیسِناییکویرابورا سنیتاچلهیتج" +
- "نوبی سامیلوله سامیایناری سامیسکولت سامیکنگو سواحیلیتسوییتاساواقیمیو" +
- "نی اطلس تامزیقینشناسی\u200cیه زوونواییوونجوییوالرپیریسوگامراکش ِاست" +
- "اندارد ِتامازیقتیاین زوون بشناسی\u200cیه نیّهمدرن استاندارد عربیجنو" +
- "بی آذری ترکیاتریش ِآلمانیسوییس ِآلمانیاسترالیای ِانگلیسیکانادای ِان" +
- "گلیسیبریتیش انگلیسیامریکن انگلیسیجنوبی آمریکای ِایسپانیولیاروپای ِا" +
- "یسپانیولیمکزیک ِایسپانیولیکانادای ِفرانسویسوییس ِفرانسویپایین ساکسو" +
- "نیفلمیشبرزیل ِپرتغالیاروپای ِپرتغالیمولداویساده چینیسنتی چینی",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000c, 0x000c, 0x001c, 0x0024, 0x002e, 0x002e,
- 0x0036, 0x0040, 0x0040, 0x0040, 0x0053, 0x0061, 0x006f, 0x007b,
- 0x007b, 0x008d, 0x0099, 0x00a1, 0x00af, 0x00bf, 0x00cf, 0x00d7,
- 0x00d7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00f9, 0x0101, 0x0111,
- 0x011d, 0x011d, 0x012b, 0x0138, 0x0144, 0x0152, 0x0162, 0x0176,
- 0x0188, 0x0192, 0x019c, 0x019c, 0x01a6, 0x01b4, 0x01c0, 0x01ce,
- 0x01e3, 0x01ed, 0x01ed, 0x01f7, 0x0203, 0x020f, 0x0219, 0x0221,
- 0x0229, 0x0231, 0x0231, 0x023d, 0x024d, 0x0257, 0x0261, 0x0261,
- // Entry 40 - 7F
- 0x0261, 0x0275, 0x0275, 0x027f, 0x0292, 0x0292, 0x0292, 0x02a0,
- 0x02b2, 0x02c4, 0x02d0, 0x02dc, 0x02e4, 0x02e4, 0x02f0, 0x02f0,
- 0x02fa, 0x030e, 0x0316, 0x0324, 0x0333, 0x0333, 0x033f, 0x0349,
- 0x0349, 0x0355, 0x0361, 0x036b, 0x0381, 0x038b, 0x038b, 0x0399,
- 0x03a5, 0x03b5, 0x03cc, 0x03dc, 0x03ec, 0x03ec, 0x03f8, 0x0404,
- 0x0416, 0x0420, 0x042c, 0x0438, 0x0442, 0x0451, 0x0451, 0x0466,
- 0x0470, 0x0470, 0x047a, 0x0493, 0x04aa, 0x04aa, 0x04aa, 0x04aa,
- 0x04aa, 0x04aa, 0x04b6, 0x04c0, 0x04c0, 0x04cc, 0x04cc, 0x04da,
- // Entry 80 - BF
- 0x04e2, 0x04f0, 0x04fe, 0x050a, 0x0514, 0x0526, 0x052e, 0x0546,
- 0x0556, 0x0556, 0x055e, 0x0571, 0x057b, 0x0589, 0x0597, 0x05ab,
- 0x05ab, 0x05b3, 0x05c5, 0x05d7, 0x05df, 0x05df, 0x05df, 0x05ef,
- 0x05f9, 0x0607, 0x0613, 0x0621, 0x062d, 0x0635, 0x0649, 0x0657,
- 0x0657, 0x0665, 0x066d, 0x066d, 0x0679, 0x0679, 0x0685, 0x0695,
- 0x069d, 0x06a7, 0x06a7, 0x06b5, 0x06b5, 0x06b5, 0x06bf, 0x06c7,
- 0x06c7, 0x06d3, 0x06d3, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
- 0x06e3, 0x06e3, 0x06e3, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9,
- // Entry C0 - FF
- 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06f5, 0x06f5, 0x06f5,
- 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06fb, 0x06fb, 0x06fb, 0x06fb,
- 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb,
- 0x06fb, 0x0707, 0x0707, 0x0711, 0x0711, 0x0711, 0x0724, 0x0724,
- 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724,
- 0x0724, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e,
- 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x0736, 0x0736, 0x0736,
- 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0746, 0x0746, 0x075b,
- // Entry 100 - 13F
- 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x0765, 0x0765,
- 0x0765, 0x0765, 0x0765, 0x0773, 0x0773, 0x0786, 0x0786, 0x0796,
- 0x0796, 0x07a7, 0x07a7, 0x07a7, 0x07af, 0x07af, 0x07af, 0x07af,
- 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07bf,
- 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf,
- 0x07bf, 0x07bf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf,
- 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf,
- 0x07cf, 0x07cf, 0x07e6, 0x07e6, 0x07e6, 0x07ee, 0x07ee, 0x07ee,
- // Entry 140 - 17F
- 0x07ee, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0815, 0x0815,
- 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815,
- 0x0821, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x0839, 0x0839,
- 0x0839, 0x0847, 0x0847, 0x0847, 0x0847, 0x0847, 0x0855, 0x0866,
- 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x087b, 0x087b, 0x087b,
- 0x087b, 0x0889, 0x0889, 0x089e, 0x08ac, 0x08ac, 0x08ac, 0x08ac,
- 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ba, 0x08c8, 0x08c8, 0x08c8,
- 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2,
- // Entry 180 - 1BF
- 0x08d2, 0x08de, 0x08de, 0x08de, 0x08de, 0x08f1, 0x08f1, 0x08f1,
- 0x08f1, 0x08f1, 0x08f9, 0x08f9, 0x0903, 0x0903, 0x0903, 0x0903,
- 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x090f, 0x090f, 0x090f,
- 0x090f, 0x090f, 0x091b, 0x0929, 0x0929, 0x093e, 0x0948, 0x0948,
- 0x0948, 0x0948, 0x0948, 0x0952, 0x0952, 0x0952, 0x0960, 0x0960,
- 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x096e, 0x096e,
- 0x096e, 0x0976, 0x098d, 0x098d, 0x098d, 0x098d, 0x098d, 0x099b,
- 0x099b, 0x099b, 0x099b, 0x099b, 0x09a3, 0x09a3, 0x09ab, 0x09ab,
- // Entry 1C0 - 1FF
- 0x09ab, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb,
- 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb,
- 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09cc, 0x09cc,
- 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09d6, 0x09d6, 0x09d6,
- 0x09d6, 0x09d6, 0x09d6, 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09ee,
- 0x09ee, 0x09ee, 0x09ee, 0x09ee, 0x09fa, 0x09fa, 0x09fa, 0x09fa,
- 0x0a0d, 0x0a0d, 0x0a19, 0x0a19, 0x0a19, 0x0a32, 0x0a32, 0x0a32,
- 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a53, 0x0a64,
- // Entry 200 - 23F
- 0x0a79, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c,
- 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3,
- 0x0aa3, 0x0aa3, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad,
- 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad,
- 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0abd, 0x0abd,
- 0x0adf, 0x0adf, 0x0adf, 0x0adf, 0x0afb, 0x0b03, 0x0b03, 0x0b03,
- 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b11, 0x0b11, 0x0b11, 0x0b11,
- 0x0b11, 0x0b21, 0x0b21, 0x0b21, 0x0b21, 0x0b29, 0x0b29, 0x0b29,
- // Entry 240 - 27F
- 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29,
- 0x0b5d, 0x0b5d, 0x0b89, 0x0b89, 0x0bad, 0x0bc9, 0x0be2, 0x0bfb,
- 0x0c1e, 0x0c3d, 0x0c58, 0x0c73, 0x0ca3, 0x0cc6, 0x0ce7, 0x0ce7,
- 0x0d06, 0x0d21, 0x0d3a, 0x0d44, 0x0d5f, 0x0d7c, 0x0d8a, 0x0d8a,
- 0x0d9b, 0x0dac,
- },
- },
- { // naq
- "AkangowabAmharicgowabArabiǁî gowabBelarusanǁî gowabBulgariaǁî gowabBenga" +
- "liǁî gowabCzechǁî gowabDuitsXriksEngelsSpaansPersiaǁî gowabFransHaus" +
- "agowabHindigowabHungariaǁî gowabIndonesiaǁî gowabIgbogowabItaliansJa" +
- "paneesJavaneseKhmerǁî gowab, CentralKoreaǁî gowabMalayǁî gowabBurmes" +
- "ǁî gowabNepalǁî gowabHollandsPunjabigowabPoleǁî gowabPortugeesRoman" +
- "iaǁî gowabRussiaǁî gowabRwandaǁî gowabSomaliǁî gowabSwedeǁî gowabTam" +
- "ilǁî gowabThaiǁî gowabTurkeǁî gowabUkrainiaǁî gowabUrduǁî gowabVietn" +
- "amǁî gowabYorubabChineesǁî gowab, MandarinniZulubKhoekhoegowab",
- []uint16{ // 434 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0037, 0x0049,
- 0x0049, 0x0049, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x0073, 0x0079, 0x0079, 0x007f,
- 0x007f, 0x007f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x0094,
- 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x009e,
- 0x009e, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00ba, 0x00ba, 0x00ba,
- // Entry 40 - 7F
- 0x00ba, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00de, 0x00de, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
- 0x00ee, 0x00ee, 0x0106, 0x0106, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0124, 0x0124, 0x0134, 0x0134, 0x0134,
- 0x0143, 0x0143, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b,
- 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x0157, 0x0157, 0x0165,
- // Entry 80 - BF
- 0x0165, 0x016e, 0x016e, 0x016e, 0x016e, 0x017f, 0x018f, 0x019f,
- 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f,
- 0x019f, 0x019f, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af,
- 0x01be, 0x01be, 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db,
- 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fc,
- 0x020a, 0x020a, 0x020a, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
- 0x021b, 0x0222, 0x0222, 0x023f, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- // Entry C0 - FF
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- // Entry 100 - 13F
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- // Entry 140 - 17F
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- // Entry 180 - 1BF
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
- 0x0244, 0x0251,
- },
- },
- { // nd
- "isi-Akhaniisi-Amaharikhiisi-Alabhuisi-Bhelarashiyaniisi-Bulgariaisi-Bhen" +
- "galiisi-Czechisi-Jalimaniisi-Gilikiisi-Ngisiisi-Sipeyiniisi-Pheshiya" +
- "niisi-Fulentshiisi-Hausaisi-Hindiisi-Hangariisi-Indonesiaisi-Igboisi" +
- "-Italianoisi-Japhaniisi-Javaisi-Khambodiyaisi-Koriyaisi-Malayiisi-Bu" +
- "rmaisiNdebeleisi-Nepaliisi-Dutchisi-Phunjabiisi-Pholoshiisi-Potukezi" +
- "isi-Romaniisi-Rashiyaisi-Ruwandaisi-Somaliisi-Swidishiisi-Thamilisi-" +
- "Thayiisi-Thekishiisi-Ukrainisi-Uduisi-Vietnameseisi-Yorubhaisi-China" +
- "isi-Zulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0040,
- 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
- 0x004c, 0x004c, 0x004c, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
- 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, 0x0074, 0x0074, 0x0080,
- 0x0080, 0x0080, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a4,
- 0x00a4, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, 0x00b8, 0x00b8,
- // Entry 40 - 7F
- 0x00b8, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00d9, 0x00d9, 0x00e4, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
- 0x00ec, 0x00ec, 0x00fa, 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
- 0x0104, 0x0104, 0x0104, 0x010e, 0x010e, 0x0117, 0x0117, 0x0121,
- 0x012b, 0x012b, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c,
- // Entry 80 - BF
- 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0162, 0x016d, 0x0178,
- 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
- 0x0178, 0x0178, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182,
- 0x018e, 0x018e, 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1,
- 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b7,
- 0x01be, 0x01be, 0x01be, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
- 0x01cc, 0x01d7, 0x01d7, 0x01e0, 0x01e8,
- },
- },
- { // ne
- neLangStr,
- neLangIdx,
- },
- { // nl
- nlLangStr,
- nlLangIdx,
- },
- { // nmg
- "Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengali" +
- "aKiɛl bó tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwús" +
- "áKiɛl b’indienKiɛl b’ɔ́ngroisKiɛl indonesieKiɛl ikboKiɛl italiaKiɛl" +
- " bó japonɛ̌Kiɛl bó javanɛ̌Kiɛl bó mɛrKiɛl koréKiɛl Malɛ̌siāKiɛl birm" +
- "aniaKiɛl nepalKiɛl bóllandaisKiɛl pɛndjabiKiɛl pɔlɔŋeKiɛl bó pɔ̄rtug" +
- "ɛ̂Kiɛl bó rumɛ̂nKiɛl russiaKiɛl rwandāKiɛl somaliāKiɛl bó suedoisKi" +
- "ɛl tamulKiɛl thaïKiɛl bó turkKiɛl b’ukrɛ̄nienKiɛl úrduKiɛl viɛtnamY" +
- "orúbâKiɛl bó chinoisZulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0036, 0x0044,
- 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
- 0x0068, 0x0068, 0x0068, 0x0068, 0x0077, 0x0083, 0x0083, 0x0089,
- 0x0089, 0x0089, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a9,
- 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00cd, 0x00cd, 0x00cd,
- // Entry 40 - 7F
- 0x00cd, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
- 0x00f2, 0x00f2, 0x0105, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118,
- 0x0118, 0x0118, 0x0126, 0x0126, 0x0131, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0150, 0x0150, 0x0150,
- 0x015b, 0x015b, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017b, 0x017b, 0x018a,
- // Entry 80 - BF
- 0x018a, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01b3, 0x01bf, 0x01cc,
- 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
- 0x01cc, 0x01cc, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x01f6, 0x0201, 0x0201, 0x0201,
- 0x0201, 0x0201, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0224,
- 0x022f, 0x022f, 0x022f, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d,
- 0x023d, 0x0245, 0x0245, 0x0256, 0x025a,
- },
- },
- { // nn
- "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" +
- "aymaraaserbajdsjanskbasjkirskkviterussiskbulgarskbislamabambarabenga" +
- "litibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcree" +
- "tsjekkiskkyrkjeslavisktsjuvanskwalisiskdansktyskdivehidzongkhaewegre" +
- "skengelskesperantospanskestiskbaskiskpersiskfulanifinskfijianskfærøy" +
- "skfranskvestfrisiskirskskotsk-gæliskgaliciskguaranigujaratimanxhausa" +
- "hebraiskhindihiri motukroatiskhaitiskungarskarmenskhererointerlingua" +
- "indonesiskinterlingueibosichuan-yiinupiakidoislandskitalienskinuktit" +
- "utjapanskjavanesiskgeorgiskkikongokikuyukuanyamakasakhiskkalaallisut" +
- "; grønlandskkhmerkannadakoreanskkanurikasjmirikurdiskkomikorniskkirg" +
- "isisklatinluxemburgskgandalimburgisklingalalaotisklitauiskluba-katan" +
- "galatviskmadagassiskmarshallesiskmaorimakedonskmalayalammongolskmara" +
- "thimalayiskmaltesiskburmesisknaurunord-ndebelenepalskndonganederland" +
- "sknynorskbokmålsør-ndebelenavajonyanjaoksitanskojibwaoromooriyaosset" +
- "iskpanjabipalipolskpashtoportugisiskquechuaretoromanskrundirumenskru" +
- "ssiskkinjarwandasanskritsardinsksindhinordsamisksangosingalesiskslov" +
- "akiskslovensksamoanskshonasomalialbanskserbiskswatisørsothosundanesi" +
- "sksvenskswahilitamiltelugutatsjikiskthaitigrinjaturkmensktswanatonga" +
- " (Tonga-øyane)tyrkisktsongatatarisktahitiskuiguriskukrainskurduusbek" +
- "iskvendavietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkine" +
- "siskzuluachinesiskacoliadangmeadygheafrihiliaghemainuakkadiskaleutis" +
- "ksør-altaigammalengelskangikaarameiskaraukanskarapahoarawakasu (Tanz" +
- "ania)asturiskawadhibaluchibalinesiskbasabejabembabena (Tanzania)bhoj" +
- "puribikolbinisiksikabrajbodoburjatiskbuginesiskblincaddokaribiskatsa" +
- "mcebuanskchibchachagataichuukesiskmarichinookchoctawchipewianskchero" +
- "keecheyennekoptiskkrimtatariskkasjubiskdakotadargwadelawareslavejdog" +
- "ribdinkazarmadogrilågsorbiskdualamellumnederlandskjola-fonyidyulakie" +
- "mbuefikgammalegyptiskekajukelamittiskmellomengelskewondofangfilippin" +
- "skfonmellomfranskgammalfransknordfrisiskaustfrisiskfriulianskgagayog" +
- "bayageskiribatiskmellomhøgtyskgammalhøgtyskgondigorontalogotiskgrebo" +
- "gammalgresksveitsertyskgwichinhaidahawaiiskhiligaynonhettittiskhmong" +
- "høgsorbiskhupaibanilokoingusjisklojbanjødepersiskjødearabiskkarakalp" +
- "akiskkabylskkachinjjukambakawikabardisktyapkapverdiskkorokhasikhotan" +
- "esiskkimbundukonkanikosraeanskkpellekarachay-balkarkarelskkurukhbafi" +
- "akumykkutenailadinsklahndalambalezghianmongoloziluba-lulualuisenolun" +
- "daluolushaimaduresiskmagahimaithilimakasarmandingomasaimokshamandarm" +
- "endemellomirskmicmacminangkabaumandsjumanipurimohawkmossimundangflei" +
- "re språkcreekmirandesiskmarwarierzyanapolitansklågtysknewariniasniue" +
- "anskkwasionogaigammalnorskn’konordsothonuerklassisk newarisknyamwezi" +
- "nyankolenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapap" +
- "iamentopalauiskgammalpersiskfønikiskponapiskgammalprovençalskrajasth" +
- "anirapanuirarotonganskromboromaniaromanskrwasandawejakutsksamaritans" +
- "k arameisksasaksantalisangusicilianskskotskselkupiskgammalirskshansi" +
- "damosørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksranan t" +
- "ongoserersukumasususumeriskshimaoreklassisk syrisksyrisktemneterenot" +
- "etumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pisintsim" +
- "shiantumbukatuvalutasawaqtuviniskudmurtugaritiskumbundurotvaivotiskw" +
- "alamowaraywashokalmykyaoyapesiskyangbenkantonesiskzapotecblissymbolz" +
- "enagazuniutan språkleg innhaldzazaausterriksk tysksveitsisk høgtyska" +
- "ustralisk engelskkanadisk engelskbritisk engelskengelsk (amerikansk)" +
- "latinamerikansk spanskiberisk spanskkanadisk fransksveitsisk franskf" +
- "lamskbrasiliansk portugisiskeuropeisk portugisiskmoldaviskserbokroat" +
- "iskforenkla kinesisktradisjonell kinesisk",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032,
- 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079,
- 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba,
- 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e6, 0x00ef, 0x00f7, 0x00fc,
- 0x0100, 0x0106, 0x010e, 0x0111, 0x0116, 0x011d, 0x0126, 0x012c,
- 0x0132, 0x0139, 0x0140, 0x0146, 0x014b, 0x0153, 0x015c, 0x0162,
- 0x016d, 0x0171, 0x017f, 0x0187, 0x018e, 0x0196, 0x019a, 0x019f,
- 0x01a7, 0x01ac, 0x01b5, 0x01bd, 0x01c4, 0x01cb, 0x01d2, 0x01d8,
- // Entry 40 - 7F
- 0x01e3, 0x01ed, 0x01f8, 0x01fb, 0x0205, 0x020c, 0x020f, 0x0217,
- 0x0220, 0x0229, 0x0230, 0x023a, 0x0242, 0x0249, 0x024f, 0x0257,
- 0x0260, 0x0278, 0x027d, 0x0284, 0x028c, 0x0292, 0x029a, 0x02a1,
- 0x02a5, 0x02ac, 0x02b5, 0x02ba, 0x02c5, 0x02ca, 0x02d4, 0x02db,
- 0x02e2, 0x02ea, 0x02f6, 0x02fd, 0x0308, 0x0315, 0x031a, 0x0323,
- 0x032c, 0x0334, 0x033b, 0x0343, 0x034c, 0x0355, 0x035a, 0x0366,
- 0x036d, 0x0373, 0x037e, 0x0385, 0x038c, 0x0398, 0x039e, 0x03a4,
- 0x03ad, 0x03b3, 0x03b8, 0x03bd, 0x03c5, 0x03cc, 0x03d0, 0x03d5,
- // Entry 80 - BF
- 0x03db, 0x03e6, 0x03ed, 0x03f8, 0x03fd, 0x0404, 0x040b, 0x0416,
- 0x041e, 0x0426, 0x042c, 0x0436, 0x043b, 0x0446, 0x044f, 0x0457,
- 0x045f, 0x0464, 0x046a, 0x0471, 0x0478, 0x047d, 0x0486, 0x0491,
- 0x0497, 0x049e, 0x04a3, 0x04a9, 0x04b3, 0x04b7, 0x04bf, 0x04c8,
- 0x04ce, 0x04e2, 0x04e9, 0x04ef, 0x04f7, 0x04ff, 0x0507, 0x050f,
- 0x0513, 0x051b, 0x0520, 0x052c, 0x0533, 0x053b, 0x0540, 0x0545,
- 0x054c, 0x0552, 0x0558, 0x0560, 0x0564, 0x056e, 0x0573, 0x057a,
- 0x0580, 0x0580, 0x0588, 0x058d, 0x0591, 0x0599, 0x0599, 0x05a1,
- // Entry C0 - FF
- 0x05a1, 0x05ab, 0x05b8, 0x05be, 0x05c6, 0x05cf, 0x05cf, 0x05d6,
- 0x05d6, 0x05dc, 0x05dc, 0x05dc, 0x05ea, 0x05ea, 0x05f2, 0x05f2,
- 0x05f8, 0x05ff, 0x0609, 0x0609, 0x060d, 0x060d, 0x060d, 0x060d,
- 0x0611, 0x0616, 0x0616, 0x0625, 0x0625, 0x0625, 0x0625, 0x062d,
- 0x0632, 0x0636, 0x0636, 0x0636, 0x063d, 0x063d, 0x063d, 0x0641,
- 0x0641, 0x0645, 0x0645, 0x064e, 0x0658, 0x0658, 0x065c, 0x065c,
- 0x0661, 0x0669, 0x0669, 0x066e, 0x0676, 0x0676, 0x067d, 0x0685,
- 0x068f, 0x0693, 0x069a, 0x06a1, 0x06ac, 0x06b4, 0x06bc, 0x06bc,
- // Entry 100 - 13F
- 0x06c3, 0x06c3, 0x06cf, 0x06d8, 0x06de, 0x06e4, 0x06e4, 0x06ec,
- 0x06f2, 0x06f8, 0x06fd, 0x0702, 0x0707, 0x0712, 0x0712, 0x0717,
- 0x0728, 0x0732, 0x0737, 0x0737, 0x073d, 0x0741, 0x0741, 0x074f,
- 0x0755, 0x075f, 0x076c, 0x076c, 0x0772, 0x0772, 0x0776, 0x0780,
- 0x0780, 0x0783, 0x0783, 0x078f, 0x079b, 0x079b, 0x07a6, 0x07b1,
- 0x07bb, 0x07bd, 0x07bd, 0x07bd, 0x07c1, 0x07c6, 0x07c6, 0x07c9,
- 0x07d3, 0x07d3, 0x07e1, 0x07ef, 0x07ef, 0x07f4, 0x07fd, 0x0803,
- 0x0808, 0x0813, 0x081f, 0x081f, 0x081f, 0x081f, 0x0826, 0x082b,
- // Entry 140 - 17F
- 0x082b, 0x0833, 0x0833, 0x083d, 0x0847, 0x084c, 0x0857, 0x0857,
- 0x085b, 0x085f, 0x085f, 0x0864, 0x086d, 0x086d, 0x086d, 0x0873,
- 0x0873, 0x0873, 0x087f, 0x088b, 0x088b, 0x0898, 0x089f, 0x08a5,
- 0x08a8, 0x08ad, 0x08b1, 0x08ba, 0x08ba, 0x08be, 0x08be, 0x08c8,
- 0x08c8, 0x08cc, 0x08cc, 0x08d1, 0x08dc, 0x08dc, 0x08dc, 0x08dc,
- 0x08dc, 0x08dc, 0x08e4, 0x08e4, 0x08eb, 0x08f5, 0x08fb, 0x090a,
- 0x090a, 0x090a, 0x0911, 0x0917, 0x0917, 0x091c, 0x091c, 0x0921,
- 0x0928, 0x092f, 0x092f, 0x0935, 0x093a, 0x0942, 0x0942, 0x0942,
- // Entry 180 - 1BF
- 0x0942, 0x0942, 0x0942, 0x0947, 0x094b, 0x094b, 0x094b, 0x0955,
- 0x095c, 0x0961, 0x0964, 0x096a, 0x096a, 0x096a, 0x096a, 0x0974,
- 0x0974, 0x097a, 0x0982, 0x0989, 0x0991, 0x0996, 0x0996, 0x099c,
- 0x09a2, 0x09a7, 0x09a7, 0x09a7, 0x09b1, 0x09b1, 0x09b1, 0x09b7,
- 0x09c2, 0x09c9, 0x09d1, 0x09d7, 0x09dc, 0x09dc, 0x09e3, 0x09f0,
- 0x09f5, 0x0a00, 0x0a07, 0x0a07, 0x0a07, 0x0a0c, 0x0a0c, 0x0a0c,
- 0x0a17, 0x0a17, 0x0a1f, 0x0a25, 0x0a29, 0x0a31, 0x0a31, 0x0a37,
- 0x0a37, 0x0a3c, 0x0a47, 0x0a47, 0x0a4d, 0x0a56, 0x0a5a, 0x0a6b,
- // Entry 1C0 - 1FF
- 0x0a73, 0x0a7b, 0x0a80, 0x0a85, 0x0a8a, 0x0a9b, 0x0aa5, 0x0aac,
- 0x0ab4, 0x0abe, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ad3, 0x0ad3,
- 0x0adc, 0x0adc, 0x0adc, 0x0ae4, 0x0ae4, 0x0af6, 0x0af6, 0x0af6,
- 0x0b00, 0x0b07, 0x0b13, 0x0b13, 0x0b13, 0x0b18, 0x0b1e, 0x0b1e,
- 0x0b1e, 0x0b1e, 0x0b26, 0x0b29, 0x0b30, 0x0b37, 0x0b4b, 0x0b4b,
- 0x0b50, 0x0b57, 0x0b57, 0x0b57, 0x0b5c, 0x0b66, 0x0b6c, 0x0b6c,
- 0x0b6c, 0x0b6c, 0x0b6c, 0x0b6c, 0x0b75, 0x0b75, 0x0b7f, 0x0b7f,
- 0x0b7f, 0x0b83, 0x0b83, 0x0b89, 0x0b89, 0x0b89, 0x0b93, 0x0b9d,
- // Entry 200 - 23F
- 0x0ba8, 0x0bb4, 0x0bbb, 0x0bc2, 0x0bce, 0x0bd3, 0x0bd3, 0x0bd3,
- 0x0bd9, 0x0bdd, 0x0be5, 0x0bed, 0x0bed, 0x0bfc, 0x0c02, 0x0c02,
- 0x0c02, 0x0c07, 0x0c07, 0x0c0d, 0x0c12, 0x0c18, 0x0c1c, 0x0c23,
- 0x0c23, 0x0c2a, 0x0c31, 0x0c31, 0x0c39, 0x0c46, 0x0c4f, 0x0c4f,
- 0x0c4f, 0x0c4f, 0x0c58, 0x0c58, 0x0c5f, 0x0c65, 0x0c6c, 0x0c74,
- 0x0c74, 0x0c7a, 0x0c83, 0x0c8a, 0x0c8d, 0x0c90, 0x0c90, 0x0c90,
- 0x0c90, 0x0c90, 0x0c96, 0x0c96, 0x0c96, 0x0c96, 0x0c9c, 0x0ca1,
- 0x0ca6, 0x0ca6, 0x0ca6, 0x0cac, 0x0cac, 0x0cac, 0x0caf, 0x0cb7,
- // Entry 240 - 27F
- 0x0cbe, 0x0cbe, 0x0cbe, 0x0cc9, 0x0cd0, 0x0cda, 0x0cda, 0x0ce0,
- 0x0ce0, 0x0ce4, 0x0cfa, 0x0cfe, 0x0cfe, 0x0cfe, 0x0d0e, 0x0d20,
- 0x0d32, 0x0d42, 0x0d51, 0x0d65, 0x0d7b, 0x0d89, 0x0d89, 0x0d89,
- 0x0d98, 0x0da8, 0x0da8, 0x0dae, 0x0dc5, 0x0dda, 0x0de3, 0x0df0,
- 0x0e01, 0x0e16,
- },
- },
- { // nnh
- "nzǎmɔ̂ɔnngilísèShwóŋò menkesaŋfelaŋséeShwóŋò pʉa mbasǎShwóŋò pamomShwóŋò" +
- " pʉa nzsekàʼaShwóŋò pafudShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbu" +
- "luShwóŋò ngáŋtÿɔʼShwóŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ng" +
- "iembɔɔnShwóŋò pʉa shÿó MbafìaShwóŋò Tsaŋ",
- []uint16{ // 578 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- // Entry 40 - 7F
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- // Entry 80 - BF
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- // Entry C0 - FF
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0032, 0x0047, 0x0056, 0x0056, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, 0x007e, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x007e, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
- 0x0097, 0x0097, 0x00a8, 0x00a8, 0x00a8, 0x00b7, 0x00b7, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- // Entry 100 - 13F
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- // Entry 140 - 17F
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- // Entry 180 - 1BF
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- // Entry 1C0 - 1FF
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- // Entry 200 - 23F
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- // Entry 240 - 27F
- 0x0138, 0x0147,
- },
- },
- { // no
- noLangStr,
- noLangIdx,
- },
- { // nus
- "Thok aka̱niThok bunyniThok JalabniThok bäläruthaThok bälga̱a̱rianiThok b" +
- "ängaliThok cikThok jarmaniThok girikniThok liŋli̱thniThok i̱thpaani" +
- "aniThok perthianiThok pɔrɔthaniThok ɣowthaniThok ɣändiniThok ɣänga̱a" +
- "̱riɛniThok indunithianiThok i̱gboniThok i̱talianiThok japanniThok j" +
- "abanithniThok kameeriThok kurianiThok mayɛyniThok bormi̱thniThok nap" +
- "alniThok da̱cThok puɔnjabaniThok pölicniThok puɔtigaliThok ji̱ römTh" +
- "ok ra̱ciaaniThok ruaandaniThok thomaalianiThok i̱thwidicniThok tamil" +
- "niThok tayniThok turkicniThok ukeraaniniThok udoniThok betnaamniThok" +
- " yurubaniThok caynaThok dhuluniThok Nath",
- []uint16{ // 447 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0017, 0x0017,
- 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0033, 0x0048,
- 0x0048, 0x0048, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
- 0x0055, 0x0055, 0x0055, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- 0x0069, 0x0069, 0x0069, 0x0069, 0x0075, 0x0086, 0x0086, 0x0098,
- 0x0098, 0x0098, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00b6,
- 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c4,
- 0x00c4, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00e9, 0x00e9, 0x00e9,
- // Entry 40 - 7F
- 0x00e9, 0x00fa, 0x00fa, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0116, 0x0116, 0x0122, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x013d, 0x013d, 0x0149, 0x0149, 0x0149, 0x0149,
- 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149,
- 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149,
- 0x0149, 0x0149, 0x0149, 0x0156, 0x0156, 0x0166, 0x0166, 0x0166,
- 0x0172, 0x0172, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c,
- 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018c, 0x018c, 0x0199,
- // Entry 80 - BF
- 0x0199, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01c5, 0x01d3,
- 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3,
- 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3,
- 0x01f4, 0x01f4, 0x0200, 0x0200, 0x0200, 0x020a, 0x020a, 0x020a,
- 0x020a, 0x020a, 0x0217, 0x0217, 0x0217, 0x0217, 0x0217, 0x0226,
- 0x0230, 0x0230, 0x0230, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e,
- 0x023e, 0x024b, 0x024b, 0x0255, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- // Entry C0 - FF
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- // Entry 100 - 13F
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- // Entry 140 - 17F
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- // Entry 180 - 1BF
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
- 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x026a,
- },
- },
- { // nyn
- "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" +
- "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" +
- "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" +
- "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" +
- "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" +
- "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" +
- "inaOruzuruRunyankore",
- []uint16{ // 450 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031,
- 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e,
- 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a,
- 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c,
- // Entry 40 - 7F
- 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
- 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1,
- 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115,
- // Entry 80 - BF
- 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d,
- 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d,
- 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163,
- 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176,
- 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
- 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry C0 - FF
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry 100 - 13F
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry 140 - 17F
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry 180 - 1BF
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry 1C0 - 1FF
- 0x01a6, 0x01b0,
- },
- },
- { // om
- "AfrikootaAfaan SidaamaaArabiffaaAfaan AzerbaijaniAfaan BelarusiaAfaan Bu" +
- "lgariyaAfaan BaangladeshiAfaan BosniyaaAfaan KatalaaAfaan CzechWelis" +
- "hiffaaAfaan DeenmaarkAfaan JarmaniiAfaan GiriikiIngliffaAfaan Espera" +
- "ntooAfaan IspeenAfaan IstooniyaAfaan BaskuuAfaan PersiaAfaan Fiilaan" +
- "diAfaan FaroeseAfaan FaransaayiiAfaan FirisiyaaniAfaan AyirishiiScot" +
- "s GaelicAfaan GalishiiAfaan GuaraniAfaan GujaratiAfaan HebrewAfaan H" +
- "indiiAfaan CroatianAfaan HangaariInterlinguaAfaan IndoneziyaAyiislan" +
- "diffaaAfaan XaaliyaaniAfaan JapaniiAfaan JavaAfaan GeorgianAfaan Kan" +
- "nadaAfaan KoreaAfaan LaatiniAfaan LiituniyaaAfaan LativiyaaAfaan Mac" +
- "edooniyaaMalayaalamiffaaAfaan MaratiiMalaayiffaaAfaan MaltesiiAfaan " +
- "NepaliiAfaan DachiiAfaan NorwegianAfaan NorweyiiAfaan OccitOromooAfa" +
- "an PunjabiiAfaan PolandiiAfaan PorchugaalAfaan RomaniyaaAfaan Rushiy" +
- "aaAfaan SinhaleseAfaan SlovakAfaan IslovaniyaaAfaan AlbaniyaaAfaan S" +
- "erbiyaAfaan SudaaniiAfaan SuwidiinSuwahiliiAfaan TamiliiAfaan Telugu" +
- "Afaan TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan" +
- " UrduAfaan UzbekAfaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan Fil" +
- "ippiniiAfaan KilingonAfaan Portugali (Braazil)Afaan Protuguese",
- []uint16{ // 606 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0017, 0x0017,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0031, 0x0031, 0x0040, 0x004f,
- 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x006f, 0x007c, 0x007c,
- 0x007c, 0x007c, 0x007c, 0x0087, 0x0087, 0x0087, 0x0092, 0x00a1,
- 0x00af, 0x00af, 0x00af, 0x00af, 0x00bc, 0x00c4, 0x00d4, 0x00e0,
- 0x00ef, 0x00fb, 0x0107, 0x0107, 0x0116, 0x0116, 0x0123, 0x0134,
- 0x0145, 0x0154, 0x0160, 0x016e, 0x017b, 0x0189, 0x0189, 0x0189,
- 0x0195, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01bd, 0x01bd, 0x01bd,
- // Entry 40 - 7F
- 0x01c8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01e6,
- 0x01f6, 0x01f6, 0x0203, 0x020d, 0x021b, 0x021b, 0x021b, 0x021b,
- 0x021b, 0x021b, 0x021b, 0x0228, 0x0233, 0x0233, 0x0233, 0x0233,
- 0x0233, 0x0233, 0x0233, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0250, 0x0250, 0x025f, 0x025f, 0x025f, 0x025f, 0x0271,
- 0x0280, 0x0280, 0x028d, 0x0298, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
- 0x02b3, 0x02b3, 0x02bf, 0x02ce, 0x02dc, 0x02dc, 0x02dc, 0x02dc,
- 0x02e7, 0x02e7, 0x02ed, 0x02ed, 0x02ed, 0x02fb, 0x02fb, 0x0309,
- // Entry 80 - BF
- 0x0309, 0x0319, 0x0319, 0x0319, 0x0319, 0x0328, 0x0336, 0x0336,
- 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0345, 0x0351, 0x0362,
- 0x0362, 0x0362, 0x0362, 0x0371, 0x037e, 0x037e, 0x037e, 0x038c,
- 0x039a, 0x03a3, 0x03b0, 0x03bc, 0x03bc, 0x03c7, 0x03d4, 0x03e1,
- 0x03e1, 0x03e1, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb,
- 0x0405, 0x0410, 0x0410, 0x041e, 0x041e, 0x041e, 0x041e, 0x0429,
- 0x0429, 0x0429, 0x0429, 0x0430, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- // Entry C0 - FF
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- // Entry 100 - 13F
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
- 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- // Entry 140 - 17F
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- // Entry 180 - 1BF
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- // Entry 1C0 - 1FF
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- // Entry 200 - 23F
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
- 0x044b, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- // Entry 240 - 27F
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
- 0x0459, 0x0459, 0x0459, 0x0459, 0x0472, 0x0482,
- },
- },
- { // or
- "ଅଫାର୍ଆବ୍ଖାଜିଆନ୍ଅବେସ୍ତନଆଫ୍ରିକାନସ୍ଅକନ୍ଆମହାରକିଆର୍ଗୋନୀଆରବିକ୍ଆସାମୀଆଭାରିକ୍ଆୟମା" +
- "ରାଆଜେରବାଇଜାନିବଶଖିର୍ବେଲାରୁଷିଆନ୍ବୁଲଗେରିଆନ୍ବିସଲାମାବାମ୍ବାରାବଙ୍ଗାଳୀତିବେ" +
- "ତାନ୍ବ୍ରେଟନ୍କାଟଲାନ୍କାଟାଲାନ୍ଚେଚନ୍ଚାମୋରୋକୋର୍ସିକାନ୍କ୍ରୀଚେକ୍ଚର୍ଚ୍ଚ ସ୍ଲା" +
- "ଭିକ୍ଚୁଭାଶ୍ୱେଲ୍ସଡାନ୍ନିସ୍ଜର୍ମାନ୍ଡିଭେହୀଭୂଟାନୀଇୱେଗ୍ରୀକ୍ଇଂରାଜୀଏସ୍ପାରେଣ୍" +
- "ଟୋସ୍ପାନିସ୍ଏସ୍ତୋନିଆନ୍ବାସ୍କ୍ୱିପର୍ସିଆନ୍ଫୁଲାହଫିନ୍ନିସ୍ଫିଜିଫାରୋଏସେଫ୍ରେଞ୍" +
- "ଚପଶ୍ଚିମ ଫ୍ରିସିୟନ୍ଇରିସ୍ସ୍କଟିସ୍ ଗାଏଲିକ୍ଗାଲସିଆନ୍ଗୁଆରାନୀଗୁଜୁରାଟୀମାଁକ୍ସ" +
- "ହୌସାହେବ୍ର୍ୟୁହିନ୍ଦୀହିରି ମୋଟୁକ୍ରୋଆଟିଆନ୍ହୈତାୟିନ୍ହଙ୍ଗେରିଆନ୍ଆର୍ମେନିଆନ୍ହ" +
- "େରେରୋଇର୍ଣ୍ଟଲିଙ୍ଗୁଆଇଣ୍ଡୋନେସିଆନ୍ଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇଇଗ୍ବୋସିଚୁଆନ୍ ୟୀଇନୁପିୟା" +
- "କ୍ଇଡୋଆଇସଲାଣ୍ଡିକ୍ଇଟାଲିଆନ୍ଇନକୀଟୁତ୍ଜାପାନୀଜ୍ଜାଭାନୀଜ୍ଜର୍ଜିଆନ୍କଙ୍ଗୋକୀକୁୟ" +
- "ୁକ୍ୱାନ୍ୟାମ୍କାଜାକ୍ଗ୍ରୀନଲାଣ୍ଡିକ୍ଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କନୁରୀକାଶ୍ମିରୀକୁର୍ଦ" +
- "୍ଦିଶ୍କୋମିକୋର୍ନିସ୍କିରଗିଜ୍ଲାଟିନ୍ଲକ୍ସେମବର୍ଗିସ୍ଗନ୍ଦାଲିମ୍ବୁର୍ଗିସ୍ଲିଙ୍ଗା" +
- "ଲାଲାଓଲିଥୁଆନିଆନ୍ଲ୍ୟୁବା-କାଟାଙ୍ଗାଲାଟଭିଆନ୍ମାଲାଗାସୀମାର୍ଶାଲୀଜ୍ମାଓରୀମାକଡୋ" +
- "ନିଆନ୍ମାଲାୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ମରାଠୀମାଲୟମାଲଟୀଜ୍ବର୍ମୀଜ୍ନାଉରୁଉତ୍ତର ନେଡବେଲେନେ" +
- "ପାଳୀଡୋଙ୍ଗାଡଚ୍ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କନରୱେଜିଆନ୍ ବୋକମଲ୍ଦକ୍ଷିଣ ନେଡବେଲେନାଭା" +
- "ଜୋନିୟାଞ୍ଜଓସିଟାନ୍ଓଜିୱାଓରୋମୋଓଡ଼ିଆଓସେଟିକ୍ପଞ୍ଜାବୀପାଲିପୋଲିଶ୍ପାସ୍ତୋପର୍ତ୍" +
- "ତୁଗ୍ରୀଜ୍କ୍ୱେଚୁଆରେହେଟୋ-ରୋମାନ୍ସରୁଣ୍ଡିରୋମାନିଆନ୍ରଷିଆନ୍କିନ୍ୟାରୱାଣ୍ଡାସଂସ" +
- "୍କୃତସର୍ଦିନିଆନ୍ସିନ୍ଧୀଉତ୍ତର ସାମିସାଙ୍ଗୋସିଂହଳସ୍ଲୋଭାକ୍ସ୍ଲୋଭେନିଆନ୍ସାମୋଆନ" +
- "୍ଶୋନାସୋମାଲିଆଆଲବାନିଆନ୍ସର୍ବିଆନ୍ସ୍ବାତୀସେସୋଥୋସୁଦାନୀଜ୍ସ୍ୱେଡିସ୍ସ୍ୱାହିଲ୍ତ" +
- "ାମିଲ୍ତେଲୁଗୁତାଜିକ୍ଥାଇଟ୍ରିଗିନିଆତୁର୍କମେନ୍ସେସ୍ବାନାଟୋଙ୍ଗାତୁର୍କିସ୍ସୋଂଗାତ" +
- "ାତାର୍ତାହିତିଆନ୍ୟୁଘୁର୍ୟୁକ୍ରାନିଆନ୍ଉର୍ଦ୍ଦୁଉଜବେକ୍ଭେଣ୍ଡାଭିଏତନାମିଜ୍ବୋଲାପୁ" +
- "କୱାଲୁନ୍ୱୋଲଫ୍ଖୋସାୟିଡିସ୍ୟୋରୁବାଜୁଆଙ୍ଗଚାଇନୀଜ୍ଜୁଲୁଆଚାଇନୀଜ୍ଆକୋଲିଆଦାଙ୍ଗେମ" +
- "୍ଅଦ୍ୟଘେଆଫ୍ରିହିଲିଆଇନୁଆକାଡିଆନ୍ଆଲେଇଟୁଦକ୍ଷିଣ ଆଲ୍ଟାଇପୁରୁଣା ଇଁରାଜୀଅଁଗୀକା" +
- "ଆରାମାଇକ୍ଆରାଉକାନିଆନ୍ଆରାପାହୋଆରୱକଆଷ୍ଟୁରିଆନ୍ଆୱାଧିବାଲୁଚିବାଲିନୀଜ୍ବାସାବେଜ" +
- "ାବେମ୍ବାଭୋଜପୁରୀବିକୋଲ୍ବିନିବିକ୍ସିକାବ୍ରାଜ୍ବୁରିଆଟ୍ବୁଗୀନୀଜ୍ବ୍ଲିନ୍କାଡୋକାର" +
- "ିବ୍ଆତ୍ସମ୍ସୀବୁଆନୋଚିବ୍ଚାଛଗତାଇଚୁକୀସେମାରୀଚିନୁକ୍ ଜାରଗାଁନ୍ଚୋଟୱାଚିପେୱାନ୍ଚ" +
- "େରୋକୀଚେଚେନାକପ୍ଟିକ୍କ୍ରୀମିନ୍ ତୁର୍କୀସ୍କାଶୁବିଆନ୍ଡାକୋଟାଡାରାଗ୍ୱାଡେଲାୱେର୍" +
- "ସ୍ଲେଭ୍ଡୋଗ୍ରିବ୍ଦିଙ୍କାଡୋଗ୍ରୀନିଚଳା ସର୍ବିଆନ୍ଡୁଆନାମଧ୍ୟ ପର୍ତ୍ତୁଗାଲୀଡୁଆଲା" +
- "ଏଫିକ୍ପ୍ରାଚୀନ୍ ମିଶିରିଏକାଜୁକ୍ଏଲାମାଇଟ୍ମଧ୍ୟ ଇଁରାଜୀଇୱୋଣ୍ଡୋଫାଙ୍ଗଫିଲିପିନୋ" +
- "ଫନ୍ମଧ୍ୟ ଫ୍ରେଞ୍ଚପୁରୁଣା ଫ୍ରେଞ୍ଚଉତ୍ତର ଫ୍ରିସିୟାନ୍ପୂର୍ବ ଫ୍ରିସିୟାନ୍ଫ୍ରିୟ" +
- "ୁଲୀୟାନ୍ଗାଗାୟୋଗବାୟାଗୀଜ୍ଜିବ୍ରାଟୀଜ୍ମିଡିଲ୍ ହାଇ ଜର୍ମାନ୍ପୁରୁଣା ହାଇ ଜର୍ମା" +
- "ନ୍ଗୋଣ୍ଡିଗୋରୋଣ୍ଟାଲୋଗୋଥିକ୍ଗ୍ରେବୋପ୍ରାଚୀନ୍ ୟୁନାନୀସ୍ବିସ୍ ଜର୍ମାନ୍ସ୍ବିଚ୍ " +
- "ଇନ୍ହାଇଡାହାୱାଇନ୍ହିଲିଗୈନନ୍ହିତୀତେହଁଙ୍ଗଉପର ସର୍ବିଆନ୍ହୁପାଇବାନ୍ଇଲୋକୋଇଁଙ୍ଗ" +
- "ୁଶ୍ଲୋଜବାନ୍ଜୁଡେଓ-ପର୍ସିଆନ୍ଜୁଡେଓ-ଆରବୀକ୍କାରା-କଲ୍ପକ୍କବାଇଲ୍କଚିନ୍ଜ୍ଜୁକମ୍ବ" +
- "ାକାୱିକାବାର୍ଡିଆନ୍ତ୍ୟାପ୍କୋରୋଖାସୀଖୋତାନୀଜ୍କିମ୍ବୁଣ୍ଡୁକୋନକାନୀକୋସରୈନ୍କୈପେ" +
- "ଲେକରାଚୟ-ବଲ୍କାରକାରେଲିୟାନ୍କୁରୁଖକୁମୀକ୍କୁତେନାଉଲାଦିନୋଲାହାଣ୍ଡାଲାମ୍ବାଲେଜଗ" +
- "ିୟାନ୍ମଙ୍ଗୋଲୋଜିଲୁବା-ଲୁଲୁଆଲୁଇସେନୋଲୁଣ୍ଡାଲୁଓଲୁସାଉମାଦୁରୀସ୍ମାଗାହୀମୈଥିଳୀମ" +
- "କାସର୍ମାଣ୍ଡିଙ୍ଗୋମାସାଇମୋକ୍ଷମନ୍ଦାରମେଣ୍ଡେମଧ୍ୟ ଇରିଶ୍ମିକମୌକ୍ମିନାଙ୍ଗାବାଉମ" +
- "ାଞ୍ଚୁମଣିପୁରୀମୋହୌକମୋସିବିବିଧ ଭାଷାମାନକ୍ରୀକ୍ମିରାଣ୍ଡିଜ୍ମାରୱାରୀଏର୍ଜୟାନୀପ" +
- "ୋଲିଟାନ୍ଲୋ ଜର୍ମାନ୍ନେୱାରୀନୀୟାସ୍ନିୟୁଆନ୍ନୋଗାଇପୁରୁଣା ନର୍ସଏନ୍କୋଉତ୍ତରୀ ସୋ" +
- "ଥୋପାରମ୍ପରିକ ନେୱାରୀନ୍ୟାମୱେଜୀନ୍ୟାନକୋଲ୍ନ୍ୟାରୋଞ୍ଜିମାୱୌସେଜ୍ଓଟ୍ଟୋମନ୍ ତୁର" +
- "୍କିସ୍ପାଙ୍ଗାସିନିଆନ୍ପାହ୍ଲାଭିପାମ୍ପାଙ୍ଗାପାପିୟାମିଣ୍ଟୋପାଲାଉଆନ୍ପୁରୁଣା ପର୍" +
- "ସିଆନ୍ଫୋନେସିଆନ୍ପୋହପିଏନ୍ପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍ରାଜସ୍ଥାନୀରାପାନୁଇରାରୋତୋଙ୍" +
- "ଗନ୍ରୋମାନିଆରୋମାନିଆନ୍ସଣ୍ଡାୱେୟାକୁଟ୍ସାମୌରିଟନ୍ ଆରମାଇକ୍ସାସାକ୍ସାନ୍ତାଳିସିଶ" +
- "ିଲିଆନ୍ସ୍କଟସ୍ସେଲ୍କପ୍ପୁରୁଣା ଇରିଶ୍ଶାନ୍ସିଦାମୋଦକ୍ଷିଣ ସାମିଲୁଲେ ସାମିଇନାରୀ" +
- " ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର୍ସୁକୁମାଶୁଶୁସୁମେରି" +
- "ଆନ୍କ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେରେନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ" +
- "୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋଟୋକ୍ ପିସିନ୍ତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତ" +
- "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁମୂଳଭାଇଭୋଟିକ୍ୱାଲମୋୱାରୈୱାସୋ" +
- "କାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସା" +
- "ମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁର" +
- "ାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟିନ୍ ଆମେରିକାନ୍ ସ" +
- "୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" +
- "୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟି" +
- "ଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x002d, 0x0042, 0x0060, 0x006c, 0x0081, 0x0096,
- 0x00a8, 0x00b7, 0x00cc, 0x00de, 0x00ff, 0x0111, 0x0132, 0x0150,
- 0x0165, 0x017d, 0x0192, 0x01aa, 0x01bf, 0x01d4, 0x01ec, 0x01fb,
- 0x020d, 0x022b, 0x0237, 0x0243, 0x026e, 0x0280, 0x028f, 0x02a7,
- 0x02bc, 0x02ce, 0x02e0, 0x02e9, 0x02fb, 0x030d, 0x032e, 0x0346,
- 0x0364, 0x037c, 0x0394, 0x03a3, 0x03bb, 0x03c7, 0x03dc, 0x03f1,
- 0x041f, 0x042e, 0x0459, 0x0471, 0x0486, 0x049e, 0x04b0, 0x04bc,
- 0x04d4, 0x04e6, 0x04ff, 0x051d, 0x0535, 0x0553, 0x0571, 0x0583,
- // Entry 40 - 7F
- 0x05aa, 0x05ce, 0x05f8, 0x0607, 0x0623, 0x063e, 0x0647, 0x0668,
- 0x0680, 0x0698, 0x06b0, 0x06c8, 0x06e0, 0x06ef, 0x0701, 0x071f,
- 0x0731, 0x0758, 0x076a, 0x0779, 0x078e, 0x079d, 0x07b5, 0x07d3,
- 0x07df, 0x07f7, 0x080c, 0x081e, 0x0845, 0x0854, 0x0878, 0x0890,
- 0x0899, 0x08b7, 0x08e2, 0x08fa, 0x0912, 0x0930, 0x093f, 0x095d,
- 0x0975, 0x0993, 0x09a2, 0x09ae, 0x09c3, 0x09d8, 0x09e7, 0x0a0c,
- 0x0a1e, 0x0a30, 0x0a39, 0x0a70, 0x0a9e, 0x0ac6, 0x0ad8, 0x0aed,
- 0x0b02, 0x0b11, 0x0b20, 0x0b2f, 0x0b44, 0x0b59, 0x0b65, 0x0b77,
- // Entry 80 - BF
- 0x0b89, 0x0bb0, 0x0bc5, 0x0bed, 0x0bff, 0x0c1a, 0x0c2c, 0x0c53,
- 0x0c68, 0x0c86, 0x0c98, 0x0cb4, 0x0cc6, 0x0cd5, 0x0ced, 0x0d0e,
- 0x0d23, 0x0d2f, 0x0d44, 0x0d5f, 0x0d77, 0x0d89, 0x0d9b, 0x0db3,
- 0x0dcb, 0x0de3, 0x0df5, 0x0e07, 0x0e19, 0x0e22, 0x0e3d, 0x0e58,
- 0x0e70, 0x0e82, 0x0e9a, 0x0ea9, 0x0ebb, 0x0ed6, 0x0ee8, 0x0f09,
- 0x0f1e, 0x0f30, 0x0f42, 0x0f60, 0x0f75, 0x0f87, 0x0f96, 0x0fa2,
- 0x0fb4, 0x0fc6, 0x0fd8, 0x0fed, 0x0ff9, 0x1011, 0x1020, 0x103b,
- 0x104d, 0x104d, 0x1068, 0x1068, 0x1074, 0x108c, 0x108c, 0x109e,
- // Entry C0 - FF
- 0x109e, 0x10c3, 0x10e8, 0x10fa, 0x1112, 0x1133, 0x1133, 0x1148,
- 0x1148, 0x1154, 0x1154, 0x1154, 0x1154, 0x1154, 0x1172, 0x1172,
- 0x1181, 0x1193, 0x11ab, 0x11ab, 0x11b7, 0x11b7, 0x11b7, 0x11b7,
- 0x11c3, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11ea,
- 0x11fc, 0x1208, 0x1208, 0x1208, 0x1220, 0x1220, 0x1220, 0x1232,
- 0x1232, 0x1232, 0x1232, 0x1247, 0x125f, 0x125f, 0x1271, 0x1271,
- 0x127d, 0x128f, 0x128f, 0x12a1, 0x12b6, 0x12b6, 0x12c8, 0x12d7,
- 0x12e9, 0x12f5, 0x1320, 0x132f, 0x1347, 0x1359, 0x136b, 0x136b,
- // Entry 100 - 13F
- 0x1380, 0x1380, 0x13b1, 0x13cc, 0x13de, 0x13f6, 0x13f6, 0x140e,
- 0x1420, 0x1438, 0x144a, 0x144a, 0x145c, 0x1484, 0x1484, 0x1493,
- 0x14c1, 0x14c1, 0x14d0, 0x14d0, 0x14d0, 0x14df, 0x14df, 0x150a,
- 0x151f, 0x1537, 0x1556, 0x1556, 0x156b, 0x156b, 0x157a, 0x1592,
- 0x1592, 0x159b, 0x159b, 0x15bd, 0x15e5, 0x15e5, 0x1613, 0x1641,
- 0x1665, 0x166b, 0x166b, 0x166b, 0x1677, 0x1686, 0x1686, 0x1692,
- 0x16b0, 0x16b0, 0x16e2, 0x1714, 0x1714, 0x1726, 0x1744, 0x1756,
- 0x1768, 0x1793, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17d7, 0x17e6,
- // Entry 140 - 17F
- 0x17e6, 0x17fb, 0x17fb, 0x1816, 0x1828, 0x1837, 0x1859, 0x1859,
- 0x1865, 0x1874, 0x1874, 0x1883, 0x189b, 0x189b, 0x189b, 0x18b0,
- 0x18b0, 0x18b0, 0x18d8, 0x18fa, 0x18fa, 0x1919, 0x192b, 0x193a,
- 0x1946, 0x1955, 0x1961, 0x1982, 0x1982, 0x1994, 0x1994, 0x1994,
- 0x1994, 0x19a0, 0x19a0, 0x19ac, 0x19c4, 0x19c4, 0x19c4, 0x19c4,
- 0x19c4, 0x19c4, 0x19e2, 0x19e2, 0x19f7, 0x1a0c, 0x1a1e, 0x1a40,
- 0x1a40, 0x1a40, 0x1a5e, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a7f,
- 0x1a94, 0x1aa6, 0x1aa6, 0x1abe, 0x1ad0, 0x1aeb, 0x1aeb, 0x1aeb,
- // Entry 180 - 1BF
- 0x1aeb, 0x1aeb, 0x1aeb, 0x1afa, 0x1b06, 0x1b06, 0x1b06, 0x1b22,
- 0x1b37, 0x1b49, 0x1b52, 0x1b61, 0x1b61, 0x1b61, 0x1b61, 0x1b79,
- 0x1b79, 0x1b8b, 0x1b9d, 0x1baf, 0x1bcd, 0x1bdc, 0x1bdc, 0x1beb,
- 0x1bfd, 0x1c0f, 0x1c0f, 0x1c0f, 0x1c2b, 0x1c2b, 0x1c2b, 0x1c40,
- 0x1c61, 0x1c73, 0x1c88, 0x1c97, 0x1ca3, 0x1ca3, 0x1ca3, 0x1cc8,
- 0x1cda, 0x1cf8, 0x1d0d, 0x1d0d, 0x1d0d, 0x1d1f, 0x1d1f, 0x1d1f,
- 0x1d3d, 0x1d3d, 0x1d59, 0x1d6b, 0x1d7d, 0x1d92, 0x1d92, 0x1d92,
- 0x1d92, 0x1da1, 0x1dc0, 0x1dc0, 0x1dcf, 0x1dee, 0x1dee, 0x1e1c,
- // Entry 1C0 - 1FF
- 0x1e37, 0x1e52, 0x1e64, 0x1e76, 0x1e88, 0x1eb9, 0x1ee0, 0x1ef8,
- 0x1f16, 0x1f3a, 0x1f52, 0x1f52, 0x1f52, 0x1f52, 0x1f7d, 0x1f7d,
- 0x1f98, 0x1f98, 0x1f98, 0x1fb0, 0x1fb0, 0x1fea, 0x1fea, 0x1fea,
- 0x2005, 0x201a, 0x203b, 0x203b, 0x203b, 0x203b, 0x204d, 0x204d,
- 0x204d, 0x204d, 0x206b, 0x206b, 0x2080, 0x2092, 0x20c3, 0x20c3,
- 0x20d5, 0x20ed, 0x20ed, 0x20ed, 0x20ed, 0x2108, 0x211a, 0x211a,
- 0x211a, 0x211a, 0x211a, 0x211a, 0x212f, 0x212f, 0x2151, 0x2151,
- 0x2151, 0x215d, 0x215d, 0x216f, 0x216f, 0x216f, 0x218e, 0x21a7,
- // Entry 200 - 23F
- 0x21c3, 0x21e5, 0x21fd, 0x2215, 0x223a, 0x224c, 0x224c, 0x224c,
- 0x225e, 0x226a, 0x2285, 0x2285, 0x2285, 0x22b6, 0x22c8, 0x22c8,
- 0x22c8, 0x22d7, 0x22d7, 0x22e9, 0x22fb, 0x2310, 0x231c, 0x2331,
- 0x2331, 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7, 0x23c6, 0x23c6,
- 0x23c6, 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, 0x2411, 0x242c,
- 0x242c, 0x2447, 0x2462, 0x247d, 0x2486, 0x248f, 0x248f, 0x248f,
- 0x248f, 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1, 0x24b0, 0x24bc,
- 0x24c8, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, 0x24e9, 0x24fb,
- // Entry 240 - 27F
- 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2513, 0x2537, 0x2537, 0x2549,
- 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25b5, 0x25e6, 0x2618,
- 0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, 0x2747, 0x2747,
- 0x2778, 0x27a3, 0x27a3, 0x27bb, 0x27fe, 0x283b, 0x2859, 0x2887,
- 0x28b2, 0x28e3,
- },
- },
- { // os
- "абхазагавестӕафрикаансараббагавайрагтӕтӕйрагбашкирагболгайрагбосниагката" +
- "лайнагцӕцӕйнагчехагчувашагданиагнемыцагбердзейнаганглисагесперантои" +
- "спайнагестойнагбаскагперсайнагфиннагфиджифарерагфранцагирландиагуир" +
- "агхорватагвенгериагсомихагиталиагяпойнаггуырдзиагкурдаглатинагмӕчъи" +
- "дониронпортугалиагуырыссагкитайагадыгейаграгон англисагбурятагкопта" +
- "грагон египтагфилиппинаграгон францаграгон бердзейнагмӕхъӕлонкӕсгон" +
- "бӕлхъӕронхъуымыхъхъаглекъагцигайнагнӕзонгӕ ӕвзагавстралиаг немыцагш" +
- "вйецариаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг анг" +
- "лисагамерикаг англисаглатинаг америкаг англисагевропӕйаг англисагка" +
- "надӕйаг францагшвейцариаг францагбразилиаг португалиагевропӕйаг пол" +
- "тугалиагӕнцонгонд китайагтрадицион китайаг",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000e, 0x001a, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x003a, 0x003a, 0x0048, 0x0048, 0x0058, 0x0068, 0x0068, 0x007a,
- 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0088, 0x009c, 0x00ac,
- 0x00ac, 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00c4, 0x00c4, 0x00d0,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00f2, 0x0102, 0x0114, 0x0124,
- 0x0134, 0x0140, 0x0152, 0x0152, 0x015e, 0x0168, 0x0176, 0x0184,
- 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196,
- 0x01a0, 0x01a0, 0x01a0, 0x01b0, 0x01b0, 0x01c2, 0x01d0, 0x01d0,
- // Entry 40 - 7F
- 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
- 0x01de, 0x01de, 0x01ec, 0x01ec, 0x01fe, 0x01fe, 0x01fe, 0x01fe,
- 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x020a,
- 0x020a, 0x020a, 0x020a, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218,
- 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0228,
- 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
- 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
- 0x0228, 0x0228, 0x0228, 0x0228, 0x0230, 0x0230, 0x0230, 0x0230,
- // Entry 80 - BF
- 0x0230, 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264,
- 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
- // Entry C0 - FF
- 0x0274, 0x0274, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
- 0x028f, 0x028f, 0x028f, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- // Entry 100 - 13F
- 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
- 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
- 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02c2,
- 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02d6,
- 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
- 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
- 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
- 0x02ef, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e,
- // Entry 140 - 17F
- 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e,
- 0x030e, 0x030e, 0x030e, 0x030e, 0x031e, 0x031e, 0x031e, 0x031e,
- 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e,
- 0x031e, 0x031e, 0x031e, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a,
- 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a,
- 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x033c,
- 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x0354,
- 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0360, 0x0360, 0x0360,
- // Entry 180 - 1BF
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- // Entry 1C0 - 1FF
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- // Entry 200 - 23F
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0370, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- // Entry 240 - 27F
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
- 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x03ac, 0x03cf,
- 0x03f4, 0x0417, 0x043a, 0x045b, 0x048b, 0x04ae, 0x04ae, 0x04ae,
- 0x04cf, 0x04f2, 0x04f2, 0x04f2, 0x051b, 0x0544, 0x0544, 0x0544,
- 0x0565, 0x0586,
- },
- },
- { // pa
- paLangStr,
- paLangIdx,
- },
- { // pa-Arab
- "پنجابی",
- []uint16{ // 126 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c,
- },
- },
- { // pl
- plLangStr,
- plLangIdx,
- },
- { // prg
- "prūsiskan",
- []uint16{ // 469 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 140 - 17F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 1C0 - 1FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000a,
- },
- },
- { // ps
- "امهاريعربيآساميبېلاروسيبلغاريبوسنيالمانيیونانيانګلیسيحبشيباسکيفارسيفینلن" +
- "ډيفرانسويعبريهنديارمنيایټالويجاپانیکرديلاتینيملغاسيمقدونيمغوليملایا" +
- "هالېنډيپولنډيپښتوپورتګاليروسيسنسکریټالبانيسویډنیتاجکترکمنيتاتارازبک" +
- "يچینيبلوڅي",
- []uint16{ // 210 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c,
- 0x0014, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002e, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0050, 0x0050, 0x0050, 0x0050, 0x005c, 0x006a, 0x006a, 0x006a,
- 0x0072, 0x007c, 0x0086, 0x0086, 0x0094, 0x0094, 0x0094, 0x00a2,
- 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
- 0x00aa, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00bc, 0x00bc,
- // Entry 40 - 7F
- 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00ca, 0x00ca, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
- 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00f6, 0x00f6, 0x00f6, 0x0102,
- 0x0102, 0x010c, 0x010c, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
- 0x0116, 0x0116, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
- 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0130,
- // Entry 80 - BF
- 0x0138, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0150, 0x0150,
- 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
- 0x015e, 0x015e, 0x015e, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x017e, 0x017e, 0x017e, 0x018a,
- 0x018a, 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194,
- 0x0194, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e,
- 0x019e, 0x019e, 0x019e, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- // Entry C0 - FF
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
- 0x01a6, 0x01b0,
- },
- },
- { // pt
- ptLangStr,
- ptLangIdx,
- },
- { // pt-PT
- ptPTLangStr,
- ptPTLangIdx,
- },
- { // qu
- "Afrikaans SimiAmarico SimiArabe SimiAsames SimiAzerbaiyano SimiBaskir Si" +
- "miBielorruso SimiBulgaro SimiBangla SimiTibetano SimiBreton SimiBosn" +
- "io SimiCatalan SimiCorso SimiCheco SimiGales SimiDanes SimiAleman Si" +
- "miDivehi SimiGriego SimiIngles SimiEspañol SimiEstonio SimiEuskera S" +
- "imiPersa SimiFulah SimiFines SimiFeroes SimiFrances SimiFrison SimiI" +
- "rlandes SimiGaelico Escoces SimiGallego SimiGujarati SimiHausa SimiH" +
- "ebreo SimiHindi SimiCroata SimiHaitiano Criollo SimiHungaro SimiArme" +
- "nio SimiIndonesio SimiIgbo SimiYi SimiIslandes SimiItaliano SimiInuk" +
- "titut SimiJapones SimiGeorgiano SimiKazajo SimiGroenlandes SimiKhmer" +
- " SimiKannada SimiCoreano SimiKirghiz SimiLuxemburgues SimiLao SimiLi" +
- "tuano SimiLeton SimiMaori SimiMacedonio SimiMalayalam SimiMongol Sim" +
- "iMarathi SimiMalayo SimiMaltes SimiNepali SimiNeerlandes SimiNoruego" +
- " SimiOccitano SimiOdia SimiPunyabi SimiPolaco SimiPashto SimiPortugu" +
- "es SimiRunasimiRomanche SimiRumano SimiRuso SimiKinyarwanda SimiSans" +
- "crito SimiSindhi SimiChincha Sami SimiCingales SimiEslovaco SimiEslo" +
- "veno SimiAlbanes SimiSerbio SimiSueco SimiSuajili SimiTamil SimiTelu" +
- "gu SimiTayiko SimiTailandes SimiTigriña SimiTurcomano SimiSetsuana S" +
- "imiTurco SimiTartaro SimiUigur SimiUcraniano SimiUrdu SimiUzbeko Sim" +
- "iVietnamita SimiWolof SimiIsixhosa SimiYoruba SimiChino SimiIsizulu " +
- "SimiMapuche SimiCheroqui SimiChawpi Kurdo SimiBajo Sorbio SimiFilipi" +
- "no SimiAlsaciano SimiHmong Daw SimiAlto Sorbio SimiKonkani SimiMohaw" +
- "k SimiSesotho Sa Leboa SimiPapiamento SimiKʼicheʼ SimiSakha SimiQull" +
- "a Sami SimiSami Lule SimiSami Inari SimiSami Skolt SimiSiriaco Simi",
- []uint16{ // 527 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001a, 0x001a,
- 0x0024, 0x002f, 0x002f, 0x002f, 0x003f, 0x004a, 0x0059, 0x0065,
- 0x0065, 0x0065, 0x0070, 0x007d, 0x0088, 0x0093, 0x009f, 0x009f,
- 0x009f, 0x00a9, 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00bd, 0x00c7,
- 0x00d2, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f3, 0x00f3, 0x0100,
- 0x010c, 0x0118, 0x0122, 0x012c, 0x0136, 0x0136, 0x0141, 0x014d,
- 0x0158, 0x0165, 0x0179, 0x0185, 0x0185, 0x0192, 0x0192, 0x019c,
- 0x01a7, 0x01b1, 0x01b1, 0x01bc, 0x01d1, 0x01dd, 0x01e9, 0x01e9,
- // Entry 40 - 7F
- 0x01e9, 0x01f7, 0x01f7, 0x0200, 0x0207, 0x0207, 0x0207, 0x0214,
- 0x0221, 0x022f, 0x023b, 0x023b, 0x0249, 0x0249, 0x0249, 0x0249,
- 0x0254, 0x0264, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286,
- 0x0286, 0x0286, 0x0292, 0x0292, 0x02a3, 0x02a3, 0x02a3, 0x02a3,
- 0x02ab, 0x02b7, 0x02b7, 0x02c1, 0x02c1, 0x02c1, 0x02cb, 0x02d9,
- 0x02e7, 0x02f2, 0x02fe, 0x0309, 0x0314, 0x0314, 0x0314, 0x0314,
- 0x031f, 0x031f, 0x032e, 0x032e, 0x033a, 0x033a, 0x033a, 0x033a,
- 0x0347, 0x0347, 0x0347, 0x0350, 0x0350, 0x035c, 0x035c, 0x0367,
- // Entry 80 - BF
- 0x0372, 0x0380, 0x0388, 0x0395, 0x0395, 0x03a0, 0x03a9, 0x03b9,
- 0x03c7, 0x03c7, 0x03d2, 0x03e3, 0x03e3, 0x03f0, 0x03fd, 0x040a,
- 0x040a, 0x040a, 0x040a, 0x0416, 0x0421, 0x0421, 0x0421, 0x0421,
- 0x042b, 0x0437, 0x0441, 0x044c, 0x0457, 0x0465, 0x0472, 0x0480,
- 0x048d, 0x048d, 0x0497, 0x0497, 0x04a3, 0x04a3, 0x04ad, 0x04bb,
- 0x04c4, 0x04cf, 0x04cf, 0x04de, 0x04de, 0x04de, 0x04e8, 0x04f5,
- 0x04f5, 0x0500, 0x0500, 0x050a, 0x0516, 0x0516, 0x0516, 0x0516,
- 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516,
- // Entry C0 - FF
- 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052f, 0x052f, 0x0540,
- // Entry 100 - 13F
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0550, 0x0550, 0x0550,
- 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
- 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x055d,
- 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
- 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
- 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
- 0x055d, 0x055d, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
- // Entry 140 - 17F
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0579, 0x0589, 0x0589,
- 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
- 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
- 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
- 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
- 0x0589, 0x0589, 0x0589, 0x0589, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- // Entry 180 - 1BF
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0595, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
- 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
- 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
- 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05b5, 0x05b5, 0x05b5,
- // Entry 1C0 - 1FF
- 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5,
- 0x05b5, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4,
- 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d2,
- 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2,
- 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05dc, 0x05dc, 0x05dc,
- 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc,
- 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc,
- 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05eb, 0x05f9,
- // Entry 200 - 23F
- 0x0608, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617,
- 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0623,
- },
- },
- { // rm
- "afarabchasianavesticafrikaansakanamaricaragonaisarabassamiavaricaymaraas" +
- "erbeidschanicbaschkirbielorussbulgarbislamabambarabengaltibetanbreto" +
- "nbosniaccatalantschetschenchamorrocorscreetschecslav da baselgiatsch" +
- "uvaschkimricdanaistudestgmaledivicdzongkhaewegrecenglaisesperantospa" +
- "gnolestonbascpersianfulahfinlandaisfidschianferraisfranzosfrisirland" +
- "aisgaelic scotgalicianguaranigujaratimanxhaussaebraichindihiri motuc" +
- "roathaitianungaraisarmenhererointerlinguaindonaisinterlingueigbosich" +
- "uan yiinupiakidoislandaistalianinuktitutgiapunaisjavanaisgeorgiankon" +
- "gokikuyukuanyamacasacgrönlandaiscambodschankannadacoreankanurikashmi" +
- "ricurdkomicornickirghislatinluxemburgaisgandalimburgaislingalalaotli" +
- "tuanluba-katangalettonmalagassimarschallaismaorimacedonmalayalammong" +
- "olicmarathimalaicmaltaisbirmannaurundebele dal nordnepalaisndongaoll" +
- "andaisnorvegiais nynorsknorvegais bokmålndebele dal sidnavajonyanjao" +
- "ccitanojibwaoromooriyaosseticpunjabipalipolacpaschtoportugaisquechua" +
- "rumantschrundirumenrusskinyarwandasanscritsardsindhisami dal nordsan" +
- "gosingalaisslovacslovensamoanshonasomalialbanaisserbswazisotho dal s" +
- "idsundanaissvedaissuahilitamiltelugutadjiktailandaistigrinyaturkment" +
- "swanatongatirctsongatatartahitianuiguricucranaisurduusbecvendavietna" +
- "maisvolapukvallonwolofxhosajiddicyorubazhuangchinaiszuluacehacoliand" +
- "angmeadygaiafrihiliainuaccadicaleuticaltaic dal sidenglais veglangik" +
- "aarameicaraucanicarapahoarawakasturianawadhibelutschibalinaisbasaabe" +
- "dschabembabhojpuribikolbinisiksikabrajburiatbugiblincaddocaribicatsa" +
- "mcebuanochibchatschagataicchuukaismaripatuà chinookchoctawchipewyanc" +
- "herokeecheyennecoptictirc crimeankaschubicdakotadargwadelawareslavey" +
- "dogribdinkadogribass sorbdualaollandais mesaundiulaefikegipzian vegl" +
- "ekajukelamiticenglais mesaunewondofangfilippinofonfranzos mesaunfran" +
- "zos veglfris dal nordfris da l’ostfriulangagayogbayageezgilbertaistu" +
- "destg mesaunvegl tudestg da scrittiragondigorontalogoticgrebogrec ve" +
- "gltudestg svizzergwichʼinhaidahawaianhiligaynonettitichmongaut sorbh" +
- "upaibanilocanoingushlojbangiudaic-persiangiudaic-arabkarakalpakkabyl" +
- "ekachinjjukambakawikabardictyapkorokhasikhotanaiskimbundukonkanikosr" +
- "aeankpellekarachay-balkarcareliankurukhkumukkutenailadinolahndalamba" +
- "lezghianlomongoloziluba-lulualuisenolundaluolushaimaduraismagahimait" +
- "hilimakassarmandingomasaimokshamandarmendeirlandais mesaunmicmacmina" +
- "ngkabaumanchumanipurimohawkmossiplurilingcreekmirandaismarwarierzyan" +
- "eapolitanbass tudestgnewariniasniuenogainordic vegln’kosotho dal nor" +
- "dnewari classicnyamwezinyankolenyoronzimaosagetirc ottomanpangasinan" +
- "pahlavipampangapapiamentopalaupersian veglfenizianponapeanprovenzal " +
- "veglrajasthanirapanuirarotongaromaniaromunicsandawejakutarameic sama" +
- "ritansasaksantalisicilianscotselkupirlandais veglshansidamosami dal " +
- "sidsami lulesami inarisami skoltsoninkesogdiansranan tongoserersukum" +
- "asususumericsiric classicsirictemneterenotetumtigretivtokelauklingon" +
- "ictlingittamasheqlingua tsongatok pisintsimshiantumbukatuvalutuvinia" +
- "nudmurtugariticmbundulinguas betg determinadasvaivoticwalamowaraywas" +
- "hokalmukyaoyapaiszapotecsimbols da Blisszenagazuninagins cuntegns li" +
- "nguisticszazatudestg austriacenglais australianenglais canadaisengla" +
- "is britannicenglais americanspagnol latinamericanspagnol ibericfranz" +
- "os canadaisfranzos svizzerflamportugais brasilianportugais iberianmo" +
- "ldavserbo-croatchinais simplifitgàchinais tradiziunal",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0027, 0x0030,
- 0x0034, 0x003a, 0x0040, 0x0046, 0x0055, 0x005d, 0x0066, 0x006c,
- 0x0073, 0x007a, 0x0080, 0x0087, 0x008d, 0x0094, 0x009b, 0x00a6,
- 0x00ae, 0x00b2, 0x00b6, 0x00bc, 0x00cc, 0x00d6, 0x00dc, 0x00e2,
- 0x00e9, 0x00f2, 0x00fa, 0x00fd, 0x0101, 0x0108, 0x0111, 0x0118,
- 0x011d, 0x0121, 0x0128, 0x012d, 0x0137, 0x0140, 0x0147, 0x014e,
- 0x0152, 0x015b, 0x0166, 0x016e, 0x0175, 0x017d, 0x0181, 0x0187,
- 0x018d, 0x0192, 0x019b, 0x01a0, 0x01a7, 0x01af, 0x01b4, 0x01ba,
- // Entry 40 - 7F
- 0x01c5, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01ed, 0x01f0, 0x01f9,
- 0x01ff, 0x0208, 0x0211, 0x0219, 0x0221, 0x0226, 0x022c, 0x0234,
- 0x0239, 0x0245, 0x0250, 0x0257, 0x025d, 0x0263, 0x026b, 0x026f,
- 0x0273, 0x0279, 0x0280, 0x0285, 0x0291, 0x0296, 0x02a0, 0x02a7,
- 0x02ab, 0x02b1, 0x02bd, 0x02c3, 0x02cc, 0x02d8, 0x02dd, 0x02e4,
- 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x030f, 0x0314, 0x0324,
- 0x032c, 0x0332, 0x033b, 0x034d, 0x035e, 0x036d, 0x0373, 0x0379,
- 0x0380, 0x0386, 0x038b, 0x0390, 0x0397, 0x039e, 0x03a2, 0x03a7,
- // Entry 80 - BF
- 0x03ae, 0x03b7, 0x03be, 0x03c7, 0x03cc, 0x03d1, 0x03d5, 0x03e0,
- 0x03e8, 0x03ec, 0x03f2, 0x03ff, 0x0404, 0x040d, 0x0413, 0x0419,
- 0x041f, 0x0424, 0x042a, 0x0432, 0x0436, 0x043b, 0x0448, 0x0451,
- 0x0458, 0x045f, 0x0464, 0x046a, 0x0470, 0x047a, 0x0482, 0x0489,
- 0x048f, 0x0494, 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b2, 0x04ba,
- 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04d9, 0x04df, 0x04e4, 0x04e9,
- 0x04ef, 0x04f5, 0x04fb, 0x0502, 0x0506, 0x050a, 0x050f, 0x0517,
- 0x051d, 0x051d, 0x0525, 0x0525, 0x0529, 0x0530, 0x0530, 0x0537,
- // Entry C0 - FF
- 0x0537, 0x0545, 0x0551, 0x0557, 0x055e, 0x0567, 0x0567, 0x056e,
- 0x056e, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c,
- 0x0582, 0x058b, 0x0593, 0x0593, 0x0598, 0x0598, 0x0598, 0x0598,
- 0x059f, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05ac,
- 0x05b1, 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05bc, 0x05c0,
- 0x05c0, 0x05c0, 0x05c0, 0x05c6, 0x05ca, 0x05ca, 0x05ce, 0x05ce,
- 0x05d3, 0x05da, 0x05da, 0x05df, 0x05e6, 0x05e6, 0x05ed, 0x05f8,
- 0x0600, 0x0604, 0x0612, 0x0619, 0x0622, 0x062a, 0x0632, 0x0632,
- // Entry 100 - 13F
- 0x0638, 0x0638, 0x0644, 0x064d, 0x0653, 0x0659, 0x0659, 0x0661,
- 0x0667, 0x066d, 0x0672, 0x0672, 0x0677, 0x0680, 0x0680, 0x0685,
- 0x0695, 0x0695, 0x069a, 0x069a, 0x069a, 0x069e, 0x069e, 0x06ab,
- 0x06b1, 0x06b9, 0x06c7, 0x06c7, 0x06cd, 0x06cd, 0x06d1, 0x06da,
- 0x06da, 0x06dd, 0x06dd, 0x06eb, 0x06f7, 0x06f7, 0x0704, 0x0713,
- 0x071a, 0x071c, 0x071c, 0x071c, 0x0720, 0x0725, 0x0725, 0x0729,
- 0x0733, 0x0733, 0x0741, 0x075a, 0x075a, 0x075f, 0x0768, 0x076d,
- 0x0772, 0x077b, 0x078a, 0x078a, 0x078a, 0x078a, 0x0793, 0x0798,
- // Entry 140 - 17F
- 0x0798, 0x079f, 0x079f, 0x07a9, 0x07b0, 0x07b5, 0x07bd, 0x07bd,
- 0x07c1, 0x07c5, 0x07c5, 0x07cc, 0x07d2, 0x07d2, 0x07d2, 0x07d8,
- 0x07d8, 0x07d8, 0x07e7, 0x07f3, 0x07f3, 0x07fd, 0x0803, 0x0809,
- 0x080c, 0x0811, 0x0815, 0x081d, 0x081d, 0x0821, 0x0821, 0x0821,
- 0x0821, 0x0825, 0x0825, 0x082a, 0x0833, 0x0833, 0x0833, 0x0833,
- 0x0833, 0x0833, 0x083b, 0x083b, 0x0842, 0x084a, 0x0850, 0x085f,
- 0x085f, 0x085f, 0x0867, 0x086d, 0x086d, 0x086d, 0x086d, 0x0872,
- 0x0879, 0x087f, 0x087f, 0x0885, 0x088a, 0x0892, 0x0892, 0x0892,
- // Entry 180 - 1BF
- 0x0892, 0x0892, 0x0892, 0x0899, 0x089d, 0x089d, 0x089d, 0x08a7,
- 0x08ae, 0x08b3, 0x08b6, 0x08bc, 0x08bc, 0x08bc, 0x08bc, 0x08c4,
- 0x08c4, 0x08ca, 0x08d2, 0x08da, 0x08e2, 0x08e7, 0x08e7, 0x08ed,
- 0x08f3, 0x08f8, 0x08f8, 0x08f8, 0x0908, 0x0908, 0x0908, 0x090e,
- 0x0919, 0x091f, 0x0927, 0x092d, 0x0932, 0x0932, 0x0932, 0x093b,
- 0x0940, 0x0949, 0x0950, 0x0950, 0x0950, 0x0955, 0x0955, 0x0955,
- 0x095f, 0x095f, 0x096b, 0x0971, 0x0975, 0x0979, 0x0979, 0x0979,
- 0x0979, 0x097e, 0x0989, 0x0989, 0x098f, 0x099d, 0x099d, 0x09ab,
- // Entry 1C0 - 1FF
- 0x09b3, 0x09bb, 0x09c0, 0x09c5, 0x09ca, 0x09d6, 0x09e0, 0x09e7,
- 0x09ef, 0x09f9, 0x09fe, 0x09fe, 0x09fe, 0x09fe, 0x0a0a, 0x0a0a,
- 0x0a12, 0x0a12, 0x0a12, 0x0a1a, 0x0a1a, 0x0a28, 0x0a28, 0x0a28,
- 0x0a32, 0x0a39, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a48, 0x0a48,
- 0x0a48, 0x0a48, 0x0a50, 0x0a50, 0x0a57, 0x0a5c, 0x0a6d, 0x0a6d,
- 0x0a72, 0x0a79, 0x0a79, 0x0a79, 0x0a79, 0x0a81, 0x0a85, 0x0a85,
- 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8b, 0x0a8b, 0x0a99, 0x0a99,
- 0x0a99, 0x0a9d, 0x0a9d, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aaf, 0x0ab8,
- // Entry 200 - 23F
- 0x0ac2, 0x0acc, 0x0ad3, 0x0ada, 0x0ae6, 0x0aeb, 0x0aeb, 0x0aeb,
- 0x0af1, 0x0af5, 0x0afc, 0x0afc, 0x0afc, 0x0b09, 0x0b0e, 0x0b0e,
- 0x0b0e, 0x0b13, 0x0b13, 0x0b19, 0x0b1e, 0x0b23, 0x0b26, 0x0b2d,
- 0x0b2d, 0x0b36, 0x0b3d, 0x0b3d, 0x0b45, 0x0b52, 0x0b5b, 0x0b5b,
- 0x0b5b, 0x0b5b, 0x0b64, 0x0b64, 0x0b6b, 0x0b71, 0x0b71, 0x0b79,
- 0x0b79, 0x0b7f, 0x0b87, 0x0b8d, 0x0ba6, 0x0ba9, 0x0ba9, 0x0ba9,
- 0x0ba9, 0x0ba9, 0x0bae, 0x0bae, 0x0bae, 0x0bae, 0x0bb4, 0x0bb9,
- 0x0bbe, 0x0bbe, 0x0bbe, 0x0bc4, 0x0bc4, 0x0bc4, 0x0bc7, 0x0bcd,
- // Entry 240 - 27F
- 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd4, 0x0be4, 0x0be4, 0x0bea,
- 0x0bea, 0x0bee, 0x0c09, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c1d, 0x0c1d,
- 0x0c2f, 0x0c3f, 0x0c50, 0x0c60, 0x0c75, 0x0c83, 0x0c83, 0x0c83,
- 0x0c93, 0x0ca2, 0x0ca2, 0x0ca6, 0x0cb9, 0x0cca, 0x0cd0, 0x0cdb,
- 0x0cef, 0x0d02,
- },
- },
- { // rn
- "IgikaniIkimuharikiIcarabuIkibelarusiyaIkinyabuligariyaIkibengaliIgicekeI" +
- "kidageIkigerekiIcongerezaIcesipanyoloIgiperisiIgifaransaIgihawusaIgi" +
- "hindiIkinyahongiriyaIkinyendoziyaIkiguboIgitaliyaniIkiyapaniIkinyeja" +
- "vaIgikambodiyaIkinyakoreyaIkinyamaleziyaIkinyabirimaniyaIkinepaliIgi" +
- "holandiIgipunjabiIkinyapolonyeIgiporutugariIkirundiIkinyarumaniyaIki" +
- "rusiyaIkinyarwandaIgisomaliIgisuweduwaIgitamiliIkinyatayilandiIgitur" +
- "ukiyaIkinyayukereniInyeyuruduIkinyaviyetinamuIkiyorubaIgishinwaIkizu" +
- "lu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0012, 0x0012,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0026, 0x0036,
- 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0061, 0x0061, 0x006d,
- 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089,
- 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a0, 0x00a0, 0x00a0,
- // Entry 40 - 7F
- 0x00a0, 0x00ad, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00bf, 0x00bf, 0x00c8, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
- 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00f8, 0x00f8, 0x0108, 0x0108, 0x0108,
- 0x0111, 0x0111, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0125, 0x0125, 0x0132,
- // Entry 80 - BF
- 0x0132, 0x013f, 0x013f, 0x013f, 0x0147, 0x0155, 0x015e, 0x016a,
- 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
- 0x016a, 0x016a, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173,
- 0x017e, 0x017e, 0x0187, 0x0187, 0x0187, 0x0196, 0x0196, 0x0196,
- 0x0196, 0x0196, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01af,
- 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9,
- 0x01c9, 0x01d2, 0x01d2, 0x01db, 0x01e2,
- },
- },
- { // ro
- roLangStr,
- roLangIdx,
- },
- { // rof
- "KiakaniKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigi" +
- "rikiKiingerezaKihispaniaKiajemiKyifaransaKihausaKihindiKihungariKiin" +
- "donesiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKibur" +
- "maKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwand" +
- "aKisomaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuK" +
- "iyorubaKichinaKizuluKihorombo",
- []uint16{ // 478 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0056, 0x0056, 0x0060,
- 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0078,
- 0x0078, 0x007f, 0x007f, 0x007f, 0x007f, 0x0088, 0x0088, 0x0088,
- // Entry 40 - 7F
- 0x0088, 0x0093, 0x0093, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099,
- 0x00a3, 0x00a3, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
- 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d2, 0x00d2, 0x00d2,
- 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
- 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f5,
- // Entry 80 - BF
- 0x00f5, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0104, 0x010a, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d,
- 0x0124, 0x0124, 0x012b, 0x012b, 0x012b, 0x0135, 0x0135, 0x0135,
- 0x0135, 0x0135, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0146,
- 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157,
- 0x0157, 0x015f, 0x015f, 0x0166, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry C0 - FF
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry 100 - 13F
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry 140 - 17F
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry 180 - 1BF
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry 1C0 - 1FF
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0175,
- },
- },
- { // ru
- ruLangStr,
- ruLangIdx,
- },
- { // rw
- "IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIk" +
- "ibelarusiyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikata" +
- "laniIgicekeIkigaluwaIkidaninwaIkidageIkigerekiIcyongerezaIcyesiperan" +
- "toIcyesipanyoloIcyesitoniyaIkibasikiInyeperisiIgifinilandeInyefaroyi" +
- "ziIgifaransaIgifiriziyaniIkirilandiIkigaluwa cy’IgisweduwaIkigalisiy" +
- "aInyaguwaraniInyegujaratiIgiheburayoIgihindiIgikorowasiyaIgihongiriy" +
- "aIkinyarumeniyaUrurimi GahuzamiryangoIkinyendoziyaUruhuzandimiIgisil" +
- "andeIgitaliyaniIkiyapaniInyejavaInyejeworujiyaIgikambodiyaIgikanadaI" +
- "gikoreyaInyekuridishiInkerigiziIkilatiniIlingalaIkilawotiyaniIkilitu" +
- "waniyaIkinyaletoviyaniIkimasedoniyaniIkimalayalamiIkimongoliIkimarat" +
- "iIkimalayiIkimalitezeIkinepaliIkinerilandeInyenoruveji (Nyonorusiki)" +
- "IkinoruvejiInyogusitaniInyoriyaIgipunjabiIgipoloneImpashitoIgiporutu" +
- "galiIkinyarumaniyaIkirusiyaKinyarwandaIgisansikiriIgisindiInyesimpal" +
- "ezeIgisilovakiIkinyasiloveniyaIgisomaliIcyalubaniyaIgiseribeInyeseso" +
- "toInyesudaniIgisuweduwaIgiswahiliIgitamiliIgiteluguIgitayiInyatigiri" +
- "nyaInyeturukimeniIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuz" +
- "ubekiIkinyaviyetinamuInyehawusaInyeyidishiInyezuluIkinyafilipineInye" +
- "kilingoniInyeporutigali (Brezili)Inyeporutigali (Igiporutigali)Inyes" +
- "eribiya na Korowasiya",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0018, 0x0024, 0x0024,
- 0x002c, 0x0036, 0x0036, 0x0036, 0x0046, 0x0046, 0x0053, 0x0063,
- 0x0063, 0x0063, 0x006d, 0x006d, 0x0079, 0x0085, 0x0090, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x0097, 0x0097, 0x0097, 0x00a0, 0x00aa,
- 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ba, 0x00c5, 0x00d2, 0x00df,
- 0x00eb, 0x00f4, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x0116, 0x0120,
- 0x012d, 0x0137, 0x0150, 0x015b, 0x0167, 0x0173, 0x0173, 0x0173,
- 0x017e, 0x0186, 0x0186, 0x0193, 0x0193, 0x019f, 0x01ad, 0x01ad,
- // Entry 40 - 7F
- 0x01c3, 0x01d0, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01e6,
- 0x01f1, 0x01f1, 0x01fa, 0x0202, 0x0210, 0x0210, 0x0210, 0x0210,
- 0x0210, 0x0210, 0x021c, 0x0225, 0x022e, 0x022e, 0x022e, 0x023b,
- 0x023b, 0x023b, 0x0245, 0x024e, 0x024e, 0x024e, 0x024e, 0x0256,
- 0x0263, 0x0270, 0x0270, 0x0280, 0x0280, 0x0280, 0x0280, 0x028f,
- 0x029c, 0x02a6, 0x02af, 0x02b8, 0x02c3, 0x02c3, 0x02c3, 0x02c3,
- 0x02cc, 0x02cc, 0x02d8, 0x02f2, 0x02fd, 0x02fd, 0x02fd, 0x02fd,
- 0x0309, 0x0309, 0x0309, 0x0311, 0x0311, 0x031b, 0x031b, 0x0324,
- // Entry 80 - BF
- 0x032d, 0x033a, 0x033a, 0x033a, 0x033a, 0x0348, 0x0351, 0x035c,
- 0x0368, 0x0368, 0x0370, 0x0370, 0x0370, 0x037d, 0x0388, 0x0398,
- 0x0398, 0x0398, 0x03a1, 0x03ad, 0x03b6, 0x03b6, 0x03c0, 0x03ca,
- 0x03d5, 0x03df, 0x03e8, 0x03f1, 0x03f1, 0x03f8, 0x0405, 0x0413,
- 0x0413, 0x0413, 0x041e, 0x041e, 0x041e, 0x041e, 0x0427, 0x0435,
- 0x043f, 0x044b, 0x044b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0465,
- 0x0470, 0x0470, 0x0470, 0x0470, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- // Entry C0 - FF
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- // Entry 100 - 13F
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
- 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- // Entry 140 - 17F
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- // Entry 180 - 1BF
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- // Entry 1C0 - 1FF
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- // Entry 200 - 23F
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
- 0x0486, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- // Entry 240 - 27F
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
- 0x0493, 0x0493, 0x0493, 0x0493, 0x04ab, 0x04c9, 0x04c9, 0x04e3,
- },
- },
- { // rwk
- "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
- "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
- "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
- "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
- "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
- "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKir" +
- "uwa",
- []uint16{ // 484 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
- 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
- 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
- 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
- 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
- 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
- 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
- // Entry 80 - BF
- 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
- 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
- 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
- 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
- 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry C0 - FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 100 - 13F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 140 - 17F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 180 - 1BF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 1C0 - 1FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x019f,
- },
- },
- { // sah
- "АбхаастыыАппырыкааныстыыАраабтыыАдьырбайдьаанныыБөлөрүүстүүБулҕаардыыБен" +
- "галлыыТибиэттииБосныйалыыКаталаанныыЧиэскэйдииДаатскайдыыНиэмэстииГ" +
- "ириэктииАҥылычаанныыЫспаанныыЭстиэнийэлииПиэрсийэлииПииннииПырансуу" +
- "стууБэҥгиэрдииЭрмээннииЫтаалыйалыыДьоппуоннууГурусууннууХаһаахтыыКэ" +
- "риэйдииКыргыстыыЛатыынныыМоҕуоллууНьыпааллыыПандьаабтыыПортугааллыы" +
- "РумыынныыНууччалыыСловаактыыАлбаанскайдыыТамыллыыТөлүгүлүүТадьыыкты" +
- "ыУйгуурдууУкрайыыньыстыыҮзбиэктииКытайдыыЗуулулууПилипиинниисаха ты" +
- "ла",
- []uint16{ // 486 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0012, 0x0012, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0060, 0x0060, 0x0076, 0x008a,
- 0x008a, 0x008a, 0x009c, 0x00ae, 0x00ae, 0x00c2, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x0102,
- 0x0114, 0x0114, 0x0114, 0x0114, 0x0126, 0x013e, 0x013e, 0x0150,
- 0x0168, 0x0168, 0x017e, 0x017e, 0x018c, 0x018c, 0x018c, 0x01a4,
- 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
- 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b8, 0x01ca, 0x01ca,
- // Entry 40 - 7F
- 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca,
- 0x01e0, 0x01e0, 0x01f6, 0x01f6, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x021e, 0x021e, 0x021e, 0x021e, 0x0230, 0x0230, 0x0230, 0x0230,
- 0x0230, 0x0230, 0x0242, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,
- 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,
- 0x0254, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
- 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a,
- 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0290, 0x0290, 0x0290,
- // Entry 80 - BF
- 0x0290, 0x02a8, 0x02a8, 0x02a8, 0x02a8, 0x02ba, 0x02cc, 0x02cc,
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02e0, 0x02e0,
- 0x02e0, 0x02e0, 0x02e0, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa,
- 0x02fa, 0x02fa, 0x030a, 0x031c, 0x0330, 0x0330, 0x0330, 0x0330,
- 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0342, 0x035e,
- 0x035e, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
- 0x0370, 0x0370, 0x0370, 0x0380, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- // Entry C0 - FF
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- // Entry 100 - 13F
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
- 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- // Entry 140 - 17F
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- // Entry 180 - 1BF
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- // Entry 1C0 - 1FF
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
- 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03b7,
- },
- },
- { // saq
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluKisampur",
- []uint16{ // 488 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 140 - 17F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 180 - 1BF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 1C0 - 1FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171,
- },
- },
- { // sbp
- "IshiyakaniIshiyamuhaliIshiyalabuIshibelalusiIshibulugaliaIshibangilaIshi" +
- "shekiIshijelumaniIshigilikiIshingelesaIshihisipaniyaIshiajemiIshifal" +
- "ansaIshihawusaIshihindiIshihungaliIshihindonesiaIshihigiboIshihitali" +
- "yanoIshijapaniIshijavaIshikambodiaIshikoleyaIshimalesiyaIshibulumaIs" +
- "hinepaliIshiholansiIshipunjabiIshipolandiIshilenoIshilomaniyaIshilus" +
- "iIshinyalwandaIshisomaliIshiswidiIshitamiliIshitayilandiIshitulukiIs" +
- "hiyukilaniyaIshiwuludiIshivietinamuIshiyolubaIshishinaIshisuluIshisa" +
- "ngu",
- []uint16{ // 493 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x0039,
- 0x0039, 0x0039, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006e, 0x006e, 0x007c,
- 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a,
- 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00ae, 0x00ae, 0x00ae,
- // Entry 40 - 7F
- 0x00ae, 0x00bc, 0x00bc, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00d4, 0x00d4, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
- 0x00e6, 0x00e6, 0x00f2, 0x00f2, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x00fc, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0112, 0x0112, 0x0112,
- 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0132, 0x0132, 0x013d,
- // Entry 80 - BF
- 0x013d, 0x0145, 0x0145, 0x0145, 0x0145, 0x0151, 0x0159, 0x0166,
- 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
- 0x0166, 0x0166, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170,
- 0x0179, 0x0179, 0x0183, 0x0183, 0x0183, 0x0190, 0x0190, 0x0190,
- 0x0190, 0x0190, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a8,
- 0x01b2, 0x01b2, 0x01b2, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
- 0x01bf, 0x01c9, 0x01c9, 0x01d2, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- // Entry C0 - FF
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- // Entry 100 - 13F
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- // Entry 140 - 17F
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- // Entry 180 - 1BF
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- // Entry 1C0 - 1FF
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
- 0x01da, 0x01da, 0x01da, 0x01da, 0x01e3,
- },
- },
- { // se
- "afrikánsagiellaaragoniagiellaarábagiellavilges-ruoššagiellabulgáriagiell" +
- "abengalgiellatibetagiellabretonagiellabosniagiellakatalánagiellacors" +
- "icagiellačeahkagiellakymragielladánskkagielladuiskkagielladivehigiel" +
- "ladzongkhagiellagreikkagiellaeaŋgalsgiellaspánskkagiellaesttegiellap" +
- "ersijagiellasuomagiellafidjigiellafearagiellafránskkagiellaoarjifrii" +
- "sagiellaiirragiellagujaratagiellamanksgiellahaussagiellahindigiellak" +
- "roátiagiellahaitigiellaungárgiellaarmeenagiellaindonesiagiellaislánd" +
- "dagiellaitáliagiellajapánagiellajavagiellageorgiagiellakazakgiellaka" +
- "mbodiagiellakoreagiellakurdigiellakomigiellakornagiellaláhtengiellal" +
- "uxemburggagiellalaogiellaliettuvagiellalátviagiellamaorigiellamakedo" +
- "niagiellamongoliagiellamaltagiellaburmagiellanepaligiellahollánddagi" +
- "ellaođđadárogiellagirjedárogiellaoksitánagiellapanjabigiellapolskkag" +
- "iellaportugálagiellaromanšgiellaromániagiellaruoššagiellasardigiella" +
- "davvisámegiellaslovákiagiellaslovenagiellasamoagiellaalbánagiellaser" +
- "biagiellaruoŧagiellaŧaigielladurkagiellatahitigiellaukrainagiellaurd" +
- "ugiellavietnamgiellavallonagiellakiinnágiellaacehgiellaboares eaŋgal" +
- "asgiellaasturiagiellamarigiellafilippiinnagiellahawaiigiellagárjilgi" +
- "ellamokšagiellaersagiellasisiliagiellaselkupagiellalullisámegiellaju" +
- "levsámegiellaanárašgiellanuortalašgiellashimaorigiellaudmurtagiellad" +
- "ovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiellaárb" +
- "evirolaš kiinnágiella",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x001e,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003f, 0x004e,
- 0x004e, 0x004e, 0x005a, 0x0066, 0x0073, 0x007f, 0x008e, 0x008e,
- 0x008e, 0x009b, 0x009b, 0x00a8, 0x00a8, 0x00a8, 0x00b3, 0x00c1,
- 0x00ce, 0x00da, 0x00e8, 0x00e8, 0x00f5, 0x0103, 0x0103, 0x0112,
- 0x011d, 0x011d, 0x012a, 0x012a, 0x0135, 0x0140, 0x014b, 0x015a,
- 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0184, 0x018f, 0x019b,
- 0x019b, 0x01a6, 0x01a6, 0x01b4, 0x01bf, 0x01cb, 0x01d8, 0x01d8,
- // Entry 40 - 7F
- 0x01d8, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01f6,
- 0x0203, 0x0203, 0x0210, 0x021a, 0x0227, 0x0227, 0x0227, 0x0227,
- 0x0232, 0x0232, 0x0240, 0x0240, 0x024b, 0x024b, 0x024b, 0x0256,
- 0x0260, 0x026b, 0x026b, 0x0278, 0x0289, 0x0289, 0x0289, 0x0289,
- 0x0292, 0x02a0, 0x02a0, 0x02ad, 0x02ad, 0x02ad, 0x02b8, 0x02c7,
- 0x02c7, 0x02d5, 0x02d5, 0x02d5, 0x02e0, 0x02eb, 0x02eb, 0x02eb,
- 0x02f7, 0x02f7, 0x0307, 0x0318, 0x0328, 0x0328, 0x0328, 0x0328,
- 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x0344, 0x0344, 0x0351,
- // Entry 80 - BF
- 0x0351, 0x0361, 0x0361, 0x036e, 0x036e, 0x037c, 0x038a, 0x038a,
- 0x038a, 0x0395, 0x0395, 0x03a5, 0x03a5, 0x03a5, 0x03b4, 0x03c1,
- 0x03cc, 0x03cc, 0x03cc, 0x03d9, 0x03e5, 0x03e5, 0x03e5, 0x03e5,
- 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03fb, 0x03fb, 0x03fb,
- 0x03fb, 0x03fb, 0x0406, 0x0406, 0x0406, 0x0412, 0x0412, 0x041f,
- 0x0429, 0x0429, 0x0429, 0x0436, 0x0436, 0x0443, 0x0443, 0x0443,
- 0x0443, 0x0443, 0x0443, 0x0450, 0x0450, 0x045a, 0x045a, 0x045a,
- 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a,
- // Entry C0 - FF
- 0x045a, 0x045a, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470,
- 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x047d, 0x047d,
- 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
- 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
- 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
- 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
- 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
- 0x047d, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
- // Entry 100 - 13F
- 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
- 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
- 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
- 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0498,
- 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
- 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
- 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
- 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
- // Entry 140 - 17F
- 0x0498, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
- 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
- // Entry 180 - 1BF
- 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
- 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
- 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04bd,
- 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd,
- 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd,
- 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- // Entry 1C0 - 1FF
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04d4, 0x04d4, 0x04d4,
- 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04e1, 0x04e1, 0x04e1, 0x04e1,
- 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04f1, 0x0501,
- // Entry 200 - 23F
- 0x050f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f,
- 0x051f, 0x051f, 0x051f, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
- 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
- 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
- 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
- 0x052d, 0x053a, 0x053a, 0x053a, 0x054e, 0x054e, 0x054e, 0x054e,
- 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e,
- 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e,
- // Entry 240 - 27F
- 0x054e, 0x054e, 0x054e, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
- 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
- 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
- 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x056c,
- 0x057e, 0x0599,
- },
- },
- { // se-FI
- "vilgesruoššagiellabengalagiellafižigiellaarmenagiellakazakhgiellakamboža" +
- "giellanepalagiellapanjabagiellathaigiellavietnamagiellaačehgiellakom" +
- "oragiellastandárda arábagiellanuortariikkalaš duiskkagiellašveicalaš" +
- " duiskkagiellaaustrálialaš eaŋgalsgiellakanádalaš eaŋgalsgiellabriht" +
- "talaš eaŋgalsgiellaamerihkálaš eaŋgalsgiellalatiinna-amerihkalaš spá" +
- "nskkagiellaespánjalaš spánskkagiellameksikolaš spánskkagiellakanádal" +
- "aš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" +
- "asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš rom" +
- "ániagiellaálkes kiinnágiella",
- []uint16{ // 609 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014,
- 0x0014, 0x0014, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0038, 0x0038,
- // Entry 40 - 7F
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e,
- 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006b, 0x006b, 0x006b,
- // Entry 80 - BF
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,
- 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry C0 - FF
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry 100 - 13F
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry 140 - 17F
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry 180 - 1BF
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry 1C0 - 1FF
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- // Entry 200 - 23F
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- // Entry 240 - 27F
- 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x00b1, 0x00b1, 0x00cf, 0x00e8,
- 0x0105, 0x011f, 0x0139, 0x0155, 0x017a, 0x0196, 0x01b1, 0x01b1,
- 0x01cc, 0x01e7, 0x01e7, 0x0202, 0x021f, 0x023e, 0x025a, 0x025a,
- 0x026e,
- },
- },
- { // seh
- "akanamáricoárabebielo-russobúlgarobengalitchecoalemãogregoinglêsespanhol" +
- "persafrancêshausahindihúngaroindonésioiboitalianojaponêsjavanêscmerc" +
- "oreanomalaiobirmanêsnepalêsholandêspanjabipolonêsportuguêsromenoruss" +
- "okinyarwandasomalisuecotâmiltailandêsturcoucranianourduvietnamitaior" +
- "ubáchinêszulusena",
- []uint16{ // 499 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0025,
- 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0039, 0x0039, 0x0039, 0x0039, 0x003e, 0x0045, 0x0045, 0x004d,
- 0x004d, 0x004d, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f,
- 0x005f, 0x0064, 0x0064, 0x0064, 0x0064, 0x006c, 0x006c, 0x006c,
- // Entry 40 - 7F
- 0x006c, 0x0076, 0x0076, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079,
- 0x0081, 0x0081, 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091,
- 0x0091, 0x0091, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab,
- 0x00b3, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
- 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c3, 0x00c3, 0x00cb,
- // Entry 80 - BF
- 0x00cb, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00db, 0x00e0, 0x00eb,
- 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
- 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
- 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114,
- 0x0118, 0x0118, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122,
- 0x0122, 0x0129, 0x0129, 0x0130, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- // Entry C0 - FF
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- // Entry 100 - 13F
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- // Entry 140 - 17F
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- // Entry 180 - 1BF
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- // Entry 1C0 - 1FF
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x0138,
- },
- },
- { // ses
- "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
- " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
- "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
- "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" +
- " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" +
- "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" +
- "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " +
- "senniUrdu senniVietnaam senniYorbance senniSinuwa senni, MandareŋZul" +
- "u senniKoyraboro senni",
- []uint16{ // 502 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
- 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
- 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
- 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
- // Entry 40 - 7F
- 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
- 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
- 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a,
- // Entry 80 - BF
- 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c,
- 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
- 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
- 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7,
- 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
- 0x01ff, 0x020d, 0x020d, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- // Entry C0 - FF
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- // Entry 100 - 13F
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- // Entry 140 - 17F
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- // Entry 180 - 1BF
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- // Entry 1C0 - 1FF
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
- 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d,
- },
- },
- { // sg
- "AkâanAmarîkiArâboBielörûsiBulugäriBengäliTyêkiZâmaniGerêkiAnglëeEspanyöl" +
- "FarsîFarânziHaüsäHîndiHongruäaEnndonezïiÏgböÊnndeZaponëeZavanëeKmêre" +
- "KoreyëenMalëeMiamära, BirimäniNepalëeHolandëePenzäbïPolonëePortugëe," +
- " PûraRumëenRûsiRuandäaSängöSomalïiSueduäaTämûliThâiTûrûkuUkrêniÛrduV" +
- "ietnämYorubaShinuäaZûlu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001f, 0x0028,
- 0x0028, 0x0028, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, 0x004b, 0x004b, 0x0054,
- 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0069,
- 0x0069, 0x006f, 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0078,
- // Entry 40 - 7F
- 0x0078, 0x0083, 0x0083, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089,
- 0x008f, 0x008f, 0x0097, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
- 0x009f, 0x009f, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00c7, 0x00c7, 0x00c7,
- 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00e9,
- // Entry 80 - BF
- 0x00e9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0100, 0x0105, 0x010d,
- 0x010d, 0x010d, 0x010d, 0x010d, 0x0114, 0x0114, 0x0114, 0x0114,
- 0x0114, 0x0114, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x0124, 0x0124, 0x012c, 0x012c, 0x012c, 0x0131, 0x0131, 0x0131,
- 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0140,
- 0x0145, 0x0145, 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
- 0x014d, 0x0153, 0x0153, 0x015b, 0x0160,
- },
- },
- { // shi
- "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" +
- "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" +
- "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴼⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" +
- "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" +
- "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" +
- "ⵓⵔⴷⵓⵜⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵛⵍⵃⵉⵜ",
- []uint16{ // 505 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a,
- 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078,
- 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111,
- 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f,
- 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192,
- // Entry 40 - 7F
- 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
- 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279,
- 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2,
- 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8,
- // Entry 80 - BF
- 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351,
- 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351,
- 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c,
- 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd,
- 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed,
- 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
- 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry C0 - FF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 100 - 13F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 140 - 17F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 180 - 1BF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 1C0 - 1FF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0477,
- },
- },
- { // shi-Latn
- "TakantTamharitTaɛrabtTabilarustTablɣaritTabnɣalitTatcikitTalimantTagrigi" +
- "tTangliztTasbnyulitTafursitTafransistTahawsatTahinditTahnɣaritTandun" +
- "isitTigbutTaṭalyantTajabbunitTajavanitTaxmirtTakuritTamalawitTabirma" +
- "nitTanibalitTahulanditTabnjabitTabulunitTabṛṭqiztTarumanitTarusitTar" +
- "uwanditTasumalitTaswiditTatamiltTataylanditTaturkitTukranitTurdutTaf" +
- "itnamitTayrubatTacinwitTazulutTashelḥiyt",
- []uint16{ // 505 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
- 0x002a, 0x002a, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078,
- 0x0078, 0x0080, 0x0080, 0x0080, 0x0080, 0x008a, 0x008a, 0x008a,
- // Entry 40 - 7F
- 0x008a, 0x0094, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x00a5, 0x00a5, 0x00af, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
- 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9,
- 0x00e2, 0x00e2, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
- 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f5, 0x00f5, 0x00fe,
- // Entry 80 - BF
- 0x00fe, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x011b, 0x0125,
- 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125,
- 0x0125, 0x0125, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x0149, 0x0149, 0x0149,
- 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159,
- 0x015f, 0x015f, 0x015f, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0171, 0x0171, 0x0179, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry C0 - FF
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 100 - 13F
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 140 - 17F
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 180 - 1BF
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 1C0 - 1FF
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x018c,
- },
- },
- { // si
- siLangStr,
- siLangIdx,
- },
- { // sk
- skLangStr,
- skLangIdx,
- },
- { // sl
- slLangStr,
- slLangIdx,
- },
- { // smn
- "arabiakielâvielgisruošâkielâbulgariakielâtšeekikielâkirkkoslaavitanskaki" +
- "elâsaksakielâkreikakielâengâlâskielâespanjakielâeestikielâsuomâkielâ" +
- "ranskakielâiirikielâhepreakielâkroatiakielâuŋgarkielâarmeniakielâisl" +
- "andkielâitaliakielâjaapaankielâkurdikielâkomikielâläättinkielâlatvia" +
- "kielâmaorikielâmakedoniakielâmongoliakielâneepaalkielâhollandkielâtá" +
- "rukielâ nynorsktárukielâpuolakielâportugalkielâromaniakielâruošâkiel" +
- "âsanskritkielâtavesämikielâsloveniakielâserbiakielâruotâkielâturkki" +
- "kielâukrainakielâvietnamkielâkiinakielâainukielâmarikielâtoovláškrei" +
- "kakielâmokšâkielâviestârmarikielâtoovláštárukielâroomaankielâmaadâsä" +
- "mikielâjuulevsämikielâanarâškielânuorttâlâškielâudmurtkielâvepsäkiel" +
- "âkantonkiinakielâNuorttâriijkâ saksakielâAustralia engâlâskielâKana" +
- "da engâlâskielâoovtâkiärdánis kiinakielâärbivuáválâš kiinakielâ",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0020, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x003b, 0x0047, 0x0047, 0x0047, 0x0053,
- 0x005e, 0x005e, 0x005e, 0x005e, 0x006a, 0x0079, 0x0079, 0x0086,
- 0x0091, 0x0091, 0x0091, 0x0091, 0x009d, 0x009d, 0x009d, 0x00a9,
- 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3,
- 0x00bf, 0x00bf, 0x00bf, 0x00cc, 0x00cc, 0x00d8, 0x00e5, 0x00e5,
- // Entry 40 - 7F
- 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00f1,
- 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
- 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0115,
- 0x011f, 0x011f, 0x011f, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x013a, 0x013a, 0x013a, 0x0145, 0x0154,
- 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x016f, 0x016f, 0x017c, 0x018f, 0x019a, 0x019a, 0x019a, 0x019a,
- 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a5,
- // Entry 80 - BF
- 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c0, 0x01cd, 0x01cd,
- 0x01db, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01f8,
- 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204,
- 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
- 0x0210, 0x0210, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x0229,
- 0x0229, 0x0229, 0x0229, 0x0236, 0x0236, 0x0236, 0x0236, 0x0236,
- 0x0236, 0x0236, 0x0236, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241,
- 0x0241, 0x0241, 0x0241, 0x0241, 0x024b, 0x024b, 0x024b, 0x024b,
- // Entry C0 - FF
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
- 0x024b, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- // Entry 100 - 13F
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
- 0x0255, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- // Entry 140 - 17F
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- // Entry 180 - 1BF
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
- 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0277,
- 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
- 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0289, 0x0289, 0x0289,
- 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289,
- 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289,
- 0x0289, 0x0289, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- // Entry 1C0 - 1FF
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x02aa, 0x02aa,
- 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
- 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
- 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
- 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02bb, 0x02cc,
- // Entry 200 - 23F
- 0x02da, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
- 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
- 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
- 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
- 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
- 0x02ed, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0305,
- 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305,
- 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305,
- // Entry 240 - 27F
- 0x0305, 0x0305, 0x0305, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316,
- 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0331, 0x0331,
- 0x034a, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
- 0x037d, 0x039a,
- },
- },
- { // sn
- "chiAkanichiAmaricchiArabuchiBelarusichiBulgarianchiBengalichiCzechchiJer" +
- "imanichiGreekChirunguchiSpanishchiPeshiyachiFurenchichiHausachiHindi" +
- "chiHungarichiIndonesiachiIgbochiTarianachiJapanichiJavachiKhemachiKo" +
- "riachiMalaychiBurmachiNepalichiDutchchiPunjabichiPolishchiPutukezich" +
- "iRomanianchiRashiyachiRwandachiShonachiSomalichiSwedishchiTamilchiTh" +
- "aichiTurkishchiUkreniachiUrduchiVietnamchiYorubachiChinesechiZulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
- 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x005d, 0x005d, 0x0067,
- 0x0067, 0x0067, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007c,
- 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084,
- 0x0084, 0x008c, 0x008c, 0x008c, 0x008c, 0x0096, 0x0096, 0x0096,
- // Entry 40 - 7F
- 0x0096, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00b3, 0x00b3, 0x00bc, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00e3, 0x00e3, 0x00e3,
- 0x00ec, 0x00ec, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x0107,
- // Entry 80 - BF
- 0x0107, 0x0112, 0x0112, 0x0112, 0x0112, 0x011d, 0x0127, 0x0130,
- 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
- 0x0130, 0x0138, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
- 0x014b, 0x014b, 0x0153, 0x0153, 0x0153, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
- 0x0175, 0x0175, 0x0175, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f,
- 0x017f, 0x0188, 0x0188, 0x0192, 0x0199,
- },
- },
- { // so
- "AkanAxmaariCarabiBeleruusiyaanBulgeeriyaanBangaaliJeegJarmalGiriikIngiri" +
- "isiIsbaanishFaarisiFaransiisFiriisiyan GalbeedHawsaHindiHangariyaanI" +
- "ndunuusiyaanIgboTalyaaniJabbaaniisJafaaniisKamboodhianKuuriyaanMalaa" +
- "yBurmeseNebaaliHolandaysBunjaabiBoolishBoortaqiisRomankaRuushRwandaS" +
- "oomaaliSwiidhisTamiilTaaylandaysTurkishYukreeniyaanUrduuFiitnaamaysY" +
- "oruubaJayniisZuulu",
- []uint16{ // 181 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x002a,
- 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
- 0x0032, 0x0032, 0x0032, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0054,
- 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0064,
- 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007b,
- 0x007b, 0x0080, 0x0080, 0x0080, 0x0080, 0x008b, 0x008b, 0x008b,
- // Entry 40 - 7F
- 0x008b, 0x0098, 0x0098, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x00a4, 0x00a4, 0x00ae, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7,
- 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
- 0x00cb, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d8, 0x00d8, 0x00d8,
- 0x00df, 0x00df, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f7,
- // Entry 80 - BF
- 0x00f7, 0x0101, 0x0101, 0x0101, 0x0101, 0x0108, 0x010d, 0x0113,
- 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113,
- 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
- 0x0123, 0x0123, 0x0129, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
- 0x0134, 0x0134, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x0147,
- 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157,
- 0x0157, 0x015e, 0x015e, 0x0165, 0x016a,
- },
- },
- { // sq
- sqLangStr,
- sqLangIdx,
- },
- { // sr
- srLangStr,
- srLangIdx,
- },
- { // sr-Latn
- srLatnLangStr,
- srLatnLangIdx,
- },
- { // sv
- svLangStr,
- svLangIdx,
- },
- { // sv-FI
- "kirgiziska",
- []uint16{ // 91 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x000a,
- },
- },
- { // sw
- swLangStr,
- swLangIdx,
- },
- { // sw-CD
- "KiakanKibanglaKicheckiKingerezaKiswahili ya Kongo",
- []uint16{ // 525 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 40 - 7F
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 80 - BF
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry C0 - FF
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 100 - 13F
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 140 - 17F
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 180 - 1BF
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 1C0 - 1FF
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 200 - 23F
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x0031,
- },
- },
- { // ta
- taLangStr,
- taLangIdx,
- },
- { // te
- teLangStr,
- teLangIdx,
- },
- { // teo
- "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
- "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
- "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
- "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
- "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
- "rubaKichinaKizuluKiteso",
- []uint16{ // 531 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
- 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
- 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
- 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
- // Entry 40 - 7F
- 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
- 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
- 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
- // Entry 80 - BF
- 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
- 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
- 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry C0 - FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 100 - 13F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 140 - 17F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 180 - 1BF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 1C0 - 1FF
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 200 - 23F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- 0x0169, 0x0169, 0x016f,
- },
- },
- { // th
- thLangStr,
- thLangIdx,
- },
- { // ti
- "አፍሪቃንሰኛትዊአምሐረኛዓረበኛአዜርባይጃንኛቤላራሻኛቡልጋሪኛበንጋሊኛብሬቶንቦስኒያንካታላንቼክኛወልሽዴኒሽጀርመንግሪከኛእ" +
- "ንግሊዝኛኤስፐራንቶስፓኒሽኤስቶኒአንባስክኛፐርሲያኛፊኒሽፋሮኛፈረንሳይኛፍሪሰኛአይሪሽእስኮትስ ጌልክኛጋለቪኛጓራ" +
- "ኒጉጃራቲኛዕብራስጥሕንደኛክሮሽያንኛሀንጋሪኛኢንቴር ቋንቋእንዶኑሲኛአይስላንደኛጣሊያንኛጃፓንኛጃቫንኛጊዮርጊያኛ" +
- "ካማደኛኮሪያኛኩርድሽኪሩጋዚላቲንኛሊቱአኒየንላቲቪያንማክዶኒኛማላያላምኛማራቲኛማላይኛማልቲስኛኔፖሊኛደችኖርዌይኛ" +
- " (ናይ ኝኖርስክ)ኖርዌጂያንኦኪታንኛኦሪያፑንጃቢኛፖሊሽፓሽቶፖርቱጋሊኛሮማኒያንራሽኛስንሃልኛስሎቨክኛስቁቪኛአልቤኒ" +
- "ኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረኒኛኡር" +
- "ዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)" +
- "ሰርቦ- ክሮዊታን",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x001b, 0x002a, 0x002a,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x004e, 0x004e, 0x005d, 0x006c,
- 0x006c, 0x006c, 0x007b, 0x007b, 0x0087, 0x0096, 0x00a2, 0x00a2,
- 0x00a2, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, 0x00b4, 0x00bd,
- 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00e7, 0x00f9, 0x0105,
- 0x0117, 0x0123, 0x0132, 0x0132, 0x013b, 0x013b, 0x0144, 0x0156,
- 0x0162, 0x016e, 0x018a, 0x0196, 0x019f, 0x01ae, 0x01ae, 0x01ae,
- 0x01bd, 0x01c9, 0x01c9, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea,
- // Entry 40 - 7F
- 0x0200, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0227,
- 0x0236, 0x0236, 0x0242, 0x024e, 0x0260, 0x0260, 0x0260, 0x0260,
- 0x0260, 0x0260, 0x0260, 0x026c, 0x0278, 0x0278, 0x0278, 0x0284,
- 0x0284, 0x0284, 0x0290, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c,
- 0x029c, 0x02ae, 0x02ae, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02cc,
- 0x02de, 0x02de, 0x02ea, 0x02f6, 0x0305, 0x0305, 0x0305, 0x0305,
- 0x0311, 0x0311, 0x0317, 0x033f, 0x0351, 0x0351, 0x0351, 0x0351,
- 0x0360, 0x0360, 0x0360, 0x0369, 0x0369, 0x0378, 0x0378, 0x0381,
- // Entry 80 - BF
- 0x038a, 0x039c, 0x039c, 0x039c, 0x039c, 0x03ab, 0x03b4, 0x03b4,
- 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d2, 0x03de,
- 0x03de, 0x03de, 0x03de, 0x03ed, 0x03f9, 0x03f9, 0x0402, 0x040e,
- 0x041d, 0x042c, 0x0438, 0x0444, 0x0444, 0x044d, 0x0459, 0x0485,
- 0x0485, 0x0485, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x04a0,
- 0x04ac, 0x04bb, 0x04bb, 0x04ca, 0x04ca, 0x04ca, 0x04ca, 0x04d3,
- 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- // Entry C0 - FF
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- // Entry 100 - 13F
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
- 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- // Entry 140 - 17F
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- // Entry 180 - 1BF
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- // Entry 1C0 - 1FF
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- // Entry 200 - 23F
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
- 0x04f4, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- // Entry 240 - 27F
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0509, 0x0531, 0x055c, 0x055c, 0x0576,
- },
- },
- { // to
- "lea fakaʻafālalea fakaʻapakasialea fakaʻavesitanilea fakaʻafilikanalea f" +
- "akaʻakanilea fakaʻamelikilea fakaʻalakonilea fakaʻalepealea fakaʻasa" +
- "mialea fakaʻavalikilea fakaʻaimalalea fakaʻasapaisanilea fakapasikil" +
- "ilea fakapelalusilea fakapulukalialea fakapisilamalea fakapamipalale" +
- "a fakapengikalilea fakatipetilea fakapeletonilea fakaposinialea faka" +
- "katalanilea fakaseselea fakakamololea fakakōsikalea fakakelīlea faka" +
- "sekilea fakasilavia-fakasiasilea fakasuvasalea fakauēlesilea fakaten" +
- "imaʻakelea fakasiamanelea fakativehilea fakaputenilea fakaʻeuelea fa" +
- "kakalisilea fakapālangilea fakaʻesipulanitolea fakasipēnisilea fakaʻ" +
- "esitōnialea fakapāsikilea fakapēsialea fakafulālea fakafinilanilea f" +
- "akafisilea fakafaloelea fakafalanisēlea fakafilisia-hihifolea fakaʻa" +
- "elanilea fakakaelikilea fakakalisialea fakakualanilea fakakutalatile" +
- "a fakamangikīlea fakahausalea fakahepelūlea fakahinitīlea fakahili-m" +
- "otulea fakakuloisialea fakahaitilea fakahungakalialea fakaʻāmenialea" +
- " fakahelelolea fakavahaʻalealea fakaʻinitōnesialea fakavahaʻalingikē" +
- "lea fakaʻikipōlea fakasisiuani-īlea fakaʻinupiakilea fakaʻitolea fak" +
- "aʻaisilanilea fakaʻītalilea fakaʻinuketitutilea fakasiapanilea fakas" +
- "avalea fakaseōsialea fakakongikōlea fakakikuiulea fakakuaniamalea fa" +
- "kakasakilea fakakalaʻalisutilea fakakamipōtialea fakakanatalea fakak" +
- "ōlealea fakakanulilea fakakāsimilalea fakakulitīlea fakakomilea fak" +
- "akoniualilea fakakīsisilea fakalatinalea fakalakisimipekilea fakakan" +
- "italea fakalimipūlikilea lingikalalea fakalaulea fakalituanialea fak" +
- "alupa-katangalea fakalativialea fakamalakasilea fakamāsololea fakama" +
- "ulilea fakamasitōnialea fakaʻinitia-malāialamilea fakamongokōlialea " +
- "fakamalatilea fakamaleilea fakamalitalea fakapemalea fakanaululea fa" +
- "kanetepele-tokelaulea fakanepalilea fakanetongikālea fakahōlanilea f" +
- "akanoauē-ninosikilea fakanouaē-pokimalilea fakanetepele-tongalea fak" +
- "anavaholea fakanianisalea fakaʻokitanelea fakaʻosipiuālea fakaʻolomo" +
- "lea fakaʻinitia-ʻolāealea fakaʻosetikilea fakapūnusapilea fakapālile" +
- "a fakapolanilea fakapasitōlea fakapotukalilea fakakuetisalea fakalai" +
- "to-lomēnialea fakaluanitilea fakalōmenialea fakalūsialea fakakiniāua" +
- "nitalea fakasanisukulitilea fakasaletīnialea fakasīnitilea fakasami-" +
- "tokelaulea fakasangikōlea fakasingihalalea fakasolāvakilea fakasolov" +
- "enialea fakahaʻamoalea fakasionalea fakasomalilea fakaʻalapēnialea f" +
- "akasēpialea fakasuatilea fakasoto-tongalea fakasunitālea fakasuēteni" +
- "lea fakasuahililea fakatamililea fakaʻinitia-telukulea fakatāsikilea" +
- " fakatailanilea fakatikilinialea fakatēkimenilea suanalea fakatongal" +
- "ea fakatoakelea fakatisongalea fakatatalelea fakatahitilea fakaʻuikū" +
- "lilea fakaʻūkalaʻinelea fakaʻūtūlea fakaʻusipekilea fakavenitālea fa" +
- "kavietinamilea fakavolapikilea fakaʻualonialea fakaʻuolofolea fakatō" +
- "salea fakaītisilea fakaʻiōlupalea fakasuangilea fakasiainalea fakasu" +
- "lulea fakaʻatisēlea fakaʻakolilea fakaʻatangimēlea fakaʻatikēlea fak" +
- "aʻalepea-tunīsialea fakaʻafilihililea fakaʻakihemilea fakaʻainulea f" +
- "akaʻakatialea fakaʻalapamalea fakaʻaleutilea fakaʻalapēnia-kekilea f" +
- "akaʻalitai-tongalea fakapālangi-motuʻalea fakaʻangikalea fakaʻalāmit" +
- "ilea fakamapuselea fakaʻalaonalea fakaʻalapaholea fakaʻalepea-ʻaisil" +
- "ialea fakaʻalauakilea fakaʻalepea-molokolea fakaʻalepea-ʻisipitelea " +
- "fakaʻasulea fakaʻilonga-ʻamelikalea fakaʻasitūlialea fakakotavalea f" +
- "akaʻauatilea fakapalusilea fakapalilea fakapavālialea fakapasaʻalea " +
- "fakapamunilea fakatōpe-pētekilea fakakomalalea fakapesalea fakapēmip" +
- "alea fakapetavilea fakapenalea fakapafutilea fakapatakalea fakapalus" +
- "i-hihifolea fakaposipulilea fakapikolilea fakapinilea fakapanisalile" +
- "a fakakomelea fakasikesikālea fakapisinupilialea fakapakitiālilea fa" +
- "kapalailea fakapalahuilea fakapōtolea fakaʻakōselea fakapuliatilea f" +
- "akapukisilea fakapululea fakapilinilea fakametūmipalea fakakatolea f" +
- "akakalipalea fakakaiukalea fakaʻatisamilea fakasepuanolea fakakikale" +
- "a fakasīpisalea fakasakatāilea fakatūkelea fakamalīlea fakasinuki-ta" +
- "kotelea fakasokitaulea fakasipeuianilea fakaselokīlea fakaseienelea " +
- "fakakūtisi-lolotolea fakakopitikalea fakakapisenolea fakatoake-kilim" +
- "ealea fakakasiupialea fakatakotalea fakatalakuālea fakataitalea faka" +
- "telaualelea fakasilavelea fakatōkelipilea fakatingikālea fakatisāmal" +
- "ea fakatokililea fakasōpia-hifolea fakatusuni-lolotolea fakatualalea" +
- " fakahōlani-lotolotolea fakaiola-fonīlea fakatiulalea fakatasakalea " +
- "fakaʻemipūlea fakaʻefikilea fakaʻemilialea fakaʻisipitemuʻalea fakaʻ" +
- "ekaiukilea fakaʻelamitelea fakapālangi-lotolotolea fakaiūpiki-loloto" +
- "lea fakaʻeuōnitolea fakaʻekisitematulalea fakafangilea fakafilipaini" +
- "lea fakafinilani-tōnetalelea fakafōngilea fakafalanisē-kasunilea fak" +
- "afalanisē-lotolotolea fakafalanisē-motuʻalea fakaʻāpitanolea fakafil" +
- "isia-tokelaulea fakafilisia-hahakelea fakafulilānilea fakakālea faka" +
- "kakausilea fakasiaina-kanilea fakakaiolea fakakapaialea fakateli-sol" +
- "oasitelialea fakasiʻisilea fakakilipasilea fakakilakilea fakasiamane" +
- "-hake-lotolotolea fakasiamane-hake-motuʻalea fakakonikanī-koanilea f" +
- "akakonitīlea fakakolonitalolea fakakotikalea fakakēpolea fakakalisim" +
- "uʻalea fakasiamane-suisilanilea fakaʻuaiūlea fakafalefalelea fakakus" +
- "īlea fakaʻuīsinilea fakahaitalea fakasiaina-hakalea fakahauaiʻilea " +
- "fakahinitī-fisilea fakahilikainonilea fakahititelea fakamōngilea fak" +
- "asōpia-hakelea fakasiaina-siangilea fakahupalea fakaʻipanilea fakaʻi" +
- "pipiolea fakaʻilokolea fakaʻingusilea fakaʻingilianilea fakapālangi-" +
- "samaikalea fakalosipanilea fakanikōmipalea fakamasamelea fakaʻiuteo-" +
- "pēsialea fakaʻiuteo-ʻalepealea fakaʻiutilanilea fakakala-kalipakilea" +
- " fakakapilelea fakakasinilea fakasisūlea fakakamipalea fakakavilea f" +
- "akakapālitialea fakakanēmipulea fakatiapilea fakamakōnitelea fakakap" +
- "uvelitianulea fakakeniangilea fakakololea fakakaingangilea fakakāsil" +
- "ea fakakōtanilea fakakoila-sīnilea fakakoualilea fakakilimanisikīlea" +
- " fakakakolea fakakalenisinilea fakakimipūnitulea fakakomi-pelemiakil" +
- "ea fakakonikanīlea fakakosilaelea fakakepelelea fakakalate-palakilil" +
- "ea fakakiliolea fakakinaraiālea fakakalelialea fakakulukilea fakasia" +
- "mipalalea fakapafialea fakakolongialea fakakumikilea fakakutenailea " +
- "fakalatinolea fakalangilea fakalānitalea fakalamipālea fakalesikiale" +
- "a fakakavakava-foʻoulea fakalikulialea fakalivonialea fakalakotalea " +
- "fakalomipātilea fakamongikōlea fakalosilea fakaluli-tokelaulea fakal" +
- "atakalelea fakalupa-lulualea fakaluisenolea fakalunitālea fakaluolea" +
- " fakamisolea fakaluīalea fakasiaina-faʻutohilea fakalasulea fakamatu" +
- "lalea fakamafalea fakamakahilea fakamaitililea fakamakasalilea fakam" +
- "anitīngikolea fakamasailea fakamapalea fakamokisiālea fakamanetalile" +
- "a fakamenetīlea fakamelulea fakamolisienilea fakaʻaelani-lotolotolea" +
- " fakamakūa-meʻetolea fakametalea fakamikemakilea fakaminangikapaulea" +
- " fakamanisūlea fakamanipulilea fakamohaukilea fakamosilea fakamali-h" +
- "ihifolea fakamunitangilea tuifiolea fakakilekilea fakamilanitēsilea " +
- "fakamaliwalilea fakamenitauailea fakamienelea fakaʻelisialea fakamas" +
- "anitelanilea fakasiaina-mininanilea fakanapoletanolea fakanamalea fa" +
- "kasiamane-hifolea fakaneualilea fakaniasilea fakaniuēlea fakaʻaonasa" +
- "lea fakakuasiolea fakangiemipōnilea fakanokailea fakanoauē-motuʻalea" +
- " fakanovialelea fakanikōlea fakasoto-tokelaulea fakanuelilea fakaneu" +
- "ali-motuʻalea fakaniamiuesilea fakanianikolelea fakaniololea fakanes" +
- "imalea fakaʻosēselea fakatoake-ʻotomanilea fakapangasinanilea fakapā" +
- "lavilea fakapamipangalea fakapapiamēnitolea fakapalaulea fakapikātil" +
- "ea fakasiamane-penisilivanialea fakasiamane-lafalafalea fakapēsia-mo" +
- "tuʻalea fakasiamane-palatinelea fakafoinikialea fakapiemonitelea fak" +
- "aponitikilea fakaponapēlea fakapulūsialea fakapolovenisi-motuʻalea f" +
- "akakīsēlea fakakuitisa-simipolasolea fakalasasitanilea fakalapanuile" +
- "a fakalalotongalea fakalomaniololea fakalifilea fakalomipōlea fakalo" +
- "manilea fakalotumalea fakalusinilea fakalovianalea fakaʻalomanialea " +
- "fakaluālea fakasanitauelea fakasakalea fakasamalitani-ʻalāmitilea fa" +
- "kasamipululea fakasasakilea fakasanitalilea fakasaulasitilālea fakan" +
- "gāmipailea fakasangulea fakasisīlialea fakasikotilanilea fakasaletīn" +
- "ia-sasalesulea faka-tonga ‘o Ketesilea fakasenekalea fakasenalea fak" +
- "aselilea fakaselikupilea fakakoilapolo-senilea fakaʻaelani-motuʻalea" +
- " fakasamositialea fakataselihitilea fakasianilea fakaʻalepea-sātilea" +
- " fakasitamolea fakasilesia-hifolea fakaselaiālea fakasami-tongalea f" +
- "akasami-lulelea fakasami-ʻinalilea fakasami-sikolitalea fakasoninekē" +
- "lea fakasokitianalea fakasuranane-tongikōlea fakasēlēlelea fakasahol" +
- "ea fakafilisia-satēlanilea fakasukumalea fakasusūlea fakasumelialea " +
- "fakakomololea fakasuahili-kongikōlea fakasuliāiā-muʻalea fakasuliāiā" +
- "lea fakasilesialea fakatululea fakatimenēlea fakatesolea fakatelenol" +
- "ea fakatetumulea fakatikilēlea fakativilea fakatokelaulea fakasākuli" +
- "lea fakakilingonilea fakatilingikītelea fakatalisilea fakatamasiekil" +
- "ea fakaniasa-tongalea fakatoki-pisinilea fakatuloiolea fakatalokolea" +
- " fakasakōnialea fakatisīmisianilea fakatati-moselemilea fakatumepuka" +
- "lea fakatūvalulea fakatasauakilea fakatuvīnialea fakatamasaiti-ʻatil" +
- "asi-lolotolea fakaʻutimulitilea fakaʻūkalitilea fakaʻumipūnitulea fa" +
- "kaʻilonga-tefitolea fakavailea fakavenēsialea fakavepisilea fakavela" +
- "mingi-hihifolea fakafalanikoni-lolotolea fakavotikilea fakavōlolea f" +
- "akavūnisolea fakaʻualiselilea fakaʻuolaitalea fakaʻualailea fakaʻuas" +
- "iōlea fakaʻuālipililea fakasiaina-uūlea fakakalimikilea fakamingilel" +
- "ialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻiangipenilea fakaʻiē" +
- "mipalea fakaneʻēngatūlea fakakuangitongilea fakasapotekilea fakaʻilo" +
- "nga-pilisilea fakasēlanilea fakasenakalea fakatamasaiti-molokolea fa" +
- "kasuniʻikai ha lealea fakasāsālea fakaʻalepea (māmani)lea fakasiaman" +
- "e-ʻaositulialea fakasiamane-hake-suisilanilea fakapālangi-ʻaositelēl" +
- "ialea fakapālangi-kānatalea fakapilitānialea fakapālangi-ʻamelikalea" +
- " fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iulopelea fakasipēnis" +
- "i-mekisikoulea fakafalanisē-kānatalea fakafalanisē-suisilanilea faka" +
- "sakisoni-hifolea fakahōlani-pelesiumelea fakapotukali-palāsililea fa" +
- "kapotukali-ʻiulopelea fakamolitāvialea fakakuloisia-sēpialea fakasia" +
- "ina-fakafaingofualea fakasiaina-tukufakaholo",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079,
- 0x0089, 0x0099, 0x00aa, 0x00ba, 0x00ce, 0x00de, 0x00ee, 0x00ff,
- 0x010f, 0x011f, 0x0130, 0x013e, 0x014e, 0x015d, 0x016d, 0x0179,
- 0x0187, 0x0196, 0x01a3, 0x01af, 0x01c8, 0x01d6, 0x01e5, 0x01f8,
- 0x0207, 0x0215, 0x0223, 0x0230, 0x023e, 0x024e, 0x0263, 0x0274,
- 0x0287, 0x0296, 0x02a4, 0x02b1, 0x02c1, 0x02cd, 0x02da, 0x02eb,
- 0x0301, 0x0311, 0x0320, 0x032f, 0x033e, 0x034e, 0x035e, 0x036b,
- 0x037a, 0x0389, 0x039a, 0x03aa, 0x03b7, 0x03c9, 0x03da, 0x03e8,
- // Entry 40 - 7F
- 0x03fa, 0x040f, 0x0426, 0x0436, 0x0449, 0x045b, 0x0468, 0x047a,
- 0x048a, 0x049f, 0x04ae, 0x04ba, 0x04c9, 0x04d9, 0x04e7, 0x04f7,
- 0x0505, 0x051a, 0x052c, 0x053a, 0x0548, 0x0556, 0x0567, 0x0576,
- 0x0582, 0x0592, 0x05a1, 0x05af, 0x05c3, 0x05d1, 0x05e4, 0x05f1,
- 0x05fc, 0x060c, 0x0620, 0x062f, 0x063f, 0x064e, 0x065b, 0x066d,
- 0x0689, 0x069c, 0x06aa, 0x06b7, 0x06c5, 0x06d1, 0x06de, 0x06f6,
- 0x0704, 0x0716, 0x0725, 0x073c, 0x0753, 0x0769, 0x0777, 0x0786,
- 0x0797, 0x07a9, 0x07b8, 0x07d1, 0x07e2, 0x07f3, 0x0800, 0x080e,
- // Entry 80 - BF
- 0x081d, 0x082d, 0x083c, 0x0852, 0x0861, 0x0871, 0x087f, 0x0893,
- 0x08a7, 0x08b9, 0x08c8, 0x08dc, 0x08ec, 0x08fd, 0x090e, 0x091f,
- 0x092f, 0x093c, 0x094a, 0x095d, 0x096b, 0x0978, 0x098a, 0x0999,
- 0x09a9, 0x09b8, 0x09c6, 0x09dd, 0x09ec, 0x09fb, 0x0a0c, 0x0a1d,
- 0x0a26, 0x0a33, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6b, 0x0a7c, 0x0a91,
- 0x0aa0, 0x0ab1, 0x0ac0, 0x0ad1, 0x0ae1, 0x0af2, 0x0b02, 0x0b0f,
- 0x0b1d, 0x0b2e, 0x0b3c, 0x0b4a, 0x0b56, 0x0b66, 0x0b75, 0x0b88,
- 0x0b98, 0x0bb1, 0x0bc4, 0x0bd5, 0x0be3, 0x0bf3, 0x0c04, 0x0c14,
- // Entry C0 - FF
- 0x0c2c, 0x0c42, 0x0c5a, 0x0c6a, 0x0c7c, 0x0c8a, 0x0c9a, 0x0cab,
- 0x0cc5, 0x0cd6, 0x0ced, 0x0d07, 0x0d14, 0x0d2e, 0x0d41, 0x0d4f,
- 0x0d5e, 0x0d6c, 0x0d78, 0x0d88, 0x0d97, 0x0da5, 0x0dba, 0x0dc8,
- 0x0dd4, 0x0de3, 0x0df1, 0x0dfd, 0x0e0b, 0x0e19, 0x0e2e, 0x0e3e,
- 0x0e4c, 0x0e58, 0x0e68, 0x0e74, 0x0e85, 0x0e98, 0x0eaa, 0x0eb7,
- 0x0ec6, 0x0ed3, 0x0ee3, 0x0ef2, 0x0f00, 0x0f0c, 0x0f1a, 0x0f2b,
- 0x0f37, 0x0f45, 0x0f53, 0x0f64, 0x0f73, 0x0f7f, 0x0f8e, 0x0f9e,
- 0x0fab, 0x0fb8, 0x0fcd, 0x0fdc, 0x0fed, 0x0ffc, 0x100a, 0x1020,
- // Entry 100 - 13F
- 0x1030, 0x1040, 0x1055, 0x1065, 0x1073, 0x1083, 0x1090, 0x10a0,
- 0x10ae, 0x10bf, 0x10cf, 0x10de, 0x10ec, 0x10ff, 0x1114, 0x1121,
- 0x1139, 0x114b, 0x1158, 0x1166, 0x1176, 0x1185, 0x1195, 0x11ab,
- 0x11bc, 0x11cd, 0x11e6, 0x11fc, 0x120e, 0x1225, 0x1232, 0x1243,
- 0x125d, 0x126b, 0x1283, 0x129d, 0x12b6, 0x12c8, 0x12df, 0x12f5,
- 0x1306, 0x1311, 0x1320, 0x1333, 0x133f, 0x134d, 0x1366, 0x1375,
- 0x1385, 0x1393, 0x13b0, 0x13cc, 0x13e3, 0x13f2, 0x1404, 0x1412,
- 0x141f, 0x1432, 0x144b, 0x145a, 0x146a, 0x1477, 0x1488, 0x1495,
- // Entry 140 - 17F
- 0x14a8, 0x14b8, 0x14cc, 0x14df, 0x14ed, 0x14fb, 0x150e, 0x1523,
- 0x152f, 0x153e, 0x154e, 0x155d, 0x156d, 0x1580, 0x1598, 0x15a8,
- 0x15b9, 0x15c7, 0x15dd, 0x15f5, 0x1607, 0x161c, 0x162a, 0x1638,
- 0x1645, 0x1653, 0x165f, 0x1671, 0x1682, 0x168f, 0x16a0, 0x16b5,
- 0x16c5, 0x16d1, 0x16e2, 0x16ef, 0x16fe, 0x1711, 0x171f, 0x1734,
- 0x1740, 0x1752, 0x1765, 0x177b, 0x178c, 0x179b, 0x17a9, 0x17c0,
- 0x17cd, 0x17de, 0x17ed, 0x17fb, 0x180c, 0x1819, 0x1829, 0x1837,
- 0x1846, 0x1854, 0x1861, 0x1870, 0x187f, 0x188e, 0x18a5, 0x18b4,
- // Entry 180 - 1BF
- 0x18c3, 0x18d1, 0x18e2, 0x18f2, 0x18fe, 0x1912, 0x1922, 0x1934,
- 0x1943, 0x1952, 0x195d, 0x1969, 0x1976, 0x198e, 0x199a, 0x19a8,
- 0x19b4, 0x19c2, 0x19d1, 0x19e1, 0x19f5, 0x1a02, 0x1a0e, 0x1a1e,
- 0x1a2e, 0x1a3d, 0x1a49, 0x1a5a, 0x1a73, 0x1a89, 0x1a95, 0x1aa5,
- 0x1ab9, 0x1ac8, 0x1ad8, 0x1ae7, 0x1af3, 0x1b06, 0x1b17, 0x1b21,
- 0x1b2f, 0x1b42, 0x1b52, 0x1b63, 0x1b70, 0x1b80, 0x1b94, 0x1bab,
- 0x1bbd, 0x1bc9, 0x1bdd, 0x1beb, 0x1bf8, 0x1c05, 0x1c15, 0x1c23,
- 0x1c36, 0x1c43, 0x1c59, 0x1c68, 0x1c75, 0x1c89, 0x1c96, 0x1cac,
- // Entry 1C0 - 1FF
- 0x1cbd, 0x1cce, 0x1cdb, 0x1ce9, 0x1cf9, 0x1d10, 0x1d23, 0x1d32,
- 0x1d43, 0x1d57, 0x1d64, 0x1d73, 0x1d90, 0x1da8, 0x1dbe, 0x1dd6,
- 0x1de6, 0x1df7, 0x1e07, 0x1e16, 0x1e26, 0x1e40, 0x1e4e, 0x1e68,
- 0x1e7a, 0x1e89, 0x1e9a, 0x1eab, 0x1eb7, 0x1ec6, 0x1ed4, 0x1ee2,
- 0x1ef0, 0x1eff, 0x1f11, 0x1f1d, 0x1f2d, 0x1f39, 0x1f56, 0x1f66,
- 0x1f74, 0x1f84, 0x1f98, 0x1fa9, 0x1fb6, 0x1fc6, 0x1fd8, 0x1ff3,
- 0x200d, 0x201b, 0x2027, 0x2033, 0x2043, 0x2059, 0x2071, 0x2082,
- 0x2094, 0x20a1, 0x20b7, 0x20c5, 0x20d9, 0x20e8, 0x20fa, 0x210b,
- // Entry 200 - 23F
- 0x211f, 0x2134, 0x2145, 0x2156, 0x216f, 0x217f, 0x218b, 0x21a4,
- 0x21b2, 0x21bf, 0x21ce, 0x21dc, 0x21f4, 0x220b, 0x221c, 0x222b,
- 0x2237, 0x2246, 0x2252, 0x2260, 0x226e, 0x227d, 0x2289, 0x2298,
- 0x22a7, 0x22b8, 0x22cc, 0x22da, 0x22eb, 0x22fe, 0x2311, 0x231f,
- 0x232d, 0x233d, 0x2351, 0x2366, 0x2376, 0x2385, 0x2395, 0x23a5,
- 0x23c7, 0x23da, 0x23ec, 0x2400, 0x2417, 0x2422, 0x2432, 0x2440,
- 0x2458, 0x2471, 0x247f, 0x248c, 0x249b, 0x24ad, 0x24be, 0x24cd,
- 0x24dd, 0x24f0, 0x2502, 0x2512, 0x2524, 0x2530, 0x253d, 0x254b,
- // Entry 240 - 27F
- 0x255e, 0x256f, 0x2583, 0x2596, 0x25a6, 0x25bd, 0x25cc, 0x25da,
- 0x25f2, 0x25fe, 0x260b, 0x2619, 0x2633, 0x2633, 0x264e, 0x266c,
- 0x268b, 0x26a3, 0x26b5, 0x26cf, 0x26f2, 0x270d, 0x2728, 0x2728,
- 0x2741, 0x275c, 0x2771, 0x278a, 0x27a4, 0x27bd, 0x27cf, 0x27e6,
- 0x2802, 0x281d,
- },
- },
- { // tr
- trLangStr,
- trLangIdx,
- },
- { // twq
- "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
- " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
- "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
- "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" +
- "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" +
- "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" +
- "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" +
- "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " +
- "MandareŋZulu senniTasawaq senni",
- []uint16{ // 551 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
- 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
- 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
- 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
- // Entry 40 - 7F
- 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
- 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f,
- 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159,
- 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175,
- // Entry 80 - BF
- 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
- 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db,
- 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2,
- 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a,
- 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry C0 - FF
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 100 - 13F
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 140 - 17F
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 180 - 1BF
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 1C0 - 1FF
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- // Entry 200 - 23F
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0246,
- },
- },
- { // tzm
- "TakanitTamharitTaεrabtTabilarusitTabelɣaritTabinɣalitTačiktTalmanitTayun" +
- "anitTanglizttasbelyunitTafarisitTafṛansistTahawsatTahinditTahenɣarit" +
- "TindunisitTigbutTaṭalyantTajappunitTajavanitTaxmert ,TalammastTakuri" +
- "tTamalizitTaburmanitTanippalitTahulanḍitTabenjabitTappulunitTaburtuɣ" +
- "alitTaṛumanitTarusitTarwanditTaṣumalitTaswiditTatamiltTaṭaytTaturkit" +
- "TukranitTurdutTaviṭnamitTayurubatTacinwit,MandarintazulutTamaziɣt n " +
- "laṭlaṣ",
- []uint16{ // 553 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
- 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0022, 0x002d,
- 0x002d, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x0058, 0x0058, 0x0063,
- 0x0063, 0x0063, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0080,
- 0x0080, 0x0088, 0x0088, 0x0088, 0x0088, 0x0093, 0x0093, 0x0093,
- // Entry 40 - 7F
- 0x0093, 0x009d, 0x009d, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3,
- 0x00ae, 0x00ae, 0x00b8, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1,
- 0x00c1, 0x00c1, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da,
- 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
- 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
- 0x00da, 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00ed, 0x00ed, 0x00ed,
- 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010d, 0x010d, 0x0117,
- // Entry 80 - BF
- 0x0117, 0x0124, 0x0124, 0x0124, 0x0124, 0x012f, 0x0136, 0x013f,
- 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x013f, 0x013f, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
- 0x0152, 0x0152, 0x015a, 0x015a, 0x015a, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0172,
- 0x0178, 0x0178, 0x0178, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184,
- 0x0184, 0x018d, 0x018d, 0x019e, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry C0 - FF
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry 100 - 13F
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry 140 - 17F
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry 180 - 1BF
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry 1C0 - 1FF
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- // Entry 200 - 23F
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
- 0x01bb,
- },
- },
- { // ug
- "ئافارچەئابخازچەئاۋېستاچەئافرىكانچەئاكانچەئامخاراچەئاراگونچەئەرەبچەئاسسام" +
- "چەئاۋارچەئايماراچەئەزەرىچەباشقىرتچەبېلارۇسچەبۇلغارچەبىسلاماچەبامبار" +
- "اچەبېنگالچەتىبەتچەبىرېتونچەبوسنىيەچەكاتالانچەچېچىنچەچامورروچەكورساچ" +
- "ەكرىچەچېخچەقەدىمكى سلاۋيانچەچۇۋاشچەۋېلشچەدانىشچەگېرمانچەدىۋەخىچەبۇت" +
- "انچەئېۋېچەگىرېكچەئىنگلىزچەدۇنيا تىلىئىسپانچەئېستونچەباسكىچەپارسچەفۇ" +
- "لاچەفىنچەفىجىچەفائېروچەفىرانسۇزچەغەربى فىرىزيەچەئىرېلاندچەسكوتچەگال" +
- "ىتسىيانچەگۇئارانىچەگۇجاراتچەمانچەخائۇساچەئىبرانىچەھىندىچەھىرى موتۇچ" +
- "ەخورۋاتچەھايتىچەماجارچەئەرمەنچەخېرېروچەئارىلىق تىلھىندونېزىيەچەئىنت" +
- "ىرلىڭچەئىبوچەيىچە (سىچۈەن)ئىنۇپىكچەئىدوچەئىسلاندچەئىتاليانچەئىنۇكتى" +
- "تۇتچەياپونچەياۋاچەگىرۇزىنچەكونگوچەكىكۇيۇچەكىۋانياماچەقازاقچەگىرېنلا" +
- "ندچەكىخمېرچەكانناداچەكورېيەچەكانۇرىچەكەشمىرچەكۇردچەكومىچەكورنىشچەقى" +
- "رغىزچەلاتىنچەلىيۇكسېمبۇرگچەگانداچەلىمبۇرگچەلىنگالاچەلائوسچەلىتۋاچەل" +
- "ۇبا-كاتانگاچەلاتۋىيەچەماداغاسقارچەمارشالچەماۋرىچەماكېدونچەمالايامچە" +
- "موڭغۇلچەماراتچەمالايچەمالتاچەبىرماچەناۋرۇچەشىمالى ندەبەلەچەنېپالچەن" +
- "دونگاچەگوللاندىيەچەيېڭى نورۋېگچەنورۋىگىيە بوكمالچەجەنۇبى ندەبەلەچەن" +
- "اۋاخوچەنيانجاچەئوكسىتانچەئوجىبۋاچەئوروموچەئورىياچەئوسسېتچەچەپەنجابچ" +
- "ەپالىچەپولەكچەپۇشتۇچەپورتۇگالچەكېچياچەرومانىشچەرۇندىچەرۇمىنىيەچەرۇس" +
- "چەرىۋانداچەسانسكرىتچەساردىنىيەچەسىندىچەشىمالى سامىچەسانگوچەسىنگالچە" +
- "سىلوۋاكچەسىلوۋېنىيەچەساموئاچەشوناچەسومالىچەئالبانچەسېربچەسىۋاتىچەجە" +
- "نۇبى سوتوچەسۇنداچەشۋېدچەسىۋالىچەتامىلچەتېلۇگۇچەتاجىكچەتايلاندچەتىگر" +
- "ىنياچەتۈركمەنچەسىۋاناچەتوڭانچەتۈركچەسونگاچەتاتارچەتاختىچەئۇيغۇرچەئۇ" +
- "كرائىنچەئوردوچەئۆزبېكچەۋېنداچەۋىيېتنامچەۋولاپۇكچەۋاللۇنچەۋولوفچەخوس" +
- "اچەيىددىشچەيورۇباچەجۇاڭچەخەنچەزۇلۇچەئاتجېچەئاچولىچەئاداڭمېچەئادىگېي" +
- "چەئافرىخىلىچەئاگەمچەئاينۇچەئاككادچەئالېيۇتچەجەنۇبى ئالتاي تىللىرىقە" +
- "دىمكى ئىنگلىزچەئانگىكاچەئارامۇچەماپۇچەئاراپاخوچەئاراۋاكچەئاسۇچەئاست" +
- "ۇرىيەچەئاۋادىچەبېلۇجىچەبالىچەباساچەبامۇنچەگومالاچەبېجاچەبېمباچەبېنا" +
- "چەبافۇتچەبوجپۇرىچەبىكولچەبىنىچەكومچەسىكسىكاچەبىراجچەبودوچەئاكۇسچەبۇ" +
- "رىياتچەبۇگىچەبۇلۇچەبىلىنچەمېدۇمباچەكاددوچەكارىبچەكايۇگاچەئاتسامچەسې" +
- "بۇچەچىگاچەچىبچاچەچاغاتايچەچۇكچەمارىچەچىنۇك-ژارگونچەچوكتاۋچەچىپېۋيان" +
- "چەچېروكىچەچېيېنچەسورانى كۇردچەكوپتىكچەقىرىم تۈركچەكاسزۇبىچەداكوتاچە" +
- "دارگىۋاچەتايتاچەدېلاۋارېچەسلاۋچەدوگرىبچەدىنكاچەزارماچەدوگرىچەتوۋەن " +
- "سېربچەدۇئالاچەئوتتۇرا گوللاندىيەچەجولاچەدىيۇلاچەدازاگاچەئېمبۇچەئېفى" +
- "كچەقەدىمكى مىسىرچەئېكاجۇكچەئېلامىتچەئوتتۇرا ئەسىر ئىنگلىزچەئېۋوندوچ" +
- "ەفاڭچەفىلىپپىنچەفونچەئوتتۇرا ئەسىر فىرانسۇزچەقەدىمكى فىرانسۇزچەشىما" +
- "لى فىرىزيەچەشەرقى فىرىزيەچەفىرىئۇلىچەگاچەگايوچەگىباياچەگىزچەگىلبېرت" +
- "چەئوتتۇرا ئەسىر ئېگىزلىك گېرمانچەقەدىمكى ئېگىزلىك گېرمانچەگوندىچەگو" +
- "رونتالوچەگوتچەگرېبوچەقەدىمكى گىرېكچەگېرمانچە شىۋىتسارىيەگۇسىچەگىۋىچ" +
- "ىنچەھەيدەچەھاۋايچەخىلىگاينونچەخىتتىتچەمۆڭچەيۇقىرىقى سېربچەخۇپاچەئىب" +
- "انچەئىبىبىئوچەئىلوكانوچەئىنگۇشچەلوجبانچەنگومباچەماچامچەئىبرانى پارس" +
- "چەئىبرانى ئەرەبچەقارا-قالپاقچەكابىلېچەكاچىنچەجۇچەكامباچەكاۋىچەكابار" +
- "دەيچەكانېمبۇچەتياپچەماكوندېچەكابۇۋېردىيانچەكوروچەكاسىچەخوتەنچەكويرا" +
- " چىنىچەكاكوچەكالېنجىنچەكىمبۇندۇچەكونكانىچەكوسرايېچەكىپەللېچەقاراچاي-" +
- "بالقارچەكارەلچەكۇرۇكچەشامبالاچەبافىياچەكولىشچەقۇمۇقچەكۇتەنايچەلادىن" +
- "وچەلانگىچەلانداچەلامباچەلېزگىنچەمونگوچەلوزىچەلۇبا-لۇئاچەلۇيسېنگوچەل" +
- "ۇنداچەلۇئوچەمىزوچەلۇياچەمادۇرېسچەمافاچەماگاخىچەمايتىلىچەماكاسارچەما" +
- "ندىنگوچەماسايچەماباچەموكشاچەماندارچەمېندېچەمېرۇچەمورىسيېنچەئوتتۇرا " +
- "ئەسىر ئىرېلاندچەماكۇۋاچەمېتاچە’مىكماكچەمىناڭكابائۇچەمانجۇچەمانىپۇرى" +
- "چەموخوكچەموسسىچەمۇنداڭچەكۆپ تىللاركىرىكچەمىراندېسچەمارۋارىچەميېنېچە" +
- "ئېرزاچەناپولىچەناماچەتۆۋەن گېرمانچەنېۋارىچەنىئاسچەنيۇئېچەكۋاسىيوچەن" +
- "گېمبۇنچەنوغايچەقەدىمكى نورۋېگچەنىكوچەشىمالى سوتوچەمۇئېرچەنېۋارچەنيا" +
- "مۋېزىچەنىيانكولېچەنىئوروچەنىزەماچەئوساگېلارچەئوسمان تۈركچەپانگاسىنا" +
- "نچەپەھلەۋىچەپامپانگاچەپاپىيامەنتۇچەپالاۋچەقەدىمكى پارىسچەفىنىكىيەچە" +
- "پوناپېئانچەقەدىمكى پروۋېنچالچەراجاستانچەراپانىيچەرومبوچەسىگانچەئارو" +
- "مانچەرىۋاچەسانداۋېچەياقۇتچەسامارىتانچەسامبۇرۇچەساساكچەسانتالىچەنگام" +
- "بايچەسانگۇچەسىتسىلىيەچەشوتلاندىيەچەسېكنېكاچەسېناچەسېلكاپچەشەرقىي سو" +
- "ڭخايچەقەدىمكى ئىرېلاندچەشىلخاچەشانچەچاد ئەرەبچەسىداموچەجەنۇبى سامى " +
- "تىللىرىلۇلې سامىچەئىنارى سامىچەسىكولت سامىچەسونىنكەچەسوغدىچەسىرانان" +
- "-توڭوچەسېرېرچەساخوچەسۇكۇماچەسۇسۇچەسۈمەرچەكومورىچەكونگو سىۋالىچەكلاسس" +
- "ىك سۈرىيەچەسۈرىيەچەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچ" +
- "ەكىلىنگونچەتىلىنگىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشي" +
- "انچەتۇمبۇكاچەتۇۋالۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزى ئاتلاس تاماچاگىت" +
- "ئۇدمۇرتچەئۇگارىتىكچەئۇمبۇندۇچەغول تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولا" +
- "يتاچەۋارايچەۋاشوچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەز" +
- "اپوتېكچەبىلىس بەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل" +
- " مەزمۇنى يوقزازاچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچە" +
- "شىۋىتسارىيە ئېگىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئ" +
- "ەنگلىيە ئىنگلىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئ" +
- "ىسپانچەمېكسىكا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىراز" +
- "ىلىيە پورتۇگالچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەئاددىي خەنچەمۇرەككە" +
- "پ خەنچە",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0064, 0x0076,
- 0x0084, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d6, 0x00e8, 0x00f8,
- 0x010a, 0x011c, 0x012c, 0x013a, 0x014c, 0x015e, 0x0170, 0x017e,
- 0x0190, 0x019e, 0x01a8, 0x01b2, 0x01d3, 0x01e1, 0x01ed, 0x01fb,
- 0x020b, 0x021b, 0x0229, 0x0235, 0x0243, 0x0255, 0x0268, 0x0278,
- 0x0288, 0x0296, 0x02a2, 0x02ae, 0x02b8, 0x02c4, 0x02d4, 0x02e8,
- 0x0305, 0x0319, 0x0325, 0x033d, 0x0351, 0x0363, 0x036d, 0x037d,
- 0x038f, 0x039d, 0x03b2, 0x03c2, 0x03d0, 0x03de, 0x03ee, 0x03fe,
- // Entry 40 - 7F
- 0x0413, 0x042d, 0x0443, 0x044f, 0x0466, 0x0478, 0x0484, 0x0496,
- 0x04aa, 0x04c2, 0x04d0, 0x04dc, 0x04ee, 0x04fc, 0x050c, 0x0522,
- 0x0530, 0x0546, 0x0556, 0x0568, 0x0578, 0x0588, 0x0598, 0x05a4,
- 0x05b0, 0x05c0, 0x05d0, 0x05de, 0x05fa, 0x0608, 0x061a, 0x062c,
- 0x063a, 0x0648, 0x0663, 0x0675, 0x068d, 0x069d, 0x06ab, 0x06bd,
- 0x06cf, 0x06df, 0x06ed, 0x06fb, 0x0709, 0x0717, 0x0725, 0x0744,
- 0x0752, 0x0762, 0x077a, 0x0793, 0x07b6, 0x07d5, 0x07e5, 0x07f5,
- 0x0809, 0x081b, 0x082b, 0x083b, 0x084f, 0x085f, 0x086b, 0x0879,
- // Entry 80 - BF
- 0x0887, 0x089b, 0x08a9, 0x08bb, 0x08c9, 0x08dd, 0x08e7, 0x08f9,
- 0x090d, 0x0923, 0x0931, 0x094a, 0x0958, 0x0968, 0x097a, 0x0992,
- 0x09a2, 0x09ae, 0x09be, 0x09ce, 0x09da, 0x09ea, 0x0a03, 0x0a11,
- 0x0a1d, 0x0a2d, 0x0a3b, 0x0a4b, 0x0a59, 0x0a6b, 0x0a7f, 0x0a91,
- 0x0aa1, 0x0aaf, 0x0abb, 0x0ac9, 0x0ad7, 0x0ae5, 0x0af5, 0x0b09,
- 0x0b17, 0x0b27, 0x0b35, 0x0b49, 0x0b5b, 0x0b6b, 0x0b79, 0x0b85,
- 0x0b95, 0x0ba5, 0x0bb1, 0x0bbb, 0x0bc7, 0x0bd5, 0x0be5, 0x0bf7,
- 0x0c09, 0x0c09, 0x0c1f, 0x0c2d, 0x0c3b, 0x0c4b, 0x0c4b, 0x0c5d,
- // Entry C0 - FF
- 0x0c5d, 0x0c85, 0x0ca6, 0x0cb8, 0x0cc8, 0x0cd4, 0x0cd4, 0x0ce8,
- 0x0ce8, 0x0cfa, 0x0cfa, 0x0cfa, 0x0d06, 0x0d06, 0x0d1c, 0x0d1c,
- 0x0d2c, 0x0d3c, 0x0d48, 0x0d48, 0x0d54, 0x0d62, 0x0d62, 0x0d72,
- 0x0d7e, 0x0d8c, 0x0d8c, 0x0d98, 0x0da6, 0x0da6, 0x0da6, 0x0db8,
- 0x0dc6, 0x0dd2, 0x0dd2, 0x0ddc, 0x0dee, 0x0dee, 0x0dee, 0x0dfc,
- 0x0dfc, 0x0e08, 0x0e16, 0x0e28, 0x0e34, 0x0e40, 0x0e4e, 0x0e60,
- 0x0e6e, 0x0e7c, 0x0e8c, 0x0e9c, 0x0ea8, 0x0eb4, 0x0ec2, 0x0ed4,
- 0x0ede, 0x0eea, 0x0f05, 0x0f15, 0x0f29, 0x0f39, 0x0f47, 0x0f60,
- // Entry 100 - 13F
- 0x0f70, 0x0f70, 0x0f87, 0x0f99, 0x0fa9, 0x0fbb, 0x0fc9, 0x0fdd,
- 0x0fe9, 0x0ff9, 0x1007, 0x1015, 0x1023, 0x103a, 0x103a, 0x104a,
- 0x1071, 0x107d, 0x108d, 0x109d, 0x10ab, 0x10b9, 0x10b9, 0x10d6,
- 0x10e8, 0x10fa, 0x1126, 0x1126, 0x1138, 0x1138, 0x1142, 0x1156,
- 0x1156, 0x1160, 0x1160, 0x118e, 0x11b1, 0x11b1, 0x11d0, 0x11ed,
- 0x1201, 0x1209, 0x1209, 0x1209, 0x1215, 0x1225, 0x1225, 0x122f,
- 0x1241, 0x1241, 0x127c, 0x12ac, 0x12ac, 0x12ba, 0x12d0, 0x12da,
- 0x12e8, 0x1305, 0x132c, 0x132c, 0x132c, 0x1338, 0x134a, 0x1358,
- // Entry 140 - 17F
- 0x1358, 0x1366, 0x1366, 0x137e, 0x138e, 0x1398, 0x13b5, 0x13b5,
- 0x13c1, 0x13cf, 0x13e3, 0x13f7, 0x1407, 0x1407, 0x1407, 0x1417,
- 0x1427, 0x1435, 0x1450, 0x146d, 0x146d, 0x1486, 0x1496, 0x14a4,
- 0x14ac, 0x14ba, 0x14c6, 0x14da, 0x14ec, 0x14f8, 0x150a, 0x1526,
- 0x1526, 0x1532, 0x1532, 0x153e, 0x154c, 0x1563, 0x1563, 0x1563,
- 0x156f, 0x1583, 0x1597, 0x1597, 0x15a9, 0x15bb, 0x15cd, 0x15ec,
- 0x15ec, 0x15ec, 0x15fa, 0x1608, 0x161a, 0x162a, 0x1638, 0x1646,
- 0x1658, 0x1668, 0x1676, 0x1684, 0x1692, 0x16a2, 0x16a2, 0x16a2,
- // Entry 180 - 1BF
- 0x16a2, 0x16a2, 0x16a2, 0x16b0, 0x16bc, 0x16bc, 0x16bc, 0x16d1,
- 0x16e5, 0x16f3, 0x16ff, 0x170b, 0x1717, 0x1717, 0x1717, 0x1729,
- 0x1735, 0x1745, 0x1757, 0x1769, 0x177d, 0x178b, 0x1797, 0x17a5,
- 0x17b5, 0x17c3, 0x17cf, 0x17e3, 0x1811, 0x1821, 0x1830, 0x1840,
- 0x185a, 0x1868, 0x187c, 0x188a, 0x1898, 0x1898, 0x18a8, 0x18bb,
- 0x18c9, 0x18dd, 0x18ef, 0x18ef, 0x18fd, 0x190b, 0x190b, 0x190b,
- 0x191b, 0x1927, 0x1942, 0x1952, 0x1960, 0x196e, 0x196e, 0x1980,
- 0x1992, 0x19a0, 0x19bf, 0x19bf, 0x19cb, 0x19e4, 0x19f2, 0x1a00,
- // Entry 1C0 - 1FF
- 0x1a14, 0x1a2a, 0x1a3a, 0x1a4a, 0x1a60, 0x1a79, 0x1a91, 0x1aa3,
- 0x1ab7, 0x1ad1, 0x1adf, 0x1adf, 0x1adf, 0x1adf, 0x1afc, 0x1afc,
- 0x1b10, 0x1b10, 0x1b10, 0x1b26, 0x1b26, 0x1b4b, 0x1b4b, 0x1b4b,
- 0x1b5f, 0x1b71, 0x1b71, 0x1b71, 0x1b71, 0x1b7f, 0x1b8d, 0x1b8d,
- 0x1b8d, 0x1b8d, 0x1b9f, 0x1bab, 0x1bbd, 0x1bcb, 0x1be1, 0x1bf3,
- 0x1c01, 0x1c13, 0x1c13, 0x1c25, 0x1c33, 0x1c49, 0x1c61, 0x1c61,
- 0x1c61, 0x1c73, 0x1c7f, 0x1c7f, 0x1c8f, 0x1cac, 0x1ccf, 0x1ccf,
- 0x1cdd, 0x1ce7, 0x1cfc, 0x1d0c, 0x1d0c, 0x1d0c, 0x1d30, 0x1d45,
- // Entry 200 - 23F
- 0x1d5e, 0x1d77, 0x1d89, 0x1d97, 0x1db2, 0x1dc0, 0x1dcc, 0x1dcc,
- 0x1ddc, 0x1de8, 0x1df6, 0x1e06, 0x1e21, 0x1e40, 0x1e50, 0x1e50,
- 0x1e50, 0x1e5e, 0x1e6a, 0x1e7a, 0x1e88, 0x1e96, 0x1ea0, 0x1eb2,
- 0x1eb2, 0x1ec6, 0x1eda, 0x1eda, 0x1eec, 0x1f05, 0x1f1a, 0x1f1a,
- 0x1f2a, 0x1f2a, 0x1f3c, 0x1f3c, 0x1f4e, 0x1f5e, 0x1f7d, 0x1f89,
- 0x1fb7, 0x1fc9, 0x1fdf, 0x1ff3, 0x2000, 0x200a, 0x200a, 0x200a,
- 0x200a, 0x200a, 0x2016, 0x2016, 0x2024, 0x2034, 0x2046, 0x2054,
- 0x2060, 0x2060, 0x2060, 0x2070, 0x2070, 0x207c, 0x2086, 0x2090,
- // Entry 240 - 27F
- 0x20a0, 0x20ae, 0x20ae, 0x20c0, 0x20d2, 0x20ef, 0x20ef, 0x20ff,
- 0x2133, 0x213f, 0x215b, 0x2167, 0x21a2, 0x21a2, 0x21c7, 0x21ff,
- 0x2228, 0x2247, 0x226a, 0x228d, 0x22b9, 0x22d8, 0x22f7, 0x22f7,
- 0x2318, 0x2343, 0x2343, 0x2343, 0x236c, 0x238f, 0x238f, 0x23aa,
- 0x23c1, 0x23dc,
- },
- },
- { // uk
- ukLangStr,
- ukLangIdx,
- },
- { // ur
- urLangStr,
- urLangIdx,
- },
- { // ur-IN
- "افریقیکارسیکائیکنڑکردلٹويایزرمہمعیاری مراقشی تمازیقیجدید معیاری عربیآسان" +
- " چینی",
- []uint16{ // 609 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- // Entry 40 - 7F
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x0024, 0x0024, 0x0024, 0x0024, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- // Entry 80 - BF
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- // Entry C0 - FF
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- // Entry 100 - 13F
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- // Entry 140 - 17F
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- // Entry 180 - 1BF
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- // Entry 1C0 - 1FF
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- // Entry 200 - 23F
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- // Entry 240 - 27F
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0095,
- },
- },
- { // uz
- uzLangStr,
- uzLangIdx,
- },
- { // uz-Arab
- "دریپشتواوزبیک",
- []uint16{ // 170 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- // Entry 40 - 7F
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- // Entry 80 - BF
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x001a,
- },
- },
- { // uz-Cyrl
- "АбхазчаАфриканчаАмхарчаАрабчаАссамчаОзарбайжончаБеларусчаБолгарчаБенгалч" +
- "аТибетчаБосниячаКаталанчаЧехчаУэлсчаДаниячаОлмончаГрекчаИнглизчаЭсп" +
- "ерантоИспанчаЭстончаБаскчаФорсчаФинчаФижичаФарэрчаФранцузчаҒарбий ф" +
- "ризианчаИрландчаГалицийчаГуараниГужаратиХаусаИбронийҲиндчаХорватчаГ" +
- "аитианчаВенгрчаАрманчаИндонезиячаИгбоИсландчаИталянчаЯпончаЯванчаГр" +
- "узинчаҚозоқчаХмерчаКаннадаКорейсчаКашмирчаКурдчаҚирғизчаЛотинчаЛюкс" +
- "ембургчаЛаоЛитвачаЛатишчаМалагасиМаориМакедончаМалайаламМаратиМалай" +
- "чаМальтачаБирманчаНепалчаГолландчаНорвегча НинорскНорвегча БокмалОр" +
- "ияПанжобчаПолякчаПуштуПортугалчаКвечуаРоманчаРуминчаРусчаСанскритча" +
- "СиндхиСинхалаСловакчаСловенчаСомаличаАлбанчаСербчаСунданчаШведчаСуа" +
- "хилиТамилчаТелугуТожикчаТайчаТигриньяТуркманчаТонгочаТуркчаТатарчаУ" +
- "йғурчаУкраинчаУрдуЎзбекВьетнамчаВолофчаХосаЙорубаХитойчаЗулуФилипин" +
- "оШвейцария немисчасиГавайчаНомаълум тилСтандарт Марокаш ТамазитТил " +
- "таркиби йўқЛотин Америка испанчасиФламандча",
- []uint16{ // 604 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020, 0x002e, 0x002e,
- 0x003a, 0x0048, 0x0048, 0x0048, 0x0060, 0x0060, 0x0072, 0x0082,
- 0x0082, 0x0082, 0x0092, 0x00a0, 0x00a0, 0x00b0, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00cc, 0x00cc, 0x00cc, 0x00d8, 0x00e6,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0100, 0x0110, 0x0122, 0x0130,
- 0x013e, 0x014a, 0x0156, 0x0156, 0x0160, 0x016c, 0x017a, 0x018c,
- 0x01ab, 0x01bb, 0x01bb, 0x01cd, 0x01db, 0x01eb, 0x01eb, 0x01f5,
- 0x0203, 0x020f, 0x020f, 0x021f, 0x0231, 0x023f, 0x024d, 0x024d,
- // Entry 40 - 7F
- 0x024d, 0x0263, 0x0263, 0x026b, 0x026b, 0x026b, 0x026b, 0x027b,
- 0x028b, 0x028b, 0x0297, 0x02a3, 0x02b3, 0x02b3, 0x02b3, 0x02b3,
- 0x02c1, 0x02c1, 0x02cd, 0x02db, 0x02eb, 0x02eb, 0x02fb, 0x0307,
- 0x0307, 0x0307, 0x0317, 0x0325, 0x033d, 0x033d, 0x033d, 0x033d,
- 0x0343, 0x0351, 0x0351, 0x035f, 0x036f, 0x036f, 0x0379, 0x038b,
- 0x039d, 0x039d, 0x03a9, 0x03b7, 0x03c7, 0x03d7, 0x03d7, 0x03d7,
- 0x03e5, 0x03e5, 0x03f7, 0x0416, 0x0433, 0x0433, 0x0433, 0x0433,
- 0x0433, 0x0433, 0x0433, 0x043b, 0x043b, 0x044b, 0x044b, 0x0459,
- // Entry 80 - BF
- 0x0463, 0x0477, 0x0483, 0x0491, 0x0491, 0x049f, 0x04a9, 0x04a9,
- 0x04bd, 0x04bd, 0x04c9, 0x04c9, 0x04c9, 0x04d7, 0x04e7, 0x04f7,
- 0x04f7, 0x04f7, 0x0507, 0x0515, 0x0521, 0x0521, 0x0521, 0x0531,
- 0x053d, 0x054b, 0x0559, 0x0565, 0x0573, 0x057d, 0x058d, 0x059f,
- 0x059f, 0x05ad, 0x05b9, 0x05b9, 0x05c7, 0x05c7, 0x05d5, 0x05e5,
- 0x05ed, 0x05f7, 0x05f7, 0x0609, 0x0609, 0x0609, 0x0617, 0x061f,
- 0x061f, 0x062b, 0x062b, 0x0639, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- // Entry C0 - FF
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- // Entry 100 - 13F
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
- 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0651,
- 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
- 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
- 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
- 0x0651, 0x0651, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676,
- // Entry 140 - 17F
- 0x0676, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- // Entry 180 - 1BF
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- // Entry 1C0 - 1FF
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- // Entry 200 - 23F
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
- 0x0684, 0x0684, 0x0684, 0x0684, 0x069b, 0x069b, 0x069b, 0x069b,
- 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
- 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
- // Entry 240 - 27F
- 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
- 0x06c9, 0x06c9, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5,
- 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x0711, 0x0711, 0x0711, 0x0711,
- 0x0711, 0x0711, 0x0711, 0x0723,
- },
- },
- { // vai
- "ꕉꕪꘋꕉꕆꕌꔸꕞꕌꖝꔆꕞꖩꔻꗂꔠꗸꘋꗩꕭꔷꗿꗡꕧꕮꔧꗥꗷꘋꕶꕱꕐꘊꔧꗨꗡꔻꘂꘋꗱꘋꔻꕌꖙꕢꔦꔺꖽꔟꗸꘋꔤꖆꕇꔻꘂꘋꔤꕼꔤꕚꔷꘂꘋꕧꕐꕇꔧꕧꕙꕇꔧ" +
- "ꕃꘈꗢꖏꔸꘂꘋꕮꔒꔀꗩꕆꔻꕇꕐꔷꗍꔿꖛꕨꔬꗁꔒꔻꕶꕿꕃꔤꖄꕆꕇꘂꘋꗐꖺꔻꘂꘋꕟꖙꕡꖇꕮꔷꖬꔨꗵꘋꕚꕆꔷꕚꔤꗋꕃꖳꖴꔓꕇꘂꘋꖺꖦꔲꕩꕯ" +
- "ꕆꔧꖎꖄꕑꕦꕇꔧꖮꖨꕙꔤ",
- []uint16{ // 558 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x0036,
- 0x0036, 0x0036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
- 0x003f, 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x005d, 0x005d, 0x0066,
- 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x007e,
- 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087,
- 0x0087, 0x008d, 0x008d, 0x008d, 0x008d, 0x0099, 0x0099, 0x0099,
- // Entry 40 - 7F
- 0x0099, 0x00ab, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
- 0x00c0, 0x00c0, 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
- 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
- 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
- 0x00ed, 0x00ed, 0x00ed, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff,
- 0x0108, 0x0108, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
- 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x0117, 0x0120,
- // Entry 80 - BF
- 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x013b, 0x014a, 0x0153,
- 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
- 0x0153, 0x0153, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c,
- 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0177, 0x0177, 0x0177,
- 0x0177, 0x0177, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x018f,
- 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
- 0x01a4, 0x01ad, 0x01ad, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry C0 - FF
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry 100 - 13F
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry 140 - 17F
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry 180 - 1BF
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry 1C0 - 1FF
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- // Entry 200 - 23F
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c2,
- },
- },
- { // vai-Latn
- "AkaŋAmiháriLahabuBhelarusaŋBhɔgerɛŋBhɛŋgáliChɛJamáĩHɛlɛŋPooPanyɛĩPɛɛsiyɛ" +
- "ŋFɛŋsiHawusaHíiŋdiHɔŋgérɛŋÍndonisiyɛŋÍgboItáliyɛŋJapaníĩJavaníĩKimɛ" +
- "ɛ̃ tɛKoríyɛŋMaléeeBhɛmísiNipaliDɔchiPuŋjabhiPɔ́lésiPotokíiRomíniyɛŋ" +
- "RɔshiyɛŋRawundaSomáliSúwídɛŋTamíliTáiTɔ́kiYukureniyɛŋƆduViyamíĩYórób" +
- "haChaniĩZúluVai",
- []uint16{ // 558 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000d, 0x000d,
- 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0029,
- 0x0029, 0x0029, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x004a, 0x004a, 0x0052,
- 0x0052, 0x0052, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006b,
- 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0080, 0x0080, 0x0080,
- // Entry 40 - 7F
- 0x0080, 0x008e, 0x008e, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x009e, 0x009e, 0x00a7, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
- 0x00b0, 0x00b0, 0x00bd, 0x00bd, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00d7, 0x00d7, 0x00d7,
- 0x00dd, 0x00dd, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
- 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f6,
- // Entry 80 - BF
- 0x00f6, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x010a, 0x0115, 0x011c,
- 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
- 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0139, 0x0139, 0x0139,
- 0x0139, 0x0139, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014d,
- 0x0151, 0x0151, 0x0151, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x0163, 0x0163, 0x016a, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry C0 - FF
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry 100 - 13F
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry 140 - 17F
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry 180 - 1BF
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry 1C0 - 1FF
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- // Entry 200 - 23F
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
- 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x0172,
- },
- },
- { // vi
- viLangStr,
- viLangIdx,
- },
- { // vun
- "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
- "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
- "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
- "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
- "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
- "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKyi" +
- "vunjo",
- []uint16{ // 565 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
- 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
- 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
- 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
- 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
- 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
- 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
- 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
- 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
- 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
- // Entry 80 - BF
- 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
- 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
- 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
- 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
- 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry C0 - FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 100 - 13F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 140 - 17F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 180 - 1BF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 1C0 - 1FF
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- // Entry 200 - 23F
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x0199, 0x0199, 0x01a1,
- },
- },
- { // wae
- "AbčasišAfrikánsAmharišArabišAssamesišAymaraSerbaidšanišWísrussišBulgariš" +
- "BengališTibetišBosnišKatalanišTšečišWalisišDänišTitšMalediwišButaniš" +
- "GričišEnglišSchpanišEstnišBaskišPersišFinišFidšianišWälšIrišGalizišG" +
- "uaraniGujaratiHausaHebräišHindiKroatišHaitianišUngarišArmenišIndones" +
- "išIgboIisländišItalienišJapanišGeorgišKazačišKambodšanišKannadaKorea" +
- "nišKašmirišKurdišKirgisišLatinišLuxemburgišLingalaLaotišLitauišLetti" +
- "šMalagásiMaoriMazedonišMalayalamMongolišMarathiMalaíšMaltesišBurmes" +
- "išNordndebeleNepalesišHoländišNorwegiš NynorskNorwegiš BokmålNyanjaO" +
- "riyaOsétišPandšabišPolnišPaštuPortugisišQuečuaRätromanišRundiRumäniš" +
- "RusišRuandišSanskritSindhiNordsamišSangoSingalesišSlowakišSlowenišSa" +
- "moanišShonaSomališAlbanišSerbišSwaziSüdsothoSundanesišSchwedišSuahel" +
- "išTamilišTeluguTadšikišThailändišTigrinjaTurkmenišTswanaTongaTürkišT" +
- "songaTaitišUigurišUkrainišUrduUsbekišVendaVietnamesišWolofXhosaYorub" +
- "aChinesišZuluEfikFilipinišHawaíanišNordsothoJakutišTetumNiwmelanesiš" +
- "Unbekannti SchpračWalserÖštričišes TitšSchwizer HočtitšAuštrališes E" +
- "nglišKanadišes EnglišBritišes EnglišAmerikanišes EnglišLatiamerikani" +
- "šes SchpanišIberišes SchpanišKanadišes WälšSchwizer WälšFlämišBrasi" +
- "lianišes PortugisišIberišes PortugisišVereifačts ChinesišTraditionel" +
- "ls Chinesiš",
- []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0012, 0x001a, 0x001a,
- 0x0021, 0x002b, 0x002b, 0x0031, 0x003f, 0x003f, 0x004a, 0x0053,
- 0x0053, 0x0053, 0x005c, 0x0064, 0x0064, 0x006b, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x007e, 0x007e, 0x007e, 0x0086, 0x008d,
- 0x0092, 0x009c, 0x00a4, 0x00a4, 0x00ac, 0x00b3, 0x00b3, 0x00bc,
- 0x00c3, 0x00ca, 0x00d1, 0x00d1, 0x00d7, 0x00e2, 0x00e2, 0x00e8,
- 0x00e8, 0x00ed, 0x00ed, 0x00f5, 0x00fc, 0x0104, 0x0104, 0x0109,
- 0x0112, 0x0117, 0x0117, 0x011f, 0x0129, 0x0131, 0x0139, 0x0139,
- // Entry 40 - 7F
- 0x0139, 0x0143, 0x0143, 0x0147, 0x0147, 0x0147, 0x0147, 0x0152,
- 0x015c, 0x015c, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x0175, 0x0175, 0x0182, 0x0189, 0x0192, 0x0192, 0x019c, 0x01a3,
- 0x01a3, 0x01a3, 0x01ac, 0x01b4, 0x01c0, 0x01c0, 0x01c0, 0x01c7,
- 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e6, 0x01e6, 0x01eb, 0x01f5,
- 0x01fe, 0x0207, 0x020e, 0x0216, 0x021f, 0x0228, 0x0228, 0x0233,
- 0x023d, 0x023d, 0x0247, 0x0258, 0x0269, 0x0269, 0x0269, 0x026f,
- 0x026f, 0x026f, 0x026f, 0x0274, 0x027c, 0x0287, 0x0287, 0x028e,
- // Entry 80 - BF
- 0x0294, 0x029f, 0x02a6, 0x02b2, 0x02b7, 0x02c0, 0x02c6, 0x02ce,
- 0x02d6, 0x02d6, 0x02dc, 0x02e6, 0x02eb, 0x02f6, 0x02ff, 0x0308,
- 0x0311, 0x0316, 0x031e, 0x0326, 0x032d, 0x0332, 0x033b, 0x0346,
- 0x034f, 0x0358, 0x0360, 0x0366, 0x0370, 0x037c, 0x0384, 0x038e,
- 0x0394, 0x0399, 0x03a1, 0x03a7, 0x03a7, 0x03ae, 0x03b6, 0x03bf,
- 0x03c3, 0x03cb, 0x03d0, 0x03dc, 0x03dc, 0x03dc, 0x03e1, 0x03e6,
- 0x03e6, 0x03ec, 0x03ec, 0x03f5, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- // Entry C0 - FF
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- // Entry 100 - 13F
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
- 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03fd, 0x03fd, 0x03fd,
- 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x0407,
- 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
- 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
- 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
- 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
- // Entry 140 - 17F
- 0x0407, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- // Entry 180 - 1BF
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
- 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x041b, 0x041b, 0x041b,
- // Entry 1C0 - 1FF
- 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
- 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
- 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
- 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
- 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x0423, 0x0423, 0x0423,
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
- // Entry 200 - 23F
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
- 0x0423, 0x0423, 0x0423, 0x0423, 0x0428, 0x0428, 0x0428, 0x0428,
- 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0435, 0x0435,
- 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435,
- 0x0435, 0x0435, 0x0435, 0x0435, 0x0448, 0x0448, 0x0448, 0x0448,
- 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x044e, 0x044e, 0x044e,
- 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e,
- // Entry 240 - 27F
- 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e,
- 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x0462, 0x0474,
- 0x0489, 0x049b, 0x04ac, 0x04c1, 0x04dc, 0x04ef, 0x04ef, 0x04ef,
- 0x0500, 0x050f, 0x050f, 0x0517, 0x0531, 0x0546, 0x0546, 0x0546,
- 0x055b, 0x0572,
- },
- },
- { // xog
- "OluakaaniOluamharikiOluwarabuOlubelarusiOlubulugariyaOlubengaliOluceekeO" +
- "ludaakiOluyonaaniOlungerezaOlusipanyaOluperusiOlufalansaOluhawuzaOlu" +
- "hinduOluhangareOluyindonezyaOluyiboOluyitaleOlujapaniOlunnajjavaOluk" +
- "meOlukoreyaOlumalayiOlubbamaOlunepaliOluholandiOlupunjabiOlupolandiO" +
- "lupotugiiziOlulomaniyaOlulasaOlunarwandaOlusomaliyaOluswideniOlutami" +
- "iruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOluyorubaOluca" +
- "yinaOluzzuluOlusoga",
- []uint16{ // 574 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0035,
- 0x0035, 0x0035, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
- 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0063, 0x0063, 0x006d,
- 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089,
- 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x009b, 0x009b, 0x009b,
- // Entry 40 - 7F
- 0x009b, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af,
- 0x00b8, 0x00b8, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
- 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x00e4, 0x00e4, 0x00ec, 0x00ec, 0x00ec,
- 0x00f5, 0x00f5, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0109, 0x0109, 0x0113,
- // Entry 80 - BF
- 0x0113, 0x011f, 0x011f, 0x011f, 0x011f, 0x012a, 0x0131, 0x013c,
- 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
- 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0151, 0x0151, 0x015b, 0x015b, 0x015b, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x0178,
- 0x0181, 0x0181, 0x0181, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e,
- 0x018e, 0x0197, 0x0197, 0x01a0, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry C0 - FF
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry 100 - 13F
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry 140 - 17F
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry 180 - 1BF
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry 1C0 - 1FF
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- // Entry 200 - 23F
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01af,
- },
- },
- { // yav
- "akánɛamalíképakaspielúsebulgálɛpengálɛ́ɛcɛ́kɛ́ɛŋndiámanyavánɛíŋgilísénu" +
- "ɛspanyɔ́lɛnupɛ́lisɛfeleŋsípakasíndíɔ́ŋgɛíndonísiɛíboitáliɛndiámanyá" +
- "vanɛkímɛɛkolíemáliɛbímanɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlit" +
- "ukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnusomalíɛnusuetuanutámulenutáyɛnutúluk" +
- "enukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛnusulúnuasue",
- []uint16{ // 577 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
- 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001e, 0x0027,
- 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x005e, 0x005e, 0x006e,
- 0x006e, 0x006e, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083,
- 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0088,
- 0x0088, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097,
- // Entry 40 - 7F
- 0x0097, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
- 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc,
- 0x00e6, 0x00e6, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
- 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00fd, 0x00fd, 0x010a,
- // Entry 80 - BF
- 0x010a, 0x011a, 0x011a, 0x011a, 0x011a, 0x0127, 0x012e, 0x013c,
- 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
- 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0160, 0x0160, 0x0160,
- 0x0160, 0x0160, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0179,
- 0x0180, 0x0180, 0x0180, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190,
- 0x0190, 0x0199, 0x0199, 0x01a0, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry C0 - FF
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 100 - 13F
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 140 - 17F
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 180 - 1BF
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 1C0 - 1FF
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 200 - 23F
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- // Entry 240 - 27F
- 0x01ad,
- },
- },
- { // yi
- "אַפֿאַראַפֿריקאַנסאַמהאַרישאַראַגאנישאַראַבישאַסאַמישאַזערביידזשאַנישבעל" +
- "אַרוסישבולגאַרישבענגאַלישטיבעטישברעטאנישבאסנישקאַטאַלאנישטשעכישקלוי" +
- "סטער־סלאַווישוועלשישדענישדײַטשגריכישענגלישעספּעראַנטאשפּאַנישעסטישב" +
- "אַסקישפּערסישפֿינישפֿידזשיפֿאַראישפֿראַנצויזישמערב־פֿריזישאירישסקאט" +
- "יש געלישגאַלישישמאַנקסהאַוסאַהעברעאישהינדיקראאַטישאונגערישאַרמענישא" +
- "ינדאנעזישאידאאיסלאַנדישאיטאַליענישיאַפּאַנישיאַוואַנעזישגרוזינישקאַ" +
- "זאַכישכמערקאַנאַדאַקארעאישקורדישקארנישקירגיזישלאטיינישלוקסעמבורגישל" +
- "אַאליטווישלעטישמאַארישמאַקעדאנישמאַלאַיאַלאַםמאנגאלישמאַלטעזישבירמא" +
- "ַנישנעפּאַלישהאלענדישנײַ־נארוועגישנארוועגישאקסיטאַנישאסעטישפּוילישפ" +
- "ּאַשטאָפּארטוגעזישרומענישרוסישסאַנסקריטסאַרדישסינדהינארדסאַמישסינהא" +
- "ַלישסלאוואַקישסלאווענישסאַמאאַניששאנאַסאמאַלישאַלבאַנישסערביששוועדי" +
- "שסוואַהילישטאַמילטורקמענישטאָטערישאוקראַאינישאורדואוזבעקישוויעטנאַמ" +
- "עזישוואלאַפּוקייִדישכינעזישזולואַקאַדישאַלט ענגלישאַראַמישבאַלינעזי" +
- "שבײַערישסעבואַנישקרים־טערקישקאַשובישאונטער־סארבישזשאלא־פֿאנימיטל ענ" +
- "גלישפֿיליפּינאאַלט־פֿראַנצויזישדרום־פֿריזישמזרח־פֿריזישמיטל הויכדוי" +
- "טשאַלט־ הויכדויטשגאטישאוראַלט־גריכישפידזשי הינדיאייבער־סארבישלאזשבא" +
- "ָןיידיש־פערסישלאַדינאליווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפ" +
- "ּרייסישרוסינישסיציליאַנישסקאטסאַלט־אירישאונטער שלעזישslyסומערישקאמא" +
- "רישקאנגא־סוואַהיליששלעזישטיגרעאומבאַוואוסטע שפּראַךמערב פֿלעמישפֿלע" +
- "מישסערבא־קראאַטיש",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x000e, 0x000e, 0x0024, 0x0024, 0x0036, 0x004a,
- 0x005a, 0x006a, 0x006a, 0x006a, 0x008a, 0x008a, 0x009e, 0x00b0,
- 0x00b0, 0x00b0, 0x00c2, 0x00d0, 0x00e0, 0x00ec, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x010e, 0x0130, 0x0130, 0x013e, 0x0148,
- 0x0152, 0x0152, 0x0152, 0x0152, 0x015e, 0x016a, 0x0180, 0x0190,
- 0x019a, 0x01a8, 0x01b6, 0x01b6, 0x01c2, 0x01d0, 0x01e0, 0x01f8,
- 0x0210, 0x021a, 0x0231, 0x0241, 0x0241, 0x0241, 0x024d, 0x025b,
- 0x026b, 0x0275, 0x0275, 0x0285, 0x0285, 0x0295, 0x02a5, 0x02a5,
- // Entry 40 - 7F
- 0x02a5, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c1, 0x02d5,
- 0x02eb, 0x02eb, 0x02ff, 0x0317, 0x0327, 0x0327, 0x0327, 0x0327,
- 0x0339, 0x0339, 0x0341, 0x0353, 0x0361, 0x0361, 0x0361, 0x036d,
- 0x036d, 0x0379, 0x0389, 0x0399, 0x03b1, 0x03b1, 0x03b1, 0x03b1,
- 0x03b9, 0x03c7, 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03df, 0x03f3,
- 0x040d, 0x041d, 0x041d, 0x041d, 0x042f, 0x0441, 0x0441, 0x0441,
- 0x0453, 0x0453, 0x0463, 0x047d, 0x048f, 0x048f, 0x048f, 0x048f,
- 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04af, 0x04af, 0x04af, 0x04bd,
- // Entry 80 - BF
- 0x04cd, 0x04e3, 0x04e3, 0x04e3, 0x04e3, 0x04f1, 0x04fb, 0x04fb,
- 0x050d, 0x051b, 0x0527, 0x053b, 0x053b, 0x054d, 0x0561, 0x0573,
- 0x0587, 0x0591, 0x05a1, 0x05b3, 0x05bf, 0x05bf, 0x05bf, 0x05bf,
- 0x05cd, 0x05e1, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ff,
- 0x05ff, 0x05ff, 0x05ff, 0x05ff, 0x060f, 0x060f, 0x060f, 0x0625,
- 0x062f, 0x063f, 0x063f, 0x0659, 0x066d, 0x066d, 0x066d, 0x066d,
- 0x0679, 0x0679, 0x0679, 0x0687, 0x068f, 0x068f, 0x068f, 0x068f,
- 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x069f, 0x069f, 0x069f,
- // Entry C0 - FF
- 0x069f, 0x069f, 0x06b4, 0x06b4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
- 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
- 0x06c4, 0x06c4, 0x06d8, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
- 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
- 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
- 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
- 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06f8, 0x06f8, 0x06f8, 0x06f8,
- 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8,
- // Entry 100 - 13F
- 0x06f8, 0x06f8, 0x070e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e,
- 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x0738, 0x0738, 0x0738,
- 0x0738, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e,
- 0x074e, 0x074e, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0777,
- 0x0777, 0x0777, 0x0777, 0x0777, 0x0799, 0x0799, 0x07b1, 0x07c9,
- 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9,
- 0x07c9, 0x07c9, 0x07e4, 0x0801, 0x0801, 0x0801, 0x0801, 0x080b,
- 0x080b, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827,
- // Entry 140 - 17F
- 0x0827, 0x0827, 0x083e, 0x083e, 0x083e, 0x083e, 0x0858, 0x0858,
- 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0868,
- 0x0868, 0x0868, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e,
- // Entry 180 - 1BF
- 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a,
- 0x089a, 0x089a, 0x089a, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
- 0x08bc, 0x08bc, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
- 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
- // Entry 1C0 - 1FF
- 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
- 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7,
- 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08f7, 0x08f7, 0x08f7, 0x08f7,
- 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7,
- 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905,
- 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x091b, 0x0925, 0x0925,
- 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0939, 0x0939,
- 0x0939, 0x0939, 0x0939, 0x0939, 0x0952, 0x0955, 0x0955, 0x0955,
- // Entry 200 - 23F
- 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955,
- 0x0955, 0x0955, 0x0963, 0x0971, 0x0991, 0x0991, 0x0991, 0x099d,
- 0x099d, 0x099d, 0x099d, 0x099d, 0x099d, 0x09a7, 0x09a7, 0x09a7,
- 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7,
- 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7,
- 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09d0, 0x09d0, 0x09d0, 0x09d0,
- 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
- 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
- // Entry 240 - 27F
- 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
- 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
- 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
- 0x09e7, 0x09e7, 0x09e7, 0x09f5, 0x09f5, 0x09f5, 0x09f5, 0x0a11,
- },
- },
- { // yo
- "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" +
- "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" +
- "Èdè WelshiÈdè Ilẹ̀ DenmarkÈdè Ilẹ̀ GemaniÈdè GirikiÈdè Gẹ̀ẹ́sìÈdè E" +
- "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" +
- "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" +
- "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" +
- " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" +
- "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" +
- "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" +
- "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" +
- "citaniÈdè PunjabiÈdè Ilẹ̀ PolandiÈdè PọtugiÈdè RomaniaÈdè ̣RọọsiaÈdè" +
- " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" +
- "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" +
- "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" +
- " TọọkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" +
- "dè YorùbáÈdè MandariÈdè ṢuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croati" +
- "ani",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026,
- 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067,
- 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c5,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e5, 0x00f9, 0x0108, 0x0116,
- 0x0123, 0x012e, 0x0139, 0x0139, 0x0145, 0x0145, 0x0152, 0x0160,
- 0x016c, 0x0179, 0x0195, 0x01a2, 0x01af, 0x01bd, 0x01bd, 0x01c8,
- 0x01d4, 0x01df, 0x01df, 0x01ec, 0x01ec, 0x01fa, 0x020b, 0x020b,
- // Entry 40 - 7F
- 0x0215, 0x0224, 0x022d, 0x0236, 0x0236, 0x0236, 0x0236, 0x0245,
- 0x0253, 0x0253, 0x0261, 0x026f, 0x027c, 0x027c, 0x027c, 0x027c,
- 0x027c, 0x027c, 0x0288, 0x0295, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
- 0x02a0, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac,
- 0x02ac, 0x02bb, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02c9, 0x02d8,
- 0x02d8, 0x02d8, 0x02e5, 0x02f1, 0x02fc, 0x0309, 0x0309, 0x0309,
- 0x0315, 0x0315, 0x031f, 0x031f, 0x032b, 0x032b, 0x032b, 0x032b,
- 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, 0x0346, 0x0346, 0x035b,
- // Entry 80 - BF
- 0x035b, 0x0369, 0x0369, 0x0369, 0x0369, 0x0376, 0x0388, 0x0395,
- 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d0, 0x03de,
- 0x03de, 0x03de, 0x03ef, 0x03fc, 0x0408, 0x0408, 0x0414, 0x0420,
- 0x042f, 0x043c, 0x0448, 0x0454, 0x0454, 0x045d, 0x046b, 0x0478,
- 0x0478, 0x0478, 0x0489, 0x0489, 0x0489, 0x0489, 0x0489, 0x0495,
- 0x049e, 0x04a9, 0x04a9, 0x04b7, 0x04b7, 0x04b7, 0x04b7, 0x04c2,
- 0x04d0, 0x04de, 0x04de, 0x04eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- // Entry C0 - FF
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- // Entry 100 - 13F
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
- 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- // Entry 140 - 17F
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- // Entry 180 - 1BF
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- // Entry 1C0 - 1FF
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- // Entry 200 - 23F
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
- 0x0505, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- // Entry 240 - 27F
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0528,
- },
- },
- { // yo-BJ
- "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" +
- "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" +
- "Èdè WelshiÈdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè GirikiÈdè Gɛ̀ɛ́sìÈdè E" +
- "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" +
- "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" +
- "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" +
- " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" +
- "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" +
- "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" +
- "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" +
- "citaniÈdè PunjabiÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè RomaniaÈdè ̣RɔɔsiaÈdè" +
- " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" +
- "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" +
- "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" +
- " TɔɔkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" +
- "dè YorùbáÈdè MandariÈdè ShuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croat" +
- "iani",
- []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026,
- 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067,
- 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c4,
- 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00e3, 0x00f5, 0x0104, 0x0112,
- 0x011f, 0x012a, 0x0135, 0x0135, 0x0141, 0x0141, 0x014e, 0x015c,
- 0x0168, 0x0175, 0x0191, 0x019e, 0x01ab, 0x01b9, 0x01b9, 0x01c4,
- 0x01d0, 0x01db, 0x01db, 0x01e8, 0x01e8, 0x01f6, 0x0207, 0x0207,
- // Entry 40 - 7F
- 0x0211, 0x0220, 0x0229, 0x0232, 0x0232, 0x0232, 0x0232, 0x0241,
- 0x024f, 0x024f, 0x025d, 0x026b, 0x0278, 0x0278, 0x0278, 0x0278,
- 0x0278, 0x0278, 0x0284, 0x0291, 0x029c, 0x029c, 0x029c, 0x029c,
- 0x029c, 0x029c, 0x029c, 0x02a8, 0x02a8, 0x02a8, 0x02a8, 0x02a8,
- 0x02a8, 0x02b7, 0x02b7, 0x02c5, 0x02c5, 0x02c5, 0x02c5, 0x02d4,
- 0x02d4, 0x02d4, 0x02e1, 0x02ed, 0x02f8, 0x0305, 0x0305, 0x0305,
- 0x0311, 0x0311, 0x031b, 0x031b, 0x0327, 0x0327, 0x0327, 0x0327,
- 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0342, 0x0342, 0x0356,
- // Entry 80 - BF
- 0x0356, 0x0363, 0x0363, 0x0363, 0x0363, 0x0370, 0x0380, 0x038d,
- 0x03a0, 0x03a0, 0x03ac, 0x03ac, 0x03ac, 0x03bb, 0x03c8, 0x03d6,
- 0x03d6, 0x03d6, 0x03e7, 0x03f4, 0x0400, 0x0400, 0x040c, 0x0418,
- 0x0427, 0x0434, 0x0440, 0x044c, 0x044c, 0x0455, 0x0463, 0x0470,
- 0x0470, 0x0470, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x048b,
- 0x0494, 0x049f, 0x049f, 0x04ad, 0x04ad, 0x04ad, 0x04ad, 0x04b8,
- 0x04c6, 0x04d4, 0x04d4, 0x04e1, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- // Entry C0 - FF
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- // Entry 100 - 13F
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
- 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- // Entry 140 - 17F
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- // Entry 180 - 1BF
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- // Entry 1C0 - 1FF
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- // Entry 200 - 23F
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
- 0x04fa, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- // Entry 240 - 27F
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
- 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x051d,
- },
- },
- { // zgh
- "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" +
- "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" +
- "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" +
- "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" +
- "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" +
- "ⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ",
- []uint16{ // 585 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a,
- 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078,
- 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111,
- 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f,
- 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192,
- // Entry 40 - 7F
- 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
- 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
- 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279,
- 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2,
- 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8,
- // Entry 80 - BF
- 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351,
- 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351,
- 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c,
- 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd,
- 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed,
- 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
- 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry C0 - FF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 100 - 13F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 140 - 17F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 180 - 1BF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 1C0 - 1FF
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 200 - 23F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- // Entry 240 - 27F
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
- 0x047a,
- },
- },
- { // zh
- zhLangStr,
- zhLangIdx,
- },
- { // zh-Hant
- zhHantLangStr,
- zhHantLangIdx,
- },
- { // zh-Hant-HK
- "阿塞拜疆文巴什基爾文布里多尼文波斯尼亞文加泰隆尼亞文世界語加里西亞文克羅地亞文意大利文格魯吉亞文坎納達文老撾文馬拉加斯文馬拉雅拉姆文馬耳他文奧里" +
- "雅文盧旺達文信德語斯洛文尼亞文修納文索馬里文泰米爾文湯加文烏爾都文瑞士德文毛里裘斯克里奧爾文西非書面語言(N’ko)伊納里薩米文剛果" +
- "史瓦希里文瓦爾皮里文摩洛哥標準塔馬齊格特文南阿塞拜疆文奧地利德文瑞士德語澳洲英文加拿大英文英國英文美國英文拉丁美洲西班牙文歐洲西班牙" +
- "文墨西哥西班牙文加拿大法文瑞士法文荷蘭低地德文巴西葡萄牙語歐洲葡萄牙文摩爾多瓦羅馬尼亞文",
- []uint16{ // 607 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x002d, 0x003c, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
- 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- // Entry 40 - 7F
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
- 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
- 0x00d2, 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 80 - BF
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ea,
- 0x00ea, 0x00ea, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x0105,
- 0x0105, 0x010e, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
- 0x011a, 0x011a, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
- 0x0126, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- // Entry C0 - FF
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- // Entry 100 - 13F
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
- 0x013b, 0x013b, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- // Entry 140 - 17F
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- // Entry 180 - 1BF
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0162, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 1C0 - 1FF
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
- // Entry 200 - 23F
- 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192,
- 0x0192, 0x0192, 0x0192, 0x0192, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
- 0x01a7, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
- // Entry 240 - 27F
- 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
- 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e9, 0x01f8, 0x0204,
- 0x0210, 0x021f, 0x022b, 0x0237, 0x024f, 0x0261, 0x0276, 0x0276,
- 0x0285, 0x0291, 0x02a3, 0x02a3, 0x02b5, 0x02c7, 0x02e2,
- },
- },
- { // zu
- zuLangStr,
- zuLangIdx,
- },
-}
-
-var afLangStr string = "" + // Size: 2000 bytes
- "AbkasiesAfrikaansAkanAmhariesArabiesAssameesAymaraAzerbeidjansBaskirBelo" +
- "-RussiesBulgaarsBambaraBengaalsTibettaansBretonsBosniesKatalaansTsjetsje" +
- "nKorsikaansTsjeggiesChuvashWalliesDeensDuitsDivehiDzongkhaEweGrieksEngel" +
- "sEsperantoSpaansEstniesBaskiesPersiesFinsFidjiaansFaroeesFransWes-FriesI" +
- "ersSkotse GalliesGalisiesGuaraniGoedjaratiManxHausaHebreeusHindiKroaties" +
- "HaïtiaansHongaarsArmeensInterlinguaIndonesiesIgboSichuan YiYslandsItalia" +
- "ansInnuïtiesJapanneesJavaansGeorgiesKongoleesKikuyuKazaksKalaallisutKhme" +
- "rKannadaKoreaansKasjmirsKoerdiesKorniesKirgisiesLatynLuxemburgsGandaLing" +
- "aalsLaoLitausLuba-KatangaLettiesMalgassiesMaoriMasedoniesMalabaarsMongoo" +
- "lsMarathiMaleisMalteesBirmaansNoord-NdebeleNepaleesNederlandsNoorweegse " +
- "NynorskNoorse BokmålSuid-NdebeleNyanjaOksitaansOromoOriyaOssetiesPandjab" +
- "iPoolsPasjtoPortugeesQuechuaReto-RomaansRundiRoemeensRussiesRwandeesSans" +
- "kritSindhiNoord-SamiSangoSinhalaSlowaaksSloweensSamoaansShonaSomaliesAlb" +
- "aneesSerwiesSwaziSuid-SothoSundaneesSweedsSwahiliTamilTeloegoeTadzjieksT" +
- "haiTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiesUighurOekraï" +
- "ensOerdoeOezbeeksVendaViëtnameesWolofXhosaJiddisjYorubaSjineesZoeloeAkol" +
- "iAghemArameesMapucheAsuBembaBenaWes-BalochiBodoSjigaCherokeesSorani Koer" +
- "diesTaitaZarmaLae SorbiesDualaJola-FonyiEmbuEfikAntieke EgiptiesFilippyn" +
- "sGaaGagauzGotiesAntieke GrieksSwitserse DuitsGusiiHawaiiesHoog-SorbiesNg" +
- "ombaMachameKabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-Permya" +
- "ksKonkaniShambalaBafiaLangiLakotaLoziNoord-LuriLuba-LuluaLuoLuyiaMasaiMe" +
- "ruMorisjenMakhuwa-MeettoMeta’MohawkMundangVeelvuldige taleMasanderaniNam" +
- "aLae DuitsKwasioN’KoNoord-SothoNuerNyankoleK’iche’RomboRwaSamburuSanguSu" +
- "id-KoerdiesSenaKoyraboro SenniTachelhitSuid-SamiLule SamiInari SamiSkolt" +
- " SamiSwahili (Kongo)TesoTetumKlingonTok PisinToemboekaTasawaqSentraal At" +
- "las TamazightOnbekende of ongeldige taalVaiVunjoWarlpiriSogaStandaard Ma" +
- "rokkaanse TamazightGeen linguistiese inhoudModerne Standaard ArabiesSwit" +
- "serse hoog-DuitsNedersaksiesVlaamsMoldawies"
-
-var afLangIdx = []uint16{ // 607 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0015, 0x001d, 0x001d,
- 0x0024, 0x002c, 0x002c, 0x0032, 0x003e, 0x0044, 0x0050, 0x0058,
- 0x0058, 0x005f, 0x0067, 0x0071, 0x0078, 0x007f, 0x0088, 0x0091,
- 0x0091, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00ab, 0x00b2, 0x00b7,
- 0x00bc, 0x00c2, 0x00ca, 0x00cd, 0x00d3, 0x00d9, 0x00e2, 0x00e8,
- 0x00ef, 0x00f6, 0x00fd, 0x00fd, 0x0101, 0x010a, 0x0111, 0x0116,
- 0x011f, 0x0123, 0x0131, 0x0139, 0x0140, 0x014a, 0x014e, 0x0153,
- 0x015b, 0x0160, 0x0160, 0x0168, 0x0172, 0x017a, 0x0181, 0x0181,
- // Entry 40 - 7F
- 0x018c, 0x0196, 0x0196, 0x019a, 0x01a4, 0x01a4, 0x01a4, 0x01ab,
- 0x01b4, 0x01be, 0x01c7, 0x01ce, 0x01d6, 0x01df, 0x01e5, 0x01e5,
- 0x01eb, 0x01f6, 0x01fb, 0x0202, 0x020a, 0x020a, 0x0212, 0x021a,
- 0x021a, 0x0221, 0x022a, 0x022f, 0x0239, 0x023e, 0x023e, 0x0246,
- 0x0249, 0x024f, 0x025b, 0x0262, 0x026c, 0x026c, 0x0271, 0x027b,
- 0x0284, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a8, 0x02a8, 0x02b5,
- 0x02bd, 0x02bd, 0x02c7, 0x02d9, 0x02e7, 0x02f3, 0x02f3, 0x02f9,
- 0x0302, 0x0302, 0x0307, 0x030c, 0x0314, 0x031c, 0x031c, 0x0321,
- // Entry 80 - BF
- 0x0327, 0x0330, 0x0337, 0x0343, 0x0348, 0x0350, 0x0357, 0x035f,
- 0x0367, 0x0367, 0x036d, 0x0377, 0x037c, 0x0383, 0x038b, 0x0393,
- 0x039b, 0x03a0, 0x03a8, 0x03b0, 0x03b7, 0x03bc, 0x03c6, 0x03cf,
- 0x03d5, 0x03dc, 0x03e1, 0x03e9, 0x03f2, 0x03f6, 0x03fe, 0x0407,
- 0x040d, 0x0415, 0x041a, 0x0420, 0x0427, 0x042f, 0x0435, 0x043f,
- 0x0445, 0x044d, 0x0452, 0x045d, 0x045d, 0x045d, 0x0462, 0x0467,
- 0x046e, 0x0474, 0x0474, 0x047b, 0x0481, 0x0481, 0x0486, 0x0486,
- 0x0486, 0x0486, 0x0486, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
- // Entry C0 - FF
- 0x048b, 0x048b, 0x048b, 0x048b, 0x0492, 0x0499, 0x0499, 0x0499,
- 0x0499, 0x0499, 0x0499, 0x0499, 0x049c, 0x049c, 0x049c, 0x049c,
- 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c,
- 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04a5, 0x04a5, 0x04b0, 0x04b0,
- 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0,
- 0x04b0, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4,
- 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b9, 0x04b9, 0x04b9,
- 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04c2, 0x04c2, 0x04d1,
- // Entry 100 - 13F
- 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d6, 0x04d6,
- 0x04d6, 0x04d6, 0x04d6, 0x04db, 0x04db, 0x04e6, 0x04e6, 0x04eb,
- 0x04eb, 0x04f5, 0x04f5, 0x04f5, 0x04f9, 0x04fd, 0x04fd, 0x050d,
- 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x0516,
- 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516,
- 0x0516, 0x0519, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f,
- 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x0525,
- 0x0525, 0x0533, 0x0542, 0x0542, 0x0542, 0x0547, 0x0547, 0x0547,
- // Entry 140 - 17F
- 0x0547, 0x054f, 0x054f, 0x054f, 0x054f, 0x054f, 0x055b, 0x055b,
- 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b,
- 0x0561, 0x0568, 0x0568, 0x0568, 0x0568, 0x0568, 0x056e, 0x056e,
- 0x056e, 0x0573, 0x0573, 0x0573, 0x0573, 0x0573, 0x057a, 0x0586,
- 0x0586, 0x0586, 0x0586, 0x0586, 0x0586, 0x0592, 0x0592, 0x0592,
- 0x0592, 0x059a, 0x059a, 0x05a7, 0x05ae, 0x05ae, 0x05ae, 0x05ae,
- 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b6, 0x05bb, 0x05bb, 0x05bb,
- 0x05bb, 0x05bb, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0,
- // Entry 180 - 1BF
- 0x05c0, 0x05c6, 0x05c6, 0x05c6, 0x05ca, 0x05d4, 0x05d4, 0x05de,
- 0x05de, 0x05de, 0x05e1, 0x05e1, 0x05e6, 0x05e6, 0x05e6, 0x05e6,
- 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05eb, 0x05eb, 0x05eb,
- 0x05eb, 0x05eb, 0x05ef, 0x05f7, 0x05f7, 0x0605, 0x060c, 0x060c,
- 0x060c, 0x060c, 0x060c, 0x0612, 0x0612, 0x0612, 0x0619, 0x0629,
- 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0634, 0x0634,
- 0x0634, 0x0638, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0647,
- 0x0647, 0x0647, 0x0647, 0x0647, 0x064d, 0x0658, 0x065c, 0x065c,
- // Entry 1C0 - 1FF
- 0x065c, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664,
- 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664,
- 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x066f, 0x066f,
- 0x066f, 0x066f, 0x066f, 0x066f, 0x066f, 0x0674, 0x0674, 0x0674,
- 0x0674, 0x0674, 0x0674, 0x0677, 0x0677, 0x0677, 0x0677, 0x067e,
- 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683, 0x0683,
- 0x0690, 0x0690, 0x0694, 0x0694, 0x0694, 0x06a3, 0x06a3, 0x06a3,
- 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06b5, 0x06be,
- // Entry 200 - 23F
- 0x06c8, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2,
- 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06e1, 0x06e1, 0x06e1, 0x06e1,
- 0x06e1, 0x06e1, 0x06e5, 0x06e5, 0x06ea, 0x06ea, 0x06ea, 0x06ea,
- 0x06ea, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06fa, 0x06fa,
- 0x06fa, 0x06fa, 0x06fa, 0x06fa, 0x0703, 0x0703, 0x070a, 0x070a,
- 0x0722, 0x0722, 0x0722, 0x0722, 0x073d, 0x0740, 0x0740, 0x0740,
- 0x0740, 0x0740, 0x0740, 0x0740, 0x0745, 0x0745, 0x0745, 0x0745,
- 0x0745, 0x074d, 0x074d, 0x074d, 0x074d, 0x0751, 0x0751, 0x0751,
- // Entry 240 - 27F
- 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
- 0x0770, 0x0770, 0x0788, 0x0788, 0x07a1, 0x07a1, 0x07a1, 0x07b5,
- 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5,
- 0x07b5, 0x07b5, 0x07c1, 0x07c7, 0x07c7, 0x07c7, 0x07d0,
-} // Size: 1238 bytes
-
-var amLangStr string = "" + // Size: 5352 bytes
- "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" +
- "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" +
- "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፊኒሽፊጂኛፋሮኛፈረንሳይኛየምዕ" +
- "ራብ ፍሪስኛአይሪሽእስኮትስ ጌልክኛጋሊሺያጓራኒኛጉጃርቲኛማንክስኛሃውሳኛዕብራስጥሒንዱኛክሮሽያንኛሃይትኛሀንጋሪኛአርመ" +
- "ናዊኢንቴርሊንጓኢንዶኔዥኛእንተርሊንግወኢግቦኛሲቹንዪኛእኑፒያቅኛአይስላንድኛጣሊያንኛእኑክቲቱትኛጃፓንኛጃቫንኛጆርጂያን" +
- "ኮንጎኛኪኩዩካዛክኛካላሊሱትኛክመርኛ ማእከላዊካናዳኛኮሪያኛካሽሚርኛኩርድሽኛኮርኒሽኪርጊዝኛላቲንኛሉክዘምበርገርኛጋንዳ" +
- "ኛሊንጋላኛላውስኛሉቴንያንኛሉባ ካታንጋላትቪያንማላጋስኛማዮሪኛማሴዶንኛማላያላምኛሞንጎላዊኛማራቲኛማላይኛማልቲስኛቡርማ" +
- "ኛናኡሩሰሜን ንዴብሌኔፓሊኛደችየኖርዌይ ናይኖርስክየኖርዌይ ቦክማልንያንጃኦኪታንኛኦሮሞኛኦሪያኛኦሴቲክፑንጃብኛፖሊሽኛ" +
- "ፓሽቶኛፖርቹጋልኛኵቿኛሮማንሽሩንዲኛሮማኒያንራሽያኛኪንያርዋንድኛሳንስክሪትኛሲንድሂኛሰሜናዊ ሳሚሳንጎኛሲንሃልኛስሎቫክ" +
- "ኛስሎቪኛሳሞአኛሾናኛሱማልኛልቤኒኛሰርቢኛስዋቲኛሶዞኛሱዳንኛስዊድንኛስዋሂሊኛታሚልኛተሉጉኛታጂኪኛታይኛትግርኛቱርክመንኛ" +
- "ጽዋናዊኛቶንጋኛቱርክኛጾንጋኛታታርኛታሂታንኛኡዊግሁርኛዩክሬንኛኡርዱኛኡዝቤክኛቬንዳቪትናምኛቮላፑክኛዎሎፍኛዞሳኛይዲሽኛ" +
- "ዮሩባዊኛዡዋንግኛቻይንኛዙሉኛአቻይንኛአኮሊኛአዳንግሜአድይግሄአፍሪሂሊአገምአይኑአካዲያንአላባማአልዩትአንጊካአራማይክማ" +
- "ፑቼአራኦናአራፓሆየአልጄሪያ ዓረብኛአራዋክአሱየአሜሪካ የምልክት ቋንቋአውስትሪያንአዋድሂባሉቺባሊኔስባቫሪያንባሳባሙን" +
- "ባታካ ቶባቤጃቤምባቤታዊቤናባፉትባዳጋየምዕራብ ባሎቺቦጁሪቢኮልቢኒባንጃርቢሹንፑሪያባክህቲያሪብራጅብራሁዪቦዶአኮስቡሪያ" +
- "ትቡጊኔዝቡሉብሊንካዶካሪብካዩጋአትሳምካቡዋኖቺጋኛቺብቻቻጋታይቹክስቺኑክ ጃርጎንቾክታዋቺፔውያንቼሮኬኛችዬኔየሶራኒ ኩር" +
- "ድኛኮፕቲክካፒዝኖንክሪሚያን ተርኪሽዳኮታዳርግዋታይታኛዳላዌርዶግሪብዲንካዛርማኛዶግሪየታችኛው ሰርቢያንኛሴንተራል ዱሰ" +
- "ንዱዋላኛጆላ ፎንያኛድዩላዳዛጋኢቦኛኤፊክየጥንታዊ ግብጽኛሴንተራል ዩፒክፊሊፒንኛካጁን ፍሬንችአርፒታንጋጋጉዝኛግዕዝኛ" +
- "የጥንታዊ ግሪክየስዊዝ ጀርመንጉስሊኛሃዊያኛየላይኛው ሶርቢያንኛንጎባኛማቻሜኛካብይልካምባማኮንዴካቡቨርዲያኑኮይራ ቺኒ" +
- "ካለንጂንኮሚ ፔርምያክኮካኒሻምባላባፊያኮሎኝያንላንጊላኮታሎዚኛሰሜናዊ ሉሪሉባ-ሉሏሉኦሉዪያማሳይሜሩሞሪሲየኛማኩዋ ሜቶ" +
- "ሜታሞሃውክሙንዳንግክሪክማዛንደራኒናማየታችኛው ጀርመንኦ ናጋክዋሲዮንኮሰሜናዊ ሶቶኑዌርክላሲክ ኔዋሪኒያንኮልኛኪቼቺም" +
- "ቦራዞ ሃይላንድ ኩቹዋሮምቦአሮማንያንርዋሳምቡሩሳንጉደቡባዊ ኩዲሽሴናኮይራቦሮ ሴኒታቼልሂትቻዲያን ዓረብኛሲዳምኛደቡባ" +
- "ዊ ሳሚሉሌ ሳሚኢናሪ ሳሚስኮልት ሳሚኮሞሪያንኮንጎ ስዋሂሊክላሲክ ኔይራቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንቱምቡካታሳዋ" +
- "ቅመካከለኛ አትላስ ታማዚግትያልታወቀ ቋንቋቫይቩንጆዋርልፒሪሶጋካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትቋንቋዊ" +
- " ይዘት አይደለምዘመናዊ መደበኛ ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እን" +
- "ግሊዝኛየብሪቲሽ እንግሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈ" +
- "ረንሳይኛየስዊዝ ፈረንሳይኛየታችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቫዊናቀለል ያለ ቻይን" +
- "ኛባህላዊ ቻይንኛ"
-
-var amLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x001b, 0x002a, 0x003c, 0x0048, 0x0054, 0x0063,
- 0x006f, 0x007e, 0x008a, 0x0099, 0x00ae, 0x00bd, 0x00cc, 0x00db,
- 0x00ea, 0x00f9, 0x0108, 0x0117, 0x0126, 0x0138, 0x0147, 0x0150,
- 0x0159, 0x0168, 0x016e, 0x0177, 0x018d, 0x0196, 0x019f, 0x01a8,
- 0x01b4, 0x01bd, 0x01cf, 0x01d5, 0x01e1, 0x01f3, 0x0205, 0x0214,
- 0x0229, 0x0235, 0x0244, 0x0244, 0x024d, 0x0256, 0x025f, 0x0271,
- 0x028d, 0x0299, 0x02b5, 0x02c1, 0x02cd, 0x02dc, 0x02eb, 0x02f7,
- 0x0306, 0x0312, 0x0312, 0x0324, 0x0330, 0x033f, 0x034e, 0x034e,
- // Entry 40 - 7F
- 0x0363, 0x0375, 0x038d, 0x0399, 0x03a8, 0x03ba, 0x03ba, 0x03cf,
- 0x03de, 0x03f3, 0x03ff, 0x040b, 0x041a, 0x0426, 0x042f, 0x042f,
- 0x043b, 0x044d, 0x0469, 0x0475, 0x0481, 0x0481, 0x0490, 0x049f,
- 0x049f, 0x04ab, 0x04ba, 0x04c6, 0x04e1, 0x04ed, 0x04ed, 0x04fc,
- 0x0508, 0x051a, 0x052d, 0x053c, 0x054b, 0x054b, 0x0557, 0x0566,
- 0x0578, 0x058a, 0x0596, 0x05a2, 0x05b1, 0x05bd, 0x05c6, 0x05dc,
- 0x05e8, 0x05e8, 0x05ee, 0x0610, 0x062c, 0x062c, 0x062c, 0x0638,
- 0x0647, 0x0647, 0x0653, 0x065f, 0x066b, 0x067a, 0x067a, 0x0686,
- // Entry 80 - BF
- 0x0692, 0x06a4, 0x06ad, 0x06b9, 0x06c5, 0x06d4, 0x06e0, 0x06f8,
- 0x070d, 0x070d, 0x071c, 0x072f, 0x073b, 0x074a, 0x0759, 0x0765,
- 0x0771, 0x077a, 0x0786, 0x0792, 0x079e, 0x07aa, 0x07b3, 0x07bf,
- 0x07ce, 0x07dd, 0x07e9, 0x07f5, 0x0801, 0x080a, 0x0816, 0x0828,
- 0x0837, 0x0843, 0x084f, 0x085b, 0x0867, 0x0876, 0x0888, 0x0897,
- 0x08a3, 0x08b2, 0x08bb, 0x08ca, 0x08d9, 0x08d9, 0x08e5, 0x08ee,
- 0x08fa, 0x0909, 0x0918, 0x0924, 0x092d, 0x093c, 0x0948, 0x0957,
- 0x0966, 0x0966, 0x0975, 0x097e, 0x0987, 0x0996, 0x09a2, 0x09ae,
- // Entry C0 - FF
- 0x09ae, 0x09ae, 0x09ae, 0x09ba, 0x09c9, 0x09d2, 0x09de, 0x09ea,
- 0x0a09, 0x0a15, 0x0a15, 0x0a15, 0x0a1b, 0x0a44, 0x0a59, 0x0a59,
- 0x0a65, 0x0a6e, 0x0a7a, 0x0a89, 0x0a8f, 0x0a98, 0x0aa8, 0x0aa8,
- 0x0aae, 0x0ab7, 0x0ac0, 0x0ac6, 0x0acf, 0x0ad8, 0x0af1, 0x0afa,
- 0x0b03, 0x0b09, 0x0b15, 0x0b15, 0x0b15, 0x0b27, 0x0b39, 0x0b42,
- 0x0b4e, 0x0b54, 0x0b5d, 0x0b69, 0x0b75, 0x0b7b, 0x0b84, 0x0b84,
- 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8, 0x0bb4, 0x0bbd, 0x0bc6, 0x0bd2,
- 0x0bdb, 0x0bdb, 0x0bf1, 0x0bfd, 0x0c0c, 0x0c18, 0x0c21, 0x0c3a,
- // Entry 100 - 13F
- 0x0c46, 0x0c55, 0x0c71, 0x0c71, 0x0c7a, 0x0c86, 0x0c92, 0x0c9e,
- 0x0c9e, 0x0caa, 0x0cb3, 0x0cbf, 0x0cc8, 0x0cea, 0x0d03, 0x0d0f,
- 0x0d0f, 0x0d22, 0x0d2b, 0x0d34, 0x0d3d, 0x0d46, 0x0d46, 0x0d62,
- 0x0d62, 0x0d62, 0x0d62, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d8a,
- 0x0d8a, 0x0d8a, 0x0da0, 0x0da0, 0x0da0, 0x0daf, 0x0daf, 0x0daf,
- 0x0daf, 0x0db2, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dca,
- 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca,
- 0x0dca, 0x0de3, 0x0dfc, 0x0dfc, 0x0dfc, 0x0e08, 0x0e08, 0x0e08,
- // Entry 140 - 17F
- 0x0e08, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e36, 0x0e36,
- 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36,
- 0x0e42, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e5a, 0x0e5a,
- 0x0e5a, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e6f, 0x0e84,
- 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e94, 0x0e94, 0x0e94,
- 0x0e94, 0x0ea3, 0x0ea3, 0x0eb9, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2,
- 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ece, 0x0ed7, 0x0ee6, 0x0ee6,
- 0x0ee6, 0x0ee6, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef,
- // Entry 180 - 1BF
- 0x0eef, 0x0ef8, 0x0ef8, 0x0ef8, 0x0f01, 0x0f14, 0x0f14, 0x0f21,
- 0x0f21, 0x0f21, 0x0f27, 0x0f27, 0x0f30, 0x0f30, 0x0f30, 0x0f30,
- 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f39, 0x0f39, 0x0f39,
- 0x0f39, 0x0f39, 0x0f3f, 0x0f4e, 0x0f4e, 0x0f5e, 0x0f64, 0x0f64,
- 0x0f64, 0x0f64, 0x0f64, 0x0f70, 0x0f70, 0x0f70, 0x0f7f, 0x0f7f,
- 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f9a, 0x0f9a,
- 0x0f9a, 0x0fa0, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fc6, 0x0fd2,
- 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd8, 0x0feb, 0x0ff4, 0x100a,
- // Entry 1C0 - 1FF
- 0x100a, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c,
- 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c,
- 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x1022, 0x104b,
- 0x104b, 0x104b, 0x104b, 0x104b, 0x104b, 0x1054, 0x1054, 0x1054,
- 0x1054, 0x1054, 0x1066, 0x106c, 0x106c, 0x106c, 0x106c, 0x1078,
- 0x1078, 0x1078, 0x1078, 0x1078, 0x1081, 0x1081, 0x1081, 0x1081,
- 0x1097, 0x1097, 0x109d, 0x109d, 0x109d, 0x10b3, 0x10b3, 0x10b3,
- 0x10c2, 0x10c2, 0x10db, 0x10e7, 0x10e7, 0x10e7, 0x10fa, 0x1107,
- // Entry 200 - 23F
- 0x1117, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a,
- 0x112a, 0x112a, 0x112a, 0x1139, 0x114f, 0x1165, 0x1165, 0x1165,
- 0x1165, 0x1165, 0x116b, 0x116b, 0x1174, 0x117d, 0x117d, 0x117d,
- 0x117d, 0x118f, 0x118f, 0x118f, 0x118f, 0x118f, 0x119f, 0x119f,
- 0x119f, 0x119f, 0x119f, 0x119f, 0x11ab, 0x11ab, 0x11b7, 0x11b7,
- 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11fc, 0x1202, 0x1202, 0x1202,
- 0x1202, 0x1202, 0x1202, 0x1202, 0x120b, 0x120b, 0x120b, 0x120b,
- 0x120b, 0x121a, 0x121a, 0x121a, 0x121a, 0x1220, 0x1220, 0x1220,
- // Entry 240 - 27F
- 0x1220, 0x1220, 0x1220, 0x122f, 0x122f, 0x1247, 0x1247, 0x1247,
- 0x1270, 0x1270, 0x1296, 0x1296, 0x12bc, 0x12bc, 0x12db, 0x1304,
- 0x132f, 0x134e, 0x1370, 0x1392, 0x13b8, 0x13d7, 0x13f6, 0x13f6,
- 0x1415, 0x1434, 0x1450, 0x145c, 0x147e, 0x14a0, 0x14b2, 0x14b2,
- 0x14cf, 0x14e8,
-} // Size: 1244 bytes
-
-var arLangStr string = "" + // Size: 9700 bytes
- "الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأ" +
- "ساميةالأواريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلام" +
- "يةالبامباراالبنغاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشامو" +
- "روالكورسيكيةالكرىالتشيكيةسلافية كنسيةالتشوفاشيالولزيةالدانماركيةالألمان" +
- "يةالمالديفيةالزونخايةالإيوياليونانيةالإنجليزيةالإسبرانتوالإسبانيةالإستو" +
- "نيةلغة الباسكالفارسيةالفلةالفنلنديةالفيجيةالفارويزالفرنسيةالفريزيانالأي" +
- "رلنديةالغيلية الأسكتلنديةالجاليكيةالجوارانيالغوجاراتيةالمنكيةالهوساالعب" +
- "ريةالهنديةالهيري موتوالكرواتيةالهايتيةالهنغاريةالأرمينيةالهيريرواللّغة " +
- "الوسيطةالإندونيسيةالإنترلينجالإيجبوالسيتشيون ييالإينبياكالإيدوالأيسلاند" +
- "يةالإيطاليةالإينكتيتتاليابانيةالجاويةالجورجيةالكونغوالكيكيوالكيونياماال" +
- "كازاخستانيةالكالاليستالخميريةالكاناداالكوريةالكانيوريالكشميريةالكرديةال" +
- "كوميالكورنيةالقرغيزيةاللاتينيةاللوكسمبرجيةالجانداالليمبرجيشيةاللينجالاا" +
- "للاويةاللتوانيةاللبا-كاتانجااللاتفيةالمالاجاشيةالمارشاليةالماوريةالمقدو" +
- "نيةالماليالامالمنغوليةالماراثيلغة الملايوالمالطيةالبورميةالنوروالنديبيل" +
- " الشماليالنيباليةالندونجاالهولنديةالنينورسك النرويجيالبوكمالية النرويجية" +
- "النديبيل الجنوبيالنافاجوالنيانجاالأوكيتانيةالأوجيبواالأوروموالأوريياالأ" +
- "وسيتيكالبنجابيةالباليةالبولنديةالبشتونيةالبرتغاليةالكويتشواالرومانشيةال" +
- "رنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسردينيةالسنديةالسامي الشم" +
- "اليالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائيةالشوناالصوماليةالألبان" +
- "يةالصربيةالسواتيالسوتو الجنوبيةالسوندانيةالسويديةالسواحليةالتاميليةالتي" +
- "لجوالطاجيكيةالتايلانديةالتغرينيةالتركمانيةالتسوانيةالتونغيةالتركيةالسون" +
- "جاالتتاريةالتاهيتيةالأغوريةالأوكرانيةالأرديةالأوزبكيةالفينداالفيتناميةل" +
- "غة الفولابوكالولونيةالولوفالخوسااليديشيةاليوروبيةالزهيونجالصينيةالزولوا" +
- "لأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهيليةالأغمالآينويةالأكاديةالأل" +
- "يوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآراميةالأروكانيةالأر" +
- "اباهوالأراواكيةالآسوالأستريةالأواديةالبلوشيةاللغة الباليةالباسابامنلغة " +
- "الغومالاالبيجاالبيمبابينالغة البافوتالبلوشية الغربيةالبهوجبوريةالبيكولي" +
- "ةالبينيةلغة الكومالسيكسيكيةالبراجيةالبودوأكوسالبرياتيةالبجينيزيةلغة الب" +
- "ولوالبلينيةلغة الميدومباالكادوالكاريبيةالكايوجيةالأتسامالسيبونيةتشيغاال" +
- "تشيبشاالتشاجاتايالتشكيزيةالماريالشينوك جارجونالشوكتوالشيباوايانالشيروكي" +
- "الشايانالسورانية الكرديةالقبطيةلغة تتار القرمالكاشبايانالداكوتاالدارجوا" +
- "تيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوجريةالصربية السفلىالديولا" +
- "الهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية القديمةالإك" +
- "اجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الوسطىا" +
- "لفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغ" +
- "وزالجايوالجبياالجعزيةلغة أهل جبل طارقالألمانية العليا الوسطىالألمانية ا" +
- "لعليا القديمةالجنديالجورونتالوالقوطيةالجريبواليونانية القديمةالألمانية " +
- "السويسريةالغيزيةغوتشنالهيدالغة أهل الهاوايالهيليجينونالحثيةالهمونجيةالص" +
- "ربية العلياالهباالإيبانالإيبيبيويةالإيلوكوالإنجوشيةاللوجباننغومباالماتش" +
- "اميةالفارسية اليهوديةالعربية اليهوديةالكارا-كالباكالقبيليةالكاتشينالجوا" +
- "لكامباالكويالكاباردايانكانمبوالتايابيةماكوندهكابوفيرديانوالكوروالكازيةا" +
- "لخوتانيزكويرا تشينيكالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالك" +
- "بيلالكاراتشاي-بالكارالكاريليةالكوروخشامبالالغة البافيالغة الكولونيانالق" +
- "موقيةالكتيناياللادينولانجياللاهندااللامباالليزجيةلاكوتامنغولىاللوزياللر" +
- "ية الشماليةاللبا-لؤلؤاللوسينواللوندااللوالميزولغة اللوياالمادريزالماجاا" +
- "لمايثيليالماكاسارالماندينغالماسايماباالموكشاالماندارالميندالميروالمورسي" +
- "انيةالأيرلندية الوسطىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوال" +
- "مانيبوريةالموهوكالموسيمندنجلغات متعددةالكريكالميرانديزالمارواريةالأرزية" +
- "المازندرانيةاللغة النابوليةلغة الناماالألمانية السفلىالنواريةالنياسالني" +
- "ويكواسيولغة النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوا" +
- "رية التقليديةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةا" +
- "لبانجاسينانالبهلويةالبامبانجاالبابيامينتوالبالوانالفارسية القديمةالفيني" +
- "قيةالبوهنبيايانالبروفانسية القديمةكيشيالراجاسثانيةالرابانيالراروتونجاني" +
- "الرومبوغجريالأرومانيانالرواالسانداويالساخيةالآرامية السامريةسامبوروالسا" +
- "ساكالسانتالينامبيسانغوالصقليةالأسكتلنديةالكردية الجنوبيةالسنيكاسيناالسي" +
- "لكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانيةالعربية التشاديةالسيدام" +
- "والسامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسونينكالسوجدينالسرا" +
- "نان تونجوالسررلغة الساهوالسوكوماالسوسوالسوماريةالقمريةالكونغو السواحلية" +
- "سريانية تقليديةالسريانيةالتيمنتيسوالتيرينوالتيتمالتغريةالتيفالتوكيلاوال" +
- "كلينجونالتلينغيتيةالتاماشيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمشي" +
- "انالتامبوكاالتوفالوتاساواقالتوفيةالأمازيغية وسط الأطلسالأدمرتاليجاريتيك" +
- "الأمبندوالجذرالفايالفوتيكالفونجوالوالسرالولاياتاالوارايالواشووارلبيريال" +
- "كالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرموز المعايير ال" +
- "أساسيةالزيناجاالتمازيغية المغربية القياسيةالزونيةبدون محتوى لغويزازاالع" +
- "ربية الرسمية الحديثةالألمانية النمساويةالألمانية العليا السويسريةالإنجل" +
- "يزية الأستراليةالإنجليزية الكنديةالإنجليزية البريطانيةالإنجليزية الأمري" +
- "كيةالإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةالإسبانية المكسيكيةالفر" +
- "نسية الكنديةالفرنسية السويسريةالسكسونية السفلىالفلمنكيةالبرتغالية البرا" +
- "زيليةالبرتغالية الأوروبيةالمولدوفيةصربية-كرواتيةالصينية المبسطةالصينية " +
- "التقليدية"
-
-var arLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0022, 0x0032, 0x0048, 0x0058, 0x0068, 0x007c,
- 0x008a, 0x009a, 0x00aa, 0x00ba, 0x00d2, 0x00e6, 0x00fc, 0x010e,
- 0x0122, 0x0134, 0x0146, 0x0154, 0x0168, 0x0178, 0x018c, 0x019e,
- 0x01b0, 0x01c4, 0x01ce, 0x01de, 0x01f5, 0x0207, 0x0215, 0x022b,
- 0x023d, 0x0251, 0x0263, 0x026f, 0x0281, 0x0295, 0x02a9, 0x02bb,
- 0x02cd, 0x02e0, 0x02f0, 0x02fa, 0x030c, 0x031a, 0x032a, 0x033a,
- 0x034c, 0x0360, 0x0385, 0x0397, 0x03a9, 0x03bf, 0x03cd, 0x03d9,
- 0x03e7, 0x03f5, 0x040a, 0x041c, 0x042c, 0x043e, 0x0450, 0x0460,
- // Entry 40 - 7F
- 0x047b, 0x0491, 0x04a5, 0x04b3, 0x04ca, 0x04dc, 0x04e8, 0x04fe,
- 0x0510, 0x0524, 0x0536, 0x0544, 0x0554, 0x0562, 0x0570, 0x0584,
- 0x059e, 0x05b2, 0x05c2, 0x05d2, 0x05e0, 0x05f2, 0x0604, 0x0612,
- 0x061e, 0x062e, 0x0640, 0x0652, 0x066a, 0x0678, 0x0690, 0x06a2,
- 0x06b0, 0x06c2, 0x06db, 0x06eb, 0x0701, 0x0715, 0x0725, 0x0737,
- 0x074b, 0x075d, 0x076d, 0x0782, 0x0792, 0x07a2, 0x07ae, 0x07cd,
- 0x07df, 0x07ef, 0x0801, 0x0824, 0x084b, 0x086a, 0x087a, 0x088a,
- 0x08a0, 0x08b2, 0x08c2, 0x08d2, 0x08e4, 0x08f6, 0x0904, 0x0916,
- // Entry 80 - BF
- 0x0928, 0x093c, 0x094e, 0x0962, 0x096e, 0x0980, 0x098e, 0x09a8,
- 0x09be, 0x09d0, 0x09de, 0x09f9, 0x0a07, 0x0a19, 0x0a2d, 0x0a41,
- 0x0a55, 0x0a61, 0x0a73, 0x0a85, 0x0a93, 0x0aa1, 0x0abe, 0x0ad2,
- 0x0ae2, 0x0af4, 0x0b06, 0x0b14, 0x0b26, 0x0b3c, 0x0b4e, 0x0b62,
- 0x0b74, 0x0b84, 0x0b92, 0x0ba0, 0x0bb0, 0x0bc2, 0x0bd2, 0x0be6,
- 0x0bf4, 0x0c06, 0x0c14, 0x0c28, 0x0c41, 0x0c51, 0x0c5d, 0x0c69,
- 0x0c79, 0x0c8b, 0x0c9b, 0x0ca9, 0x0cb5, 0x0ccb, 0x0cdb, 0x0cef,
- 0x0cfd, 0x0cfd, 0x0d13, 0x0d1d, 0x0d2d, 0x0d3d, 0x0d3d, 0x0d4f,
- // Entry C0 - FF
- 0x0d4f, 0x0d72, 0x0d95, 0x0da5, 0x0db5, 0x0dc9, 0x0dc9, 0x0ddb,
- 0x0ddb, 0x0def, 0x0def, 0x0def, 0x0df9, 0x0df9, 0x0e09, 0x0e09,
- 0x0e19, 0x0e29, 0x0e42, 0x0e42, 0x0e4e, 0x0e56, 0x0e56, 0x0e6d,
- 0x0e79, 0x0e87, 0x0e87, 0x0e8f, 0x0ea4, 0x0ea4, 0x0ec3, 0x0ed9,
- 0x0eeb, 0x0ef9, 0x0ef9, 0x0f0a, 0x0f1e, 0x0f1e, 0x0f1e, 0x0f2e,
- 0x0f2e, 0x0f3a, 0x0f42, 0x0f54, 0x0f68, 0x0f7b, 0x0f8b, 0x0fa4,
- 0x0fb0, 0x0fc2, 0x0fd4, 0x0fe2, 0x0ff4, 0x0ffe, 0x100e, 0x1022,
- 0x1034, 0x1040, 0x105b, 0x1069, 0x107f, 0x108f, 0x109d, 0x10be,
- // Entry 100 - 13F
- 0x10cc, 0x10cc, 0x10e6, 0x10fa, 0x110a, 0x111a, 0x1122, 0x1132,
- 0x1142, 0x1152, 0x115e, 0x116e, 0x117e, 0x1199, 0x1199, 0x11a7,
- 0x11c6, 0x11d9, 0x11e7, 0x11f9, 0x1201, 0x120d, 0x120d, 0x122a,
- 0x1238, 0x1246, 0x1267, 0x1267, 0x1277, 0x1277, 0x1283, 0x1295,
- 0x1295, 0x129f, 0x129f, 0x12bc, 0x12db, 0x12db, 0x1300, 0x1323,
- 0x1337, 0x133f, 0x134d, 0x134d, 0x1359, 0x1365, 0x1365, 0x1373,
- 0x1390, 0x1390, 0x13bc, 0x13ea, 0x13ea, 0x13f6, 0x140c, 0x141a,
- 0x1428, 0x1449, 0x146e, 0x146e, 0x146e, 0x147c, 0x1486, 0x1492,
- // Entry 140 - 17F
- 0x1492, 0x14ae, 0x14ae, 0x14c4, 0x14d0, 0x14e2, 0x14fd, 0x14fd,
- 0x1507, 0x1515, 0x152b, 0x153b, 0x154d, 0x154d, 0x154d, 0x155d,
- 0x1569, 0x157d, 0x159e, 0x15bd, 0x15bd, 0x15d6, 0x15e6, 0x15f6,
- 0x15fe, 0x160c, 0x1616, 0x162e, 0x163a, 0x164c, 0x165a, 0x1672,
- 0x1672, 0x167e, 0x167e, 0x168c, 0x169e, 0x16b3, 0x16b3, 0x16b3,
- 0x16b3, 0x16c3, 0x16d5, 0x16ee, 0x1702, 0x1714, 0x1720, 0x1741,
- 0x1741, 0x1741, 0x1753, 0x1761, 0x176f, 0x1784, 0x179f, 0x17af,
- 0x17bf, 0x17cf, 0x17d9, 0x17e9, 0x17f7, 0x1807, 0x1807, 0x1807,
- // Entry 180 - 1BF
- 0x1807, 0x1813, 0x1813, 0x181f, 0x182b, 0x1848, 0x1848, 0x185b,
- 0x186b, 0x1879, 0x1881, 0x188d, 0x18a0, 0x18a0, 0x18a0, 0x18b0,
- 0x18b0, 0x18bc, 0x18ce, 0x18e0, 0x18f2, 0x1900, 0x1908, 0x1916,
- 0x1926, 0x1932, 0x193e, 0x1954, 0x1975, 0x198a, 0x1992, 0x19ac,
- 0x19c6, 0x19d4, 0x19ea, 0x19f8, 0x1a04, 0x1a04, 0x1a0e, 0x1a23,
- 0x1a2f, 0x1a43, 0x1a57, 0x1a57, 0x1a57, 0x1a65, 0x1a7d, 0x1a7d,
- 0x1a9a, 0x1aad, 0x1acc, 0x1adc, 0x1ae8, 0x1af4, 0x1af4, 0x1b00,
- 0x1b19, 0x1b27, 0x1b40, 0x1b40, 0x1b48, 0x1b65, 0x1b71, 0x1b94,
- // Entry 1C0 - 1FF
- 0x1ba8, 0x1bba, 0x1bc8, 0x1bd6, 0x1be4, 0x1c05, 0x1c1d, 0x1c2d,
- 0x1c41, 0x1c59, 0x1c69, 0x1c69, 0x1c69, 0x1c69, 0x1c88, 0x1c88,
- 0x1c9a, 0x1c9a, 0x1c9a, 0x1cb2, 0x1cb2, 0x1cd7, 0x1cdf, 0x1cdf,
- 0x1cf7, 0x1d07, 0x1d21, 0x1d21, 0x1d21, 0x1d2f, 0x1d37, 0x1d37,
- 0x1d37, 0x1d37, 0x1d4d, 0x1d57, 0x1d69, 0x1d77, 0x1d98, 0x1da6,
- 0x1db4, 0x1dc6, 0x1dc6, 0x1dd0, 0x1dda, 0x1de8, 0x1dfe, 0x1dfe,
- 0x1e1d, 0x1e2b, 0x1e33, 0x1e33, 0x1e41, 0x1e5c, 0x1e7f, 0x1e7f,
- 0x1e8b, 0x1e99, 0x1eb8, 0x1ec8, 0x1ec8, 0x1ec8, 0x1ee3, 0x1ef6,
- // Entry 200 - 23F
- 0x1f0f, 0x1f26, 0x1f36, 0x1f46, 0x1f61, 0x1f6b, 0x1f7e, 0x1f7e,
- 0x1f8e, 0x1f9a, 0x1fac, 0x1fba, 0x1fdb, 0x1ff8, 0x200a, 0x200a,
- 0x200a, 0x2016, 0x201e, 0x202e, 0x203a, 0x2048, 0x2052, 0x2064,
- 0x2064, 0x2076, 0x208c, 0x208c, 0x209e, 0x20b5, 0x20ca, 0x20ca,
- 0x20e1, 0x20e1, 0x20f5, 0x20f5, 0x2107, 0x2117, 0x2125, 0x2133,
- 0x215b, 0x2169, 0x217d, 0x218d, 0x2197, 0x21a1, 0x21a1, 0x21a1,
- 0x21a1, 0x21a1, 0x21af, 0x21af, 0x21bd, 0x21cb, 0x21dd, 0x21eb,
- 0x21f7, 0x2207, 0x2207, 0x2217, 0x2217, 0x2223, 0x222d, 0x223b,
- // Entry 240 - 27F
- 0x2247, 0x224f, 0x224f, 0x2267, 0x2279, 0x22a3, 0x22a3, 0x22b3,
- 0x22e9, 0x22f7, 0x2313, 0x231b, 0x2347, 0x2347, 0x236c, 0x239e,
- 0x23c7, 0x23ea, 0x2413, 0x243a, 0x246c, 0x2491, 0x24b6, 0x24b6,
- 0x24d5, 0x24f8, 0x2517, 0x2529, 0x2552, 0x2579, 0x258d, 0x25a6,
- 0x25c3, 0x25e4,
-} // Size: 1244 bytes
-
-var azLangStr string = "" + // Size: 3706 bytes
- "afarcaabxazavestancaafrikaansakancaamhararagoncaərəbassamavarikcəaymarca" +
- "azərbaycan dilibaşqırdbelarusbolqarbislamabambarabenqaltibetBretoncabosn" +
- "iakkatalançeçençamorokorsikakri diliçexkilsə slavçuvaşuelsdanimarkaalman" +
- "divehdzonqaeveyunaningilisesperantoispanestonbaskfarsfulafinficifarerfra" +
- "nsızqərbi frizirlandskot gaelikqalisianquaraniqucaratmankshausaivrithind" +
- "ihiri motuxorvathaitimacarerməniHererinterlinguaindonezinterlingueiqbosi" +
- "çuan yiinupiaqidoislanditalyaninuktitutyaponyavagürcükonqokikuyukuanyam" +
- "aqazaxkalaallisutkxmerkannadakoreyakanurkaşmirkürdkomikornqırğızlatınlük" +
- "semburqqandalimburqişlinqalalaoslitvaluba-katanqalatışmalaqasmarşalmaori" +
- "makedonmalayalammonqolmaratimalaymaltabirmanauruşimali ndebelenepalnqonk" +
- "ahollandnünorsk norveçbokmal norveçcənub ndebelenavayonyancaoksitancaoci" +
- "bvaoromooriyaosetikpəncabpalipolyakpuştuportuqalkeçuaretoromanrundirumın" +
- "ruskinyarvandasanskritsardinsindhişimali samisanqosinhalslovakslovensamo" +
- "aşonasomalialbanserbsvatiSesotoisveçsuahilitamilteluqutaciktaytiqrintürk" +
- "mənsvanatonqatürksonqatatartaxitiuyğurukraynaurduözbəkvendavyetnamvolapü" +
- "kvalunvolofxosaYahudiyorubajuənqçinzuluakinakoliadangmeadugeafrihiliaqhe" +
- "maynucaakadiancaaleutcacənub altayqədimi ingiliscəangikəaramikaraukancaa" +
- "rapahoaravakçaasuasturicəavadicəbalucbalincəbasabejabembabenaqərbi bəluc" +
- "bxoçpuribikolcabinisiksikəbrajbodoburyatbuginbilincəkadokaribatsamcakebu" +
- "anoçiqaçibçəçağatayçukizmariçinuk ləhçəsiçoktauçipevyançirokiçeyensorani" +
- " kürdkoptkrım türkçəkaşubyandakotadarqvataitadelaverslaveydoqribdinkazar" +
- "madoqriaşağı sorbdualaortacaq hollandcadioladyulaembuefikqədimi misireka" +
- "cukelamitortacaq ingiliscəevondofangfilippinfonortacaq fransızcaqədimi f" +
- "ransızcaşimal frisfriulqaqaqauzqayoqabayaqezqilbert giliortacaq yüksək a" +
- "lmancaqədimi almancaqondiqorontalogotçaqreboqədimi yunancaİsveçrə almanc" +
- "asıqusiqviçinhaydahavayhiliqaynonhittitmonqyuxarı sorbhupaibanilokoinquş" +
- "loğbannqombamaçamjudo-farscajude-ərəbcəqara-qalpaqkabilekaçincajukambaka" +
- "vikabardcatiyapmakondkabuverdiankoroxazixotankoyra çiinikalencinkimbundu" +
- "komi-permyakkonkankosreyankpelleqaraçay-balkarkarelyankuruxşambalabafiak" +
- "umukkutenayladinlangilaxndalambaləzqilakotamonqolozişimali luriluba-lulu" +
- "aluysenolundaluolushaycaluyiamadurizmaqahimaitilimakasarməndinqomasaymok" +
- "şamandarmendemerumorisienortacaq irlandcamaxuva-meettometa’mikmakminanq" +
- "kabanmançumanipürimohavkmosimundanqdigər dillərkrikmirandmaruarierzyamaz" +
- "andaranneapolitalnamaaşağı almancanevarinyasniyuankvasionoqayqədimi nors" +
- "canqoşimal sotonuernyamvezinyankolniyoronizimaosageosmanpanqasinanpaxlav" +
- "ipampanqapapyamentopalayancaqədimi farscafoyenikponpeyanqədimi provensia" +
- "lcakiçeracastanrapanurarotonqanromboromanaromancaruasandaveyakutsamarita" +
- "nsamburusasaksantalsanqusisiliskotscənubi kürdsenaselkupkoyraboro senniq" +
- "ədimi irlandcataçelitşansidamocənubi samilule samiinari samiskoltsonink" +
- "esoqdiyensranan tonqoserer diliisukumasususumeryanKonqo suahilicəsisirya" +
- "ktimnetesoterenotetumtiqretivtokelayklinqontlinqittamaşekniyasa tongatok" +
- " pisinsimşyantumbukatuvalutasavaqtuvinyanMərkəzi Atlas tamazicəsiudmurtu" +
- "qaritikumbundurutvaivotikvunyovalamovarayvaşoValpirikalmıqcasoqayaoyapiz" +
- "zapotekblisimbolszenaqatamazizunidil məzmunu yoxdurzazaModern Standart Ə" +
- "rəbcəcənubi azərbaycanAvstriya almancasıİsveçrə yüksək almancasıAvstrali" +
- "ya ingiliscəsiKanada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsi" +
- "Latın Amerikası ispancasıKastiliya ispancasıMeksika ispancasıKanada fran" +
- "sızcasıİsveçrə fransızcasıaşağı saksonflamandBraziliya portuqalcasıPortu" +
- "qaliya portuqalcasımoldavserb-xorvatcasadələşmiş çinənənəvi çin"
-
-var azLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0006, 0x000b, 0x0014, 0x001d, 0x0023, 0x0028, 0x0030,
- 0x0036, 0x003b, 0x0044, 0x004b, 0x005b, 0x0064, 0x006b, 0x0071,
- 0x0078, 0x007f, 0x0085, 0x008a, 0x0092, 0x0099, 0x00a0, 0x00a7,
- 0x00ae, 0x00b5, 0x00bd, 0x00c1, 0x00cc, 0x00d3, 0x00d7, 0x00e0,
- 0x00e5, 0x00ea, 0x00f0, 0x00f3, 0x00f8, 0x00ff, 0x0108, 0x010d,
- 0x0112, 0x0116, 0x011a, 0x011e, 0x0121, 0x0125, 0x012a, 0x0132,
- 0x013d, 0x0143, 0x014e, 0x0156, 0x015d, 0x0164, 0x0169, 0x016e,
- 0x0173, 0x0178, 0x0181, 0x0187, 0x018c, 0x0191, 0x0198, 0x019d,
- // Entry 40 - 7F
- 0x01a8, 0x01af, 0x01ba, 0x01be, 0x01c8, 0x01cf, 0x01d2, 0x01d8,
- 0x01df, 0x01e8, 0x01ed, 0x01f1, 0x01f8, 0x01fd, 0x0203, 0x020b,
- 0x0210, 0x021b, 0x0220, 0x0227, 0x022d, 0x0232, 0x0239, 0x023e,
- 0x0242, 0x0246, 0x024f, 0x0255, 0x0260, 0x0265, 0x026f, 0x0276,
- 0x027a, 0x027f, 0x028b, 0x0292, 0x0299, 0x02a0, 0x02a5, 0x02ac,
- 0x02b5, 0x02bb, 0x02c1, 0x02c6, 0x02cb, 0x02d0, 0x02d5, 0x02e4,
- 0x02e9, 0x02ef, 0x02f6, 0x0306, 0x0314, 0x0322, 0x0328, 0x032e,
- 0x0337, 0x033d, 0x0342, 0x0347, 0x034d, 0x0354, 0x0358, 0x035e,
- // Entry 80 - BF
- 0x0364, 0x036c, 0x0372, 0x037b, 0x0380, 0x0386, 0x0389, 0x0394,
- 0x039c, 0x03a2, 0x03a8, 0x03b4, 0x03b9, 0x03bf, 0x03c5, 0x03cb,
- 0x03d0, 0x03d5, 0x03db, 0x03e0, 0x03e4, 0x03e9, 0x03ef, 0x03ef,
- 0x03f5, 0x03fc, 0x0401, 0x0407, 0x040c, 0x040f, 0x0415, 0x041e,
- 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043d, 0x0443, 0x044a,
- 0x044e, 0x0455, 0x045a, 0x0461, 0x0469, 0x046e, 0x0473, 0x0477,
- 0x047d, 0x0483, 0x0489, 0x048d, 0x0491, 0x0495, 0x049a, 0x04a1,
- 0x04a6, 0x04a6, 0x04ae, 0x04b3, 0x04b9, 0x04c2, 0x04c2, 0x04c9,
- // Entry C0 - FF
- 0x04c9, 0x04d5, 0x04e7, 0x04ee, 0x04f4, 0x04fd, 0x04fd, 0x0504,
- 0x0504, 0x050d, 0x050d, 0x050d, 0x0510, 0x0510, 0x0519, 0x0519,
- 0x0521, 0x0526, 0x052e, 0x052e, 0x0532, 0x0532, 0x0532, 0x0532,
- 0x0536, 0x053b, 0x053b, 0x053f, 0x053f, 0x053f, 0x054c, 0x0555,
- 0x055c, 0x0560, 0x0560, 0x0560, 0x0568, 0x0568, 0x0568, 0x056c,
- 0x056c, 0x0570, 0x0570, 0x0576, 0x057b, 0x057b, 0x0583, 0x0583,
- 0x0587, 0x058c, 0x058c, 0x0593, 0x059a, 0x059f, 0x05a7, 0x05b0,
- 0x05b6, 0x05ba, 0x05cb, 0x05d2, 0x05db, 0x05e2, 0x05e8, 0x05f4,
- // Entry 100 - 13F
- 0x05f8, 0x05f8, 0x0607, 0x0610, 0x0616, 0x061c, 0x0621, 0x0628,
- 0x062e, 0x0634, 0x0639, 0x063e, 0x0643, 0x0650, 0x0650, 0x0655,
- 0x0666, 0x066b, 0x0670, 0x0670, 0x0674, 0x0678, 0x0678, 0x0685,
- 0x068b, 0x0691, 0x06a3, 0x06a3, 0x06a9, 0x06a9, 0x06ad, 0x06b5,
- 0x06b5, 0x06b8, 0x06b8, 0x06ca, 0x06dc, 0x06dc, 0x06e7, 0x06e7,
- 0x06ec, 0x06ee, 0x06f4, 0x06f4, 0x06f8, 0x06fe, 0x06fe, 0x0701,
- 0x070d, 0x070d, 0x0725, 0x0734, 0x0734, 0x0739, 0x0742, 0x0748,
- 0x074d, 0x075c, 0x0771, 0x0771, 0x0771, 0x0775, 0x077c, 0x0781,
- // Entry 140 - 17F
- 0x0781, 0x0786, 0x0786, 0x0790, 0x0796, 0x079a, 0x07a6, 0x07a6,
- 0x07aa, 0x07ae, 0x07ae, 0x07b3, 0x07b9, 0x07b9, 0x07b9, 0x07c0,
- 0x07c6, 0x07cc, 0x07d7, 0x07e5, 0x07e5, 0x07f0, 0x07f6, 0x07fe,
- 0x0800, 0x0805, 0x0809, 0x0811, 0x0811, 0x0816, 0x081c, 0x0827,
- 0x0827, 0x082b, 0x082b, 0x082f, 0x0834, 0x0840, 0x0840, 0x0840,
- 0x0840, 0x0848, 0x0850, 0x085c, 0x0862, 0x086a, 0x0870, 0x087f,
- 0x087f, 0x087f, 0x0887, 0x088c, 0x0894, 0x0899, 0x0899, 0x089e,
- 0x08a5, 0x08aa, 0x08af, 0x08b5, 0x08ba, 0x08c0, 0x08c0, 0x08c0,
- // Entry 180 - 1BF
- 0x08c0, 0x08c6, 0x08c6, 0x08cb, 0x08cf, 0x08db, 0x08db, 0x08e5,
- 0x08ec, 0x08f1, 0x08f4, 0x08fc, 0x0901, 0x0901, 0x0901, 0x0908,
- 0x0908, 0x090e, 0x0915, 0x091c, 0x0925, 0x092a, 0x092a, 0x0930,
- 0x0936, 0x093b, 0x093f, 0x0947, 0x0957, 0x0964, 0x096b, 0x0971,
- 0x097c, 0x0982, 0x098b, 0x0991, 0x0995, 0x0995, 0x099c, 0x09aa,
- 0x09ae, 0x09b4, 0x09bb, 0x09bb, 0x09bb, 0x09c0, 0x09ca, 0x09ca,
- 0x09d4, 0x09d8, 0x09e8, 0x09ee, 0x09f2, 0x09f8, 0x09f8, 0x09fe,
- 0x09fe, 0x0a03, 0x0a11, 0x0a11, 0x0a14, 0x0a1f, 0x0a23, 0x0a23,
- // Entry 1C0 - 1FF
- 0x0a2b, 0x0a32, 0x0a38, 0x0a3e, 0x0a43, 0x0a48, 0x0a52, 0x0a59,
- 0x0a61, 0x0a6b, 0x0a74, 0x0a74, 0x0a74, 0x0a74, 0x0a82, 0x0a82,
- 0x0a89, 0x0a89, 0x0a89, 0x0a91, 0x0a91, 0x0aa5, 0x0aaa, 0x0aaa,
- 0x0ab2, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac7, 0x0acc, 0x0acc,
- 0x0acc, 0x0acc, 0x0ad4, 0x0ad7, 0x0ade, 0x0ae3, 0x0aec, 0x0af3,
- 0x0af8, 0x0afe, 0x0afe, 0x0afe, 0x0b03, 0x0b09, 0x0b0e, 0x0b0e,
- 0x0b1b, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b25, 0x0b34, 0x0b44, 0x0b44,
- 0x0b4c, 0x0b50, 0x0b50, 0x0b56, 0x0b56, 0x0b56, 0x0b62, 0x0b6b,
- // Entry 200 - 23F
- 0x0b75, 0x0b7a, 0x0b81, 0x0b89, 0x0b95, 0x0ba0, 0x0ba0, 0x0ba0,
- 0x0ba6, 0x0baa, 0x0bb2, 0x0bb2, 0x0bc4, 0x0bc4, 0x0bca, 0x0bca,
- 0x0bca, 0x0bcf, 0x0bd3, 0x0bd9, 0x0bde, 0x0be3, 0x0be6, 0x0bed,
- 0x0bed, 0x0bf4, 0x0bfb, 0x0bfb, 0x0c03, 0x0c0f, 0x0c18, 0x0c18,
- 0x0c18, 0x0c18, 0x0c20, 0x0c20, 0x0c27, 0x0c2d, 0x0c34, 0x0c3c,
- 0x0c57, 0x0c5d, 0x0c65, 0x0c6c, 0x0c6f, 0x0c72, 0x0c72, 0x0c72,
- 0x0c72, 0x0c72, 0x0c77, 0x0c77, 0x0c7c, 0x0c7c, 0x0c82, 0x0c87,
- 0x0c8c, 0x0c93, 0x0c93, 0x0c9c, 0x0c9c, 0x0ca0, 0x0ca3, 0x0ca8,
- // Entry 240 - 27F
- 0x0ca8, 0x0ca8, 0x0ca8, 0x0ca8, 0x0caf, 0x0cb9, 0x0cb9, 0x0cbf,
- 0x0cc5, 0x0cc9, 0x0cdc, 0x0ce0, 0x0cf9, 0x0d0c, 0x0d1f, 0x0d3d,
- 0x0d54, 0x0d67, 0x0d7d, 0x0d91, 0x0dad, 0x0dc1, 0x0dd3, 0x0dd3,
- 0x0de7, 0x0dff, 0x0e0e, 0x0e15, 0x0e2c, 0x0e45, 0x0e4b, 0x0e58,
- 0x0e6b, 0x0e7a,
-} // Size: 1244 bytes
-
-var bgLangStr string = "" + // Size: 7628 bytes
- "афарабхазкиавестскиафрикаансаканамхарскиарагонскиарабскиасамскиаварскиай" +
- "мараазербайджанскибашкирскибеларускибългарскибисламабамбарабенгалскитиб" +
- "етскибретонскибосненскикаталонскичеченскичаморокорсиканскикриичешкицърк" +
- "овно славянскичувашкиуелскидатскинемскидивехидзонхаевегръцкианглийскиес" +
- "перантоиспанскиестонскибаскиперсийскифулафинскифиджийскифарьорскифренск" +
- "ифризийскиирландскишотландски галскигалисийскигуаранигуджаратиманкскиха" +
- "узаивритхиндихири мотухърватскихаитянскиунгарскиарменскихерероинтерлинг" +
- "ваиндонезийскиоксиденталигбосъчуански иинупиакидоисландскииталианскиину" +
- "ктитутяпонскияванскигрузинскиконгоанскикикуюкванямаказахскигренландскик" +
- "хмерскиканнадакорейскиканурикашмирскикюрдскиКомикорнуолскикиргизкилатин" +
- "скилюксембургскигандалимбургскилингалалаоскилитовскилуба катангалатвийс" +
- "кималгашкимаршалеземаорскимакедонскималаяламмонголскимаратималайскималт" +
- "ийскибирманскинаурусеверен ндебеленепалскиндонганидерландскинорвежки (н" +
- "юношк)норвежки (букмол)южен ндебеленавахочинянджаокситанскиоджибваоромо" +
- "орияосетскипенджабскипалиполскипущупортугалскикечуаретороманскирундирум" +
- "ънскирускикиняруандасанкскритскисардинскисиндхисеверносаамскисангосинха" +
- "лскисловашкисловенскисамоанскишонасомалийскиалбанскисръбскисуазисесутос" +
- "унданскишведскисуахилитамилскителугутаджикскитайскитигринятуркменскитсв" +
- "анатонгатурскитсонгататарскитаитянскиуйгурскиукраинскиурдуузбекскивенда" +
- "виетнамскиволапюквалонскиволофксосаидишйорубазуангкитайскизулускиачинск" +
- "иаколиадангмеадигеафрихилиагемайнуакадскиалеутскиюжноалтайскистароангли" +
- "йскиангикаарамейскимапучеарапахоаравакасуастурскиавадибалучибалинейскиб" +
- "асабеябембабеназападен балочибожпурибиколскибинисиксикабраджбодобурятск" +
- "ибугинскибиленскикаддокарибскиатсамсебуаночигачибчачагатайчуукмарийскиж" +
- "аргон чинуукчокточиипувскичерокичейенскикюрдски (централен)коптскикримс" +
- "котатарскикашубскидакотскидаргватаитаделауерслейвидогрибдинкаджермадогр" +
- "идолнолужишкидуаласредновековен холандскидиоладиулаембуефикегипетскиека" +
- "жукеламитскисредновековен английскиевондофангфилипинскифонсредновековен" +
- " френскистарофренскисеверен фризскиизточен фризскифриулианскигагагаузкиг" +
- "айогбаягиизгилбертскисредновековен немскистаровисоконемскигондигоронтал" +
- "оготическигребодревногръцкишвейцарски немскигусиигвичинхайдахавайскихил" +
- "игайнонхитскихмонггорнолужишкихупаибанилокоингушетскилоджбаннгомбамачам" +
- "ееврейско-персийскиеврейско-арабскикаракалпашкикабилскикачинскижжикамба" +
- "кавикабардиантуапмакондекабовердианскикорокхасикотскикойра чииникалендж" +
- "инкимбундукоми-пермяцкиконканикосраенкпелекарачай-балкарскикарелскикуру" +
- "кшамбалабафиякумикскикутенайладинолангилахндаламбалезгинскилакотамонгол" +
- "озисеверен лурилуба-лулуалуисеньолундалуолушаилуямадурскимагахимайтхили" +
- "макасармандингомасайскимокшамандармендемеруморисиенсредновековен ирланд" +
- "скимакуа метометамикмакминангбауманчжурскиманипуримохоукмосимундангмног" +
- "оезичникрикмирандийскимарвариерзиамазандараннеаполитанскинамадолнонемск" +
- "иневарскиниасниуеанквасионогаистаронорвежскинкосеверен сотонуеркласичес" +
- "ки невариниамвезинианколенуоронзимаоседжиотомански турскипангасинанпехл" +
- "евийскипампангапапиаментупалауанстароперсийскифиникийскипохнпеианпрован" +
- "салскикичераджастанскирапа нуирапотонганромбоцигански езикарумънскирвас" +
- "андвеякутскисамаритански арамейскисамбурусасаксанталисангусицилианскишо" +
- "тландскиюжнокюрдскисенаселкупкойраборо сенистароирландскиташелхитшансид" +
- "амоюжносаамскилуле-саамскиинари-саамскисколт-саамскисонинкесогдийскисра" +
- "нан тонгосерерсукумасусушумерскикоморскиконгоански суахиликласически си" +
- "рийскисирийскитемнетесотеренотетумтигретивтокелайскиклингонтлингиттамаш" +
- "екнианса тонгаток писинцимшианскитумбукатувалуанскитасавактувинскицентр" +
- "алноатласки тамазигтудмуртскиугаритскиумбундуроотваивотиквунджоваламова" +
- "райуашовалпирикалмиксогаяояпезекантонскизапотекблис символизенагастанда" +
- "ртен марокански тамазигтзунибез лингвистично съдържаниезазасъвременен с" +
- "тандартен арабскианглийски (САЩ)долносаксонскифламандскимолдовскисърбох" +
- "ърватски"
-
-var bgLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0008, 0x0016, 0x0026, 0x0038, 0x0040, 0x0050, 0x0062,
- 0x0070, 0x007e, 0x008c, 0x0098, 0x00b4, 0x00c6, 0x00d8, 0x00ea,
- 0x00f8, 0x0106, 0x0118, 0x0128, 0x013a, 0x014c, 0x0160, 0x0170,
- 0x017c, 0x0192, 0x019a, 0x01a4, 0x01c7, 0x01d5, 0x01e1, 0x01ed,
- 0x01f9, 0x0205, 0x0211, 0x0217, 0x0223, 0x0235, 0x0247, 0x0257,
- 0x0267, 0x0271, 0x0283, 0x028b, 0x0297, 0x02a9, 0x02bb, 0x02c9,
- 0x02db, 0x02ed, 0x030e, 0x0322, 0x0330, 0x0342, 0x0350, 0x035a,
- 0x0364, 0x036e, 0x037f, 0x0391, 0x03a3, 0x03b3, 0x03c3, 0x03cf,
- // Entry 40 - 7F
- 0x03e5, 0x03fd, 0x0411, 0x0419, 0x042e, 0x043c, 0x0442, 0x0454,
- 0x0468, 0x047a, 0x0488, 0x0496, 0x04a8, 0x04bc, 0x04c6, 0x04d4,
- 0x04e4, 0x04fa, 0x050a, 0x0518, 0x0528, 0x0534, 0x0546, 0x0554,
- 0x055c, 0x0570, 0x0580, 0x0590, 0x05aa, 0x05b4, 0x05c8, 0x05d6,
- 0x05e2, 0x05f2, 0x0609, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f,
- 0x066f, 0x0681, 0x068d, 0x069d, 0x06af, 0x06c1, 0x06cb, 0x06e8,
- 0x06f8, 0x0704, 0x071c, 0x073b, 0x075a, 0x0771, 0x077d, 0x078d,
- 0x07a1, 0x07af, 0x07b9, 0x07c1, 0x07cf, 0x07e3, 0x07eb, 0x07f7,
- // Entry 80 - BF
- 0x07ff, 0x0815, 0x081f, 0x0837, 0x0841, 0x0851, 0x085b, 0x086f,
- 0x0887, 0x0899, 0x08a5, 0x08c1, 0x08cb, 0x08dd, 0x08ed, 0x08ff,
- 0x0911, 0x0919, 0x092d, 0x093d, 0x094b, 0x0955, 0x0961, 0x0973,
- 0x0981, 0x098f, 0x099f, 0x09ab, 0x09bd, 0x09c9, 0x09d7, 0x09eb,
- 0x09f7, 0x0a01, 0x0a0d, 0x0a19, 0x0a29, 0x0a3b, 0x0a4b, 0x0a5d,
- 0x0a65, 0x0a75, 0x0a7f, 0x0a93, 0x0aa1, 0x0ab1, 0x0abb, 0x0ac5,
- 0x0acd, 0x0ad9, 0x0ae3, 0x0af3, 0x0b01, 0x0b0f, 0x0b19, 0x0b27,
- 0x0b31, 0x0b31, 0x0b41, 0x0b49, 0x0b51, 0x0b5f, 0x0b5f, 0x0b6f,
- // Entry C0 - FF
- 0x0b6f, 0x0b87, 0x0ba3, 0x0baf, 0x0bc1, 0x0bcd, 0x0bcd, 0x0bdb,
- 0x0bdb, 0x0be7, 0x0be7, 0x0be7, 0x0bed, 0x0bed, 0x0bfd, 0x0bfd,
- 0x0c07, 0x0c13, 0x0c27, 0x0c27, 0x0c2f, 0x0c2f, 0x0c2f, 0x0c2f,
- 0x0c35, 0x0c3f, 0x0c3f, 0x0c47, 0x0c47, 0x0c47, 0x0c62, 0x0c70,
- 0x0c80, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96, 0x0c96, 0x0ca0,
- 0x0ca0, 0x0ca8, 0x0ca8, 0x0cb8, 0x0cc8, 0x0cc8, 0x0cd8, 0x0cd8,
- 0x0ce2, 0x0cf2, 0x0cf2, 0x0cfc, 0x0d0a, 0x0d12, 0x0d1c, 0x0d2a,
- 0x0d32, 0x0d42, 0x0d5b, 0x0d65, 0x0d77, 0x0d83, 0x0d93, 0x0db6,
- // Entry 100 - 13F
- 0x0dc4, 0x0dc4, 0x0de2, 0x0df2, 0x0e02, 0x0e0e, 0x0e18, 0x0e26,
- 0x0e32, 0x0e3e, 0x0e48, 0x0e54, 0x0e5e, 0x0e76, 0x0e76, 0x0e80,
- 0x0ead, 0x0eb7, 0x0ec1, 0x0ec1, 0x0ec9, 0x0ed1, 0x0ed1, 0x0ee3,
- 0x0eef, 0x0f01, 0x0f2e, 0x0f2e, 0x0f3a, 0x0f3a, 0x0f42, 0x0f56,
- 0x0f56, 0x0f5c, 0x0f5c, 0x0f85, 0x0f9d, 0x0f9d, 0x0fba, 0x0fd7,
- 0x0fed, 0x0ff1, 0x1001, 0x1001, 0x1009, 0x1011, 0x1011, 0x1019,
- 0x102d, 0x102d, 0x1054, 0x1076, 0x1076, 0x1080, 0x1092, 0x10a4,
- 0x10ae, 0x10c6, 0x10e7, 0x10e7, 0x10e7, 0x10f1, 0x10fd, 0x1107,
- // Entry 140 - 17F
- 0x1107, 0x1117, 0x1117, 0x112b, 0x1137, 0x1141, 0x1159, 0x1159,
- 0x1161, 0x1169, 0x1169, 0x1173, 0x1187, 0x1187, 0x1187, 0x1195,
- 0x11a1, 0x11ad, 0x11d0, 0x11ef, 0x11ef, 0x1207, 0x1217, 0x1227,
- 0x122d, 0x1237, 0x123f, 0x1251, 0x1251, 0x1259, 0x1267, 0x1283,
- 0x1283, 0x128b, 0x128b, 0x1295, 0x12a1, 0x12b6, 0x12b6, 0x12b6,
- 0x12b6, 0x12c8, 0x12d8, 0x12f1, 0x12ff, 0x130d, 0x1317, 0x1338,
- 0x1338, 0x1338, 0x1348, 0x1352, 0x1360, 0x136a, 0x136a, 0x137a,
- 0x1388, 0x1394, 0x139e, 0x13aa, 0x13b4, 0x13c6, 0x13c6, 0x13c6,
- // Entry 180 - 1BF
- 0x13c6, 0x13d2, 0x13d2, 0x13dc, 0x13e4, 0x13fb, 0x13fb, 0x140e,
- 0x141e, 0x1428, 0x142e, 0x1438, 0x143e, 0x143e, 0x143e, 0x144e,
- 0x144e, 0x145a, 0x146a, 0x1478, 0x1488, 0x1498, 0x1498, 0x14a2,
- 0x14ae, 0x14b8, 0x14c0, 0x14d0, 0x14fd, 0x1510, 0x1518, 0x1524,
- 0x1536, 0x154a, 0x155a, 0x1566, 0x156e, 0x156e, 0x157c, 0x1592,
- 0x159a, 0x15b0, 0x15be, 0x15be, 0x15be, 0x15c8, 0x15dc, 0x15dc,
- 0x15f6, 0x15fe, 0x1614, 0x1624, 0x162c, 0x1638, 0x1638, 0x1644,
- 0x1644, 0x164e, 0x166a, 0x166a, 0x1670, 0x1687, 0x168f, 0x16b0,
- // Entry 1C0 - 1FF
- 0x16c0, 0x16d0, 0x16da, 0x16e4, 0x16f0, 0x170f, 0x1723, 0x1739,
- 0x1749, 0x175d, 0x176b, 0x176b, 0x176b, 0x176b, 0x1787, 0x1787,
- 0x179b, 0x179b, 0x179b, 0x17ad, 0x17ad, 0x17c5, 0x17cd, 0x17cd,
- 0x17e5, 0x17f4, 0x1808, 0x1808, 0x1808, 0x1812, 0x182b, 0x182b,
- 0x182b, 0x182b, 0x183d, 0x1843, 0x184f, 0x185d, 0x1888, 0x1896,
- 0x18a0, 0x18ae, 0x18ae, 0x18ae, 0x18b8, 0x18ce, 0x18e2, 0x18e2,
- 0x18f8, 0x18f8, 0x1900, 0x1900, 0x190c, 0x1927, 0x1943, 0x1943,
- 0x1953, 0x1959, 0x1959, 0x1965, 0x1965, 0x1965, 0x197b, 0x1992,
- // Entry 200 - 23F
- 0x19ab, 0x19c4, 0x19d2, 0x19e4, 0x19fb, 0x1a05, 0x1a05, 0x1a05,
- 0x1a11, 0x1a19, 0x1a29, 0x1a39, 0x1a5c, 0x1a81, 0x1a91, 0x1a91,
- 0x1a91, 0x1a9b, 0x1aa3, 0x1aaf, 0x1ab9, 0x1ac3, 0x1ac9, 0x1add,
- 0x1add, 0x1aeb, 0x1af9, 0x1af9, 0x1b07, 0x1b1e, 0x1b2f, 0x1b2f,
- 0x1b2f, 0x1b2f, 0x1b43, 0x1b43, 0x1b51, 0x1b67, 0x1b75, 0x1b85,
- 0x1bb6, 0x1bc8, 0x1bda, 0x1be8, 0x1bf0, 0x1bf6, 0x1bf6, 0x1bf6,
- 0x1bf6, 0x1bf6, 0x1c00, 0x1c00, 0x1c0c, 0x1c0c, 0x1c18, 0x1c22,
- 0x1c2a, 0x1c38, 0x1c38, 0x1c44, 0x1c44, 0x1c4c, 0x1c50, 0x1c5a,
- // Entry 240 - 27F
- 0x1c5a, 0x1c5a, 0x1c5a, 0x1c6c, 0x1c7a, 0x1c91, 0x1c91, 0x1c9d,
- 0x1cd7, 0x1cdf, 0x1d13, 0x1d1b, 0x1d53, 0x1d53, 0x1d53, 0x1d53,
- 0x1d53, 0x1d53, 0x1d53, 0x1d6e, 0x1d6e, 0x1d6e, 0x1d6e, 0x1d6e,
- 0x1d6e, 0x1d6e, 0x1d8a, 0x1d9e, 0x1d9e, 0x1d9e, 0x1db0, 0x1dcc,
-} // Size: 1240 bytes
-
-var bnLangStr string = "" + // Size: 11932 bytes
- "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকান্সআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মা" +
- "রাআজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটন" +
- "বসনীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশ" +
- "জার্মানদিবেহিজোঙ্গাইউয়িগ্রিকইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফ" +
- "ার্সিফুলাহ্ফিনিশফিজিআনফারোসফরাসিপশ্চিম ফ্রিসিআনআইরিশস্কটস-গ্যেলিকগ্যাল" +
- "িশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহিরি মোতুক্রোয়েশীয়হাইত" +
- "িয়ানহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন্টারলিঙ্গইগ্" +
- "\u200cবোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালীয়ইনুক্টিটুটজাপানিজাভা" +
- "নিজজর্জিয়ানকঙ্গোকিকুয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকান্নাড়ীকোর" +
- "িয়ানকানুরিকাশ্মীরীকুর্দিশকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডাল" +
- "িম্বুর্গিশলিঙ্গালালাওলিথুয়েনীয়লুবা-কাটাঙ্গালাত্\u200cভীয়মালাগাসিমার" +
- "্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গোলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরু" +
- "উত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান নিনর্স্কনরওয়েজিয়ান বোক" +
- "মালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়িয়াওসেটিকপাঞ" +
- "্জাবীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ারোয়া" +
- "ন্ডাসংষ্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লো" +
- "ভেনীয়সামোয়ানশোনাসোমালীআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুন্দানীসুইড" +
- "িশসোয়াহিলিতামিলতেলেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীস" +
- "ঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুক" +
- "ওয়ালুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্মেআদে" +
- "গেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচীন ইংরেজীআঙ্গিকাআর" +
- "ামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাসাবেজাবেম" +
- "্বাবেনাপশ্চিম বালোচিভোজপুরিবিকোলবিনিসিকসিকাব্রাজবোড়োবুরিয়াতবুগিনিব্ল" +
- "িনক্যাডোক্যারিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গনচকটো" +
- "ওচিপেওয়ানচেরোকীশাইয়েনসোরানি কুর্দিশকপটিকক্রিমিয়ান তুর্কিকাশুবিয়ানড" +
- "াকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভদোগ্রীবডিংকাজার্মাডোগরিনিম্নতর সোর্" +
- "বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাএম্বুএফিকপ্রাচীন মিশরীয়ইকাজুকএলামাইট" +
- "মধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্রাচীন ফরাসিউত্তরাঞ্চলীয়" +
- " ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজগায়োবায়াগীজগিলবার্টিজমধ্য-" +
- "উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্" +
- "রীকসুইস জার্মানগুসীগওইচ্’ইনহাইডাহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্" +
- "\u200cমোঙউচ্চ সোর্বিয়ানহুপাইবানইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্স" +
- "িজুদেও আরবিকারা-কাল্পাককাবাইলেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপম" +
- "াকোন্দেকাবুভারদিয়ানুকোরোখাশিখোটানিজকোয়রা চীনিকালেনজিনকিম্বুন্দুকমি-প" +
- "ারমিআককোঙ্কানিকোস্রাইনক্\u200cপেল্লেকারচে-বাল্কারকারেলিয়ানকুরুখশাম্বা" +
- "লাবাফিয়াকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গোলোজি" +
- "উত্তর লুরিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োলুশাইলুইয়ামাদুরেসেমাগাহিমৈথিল" +
- "িম্যাকাসারম্যান্ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশ" +
- "মাখুয়া-মেত্তোমেটামিকম্যাকমিনাঙ্গ্\u200cকাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদ" +
- "াঙ্গবহুগুণিতক ভাষাসমূহক্রিকমিরান্ডিজমারোয়ারিএরজিয়ামাজানদেরানিনেয়াপো" +
- "লিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনোগাইপ্রাচীন নর্সএ" +
- "ন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কোল" +
- "েন্যোরোএন্.জিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামে" +
- "ন্টোপালায়ুয়ানপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রাচীন প্রোভেনসালক" +
- "ি‘চেরাজস্থানীরাপানুইরারোটোংগানরম্বোরোমানিআরমেনিয়ানরাওয়াস্যান্ডাওয়েই" +
- "য়াকুটসামারিটান আরামিকসামবুরুসাসাকসাঁওতালিসাঙ্গুসিসিলিয়ানস্কটসদক্ষিণ " +
- "কুর্দিশসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেলহিতশানসিডামোদক্ষি" +
- "ণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস্রানান " +
- "টোঙ্গোসেরেরসুকুমাসুসুসুমেরীয়কঙ্গো সোয়াহিলিপ্রাচীন সিরিওসিরিয়াকটাইম্" +
- "নেতেসোতেরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্" +
- "গাটোক পিসিনসিমশিয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস ত" +
- "ামাজিগাতউডমুর্টউগারিটিকউম্বুন্দুমূলভাইভোটিকভুঞ্জোওয়ালামোওয়ারেওয়াশোও" +
- "য়ার্লপিরিকাল্মইকসোগাইয়াওইয়াপেসেজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন" +
- " তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান" +
- " জার্মানসুইস হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআ" +
- "মেরিকার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান " +
- "স্প্যানিশকানাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজই" +
- "উরোপের পর্তুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়সরলীকৃত চীনাঐতিহ্যবাহি চীনা"
-
-var bnLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x002a, 0x0045, 0x0063, 0x006f, 0x0084, 0x009c,
- 0x00a8, 0x00b7, 0x00c9, 0x00de, 0x00ff, 0x0111, 0x012f, 0x014a,
- 0x015f, 0x0174, 0x0183, 0x0198, 0x01aa, 0x01c2, 0x01d7, 0x01e6,
- 0x01f8, 0x0210, 0x021c, 0x0225, 0x024a, 0x0259, 0x026b, 0x027a,
- 0x028f, 0x02a1, 0x02b3, 0x02c2, 0x02d1, 0x02e3, 0x0304, 0x031f,
- 0x033a, 0x0349, 0x035b, 0x036d, 0x037c, 0x038e, 0x039d, 0x03ac,
- 0x03d7, 0x03e6, 0x040b, 0x0429, 0x0444, 0x0459, 0x0471, 0x0480,
- 0x0492, 0x04a4, 0x04bd, 0x04de, 0x04f9, 0x0517, 0x0532, 0x0544,
- // Entry 40 - 7F
- 0x0571, 0x0592, 0x05b3, 0x05c5, 0x05e7, 0x0602, 0x060b, 0x0632,
- 0x0647, 0x0665, 0x0677, 0x068c, 0x06a7, 0x06b6, 0x06cb, 0x06ef,
- 0x06fe, 0x0725, 0x0731, 0x074c, 0x0764, 0x0776, 0x078e, 0x07a3,
- 0x07af, 0x07c1, 0x07d6, 0x07e5, 0x0812, 0x0824, 0x0845, 0x085d,
- 0x0866, 0x0887, 0x08ac, 0x08c7, 0x08df, 0x08fa, 0x0909, 0x092d,
- 0x094b, 0x0966, 0x0978, 0x0987, 0x099c, 0x09ab, 0x09ba, 0x09e5,
- 0x09f7, 0x0a12, 0x0a1b, 0x0a58, 0x0a8f, 0x0aba, 0x0acc, 0x0ae7,
- 0x0aff, 0x0b17, 0x0b26, 0x0b3b, 0x0b4d, 0x0b65, 0x0b71, 0x0b80,
- // Entry 80 - BF
- 0x0b92, 0x0baa, 0x0bbf, 0x0bd4, 0x0be6, 0x0bfe, 0x0c07, 0x0c34,
- 0x0c49, 0x0c6d, 0x0c7f, 0x0cb3, 0x0cc5, 0x0cd7, 0x0cec, 0x0d0a,
- 0x0d22, 0x0d2e, 0x0d40, 0x0d58, 0x0d70, 0x0d85, 0x0da4, 0x0dbc,
- 0x0dce, 0x0de9, 0x0df8, 0x0e0a, 0x0e19, 0x0e22, 0x0e40, 0x0e5b,
- 0x0e70, 0x0e85, 0x0e97, 0x0ea6, 0x0eb5, 0x0ed3, 0x0ee2, 0x0f00,
- 0x0f0f, 0x0f27, 0x0f39, 0x0f57, 0x0f6c, 0x0f81, 0x0f90, 0x0f9c,
- 0x0fb4, 0x0fc6, 0x0fdb, 0x0fe7, 0x0ff3, 0x1011, 0x1020, 0x1035,
- 0x1044, 0x1044, 0x105f, 0x106b, 0x1077, 0x1098, 0x1098, 0x10a7,
- // Entry C0 - FF
- 0x10a7, 0x10c9, 0x10f1, 0x1106, 0x111b, 0x112d, 0x112d, 0x1142,
- 0x1142, 0x115a, 0x115a, 0x115a, 0x1163, 0x1163, 0x117e, 0x117e,
- 0x1193, 0x11a5, 0x11bd, 0x11bd, 0x11c9, 0x11c9, 0x11c9, 0x11c9,
- 0x11d5, 0x11e7, 0x11e7, 0x11f3, 0x11f3, 0x11f3, 0x1218, 0x122d,
- 0x123c, 0x1248, 0x1248, 0x1248, 0x125d, 0x125d, 0x125d, 0x126c,
- 0x126c, 0x127b, 0x127b, 0x1293, 0x12a5, 0x12a5, 0x12b4, 0x12b4,
- 0x12c6, 0x12db, 0x12db, 0x12ed, 0x1308, 0x1314, 0x1323, 0x1338,
- 0x1344, 0x1350, 0x1372, 0x1381, 0x139c, 0x13ae, 0x13c3, 0x13eb,
- // Entry 100 - 13F
- 0x13fa, 0x13fa, 0x142b, 0x1449, 0x145b, 0x1476, 0x1485, 0x14a0,
- 0x14b5, 0x14ca, 0x14d9, 0x14eb, 0x14fa, 0x152e, 0x152e, 0x1543,
- 0x1559, 0x156c, 0x157b, 0x157b, 0x158a, 0x1596, 0x1596, 0x15c1,
- 0x15d3, 0x15e8, 0x1607, 0x1607, 0x1619, 0x1619, 0x162e, 0x1646,
- 0x1646, 0x164c, 0x164c, 0x1668, 0x168d, 0x168d, 0x16d3, 0x16fb,
- 0x171c, 0x1722, 0x1734, 0x1734, 0x1743, 0x1752, 0x1752, 0x175b,
- 0x1779, 0x1779, 0x17ab, 0x17e6, 0x17e6, 0x17f8, 0x1816, 0x1822,
- 0x1834, 0x1859, 0x187b, 0x187b, 0x187b, 0x1887, 0x189f, 0x18ae,
- // Entry 140 - 17F
- 0x18ae, 0x18cf, 0x18cf, 0x18f6, 0x190b, 0x191d, 0x1948, 0x1948,
- 0x1954, 0x1960, 0x1960, 0x196f, 0x1981, 0x1981, 0x1981, 0x1993,
- 0x19a5, 0x19b7, 0x19d9, 0x19f5, 0x19f5, 0x1a17, 0x1a2c, 0x1a3b,
- 0x1a4a, 0x1a5c, 0x1a68, 0x1a8c, 0x1a8c, 0x1aa1, 0x1ab9, 0x1ae3,
- 0x1ae3, 0x1aef, 0x1aef, 0x1afb, 0x1b10, 0x1b2f, 0x1b2f, 0x1b2f,
- 0x1b2f, 0x1b47, 0x1b65, 0x1b84, 0x1b9c, 0x1bb4, 0x1bcf, 0x1bf4,
- 0x1bf4, 0x1bf4, 0x1c12, 0x1c21, 0x1c39, 0x1c4e, 0x1c4e, 0x1c5d,
- 0x1c72, 0x1c84, 0x1c96, 0x1ca8, 0x1cba, 0x1cd5, 0x1cd5, 0x1cd5,
- // Entry 180 - 1BF
- 0x1cd5, 0x1ce7, 0x1ce7, 0x1cf9, 0x1d05, 0x1d21, 0x1d21, 0x1d43,
- 0x1d58, 0x1d6a, 0x1d79, 0x1d88, 0x1d9a, 0x1d9a, 0x1d9a, 0x1db2,
- 0x1db2, 0x1dc4, 0x1dd6, 0x1df1, 0x1e15, 0x1e24, 0x1e24, 0x1e33,
- 0x1e4e, 0x1e60, 0x1e6c, 0x1e87, 0x1ea3, 0x1ecb, 0x1ed7, 0x1eef,
- 0x1f19, 0x1f2b, 0x1f40, 0x1f52, 0x1f5b, 0x1f5b, 0x1f70, 0x1fa4,
- 0x1fb3, 0x1fce, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ffe, 0x201f, 0x201f,
- 0x2043, 0x204f, 0x2077, 0x208f, 0x20a1, 0x20b6, 0x20b6, 0x20ce,
- 0x20ce, 0x20dd, 0x20ff, 0x20ff, 0x210e, 0x2142, 0x2154, 0x2182,
- // Entry 1C0 - 1FF
- 0x21ac, 0x21d3, 0x21e5, 0x21fb, 0x2207, 0x222c, 0x224d, 0x2265,
- 0x2283, 0x22aa, 0x22cb, 0x22cb, 0x22cb, 0x22cb, 0x22f3, 0x22f3,
- 0x2311, 0x2311, 0x2311, 0x2335, 0x2335, 0x2369, 0x2378, 0x2378,
- 0x2393, 0x23a8, 0x23c6, 0x23c6, 0x23c6, 0x23d5, 0x23e7, 0x23e7,
- 0x23e7, 0x23e7, 0x2405, 0x2417, 0x243b, 0x2450, 0x247e, 0x2493,
- 0x24a2, 0x24ba, 0x24ba, 0x24ba, 0x24cc, 0x24ea, 0x24f9, 0x24f9,
- 0x2521, 0x2521, 0x252d, 0x252d, 0x2542, 0x2573, 0x2598, 0x2598,
- 0x25b0, 0x25b9, 0x25b9, 0x25cb, 0x25cb, 0x25cb, 0x2602, 0x261b,
- // Entry 200 - 23F
- 0x2637, 0x2659, 0x2671, 0x268c, 0x26b4, 0x26c3, 0x26c3, 0x26c3,
- 0x26d5, 0x26e1, 0x26f9, 0x26f9, 0x2724, 0x2749, 0x2761, 0x2761,
- 0x2761, 0x2776, 0x2782, 0x2794, 0x27a3, 0x27b8, 0x27c1, 0x27d6,
- 0x27d6, 0x27ee, 0x2809, 0x2809, 0x281e, 0x2846, 0x285f, 0x285f,
- 0x285f, 0x285f, 0x287a, 0x287a, 0x2892, 0x28a4, 0x28bf, 0x28dd,
- 0x2924, 0x2939, 0x2951, 0x296c, 0x2975, 0x297e, 0x297e, 0x297e,
- 0x297e, 0x297e, 0x298d, 0x298d, 0x299f, 0x299f, 0x29b7, 0x29c9,
- 0x29db, 0x29fc, 0x29fc, 0x2a11, 0x2a11, 0x2a1d, 0x2a2c, 0x2a44,
- // Entry 240 - 27F
- 0x2a44, 0x2a44, 0x2a44, 0x2a44, 0x2a59, 0x2a75, 0x2a75, 0x2a87,
- 0x2ac8, 0x2ad4, 0x2b1e, 0x2b2a, 0x2b59, 0x2b59, 0x2b90, 0x2bbc,
- 0x2bf0, 0x2c1b, 0x2c43, 0x2c6e, 0x2cb8, 0x2cec, 0x2d29, 0x2d29,
- 0x2d51, 0x2d6d, 0x2d8c, 0x2da1, 0x2dd5, 0x2e03, 0x2e1b, 0x2e4f,
- 0x2e71, 0x2e9c,
-} // Size: 1244 bytes
-
-var caLangStr string = "" + // Size: 4535 bytes
- "àfarabkhazavèsticafrikaansàkanamhàricaragonèsàrabassamèsàvaraimaraazerba" +
- "idjanèsbaixkirbielorúsbúlgarbislamabambarabengalítibetàbretóbosniàcatalà" +
- "txetxèchamorrocorscreetxeceslau eclesiàstictxuvaixgal·lèsdanèsalemanydiv" +
- "ehidzongkaewegrecanglèsesperantoespanyolestoniàbascpersafulfinèsfijiàfer" +
- "oèsfrancèsfrisó occidentalirlandèsgaèlic escocèsgallecguaranígujaratiman" +
- "xhaussahebreuhindihiri motucroathaitiàhongarèsarmenihererointerlinguaind" +
- "onesiinterlingueigboyi sichuaninupiakidoislandèsitaliàinuktitutjaponèsja" +
- "vanèsgeorgiàkongokikuiukuanyamakazakhgrenlandèskhmerkannadacoreàkanurica" +
- "ixmirikurdkomicòrnickirguísllatíluxemburguèsgandalimburguèslingalalaosià" +
- "lituàluba katangaletómalgaixmarshallèsmaorimacedonimalaiàlammongolmarath" +
- "imalaimaltèsbirmànauruàndebele septentrionalnepalèsndonganeerlandèsnorue" +
- "c nynorsknoruec bokmålndebele meridionalnavahonyanjaoccitàojibwaoromoori" +
- "yaossetapanjabipalipolonèspaixtuportuguèsquítxuaretoromànicrundiromanèsr" +
- "usruandèssànscritsardsindhisami septentrionalsangosingalèseslovaceslovès" +
- "amoàshonasomalialbanèsserbiswazisotho meridionalsundanèssuecsuahilitàmil" +
- "telugutadjiktailandèstigrinyaturcmansetswanatongalèsturctsongatàtartahit" +
- "iàuigurucraïnèsurdúuzbekvendavietnamitavolapükvalówòlofxosajiddischiorub" +
- "azhuangxinèszuluatjehacoliadangmeadiguéafrihiliaghemainuaccadialabamaale" +
- "utaalbanès gegaltaic meridionalanglès anticangikaarameuaraucàaraonaarapa" +
- "hoarauacàrab egipciparellengua de signes americanaasturiàawadhibalutxiba" +
- "linèsbavarèsbasabamunghomalabejabembabenabafutbadagabalutxi occidentalbh" +
- "ojpuribicolbinikomblackfootbrajbrahuibodoakooseburiatbuguisekibilinmedum" +
- "bacaddocaribcayugaatsamcebuàchigatxibtxatxagataichuukmaripidgin chinookc" +
- "hoctawchipewyancherokeexeiennekurd soranicoptetàtar de Crimeacaixubidako" +
- "tadarguàtaitadelawareslaveydogribdinkazarmadogribaix sòrabdoualaneerland" +
- "ès mitjàdiolajuladazagaembuefikemiliàegipci anticekajukelamitaanglès mi" +
- "tjàewondoextremenyfangfilipífonfrancès mitjàfrancès anticfrisó septentri" +
- "onalfrisó orientalfriülàgagagaúsxinès gangayogbayagueezgilbertèsgilakial" +
- "t alemany mitjàalt alemany anticconcani de Goagondigorontalogòticgrebogr" +
- "ec anticalemany suíswayúgusígwichinhaidaxinès hakkahawaiàhindi de Fijihi" +
- "ligainonhititahmongalt sòrabxinès xianghupaibanibibioilocàingúixcrioll a" +
- "nglès de Jamaicalojbanngombamachamejudeopersajudeoàrabkarakalpakcabilenc" +
- "katxinjjukambakawikabardíkanembutyapmakondecrioll capverdiàkenyangkoroka" +
- "ingàkhasikhotanèskoyra chiinikakokalenjinkimbundukomi-permiackonkanikosr" +
- "aeàkpellekaratxaikriocareliàkurukhshambalabafiacologniankúmikkutenailadí" +
- "langipanjabi occidentallambalesguiàlígurlakotallombardmongoloziluri sept" +
- "entrionalluba-lulualuisenyolundaluomizoluyiaxinès clàssiclazmadurèsmafam" +
- "agahimaithilimakassarmandingamassaimabamordovià moksamandarmendemerumaur" +
- "iciàgaèlic irlandès mitjàmakhuwa-mettometa’micmacminangkabaumanxúmanipur" +
- "ímohawkmorémari occidentalmundangllengües vàriescreekmirandèsmarwarimye" +
- "nemordovià erzamazanderanixinès min del sudnapolitànamabaix alemanynewar" +
- "iniasniueàbissiongiemboonnogainòrdic anticnovialn’Kosotho septentrionaln" +
- "uernewari clàssicnyamwesinyankolenyoronzemaosageturc otomàpangasipahlavi" +
- "pampangapapiamentopalauàpicardalemany pennsilvaniàpersa anticalemany pal" +
- "atífenicipiemontèsgrec pònticponapeàprovençal anticquitxérajasthanirapan" +
- "uirarotongàromanyèsromboromaníaromanèsrwosandaweiacutarameu samaritàsamb" +
- "urusasaksantalingambaysangusiciliàescocèssard sasserèskurd meridionalsen" +
- "ecasenaselkupsonghai orientalirlandès antictaixelhitxanàrab txadiàsidamo" +
- "sami meridionalsami lulesami d’Inarisami skoltsoninkesogdiàsrananserersa" +
- "hosukumasusúsumericomoriàsuahili del Congosiríac clàssicsiríacsilesiàtem" +
- "netesoterenatetuntigretivtokelauèstsakhurklingoniàtlingittalixamazictong" +
- "atok pisintarokotsimshiàtat meridionaltumbukatuvaluàtasawaqtuviniàamazic" +
- " del Marroc centraludmurtugaríticumbunduarrelvaivènetvepseflamenc occide" +
- "ntalvòticvunjowalserametowaraywashowarlpirixinès wucalmucmingreliàsogaya" +
- "oyapeàyangbenyembacantonèszapotecasímbols Blisszelandèszenagaamazic està" +
- "ndard marroquízunisense contingut lingüísticzazaàrab estàndard modernale" +
- "many austríacalt alemany suísanglès australiàanglès canadencanglès brità" +
- "nicanglès americàespanyol hispanoamericàespanyol europeuespanyol de Mèxi" +
- "cfrancès canadencfrancès suísbaix saxóflamencportuguès del Brasilportugu" +
- "ès de Portugalmoldauserbocroatxinès simplificatxinès tradicional"
-
-var caLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x000b, 0x0013, 0x001c, 0x0021, 0x0029, 0x0032,
- 0x0037, 0x003f, 0x0044, 0x004a, 0x0058, 0x005f, 0x0068, 0x006f,
- 0x0076, 0x007d, 0x0085, 0x008c, 0x0092, 0x0099, 0x00a0, 0x00a7,
- 0x00af, 0x00b3, 0x00b7, 0x00bb, 0x00cd, 0x00d4, 0x00dd, 0x00e3,
- 0x00ea, 0x00f0, 0x00f7, 0x00fa, 0x00fe, 0x0105, 0x010e, 0x0116,
- 0x011e, 0x0122, 0x0127, 0x012a, 0x0130, 0x0136, 0x013d, 0x0145,
- 0x0156, 0x015f, 0x016f, 0x0175, 0x017d, 0x0185, 0x0189, 0x018f,
- 0x0195, 0x019a, 0x01a3, 0x01a8, 0x01af, 0x01b8, 0x01be, 0x01c4,
- // Entry 40 - 7F
- 0x01cf, 0x01d7, 0x01e2, 0x01e6, 0x01f0, 0x01f7, 0x01fa, 0x0203,
- 0x020a, 0x0213, 0x021b, 0x0223, 0x022b, 0x0230, 0x0236, 0x023e,
- 0x0244, 0x024f, 0x0254, 0x025b, 0x0261, 0x0267, 0x026f, 0x0273,
- 0x0277, 0x027e, 0x0286, 0x028c, 0x0299, 0x029e, 0x02a9, 0x02b0,
- 0x02b7, 0x02bd, 0x02c9, 0x02ce, 0x02d5, 0x02e0, 0x02e5, 0x02ed,
- 0x02f7, 0x02fd, 0x0304, 0x0309, 0x0310, 0x0316, 0x031d, 0x0332,
- 0x033a, 0x0340, 0x034b, 0x0359, 0x0367, 0x0379, 0x037f, 0x0385,
- 0x038c, 0x0392, 0x0397, 0x039c, 0x03a2, 0x03a9, 0x03ad, 0x03b5,
- // Entry 80 - BF
- 0x03bb, 0x03c5, 0x03cd, 0x03d9, 0x03de, 0x03e6, 0x03e9, 0x03f1,
- 0x03fa, 0x03fe, 0x0404, 0x0416, 0x041b, 0x0424, 0x042b, 0x0432,
- 0x0438, 0x043d, 0x0443, 0x044b, 0x0450, 0x0455, 0x0465, 0x046e,
- 0x0472, 0x0479, 0x047f, 0x0485, 0x048b, 0x0495, 0x049d, 0x04a4,
- 0x04ac, 0x04b5, 0x04b9, 0x04bf, 0x04c5, 0x04cd, 0x04d2, 0x04dc,
- 0x04e1, 0x04e6, 0x04eb, 0x04f5, 0x04fd, 0x0502, 0x0508, 0x050c,
- 0x0514, 0x051a, 0x0520, 0x0526, 0x052a, 0x052f, 0x0534, 0x053b,
- 0x0542, 0x0542, 0x054a, 0x054f, 0x0553, 0x0559, 0x0560, 0x0566,
- // Entry C0 - FF
- 0x0572, 0x0583, 0x0590, 0x0596, 0x059c, 0x05a3, 0x05a9, 0x05b0,
- 0x05b0, 0x05b6, 0x05b6, 0x05c2, 0x05c6, 0x05e1, 0x05e9, 0x05e9,
- 0x05ef, 0x05f6, 0x05fe, 0x0606, 0x060a, 0x060f, 0x060f, 0x0616,
- 0x061a, 0x061f, 0x061f, 0x0623, 0x0628, 0x062e, 0x0640, 0x0648,
- 0x064d, 0x0651, 0x0651, 0x0654, 0x065d, 0x065d, 0x065d, 0x0661,
- 0x0667, 0x066b, 0x0671, 0x0677, 0x067c, 0x0680, 0x0685, 0x068c,
- 0x0691, 0x0696, 0x069c, 0x06a1, 0x06a7, 0x06ac, 0x06b3, 0x06bb,
- 0x06c0, 0x06c4, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f1, 0x06fc,
- // Entry 100 - 13F
- 0x0701, 0x0701, 0x0711, 0x0718, 0x071e, 0x0725, 0x072a, 0x0732,
- 0x0738, 0x073e, 0x0743, 0x0748, 0x074d, 0x0758, 0x0758, 0x075e,
- 0x0770, 0x0775, 0x0779, 0x077f, 0x0783, 0x0787, 0x078e, 0x079a,
- 0x07a0, 0x07a7, 0x07b5, 0x07b5, 0x07bb, 0x07c4, 0x07c8, 0x07cf,
- 0x07cf, 0x07d2, 0x07d2, 0x07e1, 0x07ef, 0x07ef, 0x0803, 0x0812,
- 0x081a, 0x081c, 0x0823, 0x082d, 0x0831, 0x0836, 0x0836, 0x083b,
- 0x0845, 0x084b, 0x085d, 0x086e, 0x087c, 0x0881, 0x088a, 0x0890,
- 0x0895, 0x089f, 0x08ac, 0x08b1, 0x08b1, 0x08b6, 0x08bd, 0x08c2,
- // Entry 140 - 17F
- 0x08ce, 0x08d5, 0x08e2, 0x08ec, 0x08f2, 0x08f7, 0x0901, 0x090d,
- 0x0911, 0x0915, 0x091b, 0x0921, 0x0928, 0x0928, 0x0941, 0x0947,
- 0x094d, 0x0954, 0x095e, 0x0968, 0x0968, 0x0972, 0x097a, 0x0980,
- 0x0983, 0x0988, 0x098c, 0x0994, 0x099b, 0x099f, 0x09a6, 0x09b7,
- 0x09be, 0x09c2, 0x09c9, 0x09ce, 0x09d7, 0x09e3, 0x09e3, 0x09e3,
- 0x09e7, 0x09ef, 0x09f7, 0x0a03, 0x0a0a, 0x0a12, 0x0a18, 0x0a20,
- 0x0a24, 0x0a24, 0x0a2c, 0x0a32, 0x0a3a, 0x0a3f, 0x0a48, 0x0a4e,
- 0x0a55, 0x0a5a, 0x0a5f, 0x0a71, 0x0a76, 0x0a7e, 0x0a7e, 0x0a84,
- // Entry 180 - 1BF
- 0x0a84, 0x0a8a, 0x0a92, 0x0a97, 0x0a9b, 0x0aad, 0x0aad, 0x0ab7,
- 0x0abf, 0x0ac4, 0x0ac7, 0x0acb, 0x0ad0, 0x0adf, 0x0ae2, 0x0aea,
- 0x0aee, 0x0af4, 0x0afc, 0x0b04, 0x0b0c, 0x0b12, 0x0b16, 0x0b25,
- 0x0b2b, 0x0b30, 0x0b34, 0x0b3d, 0x0b55, 0x0b62, 0x0b69, 0x0b6f,
- 0x0b7a, 0x0b80, 0x0b89, 0x0b8f, 0x0b94, 0x0ba3, 0x0baa, 0x0bbb,
- 0x0bc0, 0x0bc9, 0x0bd0, 0x0bd0, 0x0bd5, 0x0be3, 0x0bee, 0x0c00,
- 0x0c09, 0x0c0d, 0x0c19, 0x0c1f, 0x0c23, 0x0c29, 0x0c29, 0x0c2f,
- 0x0c38, 0x0c3d, 0x0c4a, 0x0c50, 0x0c56, 0x0c69, 0x0c6d, 0x0c7c,
- // Entry 1C0 - 1FF
- 0x0c84, 0x0c8c, 0x0c91, 0x0c96, 0x0c9b, 0x0ca6, 0x0cad, 0x0cb4,
- 0x0cbc, 0x0cc6, 0x0ccd, 0x0cd3, 0x0ce8, 0x0ce8, 0x0cf3, 0x0d02,
- 0x0d08, 0x0d12, 0x0d1e, 0x0d26, 0x0d26, 0x0d36, 0x0d3d, 0x0d3d,
- 0x0d47, 0x0d4e, 0x0d58, 0x0d61, 0x0d61, 0x0d66, 0x0d6d, 0x0d6d,
- 0x0d6d, 0x0d6d, 0x0d76, 0x0d79, 0x0d80, 0x0d85, 0x0d95, 0x0d9c,
- 0x0da1, 0x0da8, 0x0da8, 0x0daf, 0x0db4, 0x0dbc, 0x0dc4, 0x0dd2,
- 0x0de1, 0x0de7, 0x0deb, 0x0deb, 0x0df1, 0x0e01, 0x0e10, 0x0e10,
- 0x0e19, 0x0e1c, 0x0e29, 0x0e2f, 0x0e2f, 0x0e2f, 0x0e3e, 0x0e47,
- // Entry 200 - 23F
- 0x0e55, 0x0e5f, 0x0e66, 0x0e6d, 0x0e73, 0x0e78, 0x0e7c, 0x0e7c,
- 0x0e82, 0x0e87, 0x0e8d, 0x0e95, 0x0ea6, 0x0eb6, 0x0ebd, 0x0ec5,
- 0x0ec5, 0x0eca, 0x0ece, 0x0ed4, 0x0ed9, 0x0ede, 0x0ee1, 0x0eeb,
- 0x0ef2, 0x0efc, 0x0f03, 0x0f08, 0x0f0e, 0x0f13, 0x0f1c, 0x0f1c,
- 0x0f22, 0x0f22, 0x0f2b, 0x0f39, 0x0f40, 0x0f48, 0x0f4f, 0x0f57,
- 0x0f70, 0x0f76, 0x0f7f, 0x0f86, 0x0f8b, 0x0f8e, 0x0f94, 0x0f99,
- 0x0fab, 0x0fab, 0x0fb1, 0x0fb1, 0x0fb6, 0x0fbc, 0x0fc1, 0x0fc6,
- 0x0fcb, 0x0fd3, 0x0fdc, 0x0fe2, 0x0fec, 0x0ff0, 0x0ff3, 0x0ff9,
- // Entry 240 - 27F
- 0x1000, 0x1005, 0x1005, 0x100e, 0x1016, 0x1024, 0x102d, 0x1033,
- 0x104e, 0x1052, 0x106e, 0x1072, 0x1089, 0x1089, 0x109a, 0x10ab,
- 0x10bd, 0x10cd, 0x10de, 0x10ee, 0x1106, 0x1116, 0x1128, 0x1128,
- 0x1139, 0x1147, 0x1151, 0x1158, 0x116d, 0x1183, 0x1189, 0x1193,
- 0x11a5, 0x11b7,
-} // Size: 1244 bytes
-
-var csLangStr string = "" + // Size: 7315 bytes
- "afarštinaabcházštinaavestánštinaafrikánštinaakanštinaamharštinaaragonšti" +
- "naarabštinaásámštinaavarštinaajmarštinaázerbájdžánštinabaškirštinaběloru" +
- "štinabulharštinabislamštinabambarštinabengálštinatibetštinabretonštinab" +
- "osenštinakatalánštinačečenštinačamorokorsičtinakríjštinačeštinastaroslov" +
- "ěnštinačuvaštinavelštinadánštinaněmčinamaledivštinadzongkäeweštinařečti" +
- "naangličtinaesperantošpanělštinaestonštinabaskičtinaperštinafulbštinafin" +
- "štinafidžijštinafaerštinafrancouzštinafríštinairštinaskotská gaelštinag" +
- "alicijštinaguaranštinagudžarátštinamanštinahauštinahebrejštinahindštinah" +
- "iri motuchorvatštinahaitštinamaďarštinaarménštinahererštinainterlinguain" +
- "donéštinainterlingueigboštinaiština (sečuánská)inupiakštinaidoislandštin" +
- "aitalštinainuktitutštinajaponštinajavánštinagruzínštinakonžštinakikujšti" +
- "nakuaňamštinakazaštinagrónštinakhmérštinakannadštinakorejštinakanurikašm" +
- "írštinakurdštinakomijštinakornštinakyrgyzštinalatinalucemburštinagandšt" +
- "inalimburštinalingalštinalaoštinalitevštinalubu-katanžštinalotyštinamalg" +
- "aštinamaršálštinamaorštinamakedonštinamalajálamštinamongolštinamaráthšti" +
- "namalajštinamaltštinabarmštinanaurštinandebele (Zimbabwe)nepálštinandond" +
- "štinanizozemštinanorština (nynorsk)norština (bokmål)ndebele (Jižní Afri" +
- "ka)navažštinaňandžštinaokcitánštinaodžibvejštinaoromštinaurijštinaosetšt" +
- "inapaňdžábštinapálípolštinapaštštinaportugalštinakečuánštinarétorománšti" +
- "nakirundštinarumunštinaruštinakiňarwandštinasanskrtsardštinasindhštinasá" +
- "mština (severní)sangštinasinhálštinaslovenštinaslovinštinasamojštinašonš" +
- "tinasomálštinaalbánštinasrbštinasiswatštinasotština (jižní)sundštinašvéd" +
- "štinasvahilštinatamilštinatelugštinatádžičtinathajštinatigrinijštinatur" +
- "kmenštinasetswanštinatongánštinaturečtinatsongatatarštinatahitštinaujgur" +
- "štinaukrajinštinaurdštinauzbečtinavendavietnamštinavolapükvalonštinawol" +
- "ofštinaxhoštinajidišjorubštinačuangštinačínštinazuluštinaacehštinaakolšt" +
- "inaadangmeadygejštinaarabština (tuniská)afrihiliaghemainštinaakkadštinaa" +
- "labamštinaaleutštinaalbánština (Gheg)altajština (jižní)staroangličtinaan" +
- "gikaaramejštinaaraukánštinaaraonštinaarapažštinaarabština (alžírská)araw" +
- "acké jazykyarabština (marocká)arabština (egyptská)asuznaková řeč (americ" +
- "ká)asturštinakotavaawadhštinabalúčštinabalijštinabavorštinabasabamunbata" +
- "k tobaghomalabedžabembštinabatavštinabenabafutbadagštinabalúčština (zápa" +
- "dní)bhojpurštinabikolštinabinibandžarštinakomsiksikabišnuprijskomanipurš" +
- "tinabachtijárštinabradžštinabrahujštinabodoštinaakooseburjatštinabugišti" +
- "nabulublinštinamedumbacaddokaribštinakajugštinaatsamcebuánštinakigačibča" +
- "čagatajštinačukštinamarijštinačinuk pidžinčoktštinačipevajštinačerokézš" +
- "tinačejenštinakurdština (sorání)koptštinakapiznonštinaturečtina (krymská" +
- ")kašubštinadakotštinadargštinataitadelawarštinaslejvština (athabaský jaz" +
- "yk)dogribdinkštinazarmštinadogarštinadolnolužická srbštinakadazandusunšt" +
- "inadualštinaholandština (středověká)jola-fonyidjuladazagaembuefikštinaem" +
- "ilijštinaegyptština staráekajukelamitštinaangličtina (středověká)jupikšt" +
- "ina (středoaljašská)ewondoextremadurštinafangfilipínštinafinština (torne" +
- "dalská)fonštinafrancouzština (kajunská)francouzština (středověká)francou" +
- "zština (stará)franko-provensálštinafríština (severní)fríština (východní)" +
- "furlanštinagaštinagagauzštinačínština (dialekty Gan)gayogbajadaríjština " +
- "(zoroastrijská)geezkiribatštinagilačtinahornoněmčina (středověká)hornoně" +
- "mčina (stará)konkánština (Goa)góndštinagorontalogótštinagrebostarořečtin" +
- "aněmčina (Švýcarsko)wayúuštinafrafragusiigwichʼinhaidštinačínština (dial" +
- "ekty Hakka)havajštinahindština (Fidži)hiligajnonštinachetitštinahmongšti" +
- "nahornolužická srbštinačínština (dialekty Xiang)hupaibanštinaibibioiloká" +
- "nštinainguštinaingrijštinajamajská kreolštinalojbanngombamašamejudeoperš" +
- "tinajudeoarabštinajutštinakarakalpačtinakabylštinakačijštinajjukambština" +
- "kawikabardinštinakanembutyapmakondekapverdštinakenyangkorokaingangkhásíc" +
- "hotánštinakoyra chiinichovarštinazazakštinakakokalendžinkimbundštinakomi" +
- "-permjačtinakonkánštinakosrajštinakpellekaračajevo-balkarštinakriokinara" +
- "j-akarelštinakuruchštinašambalabafiakolínštinakumyčtinakutenajštinaladin" +
- "štinalangilahndštinalambštinalezginštinalingua franca novaligurštinaliv" +
- "onštinalakotštinalombardštinamongštinalozštinalúrština (severní)latgalšt" +
- "inaluba-luluaštinaluiseňolundštinaluoštinamizoštinaluhjačínština (klasic" +
- "ká)lazštinamadurštinamafamagahijštinamaithilištinamakasarštinamandingšti" +
- "namasajštinamabamokšanštinamandarmendemerumauricijská kreolštinairština " +
- "(středověká)makhuwa-meettometa’micmacminangkabaumandžuštinamanipurštinam" +
- "ohawkštinamosimarijština (západní)mundangsložené (víceřádkové) jazykykrí" +
- "kštinamirandštinamárvárštinamentavajštinamyeneerzjanštinamázandaránština" +
- "čínština (dialekty Minnan)neapolštinanamaštinadolnoněmčinanévárštinania" +
- "sniueštinaao (jazyky Nágálandu)kwasiongiemboonnogajštinanorština histori" +
- "ckánovialn’kosotština (severní)nuerštinanewarština (klasická)ňamwežština" +
- "ňankolštinaňorštinanzimaosageturečtina (osmanská)pangasinanštinapahlavš" +
- "tinapapangaupapiamentopalauštinapicardštinaněmčina (pensylvánská)němčina" +
- " (plautdietsch)staroperštinafalčtinaféničtinapiemonštinapontštinapohnpei" +
- "štinapruštinaprovensálštinakičékečuánština (chimborazo)rádžastánštinara" +
- "panujštinararotongánštinaromaňolštinarífštinaromboromštinarotumanštinaru" +
- "sínštinarovianštinaarumunštinarwasandawštinajakutštinasamarštinasamburus" +
- "asakštinasantálštinasaurášterštinangambaysangoštinasicilštinaskotštinasa" +
- "ssarštinakurdština (jižní)senecasenaserištinaselkupštinakoyraboro sennii" +
- "rština (stará)žemaitštinatachelhitšanštinaarabština (čadská)sidamoněmčin" +
- "a (slezská)selajarštinasámština (jižní)sámština (lulejská)sámština (inar" +
- "ijská)sámština (skoltská)sonikštinasogdštinasranan tongosererštinasahofr" +
- "íština (saterlandská)sukumasususumerštinakomorštinasvahilština (Kongo)s" +
- "yrština (klasická)syrštinaslezštinatuluštinatemnetesoterenotetumštinatig" +
- "rejštinativštinatokelauštinacachurštinaklingonštinatlingittalyštinatamaš" +
- "ektonžština (nyasa)tok pisinturojštinatarokotsakonštinatsimšijské jazyky" +
- "tatštinatumbukštinatuvalštinatasawaqtuvinštinatamazight (střední Maroko)" +
- "udmurtštinaugaritštinaumbundukořenvaibenátštinavepštinavlámština (západn" +
- "í)němčina (mohansko-franské dialekty)votštinavõruštinavunjoněmčina (wal" +
- "ser)wolajtštinawarajštinawaštinawarlpiričínština (dialekty Wu)kalmyčtina" +
- "mingrelštinasogštinajaoštinajapštinajangbenštinayembanheengatukantonštin" +
- "azapotéčtinabliss systémzélandštinazenagatamazight (standardní marocký)z" +
- "unijštinažádný jazykový obsahzazaarabština (moderní standardní)němčina s" +
- "tandardní (Švýcarsko)angličtina (USA)španělština (Evropa)dolnosaštinavlá" +
- "mštinaportugalština (Evropa)moldavštinasrbochorvatštinačínština (zjednod" +
- "ušená)"
-
-var csLangIdx = []uint16{ // 609 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x0017, 0x0025, 0x0033, 0x003d, 0x0048, 0x0054,
- 0x005e, 0x006a, 0x0074, 0x007f, 0x0094, 0x00a1, 0x00ae, 0x00ba,
- 0x00c6, 0x00d2, 0x00df, 0x00ea, 0x00f6, 0x0101, 0x010f, 0x011c,
- 0x0123, 0x012e, 0x0139, 0x0142, 0x0154, 0x015f, 0x0168, 0x0172,
- 0x017b, 0x0188, 0x0190, 0x0199, 0x01a2, 0x01ad, 0x01b6, 0x01c4,
- 0x01cf, 0x01da, 0x01e3, 0x01ed, 0x01f6, 0x0203, 0x020d, 0x021b,
- 0x0225, 0x022d, 0x0240, 0x024d, 0x0259, 0x0269, 0x0272, 0x027b,
- 0x0287, 0x0291, 0x029a, 0x02a7, 0x02b1, 0x02bd, 0x02c9, 0x02d4,
- // Entry 40 - 7F
- 0x02df, 0x02ec, 0x02f7, 0x0301, 0x0317, 0x0324, 0x0327, 0x0333,
- 0x033d, 0x034c, 0x0357, 0x0363, 0x0370, 0x037b, 0x0386, 0x0393,
- 0x039d, 0x03a8, 0x03b4, 0x03c0, 0x03cb, 0x03d1, 0x03df, 0x03e9,
- 0x03f4, 0x03fe, 0x040a, 0x0410, 0x041e, 0x0428, 0x0434, 0x0440,
- 0x0449, 0x0454, 0x0466, 0x0470, 0x047b, 0x0489, 0x0493, 0x04a0,
- 0x04b0, 0x04bc, 0x04c9, 0x04d4, 0x04de, 0x04e8, 0x04f2, 0x0504,
- 0x0510, 0x051b, 0x0528, 0x053b, 0x054e, 0x0566, 0x0572, 0x057f,
- 0x058d, 0x059c, 0x05a6, 0x05b0, 0x05ba, 0x05ca, 0x05d0, 0x05d9,
- // Entry 80 - BF
- 0x05e4, 0x05f2, 0x0600, 0x0611, 0x061d, 0x0628, 0x0630, 0x0640,
- 0x0647, 0x0651, 0x065c, 0x0671, 0x067b, 0x0688, 0x0694, 0x06a0,
- 0x06ab, 0x06b5, 0x06c1, 0x06cd, 0x06d6, 0x06e2, 0x06f5, 0x06ff,
- 0x070b, 0x0717, 0x0722, 0x072d, 0x073a, 0x0744, 0x0752, 0x075f,
- 0x076c, 0x0779, 0x0783, 0x0789, 0x0794, 0x079f, 0x07aa, 0x07b7,
- 0x07c0, 0x07ca, 0x07cf, 0x07dc, 0x07e4, 0x07ef, 0x07fa, 0x0803,
- 0x0809, 0x0814, 0x0820, 0x082b, 0x0835, 0x083f, 0x0849, 0x0850,
- 0x085c, 0x0871, 0x0879, 0x087e, 0x0887, 0x0892, 0x089e, 0x08a9,
- // Entry C0 - FF
- 0x08bc, 0x08d1, 0x08e1, 0x08e7, 0x08f3, 0x0901, 0x090c, 0x0919,
- 0x0931, 0x0941, 0x0956, 0x096c, 0x096f, 0x0989, 0x0994, 0x099a,
- 0x09a5, 0x09b2, 0x09bd, 0x09c8, 0x09cc, 0x09d1, 0x09db, 0x09e2,
- 0x09e8, 0x09f2, 0x09fd, 0x0a01, 0x0a06, 0x0a11, 0x0a2a, 0x0a37,
- 0x0a42, 0x0a46, 0x0a54, 0x0a57, 0x0a5e, 0x0a78, 0x0a88, 0x0a94,
- 0x0aa0, 0x0aaa, 0x0ab0, 0x0abc, 0x0ac6, 0x0aca, 0x0ad4, 0x0adb,
- 0x0ae0, 0x0aeb, 0x0af6, 0x0afb, 0x0b08, 0x0b0c, 0x0b13, 0x0b21,
- 0x0b2b, 0x0b36, 0x0b44, 0x0b4f, 0x0b5d, 0x0b6c, 0x0b78, 0x0b8d,
- // Entry 100 - 13F
- 0x0b97, 0x0ba5, 0x0bba, 0x0bc6, 0x0bd1, 0x0bdb, 0x0be0, 0x0bed,
- 0x0c0b, 0x0c11, 0x0c1b, 0x0c25, 0x0c30, 0x0c48, 0x0c5a, 0x0c64,
- 0x0c80, 0x0c8a, 0x0c8f, 0x0c95, 0x0c99, 0x0ca3, 0x0caf, 0x0cc1,
- 0x0cc7, 0x0cd3, 0x0cee, 0x0d0d, 0x0d13, 0x0d23, 0x0d27, 0x0d35,
- 0x0d4d, 0x0d56, 0x0d70, 0x0d8e, 0x0da5, 0x0dbc, 0x0dd1, 0x0de8,
- 0x0df4, 0x0dfc, 0x0e08, 0x0e22, 0x0e26, 0x0e2b, 0x0e48, 0x0e4c,
- 0x0e59, 0x0e63, 0x0e81, 0x0e98, 0x0eab, 0x0eb6, 0x0ebf, 0x0ec9,
- 0x0ece, 0x0edc, 0x0ef3, 0x0eff, 0x0f05, 0x0f0a, 0x0f13, 0x0f1d,
- // Entry 140 - 17F
- 0x0f39, 0x0f44, 0x0f57, 0x0f67, 0x0f73, 0x0f7e, 0x0f96, 0x0fb2,
- 0x0fb6, 0x0fc0, 0x0fc6, 0x0fd3, 0x0fdd, 0x0fe9, 0x0ffe, 0x1004,
- 0x100a, 0x1011, 0x101f, 0x102e, 0x1037, 0x1046, 0x1051, 0x105d,
- 0x1060, 0x106a, 0x106e, 0x107c, 0x1083, 0x1087, 0x108e, 0x109b,
- 0x10a2, 0x10a6, 0x10ae, 0x10b5, 0x10c2, 0x10ce, 0x10da, 0x10e5,
- 0x10e9, 0x10f3, 0x1100, 0x1111, 0x111e, 0x112a, 0x1130, 0x1148,
- 0x114c, 0x1155, 0x1160, 0x116c, 0x1174, 0x1179, 0x1185, 0x118f,
- 0x119c, 0x11a7, 0x11ac, 0x11b7, 0x11c1, 0x11cd, 0x11df, 0x11ea,
- // Entry 180 - 1BF
- 0x11f5, 0x1200, 0x120d, 0x1217, 0x1220, 0x1235, 0x1241, 0x1251,
- 0x1259, 0x1263, 0x126c, 0x1276, 0x127b, 0x1292, 0x129b, 0x12a6,
- 0x12aa, 0x12b7, 0x12c5, 0x12d2, 0x12df, 0x12ea, 0x12ee, 0x12fb,
- 0x1301, 0x1306, 0x130a, 0x1322, 0x133a, 0x1348, 0x134f, 0x1355,
- 0x1360, 0x136d, 0x137a, 0x1386, 0x138a, 0x13a1, 0x13a8, 0x13ca,
- 0x13d5, 0x13e1, 0x13ef, 0x13fd, 0x1402, 0x140e, 0x1420, 0x143d,
- 0x1449, 0x1453, 0x1461, 0x146e, 0x1472, 0x147c, 0x1493, 0x1499,
- 0x14a2, 0x14ad, 0x14c2, 0x14c8, 0x14ce, 0x14e2, 0x14ec, 0x1503,
- // Entry 1C0 - 1FF
- 0x1511, 0x151e, 0x1528, 0x152d, 0x1532, 0x1548, 0x1558, 0x1564,
- 0x156c, 0x1576, 0x1581, 0x158d, 0x15a7, 0x15bf, 0x15cd, 0x15d6,
- 0x15e1, 0x15ed, 0x15f7, 0x1604, 0x160d, 0x161d, 0x1623, 0x163e,
- 0x1650, 0x165d, 0x166e, 0x167c, 0x1686, 0x168b, 0x1694, 0x16a1,
- 0x16ad, 0x16b9, 0x16c5, 0x16c8, 0x16d4, 0x16df, 0x16ea, 0x16f1,
- 0x16fc, 0x1709, 0x171a, 0x1721, 0x172c, 0x1737, 0x1741, 0x174d,
- 0x1761, 0x1767, 0x176b, 0x1775, 0x1781, 0x1790, 0x17a1, 0x17ae,
- 0x17b7, 0x17c1, 0x17d6, 0x17dc, 0x17f0, 0x17fd, 0x1811, 0x1827,
- // Entry 200 - 23F
- 0x183e, 0x1854, 0x185f, 0x1869, 0x1875, 0x1880, 0x1884, 0x189e,
- 0x18a4, 0x18a8, 0x18b3, 0x18be, 0x18d2, 0x18e7, 0x18f0, 0x18fa,
- 0x1904, 0x1909, 0x190d, 0x1913, 0x191e, 0x192a, 0x1933, 0x1940,
- 0x194c, 0x1959, 0x1960, 0x196a, 0x1972, 0x1985, 0x198e, 0x1999,
- 0x199f, 0x19ab, 0x19be, 0x19c7, 0x19d3, 0x19de, 0x19e5, 0x19f0,
- 0x1a0c, 0x1a18, 0x1a24, 0x1a2b, 0x1a31, 0x1a34, 0x1a40, 0x1a49,
- 0x1a60, 0x1a86, 0x1a8f, 0x1a9a, 0x1a9f, 0x1ab1, 0x1abd, 0x1ac8,
- 0x1ad0, 0x1ad8, 0x1af1, 0x1afc, 0x1b09, 0x1b12, 0x1b1b, 0x1b24,
- // Entry 240 - 27F
- 0x1b31, 0x1b36, 0x1b3f, 0x1b4b, 0x1b58, 0x1b65, 0x1b72, 0x1b78,
- 0x1b98, 0x1ba3, 0x1bbb, 0x1bbf, 0x1be0, 0x1be0, 0x1be0, 0x1c03,
- 0x1c03, 0x1c03, 0x1c03, 0x1c14, 0x1c14, 0x1c2b, 0x1c2b, 0x1c2b,
- 0x1c2b, 0x1c2b, 0x1c38, 0x1c43, 0x1c43, 0x1c5a, 0x1c66, 0x1c77,
- 0x1c93,
-} // Size: 1242 bytes
-
-var daLangStr string = "" + // Size: 4019 bytes
- "afarabkhasiskavestanafrikaansakanamhariskaragonesiskarabiskassamesiskava" +
- "riskaymaraaserbajdsjanskbashkirhviderussiskbulgarskbislamabambarabengali" +
- "tibetanskbretonskbosniskcatalansktjetjenskchamorrokorsikanskcreetjekkisk" +
- "kirkeslaviskchuvashwalisiskdansktyskdivehidzongkhaewegræskengelskesperan" +
- "tospanskestiskbaskiskpersiskfulahfinskfijianskfærøskfranskfrisiskirsksko" +
- "tsk gæliskgaliciskguaranigujaratimanxhausahebraiskhindihirimotukroatiskh" +
- "aitiskungarskarmenskhererointerlinguaindonesiskinterlingueigbosichuan yi" +
- "inupiaqidoislandskitalienskinuktitutjapanskjavanesiskgeorgiskkongokikuyu" +
- "kuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikashmirikurdiskkomi" +
- "corniskkirgisisklatinluxembourgskgandalimburgsklingalalaolitauiskluba-Ka" +
- "tangalettiskmalagassiskmarshallesemaorimakedonskmalayalammongolskmarathi" +
- "skmalaymaltesiskburmesisknaurunordndebelenepalesiskndongahollandsknynors" +
- "knorsk bokmålsydndebelenavajonyanjaoccitanskojibwaoromooriyaossetiskpunj" +
- "abipalipolskpashtoportugisiskquechuarætoromanskrundirumænskrussiskkinyar" +
- "wandasanskritsardinsksindhinordsamisksangosingalesiskslovakiskslovensksa" +
- "moanskshonasomaliskalbanskserbiskswatisydsothosundanesisksvenskswahilita" +
- "milsktelugutajikthaitigrinyaturkmensktswanatongansktyrkisktsongatatarisk" +
- "tahitianskuyguriskukrainskurduusbekiskvendavietnamesiskvolapykvallonskwo" +
- "lofxhosajiddischyorubazhuangkinesiskzuluachinesiskacoliadangmeadygheafri" +
- "hiliaghemainuakkadiskaleutisksydaltaiskoldengelskangikaaramæiskmapuchear" +
- "apahoarawakasuasturiskawadhibaluchibalinesiskbasabamunghomalabejabembabe" +
- "nabafutvestbaluchibhojpuribikolbinikomsiksikabrajbodobakossiburiatiskbug" +
- "inesiskbulublinmedumbacaddocaribiskcayugaatsamcebuanochigachibchachagata" +
- "ichuukesemarichinookchoctawchipewyancherokeecheyennesoranikoptiskkrim ty" +
- "rkiskkasjubiskdakotadargwataitadelawareathapaskiskdogribdinkazarmadogrin" +
- "edersorbiskdualamiddelhollandskjola-fonyidyuladazagakiembuefikoldegyptis" +
- "kekajukelamitiskmiddelengelskewondofangfilippinskfonmiddelfranskoldfrans" +
- "knordfrisiskøstfrisiskfriuliangagagauziskgayogbayageezgilbertesiskmiddel" +
- "højtyskoldhøjtyskgondigorontalogotiskgrebooldgræskschweizertyskgusiigwic" +
- "hinhaidahawaiianskhiligaynonhittitiskhmongøvresorbiskhupaibanibibioiloko" +
- "ingushlojbanngombamachamejødisk-persiskjødisk-arabiskkarakalpakiskkabyli" +
- "skkachinjjukambakawikabardiankanembutyapmakondekapverdiskkorokhasikhotan" +
- "esiskkoyra-chiinikakokalenjinkimbundukomi-permjakiskkonkanikosraeankpell" +
- "ekaratjai-balkarkarelskkurukhshambalabafiakölschkymykkutenajladinolangil" +
- "ahndalambalezghianlakotamongolozinordluriluba-Lulualuisenolundaluolushai" +
- "luyanamaduresemafamagahimaithilimakasarmandingomasaimabamokshamandarmend" +
- "emerumorisyenmiddelirskmakhuwa-meettometamicmacminangkabaumanchumanipuri" +
- "mohawkmossimundangflere sprogcreekmirandesiskmarwarimyeneerzyamazeniskne" +
- "apolitansknamanedertysknewariniasniueankwasiongiemboonnogaioldislandskn-" +
- "konordsothonuerklassisk newarisknyamwezinyankolenyoro sprognzimaosageosm" +
- "annisk-tyrkiskpangasinanpahlavipampangapapiamentopalauanskoldpersiskføni" +
- "kiskponapeoldprovencalskquichérajasthanirapanuirarotonganromboromaniarum" +
- "ænskrwasandaweyakutsamaritansksamburusasaksantalingambaysangusiciliansk" +
- "skotsksydkurdisksenecasenaselkupiskkoyraboro sennioldirsktachelhitshantc" +
- "hadisk-arabisksidamosydsamisklulesamiskenaresamiskskoltesamisksoninkesog" +
- "diansksranan tongoserersahosukumasususumeriskshimaorecongolesisk swahili" +
- "klassisk syrisksyrisktemnetesoterenotetumtigretivitokelauklingontlingitt" +
- "amasheknyasa tongansktok pisintarokotsimshisktumbukatuvalutasawaqtuvinia" +
- "ncentralmarokkansk tamazightudmurtugaristiskumbundurotvaivotiskvunjowals" +
- "ertyskwalamowaraywashowalbirikalmyksogayaoyapeseyangbenyembakantonesiskz" +
- "apotecblissymbolerzenagatamazightzuniintet sprogligt indholdzazamoderne " +
- "standardarabisksydaserbajdsjanskøstrigsk tyskschweizerhøjtyskaustralsk e" +
- "ngelskcanadisk engelskbritisk engelskamerikansk engelsklatinamerikansk s" +
- "panskeuropæisk spanskmexicansk spanskcanadisk franskschweizisk franskfla" +
- "mskbrasiliansk portugisiskeuropæisk portugisiskmoldoviskserbokroatiskfor" +
- "enklet kinesisktraditionelt kinesisk"
-
-var daLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0029, 0x0034,
- 0x003b, 0x0045, 0x004c, 0x0052, 0x0060, 0x0067, 0x0073, 0x007b,
- 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00ba,
- 0x00c2, 0x00cc, 0x00d0, 0x00d8, 0x00e4, 0x00eb, 0x00f3, 0x00f8,
- 0x00fc, 0x0102, 0x010a, 0x010d, 0x0113, 0x011a, 0x0123, 0x0129,
- 0x012f, 0x0136, 0x013d, 0x0142, 0x0147, 0x014f, 0x0157, 0x015d,
- 0x0164, 0x0168, 0x0176, 0x017e, 0x0185, 0x018d, 0x0191, 0x0196,
- 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01ce,
- // Entry 40 - 7F
- 0x01d9, 0x01e3, 0x01ee, 0x01f2, 0x01fc, 0x0203, 0x0206, 0x020e,
- 0x0217, 0x0220, 0x0227, 0x0231, 0x0239, 0x023e, 0x0244, 0x024c,
- 0x0255, 0x0260, 0x0265, 0x026c, 0x0274, 0x027a, 0x0282, 0x0289,
- 0x028d, 0x0294, 0x029d, 0x02a2, 0x02ae, 0x02b3, 0x02bc, 0x02c3,
- 0x02c6, 0x02ce, 0x02da, 0x02e1, 0x02ec, 0x02f7, 0x02fc, 0x0305,
- 0x030e, 0x0316, 0x031f, 0x0324, 0x032d, 0x0336, 0x033b, 0x0346,
- 0x0350, 0x0356, 0x035f, 0x0366, 0x0373, 0x037d, 0x0383, 0x0389,
- 0x0392, 0x0398, 0x039d, 0x03a2, 0x03aa, 0x03b1, 0x03b5, 0x03ba,
- // Entry 80 - BF
- 0x03c0, 0x03cb, 0x03d2, 0x03de, 0x03e3, 0x03eb, 0x03f2, 0x03fd,
- 0x0405, 0x040d, 0x0413, 0x041d, 0x0422, 0x042d, 0x0436, 0x043e,
- 0x0446, 0x044b, 0x0453, 0x045a, 0x0461, 0x0466, 0x046e, 0x0479,
- 0x047f, 0x0486, 0x048d, 0x0493, 0x0498, 0x049c, 0x04a4, 0x04ad,
- 0x04b3, 0x04bb, 0x04c2, 0x04c8, 0x04d0, 0x04da, 0x04e2, 0x04ea,
- 0x04ee, 0x04f6, 0x04fb, 0x0507, 0x050e, 0x0516, 0x051b, 0x0520,
- 0x0528, 0x052e, 0x0534, 0x053c, 0x0540, 0x054a, 0x054f, 0x0556,
- 0x055c, 0x055c, 0x0564, 0x0569, 0x056d, 0x0575, 0x0575, 0x057d,
- // Entry C0 - FF
- 0x057d, 0x0587, 0x0591, 0x0597, 0x05a0, 0x05a7, 0x05a7, 0x05ae,
- 0x05ae, 0x05b4, 0x05b4, 0x05b4, 0x05b7, 0x05b7, 0x05bf, 0x05bf,
- 0x05c5, 0x05cc, 0x05d6, 0x05d6, 0x05da, 0x05df, 0x05df, 0x05e6,
- 0x05ea, 0x05ef, 0x05ef, 0x05f3, 0x05f8, 0x05f8, 0x0603, 0x060b,
- 0x0610, 0x0614, 0x0614, 0x0617, 0x061e, 0x061e, 0x061e, 0x0622,
- 0x0622, 0x0626, 0x062d, 0x0636, 0x0640, 0x0644, 0x0648, 0x064f,
- 0x0654, 0x065c, 0x0662, 0x0667, 0x066e, 0x0673, 0x067a, 0x0682,
- 0x068a, 0x068e, 0x0695, 0x069c, 0x06a5, 0x06ad, 0x06b5, 0x06bb,
- // Entry 100 - 13F
- 0x06c2, 0x06c2, 0x06ce, 0x06d7, 0x06dd, 0x06e3, 0x06e8, 0x06f0,
- 0x06fb, 0x0701, 0x0706, 0x070b, 0x0710, 0x071c, 0x071c, 0x0721,
- 0x0730, 0x073a, 0x073f, 0x0745, 0x074b, 0x074f, 0x074f, 0x075a,
- 0x0760, 0x0769, 0x0776, 0x0776, 0x077c, 0x077c, 0x0780, 0x078a,
- 0x078a, 0x078d, 0x078d, 0x0799, 0x07a2, 0x07a2, 0x07ad, 0x07b8,
- 0x07c0, 0x07c2, 0x07cb, 0x07cb, 0x07cf, 0x07d4, 0x07d4, 0x07d8,
- 0x07e4, 0x07e4, 0x07f2, 0x07fd, 0x07fd, 0x0802, 0x080b, 0x0811,
- 0x0816, 0x081f, 0x082c, 0x082c, 0x082c, 0x0831, 0x0838, 0x083d,
- // Entry 140 - 17F
- 0x083d, 0x0847, 0x0847, 0x0851, 0x085a, 0x085f, 0x086b, 0x086b,
- 0x086f, 0x0873, 0x0879, 0x087e, 0x0884, 0x0884, 0x0884, 0x088a,
- 0x0890, 0x0897, 0x08a6, 0x08b5, 0x08b5, 0x08c2, 0x08ca, 0x08d0,
- 0x08d3, 0x08d8, 0x08dc, 0x08e5, 0x08ec, 0x08f0, 0x08f7, 0x0901,
- 0x0901, 0x0905, 0x0905, 0x090a, 0x0915, 0x0921, 0x0921, 0x0921,
- 0x0925, 0x092d, 0x0935, 0x0944, 0x094b, 0x0953, 0x0959, 0x0968,
- 0x0968, 0x0968, 0x096f, 0x0975, 0x097d, 0x0982, 0x0989, 0x098e,
- 0x0995, 0x099b, 0x09a0, 0x09a6, 0x09ab, 0x09b3, 0x09b3, 0x09b3,
- // Entry 180 - 1BF
- 0x09b3, 0x09b9, 0x09b9, 0x09be, 0x09c2, 0x09ca, 0x09ca, 0x09d4,
- 0x09db, 0x09e0, 0x09e3, 0x09e9, 0x09ef, 0x09ef, 0x09ef, 0x09f7,
- 0x09fb, 0x0a01, 0x0a09, 0x0a10, 0x0a18, 0x0a1d, 0x0a21, 0x0a27,
- 0x0a2d, 0x0a32, 0x0a36, 0x0a3e, 0x0a48, 0x0a56, 0x0a5a, 0x0a60,
- 0x0a6b, 0x0a71, 0x0a79, 0x0a7f, 0x0a84, 0x0a84, 0x0a8b, 0x0a96,
- 0x0a9b, 0x0aa6, 0x0aad, 0x0aad, 0x0ab2, 0x0ab7, 0x0abf, 0x0abf,
- 0x0acb, 0x0acf, 0x0ad8, 0x0ade, 0x0ae2, 0x0ae8, 0x0ae8, 0x0aee,
- 0x0af7, 0x0afc, 0x0b07, 0x0b07, 0x0b0b, 0x0b14, 0x0b18, 0x0b29,
- // Entry 1C0 - 1FF
- 0x0b31, 0x0b39, 0x0b44, 0x0b49, 0x0b4e, 0x0b5f, 0x0b69, 0x0b70,
- 0x0b78, 0x0b82, 0x0b8b, 0x0b8b, 0x0b8b, 0x0b8b, 0x0b95, 0x0b95,
- 0x0b9e, 0x0b9e, 0x0b9e, 0x0ba4, 0x0ba4, 0x0bb2, 0x0bb9, 0x0bb9,
- 0x0bc3, 0x0bca, 0x0bd4, 0x0bd4, 0x0bd4, 0x0bd9, 0x0bdf, 0x0bdf,
- 0x0bdf, 0x0bdf, 0x0be8, 0x0beb, 0x0bf2, 0x0bf7, 0x0c02, 0x0c09,
- 0x0c0e, 0x0c15, 0x0c15, 0x0c1c, 0x0c21, 0x0c2b, 0x0c31, 0x0c31,
- 0x0c3b, 0x0c41, 0x0c45, 0x0c45, 0x0c4e, 0x0c5d, 0x0c64, 0x0c64,
- 0x0c6d, 0x0c71, 0x0c81, 0x0c87, 0x0c87, 0x0c87, 0x0c90, 0x0c9a,
- // Entry 200 - 23F
- 0x0ca5, 0x0cb1, 0x0cb8, 0x0cc1, 0x0ccd, 0x0cd2, 0x0cd6, 0x0cd6,
- 0x0cdc, 0x0ce0, 0x0ce8, 0x0cf0, 0x0d03, 0x0d12, 0x0d18, 0x0d18,
- 0x0d18, 0x0d1d, 0x0d21, 0x0d27, 0x0d2c, 0x0d31, 0x0d35, 0x0d3c,
- 0x0d3c, 0x0d43, 0x0d4a, 0x0d4a, 0x0d52, 0x0d60, 0x0d69, 0x0d69,
- 0x0d6f, 0x0d6f, 0x0d78, 0x0d78, 0x0d7f, 0x0d85, 0x0d8c, 0x0d94,
- 0x0daf, 0x0db5, 0x0dbf, 0x0dc6, 0x0dc9, 0x0dcc, 0x0dcc, 0x0dcc,
- 0x0dcc, 0x0dcc, 0x0dd2, 0x0dd2, 0x0dd7, 0x0de1, 0x0de7, 0x0dec,
- 0x0df1, 0x0df8, 0x0df8, 0x0dfe, 0x0dfe, 0x0e02, 0x0e05, 0x0e0b,
- // Entry 240 - 27F
- 0x0e12, 0x0e17, 0x0e17, 0x0e22, 0x0e29, 0x0e35, 0x0e35, 0x0e3b,
- 0x0e44, 0x0e48, 0x0e5f, 0x0e63, 0x0e7a, 0x0e8b, 0x0e99, 0x0eaa,
- 0x0ebb, 0x0ecb, 0x0eda, 0x0eec, 0x0f02, 0x0f13, 0x0f23, 0x0f23,
- 0x0f32, 0x0f43, 0x0f43, 0x0f49, 0x0f60, 0x0f76, 0x0f7f, 0x0f8c,
- 0x0f9e, 0x0fb3,
-} // Size: 1244 bytes
-
-var deLangStr string = "" + // Size: 6195 bytes
- "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" +
- "ischAwarischAymaraAserbaidschanischBaschkirischWeißrussischBulgarischBis" +
- "lamaBambaraBengalischTibetischBretonischBosnischKatalanischTschetschenis" +
- "chChamorro-SpracheKorsischCreeTschechischKirchenslawischTschuwaschischWa" +
- "lisischDänischDeutschMaledivischDzongkhaEweGriechischEnglischEsperantoSp" +
- "anischEstnischBaskischPersischFulFinnischFidschiFäröischFranzösischWestf" +
- "riesischIrischSchottisches GälischGalizischGuaraniGujaratiManxHaussaHebr" +
- "äischHindiHiri-MotuKroatischHaiti-KreolischUngarischArmenischHerero-Spr" +
- "acheInterlinguaIndonesischInterlingueIgboYiInupiakIdo-SpracheIsländischI" +
- "talienischInuktitutJapanischJavanischGeorgischKongolesischKikuyuKwanyama" +
- "KasachischGrönländischKhmerKannadaKoreanischKanuri-SpracheKaschmiriKurdi" +
- "schKomi-SpracheKornischKirgisischLateinLuxemburgischGandaLimburgischLing" +
- "alaLaotischLitauischLuba-KatangaLettischMadagassischMarschallesischMaori" +
- "MazedonischMalayalamMongolischMarathiMalaiischMaltesischBirmanischNaurui" +
- "schNord-NdebeleNepalesischNdongaNiederländischNorwegisch NynorskNorwegis" +
- "ch BokmålSüd-Ndebele-SpracheNavajoNyanja-SpracheOkzitanischOjibwa-Sprach" +
- "eOromoOriyaOssetischPunjabiPaliPolnischPaschtuPortugiesischQuechuaRätoro" +
- "manischRundiRumänischRussischKinyarwandaSanskritSardischSindhiNordsamisc" +
- "hSangoSinghalesischSlowakischSlowenischSamoanischShonaSomaliAlbanischSer" +
- "bischSwaziSüd-Sotho-SpracheSundanesischSchwedischSuaheliTamilTeluguTadsc" +
- "hikischThailändischTigrinyaTurkmenischTswana-SpracheTongaischTürkischTso" +
- "ngaTatarischTahitischUigurischUkrainischUrduUsbekischVenda-SpracheVietna" +
- "mesischVolapükWallonischWolofXhosaJiddischYorubaZhuangChinesischZuluAceh" +
- "-SpracheAcholi-SpracheAdangmeAdygeischTunesisches ArabischAfrihiliAghemA" +
- "inu-SpracheAkkadischAlabamaAleutischGegischSüd-AltaischAltenglischAngika" +
- "AramäischMapudungunAraonaArapaho-SpracheAlgerisches ArabischArawak-Sprac" +
- "heMarokkanisches ArabischÄgyptisches ArabischPareAmerikanische Gebärdens" +
- "pracheAsturianischKotavaAwadhiBelutschischBalinesischBairischBasaa-Sprac" +
- "heBamunBatak TobaGhomalaBedauyeBembaBetawiBenaBafutBadagaWestliches Belu" +
- "tschiBhodschpuriBikol-SpracheBini-SpracheBanjaresischKomBlackfoot-Sprach" +
- "eBishnupriyaBachtiarischBraj-BhakhaBrahuiBodoAkooseBurjatischBuginesisch" +
- "BuluBlinMedumbaCaddoKaribischCayugaAtsamCebuanoRukigaChibcha-SpracheTsch" +
- "agataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheyenn" +
- "eZentralkurdischKoptischCapiznonKrimtatarischKaschubischDakota-SpracheDa" +
- "rginischTaitaDelaware-SpracheSlaveDogribDinka-SpracheZarmaDogriNiedersor" +
- "bischZentral-DusunDualaMittelniederländischDiolaDyula-SpracheDazagaEmbuE" +
- "fikEmilianischÄgyptischEkajukElamischMittelenglischZentral-Alaska-YupikE" +
- "wondoExtremadurischPangwe-SpracheFilipinoMeänkieliFon-SpracheCajunMittel" +
- "französischAltfranzösischFrankoprovenzalischNordfriesischOstfriesischFri" +
- "ulischGa-SpracheGagausischGanGayoGbaya-SpracheGabriGeezGilbertesischGila" +
- "kiMittelhochdeutschAlthochdeutschGoa-KonkaniGondi-SpracheMongondouGotisc" +
- "hGrebo-SpracheAltgriechischSchweizerdeutschWayúuFarefareGusiiKutchin-Spr" +
- "acheHaida-SpracheHakkaHawaiischFidschi-HindiHiligaynon-SpracheHethitisch" +
- "Miao-SpracheObersorbischXiangHupaIbanIbibioIlokano-SpracheInguschischIsc" +
- "horischJamaikanisch-kreolische SpracheLojbanNgombaMachameJüdisch-Persisc" +
- "hJüdisch-ArabischJütischKarakalpakischKabylischKachin-SpracheJjuKambaKaw" +
- "iKabardinischKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasi-Spra" +
- "cheSakischKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbundu-SpracheKomi-Pe" +
- "rmjakischKonkaniKosraeanischKpelle-SpracheKaratschaiisch-BalkarischKrioK" +
- "inaray-aKarelischOraon-SpracheShambalaBafiaKölschKumükischKutenai-Sprach" +
- "eLadinoLangiLahndaLamba-SpracheLesgischLingua Franca NovaLigurischLivisc" +
- "hLakotaLombardischMongoRotse-SpracheNördliches LuriLettgallischLuba-Lulu" +
- "aLuiseno-SpracheLunda-SpracheLuo-SpracheLushai-SpracheLuhyaKlassisches C" +
- "hinesischLasischMaduresischMafaKhottaMaithiliMakassarischManding-Sprache" +
- "MassaiMabaMokshaMandaresischMende-SpracheMeruMorisyenMittelirischMakhuwa" +
- "-MeettoMeta’Micmac-SpracheMinangkabau-SpracheMandschurischMeithei-Sprach" +
- "eMohawkMossi-SpracheBergmariMundangMehrsprachigMuskogee-SpracheMirandesi" +
- "schMarwariMentawaiMyeneErsja-MordwinischMasanderanischMin NanNeapolitani" +
- "schNamaNiederdeutschNewariNias-SpracheNiue-SpracheAo-NagaKwasioNgiemboon" +
- "NogaiAltnordischNovialN’KoNord-Sotho-SpracheNuerAlt-NewariNyamwezi-Sprac" +
- "heNyankoleNyoroNzimaOsage-SpracheOsmanischPangasinan-SpracheMittelpersis" +
- "chPampanggan-SprachePapiamentoPalauPicardischPennsylvaniadeutschPlautdie" +
- "tschAltpersischPfälzischPhönikischPiemontesischPontischPonapeanischAltpr" +
- "eußischAltprovenzalischK’iche’Chimborazo Hochland-QuechuaRajasthaniOster" +
- "insel-SpracheRarotonganischRomagnolTarifitRomboRomaniRotumanischRussinis" +
- "chRovianaAromunischRwaSandawe-SpracheJakutischSamaritanischSamburuSasakS" +
- "antaliSaurashtraNgambaySanguSizilianischSchottischSassarischSüdkurdischS" +
- "enecaSenaSeriSelkupischKoyra SenniAltirischSamogitischTaschelhitSchan-Sp" +
- "racheTschadisch-ArabischSidamoSchlesischSelayarSüdsamischLule-SamischIna" +
- "ri-SamischSkolt-SamischSoninke-SpracheSogdischSrananischSerer-SpracheSah" +
- "oSaterfriesischSukuma-SpracheSusuSumerischKomorischKongo-SuaheliAltsyris" +
- "chSyrischSchlesisch (Polen)TuluTemneTesoTereno-SpracheTetum-SpracheTigre" +
- "Tiv-SpracheTokelauanischTsachurischKlingonischTlingit-SpracheTalischTama" +
- "seqTsonga-SpracheNeumelanesischTuroyoTarokoTsakonischTsimshian-SpracheTa" +
- "tischTumbuka-SpracheElliceanischTasawaqTuwinischZentralatlas-TamazightUd" +
- "murtischUgaritischMbundu-SpracheRootVaiVenetischWepsischWestflämischMain" +
- "fränkischWotischVõroVunjoWalser-DialekteWalamo-SpracheWarayWasho-Sprache" +
- "WarlpiriWuKalmückischMingrelischSogaYao-SpracheYapesischYangbenYembaNhee" +
- "ngatuKantonesischZapotekischBliss-SymboleSeeländischZenagaTamazightZuni-" +
- "SpracheKeine SprachinhalteZazaModernes HocharabischÖsterreichisches Deut" +
- "schSchweizer HochdeutschAustralisches EnglischKanadisches EnglischBritis" +
- "ches EnglischAmerikanisches EnglischLateinamerikanisches SpanischEuropäi" +
- "sches SpanischMexikanisches SpanischKanadisches FranzösischSchweizer Fra" +
- "nzösischNiedersächsischFlämischBrasilianisches PortugiesischEuropäisches" +
- " PortugiesischMoldauischSerbo-KroatischChinesisch (vereinfacht)Chinesisc" +
- "h (traditionell)"
-
-var deLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
- 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008e,
- 0x0095, 0x009c, 0x00a6, 0x00af, 0x00b9, 0x00c1, 0x00cc, 0x00db,
- 0x00eb, 0x00f3, 0x00f7, 0x0102, 0x0111, 0x011f, 0x0128, 0x0130,
- 0x0137, 0x0142, 0x014a, 0x014d, 0x0157, 0x015f, 0x0168, 0x0170,
- 0x0178, 0x0180, 0x0188, 0x018b, 0x0193, 0x019a, 0x01a4, 0x01b0,
- 0x01bd, 0x01c3, 0x01d8, 0x01e1, 0x01e8, 0x01f0, 0x01f4, 0x01fa,
- 0x0204, 0x0209, 0x0212, 0x021b, 0x022a, 0x0233, 0x023c, 0x024a,
- // Entry 40 - 7F
- 0x0255, 0x0260, 0x026b, 0x026f, 0x0271, 0x0278, 0x0283, 0x028e,
- 0x0299, 0x02a2, 0x02ab, 0x02b4, 0x02bd, 0x02c9, 0x02cf, 0x02d7,
- 0x02e1, 0x02ef, 0x02f4, 0x02fb, 0x0305, 0x0313, 0x031c, 0x0324,
- 0x0330, 0x0338, 0x0342, 0x0348, 0x0355, 0x035a, 0x0365, 0x036c,
- 0x0374, 0x037d, 0x0389, 0x0391, 0x039d, 0x03ac, 0x03b1, 0x03bc,
- 0x03c5, 0x03cf, 0x03d6, 0x03df, 0x03e9, 0x03f3, 0x03fc, 0x0408,
- 0x0413, 0x0419, 0x0428, 0x043a, 0x044c, 0x0460, 0x0466, 0x0474,
- 0x047f, 0x048d, 0x0492, 0x0497, 0x04a0, 0x04a7, 0x04ab, 0x04b3,
- // Entry 80 - BF
- 0x04ba, 0x04c7, 0x04ce, 0x04dc, 0x04e1, 0x04eb, 0x04f3, 0x04fe,
- 0x0506, 0x050e, 0x0514, 0x051f, 0x0524, 0x0531, 0x053b, 0x0545,
- 0x054f, 0x0554, 0x055a, 0x0563, 0x056b, 0x0570, 0x0582, 0x058e,
- 0x0598, 0x059f, 0x05a4, 0x05aa, 0x05b6, 0x05c3, 0x05cb, 0x05d6,
- 0x05e4, 0x05ed, 0x05f6, 0x05fc, 0x0605, 0x060e, 0x0617, 0x0621,
- 0x0625, 0x062e, 0x063b, 0x0648, 0x0650, 0x065a, 0x065f, 0x0664,
- 0x066c, 0x0672, 0x0678, 0x0682, 0x0686, 0x0692, 0x06a0, 0x06a7,
- 0x06b0, 0x06c4, 0x06cc, 0x06d1, 0x06dd, 0x06e6, 0x06ed, 0x06f6,
- // Entry C0 - FF
- 0x06fd, 0x070a, 0x0715, 0x071b, 0x0725, 0x072f, 0x0735, 0x0744,
- 0x0758, 0x0766, 0x077d, 0x0792, 0x0796, 0x07b4, 0x07c0, 0x07c6,
- 0x07cc, 0x07d8, 0x07e3, 0x07eb, 0x07f8, 0x07fd, 0x0807, 0x080e,
- 0x0815, 0x081a, 0x0820, 0x0824, 0x0829, 0x082f, 0x0843, 0x084e,
- 0x085b, 0x0867, 0x0873, 0x0876, 0x0887, 0x0892, 0x089e, 0x08a9,
- 0x08af, 0x08b3, 0x08b9, 0x08c3, 0x08ce, 0x08d2, 0x08d6, 0x08dd,
- 0x08e2, 0x08eb, 0x08f1, 0x08f6, 0x08fd, 0x0903, 0x0912, 0x091f,
- 0x0929, 0x0938, 0x093f, 0x0946, 0x094f, 0x0957, 0x095f, 0x096e,
- // Entry 100 - 13F
- 0x0976, 0x097e, 0x098b, 0x0996, 0x09a4, 0x09ae, 0x09b3, 0x09c3,
- 0x09c8, 0x09ce, 0x09db, 0x09e0, 0x09e5, 0x09f3, 0x0a00, 0x0a05,
- 0x0a1a, 0x0a1f, 0x0a2c, 0x0a32, 0x0a36, 0x0a3a, 0x0a45, 0x0a4f,
- 0x0a55, 0x0a5d, 0x0a6b, 0x0a7f, 0x0a85, 0x0a93, 0x0aa1, 0x0aa9,
- 0x0ab3, 0x0abe, 0x0ac3, 0x0ad5, 0x0ae4, 0x0af7, 0x0b04, 0x0b10,
- 0x0b19, 0x0b23, 0x0b2d, 0x0b30, 0x0b34, 0x0b41, 0x0b46, 0x0b4a,
- 0x0b57, 0x0b5d, 0x0b6e, 0x0b7c, 0x0b87, 0x0b94, 0x0b9d, 0x0ba4,
- 0x0bb1, 0x0bbe, 0x0bce, 0x0bd4, 0x0bdc, 0x0be1, 0x0bf0, 0x0bfd,
- // Entry 140 - 17F
- 0x0c02, 0x0c0b, 0x0c18, 0x0c2a, 0x0c34, 0x0c40, 0x0c4c, 0x0c51,
- 0x0c55, 0x0c59, 0x0c5f, 0x0c6e, 0x0c79, 0x0c83, 0x0ca2, 0x0ca8,
- 0x0cae, 0x0cb5, 0x0cc6, 0x0cd7, 0x0cdf, 0x0ced, 0x0cf6, 0x0d04,
- 0x0d07, 0x0d0c, 0x0d10, 0x0d1c, 0x0d23, 0x0d27, 0x0d2e, 0x0d3a,
- 0x0d41, 0x0d45, 0x0d4d, 0x0d5a, 0x0d61, 0x0d6d, 0x0d73, 0x0d7c,
- 0x0d80, 0x0d88, 0x0d98, 0x0da8, 0x0daf, 0x0dbb, 0x0dc9, 0x0de2,
- 0x0de6, 0x0def, 0x0df8, 0x0e05, 0x0e0d, 0x0e12, 0x0e19, 0x0e23,
- 0x0e32, 0x0e38, 0x0e3d, 0x0e43, 0x0e50, 0x0e58, 0x0e6a, 0x0e73,
- // Entry 180 - 1BF
- 0x0e7a, 0x0e80, 0x0e8b, 0x0e90, 0x0e9d, 0x0ead, 0x0eb9, 0x0ec3,
- 0x0ed2, 0x0edf, 0x0eea, 0x0ef8, 0x0efd, 0x0f13, 0x0f1a, 0x0f25,
- 0x0f29, 0x0f2f, 0x0f37, 0x0f43, 0x0f52, 0x0f58, 0x0f5c, 0x0f62,
- 0x0f6e, 0x0f7b, 0x0f7f, 0x0f87, 0x0f93, 0x0fa1, 0x0fa8, 0x0fb6,
- 0x0fc9, 0x0fd6, 0x0fe5, 0x0feb, 0x0ff8, 0x1000, 0x1007, 0x1013,
- 0x1023, 0x102f, 0x1036, 0x103e, 0x1043, 0x1054, 0x1062, 0x1069,
- 0x1077, 0x107b, 0x1088, 0x108e, 0x109a, 0x10a6, 0x10ad, 0x10b3,
- 0x10bc, 0x10c1, 0x10cc, 0x10d2, 0x10d8, 0x10ea, 0x10ee, 0x10f8,
- // Entry 1C0 - 1FF
- 0x1108, 0x1110, 0x1115, 0x111a, 0x1127, 0x1130, 0x1142, 0x1150,
- 0x1162, 0x116c, 0x1171, 0x117b, 0x118e, 0x119a, 0x11a5, 0x11af,
- 0x11ba, 0x11c7, 0x11cf, 0x11db, 0x11e8, 0x11f8, 0x1203, 0x121e,
- 0x1228, 0x123a, 0x1248, 0x1250, 0x1257, 0x125c, 0x1262, 0x126d,
- 0x1277, 0x127e, 0x1288, 0x128b, 0x129a, 0x12a3, 0x12b0, 0x12b7,
- 0x12bc, 0x12c3, 0x12cd, 0x12d4, 0x12d9, 0x12e5, 0x12ef, 0x12f9,
- 0x1305, 0x130b, 0x130f, 0x1313, 0x131d, 0x1328, 0x1331, 0x133c,
- 0x1346, 0x1353, 0x1366, 0x136c, 0x1376, 0x137d, 0x1388, 0x1394,
- // Entry 200 - 23F
- 0x13a1, 0x13ae, 0x13bd, 0x13c5, 0x13cf, 0x13dc, 0x13e0, 0x13ee,
- 0x13fc, 0x1400, 0x1409, 0x1412, 0x141f, 0x1429, 0x1430, 0x1442,
- 0x1446, 0x144b, 0x144f, 0x145d, 0x146a, 0x146f, 0x147a, 0x1487,
- 0x1492, 0x149d, 0x14ac, 0x14b3, 0x14ba, 0x14c8, 0x14d6, 0x14dc,
- 0x14e2, 0x14ec, 0x14fd, 0x1504, 0x1513, 0x151f, 0x1526, 0x152f,
- 0x1545, 0x154f, 0x1559, 0x1567, 0x156b, 0x156e, 0x1577, 0x157f,
- 0x158c, 0x159a, 0x15a1, 0x15a6, 0x15ab, 0x15ba, 0x15c8, 0x15cd,
- 0x15da, 0x15e2, 0x15e4, 0x15f0, 0x15fb, 0x15ff, 0x160a, 0x1613,
- // Entry 240 - 27F
- 0x161a, 0x161f, 0x1628, 0x1634, 0x163f, 0x164c, 0x1658, 0x165e,
- 0x1667, 0x1673, 0x1686, 0x168a, 0x169f, 0x169f, 0x16b8, 0x16cd,
- 0x16e3, 0x16f7, 0x170a, 0x1721, 0x173e, 0x1754, 0x176a, 0x176a,
- 0x1782, 0x1798, 0x17a8, 0x17b1, 0x17ce, 0x17e9, 0x17f3, 0x1802,
- 0x181a, 0x1833,
-} // Size: 1244 bytes
-
-var elLangStr string = "" + // Size: 8953 bytes
- "ΑφάρΑμπχαζικάΑβεστάνΑφρικάανςΑκάνΑμαρικάΑραγκονικάΑραβικάΑσαμεζικάΆβαρικ" +
- "ΑϊμάραΑζερμπαϊτζανικάΜπασκίρΛευκορωσικάΒουλγαρικάΜπισλάμαΜπαμπάραΜπενγκ" +
- "άλιΘιβετιανάΒρετονικάΒοσνιακάΚαταλανικάΤσετσενικάΚαμόρροΚορσικανικάΚριΤ" +
- "σεχικάΕκκλησιαστικά ΣλαβικάΤσουβασικάΟυαλικάΔανικάΓερμανικάΝτιβέχιΝτζόν" +
- "γκχαΓιΕλληνικάΑγγλικάΕσπεράντοΙσπανικάΕσθονικάΒασκικάΠερσικάΦουλάχΦινλα" +
- "νδικάΦίτζιΦαρόεΓαλλικάΔυτικά ΦριζιανάΙρλανδικάΣκωτικά ΚελτικάΓαλικιανάΓ" +
- "κουαρανίΓκουγιαράτιΜανξΧάουσαΕβραϊκάΧίντιΧίρι ΜότουΚροατικάΑϊτιανάΟυγγρ" +
- "ικάΑρμενικάΧερέροΙντερλίνγκουαΙνδονησιακάΙντερλίνγκουεΊγκμποΣικουάν ΓιΙ" +
- "νουπιάκΊντοΙσλανδικάΙταλικάΙνουκτιτούτΙαπωνικάΙαβανεζικάΓεωργιανάΚονγκό" +
- "ΚικούγιουΚουανιγιάμαΚαζακικάΚαλαάλισουτΚαμποτζιανάΚανάνταΚορεατικάΚανού" +
- "ριΚασμίριΚουρδικάΚόμιΚόρνιςΚυργιζικάΛατινικάΛουξεμβουργιανάΓκάνταΛιμβου" +
- "ργιανάΛινγκάλαΛαοθιανάΛιθουανικάΛούμπα-ΚατάνγκαΛετονικάΜαλαγάσιΜάρσαλΜά" +
- "οριΣλαβομακεδονικάΜαλαγιαλάμΜογγολικάΜαράθιΜαλάιΜαλτεζικάΒιρμανικάΝαούρ" +
- "ουΝτεμπέλε ΒορράΝεπάλιΝτόνγκαΟλλανδικάΝορβηγικά ΝινόρσκΝορβηγικά Μποκμά" +
- "λΝτεμπέλε ΝότουΝάβαχοΝιάντζαΟκσιτανικάΟζιβίγουαΟρόμοΟρίγιαΟσετικάΠαντζα" +
- "πικάΠάλιΠολωνικάΠάστοΠορτογαλικάΚετσούαΡομανικάΡούντιΡουμανικάΡωσικάΚιν" +
- "ιαρβάνταΣανσκριτικάΣαρδινικάΣίντιΒόρεια ΣάμιΣάνγκοΣινχαλεζικάΣλοβακικάΣ" +
- "λοβενικάΣαμόανΣχόναΣομάλιΑλβανικάΣερβικάΣουάτιΝότια ΣόθοΣουνδανικάΣουηδ" +
- "ικάΣουαχίλιΤαμίλΤελούγκουΤατζίκΤαϊλανδικάΤιγκρίνυαΤουρκμενικάΤσιγουάναΤ" +
- "ονγκανικάΤουρκικάΤσόνγκαΤατάρΤαϊτιανάΟυιγουρικάΟυκρανικάΟυρντούΟυζμπεκι" +
- "κάΒένδαΒιετναμικάΒόλαπικΓουαλούνΓουόλοφΖόσαΓίντιςΓιορούμπαΖουάνγκΚινεζι" +
- "κάΖουλούΑχινίζΑκολίΑντάνγκμεΑντιγκέαΑφριχίλιΑγκέμΑϊνούΑκάντιανΑλούτΝότι" +
- "α ΑλαταϊκάΠαλαιά ΑγγλικάΑνγκικάΑραμαϊκάΑρουκάνιανΑράπαχοΑραγουάκΆσουΑστ" +
- "ουριανάΑγουαντίΜπαλούτσιΜπαλινίζΜπάσαΜπαμούνΓκομάλαΜπέζαΜπέμπαΜπέναΜπαφ" +
- "ούτΔυτικά ΜπαλοχικάΜποζπούριΜπικόλΜπίνιΚομΣικσίκαΜπρατζΜπόντοΑκόσιΜπουρ" +
- "ιάτΜπουγκίζΜπουλούΜπλινΜεντούμπαΚάντοΚαρίμπΚαγιούγκαΑτσάμΚεμπουάνοΤσίγκ" +
- "αΤσίμπτσαΤσαγκατάιΤσουκίζιΜάριΙδιωματικά ΣινούκΤσοκτάουΤσίπιουανΤσερόκι" +
- "ΣεγιένΚουρδικά ΣοράνιΚοπτικάΤουρκικά ΚριμαίαςΚασούμπιανΝτακόταΝτάργκουα" +
- "ΤάιταΝτέλαγουερΣλαβικάΝτόγκριμπΝτίνκαΖάρμαΝτόγκριΓλώσσα Κάτω ΛουσατίαςΝ" +
- "τουάλαΜέσα ΟλλανδικάΤζόλα-ΦόνιΝτογιούλαΝταζάγκαΈμπουΕφίκΑρχαία Αιγυπτια" +
- "κάΕκατζούκΕλαμάιτΜέσα ΑγγλικάΕγουόντοΦανγκΦιλιππινεζικάΦονΜέσα ΓαλλικάΠ" +
- "αλαιά ΓαλλικάΒόρεια ΦριζιανάΑνατολικά ΦριζιανάΦριούλιανΓκαΓκαγκάουζΓκάγ" +
- "ιοΓκμπάγιαΓκιζΓκιλμπερτίζΜέσα Άνω ΓερμανικάΠαλαιά Άνω ΓερμανικάΓκόντιΓκ" +
- "οροντάλοΓοτθικάΓκρίμποΑρχαία ΕλληνικάΓερμανικά ΕλβετίαςΓκούσιΓκουίτσινΧ" +
- "άινταΧαβανεζικάΧιλιγκαγιόνΧιτίτεΧμονγκΓλώσσα Άνω ΛουσατίαςΧούπαΙμπάνΙμπ" +
- "ίμπιοΙλόκοΙνγκούςΛόζμπανΝγκόμπαΜάχαμεΙουδαϊκά-ΠερσικάΙουδαϊκά-ΑραβικάΚά" +
- "ρα-ΚαλπάκΚαμπίλεΚατσίνΤζουΚάμπαΚάουιΚαμπαρντιανάΚανέμπουΤουάπΜακόντεΓλώ" +
- "σσα του Πράσινου ΑκρωτηρίουΚόροΚάσιΚοτανικάΚόιρα ΤσίνιΚάκοΚαλεντζίνΚιμπ" +
- "ούντουΚόμι-ΠερμιάκΚονκάνιΚοσραενικάΚπέλεΚαρατσάι-ΜπαλκάρΚαρελιακάΚουρού" +
- "χΣάμπαλαΜπάφιαΚολωνικάΚουμγιούκΚουτενάιΛαδίνοΛάνγκιΛάχδαΛάμπαΛαζγκιάνΛα" +
- "κόταΜόνγκοΛόζιΒόρεια ΛούριΛούμπα-ΛουλούαΛουισένοΛούνταΛούοΛουσάιΛουχίαΜ" +
- "αντουρίζΜάφαΜαγκάχιΜαϊτχίλιΜακαζάρΜαντίνγκοΜασάιΜάμπαΜόκσαΜανδάρΜέντεΜε" +
- "ρούΜορίσιενΜέσα ΙρλανδικάΜακούβα-ΜέτοΜετάΜικμάκΜινανγκαμπάουΜαντσούΜανι" +
- "πούριΜοχόκΜόσιΜουντάνγκΠολλαπλές γλώσσεςΚρικΜιραντεζικάΜαργουάριΜιένεΈρ" +
- "ζυαΜαζαντεράνιΝαπολιτανικάΝάμαΚάτω ΓερμανικάΝεγουάριΝίαςΝιούεανΚβάσιοΝγ" +
- "κιεμπούνΝογκάιΠαλαιά ΝορβηγικάΝ’ΚοΒόρεια ΣόθοΝουέρΚλασικά ΝεουάριΝιαμγο" +
- "υέζιΝιανκόλεΝιόροΝζίμαΟσάζΟθωμανικά ΤουρκικάΠανγκασινάνΠαχλάβιΠαμπάνγκα" +
- "ΠαπιαμέντοΠαλάουανΑρχαία ΠερσικάΦοινικικάΠοχπέιανΠαλαιά ΠροβενσιάλΚισέΡ" +
- "αζασθάνιΡαπανούιΡαροτονγκάνΡόμποΡομανίΑρομανικάΡουάΣαντάγουεΓιακούτΣαμα" +
- "ρίτικα ΑραμαϊκάΣαμπούρουΣασάκΣαντάλιΝγκαμπέιΣάνγκουΣικελιανάΣκωτικάΝότι" +
- "α ΚουρδικάΣένεκαΣέναΣελκούπΚοϊραμπόρο ΣένιΠαλαιά ΙρλανδικάΤασελχίτΣανΑρ" +
- "αβικά του ΤσαντΣιντάμοΝότια ΣάμιΛούλε ΣάμιΙνάρι ΣάμιΣκολτ ΣάμιΣονίνκεΣο" +
- "γκντιένΣρανάρ ΤόνγκοΣερέρΣάχοΣουκούμαΣούσουΣουμερικάΚομόρριαΚονγκό Σουα" +
- "χίλιΚλασικά ΣυριακάΣυριακάΤίμνεΤέσοΤερένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκο" +
- "νΤλίνγκιτΤαμασέκΝιάσα ΤόνγκαΤοκ ΠισίνΤαρόκοΤσίμσιανΤουμπούκαΤουβαλούΤασ" +
- "αβάκΤουβίνιανΤαμαζίτ Κεντρικού ΜαρόκοΟυντμούρτΟυγκαρίτικΟυμπούντουΡουτΒ" +
- "άιΒότικΒούντζοΒάλσερΓουάλαμοΓουάρειΓουασόΓουαρλπίριΚαλμίκΣόγκαΓιάοΓιαπί" +
- "ζΓιανγκμπένΓιέμπαΚαντονέζικαΖάποτεκΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ" +
- " ΜαρόκουΖούνιΧωρίς γλωσσολογικό περιεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓε" +
- "ρμανικά ΑυστρίαςΆνω Γερμανικά ΕλβετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑ" +
- "γγλικά Ηνωμένου ΒασιλείουΑγγλικά ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπ" +
- "ανικά ΕυρώπηςΙσπανικά ΜεξικούΓαλλικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανι" +
- "κά ΟλλανδίαςΦλαμανδικάΠορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικά" +
- "ΣερβοκροατικάΑπλοποιημένα ΚινεζικάΠαραδοσιακά Κινεζικά"
-
-var elLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0008, 0x001a, 0x0028, 0x003a, 0x0042, 0x0050, 0x0064,
- 0x0072, 0x0084, 0x0090, 0x009c, 0x00ba, 0x00c8, 0x00de, 0x00f2,
- 0x0102, 0x0112, 0x0124, 0x0136, 0x0148, 0x0158, 0x016c, 0x0180,
- 0x018e, 0x01a4, 0x01aa, 0x01b8, 0x01e1, 0x01f5, 0x0203, 0x020f,
- 0x0221, 0x022f, 0x0241, 0x0245, 0x0255, 0x0263, 0x0275, 0x0285,
- 0x0295, 0x02a3, 0x02b1, 0x02bd, 0x02d1, 0x02db, 0x02e5, 0x02f3,
- 0x0310, 0x0322, 0x033f, 0x0351, 0x0363, 0x0379, 0x0381, 0x038d,
- 0x039b, 0x03a5, 0x03b8, 0x03c8, 0x03d6, 0x03e6, 0x03f6, 0x0402,
- // Entry 40 - 7F
- 0x041c, 0x0432, 0x044c, 0x0458, 0x046b, 0x047b, 0x0483, 0x0495,
- 0x04a3, 0x04b9, 0x04c9, 0x04dd, 0x04ef, 0x04fb, 0x050d, 0x0523,
- 0x0533, 0x0549, 0x055f, 0x056d, 0x057f, 0x058d, 0x059b, 0x05ab,
- 0x05b3, 0x05bf, 0x05d1, 0x05e1, 0x05ff, 0x060b, 0x0623, 0x0633,
- 0x0643, 0x0657, 0x0674, 0x0684, 0x0694, 0x06a0, 0x06aa, 0x06c8,
- 0x06dc, 0x06ee, 0x06fa, 0x0704, 0x0716, 0x0728, 0x0736, 0x0751,
- 0x075d, 0x076b, 0x077d, 0x079e, 0x07bf, 0x07da, 0x07e6, 0x07f4,
- 0x0808, 0x081a, 0x0824, 0x0830, 0x083e, 0x0852, 0x085a, 0x086a,
- // Entry 80 - BF
- 0x0874, 0x088a, 0x0898, 0x08a8, 0x08b4, 0x08c6, 0x08d2, 0x08e8,
- 0x08fe, 0x0910, 0x091a, 0x092f, 0x093b, 0x0951, 0x0963, 0x0975,
- 0x0981, 0x098b, 0x0997, 0x09a7, 0x09b5, 0x09c1, 0x09d4, 0x09e8,
- 0x09f8, 0x0a08, 0x0a12, 0x0a24, 0x0a30, 0x0a44, 0x0a56, 0x0a6c,
- 0x0a7e, 0x0a92, 0x0aa2, 0x0ab0, 0x0aba, 0x0aca, 0x0ade, 0x0af0,
- 0x0afe, 0x0b12, 0x0b1c, 0x0b30, 0x0b3e, 0x0b4e, 0x0b5c, 0x0b64,
- 0x0b70, 0x0b82, 0x0b90, 0x0ba0, 0x0bac, 0x0bb8, 0x0bc2, 0x0bd4,
- 0x0be4, 0x0be4, 0x0bf4, 0x0bfe, 0x0c08, 0x0c18, 0x0c18, 0x0c22,
- // Entry C0 - FF
- 0x0c22, 0x0c3d, 0x0c58, 0x0c66, 0x0c76, 0x0c8a, 0x0c8a, 0x0c98,
- 0x0c98, 0x0ca8, 0x0ca8, 0x0ca8, 0x0cb0, 0x0cb0, 0x0cc4, 0x0cc4,
- 0x0cd4, 0x0ce6, 0x0cf6, 0x0cf6, 0x0d00, 0x0d0e, 0x0d0e, 0x0d1c,
- 0x0d26, 0x0d32, 0x0d32, 0x0d3c, 0x0d4a, 0x0d4a, 0x0d69, 0x0d7b,
- 0x0d87, 0x0d91, 0x0d91, 0x0d97, 0x0da5, 0x0da5, 0x0da5, 0x0db1,
- 0x0db1, 0x0dbd, 0x0dc7, 0x0dd7, 0x0de7, 0x0df5, 0x0dff, 0x0e11,
- 0x0e1b, 0x0e27, 0x0e39, 0x0e43, 0x0e55, 0x0e61, 0x0e71, 0x0e83,
- 0x0e93, 0x0e9b, 0x0ebc, 0x0ecc, 0x0ede, 0x0eec, 0x0ef8, 0x0f15,
- // Entry 100 - 13F
- 0x0f23, 0x0f23, 0x0f44, 0x0f58, 0x0f66, 0x0f78, 0x0f82, 0x0f96,
- 0x0fa4, 0x0fb6, 0x0fc2, 0x0fcc, 0x0fda, 0x1002, 0x1002, 0x1010,
- 0x102b, 0x103e, 0x1050, 0x1060, 0x106a, 0x1072, 0x1072, 0x1093,
- 0x10a3, 0x10b1, 0x10c8, 0x10c8, 0x10d8, 0x10d8, 0x10e2, 0x10fc,
- 0x10fc, 0x1102, 0x1102, 0x1119, 0x1134, 0x1134, 0x1151, 0x1174,
- 0x1186, 0x118c, 0x119e, 0x119e, 0x11aa, 0x11ba, 0x11ba, 0x11c2,
- 0x11d8, 0x11d8, 0x11fa, 0x1220, 0x1220, 0x122c, 0x1240, 0x124e,
- 0x125c, 0x1279, 0x129c, 0x129c, 0x129c, 0x12a8, 0x12ba, 0x12c6,
- // Entry 140 - 17F
- 0x12c6, 0x12da, 0x12da, 0x12f0, 0x12fc, 0x1308, 0x132e, 0x132e,
- 0x1338, 0x1342, 0x1352, 0x135c, 0x136a, 0x136a, 0x136a, 0x1378,
- 0x1386, 0x1392, 0x13b1, 0x13d0, 0x13d0, 0x13e5, 0x13f3, 0x13ff,
- 0x1407, 0x1411, 0x141b, 0x1433, 0x1443, 0x144d, 0x145b, 0x1494,
- 0x1494, 0x149c, 0x149c, 0x14a4, 0x14b4, 0x14c9, 0x14c9, 0x14c9,
- 0x14d1, 0x14e3, 0x14f7, 0x150e, 0x151c, 0x1530, 0x153a, 0x1559,
- 0x1559, 0x1559, 0x156b, 0x1579, 0x1587, 0x1593, 0x15a3, 0x15b5,
- 0x15c5, 0x15d1, 0x15dd, 0x15e7, 0x15f1, 0x1601, 0x1601, 0x1601,
- // Entry 180 - 1BF
- 0x1601, 0x160d, 0x160d, 0x1619, 0x1621, 0x1638, 0x1638, 0x1653,
- 0x1663, 0x166f, 0x1677, 0x1683, 0x168f, 0x168f, 0x168f, 0x16a1,
- 0x16a9, 0x16b7, 0x16c7, 0x16d5, 0x16e7, 0x16f1, 0x16fb, 0x1705,
- 0x1711, 0x171b, 0x1725, 0x1735, 0x1750, 0x1767, 0x176f, 0x177b,
- 0x1795, 0x17a3, 0x17b5, 0x17bf, 0x17c7, 0x17c7, 0x17d9, 0x17fa,
- 0x1802, 0x1818, 0x182a, 0x182a, 0x1834, 0x183e, 0x1854, 0x1854,
- 0x186c, 0x1874, 0x188f, 0x189f, 0x18a7, 0x18b5, 0x18b5, 0x18c1,
- 0x18d5, 0x18e1, 0x1900, 0x1900, 0x1909, 0x191e, 0x1928, 0x1945,
- // Entry 1C0 - 1FF
- 0x1959, 0x1969, 0x1973, 0x197d, 0x1985, 0x19a8, 0x19be, 0x19cc,
- 0x19de, 0x19f2, 0x1a02, 0x1a02, 0x1a02, 0x1a02, 0x1a1d, 0x1a1d,
- 0x1a2f, 0x1a2f, 0x1a2f, 0x1a3f, 0x1a3f, 0x1a60, 0x1a68, 0x1a68,
- 0x1a7a, 0x1a8a, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aaa, 0x1ab6, 0x1ab6,
- 0x1ab6, 0x1ab6, 0x1ac8, 0x1ad0, 0x1ae2, 0x1af0, 0x1b15, 0x1b27,
- 0x1b31, 0x1b3f, 0x1b3f, 0x1b4f, 0x1b5d, 0x1b6f, 0x1b7d, 0x1b7d,
- 0x1b98, 0x1ba4, 0x1bac, 0x1bac, 0x1bba, 0x1bd7, 0x1bf6, 0x1bf6,
- 0x1c06, 0x1c0c, 0x1c2c, 0x1c3a, 0x1c3a, 0x1c3a, 0x1c4d, 0x1c60,
- // Entry 200 - 23F
- 0x1c73, 0x1c86, 0x1c94, 0x1ca6, 0x1cbf, 0x1cc9, 0x1cd1, 0x1cd1,
- 0x1ce1, 0x1ced, 0x1cff, 0x1d0f, 0x1d2c, 0x1d49, 0x1d57, 0x1d57,
- 0x1d57, 0x1d61, 0x1d69, 0x1d75, 0x1d81, 0x1d8d, 0x1d93, 0x1da3,
- 0x1da3, 0x1db3, 0x1dc3, 0x1dc3, 0x1dd1, 0x1de8, 0x1df9, 0x1df9,
- 0x1e05, 0x1e05, 0x1e15, 0x1e15, 0x1e27, 0x1e37, 0x1e45, 0x1e57,
- 0x1e85, 0x1e97, 0x1eab, 0x1ebf, 0x1ec7, 0x1ecd, 0x1ecd, 0x1ecd,
- 0x1ecd, 0x1ecd, 0x1ed7, 0x1ed7, 0x1ee5, 0x1ef1, 0x1f01, 0x1f0f,
- 0x1f1b, 0x1f2f, 0x1f2f, 0x1f3b, 0x1f3b, 0x1f45, 0x1f4d, 0x1f59,
- // Entry 240 - 27F
- 0x1f6d, 0x1f79, 0x1f79, 0x1f8f, 0x1f9d, 0x1fb1, 0x1fb1, 0x1fbf,
- 0x1fed, 0x1ff7, 0x2031, 0x2039, 0x2065, 0x2065, 0x2088, 0x20b2,
- 0x20d5, 0x20f0, 0x2122, 0x2141, 0x2175, 0x2194, 0x21b3, 0x21b3,
- 0x21ce, 0x21ed, 0x221b, 0x222f, 0x2258, 0x227d, 0x228f, 0x22a9,
- 0x22d2, 0x22f9,
-} // Size: 1244 bytes
-
-var enLangStr string = "" + // Size: 4897 bytes
- "AfarAbkhazianAvestanAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAym" +
- "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBengaliTibetanBret" +
- "onBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWels" +
- "hDanishGermanDivehiDzongkhaEweGreekEnglishEsperantoSpanishEstonianBasque" +
- "PersianFulahFinnishFijianFaroeseFrenchWestern FrisianIrishScottish Gaeli" +
- "cGalicianGuaraniGujaratiManxHausaHebrewHindiHiri MotuCroatianHaitian Cre" +
- "oleHungarianArmenianHereroInterlinguaIndonesianInterlingueIgboSichuan Yi" +
- "InupiaqIdoIcelandicItalianInuktitutJapaneseJavaneseGeorgianKongoKikuyuKu" +
- "anyamaKazakhKalaallisutKhmerKannadaKoreanKanuriKashmiriKurdishKomiCornis" +
- "hKyrgyzLatinLuxembourgishGandaLimburgishLingalaLaoLithuanianLuba-Katanga" +
- "LatvianMalagasyMarshalleseMaoriMacedonianMalayalamMongolianMarathiMalayM" +
- "alteseBurmeseNauruNorth NdebeleNepaliNdongaDutchNorwegian NynorskNorwegi" +
- "an BokmålSouth NdebeleNavajoNyanjaOccitanOjibwaOromoOriyaOsseticPunjabiP" +
- "aliPolishPashtoPortugueseQuechuaRomanshRundiRomanianRussianKinyarwandaSa" +
- "nskritSardinianSindhiNorthern SamiSangoSinhalaSlovakSlovenianSamoanShona" +
- "SomaliAlbanianSerbianSwatiSouthern SothoSundaneseSwedishSwahiliTamilTelu" +
- "guTajikThaiTigrinyaTurkmenTswanaTonganTurkishTsongaTatarTahitianUyghurUk" +
- "rainianUrduUzbekVendaVietnameseVolapükWalloonWolofXhosaYiddishYorubaZhua" +
- "ngChineseZuluAchineseAcoliAdangmeAdygheTunisian ArabicAfrihiliAghemAinuA" +
- "kkadianAlabamaAleutGheg AlbanianSouthern AltaiOld EnglishAngikaAramaicMa" +
- "pucheAraonaArapahoAlgerian ArabicArawakMoroccan ArabicEgyptian ArabicAsu" +
- "American Sign LanguageAsturianKotavaAwadhiBaluchiBalineseBavarianBasaaBa" +
- "munBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaWestern BalochiBhojpur" +
- "iBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAkooseBuriat" +
- "BugineseBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoChigaChibchaChagataiC" +
- "huukeseMariChinook JargonChoctawChipewyanCherokeeCheyenneCentral Kurdish" +
- "CopticCapiznonCrimean TurkishKashubianDakotaDargwaTaitaDelawareSlaveDogr" +
- "ibDinkaZarmaDogriLower SorbianCentral DusunDualaMiddle DutchJola-FonyiDy" +
- "ulaDazagaEmbuEfikEmilianAncient EgyptianEkajukElamiteMiddle EnglishCentr" +
- "al YupikEwondoExtremaduranFangFilipinoTornedalen FinnishFonCajun FrenchM" +
- "iddle FrenchOld FrenchArpitanNorthern FrisianEastern FrisianFriulianGaGa" +
- "gauzGan ChineseGayoGbayaZoroastrian DariGeezGilberteseGilakiMiddle High " +
- "GermanOld High GermanGoan KonkaniGondiGorontaloGothicGreboAncient GreekS" +
- "wiss GermanWayuuFrafraGusiiGwichʼinHaidaHakka ChineseHawaiianFiji HindiH" +
- "iligaynonHittiteHmongUpper SorbianXiang ChineseHupaIbanIbibioIlokoIngush" +
- "IngrianJamaican Creole EnglishLojbanNgombaMachameJudeo-PersianJudeo-Arab" +
- "icJutishKara-KalpakKabyleKachinJjuKambaKawiKabardianKanembuTyapMakondeKa" +
- "buverdianuKenyangKoroKaingangKhasiKhotaneseKoyra ChiiniKhowarKirmanjkiKa" +
- "koKalenjinKimbunduKomi-PermyakKonkaniKosraeanKpelleKarachay-BalkarKrioKi" +
- "naray-aKarelianKurukhShambalaBafiaColognianKumykKutenaiLadinoLangiLahnda" +
- "LambaLezghianLingua Franca NovaLigurianLivonianLakotaLombardMongoLoziNor" +
- "thern LuriLatgalianLuba-LuluaLuisenoLundaLuoMizoLuyiaLiterary ChineseLaz" +
- "MadureseMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandarMendeMeruM" +
- "orisyenMiddle IrishMakhuwa-MeettoMetaʼMicmacMinangkabauManchuManipuriMoh" +
- "awkMossiWestern MariMundangMultiple LanguagesCreekMirandeseMarwariMentaw" +
- "aiMyeneErzyaMazanderaniMin Nan ChineseNeapolitanNamaLow GermanNewariNias" +
- "NiueanAo NagaKwasioNgiemboonNogaiOld NorseNovialN’KoNorthern SothoNuerCl" +
- "assical NewariNyamweziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPa" +
- "hlaviPampangaPapiamentoPalauanPicardPennsylvania GermanPlautdietschOld P" +
- "ersianPalatine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld Pro" +
- "vençalKʼicheʼChimborazo Highland QuichuaRajasthaniRapanuiRarotonganRomag" +
- "nolRiffianRomboRomanyRotumanRusynRovianaAromanianRwaSandaweSakhaSamarita" +
- "n AramaicSamburuSasakSantaliSaurashtraNgambaySanguSicilianScotsSassarese" +
- " SardinianSouthern KurdishSenecaSenaSeriSelkupKoyraboro SenniOld IrishSa" +
- "mogitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSouthern S" +
- "amiLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSater" +
- "land FrisianSukumaSusuSumerianComorianCongo SwahiliClassical SyriacSyria" +
- "cSilesianTuluTimneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTal" +
- "yshTamashekNyasa TongaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatT" +
- "umbukaTuvaluTasawaqTuvinianCentral Atlas TamazightUdmurtUgariticUmbunduR" +
- "ootVaiVenetianVepsWest FlemishMain-FranconianVoticVõroVunjoWalserWolaytt" +
- "aWarayWashoWarlpiriWu ChineseKalmykMingrelianSogaYaoYapeseYangbenYembaNh" +
- "eengatuCantoneseZapotecBlissymbolsZeelandicZenagaStandard Moroccan Tamaz" +
- "ightZuniNo linguistic contentZazaModern Standard ArabicAustrian GermanSw" +
- "iss High GermanAustralian EnglishCanadian EnglishBritish EnglishAmerican" +
- " EnglishLatin American SpanishEuropean SpanishMexican SpanishDariCanadia" +
- "n FrenchSwiss FrenchLow SaxonFlemishBrazilian PortugueseEuropean Portugu" +
- "eseMoldavianSerbo-CroatianSimplified ChineseTraditional Chinese"
-
-var enLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0028, 0x0031,
- 0x0037, 0x003f, 0x0045, 0x004b, 0x0056, 0x005d, 0x0067, 0x0070,
- 0x0077, 0x007e, 0x0085, 0x008c, 0x0092, 0x0099, 0x00a0, 0x00a7,
- 0x00af, 0x00b7, 0x00bb, 0x00c0, 0x00cd, 0x00d4, 0x00d9, 0x00df,
- 0x00e5, 0x00eb, 0x00f3, 0x00f6, 0x00fb, 0x0102, 0x010b, 0x0112,
- 0x011a, 0x0120, 0x0127, 0x012c, 0x0133, 0x0139, 0x0140, 0x0146,
- 0x0155, 0x015a, 0x0169, 0x0171, 0x0178, 0x0180, 0x0184, 0x0189,
- 0x018f, 0x0194, 0x019d, 0x01a5, 0x01b3, 0x01bc, 0x01c4, 0x01ca,
- // Entry 40 - 7F
- 0x01d5, 0x01df, 0x01ea, 0x01ee, 0x01f8, 0x01ff, 0x0202, 0x020b,
- 0x0212, 0x021b, 0x0223, 0x022b, 0x0233, 0x0238, 0x023e, 0x0246,
- 0x024c, 0x0257, 0x025c, 0x0263, 0x0269, 0x026f, 0x0277, 0x027e,
- 0x0282, 0x0289, 0x028f, 0x0294, 0x02a1, 0x02a6, 0x02b0, 0x02b7,
- 0x02ba, 0x02c4, 0x02d0, 0x02d7, 0x02df, 0x02ea, 0x02ef, 0x02f9,
- 0x0302, 0x030b, 0x0312, 0x0317, 0x031e, 0x0325, 0x032a, 0x0337,
- 0x033d, 0x0343, 0x0348, 0x0359, 0x036a, 0x0377, 0x037d, 0x0383,
- 0x038a, 0x0390, 0x0395, 0x039a, 0x03a1, 0x03a8, 0x03ac, 0x03b2,
- // Entry 80 - BF
- 0x03b8, 0x03c2, 0x03c9, 0x03d0, 0x03d5, 0x03dd, 0x03e4, 0x03ef,
- 0x03f7, 0x0400, 0x0406, 0x0413, 0x0418, 0x041f, 0x0425, 0x042e,
- 0x0434, 0x0439, 0x043f, 0x0447, 0x044e, 0x0453, 0x0461, 0x046a,
- 0x0471, 0x0478, 0x047d, 0x0483, 0x0488, 0x048c, 0x0494, 0x049b,
- 0x04a1, 0x04a7, 0x04ae, 0x04b4, 0x04b9, 0x04c1, 0x04c7, 0x04d0,
- 0x04d4, 0x04d9, 0x04de, 0x04e8, 0x04f0, 0x04f7, 0x04fc, 0x0501,
- 0x0508, 0x050e, 0x0514, 0x051b, 0x051f, 0x0527, 0x052c, 0x0533,
- 0x0539, 0x0548, 0x0550, 0x0555, 0x0559, 0x0561, 0x0568, 0x056d,
- // Entry C0 - FF
- 0x057a, 0x0588, 0x0593, 0x0599, 0x05a0, 0x05a7, 0x05ad, 0x05b4,
- 0x05c3, 0x05c9, 0x05d8, 0x05e7, 0x05ea, 0x0600, 0x0608, 0x060e,
- 0x0614, 0x061b, 0x0623, 0x062b, 0x0630, 0x0635, 0x063f, 0x0646,
- 0x064a, 0x064f, 0x0655, 0x0659, 0x065e, 0x0664, 0x0673, 0x067b,
- 0x0680, 0x0684, 0x068a, 0x068d, 0x0694, 0x069f, 0x06a8, 0x06ac,
- 0x06b2, 0x06b6, 0x06bc, 0x06c2, 0x06ca, 0x06ce, 0x06d2, 0x06d9,
- 0x06de, 0x06e3, 0x06e9, 0x06ee, 0x06f5, 0x06fa, 0x0701, 0x0709,
- 0x0711, 0x0715, 0x0723, 0x072a, 0x0733, 0x073b, 0x0743, 0x0752,
- // Entry 100 - 13F
- 0x0758, 0x0760, 0x076f, 0x0778, 0x077e, 0x0784, 0x0789, 0x0791,
- 0x0796, 0x079c, 0x07a1, 0x07a6, 0x07ab, 0x07b8, 0x07c5, 0x07ca,
- 0x07d6, 0x07e0, 0x07e5, 0x07eb, 0x07ef, 0x07f3, 0x07fa, 0x080a,
- 0x0810, 0x0817, 0x0825, 0x0832, 0x0838, 0x0844, 0x0848, 0x0850,
- 0x0862, 0x0865, 0x0871, 0x087e, 0x0888, 0x088f, 0x089f, 0x08ae,
- 0x08b6, 0x08b8, 0x08be, 0x08c9, 0x08cd, 0x08d2, 0x08e2, 0x08e6,
- 0x08f0, 0x08f6, 0x0908, 0x0917, 0x0923, 0x0928, 0x0931, 0x0937,
- 0x093c, 0x0949, 0x0955, 0x095a, 0x0960, 0x0965, 0x096e, 0x0973,
- // Entry 140 - 17F
- 0x0980, 0x0988, 0x0992, 0x099c, 0x09a3, 0x09a8, 0x09b5, 0x09c2,
- 0x09c6, 0x09ca, 0x09d0, 0x09d5, 0x09db, 0x09e2, 0x09f9, 0x09ff,
- 0x0a05, 0x0a0c, 0x0a19, 0x0a25, 0x0a2b, 0x0a36, 0x0a3c, 0x0a42,
- 0x0a45, 0x0a4a, 0x0a4e, 0x0a57, 0x0a5e, 0x0a62, 0x0a69, 0x0a75,
- 0x0a7c, 0x0a80, 0x0a88, 0x0a8d, 0x0a96, 0x0aa2, 0x0aa8, 0x0ab1,
- 0x0ab5, 0x0abd, 0x0ac5, 0x0ad1, 0x0ad8, 0x0ae0, 0x0ae6, 0x0af5,
- 0x0af9, 0x0b02, 0x0b0a, 0x0b10, 0x0b18, 0x0b1d, 0x0b26, 0x0b2b,
- 0x0b32, 0x0b38, 0x0b3d, 0x0b43, 0x0b48, 0x0b50, 0x0b62, 0x0b6a,
- // Entry 180 - 1BF
- 0x0b72, 0x0b78, 0x0b7f, 0x0b84, 0x0b88, 0x0b95, 0x0b9e, 0x0ba8,
- 0x0baf, 0x0bb4, 0x0bb7, 0x0bbb, 0x0bc0, 0x0bd0, 0x0bd3, 0x0bdb,
- 0x0bdf, 0x0be5, 0x0bed, 0x0bf4, 0x0bfc, 0x0c01, 0x0c05, 0x0c0b,
- 0x0c11, 0x0c16, 0x0c1a, 0x0c22, 0x0c2e, 0x0c3c, 0x0c42, 0x0c48,
- 0x0c53, 0x0c59, 0x0c61, 0x0c67, 0x0c6c, 0x0c78, 0x0c7f, 0x0c91,
- 0x0c96, 0x0c9f, 0x0ca6, 0x0cae, 0x0cb3, 0x0cb8, 0x0cc3, 0x0cd2,
- 0x0cdc, 0x0ce0, 0x0cea, 0x0cf0, 0x0cf4, 0x0cfa, 0x0d01, 0x0d07,
- 0x0d10, 0x0d15, 0x0d1e, 0x0d24, 0x0d2a, 0x0d38, 0x0d3c, 0x0d4c,
- // Entry 1C0 - 1FF
- 0x0d54, 0x0d5c, 0x0d61, 0x0d66, 0x0d6b, 0x0d7a, 0x0d84, 0x0d8b,
- 0x0d93, 0x0d9d, 0x0da4, 0x0daa, 0x0dbd, 0x0dc9, 0x0dd4, 0x0de3,
- 0x0ded, 0x0df8, 0x0dfe, 0x0e07, 0x0e0f, 0x0e1d, 0x0e26, 0x0e41,
- 0x0e4b, 0x0e52, 0x0e5c, 0x0e64, 0x0e6b, 0x0e70, 0x0e76, 0x0e7d,
- 0x0e82, 0x0e89, 0x0e92, 0x0e95, 0x0e9c, 0x0ea1, 0x0eb2, 0x0eb9,
- 0x0ebe, 0x0ec5, 0x0ecf, 0x0ed6, 0x0edb, 0x0ee3, 0x0ee8, 0x0efb,
- 0x0f0b, 0x0f11, 0x0f15, 0x0f19, 0x0f1f, 0x0f2e, 0x0f37, 0x0f41,
- 0x0f4a, 0x0f4e, 0x0f5c, 0x0f62, 0x0f70, 0x0f77, 0x0f84, 0x0f8d,
- // Entry 200 - 23F
- 0x0f97, 0x0fa1, 0x0fa8, 0x0faf, 0x0fbb, 0x0fc0, 0x0fc4, 0x0fd5,
- 0x0fdb, 0x0fdf, 0x0fe7, 0x0fef, 0x0ffc, 0x100c, 0x1012, 0x101a,
- 0x101e, 0x1023, 0x1027, 0x102d, 0x1032, 0x1037, 0x103a, 0x1041,
- 0x1048, 0x104f, 0x1056, 0x105c, 0x1064, 0x106f, 0x1078, 0x107e,
- 0x1084, 0x108d, 0x1096, 0x10a0, 0x10a7, 0x10ad, 0x10b4, 0x10bc,
- 0x10d3, 0x10d9, 0x10e1, 0x10e8, 0x10ec, 0x10ef, 0x10f7, 0x10fb,
- 0x1107, 0x1116, 0x111b, 0x1120, 0x1125, 0x112b, 0x1133, 0x1138,
- 0x113d, 0x1145, 0x114f, 0x1155, 0x115f, 0x1163, 0x1166, 0x116c,
- // Entry 240 - 27F
- 0x1173, 0x1178, 0x1181, 0x118a, 0x1191, 0x119c, 0x11a5, 0x11ab,
- 0x11c6, 0x11ca, 0x11df, 0x11e3, 0x11f9, 0x11f9, 0x1208, 0x1219,
- 0x122b, 0x123b, 0x124a, 0x125a, 0x1270, 0x1280, 0x128f, 0x1293,
- 0x12a2, 0x12ae, 0x12b7, 0x12be, 0x12d2, 0x12e5, 0x12ee, 0x12fc,
- 0x130e, 0x1321,
-} // Size: 1244 bytes
-
-const enGBLangStr string = "West Low German"
-
-var enGBLangIdx = []uint16{ // 603 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 140 - 17F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 180 - 1BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 1C0 - 1FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 200 - 23F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 240 - 27F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x000f,
-} // Size: 1230 bytes
-
-var esLangStr string = "" + // Size: 4253 bytes
- "afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazer" +
- "baiyanobaskirbielorrusobúlgarobislamabambarabengalítibetanobretónbosnioc" +
- "atalánchechenochamorrocorsocreechecoeslavo eclesiásticochuvasiogalésdané" +
- "salemándivehidzongkhaewégriegoinglésesperantoespañolestonioeuskerapersaf" +
- "ulafinésfiyianoferoésfrancésfrisón occidentalirlandésgaélico escocésgall" +
- "egoguaranígujaratimanéshausahebreohindihiri motucroatahaitianohúngaroarm" +
- "eniohererointerlinguaindonesiointerlingueigboyi de Sichuáninupiaqidoisla" +
- "ndésitalianoinuktitutjaponésjavanésgeorgianokongokikuyukuanyamakazajogro" +
- "enlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguíslatínlu" +
- "xemburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgache" +
- "marshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonauruanon" +
- "debele septentrionalnepalíndonganeerlandésnoruego nynorsknoruego bokmaln" +
- "debele meridionalnavajonyanjaoccitanoojibwaoromooriyaoséticopanyabípalip" +
- "olacopastúnportuguésquechuaretorrománicokiroundirumanorusokinyarwandasán" +
- "scritosardosindhisami septentrionalsangocingaléseslovacoeslovenosamoanos" +
- "honasomalíalbanésserbiosiswatisesotho meridionalsundanéssuecosuajilitami" +
- "ltelugutayikotailandéstigriñaturcomanosetchwanatonganoturcotsongatártaro" +
- "tahitianouigurucranianourduuzbekovendavietnamitavolapükvalónwolofxhosayí" +
- "dishyorubazhuangchinozulúacehnésacoliadangmeadigeoafrihiliaghemainuacadi" +
- "oaleutianoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahua" +
- "coasuasturianoavadhibaluchibalinésbasabamunghomalabejabembabenabafutbalu" +
- "chi occidentalbhojpuribicolbinikomsiksikabrajbodoakooseburiatbuginésbulu" +
- "blinmedumbacaddocaribecayugaatsamcebuanochigachibchachagatáitrukésmaríje" +
- "rga chinukchoctawchipewyancheroquicheyenekurdo soranicoptotártaro de Cri" +
- "meacasubiodakotadargvataitadelawareslavedogribdinkazarmadogribajo sorbio" +
- "dualaneerlandés medievaljola-fonyidiuladazagaembuefikegipcio antiguoekaj" +
- "ukelamitainglés medievalewondofangfilipinofonfrancés medievalfrancés ant" +
- "iguofrisón septentrionalfrisón orientalfriulanogagagauzogayogbayageezgil" +
- "bertésalemán de la alta edad mediaalemán de la alta edad antiguagondigor" +
- "ontalogóticogrebogriego antiguoalemán suizogusiikutchinhaidahawaianohili" +
- "gaynonhititahmongalto sorbiohupaibanibibioilocanoingushlojbanngombamacha" +
- "mejudeo-persajudeo-árabekarakalpakocabilakachinjjukambakawikabardianokan" +
- "embutyapmakondecriollo caboverdianokorokhasikotanéskoyra chiinikakokalen" +
- "jinkimbundukomi permiokonkaníkosraeanokpellekarachay-balkarcareliokurukh" +
- "shambalabafiakölschkumykkutenailadinolangilahndalambalezgianolakotamongo" +
- "lozilorí septentrionalluba-lulualuiseñolundaluolushailuyiamadurésmafamag" +
- "ahimaithilimacasarmandingomasáimabamokshamandarmendemerucriollo mauricia" +
- "noirlandés medievalmakhuwa-meettometa’micmacminangkabaumanchúmanipurimoh" +
- "awkmossimundanglenguas múltiplescreekmirandésmarwarimyeneerzyamazandaran" +
- "ínapolitanonamabajo alemánnewariniasniueanokwasiongiemboonnogainórdico " +
- "antiguon’kosotho septentrionalnuernewari clásiconyamwezinyankolenyoronzi" +
- "maosageturco otomanopangasinánpahlavipampangapapiamentopalauanopersa ant" +
- "iguofeniciopohnpeianoprovenzal antiguoquichérajasthanirapanuirarotongano" +
- "romboromaníarrumanorwasandawesakhaarameo samaritanosamburusasaksantaling" +
- "ambaysangusicilianoescocéskurdo meridionalsenecasenaselkupkoyraboro senn" +
- "iirlandés antiguotashelhitshanárabe chadianosidamosami meridionalsami lu" +
- "lesami inarisami skoltsoninkésogdianosranan tongoserersahosukumasususume" +
- "riocomorensesuajili del Congosiríaco clásicosiriacotemnetesoterenotetúnt" +
- "igrétivtokelauanoklingontlingittamashektonga del Nyasatok pisintarokotsi" +
- "mshianotumbukatuvaluanotasawaqtuvinianotamazight del Marruecos Centralud" +
- "murtugaríticoumbunduraízvaivóticovunjowalserwalamowaraywashowarlpirikalm" +
- "yksogayaoyapésyangbenyembacantonészapotecosímbolos Blisszenagatamazight " +
- "estándar marroquízunisin contenido lingüísticozazakiárabe estándar moder" +
- "noalemán austríacoalto alemán suizoinglés australianoinglés canadiensein" +
- "glés británicoinglés estadounidenseespañol latinoamericanoespañol de Esp" +
- "añaespañol de Méxicofrancés canadiensefrancés suizoflamencoportugués de " +
- "Brasilportugués de Portugalmoldavoserbocroatachino simplificadochino tra" +
- "dicional"
-
-var esLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000b, 0x0014, 0x001e, 0x0022, 0x002a, 0x0033,
- 0x0039, 0x0040, 0x0044, 0x004a, 0x0055, 0x005b, 0x0065, 0x006d,
- 0x0074, 0x007b, 0x0083, 0x008b, 0x0092, 0x0098, 0x00a0, 0x00a8,
- 0x00b0, 0x00b5, 0x00b9, 0x00be, 0x00d2, 0x00da, 0x00e0, 0x00e6,
- 0x00ed, 0x00f3, 0x00fb, 0x00ff, 0x0105, 0x010c, 0x0115, 0x011d,
- 0x0124, 0x012b, 0x0130, 0x0134, 0x013a, 0x0141, 0x0148, 0x0150,
- 0x0162, 0x016b, 0x017c, 0x0183, 0x018b, 0x0193, 0x0199, 0x019e,
- 0x01a4, 0x01a9, 0x01b2, 0x01b8, 0x01c0, 0x01c8, 0x01cf, 0x01d5,
- // Entry 40 - 7F
- 0x01e0, 0x01e9, 0x01f4, 0x01f8, 0x0206, 0x020d, 0x0210, 0x0219,
- 0x0221, 0x022a, 0x0232, 0x023a, 0x0243, 0x0248, 0x024e, 0x0256,
- 0x025c, 0x0268, 0x026d, 0x0275, 0x027c, 0x0282, 0x028b, 0x0290,
- 0x0294, 0x029c, 0x02a4, 0x02aa, 0x02b7, 0x02bc, 0x02c7, 0x02ce,
- 0x02d6, 0x02dd, 0x02e9, 0x02ef, 0x02f7, 0x0301, 0x0307, 0x0310,
- 0x0319, 0x031f, 0x0326, 0x032c, 0x0333, 0x033a, 0x0342, 0x0357,
- 0x035e, 0x0364, 0x036f, 0x037e, 0x038c, 0x039e, 0x03a4, 0x03aa,
- 0x03b2, 0x03b8, 0x03bd, 0x03c2, 0x03ca, 0x03d2, 0x03d6, 0x03dc,
- // Entry 80 - BF
- 0x03e3, 0x03ed, 0x03f4, 0x0402, 0x040a, 0x0410, 0x0414, 0x041f,
- 0x0429, 0x042e, 0x0434, 0x0446, 0x044b, 0x0454, 0x045c, 0x0464,
- 0x046b, 0x0470, 0x0477, 0x047f, 0x0485, 0x048c, 0x049e, 0x04a7,
- 0x04ac, 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04ce, 0x04d6, 0x04df,
- 0x04e8, 0x04ef, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0510, 0x0519,
- 0x051d, 0x0523, 0x0528, 0x0532, 0x053a, 0x0540, 0x0545, 0x054a,
- 0x0551, 0x0557, 0x055d, 0x0562, 0x0567, 0x056f, 0x0574, 0x057b,
- 0x0581, 0x0581, 0x0589, 0x058e, 0x0592, 0x0598, 0x0598, 0x05a1,
- // Entry C0 - FF
- 0x05a1, 0x05b2, 0x05c1, 0x05c7, 0x05cd, 0x05d4, 0x05d4, 0x05db,
- 0x05db, 0x05e3, 0x05e3, 0x05e3, 0x05e6, 0x05e6, 0x05ef, 0x05ef,
- 0x05f5, 0x05fc, 0x0604, 0x0604, 0x0608, 0x060d, 0x060d, 0x0614,
- 0x0618, 0x061d, 0x061d, 0x0621, 0x0626, 0x0626, 0x0638, 0x0640,
- 0x0645, 0x0649, 0x0649, 0x064c, 0x0653, 0x0653, 0x0653, 0x0657,
- 0x0657, 0x065b, 0x0661, 0x0667, 0x066f, 0x0673, 0x0677, 0x067e,
- 0x0683, 0x0689, 0x068f, 0x0694, 0x069b, 0x06a0, 0x06a7, 0x06b0,
- 0x06b7, 0x06bc, 0x06c8, 0x06cf, 0x06d8, 0x06e0, 0x06e7, 0x06f3,
- // Entry 100 - 13F
- 0x06f8, 0x06f8, 0x070a, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a,
- 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074f, 0x074f, 0x0754,
- 0x0768, 0x0772, 0x0777, 0x077d, 0x0781, 0x0785, 0x0785, 0x0794,
- 0x079a, 0x07a1, 0x07b1, 0x07b1, 0x07b7, 0x07b7, 0x07bb, 0x07c3,
- 0x07c3, 0x07c6, 0x07c6, 0x07d7, 0x07e7, 0x07e7, 0x07fc, 0x080c,
- 0x0814, 0x0816, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x082a,
- 0x0834, 0x0834, 0x0851, 0x0870, 0x0870, 0x0875, 0x087e, 0x0885,
- 0x088a, 0x0898, 0x08a5, 0x08a5, 0x08a5, 0x08aa, 0x08b1, 0x08b6,
- // Entry 140 - 17F
- 0x08b6, 0x08be, 0x08be, 0x08c8, 0x08ce, 0x08d3, 0x08de, 0x08de,
- 0x08e2, 0x08e6, 0x08ec, 0x08f3, 0x08f9, 0x08f9, 0x08f9, 0x08ff,
- 0x0905, 0x090c, 0x0917, 0x0923, 0x0923, 0x092e, 0x0934, 0x093a,
- 0x093d, 0x0942, 0x0946, 0x0950, 0x0957, 0x095b, 0x0962, 0x0976,
- 0x0976, 0x097a, 0x097a, 0x097f, 0x0987, 0x0993, 0x0993, 0x0993,
- 0x0997, 0x099f, 0x09a7, 0x09b2, 0x09ba, 0x09c3, 0x09c9, 0x09d8,
- 0x09d8, 0x09d8, 0x09df, 0x09e5, 0x09ed, 0x09f2, 0x09f9, 0x09fe,
- 0x0a05, 0x0a0b, 0x0a10, 0x0a16, 0x0a1b, 0x0a23, 0x0a23, 0x0a23,
- // Entry 180 - 1BF
- 0x0a23, 0x0a29, 0x0a29, 0x0a2e, 0x0a32, 0x0a45, 0x0a45, 0x0a4f,
- 0x0a57, 0x0a5c, 0x0a5f, 0x0a65, 0x0a6a, 0x0a6a, 0x0a6a, 0x0a72,
- 0x0a76, 0x0a7c, 0x0a84, 0x0a8b, 0x0a93, 0x0a99, 0x0a9d, 0x0aa3,
- 0x0aa9, 0x0aae, 0x0ab2, 0x0ac4, 0x0ad6, 0x0ae4, 0x0aeb, 0x0af1,
- 0x0afc, 0x0b03, 0x0b0b, 0x0b11, 0x0b16, 0x0b16, 0x0b1d, 0x0b2f,
- 0x0b34, 0x0b3d, 0x0b44, 0x0b44, 0x0b49, 0x0b4e, 0x0b5a, 0x0b5a,
- 0x0b64, 0x0b68, 0x0b74, 0x0b7a, 0x0b7e, 0x0b85, 0x0b85, 0x0b8b,
- 0x0b94, 0x0b99, 0x0ba9, 0x0ba9, 0x0baf, 0x0bc2, 0x0bc6, 0x0bd5,
- // Entry 1C0 - 1FF
- 0x0bdd, 0x0be5, 0x0bea, 0x0bef, 0x0bf4, 0x0c01, 0x0c0c, 0x0c13,
- 0x0c1b, 0x0c25, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c3a, 0x0c3a,
- 0x0c41, 0x0c41, 0x0c41, 0x0c4b, 0x0c4b, 0x0c5c, 0x0c63, 0x0c63,
- 0x0c6d, 0x0c74, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c84, 0x0c8b, 0x0c8b,
- 0x0c8b, 0x0c8b, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb3, 0x0cba,
- 0x0cbf, 0x0cc6, 0x0cc6, 0x0ccd, 0x0cd2, 0x0cdb, 0x0ce3, 0x0ce3,
- 0x0cf3, 0x0cf9, 0x0cfd, 0x0cfd, 0x0d03, 0x0d12, 0x0d23, 0x0d23,
- 0x0d2c, 0x0d30, 0x0d3f, 0x0d45, 0x0d45, 0x0d45, 0x0d54, 0x0d5d,
- // Entry 200 - 23F
- 0x0d67, 0x0d71, 0x0d79, 0x0d81, 0x0d8d, 0x0d92, 0x0d96, 0x0d96,
- 0x0d9c, 0x0da0, 0x0da7, 0x0db0, 0x0dc1, 0x0dd2, 0x0dd9, 0x0dd9,
- 0x0dd9, 0x0dde, 0x0de2, 0x0de8, 0x0dee, 0x0df4, 0x0df7, 0x0e01,
- 0x0e01, 0x0e08, 0x0e0f, 0x0e0f, 0x0e17, 0x0e26, 0x0e2f, 0x0e2f,
- 0x0e35, 0x0e35, 0x0e3f, 0x0e3f, 0x0e46, 0x0e4f, 0x0e56, 0x0e5f,
- 0x0e7e, 0x0e84, 0x0e8e, 0x0e95, 0x0e9a, 0x0e9d, 0x0e9d, 0x0e9d,
- 0x0e9d, 0x0e9d, 0x0ea4, 0x0ea4, 0x0ea9, 0x0eaf, 0x0eb5, 0x0eba,
- 0x0ebf, 0x0ec7, 0x0ec7, 0x0ecd, 0x0ecd, 0x0ed1, 0x0ed4, 0x0eda,
- // Entry 240 - 27F
- 0x0ee1, 0x0ee6, 0x0ee6, 0x0eef, 0x0ef7, 0x0f06, 0x0f06, 0x0f0c,
- 0x0f29, 0x0f2d, 0x0f48, 0x0f4e, 0x0f66, 0x0f66, 0x0f78, 0x0f8a,
- 0x0f9d, 0x0faf, 0x0fc1, 0x0fd7, 0x0fef, 0x1002, 0x1015, 0x1015,
- 0x1028, 0x1036, 0x1036, 0x103e, 0x1052, 0x1068, 0x106f, 0x107a,
- 0x108c, 0x109d,
-} // Size: 1244 bytes
-
-var es419LangStr string = "vascoswahililuoswahili del Congovai"
-
-var es419LangIdx = []uint16{ // 558 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 40 - 7F
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- // Entry 80 - BF
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x0005, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- // Entry C0 - FF
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- // Entry 100 - 13F
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- // Entry 140 - 17F
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- // Entry 180 - 1BF
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- // Entry 1C0 - 1FF
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- // Entry 200 - 23F
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0023,
-} // Size: 1140 bytes
-
-var etLangStr string = "" + // Size: 4576 bytes
- "afariabhaasiavestaafrikaaniakaniamhariaragoniaraabiaassamiavaariaimaraas" +
- "erbaidžaanibaškiirivalgevenebulgaariabislamabambarabengalitiibetibretoon" +
- "ibosniakatalaanitšetšeenitšamorrokorsikakriitšehhikirikuslaavitšuvašikõm" +
- "ritaanisaksamaldiividzongkhaevekreekaingliseesperantohispaaniaeestibaski" +
- "pärsiafulasoomefidžifääriprantsuseläänefriisiiirigaeligaleegiguaraniigud" +
- "žaratimänksihausaheebreahindihirimotuhorvaadihaitiungariarmeeniahereroi" +
- "nterlinguaindoneesiainterlingueiboSichuani jiiinjupiakiidoislandiitaalia" +
- "inuktitutijaapanijaavagruusiakongokikujukvanjamakasahhigröönikhmeerikann" +
- "adakoreakanurikašmiirikurdikomikornikirgiisiladinaletseburgigandalimburg" +
- "ilingalalaoleedulubalätimalagassimaršallimaoorimakedooniamalajalamimongo" +
- "limarathimalaimaltabirmanaurupõhjandebelenepalindongahollandiuusnorranor" +
- "ra bokmållõunandebelenavahonjandžaprovansiodžibveioromooriaosseedipandža" +
- "bipaalipoolapuštuportugaliketšuaromanširundirumeeniaveneruandasanskritis" +
- "ardisindhipõhjasaamisangosingalislovakisloveenisamoašonasomaalialbaanias" +
- "erbiasvaasilõunasothosundarootsisuahiilitamilitelugutadžikitaitigrinjatü" +
- "rkmeenitsvanatongatürgitsongatataritahitiuiguuriukrainaurduusbekivendavi" +
- "etnamivolapükivalloonivolofikoosajidišijorubatšuangihiinasuuluatšehiatšo" +
- "liadangmeadõgeeTuneesia araabiaafrihiliaghemiainuakadialabamaaleuudigeeg" +
- "ialtaivanaingliseangikaarameamapudunguniaraonaarapahoAlžeeria araabiaara" +
- "vakiMaroko araabiaEgiptuse araabiaasuAmeerika viipekeelastuuriaavadhibel" +
- "utšibalibaieribasabamunibatakighomalabedžabembabetavibenabafutibadagalää" +
- "nebelutšibhodžpuribikoliedobandžarikomi (Aafrika)mustjalaindiaanibišnupr" +
- "ijabahtiaribradžibrahuibodoakooseburjaadibugibulubilinimedumbakadokariib" +
- "ikajukaatsamisebutšigatšibtšatšagataitšuugimaritšinuki žargoontšoktotšip" +
- "evaitšerokiišaieenisoranikoptikapisnonikrimmitatarikašuubisiuudargidavid" +
- "adelavarisleividogribidinkazarmadogrialamsorbikeskdusunidualakeskholland" +
- "ifonjidjuladazaembuefikiemiiliaegiptuseekadžukieelamikeskinglisekeskjupi" +
- "kievondoestremenjufangifilipiinimeäfonicajun’ikeskprantsusevanaprantsuse" +
- "frankoprovansipõhjafriisiidafriisifriuuligaagagauusikanigajogbajaetioopi" +
- "akiribatigilakikeskülemsaksavanaülemsaksagondigorontalogootigrebovanakre" +
- "ekašveitsisaksavajuufarefaregusiigvitšinihaidahavaiFidži hindihiligainon" +
- "ihetihmongiülemsorbisjangihupaibaniibibioilokoingušiisuriJamaica kreoolk" +
- "eelložbanngombamatšamejuudipärsiajuudiaraabiajüütikarakalpakikabiilikatš" +
- "inijjukambakaavikabardi-tšerkessikanembutjapimakondekabuverdianukorokain" +
- "gangikhasisakakoyra chiinikhovarikõrmandžkikakokalendžinimbundupermikomi" +
- "konkanikosraekpellekaratšai-balkaarikriokinaraiakarjalakuruhhišambalabaf" +
- "iakölnikumõkikutenailadiinolangilahndalambalesgiliguuriliivilakotalombar" +
- "dimongolozipõhjalurilatgalilulualuisenjolundaluolušeiluhjaklassikaline h" +
- "iinalazimaduramafamagahimaithilimakassarimalinkemasaimabamokšamandarimen" +
- "demeruMauritiuse kreoolkeelkeskiirimakhuwa-meettometamikmakiminangkabaum" +
- "andžumanipurimohoogimoremäemarimundangimitu keeltmaskogimirandamarvarime" +
- "ntaveimjeneersamazandaraanilõunamininapolinamaalamsaksanevariniasiniueao" +
- "kwasiongiembooninogaivanapõhjalanoviaalnkoopedinuerivananevarinjamvesink" +
- "olenjoronzimaoseidžiosmanitürgipangasinanipahlavipampangapapiamentobelau" +
- "pikardiPennsylvania saksamennoniidisaksavanapärsiaPfalzifoiniikiapiemont" +
- "epontosepoonpeipreisivanaprovansikitšeradžastanirapanuirarotongaromanjar" +
- "iifirombomustlaskeelrotumarussiinirovianaaromuunirvaasandavejakuudiSamaa" +
- "ria arameasamburusasakisantalisauraštrangambaisangusitsiiliašotilõunakur" +
- "disenekasenaserisölkupikoyraboro sennivanaiirižemaidišilhašaniTšaadi ara" +
- "abiasidamoalamsileesiaselajarilõunasaamiLule saamiInari saamikoltasaamis" +
- "oninkesogdisrananisererisahosaterfriisisukumasususumerikomooriKongo suah" +
- "iilivanasüüriasüüriasileesiatulutemnetesoterenotetumitigreetivitokelauts" +
- "ahhiklingonitlingititalõšitamašekitšitongauusmelaneesiaturojotarokotsako" +
- "oniatšimšilõunataaditumbukatuvalutaswaqitõvatamasiktiudmurdiugaritiumbun" +
- "durootvaivenetivepsalääneflaamiMaini frangivadjavõruvundžowalserivolaita" +
- "varaivašovarlpiriuukalmõkimegrelisogajaojapiyangbenijembanjengatukantoni" +
- "sapoteegiBlissi sümbolidzeelandizenagatamasikti (Maroko)sunjimittekeelel" +
- "inezazaaraabia (tänapäevane)Austria saksaŠveitsi ülemsaksaAustraalia ing" +
- "liseKanada ingliseBriti ingliseAmeerika ingliseLadina-Ameerika hispaania" +
- "Euroopa hispaaniaMehhiko hispaaniaKanada prantsuseŠveitsi prantsuseHolla" +
- "ndi alamsaksaflaamiBrasiilia portugaliEuroopa portugalimoldovaserbia-hor" +
- "vaadihiina (lihtsustatud)hiina (traditsiooniline)"
-
-var etLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x000c, 0x0012, 0x001b, 0x0020, 0x0026, 0x002d,
- 0x0034, 0x003a, 0x0040, 0x0046, 0x0054, 0x005d, 0x0066, 0x006f,
- 0x0076, 0x007d, 0x0084, 0x008b, 0x0093, 0x0099, 0x00a2, 0x00ad,
- 0x00b6, 0x00bd, 0x00c1, 0x00c8, 0x00d4, 0x00dd, 0x00e3, 0x00e8,
- 0x00ed, 0x00f5, 0x00fd, 0x0100, 0x0106, 0x010d, 0x0116, 0x011f,
- 0x0124, 0x0129, 0x0130, 0x0134, 0x0139, 0x013f, 0x0146, 0x014f,
- 0x015c, 0x0160, 0x0165, 0x016c, 0x0174, 0x017e, 0x0185, 0x018a,
- 0x0191, 0x0196, 0x019e, 0x01a6, 0x01ab, 0x01b1, 0x01b9, 0x01bf,
- // Entry 40 - 7F
- 0x01ca, 0x01d4, 0x01df, 0x01e2, 0x01ee, 0x01f7, 0x01fa, 0x0201,
- 0x0208, 0x0212, 0x0219, 0x021e, 0x0225, 0x022a, 0x0230, 0x0238,
- 0x023f, 0x0247, 0x024e, 0x0255, 0x025a, 0x0260, 0x0269, 0x026e,
- 0x0272, 0x0277, 0x027f, 0x0285, 0x028f, 0x0294, 0x029c, 0x02a3,
- 0x02a6, 0x02ab, 0x02af, 0x02b4, 0x02bd, 0x02c6, 0x02cc, 0x02d6,
- 0x02e0, 0x02e7, 0x02ee, 0x02f3, 0x02f8, 0x02fd, 0x0302, 0x030f,
- 0x0315, 0x031b, 0x0323, 0x032b, 0x0338, 0x0345, 0x034b, 0x0353,
- 0x035b, 0x0364, 0x0369, 0x036d, 0x0374, 0x037d, 0x0382, 0x0387,
- // Entry 80 - BF
- 0x038d, 0x0396, 0x039d, 0x03a5, 0x03aa, 0x03b2, 0x03b6, 0x03bc,
- 0x03c5, 0x03ca, 0x03d0, 0x03db, 0x03e0, 0x03e7, 0x03ee, 0x03f6,
- 0x03fb, 0x0400, 0x0407, 0x040f, 0x0415, 0x041b, 0x0426, 0x042b,
- 0x0431, 0x0439, 0x043f, 0x0445, 0x044d, 0x0450, 0x0458, 0x0462,
- 0x0468, 0x046d, 0x0473, 0x0479, 0x047f, 0x0485, 0x048c, 0x0493,
- 0x0497, 0x049d, 0x04a2, 0x04aa, 0x04b3, 0x04bb, 0x04c1, 0x04c6,
- 0x04cd, 0x04d3, 0x04db, 0x04e0, 0x04e5, 0x04ec, 0x04f3, 0x04fa,
- 0x0501, 0x0511, 0x0519, 0x051f, 0x0523, 0x0528, 0x052f, 0x0536,
- // Entry C0 - FF
- 0x053b, 0x0540, 0x054b, 0x0551, 0x0557, 0x0562, 0x0568, 0x056f,
- 0x0580, 0x0587, 0x0595, 0x05a5, 0x05a8, 0x05ba, 0x05c2, 0x05c2,
- 0x05c8, 0x05d0, 0x05d4, 0x05da, 0x05de, 0x05e4, 0x05ea, 0x05f1,
- 0x05f7, 0x05fc, 0x0602, 0x0606, 0x060c, 0x0612, 0x0621, 0x062b,
- 0x0631, 0x0634, 0x063d, 0x064b, 0x065b, 0x0666, 0x066e, 0x0675,
- 0x067b, 0x067f, 0x0685, 0x068d, 0x0691, 0x0695, 0x069b, 0x06a2,
- 0x06a6, 0x06ad, 0x06b3, 0x06b9, 0x06bd, 0x06c3, 0x06cc, 0x06d5,
- 0x06dc, 0x06e0, 0x06f1, 0x06f8, 0x0701, 0x070a, 0x0712, 0x0718,
- // Entry 100 - 13F
- 0x071d, 0x0726, 0x0732, 0x073a, 0x073e, 0x0743, 0x0749, 0x0751,
- 0x0757, 0x075e, 0x0763, 0x0768, 0x076d, 0x0776, 0x0780, 0x0785,
- 0x0791, 0x0796, 0x079b, 0x079f, 0x07a3, 0x07a8, 0x07af, 0x07b7,
- 0x07c0, 0x07c6, 0x07d1, 0x07db, 0x07e1, 0x07eb, 0x07f0, 0x07f9,
- 0x07fd, 0x0801, 0x080a, 0x0817, 0x0824, 0x0832, 0x083e, 0x0847,
- 0x084e, 0x0851, 0x0859, 0x085d, 0x0861, 0x0866, 0x0866, 0x086e,
- 0x0876, 0x087c, 0x088a, 0x0898, 0x0898, 0x089d, 0x08a6, 0x08ab,
- 0x08b0, 0x08ba, 0x08c7, 0x08cc, 0x08d4, 0x08d9, 0x08e2, 0x08e7,
- // Entry 140 - 17F
- 0x08e7, 0x08ec, 0x08f8, 0x0903, 0x0907, 0x090d, 0x0917, 0x091d,
- 0x0921, 0x0926, 0x092c, 0x0931, 0x0938, 0x093d, 0x094f, 0x0956,
- 0x095c, 0x0964, 0x0970, 0x097c, 0x0983, 0x098e, 0x0995, 0x099d,
- 0x09a0, 0x09a5, 0x09aa, 0x09bc, 0x09c3, 0x09c8, 0x09cf, 0x09db,
- 0x09db, 0x09df, 0x09e8, 0x09ed, 0x09f1, 0x09fd, 0x0a04, 0x0a10,
- 0x0a14, 0x0a1f, 0x0a25, 0x0a2e, 0x0a35, 0x0a3b, 0x0a41, 0x0a53,
- 0x0a57, 0x0a5f, 0x0a66, 0x0a6d, 0x0a75, 0x0a7a, 0x0a80, 0x0a87,
- 0x0a8e, 0x0a95, 0x0a9a, 0x0aa0, 0x0aa5, 0x0aaa, 0x0aaa, 0x0ab1,
- // Entry 180 - 1BF
- 0x0ab6, 0x0abc, 0x0ac4, 0x0ac9, 0x0acd, 0x0ad7, 0x0ade, 0x0ae3,
- 0x0aeb, 0x0af0, 0x0af3, 0x0af9, 0x0afe, 0x0b10, 0x0b14, 0x0b1a,
- 0x0b1e, 0x0b24, 0x0b2c, 0x0b35, 0x0b3c, 0x0b41, 0x0b45, 0x0b4b,
- 0x0b52, 0x0b57, 0x0b5b, 0x0b70, 0x0b78, 0x0b86, 0x0b8a, 0x0b91,
- 0x0b9c, 0x0ba3, 0x0bab, 0x0bb2, 0x0bb6, 0x0bbe, 0x0bc6, 0x0bd0,
- 0x0bd7, 0x0bde, 0x0be5, 0x0bed, 0x0bf2, 0x0bf6, 0x0c02, 0x0c0c,
- 0x0c12, 0x0c16, 0x0c1f, 0x0c25, 0x0c2a, 0x0c2e, 0x0c30, 0x0c36,
- 0x0c40, 0x0c45, 0x0c51, 0x0c58, 0x0c5c, 0x0c60, 0x0c65, 0x0c6f,
- // Entry 1C0 - 1FF
- 0x0c77, 0x0c7c, 0x0c81, 0x0c86, 0x0c8e, 0x0c9a, 0x0ca5, 0x0cac,
- 0x0cb4, 0x0cbe, 0x0cc3, 0x0cca, 0x0cdc, 0x0ceb, 0x0cf6, 0x0cfc,
- 0x0d05, 0x0d0d, 0x0d14, 0x0d1b, 0x0d21, 0x0d2d, 0x0d33, 0x0d33,
- 0x0d3e, 0x0d45, 0x0d4e, 0x0d55, 0x0d5a, 0x0d5f, 0x0d6a, 0x0d70,
- 0x0d78, 0x0d7f, 0x0d87, 0x0d8b, 0x0d92, 0x0d99, 0x0da8, 0x0daf,
- 0x0db5, 0x0dbc, 0x0dc6, 0x0dcd, 0x0dd2, 0x0ddb, 0x0de0, 0x0de0,
- 0x0deb, 0x0df1, 0x0df5, 0x0df9, 0x0e01, 0x0e10, 0x0e18, 0x0e20,
- 0x0e26, 0x0e2b, 0x0e3a, 0x0e40, 0x0e4c, 0x0e54, 0x0e5f, 0x0e69,
- // Entry 200 - 23F
- 0x0e74, 0x0e7e, 0x0e85, 0x0e8a, 0x0e91, 0x0e97, 0x0e9b, 0x0ea6,
- 0x0eac, 0x0eb0, 0x0eb6, 0x0ebd, 0x0ecb, 0x0ed7, 0x0edf, 0x0ee7,
- 0x0eeb, 0x0ef0, 0x0ef4, 0x0efa, 0x0f00, 0x0f06, 0x0f0a, 0x0f11,
- 0x0f17, 0x0f1f, 0x0f27, 0x0f2f, 0x0f38, 0x0f41, 0x0f4e, 0x0f54,
- 0x0f5a, 0x0f63, 0x0f6b, 0x0f76, 0x0f7d, 0x0f83, 0x0f8a, 0x0f8f,
- 0x0f98, 0x0f9f, 0x0fa6, 0x0fad, 0x0fb1, 0x0fb4, 0x0fba, 0x0fbf,
- 0x0fcc, 0x0fd8, 0x0fdd, 0x0fe2, 0x0fe9, 0x0ff0, 0x0ff7, 0x0ffc,
- 0x1001, 0x1009, 0x100b, 0x1013, 0x101a, 0x101e, 0x1021, 0x1025,
- // Entry 240 - 27F
- 0x102d, 0x1032, 0x103a, 0x1041, 0x104a, 0x105a, 0x1062, 0x1068,
- 0x107a, 0x107f, 0x108d, 0x1091, 0x10a8, 0x10a8, 0x10b5, 0x10c8,
- 0x10da, 0x10e8, 0x10f5, 0x1105, 0x111e, 0x112f, 0x1140, 0x1140,
- 0x1150, 0x1162, 0x1174, 0x117a, 0x118d, 0x119e, 0x11a5, 0x11b4,
- 0x11c8, 0x11e0,
-} // Size: 1244 bytes
-
-var faLangStr string = "" + // Size: 7705 bytes
- "آفاریآبخازیاوستاییآفریکانسآکانامهریآراگونیعربیآسامیآواریآیماراییترکی آذر" +
- "بایجانیباشغیریبلاروسیبلغاریبیسلامابامباراییبنگالیتبتیبرتونبوسنیاییکاتال" +
- "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیمالدی" +
- "ویجونخاییاوه\u200cاییونانیانگلیسیاسپرانتواسپانیاییاستونیاییباسکیفارسیفو" +
- "لاییفنلاندیفیجیاییفاروییفرانسویفریزی غربیایرلندیگیلی اسکاتلندیگالیسیایی" +
- "گوارانیگجراتیمانیهوسیاییعبریهندیموتویی هیریکرواتهائیتیاییمجاریارمنیهریر" +
- "وییمیان\u200cزباناندونزیاییاکسیدنتالایگبویییی سیچواناینوپیکایدوایسلندیا" +
- "یتالیاییاینوکتیتوتژاپنیجاوه\u200cایگرجیکنگوییکیکویوییکوانیاماقزاقیگرینل" +
- "ندیخمریکاناراکره\u200cایکانوریاییکشمیریکردیکومیاییکرنوالیقرقیزیلاتینلوگ" +
- "زامبورگیگانداییلیمبورگیلینگالالائوسیلیتوانیاییلوبایی‐کاتانگالتونیاییمال" +
- "اگاسیاییمارشالیمائوریاییمقدونیمالایالامیمغولیمراتیمالاییمالتیبرمه\u200c" +
- "اینائوروییانده\u200cبله\u200cای شمالینپالیاندونگاییهلندینروژی نی\u200cن" +
- "ُشکنروژی بوک\u200cمُلانده\u200cبله\u200cای جنوبیناواهویینیانجاییاوکیتای" +
- "یاوجیبواییاوروموییاوریه\u200cایآسیپنجابیپالیلهستانیپشتوپرتغالیکچواییروم" +
- "انشروندیاییرومانیاییروسیکینیاروانداییسانسکریتساردینیاییسندیسامی شمالیسا" +
- "نگوسینهالیاسلواکیاسلوونیاییساموآییشوناییسومالیاییآلبانیاییصربیسوازیاییس" +
- "وتویی جنوبیسونداییسوئدیسواحلیتامیلیتلوگوییتاجیکیتایلندیتیگرینیاییترکمنی" +
- "تسواناییتونگاییترکی استانبولیتسونگاییتاتاریتاهیتیاییاویغوریاوکراینیاردو" +
- "ازبکیونداییویتنامیولاپوکوالونیولوفیخوسایییدییوروباییچوانگیچینیزولوییآچئ" +
- "یآچولیاییآدانگمه\u200cایآدیجیاییعربی تونسیآفریهیلیآگیمآینوییاکدیآلاباما" +
- "ییآلئوتیآلتایی جنوبیانگلیسی باستانآنگیکاآرامیماپوچه\u200cایآراپاهوییعرب" +
- "ی الجزایریآراواکیعربی مراکشیعربی مصریآسوآستوریبلوچیبالیاییباواریاییباسا" +
- "ییبمونیبجاییبمباییبناییبلوچی غربیبوجپوریبیکولیبینیلری بختیاریبراجبراهوی" +
- "یبودوییبوریاتیبوگیاییبلینکادوییکاریبیسبوییچیگاچیبچاجغتاییچوکیماریاییچوک" +
- "توییچیپه\u200cویه\u200cایچروکیاییشایانیکردی سورانیقبطیترکی کریمهکاشوبید" +
- "اکوتاییدارقینیتایتادلاواریدوگریبدینکاییزرمادوگریصُربی سفلیدوآلاییهلندی " +
- "میانهدیولا فونیدایولاییامبوافیکیمصری کهناکاجوکعیلامیانگلیسی میانهاواندو" +
- "فانکیفیلیپینیفونیفرانسوی کادینفرانسوی میانهفرانسوی باستانفریزی شمالیفری" +
- "زی شرقیفریولیاییگاییگاگائوزیاییگایوییگبایاییدری زرتشتیگی\u200cئزیگیلبرت" +
- "یگیلکیآلمانی معیار میانهآلمانی علیای باستانگوندیگورونتالوگوتیگریبویییون" +
- "انی کهنآلمانی سوئیسیگوسیگویچ اینهایداییهاوائیاییهندی فیجیاییهیلی\u200cگ" +
- "اینونیهیتیهمونگصُربی علیاهوپاآیبنایلوکوییاینگوشیلوجباننگومباماچامه" +
- "\u200cایفارسی یهودیعربی یهودیقره\u200cقالپاقیقبایلیکاچینیجوکامباییکاویای" +
- "یکاباردینیتیاپیماکوندهکابووردیانوکوروخاسیاییختنیکوجراچینیکهوارکرمانجیکا" +
- "لنجینکیمبوندوییکومی پرمیاککنکانیکپله\u200cایقره\u200cچایی‐بالکاریکوروخی" +
- "شامبالابافیاییکومیکیکوتنیلادینولانگیلاهندالامبالزگیلاکوتامونگوییلوزیایی" +
- "لری شمالیلوبایی‐لولوالویسنولونداییلوئوییلوشه\u200cایلویاچینی ادبیمادورا" +
- "ییماگاهیاییمایدیلیماکاسارماندینگوییماساییمکشاییماندارمنده\u200cایمروییم" +
- "وریسینایرلندی میانهماکوا متومتاییمیکماکیمینانگ\u200cکابوییمانچوییمیته" +
- "\u200cایموهاکیماسیاییماندانگیچندین زبانکریکیمارواریارزیاییمازندرانیناپلی" +
- "ناماییآلمانی سفلینواریایینیاسینیوییکوازیونغایینرس باستاننکوسوتویی شمالی" +
- "نویرنواریایی کلاسیکنیام\u200cوزیایینیانکوله\u200cاینیورویینزیماییاوسیجی" +
- "ترکی عثمانیپانگاسینانیپهلویپامپانگاییپاپیامنتوپالائوییآلمانی پنسیلوانیا" +
- "ییفارسی باستانفنیقیپانپییپروسیپرووانسی باستانکیچه\u200cراجستانیراپانویی" +
- "راروتونگاییرومبوییرومانوییآرومانیرواییسانداوه\u200cاییاقوتیآرامی سامریس" +
- "امبوروساساکیسانتالیسانگوییسیسیلیاسکاتلندیکردی جنوبیسناسلکوپیکویرابورا س" +
- "نیایرلندی باستانتاچل\u200cهیتشانیعربی چادیسیداموییسیلزیایی سفلیسامی جنو" +
- "بیلوله سامیایناری سامیاسکولت سامیسونینکه\u200cایسغدیتاکی\u200cتاکیسریری" +
- "سوکوماییسوسوییسومریکوموریسواحلی کنگوییسریانی کلاسیکسریانیسیلزیاییتمنه" +
- "\u200cایتسوییترنوتتومیتیگره\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگا" +
- "یی نیاساتوک\u200cپیسینیتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآماز" +
- "یغی اطلس مرکزیاودمورتیاوگاریتیامبوندوییریشهویاییوتیونجووالاموواراییواشو" +
- "ییوارلپیریقلموقیسوگایییائویییاپیکانتونیزاپوتکیزناگاآمازیغی معیار مراکشز" +
- "ونیاییبدون محتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریشآلمانی" +
- " معیار سوئیسانگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی امریکا" +
- "اسپانیایی امریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی کاناداف" +
- "رانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و" +
- " کرواتیچینی ساده\u200cشدهچینی سنتی"
-
-var faLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x0016, 0x0024, 0x0034, 0x003c, 0x0046, 0x0054,
- 0x005c, 0x0066, 0x0070, 0x0080, 0x009d, 0x00ab, 0x00b9, 0x00c5,
- 0x00d3, 0x00e5, 0x00f1, 0x00f9, 0x0103, 0x0113, 0x0121, 0x0129,
- 0x0139, 0x0143, 0x014f, 0x0155, 0x0170, 0x017c, 0x0184, 0x0194,
- 0x01a0, 0x01ae, 0x01bc, 0x01c9, 0x01d5, 0x01e3, 0x01f3, 0x0205,
- 0x0217, 0x0221, 0x022b, 0x0237, 0x0245, 0x0253, 0x025f, 0x026d,
- 0x0280, 0x028e, 0x02a9, 0x02bb, 0x02c9, 0x02d5, 0x02dd, 0x02eb,
- 0x02f3, 0x02fb, 0x0310, 0x031a, 0x032c, 0x0336, 0x0340, 0x034e,
- // Entry 40 - 7F
- 0x0361, 0x0375, 0x0387, 0x0395, 0x03a6, 0x03b4, 0x03bc, 0x03ca,
- 0x03dc, 0x03f0, 0x03fa, 0x0409, 0x0411, 0x041d, 0x042d, 0x043d,
- 0x0447, 0x0457, 0x045f, 0x046b, 0x0478, 0x048a, 0x0496, 0x049e,
- 0x04ac, 0x04ba, 0x04c6, 0x04d0, 0x04e6, 0x04f4, 0x0504, 0x0512,
- 0x051e, 0x0532, 0x054f, 0x055f, 0x0575, 0x0583, 0x0595, 0x05a1,
- 0x05b5, 0x05bf, 0x05c9, 0x05d5, 0x05df, 0x05ee, 0x05fe, 0x0621,
- 0x062b, 0x063d, 0x0647, 0x0661, 0x067b, 0x069e, 0x06ae, 0x06be,
- 0x06ce, 0x06e0, 0x06f0, 0x0701, 0x0707, 0x0713, 0x071b, 0x0729,
- // Entry 80 - BF
- 0x0731, 0x073f, 0x074b, 0x0757, 0x0767, 0x0779, 0x0781, 0x079b,
- 0x07ab, 0x07bf, 0x07c7, 0x07da, 0x07e4, 0x07f2, 0x0800, 0x0814,
- 0x0822, 0x082e, 0x0840, 0x0852, 0x085a, 0x086a, 0x0881, 0x088f,
- 0x0899, 0x08a5, 0x08b1, 0x08bf, 0x08cb, 0x08d9, 0x08ed, 0x08f9,
- 0x0909, 0x0917, 0x0932, 0x0942, 0x094e, 0x0960, 0x096e, 0x097e,
- 0x0986, 0x0990, 0x099c, 0x09aa, 0x09b6, 0x09c2, 0x09cc, 0x09d8,
- 0x09de, 0x09ee, 0x09fa, 0x0a02, 0x0a0e, 0x0a16, 0x0a26, 0x0a3b,
- 0x0a4b, 0x0a5e, 0x0a6e, 0x0a76, 0x0a82, 0x0a8a, 0x0a9c, 0x0aa8,
- // Entry C0 - FF
- 0x0aa8, 0x0abf, 0x0ada, 0x0ae6, 0x0af0, 0x0b03, 0x0b03, 0x0b15,
- 0x0b2e, 0x0b3c, 0x0b51, 0x0b62, 0x0b68, 0x0b68, 0x0b74, 0x0b74,
- 0x0b74, 0x0b7e, 0x0b8c, 0x0b9e, 0x0baa, 0x0bb4, 0x0bb4, 0x0bb4,
- 0x0bbe, 0x0bca, 0x0bca, 0x0bd4, 0x0bd4, 0x0bd4, 0x0be7, 0x0bf5,
- 0x0c01, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c1e, 0x0c26,
- 0x0c34, 0x0c40, 0x0c40, 0x0c4e, 0x0c5c, 0x0c5c, 0x0c64, 0x0c64,
- 0x0c70, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c86, 0x0c8e, 0x0c98, 0x0ca4,
- 0x0cac, 0x0cba, 0x0cba, 0x0cc8, 0x0ce0, 0x0cf0, 0x0cfc, 0x0d11,
- // Entry 100 - 13F
- 0x0d19, 0x0d19, 0x0d2c, 0x0d38, 0x0d48, 0x0d56, 0x0d60, 0x0d6e,
- 0x0d6e, 0x0d7a, 0x0d88, 0x0d90, 0x0d9a, 0x0dad, 0x0dad, 0x0dbb,
- 0x0dd0, 0x0de3, 0x0df3, 0x0df3, 0x0dfb, 0x0e05, 0x0e05, 0x0e14,
- 0x0e20, 0x0e2c, 0x0e45, 0x0e45, 0x0e51, 0x0e51, 0x0e5b, 0x0e6b,
- 0x0e6b, 0x0e73, 0x0e8c, 0x0ea5, 0x0ec0, 0x0ec0, 0x0ed5, 0x0ee8,
- 0x0efa, 0x0f02, 0x0f18, 0x0f18, 0x0f24, 0x0f32, 0x0f45, 0x0f52,
- 0x0f60, 0x0f6a, 0x0f8c, 0x0fb0, 0x0fb0, 0x0fba, 0x0fcc, 0x0fd4,
- 0x0fe2, 0x0ff5, 0x100e, 0x100e, 0x100e, 0x1016, 0x1025, 0x1033,
- // Entry 140 - 17F
- 0x1033, 0x1045, 0x105c, 0x1075, 0x107d, 0x1087, 0x109a, 0x109a,
- 0x10a2, 0x10aa, 0x10aa, 0x10ba, 0x10c8, 0x10c8, 0x10c8, 0x10d4,
- 0x10e0, 0x10f3, 0x1108, 0x111b, 0x111b, 0x1132, 0x113e, 0x114a,
- 0x114e, 0x115c, 0x116a, 0x117c, 0x117c, 0x1186, 0x1194, 0x11aa,
- 0x11aa, 0x11b2, 0x11b2, 0x11c0, 0x11c8, 0x11da, 0x11e4, 0x11f2,
- 0x11f2, 0x1200, 0x1214, 0x1229, 0x1235, 0x1235, 0x1244, 0x1266,
- 0x1266, 0x1266, 0x1266, 0x1272, 0x1280, 0x128e, 0x128e, 0x129a,
- 0x12a4, 0x12b0, 0x12ba, 0x12c6, 0x12d0, 0x12d8, 0x12d8, 0x12d8,
- // Entry 180 - 1BF
- 0x12d8, 0x12e4, 0x12e4, 0x12f2, 0x1300, 0x1311, 0x1311, 0x132a,
- 0x1336, 0x1344, 0x1350, 0x135f, 0x1367, 0x1378, 0x1378, 0x1388,
- 0x1388, 0x139a, 0x13a8, 0x13b6, 0x13ca, 0x13d6, 0x13d6, 0x13e2,
- 0x13ee, 0x13fd, 0x1407, 0x1415, 0x142e, 0x143f, 0x1449, 0x1457,
- 0x1472, 0x1480, 0x148f, 0x149b, 0x14a9, 0x14a9, 0x14b9, 0x14cc,
- 0x14d6, 0x14d6, 0x14e4, 0x14e4, 0x14e4, 0x14f2, 0x1504, 0x1504,
- 0x150e, 0x151a, 0x152f, 0x153f, 0x1549, 0x1553, 0x1553, 0x155f,
- 0x155f, 0x1569, 0x157c, 0x157c, 0x1582, 0x1599, 0x15a1, 0x15be,
- // Entry 1C0 - 1FF
- 0x15d5, 0x15ec, 0x15fa, 0x1608, 0x1614, 0x1629, 0x163f, 0x1649,
- 0x165d, 0x166f, 0x167f, 0x167f, 0x16a4, 0x16a4, 0x16bb, 0x16bb,
- 0x16c5, 0x16c5, 0x16c5, 0x16d1, 0x16db, 0x16f8, 0x1703, 0x1703,
- 0x1713, 0x1723, 0x1739, 0x1739, 0x1739, 0x1747, 0x1757, 0x1757,
- 0x1757, 0x1757, 0x1765, 0x176f, 0x1784, 0x1790, 0x17a5, 0x17b3,
- 0x17bf, 0x17cd, 0x17cd, 0x17cd, 0x17db, 0x17e7, 0x17f9, 0x17f9,
- 0x180c, 0x180c, 0x1812, 0x1812, 0x181e, 0x1837, 0x1852, 0x1852,
- 0x1863, 0x186b, 0x187c, 0x188c, 0x18a5, 0x18a5, 0x18b8, 0x18c9,
- // Entry 200 - 23F
- 0x18de, 0x18f3, 0x1908, 0x1910, 0x1923, 0x192d, 0x192d, 0x192d,
- 0x193d, 0x1949, 0x1953, 0x195f, 0x1978, 0x1991, 0x199d, 0x19ad,
- 0x19ad, 0x19bc, 0x19c6, 0x19ce, 0x19d8, 0x19e9, 0x19f1, 0x19f1,
- 0x19f1, 0x19ff, 0x1a12, 0x1a12, 0x1a20, 0x1a39, 0x1a4e, 0x1a4e,
- 0x1a4e, 0x1a4e, 0x1a63, 0x1a63, 0x1a75, 0x1a85, 0x1a91, 0x1a9d,
- 0x1abf, 0x1acf, 0x1adf, 0x1af1, 0x1af9, 0x1b03, 0x1b03, 0x1b03,
- 0x1b03, 0x1b03, 0x1b09, 0x1b09, 0x1b11, 0x1b11, 0x1b1d, 0x1b29,
- 0x1b35, 0x1b45, 0x1b45, 0x1b51, 0x1b51, 0x1b5d, 0x1b69, 0x1b71,
- // Entry 240 - 27F
- 0x1b71, 0x1b71, 0x1b71, 0x1b7f, 0x1b8d, 0x1b8d, 0x1b8d, 0x1b97,
- 0x1bbb, 0x1bc9, 0x1be9, 0x1bf5, 0x1c06, 0x1c22, 0x1c39, 0x1c5b,
- 0x1c7a, 0x1c95, 0x1cb4, 0x1ccf, 0x1cfb, 0x1d18, 0x1d35, 0x1d3b,
- 0x1d56, 0x1d6f, 0x1d86, 0x1d92, 0x1dab, 0x1dc4, 0x1dd8, 0x1dee,
- 0x1e08, 0x1e19,
-} // Size: 1244 bytes
-
-var fiLangStr string = "" + // Size: 4703 bytes
- "afarabhaasiavestaafrikaansakanamharaaragoniaarabiaassamiavaariaimaraazer" +
- "ibaškiirivalkovenäjäbulgariabislamabambarabengalitiibetbretonibosniakata" +
- "laanitšetšeenitšamorrokorsikacreetšekkikirkkoslaavitšuvassikymritanskasa" +
- "ksadivehidzongkhaewekreikkaenglantiesperantoespanjavirobaskifarsifulanis" +
- "uomifidžifääriranskalänsifriisiiirigaeligaliciaguaranigudžaratimanksihau" +
- "sahepreahindihiri-motukroatiahaitiunkariarmeniahererointerlinguaindonesi" +
- "ainterlingueigbosichuanin-yiinupiaqidoislantiitaliainuktitutjapanijaavag" +
- "eorgiakongokikujukuanjamakazakkikalaallisutkhmerkannadakoreakanurikašmir" +
- "ikurdikomikornikirgiisilatinaluxemburggandalimburglingalalaoliettuakatan" +
- "ganlubalatviamalagassimarshallmaorimakedoniamalajalammongolimarathimalai" +
- "jimaltaburmanaurupohjois-ndebelenepalindongahollantinorjan nynorsknorjan" +
- " bokmåletelä-ndebelenavajonjandžaoksitaaniodžibwaoromoorijaosseettipandž" +
- "abipaalipuolapaštuportugaliketšuaretoromaanirundiromaniavenäjäruandasans" +
- "kritsardisindhipohjoissaamesangosinhalaslovakkisloveenisamoašonasomalial" +
- "baniaserbiaswazieteläsothosundaruotsiswahilitamilitelugutadžikkithaitigr" +
- "injaturkmeenitswanatongaturkkitsongatataaritahitiuiguuriukrainaurduuzbek" +
- "kivendavietnamvolapükvalloniwolofxhosajiddišjorubazhuangkiinazuluatšehat" +
- "šoliadangmeadygetunisianarabiaafrihiliaghemainuakkadialabamaaleuttigega" +
- "ltaimuinaisenglantiangikavaltakunnanarameamapudungunaraonaarapahoalgeria" +
- "narabiaarawakmarokonarabiaegyptinarabiaasuamerikkalainen viittomakielias" +
- "turiakotavaawadhibelutšibalibaijeribasaabamumbatak-tobaghomalabedžabemba" +
- "betawibenafutbadagalänsibelutšibhodžpuribikolbinibanjarkomsiksikabišnupr" +
- "iabahtiaribradžbrahuibodokooseburjaattibugibulubilinmedumbacaddokaribica" +
- "yugaatsamcebuanokigatšibtšatšagataichuukmarichinook-jargonchoctawchipewy" +
- "ancherokeecheyennesoranikopticapiznonkrimintataarikašubidakotadargitaita" +
- "delawareslevidogribdinkadjermadogrialasorbidusundualakeskihollantijola-f" +
- "onyidjuladazagaembuefikemiliamuinaisegyptiekajukelamikeskienglantialaska" +
- "njupikewondoextremadurafangfilipinomeänkielifoncajunkeskiranskamuinaisra" +
- "nskaarpitaanipohjoisfriisiitäfriisifriuligagagauzigan-kiinagajogbajazoro" +
- "astrialaisdarige’ezkiribatigilakikeskiyläsaksamuinaisyläsaksagoankonkani" +
- "gondigorontalogoottigrebomuinaiskreikkasveitsinsaksawayuufrafragusiigwit" +
- "šinhaidahakka-kiinahavaijifidžinhindihiligainoheettihmongyläsorbixiang-" +
- "kiinahupaibanibibioilokoinguušiinkeroinenjamaikankreolienglantilojbanngo" +
- "mbamachamejuutalaispersiajuutalaisarabiajuuttikarakalpakkikabyylikatšinj" +
- "jukambakavikabardikanembutyapmakondekapverdenkreolikenyangnorsunluuranni" +
- "konkorokaingangkhasikhotanikoyra chiinikhowarkirmanjkikakokalenjinkimbun" +
- "dukomipermjakkikonkanikosraekpellekaratšai-balkaarikriokinaray-akarjalak" +
- "urukhshambalabafiakölschkumykkikutenailadinolangolahndalambalezgilingua " +
- "franca novaliguuriliivilakotalombardimongolozipohjoislurilatgalliluluanl" +
- "ubaluiseñolundaluolusailuhyaklassinen kiinalazimaduramafamagahimaithilim" +
- "akassarmandingomaasaimabamokšamandarmendemerumorisyenkeski-iirimakua-mee" +
- "ttometa’micmacminangkabaumantšumanipurimohawkmossivuorimarimundangmonia " +
- "kieliäcreekmirandeesimarwarimentawaimyeneersämazandaranimin nan -kiinana" +
- "polinamaalasaksanewariniasniueao nagakwasiongiemboonnogaimuinaisnorjanov" +
- "ialn’kopohjoissothonuerklassinen newarinyamwezinyankolenyoronzimaosageos" +
- "manipangasinanpahlavipampangapapiamentupalaupicardipennsylvaniansaksapla" +
- "utdietschmuinaispersiapfaltsifoinikiapiemontepontoksenkreikkapohnpeimuin" +
- "aispreussimuinaisprovensaalikʼicheʼchimborazonylänköketšuaradžastanirapa" +
- "nuirarotongaromagnolitarifitromboromanirotumaruteenirovianaaromaniarwasa" +
- "ndawejakuuttisamarianarameasamburusasaksantalisauraštringambaysangusisil" +
- "iaskottisassarinsardieteläkurdisenecasenaseriselkuppikoyraboro sennimuin" +
- "aisiirisamogiittitašelhitshantšadinarabiasidamosleesiansaksaselayaretelä" +
- "saameluulajansaameinarinsaamekoltansaamesoninkesogdisrananserersahosater" +
- "landinfriisisukumasususumerikomorikingwanamuinaissyyriasyyriasleesiatulu" +
- "temnetesoterenotetumtigretivtokelautsahuriklingontlingittališitamašekmal" +
- "awintongatok-pisinturojotarokotsakoniatsimšitatitumbukatuvalutasawaqtuva" +
- "keskiatlaksentamazightudmurttiugaritmbundujuurivaivenetsiavepsälänsiflaa" +
- "mimaininfrankkivatjavõrovunjowalserwolaittawaraywashowarlpiriwu-kiinakal" +
- "mukkimingrelisogajaojapiyangbenyembañeengatúkantoninkiinazapoteekkibliss" +
- "kieliseelantizenagavakioitu tamazightzuniei kielellistä sisältöäzazaylei" +
- "sarabiaitävallansaksasveitsinyläsaksaaustralianenglantikanadanenglantibr" +
- "itannianenglantiamerikanenglantiamerikanespanjaeuroopanespanjameksikones" +
- "panjakanadanranskasveitsinranskaalankomaidenalasaksaflaamibrasilianportu" +
- "galieuroopanportugalimoldovaserbokroaattiyksinkertaistettu kiinaperintei" +
- "nen kiina"
-
-var fiLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000b, 0x0011, 0x001a, 0x001e, 0x0024, 0x002c,
- 0x0032, 0x0038, 0x003e, 0x0044, 0x0049, 0x0052, 0x005f, 0x0067,
- 0x006e, 0x0075, 0x007c, 0x0082, 0x0089, 0x008f, 0x0098, 0x00a3,
- 0x00ac, 0x00b3, 0x00b7, 0x00be, 0x00ca, 0x00d3, 0x00d8, 0x00de,
- 0x00e3, 0x00e9, 0x00f1, 0x00f4, 0x00fb, 0x0103, 0x010c, 0x0113,
- 0x0117, 0x011c, 0x0121, 0x0127, 0x012c, 0x0132, 0x0139, 0x013f,
- 0x014b, 0x014f, 0x0154, 0x015b, 0x0162, 0x016c, 0x0172, 0x0177,
- 0x017d, 0x0182, 0x018b, 0x0192, 0x0197, 0x019d, 0x01a4, 0x01aa,
- // Entry 40 - 7F
- 0x01b5, 0x01be, 0x01c9, 0x01cd, 0x01d9, 0x01e0, 0x01e3, 0x01ea,
- 0x01f0, 0x01f9, 0x01ff, 0x0204, 0x020b, 0x0210, 0x0216, 0x021e,
- 0x0225, 0x0230, 0x0235, 0x023c, 0x0241, 0x0247, 0x024f, 0x0254,
- 0x0258, 0x025d, 0x0265, 0x026b, 0x0274, 0x0279, 0x0280, 0x0287,
- 0x028a, 0x0291, 0x029d, 0x02a3, 0x02ac, 0x02b4, 0x02b9, 0x02c2,
- 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e5, 0x02ea, 0x02ef, 0x02fe,
- 0x0304, 0x030a, 0x0312, 0x0320, 0x032e, 0x033c, 0x0342, 0x034a,
- 0x0353, 0x035b, 0x0360, 0x0365, 0x036d, 0x0376, 0x037b, 0x0380,
- // Entry 80 - BF
- 0x0386, 0x038f, 0x0396, 0x03a1, 0x03a6, 0x03ad, 0x03b5, 0x03bb,
- 0x03c3, 0x03c8, 0x03ce, 0x03da, 0x03df, 0x03e6, 0x03ee, 0x03f6,
- 0x03fb, 0x0400, 0x0406, 0x040d, 0x0413, 0x0418, 0x0423, 0x0428,
- 0x042e, 0x0435, 0x043b, 0x0441, 0x044a, 0x044e, 0x0456, 0x045f,
- 0x0465, 0x046a, 0x0470, 0x0476, 0x047d, 0x0483, 0x048a, 0x0491,
- 0x0495, 0x049c, 0x04a1, 0x04a8, 0x04b0, 0x04b7, 0x04bc, 0x04c1,
- 0x04c8, 0x04ce, 0x04d4, 0x04d9, 0x04dd, 0x04e3, 0x04ea, 0x04f1,
- 0x04f6, 0x0504, 0x050c, 0x0511, 0x0515, 0x051b, 0x0522, 0x0529,
- // Entry C0 - FF
- 0x052c, 0x0531, 0x0540, 0x0546, 0x0557, 0x0561, 0x0567, 0x056e,
- 0x057c, 0x0582, 0x058f, 0x059c, 0x059f, 0x05bb, 0x05c2, 0x05c8,
- 0x05ce, 0x05d6, 0x05da, 0x05e1, 0x05e6, 0x05eb, 0x05f5, 0x05fc,
- 0x0602, 0x0607, 0x060d, 0x0611, 0x0614, 0x061a, 0x0628, 0x0632,
- 0x0637, 0x063b, 0x0641, 0x0644, 0x064b, 0x0655, 0x065d, 0x0663,
- 0x0669, 0x066d, 0x0672, 0x067b, 0x067f, 0x0683, 0x0688, 0x068f,
- 0x0694, 0x069a, 0x06a0, 0x06a5, 0x06ac, 0x06b0, 0x06b9, 0x06c2,
- 0x06c7, 0x06cb, 0x06d9, 0x06e0, 0x06e9, 0x06f1, 0x06f9, 0x06ff,
- // Entry 100 - 13F
- 0x0704, 0x070c, 0x0719, 0x0720, 0x0726, 0x072b, 0x0730, 0x0738,
- 0x073d, 0x0743, 0x0748, 0x074e, 0x0753, 0x075b, 0x0760, 0x0765,
- 0x0772, 0x077c, 0x0781, 0x0787, 0x078b, 0x078f, 0x0795, 0x07a2,
- 0x07a8, 0x07ad, 0x07ba, 0x07c6, 0x07cc, 0x07d7, 0x07db, 0x07e3,
- 0x07ed, 0x07f0, 0x07f5, 0x0800, 0x080d, 0x0816, 0x0823, 0x082d,
- 0x0833, 0x0835, 0x083c, 0x0845, 0x0849, 0x084e, 0x0860, 0x0867,
- 0x086f, 0x0875, 0x0883, 0x0893, 0x089e, 0x08a3, 0x08ac, 0x08b2,
- 0x08b7, 0x08c5, 0x08d2, 0x08d7, 0x08dd, 0x08e2, 0x08ea, 0x08ef,
- // Entry 140 - 17F
- 0x08fa, 0x0901, 0x090d, 0x0916, 0x091c, 0x0921, 0x092a, 0x0935,
- 0x0939, 0x093d, 0x0943, 0x0948, 0x0950, 0x095a, 0x0970, 0x0976,
- 0x097c, 0x0983, 0x0992, 0x09a1, 0x09a7, 0x09b3, 0x09ba, 0x09c1,
- 0x09c4, 0x09c9, 0x09cd, 0x09d4, 0x09db, 0x09df, 0x09e6, 0x09f5,
- 0x09fc, 0x0a11, 0x0a19, 0x0a1e, 0x0a25, 0x0a31, 0x0a37, 0x0a40,
- 0x0a44, 0x0a4c, 0x0a54, 0x0a61, 0x0a68, 0x0a6e, 0x0a74, 0x0a86,
- 0x0a8a, 0x0a93, 0x0a9a, 0x0aa0, 0x0aa8, 0x0aad, 0x0ab4, 0x0abb,
- 0x0ac2, 0x0ac8, 0x0acd, 0x0ad3, 0x0ad8, 0x0add, 0x0aef, 0x0af6,
- // Entry 180 - 1BF
- 0x0afb, 0x0b01, 0x0b09, 0x0b0e, 0x0b12, 0x0b1d, 0x0b25, 0x0b2f,
- 0x0b37, 0x0b3c, 0x0b3f, 0x0b44, 0x0b49, 0x0b58, 0x0b5c, 0x0b62,
- 0x0b66, 0x0b6c, 0x0b74, 0x0b7c, 0x0b84, 0x0b8a, 0x0b8e, 0x0b94,
- 0x0b9a, 0x0b9f, 0x0ba3, 0x0bab, 0x0bb5, 0x0bc1, 0x0bc8, 0x0bce,
- 0x0bd9, 0x0be0, 0x0be8, 0x0bee, 0x0bf3, 0x0bfc, 0x0c03, 0x0c10,
- 0x0c15, 0x0c1f, 0x0c26, 0x0c2e, 0x0c33, 0x0c38, 0x0c43, 0x0c51,
- 0x0c57, 0x0c5b, 0x0c63, 0x0c69, 0x0c6d, 0x0c71, 0x0c78, 0x0c7e,
- 0x0c87, 0x0c8c, 0x0c98, 0x0c9e, 0x0ca4, 0x0cb0, 0x0cb4, 0x0cc4,
- // Entry 1C0 - 1FF
- 0x0ccc, 0x0cd4, 0x0cd9, 0x0cde, 0x0ce3, 0x0ce9, 0x0cf3, 0x0cfa,
- 0x0d02, 0x0d0c, 0x0d11, 0x0d18, 0x0d2a, 0x0d36, 0x0d43, 0x0d4a,
- 0x0d52, 0x0d5a, 0x0d6a, 0x0d71, 0x0d7f, 0x0d91, 0x0d9a, 0x0db4,
- 0x0dbf, 0x0dc6, 0x0dcf, 0x0dd8, 0x0ddf, 0x0de4, 0x0dea, 0x0df0,
- 0x0df7, 0x0dfe, 0x0e06, 0x0e09, 0x0e10, 0x0e18, 0x0e26, 0x0e2d,
- 0x0e32, 0x0e39, 0x0e43, 0x0e4a, 0x0e4f, 0x0e56, 0x0e5c, 0x0e69,
- 0x0e74, 0x0e7a, 0x0e7e, 0x0e82, 0x0e8a, 0x0e99, 0x0ea4, 0x0eae,
- 0x0eb7, 0x0ebb, 0x0ec8, 0x0ece, 0x0edb, 0x0ee2, 0x0eed, 0x0efa,
- // Entry 200 - 23F
- 0x0f05, 0x0f10, 0x0f17, 0x0f1c, 0x0f22, 0x0f27, 0x0f2b, 0x0f3c,
- 0x0f42, 0x0f46, 0x0f4c, 0x0f52, 0x0f5a, 0x0f67, 0x0f6d, 0x0f74,
- 0x0f78, 0x0f7d, 0x0f81, 0x0f87, 0x0f8c, 0x0f91, 0x0f94, 0x0f9b,
- 0x0fa2, 0x0fa9, 0x0fb0, 0x0fb7, 0x0fbf, 0x0fcb, 0x0fd4, 0x0fda,
- 0x0fe0, 0x0fe8, 0x0fef, 0x0ff3, 0x0ffa, 0x1000, 0x1007, 0x100b,
- 0x1021, 0x1029, 0x102f, 0x1035, 0x103a, 0x103d, 0x1045, 0x104b,
- 0x1057, 0x1064, 0x1069, 0x106e, 0x1073, 0x1079, 0x1081, 0x1086,
- 0x108b, 0x1093, 0x109b, 0x10a3, 0x10ab, 0x10af, 0x10b2, 0x10b6,
- // Entry 240 - 27F
- 0x10bd, 0x10c2, 0x10cc, 0x10d9, 0x10e3, 0x10ed, 0x10f5, 0x10fb,
- 0x110d, 0x1111, 0x112c, 0x1130, 0x113b, 0x113b, 0x114a, 0x115b,
- 0x116d, 0x117c, 0x118e, 0x119e, 0x11ad, 0x11bc, 0x11cb, 0x11cb,
- 0x11d8, 0x11e6, 0x11fa, 0x1200, 0x1212, 0x1223, 0x122a, 0x1237,
- 0x124e, 0x125f,
-} // Size: 1244 bytes
-
-var filLangStr string = "" + // Size: 2154 bytes
- "AbkhazianAfrikaansAkanAmharicArabeAssameseAymaraAzerbaijaniBashkirBelaru" +
- "sianBulgarianBambaraBengaliTibetanBretonBosnianCatalanChechenCorsicanCze" +
- "chChuvashWelshDanishGermanDivehiDzongkhaEweGreekInglesEsperantoEspanyolE" +
- "stonianBasquePersianFinnishFijianFaroeseFrenchKanlurang FrisianIrishScot" +
- "s GaelicGalicianGuaraniGujaratiManxHausaHebrewHindiCroatianHaitianHungar" +
- "ianArmenianInterlinguaIndonesianInterlingueIgboSichuan YiIcelandicItalia" +
- "nInuktitutJapaneseJavaneseGeorgianKongoKikuyuKazakhKalaallisutKhmerKanna" +
- "daKoreanKashmiriKurdishCornishKirghizLatinLuxembourgishGandaLingalaLaoLi" +
- "thuanianLuba-KatangaLatvianMalagasyMaoriMacedonianMalayalamMongolianMara" +
- "thiMalayMalteseBurmeseHilagang NdebeleNepaliDutchNorwegian NynorskNorweg" +
- "ian BokmalNyanjaOccitanOromoOriyaOsseticPunjabiPolishPashtoPortugesQuech" +
- "uaRomanshRundiRomanianRussianKinyarwandaSanskritSindhiHilagang SamiSango" +
- "SinhalaSlovakSlovenianSamoanShonaSomaliAlbanianSerbianSwatiSouthern Soth" +
- "oSundaneseSwedishSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonganT" +
- "urkishTsongaTatarTahitianUyghurUkranianUrduUzbekVendaVietnameseWolofXhos" +
- "aYiddishYorubaChineseZuluAcoliAghemMapucheAsuBembaBenaKanlurang BalochiB" +
- "odoChigaCherokeeCentral KurdishTaitaZarmaLower SorbianDualaJola-FonyiEmb" +
- "uEfikFilipinoGaGagauzSwiss GermanGusiiHawaiianUpper SorbianNgombaMachame" +
- "KabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-PermyakKonkaniSha" +
- "mbalaBafiaLangiLakotaLoziHilagang LuriLuba-LuluaLuoLuyiaMasaiMeruMorisye" +
- "nMakhuwa-MeettoMeta’MohawkMundangMazanderaniNamaLow GermanKwasioN’KoNort" +
- "hern SothoNuerNyankoleKʼicheʼRomboRwaSamburuSanguKatimugang KurdishSenaK" +
- "oyraboro SenniTachelhitKatimugang SamiLule SamiInari SamiSkolt SamiComor" +
- "ianSwahili (Congo)TesoTetumKlingonTok PisinTumbukaTasawaqTamazight ng Gi" +
- "tnang AtlasHindi Kilalang WikaVaiVunjoWarlpiriSogaCantoneseStandard Moro" +
- "ccan TamazightWalang nilalaman na ukol sa wikaModernong Karaniwang Arabe" +
- "Austrian GermanSwiss High GermanIngles ng AustralyaIngles sa CanadaIngle" +
- "s ng BritishIngles (US)Latin American na EspanyolEuropean SpanishEspanyo" +
- "l ng MehikoCanadian FrenchSwiss FrenchLow SaxonFlemishPortuges ng Brasil" +
- "European PortugueseMoldavianSerbo-CroatianSimplified Chinese"
-
-var filLangIdx = []uint16{ // 609 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0016, 0x001d, 0x001d,
- 0x0022, 0x002a, 0x002a, 0x0030, 0x003b, 0x0042, 0x004c, 0x0055,
- 0x0055, 0x005c, 0x0063, 0x006a, 0x0070, 0x0077, 0x007e, 0x0085,
- 0x0085, 0x008d, 0x008d, 0x0092, 0x0092, 0x0099, 0x009e, 0x00a4,
- 0x00aa, 0x00b0, 0x00b8, 0x00bb, 0x00c0, 0x00c6, 0x00cf, 0x00d7,
- 0x00df, 0x00e5, 0x00ec, 0x00ec, 0x00f3, 0x00f9, 0x0100, 0x0106,
- 0x0117, 0x011c, 0x0128, 0x0130, 0x0137, 0x013f, 0x0143, 0x0148,
- 0x014e, 0x0153, 0x0153, 0x015b, 0x0162, 0x016b, 0x0173, 0x0173,
- // Entry 40 - 7F
- 0x017e, 0x0188, 0x0193, 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01aa,
- 0x01b1, 0x01ba, 0x01c2, 0x01ca, 0x01d2, 0x01d7, 0x01dd, 0x01dd,
- 0x01e3, 0x01ee, 0x01f3, 0x01fa, 0x0200, 0x0200, 0x0208, 0x020f,
- 0x020f, 0x0216, 0x021d, 0x0222, 0x022f, 0x0234, 0x0234, 0x023b,
- 0x023e, 0x0248, 0x0254, 0x025b, 0x0263, 0x0263, 0x0268, 0x0272,
- 0x027b, 0x0284, 0x028b, 0x0290, 0x0297, 0x029e, 0x029e, 0x02ae,
- 0x02b4, 0x02b4, 0x02b9, 0x02ca, 0x02da, 0x02da, 0x02da, 0x02e0,
- 0x02e7, 0x02e7, 0x02ec, 0x02f1, 0x02f8, 0x02ff, 0x02ff, 0x0305,
- // Entry 80 - BF
- 0x030b, 0x0313, 0x031a, 0x0321, 0x0326, 0x032e, 0x0335, 0x0340,
- 0x0348, 0x0348, 0x034e, 0x035b, 0x0360, 0x0367, 0x036d, 0x0376,
- 0x037c, 0x0381, 0x0387, 0x038f, 0x0396, 0x039b, 0x03a9, 0x03b2,
- 0x03b9, 0x03c0, 0x03c5, 0x03cb, 0x03d0, 0x03d4, 0x03dc, 0x03e3,
- 0x03e9, 0x03ef, 0x03f6, 0x03fc, 0x0401, 0x0409, 0x040f, 0x0417,
- 0x041b, 0x0420, 0x0425, 0x042f, 0x042f, 0x042f, 0x0434, 0x0439,
- 0x0440, 0x0446, 0x0446, 0x044d, 0x0451, 0x0451, 0x0456, 0x0456,
- 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
- // Entry C0 - FF
- 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0462, 0x0462, 0x0462,
- 0x0462, 0x0462, 0x0462, 0x0462, 0x0465, 0x0465, 0x0465, 0x0465,
- 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465,
- 0x0465, 0x046a, 0x046a, 0x046e, 0x046e, 0x046e, 0x047f, 0x047f,
- 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f,
- 0x047f, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483,
- 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0488, 0x0488, 0x0488,
- 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0490, 0x0490, 0x049f,
- // Entry 100 - 13F
- 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x04a4, 0x04a4,
- 0x04a4, 0x04a4, 0x04a4, 0x04a9, 0x04a9, 0x04b6, 0x04b6, 0x04bb,
- 0x04bb, 0x04c5, 0x04c5, 0x04c5, 0x04c9, 0x04cd, 0x04cd, 0x04cd,
- 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04d5,
- 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5,
- 0x04d5, 0x04d7, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
- 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
- 0x04dd, 0x04dd, 0x04e9, 0x04e9, 0x04e9, 0x04ee, 0x04ee, 0x04ee,
- // Entry 140 - 17F
- 0x04ee, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x0503, 0x0503,
- 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503,
- 0x0509, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0516, 0x0516,
- 0x0516, 0x051b, 0x051b, 0x051b, 0x051b, 0x051b, 0x0522, 0x052e,
- 0x052e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053a, 0x053a, 0x053a,
- 0x053a, 0x0542, 0x0542, 0x054e, 0x0555, 0x0555, 0x0555, 0x0555,
- 0x0555, 0x0555, 0x0555, 0x0555, 0x055d, 0x0562, 0x0562, 0x0562,
- 0x0562, 0x0562, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567,
- // Entry 180 - 1BF
- 0x0567, 0x056d, 0x056d, 0x056d, 0x0571, 0x057e, 0x057e, 0x0588,
- 0x0588, 0x0588, 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590,
- 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0595, 0x0595, 0x0595,
- 0x0595, 0x0595, 0x0599, 0x05a1, 0x05a1, 0x05af, 0x05b6, 0x05b6,
- 0x05b6, 0x05b6, 0x05b6, 0x05bc, 0x05bc, 0x05bc, 0x05c3, 0x05c3,
- 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05ce, 0x05ce,
- 0x05ce, 0x05d2, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05e2,
- 0x05e2, 0x05e2, 0x05e2, 0x05e2, 0x05e8, 0x05f6, 0x05fa, 0x05fa,
- // Entry 1C0 - 1FF
- 0x05fa, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602,
- 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602,
- 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x060b, 0x060b,
- 0x060b, 0x060b, 0x060b, 0x060b, 0x060b, 0x0610, 0x0610, 0x0610,
- 0x0610, 0x0610, 0x0610, 0x0613, 0x0613, 0x0613, 0x0613, 0x061a,
- 0x061a, 0x061a, 0x061a, 0x061a, 0x061f, 0x061f, 0x061f, 0x061f,
- 0x0631, 0x0631, 0x0635, 0x0635, 0x0635, 0x0644, 0x0644, 0x0644,
- 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x065c, 0x0665,
- // Entry 200 - 23F
- 0x066f, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679,
- 0x0679, 0x0679, 0x0679, 0x0681, 0x0690, 0x0690, 0x0690, 0x0690,
- 0x0690, 0x0690, 0x0694, 0x0694, 0x0699, 0x0699, 0x0699, 0x0699,
- 0x0699, 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a9, 0x06a9,
- 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06b0, 0x06b0, 0x06b7, 0x06b7,
- 0x06d1, 0x06d1, 0x06d1, 0x06d1, 0x06e4, 0x06e7, 0x06e7, 0x06e7,
- 0x06e7, 0x06e7, 0x06e7, 0x06e7, 0x06ec, 0x06ec, 0x06ec, 0x06ec,
- 0x06ec, 0x06f4, 0x06f4, 0x06f4, 0x06f4, 0x06f8, 0x06f8, 0x06f8,
- // Entry 240 - 27F
- 0x06f8, 0x06f8, 0x06f8, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701,
- 0x071c, 0x071c, 0x073c, 0x073c, 0x0756, 0x0756, 0x0765, 0x0776,
- 0x0789, 0x0799, 0x07aa, 0x07b5, 0x07cf, 0x07df, 0x07f1, 0x07f1,
- 0x0800, 0x080c, 0x0815, 0x081c, 0x082e, 0x0841, 0x084a, 0x0858,
- 0x086a,
-} // Size: 1242 bytes
-
-var frLangStr string = "" + // Size: 4218 bytes
- "afarabkhazeavestiqueafrikaansakanamhariquearagonaisarabeassamaisavarayma" +
- "raazéribachkirbiélorussebulgarebichelamarbambarabengalitibétainbretonbos" +
- "niaquecatalantchétchènechamorrocorsecreetchèqueslavon d’églisetchouvache" +
- "galloisdanoisallemandmaldiviendzongkhaéwégrecanglaisespérantoespagnolest" +
- "onienbasquepersanpeulfinnoisfidjienféroïenfrançaisfrison occidentalirlan" +
- "daisgaélique écossaisgalicienguaranigujaratimanxhaoussahébreuhindihiri m" +
- "otucroatecréole haïtienhongroisarménienhérérointerlinguaindonésieninterl" +
- "ingueigboyi du Sichuaninupiaqidoislandaisitalieninuktitutjaponaisjavanai" +
- "sgéorgienkongokikuyukuanyamakazakhgroenlandaiskhmerkannadacoréenkanourik" +
- "ashmirikurdekomicorniquekirghizelatinluxembourgeoisgandalimbourgeoisling" +
- "alalaolituanienluba-katangalettonmalgachemarshallmaorimacédonienmalayala" +
- "mmongolmarathemalaismaltaisbirmannauruanndébélé du Nordnépalaisndonganée" +
- "rlandaisnorvégien nynorsknorvégien bokmålndébélé du Sudnavahonyanjaoccit" +
- "anojibwaoromooriyaossètependjabipalipolonaispachtoportugaisquechuaromanc" +
- "heroundiroumainrusserwandasanskritsardesindhisami du Nordsanghocinghalai" +
- "sslovaqueslovènesamoanshonasomalialbanaisserbeswatisesothosoundanaissuéd" +
- "oisswahilitamoultélougoutadjikthaïtigrignaturkmènetswanatonguienturctson" +
- "gatatartahitienouïghourukrainienourdououzbekvendavietnamienvolapukwallon" +
- "wolofxhosayiddishyorubazhuangchinoiszoulouacehacoliadangmeadyghéenafrihi" +
- "liaghemaïnouakkadienaléoutealtaï du Sudancien anglaisangikaaraméenmapuch" +
- "earapahoarawakassouasturienawadhibaloutchibalinaisbassabamounghomalabedj" +
- "abembabénabafutbaloutchi occidentalbhojpuribikolbinikomsiksikabrajbodoak" +
- "oosebouriatebugibouloublinmedumbacaddocaribecayugaatsamcebuanokigachibch" +
- "atchaghataïchuukmarijargon chinookchoctawchipewyancherokeecheyennesorani" +
- "copteturc de Criméekachoubedakotadargwataitadelawareslaveydogribdinkazar" +
- "madogribas-sorabedoualamoyen néerlandaisdiola-fognydiouladazagaembouefik" +
- "égyptien ancienekajukélamitemoyen anglaiséwondofangfilipinofonmoyen fra" +
- "nçaisancien françaisfranco-provençalfrison du Nordfrison orientalfrioula" +
- "ngagagaouzegayogbayaguèzegilbertaismoyen haut-allemandancien haut allema" +
- "ndgondigorontalogotiquegrebogrec anciensuisse allemandgusiigwichʼinhaida" +
- "hawaïenhiligaynonhittitehmonghaut-sorabehupaibanibibioilokanoingoucheloj" +
- "banngombamachamejudéo-persanjudéo-arabekarakalpakkabylekachinjjukambakaw" +
- "ikabardinkanemboutyapmakondecapverdienkorokhasikhotanaiskoyra chiinikako" +
- "kalenjinkiMboundoukomi-permiakkonkanikusaienkpellékaratchaï balkarcaréli" +
- "enkurukhchambalabafiafrancique ripuairekoumykkutenailadinolangilahndalam" +
- "balezghienlakotamongolozilori du Nordluba-lulualuisenolundaluolushaiolul" +
- "uyiamaduraismafamagahimaithilimakassarmandinguemasaimabamoksamandarmendé" +
- "meroucréole mauricienmoyen irlandaismakhuwa-meettométa’micmacminangkabau" +
- "mandchoumanipurimohawkmorémundangmultilinguecreekmirandaismarwarîmyènèer" +
- "zyamazandéraninapolitainnamabas-allemandnewariniasniuékwasiongiemboonnog" +
- "aïvieux norroisn’kosotho du Nordnuernewarî classiquenyamwezinyankolényor" +
- "onzemaosageturc ottomanpangasinanpahlavipampanganpapiamentopalaupersan a" +
- "ncienphénicienpohnpeiprovençal ancienk’iche’rajasthanirapanuirarotongien" +
- "rombotziganevalaquerwasandaweiakoutearaméen samaritainsamburusasaksantal" +
- "ngambaysangusicilienécossaiskurde du Sudsenecasenaselkoupekoyraboro senn" +
- "iancien irlandaischleuhshanarabe tchadiensidamosami du Sudsami de Lulesa" +
- "mi d’Inarisami skoltsoninkésogdiensranan tongosérèresahosukumasoussousum" +
- "ériencomorienswahili du Congosyriaque classiquesyriaquetemnetesoterenot" +
- "etumtigrétivtokelauklingontlingittamacheqtonga nyasatok pisintarokotsims" +
- "hiantumbukatuvalutasawaqtouvatamazightoudmourteougaritiqueumbunduracinev" +
- "aïvotevunjowalserwalamowaraywashowarlpirikalmouksogayaoyapoisyangbenyemb" +
- "acantonaiszapotèquesymboles Blisszenagaamazighe standard marocainzunisan" +
- "s contenu linguistiquezazakiarabe standard moderneallemand autrichienall" +
- "emand suisseanglais australienanglais canadienanglais britanniqueanglais" +
- " américainespagnol latino-américainespagnol européenespagnol mexicainfra" +
- "nçais canadienfrançais suissebas-saxon néerlandaisflamandportugais brési" +
- "lienportugais européenmoldaveserbo-croatechinois simplifiéchinois tradit" +
- "ionnel"
-
-var frLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0033,
- 0x0038, 0x0040, 0x0044, 0x004a, 0x0050, 0x0057, 0x0062, 0x0069,
- 0x0073, 0x007a, 0x0081, 0x008a, 0x0090, 0x0099, 0x00a0, 0x00ac,
- 0x00b4, 0x00b9, 0x00bd, 0x00c5, 0x00d7, 0x00e1, 0x00e8, 0x00ee,
- 0x00f6, 0x00ff, 0x0107, 0x010c, 0x0110, 0x0117, 0x0121, 0x0129,
- 0x0131, 0x0137, 0x013d, 0x0141, 0x0148, 0x014f, 0x0158, 0x0161,
- 0x0172, 0x017b, 0x018e, 0x0196, 0x019d, 0x01a5, 0x01a9, 0x01b0,
- 0x01b7, 0x01bc, 0x01c5, 0x01cb, 0x01db, 0x01e3, 0x01ec, 0x01f4,
- // Entry 40 - 7F
- 0x01ff, 0x020a, 0x0215, 0x0219, 0x0226, 0x022d, 0x0230, 0x0239,
- 0x0240, 0x0249, 0x0251, 0x0259, 0x0262, 0x0267, 0x026d, 0x0275,
- 0x027b, 0x0287, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a9, 0x02ae,
- 0x02b2, 0x02ba, 0x02c2, 0x02c7, 0x02d5, 0x02da, 0x02e6, 0x02ed,
- 0x02f0, 0x02f9, 0x0305, 0x030b, 0x0313, 0x031b, 0x0320, 0x032b,
- 0x0334, 0x033a, 0x0341, 0x0347, 0x034e, 0x0354, 0x035b, 0x036d,
- 0x0376, 0x037c, 0x0388, 0x039a, 0x03ac, 0x03bd, 0x03c3, 0x03c9,
- 0x03d0, 0x03d6, 0x03db, 0x03e0, 0x03e7, 0x03ef, 0x03f3, 0x03fb,
- // Entry 80 - BF
- 0x0401, 0x040a, 0x0411, 0x0419, 0x041f, 0x0426, 0x042b, 0x0431,
- 0x0439, 0x043e, 0x0444, 0x0450, 0x0456, 0x0460, 0x0468, 0x0470,
- 0x0476, 0x047b, 0x0481, 0x0489, 0x048e, 0x0493, 0x049a, 0x04a4,
- 0x04ac, 0x04b3, 0x04b9, 0x04c2, 0x04c8, 0x04cd, 0x04d5, 0x04de,
- 0x04e4, 0x04ec, 0x04f0, 0x04f6, 0x04fb, 0x0503, 0x050c, 0x0515,
- 0x051b, 0x0521, 0x0526, 0x0530, 0x0537, 0x053d, 0x0542, 0x0547,
- 0x054e, 0x0554, 0x055a, 0x0561, 0x0567, 0x056b, 0x0570, 0x0577,
- 0x0580, 0x0580, 0x0588, 0x058d, 0x0593, 0x059b, 0x059b, 0x05a3,
- // Entry C0 - FF
- 0x05a3, 0x05b0, 0x05be, 0x05c4, 0x05cc, 0x05d3, 0x05d3, 0x05da,
- 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e5, 0x05e5, 0x05ed, 0x05ed,
- 0x05f3, 0x05fc, 0x0604, 0x0604, 0x0609, 0x060f, 0x060f, 0x0616,
- 0x061b, 0x0620, 0x0620, 0x0625, 0x062a, 0x062a, 0x063e, 0x0646,
- 0x064b, 0x064f, 0x064f, 0x0652, 0x0659, 0x0659, 0x0659, 0x065d,
- 0x065d, 0x0661, 0x0667, 0x066f, 0x0673, 0x0679, 0x067d, 0x0684,
- 0x0689, 0x068f, 0x0695, 0x069a, 0x06a1, 0x06a5, 0x06ac, 0x06b7,
- 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ee, 0x06f4,
- // Entry 100 - 13F
- 0x06f9, 0x06f9, 0x0708, 0x0710, 0x0716, 0x071c, 0x0721, 0x0729,
- 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074e, 0x074e, 0x0754,
- 0x0766, 0x0771, 0x0777, 0x077d, 0x0782, 0x0786, 0x0786, 0x0796,
- 0x079c, 0x07a4, 0x07b1, 0x07b1, 0x07b8, 0x07b8, 0x07bc, 0x07c4,
- 0x07c4, 0x07c7, 0x07c7, 0x07d6, 0x07e6, 0x07f7, 0x0805, 0x0814,
- 0x081c, 0x081e, 0x0826, 0x0826, 0x082a, 0x082f, 0x082f, 0x0835,
- 0x083f, 0x083f, 0x0852, 0x0866, 0x0866, 0x086b, 0x0874, 0x087b,
- 0x0880, 0x088b, 0x089a, 0x089a, 0x089a, 0x089f, 0x08a8, 0x08ad,
- // Entry 140 - 17F
- 0x08ad, 0x08b5, 0x08b5, 0x08bf, 0x08c6, 0x08cb, 0x08d6, 0x08d6,
- 0x08da, 0x08de, 0x08e4, 0x08eb, 0x08f3, 0x08f3, 0x08f3, 0x08f9,
- 0x08ff, 0x0906, 0x0913, 0x091f, 0x091f, 0x0929, 0x092f, 0x0935,
- 0x0938, 0x093d, 0x0941, 0x0949, 0x0951, 0x0955, 0x095c, 0x0966,
- 0x0966, 0x096a, 0x096a, 0x096f, 0x0978, 0x0984, 0x0984, 0x0984,
- 0x0988, 0x0990, 0x099a, 0x09a6, 0x09ad, 0x09b4, 0x09bb, 0x09cc,
- 0x09cc, 0x09cc, 0x09d5, 0x09db, 0x09e3, 0x09e8, 0x09fa, 0x0a00,
- 0x0a07, 0x0a0d, 0x0a12, 0x0a18, 0x0a1d, 0x0a25, 0x0a25, 0x0a25,
- // Entry 180 - 1BF
- 0x0a25, 0x0a2b, 0x0a2b, 0x0a30, 0x0a34, 0x0a40, 0x0a40, 0x0a4a,
- 0x0a51, 0x0a56, 0x0a59, 0x0a5f, 0x0a67, 0x0a67, 0x0a67, 0x0a6f,
- 0x0a73, 0x0a79, 0x0a81, 0x0a89, 0x0a92, 0x0a97, 0x0a9b, 0x0aa0,
- 0x0aa6, 0x0aac, 0x0ab1, 0x0ac2, 0x0ad1, 0x0adf, 0x0ae7, 0x0aed,
- 0x0af8, 0x0b00, 0x0b08, 0x0b0e, 0x0b13, 0x0b13, 0x0b1a, 0x0b25,
- 0x0b2a, 0x0b33, 0x0b3b, 0x0b3b, 0x0b42, 0x0b47, 0x0b53, 0x0b53,
- 0x0b5d, 0x0b61, 0x0b6d, 0x0b73, 0x0b77, 0x0b7c, 0x0b7c, 0x0b82,
- 0x0b8b, 0x0b91, 0x0b9e, 0x0b9e, 0x0ba4, 0x0bb1, 0x0bb5, 0x0bc6,
- // Entry 1C0 - 1FF
- 0x0bce, 0x0bd7, 0x0bdc, 0x0be1, 0x0be6, 0x0bf2, 0x0bfc, 0x0c03,
- 0x0c0c, 0x0c16, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c28, 0x0c28,
- 0x0c32, 0x0c32, 0x0c32, 0x0c39, 0x0c39, 0x0c4a, 0x0c55, 0x0c55,
- 0x0c5f, 0x0c66, 0x0c71, 0x0c71, 0x0c71, 0x0c76, 0x0c7d, 0x0c7d,
- 0x0c7d, 0x0c7d, 0x0c84, 0x0c87, 0x0c8e, 0x0c95, 0x0ca8, 0x0caf,
- 0x0cb4, 0x0cba, 0x0cba, 0x0cc1, 0x0cc6, 0x0cce, 0x0cd7, 0x0cd7,
- 0x0ce3, 0x0ce9, 0x0ced, 0x0ced, 0x0cf5, 0x0d04, 0x0d14, 0x0d14,
- 0x0d1a, 0x0d1e, 0x0d2c, 0x0d32, 0x0d32, 0x0d32, 0x0d3d, 0x0d49,
- // Entry 200 - 23F
- 0x0d57, 0x0d61, 0x0d69, 0x0d70, 0x0d7c, 0x0d84, 0x0d88, 0x0d88,
- 0x0d8e, 0x0d95, 0x0d9e, 0x0da6, 0x0db6, 0x0dc8, 0x0dd0, 0x0dd0,
- 0x0dd0, 0x0dd5, 0x0dd9, 0x0ddf, 0x0de4, 0x0dea, 0x0ded, 0x0df4,
- 0x0df4, 0x0dfb, 0x0e02, 0x0e02, 0x0e0a, 0x0e15, 0x0e1e, 0x0e1e,
- 0x0e24, 0x0e24, 0x0e2d, 0x0e2d, 0x0e34, 0x0e3a, 0x0e41, 0x0e46,
- 0x0e4f, 0x0e58, 0x0e63, 0x0e6a, 0x0e70, 0x0e74, 0x0e74, 0x0e74,
- 0x0e74, 0x0e74, 0x0e78, 0x0e78, 0x0e7d, 0x0e83, 0x0e89, 0x0e8e,
- 0x0e93, 0x0e9b, 0x0e9b, 0x0ea2, 0x0ea2, 0x0ea6, 0x0ea9, 0x0eaf,
- // Entry 240 - 27F
- 0x0eb6, 0x0ebb, 0x0ebb, 0x0ec4, 0x0ece, 0x0edc, 0x0edc, 0x0ee2,
- 0x0efc, 0x0f00, 0x0f19, 0x0f1f, 0x0f35, 0x0f35, 0x0f48, 0x0f57,
- 0x0f69, 0x0f79, 0x0f8c, 0x0f9e, 0x0fb8, 0x0fca, 0x0fdb, 0x0fdb,
- 0x0fed, 0x0ffd, 0x1013, 0x101a, 0x102e, 0x1041, 0x1048, 0x1054,
- 0x1066, 0x107a,
-} // Size: 1244 bytes
-
-var frCALangStr string = "araukanluoMeta’bas allemand"
-
-var frCALangIdx = []uint16{ // 435 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 100 - 13F
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 140 - 17F
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 180 - 1BF
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x001d,
-} // Size: 894 bytes
-
-var guLangStr string = "" + // Size: 11388 bytes
- "અફારઅબખાજિયનઅવેસ્તનઆફ્રિકન્સઅકાનએમ્હારિકઅર્ગોનીઝઅરબીઆસામીઅવેરિકઆયમારાઅઝર" +
- "બૈજાનીબશ્કીરબેલારુશિયનબલ્ગેરિયનબિસ્લામાબામ્બારાબંગાળીતિબેટીયનબ્રેટોનબો" +
- "સ્નિયનકતલાનચેચનકેમોરોકોર્સિકનક્રીચેકચર્ચ સ્લાવિકચૂવાશવેલ્શડેનિશજર્મનદિ" +
- "વેહીડ્ઝોંગ્ખાઈવગ્રીકઅંગ્રેજીએસ્પેરાન્ટોસ્પેનિશએસ્ટોનિયનબાસ્કફારસીફુલાહ" +
- "ફિનિશફિજીયનફોરિસ્તફ્રેન્ચપશ્ચિમી ફ્રિસિયનઆઇરિશસ્કોટ્સ ગેલિકગેલિશિયનગુઆ" +
- "રાનીગુજરાતીમાંક્સહૌસાહીબ્રુહિન્દીહિરી મોટૂક્રોએશિયનહૈતીયનહંગેરિયનઆર્મે" +
- "નિયનહેરેરોઇંટરલિંગુઆઇન્ડોનેશિયનઇંટરલિંગઇગ્બોસિચુઆન યીઇનુપિયાકઇડૌઆઇસલેન" +
- "્ડિકઇટાલિયનઇનુકિટૂટજાપાનીઝજાવાનીસજ્યોર્જિઅનકોંગોકિકુયૂક્વાન્યામાકઝાખકલ" +
- "ાલ્લિસુતખ્મેરકન્નડકોરિયનકનુરીકાશ્મીરીકુર્દિશકોમીકોર્નિશકિર્ગીઝલેટિનલક્" +
- "ઝેમબર્ગિશગાંડાલિંબૂર્ગિશલિંગાલાલાઓથિયનલિથુનિયનલ્યૂબા કટાંગાલાતવિયનમલાગ" +
- "સીમાર્શલીઝમાઓરીમેસેડોનિયનમલયાલમમોંગોલિયનમરાઠીમલયમાલ્ટિઝબર્મીઝનાઉરૂઉત્ત" +
- "ર દેબેલનેપાળીડોન્ગાડચનૉર્વેજીયન નાયનૉર્સ્કનોર્વેજીયન બોકમાલદક્ષિણ દેબે" +
- "લનાવાજોન્યાન્જાઓક્સિટનઓઝિંબ્વાઓરોમોઉડિયાઓસ્સેટિકપંજાબીપાલીપોલીશપશ્તોપો" +
- "ર્ટુગીઝક્વેચુઆરોમાન્શરૂન્દીરોમાનિયનરશિયનકિન્યારવાન્ડાસંસ્કૃતસાર્દિનિયન" +
- "સિંધીઉત્તરીય સામીસાંગોસિંહાલીસ્લોવૅકસ્લોવેનિયનસામોનશોનાસોમાલીઅલ્બેનિયન" +
- "સર્બિયનસ્વાતીસદર્ન સોથોસંડેનીઝસ્વીડિશસ્વાહિલીતમિલતેલુગુતાજીકથાઈટાઇગ્રિ" +
- "નિયાતુર્કમેનત્સ્વાનાટોંગાનટર્કીશસોંગાતતારતાહિતિયનઉઇગુરયુક્રેનિયનઉર્દૂઉ" +
- "ઝ્બેકવેન્દાવિયેતનામીસવોલાપુકવાલૂનવોલોફખોસાયિદ્દિશયોરૂબાઝુઆગચાઇનીઝઝુલુઅ" +
- "ચીનીએકોલીઅદાંગ્મીઅદિઘેઅફ્રિહિલીઅઘેમઐનુઅક્કાદીયાનઅલેઉતદક્ષિણ અલ્તાઇજુની" +
- " અંગ્રેજીઅંગીકાઅર્માઇકમેપુચેઅરાપાહોઆલ્જેરિયન અરબીઅરાવકમોરોક્કન અરબીઈજિપ્" +
- "શિયન અરબીઅસુઅસ્તુરિયનઅવધીબલૂચીબાલિનીસબસાબેજાબેમ્બાબેનાપશ્ચિમી બાલોચીભો" +
- "જપુરીબિકોલબિનીસિક્સિકાબિષ્નુપ્રિયાવ્રજબ્રાહુઈબોડોબુરિયાતબગિનીસબ્લિનકડ્" +
- "ડોકરિબઅત્સમસિબુઆનોચિગાચિબ્ચાછગાતાઇચૂકીસેમારીચિનૂક જાર્ગનચોક્તૌશિપેવ્યા" +
- "નશેરોકીશેયેન્નસેન્ટ્રલ કુર્દિશકોપ્ટિકક્રિમિયન તુર્કીકાશુબિયનદાકોતાદાર્" +
- "ગવાતૈતાદેલેવેરસ્લેવડોગ્રિબદિન્કાઝર્માડોગ્રીનિમ્ન સોર્બિયનદુઆલામધ્ય ડચજ" +
- "ોલા-ફોન્યીડ્યુલાઍમ્બુએફિકપ્રાચીન ઇજીપ્શિયનએકાજુકએલામાઇટમિડિલ અંગ્રેજીઇ" +
- "વોન્ડોફેંગફિલિપિનોફોનમિડિલ ફ્રેંચજૂની ફ્રેંચનોર્ધર્ન ફ્રિશિયનપૂર્વ ફ્ર" +
- "િશિયનફ્રિયુલિયાનGaગાગાઝગાયોબાયાઝોરોસ્ટ્રિઅન દારીગીઝજિલ્બરટીઝમધ્ય હાઇ જ" +
- "ર્મનજૂની હાઇ જર્મનગોઅન કોંકણીગોંડીગોરોન્તાલોગોથિકગ્રેબોપ્રાચીન ગ્રીકસ્" +
- "વિસ જર્મનગુસીગ્વિચ’ઇનહૈડાહાવાઇયનફીજી હિંદીહિલિગેનોનહિટ્ટિતેમોંગઅપ્પર સ" +
- "ોર્બિયનહૂપાઇબાનઇલોકોઇંગુશલોજ્બાનનગોમ્બામકામેજુદેઓ-પર્શિયનજુદેઓ-અરબીકાર" +
- "ા-કલ્પકકબાઇલકાચિનજ્જુકમ્બાકાવીકબાર્ડિયનત્યાપમકોન્ડેકાબુવર્ડિઆનુકોરોખાસ" +
- "ીખોતાનીસકોયરા ચિનિકલેજિનકિમ્બન્દુકોમી-પર્મ્યાકકોંકણીકોસરિયનક્પેલ્લેકરા" +
- "ચય-બલ્કારકરેલિયનકુરૂખશમ્બાલાબફિયાકુમીકકુતેનાઇલાદીનોલંગીલાહન્ડાલામ્બાલે" +
- "ઝધીયનલિંગ્વા ફેન્કા નોવાલાકોટામોગોલોઝીઉત્તરીય લુરીલ્યૂબા-લુલુઆલુઇસેનોલ" +
- "ુન્ડાલ્યુઓલુશાઇલુઈયામાદુરીસમગહીમૈથિલીમકાસરમન્ડિન્ગોમસાઇમોક્ષમંડારમેન્ડ" +
- "ેમેરુમોરીસ્યેનમિડિલ આઇરિશમાખુવા-મીટ્ટુમેતામિકમેકમિનાંગ્કાબાઉમાન્ચુમણિપ" +
- "ુરીમોહૌકમોસ્સીપશ્ચિમી મારીમુનડાન્ગબહુવિધ ભાષાક્રિકમિરાંડીમારવાડીએર્ઝયા" +
- "મઝાન્દેરાનીનેપોલિટાનનમાલો જર્મનનેવાડીનિયાસનિયુઆનક્વાસિઓનોગાઇજૂની નોર્સ" +
- "એન’કોઉતરી સોથોનુએરપરંપરાગત નેવારીન્યામવેઝીન્યાનકોલન્યોરોન્ઝિમાઓસેજઓટોમ" +
- "ાન તુર્કિશપંગાસીનાનપહલવીપમ્પાન્ગાપાપિયામેન્ટોપલાઉઆનજૂની ફારસીફોનિશિયનપ" +
- "ોહપિએનજુની પ્રોવેન્સલકિચેરાજસ્થાનીરાપાનુઇરારોટોંગનરોમ્બોરોમાનીઅરોમેનિય" +
- "નરવાસોંડવેયાકૂતસામરિટાન અરેમિકસમ્બુરુસાસાકસંતાલીસાંગુસિસિલિયાનસ્કોટ્સસ" +
- "ર્ઘન કુર્દીશસેનાસેલ્કપકોયરાબોરો સેન્નીજૂની આયરિશતેશીલહિટશેનસિદામોદક્ષિ" +
- "ણ સામીલ્યુલ સામીઇનારી સામીસ્કોલ્ટ સામીસોનિન્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેર" +
- "ેરસુકુમાસુસુસુમેરિયનકોમોરિયનકોંગો સ્વાહિલીપરંપરાગત સિરિએકસિરિએકતુલુટિમ" +
- "્નેતેસોતેરેનોતેતુમટાઇગ્રેતિવતોકેલાઉક્લિન્ગોનલિંગિતતામાશેખન્યાસા ટોન્ગા" +
- "ટોક પિસિનસિમ્શિયનમુસ્લિમ તાટતુમ્બુકાતુવાલુતસાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ" +
- " તામાઝિગ્ટઉદમુર્તયુગેરિટિકઉમ્બુન્ડૂમૂલવાઇવોટિકવુન્જોવલામોવારેવાશોવાર્લ્પ" +
- "ીરીકાલ્મિકસોગાયાઓયાપીસકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરો" +
- "ક્કન તામાઝિગ્ટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામોડર્ન સ્ટાન્ડર્ડ અ" +
- "રબીઓસ્ટ્રિઅન જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજીકેનેડિયન અંગ્રેજી" +
- "બ્રિટિશ અંગ્રેજીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિશયુરોપિયન સ્પેનિશમ" +
- "ેક્સિકન સ્પેનિશકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચલો સેક્સોનફ્લેમિશબ્રાઝિલીયન " +
- "પોર્ટુગીઝયુરોપિયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનસરળીકૃત ચાઇનીઝપારંપ" +
- "રિક ચાઇનીઝ"
-
-var guLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0024, 0x0039, 0x0054, 0x0060, 0x0078, 0x0090,
- 0x009c, 0x00ab, 0x00bd, 0x00cf, 0x00ea, 0x00fc, 0x011a, 0x0135,
- 0x014d, 0x0165, 0x0177, 0x018f, 0x01a4, 0x01bc, 0x01cb, 0x01d7,
- 0x01e9, 0x0201, 0x020d, 0x0216, 0x0238, 0x0247, 0x0256, 0x0265,
- 0x0274, 0x0286, 0x02a1, 0x02a7, 0x02b6, 0x02ce, 0x02ef, 0x0304,
- 0x031f, 0x032e, 0x033d, 0x034c, 0x035b, 0x036d, 0x0382, 0x0397,
- 0x03c5, 0x03d4, 0x03f9, 0x0411, 0x0426, 0x043b, 0x044d, 0x0459,
- 0x046b, 0x047d, 0x0496, 0x04b1, 0x04c3, 0x04db, 0x04f6, 0x0508,
- // Entry 40 - 7F
- 0x0526, 0x0547, 0x055f, 0x056e, 0x0587, 0x059f, 0x05a8, 0x05c6,
- 0x05db, 0x05f3, 0x0608, 0x061d, 0x063b, 0x064a, 0x065c, 0x067a,
- 0x0686, 0x06a4, 0x06b3, 0x06c2, 0x06d4, 0x06e3, 0x06fb, 0x0710,
- 0x071c, 0x0731, 0x0746, 0x0755, 0x0779, 0x0788, 0x07a6, 0x07bb,
- 0x07d0, 0x07e8, 0x080d, 0x0822, 0x0834, 0x084c, 0x085b, 0x0879,
- 0x088b, 0x08a6, 0x08b5, 0x08be, 0x08d3, 0x08e5, 0x08f4, 0x0913,
- 0x0925, 0x0937, 0x093d, 0x097a, 0x09ab, 0x09cd, 0x09df, 0x09f7,
- 0x0a0c, 0x0a24, 0x0a33, 0x0a42, 0x0a5a, 0x0a6c, 0x0a78, 0x0a87,
- // Entry 80 - BF
- 0x0a96, 0x0ab1, 0x0ac6, 0x0adb, 0x0aed, 0x0b05, 0x0b14, 0x0b3b,
- 0x0b50, 0x0b6e, 0x0b7d, 0x0b9f, 0x0bae, 0x0bc3, 0x0bd8, 0x0bf6,
- 0x0c05, 0x0c11, 0x0c23, 0x0c3e, 0x0c53, 0x0c65, 0x0c81, 0x0c96,
- 0x0cab, 0x0cc3, 0x0ccf, 0x0ce1, 0x0cf0, 0x0cf9, 0x0d1a, 0x0d32,
- 0x0d4a, 0x0d5c, 0x0d6e, 0x0d7d, 0x0d89, 0x0da1, 0x0db0, 0x0dce,
- 0x0ddd, 0x0def, 0x0e01, 0x0e1f, 0x0e34, 0x0e43, 0x0e52, 0x0e5e,
- 0x0e73, 0x0e85, 0x0e91, 0x0ea3, 0x0eaf, 0x0ebe, 0x0ecd, 0x0ee5,
- 0x0ef4, 0x0ef4, 0x0f0f, 0x0f1b, 0x0f24, 0x0f42, 0x0f42, 0x0f51,
- // Entry C0 - FF
- 0x0f51, 0x0f76, 0x0f9b, 0x0fad, 0x0fc2, 0x0fd4, 0x0fd4, 0x0fe9,
- 0x1011, 0x1020, 0x1045, 0x106d, 0x1076, 0x1076, 0x1091, 0x1091,
- 0x109d, 0x10ac, 0x10c1, 0x10c1, 0x10ca, 0x10ca, 0x10ca, 0x10ca,
- 0x10d6, 0x10e8, 0x10e8, 0x10f4, 0x10f4, 0x10f4, 0x111c, 0x1131,
- 0x1140, 0x114c, 0x114c, 0x114c, 0x1164, 0x1188, 0x1188, 0x1194,
- 0x11a9, 0x11b5, 0x11b5, 0x11ca, 0x11dc, 0x11dc, 0x11eb, 0x11eb,
- 0x11fa, 0x1206, 0x1206, 0x1215, 0x122a, 0x1236, 0x1248, 0x125a,
- 0x126c, 0x1278, 0x129a, 0x12ac, 0x12c7, 0x12d9, 0x12ee, 0x131c,
- // Entry 100 - 13F
- 0x1331, 0x1331, 0x135c, 0x1374, 0x1386, 0x139b, 0x13a7, 0x13bc,
- 0x13cb, 0x13e0, 0x13f2, 0x1401, 0x1413, 0x143b, 0x143b, 0x144a,
- 0x145d, 0x147c, 0x148e, 0x148e, 0x149d, 0x14a9, 0x14a9, 0x14da,
- 0x14ec, 0x1501, 0x1529, 0x1529, 0x153e, 0x153e, 0x154a, 0x1562,
- 0x1562, 0x156b, 0x156b, 0x158d, 0x15ac, 0x15ac, 0x15dd, 0x1605,
- 0x1626, 0x1628, 0x1637, 0x1637, 0x1643, 0x164f, 0x1680, 0x1689,
- 0x16a4, 0x16a4, 0x16ca, 0x16f0, 0x170f, 0x171e, 0x173c, 0x174b,
- 0x175d, 0x1782, 0x17a1, 0x17a1, 0x17a1, 0x17ad, 0x17c5, 0x17d1,
- // Entry 140 - 17F
- 0x17d1, 0x17e6, 0x1802, 0x181d, 0x1835, 0x1841, 0x1869, 0x1869,
- 0x1875, 0x1881, 0x1881, 0x1890, 0x189f, 0x189f, 0x189f, 0x18b4,
- 0x18c9, 0x18d8, 0x18fd, 0x1919, 0x1919, 0x1935, 0x1944, 0x1953,
- 0x195f, 0x196e, 0x197a, 0x1995, 0x1995, 0x19a4, 0x19b9, 0x19dd,
- 0x19dd, 0x19e9, 0x19e9, 0x19f5, 0x1a0a, 0x1a26, 0x1a26, 0x1a26,
- 0x1a26, 0x1a38, 0x1a53, 0x1a78, 0x1a8a, 0x1a9f, 0x1ab7, 0x1ad9,
- 0x1ad9, 0x1ad9, 0x1aee, 0x1afd, 0x1b12, 0x1b21, 0x1b21, 0x1b30,
- 0x1b45, 0x1b57, 0x1b63, 0x1b78, 0x1b8a, 0x1b9f, 0x1bd4, 0x1bd4,
- // Entry 180 - 1BF
- 0x1bd4, 0x1be6, 0x1be6, 0x1bf2, 0x1bfe, 0x1c20, 0x1c20, 0x1c42,
- 0x1c57, 0x1c69, 0x1c78, 0x1c87, 0x1c96, 0x1c96, 0x1c96, 0x1cab,
- 0x1cab, 0x1cb7, 0x1cc9, 0x1cd8, 0x1cf3, 0x1cff, 0x1cff, 0x1d0e,
- 0x1d1d, 0x1d2f, 0x1d3b, 0x1d56, 0x1d75, 0x1d9a, 0x1da6, 0x1db8,
- 0x1ddc, 0x1dee, 0x1e03, 0x1e12, 0x1e24, 0x1e46, 0x1e5e, 0x1e7d,
- 0x1e8c, 0x1ea1, 0x1eb6, 0x1eb6, 0x1eb6, 0x1ec8, 0x1ee9, 0x1ee9,
- 0x1f04, 0x1f0d, 0x1f23, 0x1f35, 0x1f44, 0x1f56, 0x1f56, 0x1f6b,
- 0x1f6b, 0x1f7a, 0x1f96, 0x1f96, 0x1fa5, 0x1fbe, 0x1fca, 0x1ff5,
- // Entry 1C0 - 1FF
- 0x2010, 0x2028, 0x203a, 0x204c, 0x2058, 0x2080, 0x209b, 0x20aa,
- 0x20c5, 0x20e9, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x2117, 0x2117,
- 0x212f, 0x212f, 0x212f, 0x2144, 0x2144, 0x216f, 0x217b, 0x217b,
- 0x2196, 0x21ab, 0x21c6, 0x21c6, 0x21c6, 0x21d8, 0x21ea, 0x21ea,
- 0x21ea, 0x21ea, 0x2205, 0x220e, 0x2220, 0x222f, 0x225a, 0x226f,
- 0x227e, 0x2290, 0x2290, 0x2290, 0x229f, 0x22ba, 0x22cf, 0x22cf,
- 0x22f4, 0x22f4, 0x2300, 0x2300, 0x2312, 0x2340, 0x235c, 0x235c,
- 0x2374, 0x237d, 0x237d, 0x238f, 0x238f, 0x238f, 0x23ae, 0x23ca,
- // Entry 200 - 23F
- 0x23e6, 0x2408, 0x2420, 0x2438, 0x245d, 0x246c, 0x246c, 0x246c,
- 0x247e, 0x248a, 0x24a2, 0x24ba, 0x24e2, 0x250d, 0x251f, 0x251f,
- 0x252b, 0x253d, 0x2549, 0x255b, 0x256a, 0x257f, 0x2588, 0x259d,
- 0x259d, 0x25b8, 0x25ca, 0x25ca, 0x25df, 0x2604, 0x261d, 0x261d,
- 0x261d, 0x261d, 0x2635, 0x2654, 0x266c, 0x267e, 0x2690, 0x26a8,
- 0x26ec, 0x2701, 0x271c, 0x2737, 0x2740, 0x2749, 0x2749, 0x2749,
- 0x2749, 0x2749, 0x2758, 0x2758, 0x276a, 0x276a, 0x2779, 0x2785,
- 0x2791, 0x27af, 0x27af, 0x27c4, 0x27c4, 0x27d0, 0x27d9, 0x27e8,
- // Entry 240 - 27F
- 0x27e8, 0x27e8, 0x27e8, 0x2800, 0x2815, 0x283c, 0x283c, 0x284e,
- 0x289e, 0x28aa, 0x28fb, 0x2907, 0x2945, 0x2945, 0x2970, 0x2999,
- 0x29d3, 0x2a04, 0x2a32, 0x2a60, 0x2a9b, 0x2ac9, 0x2af7, 0x2af7,
- 0x2b22, 0x2b44, 0x2b60, 0x2b75, 0x2baf, 0x2be3, 0x2bfe, 0x2c29,
- 0x2c51, 0x2c7c,
-} // Size: 1244 bytes
-
-var heLangStr string = "" + // Size: 7130 bytes
- "אפאריתאבחזיתאבסטןאפריקאנסאקאןאמהריתאראגוניתערביתאסאמיתאבאריתאיימאריתאזרי" +
- "תבשקיריתבלארוסיתבולגריתביסלמהבמבארהבנגליתטיבטיתברטוניתבוסניתקטלאניתצ׳צ׳" +
- "ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשולשיתדניתגרמניתדיב" +
- "הידזונקהאווהיווניתאנגליתאספרנטוספרדיתאסטוניתבסקיתפרסיתפולהפיניתפיג׳יתפא" +
- "רואזיתצרפתיתפריזיתאיריתגאלית סקוטיתגליציאניתגוארניגוג׳ראטיתמאניתהאוסהעב" +
- "ריתהינדיהארי מוטוקרואטיתהאיטיתהונגריתארמניתהררו\u200fאינטרלינגואהאינדונ" +
- "זיתאינטרלינגהאיגבוסיצ׳ואן ייאינופיאקאידואיסלנדיתאיטלקיתאינוקטיטוטיפניתי" +
- "אווניתגאורגיתקונגוקיקויוקואניאמהקזחיתקאלאליסוטיתקמריתקנאדהקוריאניתקאנור" +
- "יקשמיריתכורדיתקומיקורניתקירגיזיתלטיניתלוקסמבורגיתגאנדהלימבורגישלינגלהלא" +
- "יתליטאיתלובה-קטנגהלטביתמלגשיתמרשאלסמאוריתמקדוניתמלאיאלםמונגוליתמרטהימלא" +
- "יתמלטיתבורמזיתנאוריתצפון נדבלהנפאליתנדונגההולנדיתנורווגית חדשהנורווגית " +
- "ספרותיתדרום נדבלהנבחוניאנג׳האוקסיטניתאוג׳יבווהאורומואוריהאוסטיתפנג׳אבית" +
- "פאליפולניתפאשטופורטוגליתקצ׳ואהרומאנשקירונדירומניתרוסיתקינירואנדהסנסקריט" +
- "סרדיניתסינדהיתלאפית צפוניתסנגוסינהלהסלובקיתסלובניתסמואיתשונהסומליתאלבני" +
- "תסרביתסיסוואטיססות׳וסונדניתשוודיתסווהיליתטמיליתטלוגוטג׳יקיתתאיתטיגרינאי" +
- "תטורקמניתטוניסיהטונגןטורקיתטסונגהטטריתטהיטיתאויגהוראוקראיניתאורדואוזבקי" +
- "תוונדהויאטנמית\u200fוולאפיקוואלוןג׳ולוףקסוסהיידישיורובהז׳ואנגסיניתזולוא" +
- "כינזיתאקוליאדנמהאדיגיתאפריהיליאהייםאינואכדיתאלאוטאלטאי דרומיתאנגלית עתי" +
- "קהאנג׳יקהארמיתאראוקניתארפהוארוואקאסואסטוריתאוואדיתבאלוצ׳יבלינזיתבווארית" +
- "בסאאבאקסגומלבז׳הבמבהבנהבאפוטבוג׳פוריביקולביניקוםסיקסיקהבראג׳בודואקוסהבו" +
- "ריאטבוגינזיתבולובליןמדומבהקאדוקאריבקאיוגהאטסםקבואנוצ׳יגהצ׳יבצ׳הצ׳אגאטאי" +
- "צ׳וקסהמאריניב צ׳ינוקצ׳וקטאוצ׳יפוויאןצ׳רוקישאייןכורדית סוראניתקופטיתטטרי" +
- "ת של קריםקשוביאןדקוטהדרגווהטאיטהדלאוורסלאביתדוגריבדינקהזארמהדוגריסורבית" +
- " נמוכהדואלההולנדית תיכונההולה-פוניידיולהדזאנגהאמבואפיקמצרית עתיקהאקיוקעי" +
- "למיתאנגלית תיכונהאוונדופנגפיליפיניתפוןצרפתית תיכונהצרפתית עתיקהפריזית צ" +
- "פוניתפריזיאן מזרחיתפריוליתגאגגאוזיתגאיוגבאיהגעזגילברטזיתגרמנית בינונית-" +
- "גבוההגרמנית עתיקה גבוההגונדיגורונטאלוגותיתגרבויוונית עתיקהגרמנית שוויצר" +
- "יתגוסיגוויצ׳יןהאידההוואיתהיליגאינוןחיתיתמונגסורבית גבוהההופהאיבאןאיביבי" +
- "ואילוקואינגושיתלויבאןנגומהמצ׳אמהפרסית יהודיתערבית יהודיתקארא-קלפאקקבילה" +
- "קצ׳יןג׳יוקמבהקאוויקברדיתקנמבוטיאפמקונדהקאבוורדיאנוקורוקאסיקוטאנזיתקוירה" +
- " צ׳יניקאקוקאלנג׳יןקימבונדוקומי-פרמיאקיתקונקאניקוסראיאןקפלהקראצ׳י-בלקרקאר" +
- "ליתקורוקשמבאלהבאפיהקולוניאןקומיקקוטנאילדינולאנגילנדהלמבהלזגיתלקוטהמונגו" +
- "לוזילובה, לולואהלואיסנולונדהלואולושאילויהמדורסהמאפאמאגאהיתמאיטיליתמקסאר" +
- "מנדינגומאסאיתמאבאמוקשהמנדארמנדהמרומוריסייןאירית תיכונהמקואה-מיטומטאמיקמ" +
- "קמיננגקבאומנצ׳ומניפוריתמוהוקמוסימונדאנגמספר שפותקריקמירנדזיתמרווארימאיי" +
- "ןארזיהנפוליטניתנאמהגרמנית תחתיתנוואריניאסניואיאןקוואסיונגיאמבוןנוגאי" +
- "\u200fנורדית עתיקהנ׳קוסוטו הצפוניתנוארנווארית קלאסיתניאמווזיניאנקולהניור" +
- "ונזימהאוסג׳הטורקית עותומניתפנגסינאןפלאביפמפאניהפפיאמנטופלוואןפרסית עתיק" +
- "הפניקיתפונפיאןפרובנסאל עתיקהקיצ׳הראג׳סטןרפאנויררוטונגאןרומבורומאניתארומ" +
- "ניתרוואסנדאווהסאחהארמית שומרוניתסמבורוססאקסאנטלינגמבאיסאנגוסיציליאניתסק" +
- "וטיתכורדית דרומיתסנקהסנהסלקופקויראבורו סניאירית עתיקהטצ׳להיטשאןערבית צ׳" +
- "אדיתסידמוסאמי דרומיתלולה סאמיאינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן ט" +
- "ונגוסררסאהוסוקומהסוסושומריתסווהילי קונגולטזיתסירית קלאסיתסוריתטימנהטסוט" +
- "רנוטטוםטיגריתטיבטוקלאוקלינגוןטלינגיטטמאשקניאסה טונגהטוק פיסיןטרוקוטסימש" +
- "יאןטומבוקהטובאלוטסוואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונד" +
- "ורוטואיווטיקוונג׳ווואלסרוולאמוווראיוואשווורלפיריקלמיקסוגהיאויאפזיתיאנגב" +
- "ןימבהקנטונזיתזאפוטקבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשו" +
- "ניזאזאערבית ספרותיתגרמנית אוסטריתגרמנית שוויצרית (גבוהה)אנגלית אוסטרלית" +
- "אנגלית קנדיתאנגלית בריטיתאנגלית אמריקאיתספרדית לטינו־אמריקאיתספרדית איר" +
- "ופאיתספרדית מקסיקניתצרפתית קנדיתצרפתית שוויצריתסקסונית תחתיתפלמיתפורטוג" +
- "לית ברזילאיתפורטוגלית אירופאיתמולדביתסרבו-קרואטיתסינית מפושטתסינית מסור" +
- "תית"
-
-var heLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0018, 0x0022, 0x0032, 0x003a, 0x0046, 0x0056,
- 0x0060, 0x006c, 0x0078, 0x0088, 0x0092, 0x00a0, 0x00b0, 0x00be,
- 0x00ca, 0x00d6, 0x00e2, 0x00ee, 0x00fc, 0x0108, 0x0116, 0x0124,
- 0x0130, 0x0142, 0x0148, 0x0152, 0x017a, 0x0186, 0x0190, 0x0198,
- 0x01a4, 0x01ae, 0x01ba, 0x01c2, 0x01ce, 0x01da, 0x01e8, 0x01f4,
- 0x0202, 0x020c, 0x0216, 0x021e, 0x0228, 0x0234, 0x0244, 0x0250,
- 0x025c, 0x0266, 0x027d, 0x028f, 0x029b, 0x02ad, 0x02b7, 0x02c1,
- 0x02cb, 0x02d5, 0x02e6, 0x02f4, 0x0300, 0x030e, 0x031a, 0x0322,
- // Entry 40 - 7F
- 0x033d, 0x034f, 0x0363, 0x036d, 0x0380, 0x0390, 0x0398, 0x03a8,
- 0x03b6, 0x03ca, 0x03d4, 0x03e2, 0x03f0, 0x03fa, 0x0406, 0x0416,
- 0x0420, 0x0436, 0x0440, 0x044a, 0x045a, 0x0466, 0x0474, 0x0480,
- 0x0488, 0x0494, 0x04a4, 0x04b0, 0x04c6, 0x04d0, 0x04e2, 0x04ee,
- 0x04f6, 0x0502, 0x0515, 0x051f, 0x052b, 0x0537, 0x0543, 0x0551,
- 0x055f, 0x056f, 0x0579, 0x0583, 0x058d, 0x059b, 0x05a7, 0x05ba,
- 0x05c6, 0x05d2, 0x05e0, 0x05f9, 0x0618, 0x062b, 0x0633, 0x0641,
- 0x0653, 0x0665, 0x0671, 0x067b, 0x0687, 0x0697, 0x069f, 0x06ab,
- // Entry 80 - BF
- 0x06b5, 0x06c7, 0x06d3, 0x06df, 0x06ed, 0x06f9, 0x0703, 0x0717,
- 0x0725, 0x0733, 0x0741, 0x0758, 0x0760, 0x076c, 0x077a, 0x0788,
- 0x0794, 0x079c, 0x07a8, 0x07b4, 0x07be, 0x07ce, 0x07da, 0x07e8,
- 0x07f4, 0x0804, 0x0810, 0x081a, 0x0828, 0x0830, 0x0842, 0x0852,
- 0x0860, 0x086a, 0x0876, 0x0882, 0x088c, 0x0898, 0x08a6, 0x08b8,
- 0x08c2, 0x08d0, 0x08da, 0x08ea, 0x08fb, 0x0907, 0x0913, 0x091d,
- 0x0927, 0x0933, 0x093f, 0x0949, 0x0951, 0x095f, 0x0969, 0x0973,
- 0x097f, 0x097f, 0x098f, 0x0999, 0x09a1, 0x09ab, 0x09ab, 0x09b5,
- // Entry C0 - FF
- 0x09b5, 0x09cc, 0x09e3, 0x09f1, 0x09fb, 0x0a0b, 0x0a0b, 0x0a15,
- 0x0a15, 0x0a21, 0x0a21, 0x0a21, 0x0a27, 0x0a27, 0x0a35, 0x0a35,
- 0x0a43, 0x0a51, 0x0a5f, 0x0a6d, 0x0a75, 0x0a7d, 0x0a7d, 0x0a85,
- 0x0a8d, 0x0a95, 0x0a95, 0x0a9b, 0x0aa5, 0x0aa5, 0x0aa5, 0x0ab5,
- 0x0abf, 0x0ac7, 0x0ac7, 0x0acd, 0x0adb, 0x0adb, 0x0adb, 0x0ae5,
- 0x0ae5, 0x0aed, 0x0af7, 0x0b03, 0x0b13, 0x0b1b, 0x0b23, 0x0b2f,
- 0x0b37, 0x0b41, 0x0b4d, 0x0b55, 0x0b61, 0x0b6b, 0x0b79, 0x0b89,
- 0x0b95, 0x0b9d, 0x0bb0, 0x0bbe, 0x0bd0, 0x0bdc, 0x0be6, 0x0c01,
- // Entry 100 - 13F
- 0x0c0d, 0x0c0d, 0x0c25, 0x0c33, 0x0c3d, 0x0c49, 0x0c53, 0x0c5f,
- 0x0c6b, 0x0c77, 0x0c81, 0x0c8b, 0x0c95, 0x0cac, 0x0cac, 0x0cb6,
- 0x0cd1, 0x0ce4, 0x0cee, 0x0cfa, 0x0d02, 0x0d0a, 0x0d0a, 0x0d1f,
- 0x0d29, 0x0d35, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d60, 0x0d72,
- 0x0d72, 0x0d78, 0x0d78, 0x0d91, 0x0da8, 0x0da8, 0x0dc1, 0x0ddc,
- 0x0dea, 0x0dee, 0x0dfc, 0x0dfc, 0x0e04, 0x0e0e, 0x0e0e, 0x0e14,
- 0x0e26, 0x0e26, 0x0e4c, 0x0e6e, 0x0e6e, 0x0e78, 0x0e8a, 0x0e94,
- 0x0e9c, 0x0eb3, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ed8, 0x0ee8, 0x0ef2,
- // Entry 140 - 17F
- 0x0ef2, 0x0efe, 0x0efe, 0x0f12, 0x0f1c, 0x0f24, 0x0f3b, 0x0f3b,
- 0x0f43, 0x0f4d, 0x0f5b, 0x0f67, 0x0f77, 0x0f77, 0x0f77, 0x0f83,
- 0x0f8d, 0x0f99, 0x0fb0, 0x0fc7, 0x0fc7, 0x0fda, 0x0fe4, 0x0fee,
- 0x0ff6, 0x0ffe, 0x1008, 0x1014, 0x101e, 0x1026, 0x1032, 0x1048,
- 0x1048, 0x1050, 0x1050, 0x1058, 0x1068, 0x107d, 0x107d, 0x107d,
- 0x1085, 0x1095, 0x10a5, 0x10be, 0x10cc, 0x10dc, 0x10e4, 0x10f9,
- 0x10f9, 0x10f9, 0x1105, 0x110f, 0x111b, 0x1125, 0x1135, 0x113f,
- 0x114b, 0x1155, 0x115f, 0x1167, 0x116f, 0x1179, 0x1179, 0x1179,
- // Entry 180 - 1BF
- 0x1179, 0x1183, 0x1183, 0x118d, 0x1195, 0x1195, 0x1195, 0x11ab,
- 0x11b9, 0x11c3, 0x11cb, 0x11d5, 0x11dd, 0x11dd, 0x11dd, 0x11e9,
- 0x11f1, 0x11ff, 0x120f, 0x1219, 0x1227, 0x1233, 0x123b, 0x1245,
- 0x124f, 0x1257, 0x125d, 0x126d, 0x1284, 0x1297, 0x129d, 0x12a7,
- 0x12b9, 0x12c3, 0x12d3, 0x12dd, 0x12e5, 0x12e5, 0x12f3, 0x1304,
- 0x130c, 0x131c, 0x132a, 0x132a, 0x1334, 0x133e, 0x133e, 0x133e,
- 0x1350, 0x1358, 0x136f, 0x137b, 0x1383, 0x1391, 0x1391, 0x139f,
- 0x13af, 0x13b9, 0x13d3, 0x13d3, 0x13db, 0x13f2, 0x13fa, 0x1415,
- // Entry 1C0 - 1FF
- 0x1425, 0x1435, 0x143f, 0x1449, 0x1455, 0x1472, 0x1482, 0x148c,
- 0x149a, 0x14aa, 0x14b6, 0x14b6, 0x14b6, 0x14b6, 0x14cb, 0x14cb,
- 0x14d7, 0x14d7, 0x14d7, 0x14e5, 0x14e5, 0x1500, 0x150a, 0x150a,
- 0x1518, 0x1524, 0x1536, 0x1536, 0x1536, 0x1540, 0x154e, 0x154e,
- 0x154e, 0x154e, 0x155c, 0x1564, 0x1572, 0x157a, 0x1595, 0x15a1,
- 0x15a9, 0x15b5, 0x15b5, 0x15c1, 0x15cb, 0x15df, 0x15eb, 0x15eb,
- 0x1604, 0x160c, 0x1612, 0x1612, 0x161c, 0x1635, 0x164a, 0x164a,
- 0x1658, 0x165e, 0x1675, 0x167f, 0x167f, 0x167f, 0x1694, 0x16a5,
- // Entry 200 - 23F
- 0x16ba, 0x16cd, 0x16db, 0x16e9, 0x16fe, 0x1704, 0x170c, 0x170c,
- 0x1718, 0x1720, 0x172c, 0x172c, 0x174f, 0x1766, 0x1770, 0x1770,
- 0x1770, 0x177a, 0x1780, 0x1788, 0x1790, 0x179c, 0x17a2, 0x17ae,
- 0x17ae, 0x17bc, 0x17ca, 0x17ca, 0x17d4, 0x17e9, 0x17fa, 0x17fa,
- 0x1804, 0x1804, 0x1814, 0x1814, 0x1822, 0x182e, 0x183a, 0x1848,
- 0x186d, 0x187b, 0x188b, 0x189b, 0x18a1, 0x18a7, 0x18a7, 0x18a7,
- 0x18a7, 0x18a7, 0x18b1, 0x18b1, 0x18bd, 0x18c9, 0x18d5, 0x18df,
- 0x18e9, 0x18f9, 0x18f9, 0x1903, 0x1903, 0x190b, 0x1911, 0x191d,
- // Entry 240 - 27F
- 0x1929, 0x1931, 0x1931, 0x1941, 0x194d, 0x1961, 0x1961, 0x196b,
- 0x1993, 0x199b, 0x19b5, 0x19bd, 0x19d6, 0x19d6, 0x19f1, 0x1a1b,
- 0x1a38, 0x1a4f, 0x1a68, 0x1a85, 0x1aae, 0x1acb, 0x1ae8, 0x1ae8,
- 0x1aff, 0x1b1c, 0x1b35, 0x1b3f, 0x1b62, 0x1b85, 0x1b93, 0x1baa,
- 0x1bc1, 0x1bda,
-} // Size: 1244 bytes
-
-var hiLangStr string = "" + // Size: 11180 bytes
- "अफ़ारअब्ख़ाज़ियनअवस्ताईअफ़्रीकीअकनअम्हेरीअर्गोनीअरबीअसमियाअवेरिकआयमाराअज" +
- "़रबैजानीबशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबो" +
- "स्नियाईकातालानचेचनकमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मन" +
- "दिवेहीज़ोन्गखाईवेयूनानीअंग्रेज़ीएस्पेरेंतोस्पेनीएस्टोनियाईबास्कफ़ारसीफ" +
- "ुलाहफ़िनिशफ़ीजीफ़ैरोइज़फ़्रेंचपश्चिमी फ़्रिसियाईआइरिशस्काट्स् गायेलिक्" +
- "गैलिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी मोटूक्रोएशियाईहैतियाई" +
- "हंगेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग्बोसिचुआन य" +
- "ीइनुपियाक्इडौआइसलैंडिकइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुय" +
- "ूक्वान्यामाकज़ाख़कलालीसुतखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्न" +
- "िशकिर्गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटा" +
- "ंगालातवियाईमालागासीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलीयाईमराठीमलयमाल" +
- "्टीज़बर्मीज़नाउरूउत्तरी देबेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्व" +
- "ेजियाई बोकमालदक्षिण देबेलनावाजोन्यानजाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिक" +
- "पंजाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्दीरोमानियाईरूसीकिन्यारव" +
- "ांडासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्लोवेनियाईसामो" +
- "नशोणासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमिलतेल" +
- "ुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनवि" +
- "घुरयूक्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायेहुद" +
- "ीयोरूबाज़ुआंगचीनीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्का" +
- "दीअलेउतदक्षिणी अल्ताईपुरानी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअ" +
- "स्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्बाबेनापश्चिमी बलोचीभोजपुरीबिकोलबिनी" +
- "सिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिगाचिब्चाछगा" +
- "ताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप्" +
- "टिकक्रीमीन तुर्कीकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्लेवडोग्रिबदिन्काझा" +
- "र्माडोग्रीनिचला सॉर्बियनदुआलामध्य पुर्तगालीजोला-फोंईड्युलाएम्बुएफिकप्र" +
- "ाचीन मिस्रीएकाजुकएलामाइटमध्यकालीन अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनमध्" +
- "यकालीन फ़्रांसीसीपुरातन फ़्रांसीसीउत्तरी फ्रीसीयनपूर्वी फ्रीसीयनफ्रीयु" +
- "लीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्यकालीन हाइ जर्मनपुरातन हाइ जर्म" +
- "नगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूनानीस्विस जर्मनगुसीग्विच’इनहैडाहव" +
- "ाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपाइबानइलोकोइंगुशलोज्बाननगोंबामैकह" +
- "ैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियन" +
- "त्यापमैकोंडकाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकलेंजिनकिम्बन्दुकोमी" +
- "-पर्मयाककोंकणीकोसरैनक्पेल्लैकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकुमीककुते" +
- "नाईलादीनोलांगिलाह्न्डालाम्बालेज़्घीयनलैकोटामोंगोलोज़ीउत्तरी लूरील्यूबा" +
- "-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युईआमादुरीसमगाहीमैथिलीमकासरमन्डिन्गोमसाईम" +
- "ोक्षमंधारमेन्डेमेरुमोरीस्येनमध्यकाल आइरिशमैखुवा-मीट्टोमेटामिकमैकमिनांग" +
- "्काबाउमन्चुमणिपूरीमोहौकमोस्सीमुंडैंगविविध भाषाएँक्रीकमिरांडीमारवाड़ीएर" +
- "्ज़यामाज़न्देरानीनीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओनोगाई" +
- "पुराना नॉर्सएन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्यो" +
- "रोन्ज़ीमाओसेजओटोमान तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउ" +
- "आनपुरानी फारसीफोएनिशियनपोह्नपिएनपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरा" +
- "रोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावेयाकूतसामैरिटन अरैमिकसैम्बुरुसासा" +
- "कसंतालीसैंगुसिसिलियनस्कॉट्सदक्षिणी कार्डिशसेनासेल्कपकोयराबोरो सेन्नीपु" +
- "रानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइनारी सामीस्कोल्ट साम" +
- "ीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनकांगो स्वाहिलीक्" +
- "लासिकल सिरिएकसिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंग" +
- "िततामाशेकन्यासा टोन्गाटोक पिसिनत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध" +
- "्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुरूटवाईवॉटिकवुंजोवलामोवारैवाशोव" +
- "ॉल्पेरीकाल्मिकसोगायाओयापीसकैंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक " +
- "मोरक्कन तामाज़ाइटज़ूनीकोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्" +
- "रियाई जर्मनस्विस उच्च जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिट" +
- "िश अंग्रेज़ीअमेरिकी अंग्रेज़ीलैटिन अमेरिकी स्पेनीयूरोपीय स्पेनिशमैक्सि" +
- "कन स्पेनिशकनाडाई फ़्रेंचस्विस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर" +
- "्तगालीयूरोपीय पुर्तगालीमोलडावियनसेर्बो-क्रोएशन्सरलीकृत चीनीपारंपरिक ची" +
- "नी"
-
-var hiLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0030, 0x0045, 0x005d, 0x0066, 0x007b, 0x0090,
- 0x009c, 0x00ae, 0x00c0, 0x00d2, 0x00f0, 0x0102, 0x011a, 0x013b,
- 0x0153, 0x016b, 0x017d, 0x0192, 0x01a4, 0x01bf, 0x01d4, 0x01e0,
- 0x01ef, 0x0207, 0x0213, 0x021c, 0x023e, 0x024d, 0x025c, 0x026b,
- 0x027a, 0x028c, 0x02a4, 0x02ad, 0x02bf, 0x02da, 0x02f8, 0x030a,
- 0x0328, 0x0337, 0x0349, 0x0358, 0x036a, 0x0379, 0x0391, 0x03a6,
- 0x03da, 0x03e9, 0x041a, 0x0432, 0x0447, 0x045c, 0x046e, 0x047a,
- 0x048c, 0x049e, 0x04b7, 0x04d5, 0x04ea, 0x0505, 0x0523, 0x0532,
- // Entry 40 - 7F
- 0x0553, 0x0574, 0x0595, 0x05a4, 0x05bd, 0x05d8, 0x05e1, 0x05fc,
- 0x060e, 0x0629, 0x063b, 0x0653, 0x066e, 0x067d, 0x068f, 0x06ad,
- 0x06bf, 0x06d7, 0x06e3, 0x06f5, 0x070a, 0x0719, 0x072e, 0x0743,
- 0x074f, 0x0764, 0x077c, 0x078b, 0x07ac, 0x07bb, 0x07d6, 0x07eb,
- 0x07f4, 0x0812, 0x0837, 0x084f, 0x0867, 0x0882, 0x0891, 0x08b2,
- 0x08c4, 0x08df, 0x08ee, 0x08f7, 0x090f, 0x0924, 0x0933, 0x0955,
- 0x0967, 0x0979, 0x097f, 0x09bf, 0x09f3, 0x0a15, 0x0a27, 0x0a3c,
- 0x0a4e, 0x0a63, 0x0a72, 0x0a84, 0x0a9c, 0x0aae, 0x0aba, 0x0ac9,
- // Entry 80 - BF
- 0x0ad8, 0x0af3, 0x0b08, 0x0b1d, 0x0b2f, 0x0b4a, 0x0b56, 0x0b7a,
- 0x0b8f, 0x0bad, 0x0bbc, 0x0bdb, 0x0bea, 0x0bfc, 0x0c11, 0x0c32,
- 0x0c41, 0x0c4d, 0x0c5f, 0x0c7d, 0x0c95, 0x0ca7, 0x0cb9, 0x0cce,
- 0x0ce3, 0x0cfb, 0x0d07, 0x0d19, 0x0d28, 0x0d31, 0x0d4f, 0x0d67,
- 0x0d85, 0x0d94, 0x0da6, 0x0db5, 0x0dc4, 0x0ddc, 0x0deb, 0x0e0c,
- 0x0e1b, 0x0e30, 0x0e42, 0x0e5a, 0x0e6f, 0x0e84, 0x0e96, 0x0ea5,
- 0x0eb7, 0x0ec9, 0x0edb, 0x0ee7, 0x0ef6, 0x0f0b, 0x0f1a, 0x0f32,
- 0x0f41, 0x0f41, 0x0f5c, 0x0f6e, 0x0f77, 0x0f8c, 0x0f8c, 0x0f9b,
- // Entry C0 - FF
- 0x0f9b, 0x0fc3, 0x0ff1, 0x1003, 0x1015, 0x1027, 0x1027, 0x1039,
- 0x1039, 0x1048, 0x1048, 0x1048, 0x1051, 0x1051, 0x106c, 0x106c,
- 0x1078, 0x1087, 0x109c, 0x109c, 0x10a5, 0x10a5, 0x10a5, 0x10a5,
- 0x10b1, 0x10c3, 0x10c3, 0x10cf, 0x10cf, 0x10cf, 0x10f4, 0x1109,
- 0x1118, 0x1124, 0x1124, 0x1124, 0x113c, 0x113c, 0x113c, 0x1148,
- 0x1148, 0x1154, 0x1154, 0x1169, 0x117b, 0x117b, 0x118a, 0x118a,
- 0x119c, 0x11ab, 0x11ab, 0x11ba, 0x11cf, 0x11db, 0x11ed, 0x11ff,
- 0x120e, 0x121a, 0x123c, 0x124e, 0x1269, 0x127b, 0x1290, 0x12b8,
- // Entry 100 - 13F
- 0x12cd, 0x12cd, 0x12f5, 0x130d, 0x131f, 0x1334, 0x1340, 0x1358,
- 0x1367, 0x137c, 0x138e, 0x13a0, 0x13b2, 0x13da, 0x13da, 0x13e9,
- 0x1411, 0x142a, 0x143c, 0x143c, 0x144b, 0x1457, 0x1457, 0x147f,
- 0x1491, 0x14a6, 0x14dd, 0x14dd, 0x14f2, 0x14f2, 0x1501, 0x151c,
- 0x151c, 0x1525, 0x1525, 0x155f, 0x1590, 0x1590, 0x15bb, 0x15e6,
- 0x1607, 0x160d, 0x161f, 0x161f, 0x162b, 0x163d, 0x163d, 0x1649,
- 0x1664, 0x1664, 0x1699, 0x16c5, 0x16c5, 0x16d4, 0x16f2, 0x1701,
- 0x1713, 0x173b, 0x175a, 0x175a, 0x175a, 0x1766, 0x177e, 0x178a,
- // Entry 140 - 17F
- 0x178a, 0x1796, 0x1796, 0x17ae, 0x17c0, 0x17d2, 0x17f7, 0x17f7,
- 0x1803, 0x180f, 0x180f, 0x181e, 0x182d, 0x182d, 0x182d, 0x1842,
- 0x1854, 0x1869, 0x188e, 0x18b0, 0x18b0, 0x18cc, 0x18db, 0x18ea,
- 0x18f6, 0x1905, 0x1911, 0x192c, 0x192c, 0x193b, 0x194d, 0x1977,
- 0x1977, 0x1983, 0x1983, 0x198f, 0x19a4, 0x19c0, 0x19c0, 0x19c0,
- 0x19c0, 0x19d5, 0x19f0, 0x1a12, 0x1a24, 0x1a36, 0x1a4e, 0x1a70,
- 0x1a70, 0x1a70, 0x1a85, 0x1a94, 0x1aa9, 0x1ab5, 0x1ab5, 0x1ac4,
- 0x1ad9, 0x1aeb, 0x1afa, 0x1b12, 0x1b24, 0x1b3f, 0x1b3f, 0x1b3f,
- // Entry 180 - 1BF
- 0x1b3f, 0x1b51, 0x1b51, 0x1b60, 0x1b6f, 0x1b8e, 0x1b8e, 0x1bb0,
- 0x1bc5, 0x1bd7, 0x1be6, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c1c,
- 0x1c1c, 0x1c2b, 0x1c3d, 0x1c4c, 0x1c67, 0x1c73, 0x1c73, 0x1c82,
- 0x1c91, 0x1ca3, 0x1caf, 0x1cca, 0x1cef, 0x1d14, 0x1d20, 0x1d32,
- 0x1d56, 0x1d65, 0x1d7a, 0x1d89, 0x1d9b, 0x1d9b, 0x1db0, 0x1dd2,
- 0x1de1, 0x1df6, 0x1e0e, 0x1e0e, 0x1e0e, 0x1e23, 0x1e47, 0x1e47,
- 0x1e5f, 0x1e6b, 0x1e8a, 0x1e9f, 0x1eae, 0x1ec0, 0x1ec0, 0x1ed5,
- 0x1ed5, 0x1ee4, 0x1f06, 0x1f06, 0x1f15, 0x1f34, 0x1f40, 0x1f6e,
- // Entry 1C0 - 1FF
- 0x1f8c, 0x1fa4, 0x1fb6, 0x1fcb, 0x1fd7, 0x1fff, 0x201a, 0x2032,
- 0x2050, 0x2074, 0x2086, 0x2086, 0x2086, 0x2086, 0x20a8, 0x20a8,
- 0x20c3, 0x20c3, 0x20c3, 0x20de, 0x20de, 0x210f, 0x2118, 0x2118,
- 0x2133, 0x2148, 0x2163, 0x2163, 0x2163, 0x2175, 0x2187, 0x2187,
- 0x2187, 0x2187, 0x21a2, 0x21ab, 0x21c0, 0x21cf, 0x21fa, 0x2212,
- 0x2221, 0x2233, 0x2233, 0x2233, 0x2242, 0x225a, 0x226f, 0x226f,
- 0x229a, 0x229a, 0x22a6, 0x22a6, 0x22b8, 0x22e6, 0x2308, 0x2308,
- 0x2323, 0x232c, 0x232c, 0x233e, 0x233e, 0x233e, 0x235d, 0x2379,
- // Entry 200 - 23F
- 0x2395, 0x23b7, 0x23cf, 0x23e7, 0x240f, 0x241e, 0x241e, 0x241e,
- 0x2430, 0x243c, 0x2454, 0x2454, 0x247c, 0x24a7, 0x24b9, 0x24b9,
- 0x24b9, 0x24cb, 0x24d7, 0x24e9, 0x24f8, 0x250d, 0x2516, 0x252b,
- 0x252b, 0x2540, 0x2558, 0x2558, 0x256d, 0x2592, 0x25ab, 0x25ab,
- 0x25ab, 0x25ab, 0x25c9, 0x25c9, 0x25de, 0x25f0, 0x2602, 0x261a,
- 0x2649, 0x265e, 0x2679, 0x2694, 0x269d, 0x26a6, 0x26a6, 0x26a6,
- 0x26a6, 0x26a6, 0x26b5, 0x26b5, 0x26c4, 0x26c4, 0x26d3, 0x26df,
- 0x26eb, 0x2703, 0x2703, 0x2718, 0x2718, 0x2724, 0x272d, 0x273c,
- // Entry 240 - 27F
- 0x273c, 0x273c, 0x273c, 0x2757, 0x276f, 0x2796, 0x2796, 0x27b1,
- 0x27ef, 0x27fe, 0x2837, 0x2849, 0x2875, 0x2875, 0x28a3, 0x28cf,
- 0x290f, 0x293d, 0x296e, 0x299f, 0x29d7, 0x2a02, 0x2a30, 0x2a30,
- 0x2a58, 0x2a7d, 0x2a9f, 0x2ab7, 0x2aee, 0x2b1f, 0x2b3a, 0x2b65,
- 0x2b87, 0x2bac,
-} // Size: 1244 bytes
-
-var hrLangStr string = "" + // Size: 4466 bytes
- "afarskiabhaskiavestanafrikaansakanskiamharskiaragonskiarapskiasamskiavar" +
- "skiaymaraazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabengalsk" +
- "itibetanskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškic" +
- "rkvenoslavenskichuvashvelškidanskinjemačkidivehidzongkhaewegrčkiengleski" +
- "esperantošpanjolskiestonskibaskijskiperzijskifulahfinskifidžijskiferojsk" +
- "ifrancuskizapadnofrizijskiirskiškotski-galskigalicijskiguaranigudžaratsk" +
- "imanskihausahebrejskihindskihiri motuhrvatskikreolskimađarskiarmenskiher" +
- "erointerlinguaindonezijskiinterliguaigbosichuan yiinupiaqidoislandskital" +
- "ijanskiinuktitutjapanskijavanskigruzijskikongokikuyukuanyamakazaškikalaa" +
- "llisutkmerskikannadskikorejskikanurikašmirskikurdskikomikornskikirgiškil" +
- "atinskiluksemburškigandalimburgishlingalalaoskilitavskiluba-katangalatvi" +
- "jskimalgaškimaršalskimaorskimakedonskimalajalamskimongolskimarathskimala" +
- "jskimalteškiburmanskinaurusjeverni ndebelenepalskindonganizozemskinovono" +
- "rveškiknjiževni norveškijužni ndebelenavajonyanjaokcitanskiojibwaoromski" +
- "orijskiosetskipandžapskipalipoljskipaštuportugalskikečuaromanšrundirumun" +
- "jskiruskikinyarwandasanskrtskisardskisindhijužni samisangosinhaleškislov" +
- "ačkislovenskisamoanskishonasomalskialbanskisrpskisvatisesotskisundanskiš" +
- "vedskisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskicvanatong" +
- "anskiturskitsongatatarskitahićanskiujgurskiukrajinskiurdskiuzbečkivendav" +
- "ijetnamskivolapükvalonskiwolofxhosajidišjorubazhuangkineskizuluachinesea" +
- "coliadangmeadigejskiafrihiliaghemainuakkadianaleutskijužni altaistaroeng" +
- "leskiangikaaramejskiaraukanskiarapahoarawakasuasturijskiawadhibaluchibal" +
- "inezijskibasabamunskighomalabejabembabenabafutzapadnobaludžijskibhojpuri" +
- "bikolbinikomsiksikabrajbodoakooseburiatbuginskibulublinmedumbacaddokarip" +
- "skicayugaatsamcebuanochigachibchachagataichuukesemarichinook žargonchoct" +
- "awchipewyančerokičejenskisoranski kurdskikoptskikrimski turskikašupskida" +
- "kota jezikdargwataitadelavarskislavedogribdinkazarmadogrilužičkosrpskidu" +
- "alanizozemski, srednjijola-fonyidyuladazagaembuefikstaroegipatskiekajuke" +
- "lamitskiengleski, srednjiewondofangfilipinofonfrancuski, srednjistarofra" +
- "ncuskisjevernofrizijskiistočnofrizijskifriulskigagagauskigayogbayastaroe" +
- "tiopskigilbertskinjemački, srednji visokistaronjemački, visokigondigoron" +
- "talogothicgrebostarogrčkišvicarski njemačkigusiigwich’inhaidihavajskihil" +
- "igaynonhetitskihmonggornjolužičkihupaibanibibioilokoingušetskilojbanngom" +
- "bamachamejudejsko-perzijskijudejsko-arapskikara-kalpakkabilskikachinkaje" +
- "kambakawikabardiankanembutyapmakondezelenortskikorokhasikhotanesekoyra c" +
- "hiinikakokalenjinkimbundukomski ili permskikonkaninaurskikpellekarachay-" +
- "balkarkarelijskikuruškishambalabafiakelnskikumykkutenailadinolangilahnda" +
- "lambalezgiškilakotamongolozisjevernolurskiluba-lulualuisenolundaluolusha" +
- "iluyiamadurskimafamagahimaithilimakasarmandingomasajskimabamokshamandarm" +
- "endemerumauricijski kreolskiirski, srednjimakhuwa-meettometa’micmacminan" +
- "gkabaumandžurskimanipurskimohawkmossimundangviše jezikacreekmirandskimar" +
- "warimyenemordvinskimazanderanskinapolitanskinamadonjonjemačkinewariniasn" +
- "iujskikwasiongiemboonnogajskistaronorveškin’kosjeverni sothonuerklasični" +
- " newarinyamwezinyankolenyoronzimaosageturski - otomanskipangasinanpahlav" +
- "ipampangapapiamentopalauanskistaroperzijskifeničkipohnpeianstaroprovansa" +
- "lskikičerajasthanirapa nuirarotonškiromboromskiaromunskirwasandawejakuts" +
- "kisamarijanski aramejskisamburusasaksantalingambaysangusicilijskiškotski" +
- "južnokurdskisenecasenaselkupskikoyraboro sennistaroirskitachelhitshančad" +
- "ski arapskisidamosjeverni samilule samiinari samiskolt samisoninkesogdie" +
- "nsranan tongoserersahosukumasususumerskikomorskikongoanski swahiliklasič" +
- "ni sirskisirijskitemnetesoterenotetumtigriškitivtokelaunskiklingonskitli" +
- "ngittamasheknyasa tongatok pisintarokotsimshiantumbukatuvaluanskitasawaq" +
- "tuvinianmarokanski tamazightudmurtskiugaritskiumbundukorijenskivaivoticv" +
- "unjowalserwalamowaraywashowarlpirikalmyksogayaojapskiyangbenyembakantons" +
- "kizapotecblissymbolszenagastandardni marokanski tamazightzunibez jezično" +
- "g sadržajazazakimoderni standardni arapskijužnoazerbajdžanskiaustrijski " +
- "njemačkigornjonjemački (švicarski)australski engleskikanadski engleskibr" +
- "itanski engleskiamerički engleskilatinoamerički španjolskieuropski španj" +
- "olskimeksički španjolskikanadski francuskišvicarski francuskidonjosakson" +
- "skiflamanskibrazilski portugalskieuropski portugalskimoldavskisrpsko-hrv" +
- "atskikineski (pojednostavljeni)kineski (tradicionalni)"
-
-var hrLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0007, 0x000e, 0x0015, 0x001e, 0x0025, 0x002d, 0x0036,
- 0x003d, 0x0044, 0x004b, 0x0051, 0x0060, 0x006a, 0x0074, 0x007c,
- 0x0083, 0x008a, 0x0093, 0x009d, 0x00a6, 0x00ae, 0x00b8, 0x00c2,
- 0x00ca, 0x00d3, 0x00d7, 0x00de, 0x00ee, 0x00f5, 0x00fc, 0x0102,
- 0x010b, 0x0111, 0x0119, 0x011c, 0x0122, 0x012a, 0x0133, 0x013e,
- 0x0146, 0x014f, 0x0158, 0x015d, 0x0163, 0x016d, 0x0175, 0x017e,
- 0x018e, 0x0193, 0x01a2, 0x01ac, 0x01b3, 0x01bf, 0x01c5, 0x01ca,
- 0x01d3, 0x01da, 0x01e3, 0x01eb, 0x01f3, 0x01fc, 0x0204, 0x020a,
- // Entry 40 - 7F
- 0x0215, 0x0221, 0x022b, 0x022f, 0x0239, 0x0240, 0x0243, 0x024c,
- 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
- 0x0293, 0x029e, 0x02a5, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd,
- 0x02d1, 0x02d8, 0x02e1, 0x02e9, 0x02f6, 0x02fb, 0x0305, 0x030c,
- 0x0312, 0x031a, 0x0326, 0x032f, 0x0338, 0x0342, 0x0349, 0x0353,
- 0x035f, 0x0368, 0x0371, 0x0379, 0x0382, 0x038b, 0x0390, 0x03a0,
- 0x03a8, 0x03ae, 0x03b8, 0x03c5, 0x03d9, 0x03e7, 0x03ed, 0x03f3,
- 0x03fd, 0x0403, 0x040a, 0x0411, 0x0418, 0x0423, 0x0427, 0x042e,
- // Entry 80 - BF
- 0x0434, 0x043f, 0x0445, 0x044c, 0x0451, 0x045a, 0x045f, 0x046a,
- 0x0474, 0x047b, 0x0481, 0x048c, 0x0491, 0x049c, 0x04a5, 0x04ae,
- 0x04b7, 0x04bc, 0x04c4, 0x04cc, 0x04d2, 0x04d7, 0x04df, 0x04e8,
- 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b,
- 0x0530, 0x0539, 0x053f, 0x0545, 0x054d, 0x0558, 0x0560, 0x056a,
- 0x0570, 0x0578, 0x057d, 0x0588, 0x0590, 0x0598, 0x059d, 0x05a2,
- 0x05a8, 0x05ae, 0x05b4, 0x05bb, 0x05bf, 0x05c7, 0x05cc, 0x05d3,
- 0x05dc, 0x05dc, 0x05e4, 0x05e9, 0x05ed, 0x05f5, 0x05f5, 0x05fd,
- // Entry C0 - FF
- 0x05fd, 0x0609, 0x0616, 0x061c, 0x0625, 0x062f, 0x062f, 0x0636,
- 0x0636, 0x063c, 0x063c, 0x063c, 0x063f, 0x063f, 0x0649, 0x0649,
- 0x064f, 0x0656, 0x0662, 0x0662, 0x0666, 0x066e, 0x066e, 0x0675,
- 0x0679, 0x067e, 0x067e, 0x0682, 0x0687, 0x0687, 0x069a, 0x06a2,
- 0x06a7, 0x06ab, 0x06ab, 0x06ae, 0x06b5, 0x06b5, 0x06b5, 0x06b9,
- 0x06b9, 0x06bd, 0x06c3, 0x06c9, 0x06d1, 0x06d5, 0x06d9, 0x06e0,
- 0x06e5, 0x06ed, 0x06f3, 0x06f8, 0x06ff, 0x0704, 0x070b, 0x0713,
- 0x071b, 0x071f, 0x072e, 0x0735, 0x073e, 0x0745, 0x074e, 0x075e,
- // Entry 100 - 13F
- 0x0765, 0x0765, 0x0773, 0x077c, 0x0788, 0x078e, 0x0793, 0x079d,
- 0x07a2, 0x07a8, 0x07ad, 0x07b2, 0x07b7, 0x07c6, 0x07c6, 0x07cb,
- 0x07de, 0x07e8, 0x07ed, 0x07f3, 0x07f7, 0x07fb, 0x07fb, 0x0809,
- 0x080f, 0x0818, 0x0829, 0x0829, 0x082f, 0x082f, 0x0833, 0x083b,
- 0x083b, 0x083e, 0x083e, 0x0850, 0x085e, 0x085e, 0x086f, 0x0880,
- 0x0888, 0x088a, 0x0892, 0x0892, 0x0896, 0x089b, 0x089b, 0x08a8,
- 0x08b2, 0x08b2, 0x08cb, 0x08e1, 0x08e1, 0x08e6, 0x08ef, 0x08f5,
- 0x08fa, 0x0905, 0x0919, 0x0919, 0x0919, 0x091e, 0x0928, 0x092d,
- // Entry 140 - 17F
- 0x092d, 0x0935, 0x0935, 0x093f, 0x0947, 0x094c, 0x095b, 0x095b,
- 0x095f, 0x0963, 0x0969, 0x096e, 0x0979, 0x0979, 0x0979, 0x097f,
- 0x0985, 0x098c, 0x099e, 0x09ae, 0x09ae, 0x09b9, 0x09c1, 0x09c7,
- 0x09cb, 0x09d0, 0x09d4, 0x09dd, 0x09e4, 0x09e8, 0x09ef, 0x09fa,
- 0x09fa, 0x09fe, 0x09fe, 0x0a03, 0x0a0c, 0x0a18, 0x0a18, 0x0a18,
- 0x0a1c, 0x0a24, 0x0a2c, 0x0a3e, 0x0a45, 0x0a4c, 0x0a52, 0x0a61,
- 0x0a61, 0x0a61, 0x0a6b, 0x0a73, 0x0a7b, 0x0a80, 0x0a87, 0x0a8c,
- 0x0a93, 0x0a99, 0x0a9e, 0x0aa4, 0x0aa9, 0x0ab2, 0x0ab2, 0x0ab2,
- // Entry 180 - 1BF
- 0x0ab2, 0x0ab8, 0x0ab8, 0x0abd, 0x0ac1, 0x0acf, 0x0acf, 0x0ad9,
- 0x0ae0, 0x0ae5, 0x0ae8, 0x0aee, 0x0af3, 0x0af3, 0x0af3, 0x0afb,
- 0x0aff, 0x0b05, 0x0b0d, 0x0b14, 0x0b1c, 0x0b24, 0x0b28, 0x0b2e,
- 0x0b34, 0x0b39, 0x0b3d, 0x0b51, 0x0b5f, 0x0b6d, 0x0b74, 0x0b7a,
- 0x0b85, 0x0b90, 0x0b9a, 0x0ba0, 0x0ba5, 0x0ba5, 0x0bac, 0x0bb8,
- 0x0bbd, 0x0bc6, 0x0bcd, 0x0bcd, 0x0bd2, 0x0bdc, 0x0be9, 0x0be9,
- 0x0bf5, 0x0bf9, 0x0c07, 0x0c0d, 0x0c11, 0x0c18, 0x0c18, 0x0c1e,
- 0x0c27, 0x0c2f, 0x0c3d, 0x0c3d, 0x0c43, 0x0c51, 0x0c55, 0x0c65,
- // Entry 1C0 - 1FF
- 0x0c6d, 0x0c75, 0x0c7a, 0x0c7f, 0x0c84, 0x0c96, 0x0ca0, 0x0ca7,
- 0x0caf, 0x0cb9, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cd1, 0x0cd1,
- 0x0cd9, 0x0cd9, 0x0cd9, 0x0ce2, 0x0ce2, 0x0cf3, 0x0cf8, 0x0cf8,
- 0x0d02, 0x0d0a, 0x0d15, 0x0d15, 0x0d15, 0x0d1a, 0x0d20, 0x0d20,
- 0x0d20, 0x0d20, 0x0d29, 0x0d2c, 0x0d33, 0x0d3b, 0x0d51, 0x0d58,
- 0x0d5d, 0x0d64, 0x0d64, 0x0d6b, 0x0d70, 0x0d7a, 0x0d82, 0x0d82,
- 0x0d8f, 0x0d95, 0x0d99, 0x0d99, 0x0da2, 0x0db1, 0x0dbb, 0x0dbb,
- 0x0dc4, 0x0dc8, 0x0dd7, 0x0ddd, 0x0ddd, 0x0ddd, 0x0dea, 0x0df3,
- // Entry 200 - 23F
- 0x0dfd, 0x0e07, 0x0e0e, 0x0e15, 0x0e21, 0x0e26, 0x0e2a, 0x0e2a,
- 0x0e30, 0x0e34, 0x0e3c, 0x0e44, 0x0e56, 0x0e66, 0x0e6e, 0x0e6e,
- 0x0e6e, 0x0e73, 0x0e77, 0x0e7d, 0x0e82, 0x0e8b, 0x0e8e, 0x0e99,
- 0x0e99, 0x0ea3, 0x0eaa, 0x0eaa, 0x0eb2, 0x0ebd, 0x0ec6, 0x0ec6,
- 0x0ecc, 0x0ecc, 0x0ed5, 0x0ed5, 0x0edc, 0x0ee7, 0x0eee, 0x0ef6,
- 0x0f0a, 0x0f13, 0x0f1c, 0x0f23, 0x0f2d, 0x0f30, 0x0f30, 0x0f30,
- 0x0f30, 0x0f30, 0x0f35, 0x0f35, 0x0f3a, 0x0f40, 0x0f46, 0x0f4b,
- 0x0f50, 0x0f58, 0x0f58, 0x0f5e, 0x0f5e, 0x0f62, 0x0f65, 0x0f6b,
- // Entry 240 - 27F
- 0x0f72, 0x0f77, 0x0f77, 0x0f80, 0x0f87, 0x0f92, 0x0f92, 0x0f98,
- 0x0fb7, 0x0fbb, 0x0fd2, 0x0fd8, 0x0ff2, 0x1007, 0x101b, 0x1037,
- 0x104a, 0x105b, 0x106d, 0x107f, 0x109a, 0x10ae, 0x10c3, 0x10c3,
- 0x10d5, 0x10e9, 0x10f7, 0x1100, 0x1115, 0x1129, 0x1132, 0x1141,
- 0x115b, 0x1172,
-} // Size: 1244 bytes
-
-var huLangStr string = "" + // Size: 3938 bytes
- "afarabházavesztánafrikaansakanamharaaragonézarabasszámiavarajmaraazerbaj" +
- "dzsánibaskírbeloruszbolgárbislamabambarabengálitibetibretonbosnyákkatalá" +
- "ncsecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehibut" +
- "ánievegörögangoleszperantóspanyolésztbaszkperzsafulanifinnfidzsiferöeri" +
- "franciafrízírskót gaelgalíciaiguaranigudzsaratiman-szigetihauszahéberhin" +
- "dihiri motuhorváthaitimagyarörményhererointerlingvaindonézinterlingueigb" +
- "ószecsuán jiinupiakidóizlandiolaszinuktitutjapánjávaigrúzkongokikujukua" +
- "nyamakazahgrönlandikambodzsaikannadakoreaikanurikásmírikurdkomikornikirg" +
- "izlatinluxemburgigandalimburgilingalalaoszilitvánluba-katangalettmálgasm" +
- "arshallimaorimacedónmalajálammongolmarathimalájmáltaiburmainauruiészaki " +
- "ndebelenepálindongahollandnorvég nynorsknorvég bokmaldéli ndebelenavahón" +
- "yanjaokszitánojibvaoromóiorijaoszétpandzsábipalilengyelpastuportugálkecs" +
- "uaréto-románkirundirománoroszkiruandaszanszkritszardíniaiszindhiészaki s" +
- "zámiszangószingalézszlovákszlovénszamoaisonaszomáliaialbánszerbsziszuati" +
- "szeszotószundanézsvédszuahélitamiltelugutadzsikthaitigrinjatürkménszecsu" +
- "ánitongatörökcongatatártahitiujgurukránurduüzbégvendavietnamivolapükval" +
- "lonvolofhoszajiddisjorubazsuangkínaizuluachinézakoliadangmeadygheafrihil" +
- "iagemainuakkádaleutdél-altajióangolangikaarámiaraucaniarapahoaravakasuas" +
- "ztúrawádibalucsibalinézbaszabamungomalabedzsabembabenabafutnyugati belud" +
- "zsbodzspuribikolbinikomsiksikabrajbodokosziburjátbuginézbulublinmedumbac" +
- "addokaribkajugaatszamcebuikigacsibcsacsagatájcsukézmaricsinuk zsargoncso" +
- "któcsipevécserokicsejenszoráni kurdkoptkrími tatárkasubdakotadargvataita" +
- "delavárszlevidogribdinkazarmadogrialsó szorbdualaközép hollandjola-fonyi" +
- "diuladazagaembuefikóegyiptomiekadzsukelamitközép angolevondofangfilippín" +
- "ófonközép franciaófranciaészaki frízkeleti frízfriuligagagauzgajogbajag" +
- "eezikiribatiközép felső németófelső németgondigorontalogótgrebóógörögsvá" +
- "jci németgusziigvicsinhaidahawaiihiligajnonhittitehmongfelső szorbhupaib" +
- "anibibióilokóinguslojbanngombamachamezsidó-perzsazsidó-arabkara-kalpakka" +
- "bijekacsinjjukambakawikabardikanembutyapmakondekabuverdianukorokaszikota" +
- "nézkojra-csínikakókalendzsinkimbundukomi-permjákkonkanikosreikpellekarac" +
- "sáj-balkárkarelaikuruhsambalabafiakölschkumükkutenailadinolangilahndalam" +
- "balezglakotamongóloziészaki luriluba-lulualuisenolundaluolushailujiamadu" +
- "raimafamagahimaithilimakaszarmandingómasaimabamoksánmandarmendemerumauri" +
- "tiusi kreolközép írmakua-metómeta’mikmakminangkabaumandzsumanipurimohawk" +
- "moszimundangtöbbszörös nyelvekkríkmirandézmarvarimyeneerzjánymázanderáni" +
- "nápolyinamaalsónémetnevariniasniuingumbangiemboonnogajóskandinávn’kóésza" +
- "ki szotónuerklasszikus newarinyamvézinyankolenyorónzimaosageottomán törö" +
- "kpangaszinanpahlavipampanganpapiamentópalauióperzsafőniciaipohnpeióprová" +
- "nszikicseradzsasztánirapanuirarotongairomboromaarománrwoszandavejakutsza" +
- "maritánus arámiszamburusasakszantálingambayszanguszicíliaiskótdél-kurdsz" +
- "enekaszenaszölkupkojra-szennióírtachelhitsancsádi arabszidamódéli számil" +
- "ule számiinar samikoltta lappszoninkesogdienszranai tongószererszahószuk" +
- "umaszuszusumércomoreikongói szuahéliklasszikus szírszíriaitemneteszótere" +
- "nótetumtigrétivtokelauiklingontlingittamaseknyasa tongatok pisintarokócs" +
- "imsiánitumbukatuvaluszaváktuvaiközép-marokkói tamazigtudmurtugaritiumbun" +
- "duősivaivotjákvunjowalservalamovaraóvasówarlpirikalmükszogajaójapijangbe" +
- "njembakantonizapotékBliss jelképrendszerzenagamarokkói tamazightzunininc" +
- "s nyelvészeti tartalomzazamodern szabányos arabosztrák németsvájci felné" +
- "metausztrál angolkanadai angolbrit angolamerikai angollatin-amerikai spa" +
- "nyoleurópai spanyolspanyol (mexikói)kanadai franciasvájci franciaalsószá" +
- "szflamandbrazíliai portugáleurópai portugálmoldvaiszerbhorvátegyszerűsít" +
- "ett kínaihagyományos kínai"
-
-var huLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000a, 0x0013, 0x001c, 0x0020, 0x0026, 0x002f,
- 0x0033, 0x003b, 0x003f, 0x0045, 0x0053, 0x005a, 0x0062, 0x0069,
- 0x0070, 0x0077, 0x007f, 0x0085, 0x008b, 0x0093, 0x009b, 0x00a2,
- 0x00aa, 0x00b2, 0x00b6, 0x00ba, 0x00c9, 0x00cf, 0x00d5, 0x00d9,
- 0x00df, 0x00e5, 0x00ec, 0x00ef, 0x00f6, 0x00fb, 0x0106, 0x010d,
- 0x0112, 0x0117, 0x011d, 0x0123, 0x0127, 0x012d, 0x0135, 0x013c,
- 0x0141, 0x0144, 0x014e, 0x0157, 0x015e, 0x0168, 0x0173, 0x0179,
- 0x017f, 0x0184, 0x018d, 0x0194, 0x0199, 0x019f, 0x01a7, 0x01ad,
- // Entry 40 - 7F
- 0x01b8, 0x01c0, 0x01cb, 0x01d0, 0x01dc, 0x01e3, 0x01e7, 0x01ee,
- 0x01f3, 0x01fc, 0x0202, 0x0208, 0x020d, 0x0212, 0x0218, 0x0220,
- 0x0225, 0x022f, 0x0239, 0x0240, 0x0246, 0x024c, 0x0255, 0x0259,
- 0x025d, 0x0262, 0x0268, 0x026d, 0x0277, 0x027c, 0x0284, 0x028b,
- 0x0291, 0x0298, 0x02a4, 0x02a8, 0x02af, 0x02b8, 0x02bd, 0x02c5,
- 0x02cf, 0x02d5, 0x02dc, 0x02e2, 0x02e9, 0x02ef, 0x02f5, 0x0304,
- 0x030b, 0x0311, 0x0318, 0x0327, 0x0335, 0x0342, 0x0349, 0x034f,
- 0x0358, 0x035e, 0x0365, 0x036a, 0x0370, 0x037a, 0x037e, 0x0385,
- // Entry 80 - BF
- 0x038a, 0x0393, 0x0399, 0x03a5, 0x03ac, 0x03b2, 0x03b7, 0x03bf,
- 0x03c9, 0x03d4, 0x03db, 0x03e9, 0x03f0, 0x03fa, 0x0402, 0x040a,
- 0x0411, 0x0415, 0x041f, 0x0425, 0x042a, 0x0433, 0x043c, 0x0446,
- 0x044b, 0x0454, 0x0459, 0x045f, 0x0466, 0x046a, 0x0472, 0x047b,
- 0x0485, 0x048a, 0x0491, 0x0496, 0x049c, 0x04a2, 0x04a7, 0x04ad,
- 0x04b1, 0x04b8, 0x04bd, 0x04c5, 0x04cd, 0x04d3, 0x04d8, 0x04dd,
- 0x04e3, 0x04e9, 0x04ef, 0x04f5, 0x04f9, 0x0501, 0x0506, 0x050d,
- 0x0513, 0x0513, 0x051b, 0x051f, 0x0523, 0x0529, 0x0529, 0x052e,
- // Entry C0 - FF
- 0x052e, 0x0539, 0x0540, 0x0546, 0x054c, 0x0554, 0x0554, 0x055b,
- 0x055b, 0x0561, 0x0561, 0x0561, 0x0564, 0x0564, 0x056b, 0x056b,
- 0x0571, 0x0578, 0x0580, 0x0580, 0x0585, 0x058a, 0x058a, 0x0590,
- 0x0596, 0x059b, 0x059b, 0x059f, 0x05a4, 0x05a4, 0x05b3, 0x05bc,
- 0x05c1, 0x05c5, 0x05c5, 0x05c8, 0x05cf, 0x05cf, 0x05cf, 0x05d3,
- 0x05d3, 0x05d7, 0x05dc, 0x05e3, 0x05eb, 0x05ef, 0x05f3, 0x05fa,
- 0x05ff, 0x0604, 0x060a, 0x0610, 0x0615, 0x0619, 0x0620, 0x0629,
- 0x0630, 0x0634, 0x0642, 0x0649, 0x0651, 0x0658, 0x065e, 0x066b,
- // Entry 100 - 13F
- 0x066f, 0x066f, 0x067c, 0x0681, 0x0687, 0x068d, 0x0692, 0x069a,
- 0x06a0, 0x06a6, 0x06ab, 0x06b0, 0x06b5, 0x06c0, 0x06c0, 0x06c5,
- 0x06d4, 0x06de, 0x06e3, 0x06e9, 0x06ed, 0x06f1, 0x06f1, 0x06fc,
- 0x0704, 0x070a, 0x0717, 0x0717, 0x071d, 0x071d, 0x0721, 0x072c,
- 0x072c, 0x072f, 0x072f, 0x073e, 0x0747, 0x0747, 0x0754, 0x0760,
- 0x0766, 0x0768, 0x076e, 0x076e, 0x0772, 0x0777, 0x0777, 0x077b,
- 0x0784, 0x0784, 0x0799, 0x07a8, 0x07a8, 0x07ad, 0x07b6, 0x07ba,
- 0x07c0, 0x07c9, 0x07d7, 0x07d7, 0x07d7, 0x07dd, 0x07e4, 0x07e9,
- // Entry 140 - 17F
- 0x07e9, 0x07ef, 0x07ef, 0x07f9, 0x0800, 0x0805, 0x0811, 0x0811,
- 0x0815, 0x0819, 0x0820, 0x0826, 0x082b, 0x082b, 0x082b, 0x0831,
- 0x0837, 0x083e, 0x084b, 0x0856, 0x0856, 0x0861, 0x0867, 0x086d,
- 0x0870, 0x0875, 0x0879, 0x0880, 0x0887, 0x088b, 0x0892, 0x089e,
- 0x089e, 0x08a2, 0x08a2, 0x08a7, 0x08af, 0x08bb, 0x08bb, 0x08bb,
- 0x08c0, 0x08ca, 0x08d2, 0x08df, 0x08e6, 0x08ec, 0x08f2, 0x0903,
- 0x0903, 0x0903, 0x090a, 0x090f, 0x0916, 0x091b, 0x0922, 0x0928,
- 0x092f, 0x0935, 0x093a, 0x0940, 0x0945, 0x0949, 0x0949, 0x0949,
- // Entry 180 - 1BF
- 0x0949, 0x094f, 0x094f, 0x0955, 0x0959, 0x0965, 0x0965, 0x096f,
- 0x0976, 0x097b, 0x097e, 0x0984, 0x0989, 0x0989, 0x0989, 0x0990,
- 0x0994, 0x099a, 0x09a2, 0x09aa, 0x09b3, 0x09b8, 0x09bc, 0x09c3,
- 0x09c9, 0x09ce, 0x09d2, 0x09e2, 0x09ed, 0x09f8, 0x09ff, 0x0a05,
- 0x0a10, 0x0a17, 0x0a1f, 0x0a25, 0x0a2a, 0x0a2a, 0x0a31, 0x0a46,
- 0x0a4b, 0x0a54, 0x0a5b, 0x0a5b, 0x0a60, 0x0a68, 0x0a75, 0x0a75,
- 0x0a7d, 0x0a81, 0x0a8c, 0x0a92, 0x0a96, 0x0a9a, 0x0a9a, 0x0aa0,
- 0x0aa9, 0x0aae, 0x0aba, 0x0aba, 0x0ac1, 0x0acf, 0x0ad3, 0x0ae4,
- // Entry 1C0 - 1FF
- 0x0aed, 0x0af5, 0x0afb, 0x0b00, 0x0b05, 0x0b15, 0x0b20, 0x0b27,
- 0x0b30, 0x0b3b, 0x0b41, 0x0b41, 0x0b41, 0x0b41, 0x0b49, 0x0b49,
- 0x0b52, 0x0b52, 0x0b52, 0x0b59, 0x0b59, 0x0b65, 0x0b6a, 0x0b6a,
- 0x0b77, 0x0b7e, 0x0b88, 0x0b88, 0x0b88, 0x0b8d, 0x0b91, 0x0b91,
- 0x0b91, 0x0b91, 0x0b98, 0x0b9b, 0x0ba3, 0x0ba8, 0x0bbc, 0x0bc4,
- 0x0bc9, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0be9, 0x0bee, 0x0bee,
- 0x0bf7, 0x0bfe, 0x0c03, 0x0c03, 0x0c0b, 0x0c17, 0x0c1c, 0x0c1c,
- 0x0c25, 0x0c28, 0x0c33, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c47, 0x0c52,
- // Entry 200 - 23F
- 0x0c5b, 0x0c66, 0x0c6e, 0x0c75, 0x0c83, 0x0c89, 0x0c8f, 0x0c8f,
- 0x0c96, 0x0c9c, 0x0ca2, 0x0ca9, 0x0cba, 0x0cca, 0x0cd2, 0x0cd2,
- 0x0cd2, 0x0cd7, 0x0cdd, 0x0ce4, 0x0ce9, 0x0cef, 0x0cf2, 0x0cfa,
- 0x0cfa, 0x0d01, 0x0d08, 0x0d08, 0x0d0f, 0x0d1a, 0x0d23, 0x0d23,
- 0x0d2a, 0x0d2a, 0x0d34, 0x0d34, 0x0d3b, 0x0d41, 0x0d48, 0x0d4d,
- 0x0d67, 0x0d6d, 0x0d74, 0x0d7b, 0x0d7f, 0x0d82, 0x0d82, 0x0d82,
- 0x0d82, 0x0d82, 0x0d89, 0x0d89, 0x0d8e, 0x0d94, 0x0d9a, 0x0da0,
- 0x0da5, 0x0dad, 0x0dad, 0x0db4, 0x0db4, 0x0db9, 0x0dbd, 0x0dc1,
- // Entry 240 - 27F
- 0x0dc8, 0x0dcd, 0x0dcd, 0x0dd4, 0x0ddc, 0x0df1, 0x0df1, 0x0df7,
- 0x0e0a, 0x0e0e, 0x0e29, 0x0e2d, 0x0e43, 0x0e43, 0x0e52, 0x0e63,
- 0x0e72, 0x0e7f, 0x0e89, 0x0e97, 0x0ead, 0x0ebd, 0x0ecf, 0x0ecf,
- 0x0ede, 0x0eed, 0x0ef8, 0x0eff, 0x0f13, 0x0f25, 0x0f2c, 0x0f38,
- 0x0f4f, 0x0f62,
-} // Size: 1244 bytes
-
-var hyLangStr string = "" + // Size: 6740 bytes
- "աֆարերենաբխազերենաֆրիկաանսաքաներենամհարերենարաբերենասամերենադրբեջաներենբ" +
- "աշկիրերենբելառուսերենբուլղարերենբամբարաբենգալերենտիբեթերենբրետոներենբոս" +
- "նիերենկատալաներենչեչեներենկորսիկերենչեխերենչուվաշերենուելսերենդանիերենգ" +
- "երմաներենջոնգքհաէվեհունարենանգլերենէսպերանտոիսպաներենէստոներենբասկերենպ" +
- "արսկերենֆիններենֆիջիերենֆարյորերենֆրանսերենարևմտյան ֆրիզերենիռլանդերենգ" +
- "ալիսերենգուարանիգուջարաթիմեներենհաուսաեբրայերենհինդիխորվաթերենհաիթերենհ" +
- "ունգարերենհայերենինդոնեզերենիգբոսիխուան յիիսլանդերենիտալերենինուկտիտուտ" +
- "ճապոներենճավայերենվրացերենկիկույուղազախերենկալաալիսուտքմերերենկաննադակո" +
- "րեերենքաշմիրերենքրդերենկոռներենղրղզերենլատիներենլյուքսեմբուրգերենգանդալ" +
- "ինգալալաոսերենլիտվերենլուբա-կատանգալատվիերենմալագասերենմաորիմակեդոներեն" +
- "մալայալամմոնղոլերենմարաթիմալայերենմալթերենբիրմայերենհյուսիսային նդեբելե" +
- "նեպալերենհոլանդերեննորվեգերեն նյունորսկնորվեգերեն բուկմոլակվիտաներենօջի" +
- "բվաօրոմոօրիյաօսերենփենջաբերենպալիլեհերենփուշթուպորտուգալերենքեչուառոման" +
- "շերենռունդիռումիներենռուսերենքինյարվանդասանսկրիտսինդհիհյուսիսային սամիս" +
- "անգոսինհալերենսլովակերենսլովեներենշոնասոմալիերենալբաներենսերբերենհյուսի" +
- "սային սոտոսունդաներենշվեդերենսուահիլիթամիլերենթելուգուտաջիկերենթայերենթ" +
- "իգրինիաթուրքմեներենցվանատոնգերենթուրքերենցոնգաթաթարերենթաիտերենույղուրե" +
- "րենուկրաիներենուրդուուզբեկերենվենդավիետնամերենվոլապյուկվալոներենվոլոֆքս" +
- "ոզաիդիշյորուբաժուանգչինարենզուլուսերենաչեհերենակոլերենադանգմերենադիղերե" +
- "նթունիսական արաբերենաղեմայներենաքքադերենհին անգլերենարամեերենմապուչիալժ" +
- "իրական արաբերենեգիպտական արաբերենասուամերիկյան ժեստերի լեզուաստուրերենբ" +
- "եմբաբենաարևմտյան բելոչիբոդոաքուզերենկաբուաներենչիգաշերոկիսորանի (քրդերե" +
- "ն)ղպտերենղրիմյան թուրքերենթաիթազարմաստորին սորբիերենդուալաջոլա-ֆոնյիէմբ" +
- "ուէֆիկերենհին եգիպտերենֆիլիպիներենտորնադելեն ֆիններենֆոներենհին ֆրանսեր" +
- "ենարևելյան ֆրիզերենֆրիուլիերենգաերենգագաուզերենզրադաշտական դարիհին բարձ" +
- "ր գերմաներենգոթերենհին հունարենշվեյցարական գերմաներենվայուգուսիհավայիեր" +
- "ենվերին սորբիերենսյան չինարեննգոմբամաշամեկաբիլերենկամբատիապմակոնդեկուբա" +
- "վերդիանուկոյրա չինիկալենջինկոմի-պերմյակկոնկանիշամբալաբաֆիալանգիլակոտահյ" +
- "ուսիսային լուրիերենլուոլույամասաիմերումորիսյենմաքուա-մետտոմետամոհավքարև" +
- "մտյան մարիերենմունդանգմազանդարաներեննամակվասիոհին նորվեգերեննկոնուերնյա" +
- "նկոլեօսեյջիօսմաներենպանգասինաներենպահլավերենպանպանգաերենպապիամենտոպալաո" +
- "ւերենպիկարդերենփենսիլվանական գերմաներենպլատագերմաներենհին պարսկերենպալա" +
- "նտինների գերմաներենփյունիկերենպիեմոնտերենպոնտիկերենպոնպեերենպրուսերենհի" +
- "ն պրովենսիալկիչեռաջաստաներենռապանուիռարոտոնգանռոմանիոլերենռիֆերենռոմբոռ" +
- "ոմաներենռոտումանռուսիներենռովիանաարոմաներենռվասամբուրուսանգուհարավային " +
- "քրդերենսենակոյրաբորո սեննիհին իռլանդերենտաշելհիթհարավային սամիլուլե սամ" +
- "իինարի սամիսկոլտ սամիկոնգոյի սուահիլիտուլուտիմնետեսոտերենոթեթումտիգրետի" +
- "վերենտոկելաուցախուրտլինգիտթալիշերենտամաշեկտոկ փիսինտուրոյոտարոկոցակոներ" +
- "ենցիմշյանտումբուկաթուվալուերենտասավաքտուվերենկենտրոնատլասյան թամազիխտու" +
- "դմուրտերենուգարիտերենումբունդուռուտերենվաիվենետիկերենվեպսկերենարևմտյան " +
- "ֆլամադերենվոդերենվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինա" +
- "րենսոգայաոյապսկերենյանգբենյեմբաերենսապոտեկերենզեյլանդերենզենագաստանդարտ" +
- " մարոկական թամազիղտզունիերենառանց լեզվային բովանդակությանզազաերենժամանակ" +
- "ակից ստանդարտ արաբերենավստրիական գերմաներենշվեյցարական բարձր գերմաներեն" +
- "ավստրալիական անգլերենկանադական անգլերենբրիտանական անգլերենամերիկյան անգ" +
- "լերենլատինաամերիկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպաներենկա" +
- "նադական ֆրանսերենշվեյցարական ֆրանսերենֆլամանդերենբրազիլական պորտուգալեր" +
- "ենեվրոպական պորտուգալերենմոլդովերենպարզեցված չինարենավանդական չինարեն"
-
-var hyLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x0044, 0x0056, 0x0056,
- 0x0066, 0x0076, 0x0076, 0x0076, 0x008e, 0x00a2, 0x00ba, 0x00d0,
- 0x00d0, 0x00de, 0x00f2, 0x0104, 0x0118, 0x012a, 0x0140, 0x0152,
- 0x0152, 0x0166, 0x0166, 0x0174, 0x0174, 0x0188, 0x019a, 0x01aa,
- 0x01be, 0x01be, 0x01cc, 0x01d2, 0x01e2, 0x01f2, 0x0204, 0x0216,
- 0x0228, 0x0238, 0x024a, 0x024a, 0x025a, 0x026a, 0x027e, 0x0290,
- 0x02b1, 0x02c5, 0x02c5, 0x02d7, 0x02e7, 0x02f9, 0x0307, 0x0313,
- 0x0325, 0x032f, 0x032f, 0x0343, 0x0353, 0x0369, 0x0377, 0x0377,
- // Entry 40 - 7F
- 0x0377, 0x038d, 0x038d, 0x0395, 0x03a8, 0x03a8, 0x03a8, 0x03bc,
- 0x03cc, 0x03e2, 0x03f4, 0x0406, 0x0416, 0x0416, 0x0426, 0x0426,
- 0x0438, 0x044e, 0x045e, 0x046c, 0x047c, 0x047c, 0x0490, 0x049e,
- 0x049e, 0x04ae, 0x04be, 0x04d0, 0x04f2, 0x04fc, 0x04fc, 0x050a,
- 0x051a, 0x052a, 0x0543, 0x0555, 0x056b, 0x056b, 0x0575, 0x058b,
- 0x059d, 0x05b1, 0x05bd, 0x05cf, 0x05df, 0x05f3, 0x05f3, 0x0618,
- 0x062a, 0x062a, 0x063e, 0x0665, 0x0688, 0x0688, 0x0688, 0x0688,
- 0x069e, 0x06aa, 0x06b4, 0x06be, 0x06ca, 0x06de, 0x06e6, 0x06f4,
- // Entry 80 - BF
- 0x0702, 0x071c, 0x0728, 0x073c, 0x0748, 0x075c, 0x076c, 0x0782,
- 0x0792, 0x0792, 0x079e, 0x07bd, 0x07c7, 0x07db, 0x07ef, 0x0803,
- 0x0803, 0x080b, 0x081f, 0x0831, 0x0841, 0x0841, 0x0860, 0x0876,
- 0x0886, 0x0896, 0x08a8, 0x08b8, 0x08ca, 0x08d8, 0x08e8, 0x0900,
- 0x090a, 0x091a, 0x092c, 0x0936, 0x0948, 0x0958, 0x096e, 0x0984,
- 0x0990, 0x09a4, 0x09ae, 0x09c4, 0x09d6, 0x09e8, 0x09f2, 0x09fc,
- 0x0a04, 0x0a12, 0x0a1e, 0x0a2c, 0x0a42, 0x0a52, 0x0a62, 0x0a76,
- 0x0a86, 0x0aab, 0x0aab, 0x0ab3, 0x0ac1, 0x0ad3, 0x0ad3, 0x0ad3,
- // Entry C0 - FF
- 0x0ad3, 0x0ad3, 0x0aea, 0x0aea, 0x0afc, 0x0b0a, 0x0b0a, 0x0b0a,
- 0x0b2d, 0x0b2d, 0x0b2d, 0x0b50, 0x0b58, 0x0b84, 0x0b98, 0x0b98,
- 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98,
- 0x0b98, 0x0ba2, 0x0ba2, 0x0baa, 0x0baa, 0x0baa, 0x0bc7, 0x0bc7,
- 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7,
- 0x0bc7, 0x0bcf, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1,
- 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0bf7, 0x0bff, 0x0bff, 0x0bff,
- 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c0b, 0x0c0b, 0x0c28,
- // Entry 100 - 13F
- 0x0c36, 0x0c36, 0x0c57, 0x0c57, 0x0c57, 0x0c57, 0x0c61, 0x0c61,
- 0x0c61, 0x0c61, 0x0c61, 0x0c6b, 0x0c6b, 0x0c8a, 0x0c8a, 0x0c96,
- 0x0c96, 0x0ca9, 0x0ca9, 0x0ca9, 0x0cb3, 0x0cc3, 0x0cc3, 0x0cdc,
- 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cf2,
- 0x0d17, 0x0d25, 0x0d25, 0x0d25, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d5f,
- 0x0d75, 0x0d81, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0db6, 0x0db6,
- 0x0db6, 0x0db6, 0x0db6, 0x0ddc, 0x0ddc, 0x0ddc, 0x0ddc, 0x0dea,
- 0x0dea, 0x0e01, 0x0e2c, 0x0e36, 0x0e36, 0x0e40, 0x0e40, 0x0e40,
- // Entry 140 - 17F
- 0x0e40, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e71, 0x0e88,
- 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88,
- 0x0e94, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eb2, 0x0eb2,
- 0x0eb2, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ec4, 0x0ed2, 0x0eee,
- 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0f01, 0x0f01, 0x0f01,
- 0x0f01, 0x0f11, 0x0f11, 0x0f28, 0x0f36, 0x0f36, 0x0f36, 0x0f36,
- 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f44, 0x0f4e, 0x0f4e, 0x0f4e,
- 0x0f4e, 0x0f4e, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58,
- // Entry 180 - 1BF
- 0x0f58, 0x0f64, 0x0f64, 0x0f64, 0x0f64, 0x0f8d, 0x0f8d, 0x0f8d,
- 0x0f8d, 0x0f8d, 0x0f95, 0x0f95, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f,
- 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fa9, 0x0fa9, 0x0fa9,
- 0x0fa9, 0x0fa9, 0x0fb3, 0x0fc3, 0x0fc3, 0x0fda, 0x0fe2, 0x0fe2,
- 0x0fe2, 0x0fe2, 0x0fe2, 0x0fee, 0x0fee, 0x100f, 0x101f, 0x101f,
- 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x103b, 0x103b,
- 0x103b, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x104f,
- 0x104f, 0x104f, 0x106a, 0x106a, 0x1070, 0x1070, 0x107a, 0x107a,
- // Entry 1C0 - 1FF
- 0x107a, 0x108a, 0x108a, 0x108a, 0x1096, 0x10a8, 0x10c4, 0x10d8,
- 0x10f0, 0x1104, 0x1118, 0x112c, 0x115b, 0x1179, 0x1192, 0x11bf,
- 0x11d5, 0x11eb, 0x11ff, 0x1211, 0x1223, 0x123e, 0x1246, 0x1246,
- 0x125e, 0x126e, 0x1282, 0x129a, 0x12a8, 0x12b2, 0x12c4, 0x12d4,
- 0x12e8, 0x12f6, 0x130a, 0x1310, 0x1310, 0x1310, 0x1310, 0x1322,
- 0x1322, 0x1322, 0x1322, 0x1322, 0x132e, 0x132e, 0x132e, 0x132e,
- 0x134f, 0x134f, 0x1357, 0x1357, 0x1357, 0x1374, 0x138f, 0x138f,
- 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x13ba, 0x13cd,
- // Entry 200 - 23F
- 0x13e0, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3,
- 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x1412, 0x1412, 0x1412, 0x1412,
- 0x141e, 0x1428, 0x1430, 0x143c, 0x1448, 0x1452, 0x1460, 0x1470,
- 0x147c, 0x147c, 0x148a, 0x149c, 0x14aa, 0x14aa, 0x14bb, 0x14c9,
- 0x14d5, 0x14e7, 0x14f5, 0x14f5, 0x1507, 0x151f, 0x152d, 0x153d,
- 0x156c, 0x1584, 0x159a, 0x15ae, 0x15be, 0x15c4, 0x15da, 0x15ec,
- 0x1611, 0x1611, 0x161f, 0x1627, 0x1633, 0x1643, 0x1651, 0x1663,
- 0x166b, 0x167b, 0x1690, 0x1690, 0x1690, 0x1698, 0x169e, 0x16b0,
- // Entry 240 - 27F
- 0x16be, 0x16d0, 0x16d0, 0x16d0, 0x16e6, 0x16e6, 0x16fc, 0x1708,
- 0x173c, 0x174e, 0x1786, 0x1796, 0x17ce, 0x17ce, 0x17f7, 0x182d,
- 0x1856, 0x1879, 0x189e, 0x18c1, 0x18f2, 0x1917, 0x193e, 0x193e,
- 0x1963, 0x198c, 0x198c, 0x19a2, 0x19d1, 0x19fe, 0x1a12, 0x1a12,
- 0x1a33, 0x1a54,
-} // Size: 1244 bytes
-
-var idLangStr string = "" + // Size: 3949 bytes
- "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijanB" +
- "ashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChec" +
- "henChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerma" +
- "nDivehiDzongkhaEweYunaniInggrisEsperantoSpanyolEstiBaskPersiaFulaSuomiFi" +
- "jiFaroPrancisFrisia BaratIrlandiaGaelik SkotlandiaGalisiaGuaraniGujarati" +
- "ManxHausaIbraniHindiHiri MotuKroasiaHaitiHungariaArmeniaHereroInterlingu" +
- "aIndonesiaInterlingueIgboSichuan YiInupiakIdoIslandiaItaliaInuktitutJepa" +
- "ngJawaGeorgiaKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKoreaKanuri" +
- "KashmirKurdiKomiKornishKirgizLatinLuksemburgGandaLimburgiaLingalaLaoLitu" +
- "aviLuba-KatangaLatviMalagasiMarshallMaoriMakedoniaMalayalamMongoliaMarat" +
- "hiMelayuMaltaMyanmarNauruNdebele UtaraNepaliNdongaBelandaNynorsk Norwegi" +
- "aBokmål NorwegiaNdebele SelatanNavajoNyanjaOsitaniaOjibwaOromoOriyaOsset" +
- "iaPunjabiPaliPolskiPashtoPortugisQuechuaReto-RomanRundiRumaniaRusiaKinya" +
- "rwandaSanskertaSardiniaSindhiSami UtaraSangoSinhalaSlovakSlovenSamoaShon" +
- "aSomaliAlbaniaSerbSwatiSotho SelatanSundaSwediaSwahiliTamilTeluguTajikTh" +
- "aiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkrainaUrduUzbek" +
- "VendaVietnamVolapukWalloonWolofXhosaYiddishYorubaZhuangChinaZuluAcehAcol" +
- "iAdangmeAdygeiArab TunisiaAfrihiliAghemAinuAkkadiaAlabamaAleutAltai Sela" +
- "tanInggris KunoAngikaAramAraukanArapahoArab AlgeriaArawakArab MarokoArab" +
- " MesirAsuBahasa Isyarat AmerikaAsturAwadhiBaluchiBaliBavariaBasaBamunBat" +
- "ak TobaGhomalaBejaBembaBetawiBenaBafutBalochi BaratBhojpuriBikolBiniBanj" +
- "arKomSiksikaBrajBodoAkooseBuriatBugisBuluBlinMedumbaKadoKaribCayugaAtsam" +
- "SebuanoKigaChibchaChagataiChuukeMariJargon ChinookKoktawChipewyanCheroke" +
- "eCheyenneKurdi SoraniKoptikTatar KrimeaKashubiaDakotaDargwaTaitaDelaware" +
- "SlaveDogribDinkaZarmaDogriSorbia RendahDualaBelanda TengahJola-FonyiDyul" +
- "aDazagaEmbuEfikMesir KunoEkajukElamInggris Abad PertengahanEwondoFangFil" +
- "ipinoFonPrancis Abad PertengahanPrancis KunoArpitanFrisia UtaraFrisia Ti" +
- "murFriuliGaGagauzGayoGbayaGeezGilbertGilakiJerman Abad PertengahanJerman" +
- " KunoGondiGorontaloGothikGreboYunani KunoJerman (Swiss)GusiiGwich’inHaid" +
- "aHawaiiHindi FijiHiligaynonHititHmongSorbia AtasHupaIbanIbibioIlokoIngus" +
- "hetiaLojbanNgombaMachameIbrani-PersiaIbrani-ArabKara-KalpakKabyleKachinJ" +
- "juKambaKawiKabardiKanembuTyapMakondeKabuverdianuKenyangKoroKhasiKhotanKo" +
- "yra ChiiniKakoKalenjinKimbunduKomi-PermyakKonkaniKosreKpelleKarachai Bal" +
- "karKrioKareliaKurukShambalaBafiaDialek KolschKumykKutenaiLadinoLangiLahn" +
- "daLambaLezghiaLiguriaLakotaMongoLoziLuri UtaraLuba-LuluaLuisenoLundaLuoM" +
- "izoLuyiaLazMaduraMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandarM" +
- "endeMeruMorisienIrlandia Abad PertengahanMakhuwa-Meettometa’MikmakMinang" +
- "kabauManchuriaManipuriMohawkMossiMundangBeberapa BahasaBahasa MuskogeeMi" +
- "randaMarwariMentawaiMyeneEryzaMazanderaniNeapolitanNamaJerman RendahNewa" +
- "riNiasNiueaKwasioNgiemboonNogaiNorse KunoN’KoSotho UtaraNuerNewari Klasi" +
- "kNyamweziNyankoleNyoroNzimaOsageTurki OsmaniPangasinaPahleviPampangaPapi" +
- "amentoPalauJerman PennsylvaniaPersia KunoFunisiaPohnpeiaProvencal LamaKʼ" +
- "icheʼRajasthaniRapanuiRarotongaRomboRomaniRotumaMakedo-RumaniaRwaSandawe" +
- "SakhaAram SamariaSamburuSasakSantaliNgambaiSanguSisiliaSkotlandiaKurdi S" +
- "elatanSenecaSenaSeriSelkupKoyraboro SenniIrlandia KunoTachelhitShanArab " +
- "SuwaSidamoSilesia BawahSelayarSami SelatanLule SamiInari SamiSkolt SamiS" +
- "oninkeSogdienSranan TongoSererSahoSukumaSusuSumeriaKomoriaKongo SwahiliS" +
- "uriah KlasikSuriahSilesiaTuluTimneTesoTerenoTetunTigreTivTokelauKlingonT" +
- "lingitTamashekNyasa TongaTok PisinTuroyoTarokoTsimshiaTat MuslimTumbukaT" +
- "uvaluTasawaqTuviniaTamazight Maroko TengahUdmurtUgaritUmbunduRootVaiVene" +
- "siaVotiaVunjoWalserWalamoWaraiWashoWarlpiriKalmukSogaYaoYapoisYangbenYem" +
- "baKantonZapotekBlissymbolZenagaTamazight Maroko StandarZuniTidak ada kon" +
- "ten linguistikZazaArab Standar ModernJerman Tinggi (Swiss)Spanyol Amerik" +
- "a LatinSpanyol (Eropa)Spanyol MeksikoPortugis (Eropa)MoldaviaSerbo-Kroas" +
- "iaChina (Aksara Sederhana)China (Aksara Tradisional)"
-
-var idLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000a, 0x0010, 0x0019, 0x001d, 0x0024, 0x002a,
- 0x002e, 0x0033, 0x0037, 0x003d, 0x0047, 0x004e, 0x0057, 0x005f,
- 0x0066, 0x006d, 0x0074, 0x0079, 0x007f, 0x0085, 0x008c, 0x0093,
- 0x009b, 0x00a2, 0x00a6, 0x00ac, 0x00c2, 0x00c9, 0x00ce, 0x00d3,
- 0x00d9, 0x00df, 0x00e7, 0x00ea, 0x00f0, 0x00f7, 0x0100, 0x0107,
- 0x010b, 0x010f, 0x0115, 0x0119, 0x011e, 0x0122, 0x0126, 0x012d,
- 0x0139, 0x0141, 0x0152, 0x0159, 0x0160, 0x0168, 0x016c, 0x0171,
- 0x0177, 0x017c, 0x0185, 0x018c, 0x0191, 0x0199, 0x01a0, 0x01a6,
- // Entry 40 - 7F
- 0x01b1, 0x01ba, 0x01c5, 0x01c9, 0x01d3, 0x01da, 0x01dd, 0x01e5,
- 0x01eb, 0x01f4, 0x01fa, 0x01fe, 0x0205, 0x020a, 0x0210, 0x0218,
- 0x021e, 0x0229, 0x022e, 0x0235, 0x023a, 0x0240, 0x0247, 0x024c,
- 0x0250, 0x0257, 0x025d, 0x0262, 0x026c, 0x0271, 0x027a, 0x0281,
- 0x0284, 0x028b, 0x0297, 0x029c, 0x02a4, 0x02ac, 0x02b1, 0x02ba,
- 0x02c3, 0x02cb, 0x02d2, 0x02d8, 0x02dd, 0x02e4, 0x02e9, 0x02f6,
- 0x02fc, 0x0302, 0x0309, 0x0319, 0x0329, 0x0338, 0x033e, 0x0344,
- 0x034c, 0x0352, 0x0357, 0x035c, 0x0363, 0x036a, 0x036e, 0x0374,
- // Entry 80 - BF
- 0x037a, 0x0382, 0x0389, 0x0393, 0x0398, 0x039f, 0x03a4, 0x03af,
- 0x03b8, 0x03c0, 0x03c6, 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03e8,
- 0x03ed, 0x03f2, 0x03f8, 0x03ff, 0x0403, 0x0408, 0x0415, 0x041a,
- 0x0420, 0x0427, 0x042c, 0x0432, 0x0437, 0x043b, 0x0443, 0x044a,
- 0x0450, 0x0455, 0x045a, 0x0460, 0x0465, 0x046b, 0x0471, 0x0478,
- 0x047c, 0x0481, 0x0486, 0x048d, 0x0494, 0x049b, 0x04a0, 0x04a5,
- 0x04ac, 0x04b2, 0x04b8, 0x04bd, 0x04c1, 0x04c5, 0x04ca, 0x04d1,
- 0x04d7, 0x04e3, 0x04eb, 0x04f0, 0x04f4, 0x04fb, 0x0502, 0x0507,
- // Entry C0 - FF
- 0x0507, 0x0514, 0x0520, 0x0526, 0x052a, 0x0531, 0x0531, 0x0538,
- 0x0544, 0x054a, 0x0555, 0x055f, 0x0562, 0x0578, 0x057d, 0x057d,
- 0x0583, 0x058a, 0x058e, 0x0595, 0x0599, 0x059e, 0x05a8, 0x05af,
- 0x05b3, 0x05b8, 0x05be, 0x05c2, 0x05c7, 0x05c7, 0x05d4, 0x05dc,
- 0x05e1, 0x05e5, 0x05eb, 0x05ee, 0x05f5, 0x05f5, 0x05f5, 0x05f9,
- 0x05f9, 0x05fd, 0x0603, 0x0609, 0x060e, 0x0612, 0x0616, 0x061d,
- 0x0621, 0x0626, 0x062c, 0x0631, 0x0638, 0x063c, 0x0643, 0x064b,
- 0x0651, 0x0655, 0x0663, 0x0669, 0x0672, 0x067a, 0x0682, 0x068e,
- // Entry 100 - 13F
- 0x0694, 0x0694, 0x06a0, 0x06a8, 0x06ae, 0x06b4, 0x06b9, 0x06c1,
- 0x06c6, 0x06cc, 0x06d1, 0x06d6, 0x06db, 0x06e8, 0x06e8, 0x06ed,
- 0x06fb, 0x0705, 0x070a, 0x0710, 0x0714, 0x0718, 0x0718, 0x0722,
- 0x0728, 0x072c, 0x0744, 0x0744, 0x074a, 0x074a, 0x074e, 0x0756,
- 0x0756, 0x0759, 0x0759, 0x0771, 0x077d, 0x0784, 0x0790, 0x079c,
- 0x07a2, 0x07a4, 0x07aa, 0x07aa, 0x07ae, 0x07b3, 0x07b3, 0x07b7,
- 0x07be, 0x07c4, 0x07db, 0x07e6, 0x07e6, 0x07eb, 0x07f4, 0x07fa,
- 0x07ff, 0x080a, 0x0818, 0x0818, 0x0818, 0x081d, 0x0827, 0x082c,
- // Entry 140 - 17F
- 0x082c, 0x0832, 0x083c, 0x0846, 0x084b, 0x0850, 0x085b, 0x085b,
- 0x085f, 0x0863, 0x0869, 0x086e, 0x0878, 0x0878, 0x0878, 0x087e,
- 0x0884, 0x088b, 0x0898, 0x08a3, 0x08a3, 0x08ae, 0x08b4, 0x08ba,
- 0x08bd, 0x08c2, 0x08c6, 0x08cd, 0x08d4, 0x08d8, 0x08df, 0x08eb,
- 0x08f2, 0x08f6, 0x08f6, 0x08fb, 0x0901, 0x090d, 0x090d, 0x090d,
- 0x0911, 0x0919, 0x0921, 0x092d, 0x0934, 0x0939, 0x093f, 0x094e,
- 0x0952, 0x0952, 0x0959, 0x095e, 0x0966, 0x096b, 0x0978, 0x097d,
- 0x0984, 0x098a, 0x098f, 0x0995, 0x099a, 0x09a1, 0x09a1, 0x09a8,
- // Entry 180 - 1BF
- 0x09a8, 0x09ae, 0x09ae, 0x09b3, 0x09b7, 0x09c1, 0x09c1, 0x09cb,
- 0x09d2, 0x09d7, 0x09da, 0x09de, 0x09e3, 0x09e3, 0x09e6, 0x09ec,
- 0x09f0, 0x09f6, 0x09fe, 0x0a05, 0x0a0d, 0x0a12, 0x0a16, 0x0a1c,
- 0x0a22, 0x0a27, 0x0a2b, 0x0a33, 0x0a4c, 0x0a5a, 0x0a61, 0x0a67,
- 0x0a72, 0x0a7b, 0x0a83, 0x0a89, 0x0a8e, 0x0a8e, 0x0a95, 0x0aa4,
- 0x0ab3, 0x0aba, 0x0ac1, 0x0ac9, 0x0ace, 0x0ad3, 0x0ade, 0x0ade,
- 0x0ae8, 0x0aec, 0x0af9, 0x0aff, 0x0b03, 0x0b08, 0x0b08, 0x0b0e,
- 0x0b17, 0x0b1c, 0x0b26, 0x0b26, 0x0b2c, 0x0b37, 0x0b3b, 0x0b48,
- // Entry 1C0 - 1FF
- 0x0b50, 0x0b58, 0x0b5d, 0x0b62, 0x0b67, 0x0b73, 0x0b7c, 0x0b83,
- 0x0b8b, 0x0b95, 0x0b9a, 0x0b9a, 0x0bad, 0x0bad, 0x0bb8, 0x0bb8,
- 0x0bbf, 0x0bbf, 0x0bbf, 0x0bc7, 0x0bc7, 0x0bd5, 0x0bde, 0x0bde,
- 0x0be8, 0x0bef, 0x0bf8, 0x0bf8, 0x0bf8, 0x0bfd, 0x0c03, 0x0c09,
- 0x0c09, 0x0c09, 0x0c17, 0x0c1a, 0x0c21, 0x0c26, 0x0c32, 0x0c39,
- 0x0c3e, 0x0c45, 0x0c45, 0x0c4c, 0x0c51, 0x0c58, 0x0c62, 0x0c62,
- 0x0c6f, 0x0c75, 0x0c79, 0x0c7d, 0x0c83, 0x0c92, 0x0c9f, 0x0c9f,
- 0x0ca8, 0x0cac, 0x0cb5, 0x0cbb, 0x0cc8, 0x0ccf, 0x0cdb, 0x0ce4,
- // Entry 200 - 23F
- 0x0cee, 0x0cf8, 0x0cff, 0x0d06, 0x0d12, 0x0d17, 0x0d1b, 0x0d1b,
- 0x0d21, 0x0d25, 0x0d2c, 0x0d33, 0x0d40, 0x0d4d, 0x0d53, 0x0d5a,
- 0x0d5e, 0x0d63, 0x0d67, 0x0d6d, 0x0d72, 0x0d77, 0x0d7a, 0x0d81,
- 0x0d81, 0x0d88, 0x0d8f, 0x0d8f, 0x0d97, 0x0da2, 0x0dab, 0x0db1,
- 0x0db7, 0x0db7, 0x0dbf, 0x0dc9, 0x0dd0, 0x0dd6, 0x0ddd, 0x0de4,
- 0x0dfb, 0x0e01, 0x0e07, 0x0e0e, 0x0e12, 0x0e15, 0x0e1c, 0x0e1c,
- 0x0e1c, 0x0e1c, 0x0e21, 0x0e21, 0x0e26, 0x0e2c, 0x0e32, 0x0e37,
- 0x0e3c, 0x0e44, 0x0e44, 0x0e4a, 0x0e4a, 0x0e4e, 0x0e51, 0x0e57,
- // Entry 240 - 27F
- 0x0e5e, 0x0e63, 0x0e63, 0x0e69, 0x0e70, 0x0e7a, 0x0e7a, 0x0e80,
- 0x0e98, 0x0e9c, 0x0eb7, 0x0ebb, 0x0ece, 0x0ece, 0x0ece, 0x0ee3,
- 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ef8, 0x0f07, 0x0f16, 0x0f16,
- 0x0f16, 0x0f16, 0x0f16, 0x0f16, 0x0f16, 0x0f26, 0x0f2e, 0x0f3b,
- 0x0f53, 0x0f6d,
-} // Size: 1244 bytes
-
-var isLangStr string = "" + // Size: 4301 bytes
- "abkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaavarís" +
- "kaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatíbesk" +
- "abretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskakirkj" +
- "uslavneskasjúvasvelskadanskaþýskadívehídsongkaewegrískaenskaesperantóspæ" +
- "nskaeistneskabaskneskapersneskafúlafinnskafídjeyskafæreyskafranskavestur" +
- "frísneskaírskaskosk gelískagalíanskagvaranígújaratímanskahásahebreskahin" +
- "díhírímótúkróatískahaítískaungverskaarmenskahereróalþjóðatungaindónesísk" +
- "ainterlingveígbósísúanjíínúpíakídóíslenskaítalskainúktitútjapanskajavans" +
- "kageorgískakongóskakíkújúkúanjamakasakskagrænlenskakmerkannadakóreskakan" +
- "úríkasmírskakúrdískakomískakornbreskakirgiskalatínalúxemborgískagandali" +
- "mbúrgískalingalalaólitháískalúbakatangalettneskamalagasískamarshallskama" +
- "orímakedónskamalajalammongólskamaratímalaískamaltneskaburmneskanárúskano" +
- "rður-ndebelenepalskandongahollenskanýnorskanorskt bókmálsuðurndebelenava" +
- "hónjanja; sísjeva; sjevaoksítanískaojibvaoromoóríaossetískapúnjabípalípó" +
- "lskapastúportúgalskakvesjúarómanskarúndírúmenskarússneskakínjarvandasans" +
- "krítsardínskasindínorðursamískasangósingalískaslóvakískaslóvenskasamóska" +
- "shonasómalskaalbanskaserbneskasvatísuðursótósúndanskasænskasvahílítamíls" +
- "katelúgútadsjikskataílenskatígrinjatúrkmenskatsúanatongverskatyrkneskats" +
- "ongatatarskatahítískaúígúrúkraínskaúrdúúsbekskavendavíetnamskavallónskav" +
- "olofsósajiddískajórúbasúangkínverskasúlúakkískaacoliadangmeadýgeafríhílí" +
- "aghemakkadískaaleúskafornenskaarameískaarákanískaarapahóaravakskaasuastú" +
- "rískaavadíbalúkíbalískabasabejabembabenavesturbalotsíbojpúríbíkolbínísik" +
- "sikabraíbódóbúríatbúgískablínkaddókaríbamálkebúanókígasíbsjasjagataísjúk" +
- "ískamarísínúksjoktásípevískaCherokee-málsjeyensorani-kúrdískakoptískakr" +
- "ímtyrkneskakasúbískadakótadargvataítadelaverslavneskadogríbdinkazarmado" +
- "grílágsorbneskadúalamiðhollenskajola-fonyidjúlaembuefíkfornegypskaekajúk" +
- "elamítmiðenskaevondófangfilippseyskafónmiðfranskafornfranskanorðurfrísne" +
- "skaausturfrísneskafríúlskagagagásgajógbajagísgilberskamiðháþýskafornháþý" +
- "skagondígorontalógotneskagerbóforngrískasvissnesk þýskagusiigvísínhaídah" +
- "avaískahíligaínonhettitískahmonghásorbneskahúpaíbanílokóingúslojbanngomb" +
- "amasjámegyðingapersneskagyðingaarabískakarakalpakkabílekasínkambakavíkab" +
- "ardískamakondegrænhöfðeyskakasíkotaskakoyra chiinikalenjinkimbúndúkómí-p" +
- "ermyakkonkaníkosraskakpellekarasaíbalkarkúrúksjambalabafíakúmíkkútenaíla" +
- "dínskalangílandalambalesgískalakótamongólozinorðurlúríluba-lulualúisenól" +
- "úndalúólúsaíluyiamadúrskamagahímaítílímakasarmandingómasaímoksamandarme" +
- "ndemerúmáritískamiðírskamakhuwa-meettometa’mikmakmínangkabámansjúmanípúr" +
- "ímóhískamossímundangmargvísleg málkríkmarvaríersjamasanderanínapólískan" +
- "amalágþýska; lágsaxneskanevaríníasníveskakwasionógaínorrænan’konorðursót" +
- "ónúernjamvesínyankolenjórónsímaósagetyrkneska, ottómanpangasínmálpalaví" +
- "pampangapapíamentópaláskafornpersneskafönikískaponpeiskafornpróvensalska" +
- "kicherajastanírapanúírarótongskarombóromanírúasandavejakútsamversk arame" +
- "ískasambúrúsasaksantalísangúsikileyskaskoskasuðurkúrdískasenaselkúpkoír" +
- "aboró-sennífornírskatachelhitsjansídamósuðursamískalúlesamískaenaresamís" +
- "kaskoltesamískasóninkesogdíenserersúkúmasúsúsúmerskaKongó-svahílíklassís" +
- "k sýrlenskasýrlenskatímnetesóterenótetúmtígretívtókeláskaklingonskatling" +
- "ittamasjektongverska (nyasa)tokpisintsimsískatúmbúkatúvalúskatasawaqtúví" +
- "nskatamazightúdmúrtúgarítískaúmbúndúrótvaívotískavunjóvalamóvaraívasjóva" +
- "rlpirikalmúkskasógajaójapískasapótekblisstáknsenagastaðlað marokkóskt ta" +
- "mazightsúníekkert tungumálaefnistöðluð nútímaarabískaausturrísk þýskasvi" +
- "ssnesk háþýskaáströlsk enskakanadísk enskabresk enskabandarísk enskarómö" +
- "nsk-amerísk spænskaevrópsk spænskamexíkósk spænskakanadísk franskasvissn" +
- "esk franskalágsaxneskaflæmskabrasílísk portúgalskaevrópsk portúgalskamol" +
- "dóvskaserbókróatískakínverska (einfölduð)kínverska (hefðbundin)"
-
-var isLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000a, 0x0014, 0x001f, 0x0023, 0x002d, 0x0036,
- 0x003f, 0x0047, 0x0050, 0x0057, 0x005e, 0x0065, 0x0074, 0x007e,
- 0x0086, 0x008d, 0x0096, 0x009e, 0x00a8, 0x00b1, 0x00bc, 0x00c8,
- 0x00d0, 0x00d9, 0x00dd, 0x00e7, 0x00f6, 0x00fd, 0x0103, 0x0109,
- 0x0110, 0x0118, 0x011f, 0x0122, 0x0129, 0x012e, 0x0138, 0x0140,
- 0x0149, 0x0152, 0x015b, 0x0160, 0x0167, 0x0171, 0x017a, 0x0181,
- 0x0191, 0x0197, 0x01a5, 0x01af, 0x01b7, 0x01c1, 0x01c7, 0x01cc,
- 0x01d4, 0x01da, 0x01e6, 0x01f1, 0x01fb, 0x0204, 0x020c, 0x0213,
- // Entry 40 - 7F
- 0x0222, 0x022f, 0x023a, 0x0240, 0x024b, 0x0255, 0x025a, 0x0263,
- 0x026b, 0x0276, 0x027e, 0x0286, 0x0290, 0x0299, 0x02a2, 0x02ab,
- 0x02b3, 0x02be, 0x02c2, 0x02c9, 0x02d1, 0x02d9, 0x02e3, 0x02ed,
- 0x02f5, 0x02ff, 0x0307, 0x030e, 0x031d, 0x0322, 0x032f, 0x0336,
- 0x033a, 0x0345, 0x0351, 0x035a, 0x0366, 0x0371, 0x0377, 0x0382,
- 0x038b, 0x0395, 0x039c, 0x03a5, 0x03ae, 0x03b7, 0x03c0, 0x03cf,
- 0x03d7, 0x03dd, 0x03e6, 0x03ef, 0x03fe, 0x040b, 0x0412, 0x0429,
- 0x0436, 0x043c, 0x0441, 0x0447, 0x0451, 0x045a, 0x045f, 0x0466,
- // Entry 80 - BF
- 0x046c, 0x0478, 0x0480, 0x0489, 0x0490, 0x0499, 0x04a3, 0x04af,
- 0x04b8, 0x04c2, 0x04c8, 0x04d7, 0x04dd, 0x04e8, 0x04f4, 0x04fe,
- 0x0506, 0x050b, 0x0514, 0x051c, 0x0525, 0x052b, 0x0537, 0x0541,
- 0x0548, 0x0551, 0x055a, 0x0562, 0x056c, 0x0576, 0x057f, 0x058a,
- 0x0591, 0x059b, 0x05a4, 0x05aa, 0x05b2, 0x05bd, 0x05c5, 0x05d0,
- 0x05d6, 0x05df, 0x05e4, 0x05ef, 0x05ef, 0x05f9, 0x05fe, 0x0603,
- 0x060c, 0x0614, 0x061a, 0x0624, 0x062a, 0x0632, 0x0637, 0x063e,
- 0x0644, 0x0644, 0x064f, 0x0654, 0x0654, 0x065e, 0x065e, 0x0666,
- // Entry C0 - FF
- 0x0666, 0x0666, 0x066f, 0x066f, 0x0679, 0x0685, 0x0685, 0x068d,
- 0x068d, 0x0696, 0x0696, 0x0696, 0x0699, 0x0699, 0x06a4, 0x06a4,
- 0x06aa, 0x06b2, 0x06ba, 0x06ba, 0x06be, 0x06be, 0x06be, 0x06be,
- 0x06c2, 0x06c7, 0x06c7, 0x06cb, 0x06cb, 0x06cb, 0x06d9, 0x06e2,
- 0x06e8, 0x06ee, 0x06ee, 0x06ee, 0x06f5, 0x06f5, 0x06f5, 0x06fa,
- 0x06fa, 0x0700, 0x0700, 0x0708, 0x0711, 0x0711, 0x0716, 0x0716,
- 0x071c, 0x0727, 0x0727, 0x0727, 0x0730, 0x0735, 0x073c, 0x0745,
- 0x074f, 0x0754, 0x075b, 0x0762, 0x076d, 0x077a, 0x0780, 0x0791,
- // Entry 100 - 13F
- 0x079a, 0x079a, 0x07a8, 0x07b3, 0x07ba, 0x07c0, 0x07c6, 0x07cd,
- 0x07d6, 0x07dd, 0x07e2, 0x07e7, 0x07ed, 0x07fa, 0x07fa, 0x0800,
- 0x080d, 0x0817, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x0831,
- 0x0838, 0x083f, 0x0848, 0x0848, 0x084f, 0x084f, 0x0853, 0x085f,
- 0x085f, 0x0863, 0x0863, 0x086e, 0x0879, 0x0879, 0x088a, 0x089a,
- 0x08a4, 0x08a6, 0x08ac, 0x08ac, 0x08b1, 0x08b6, 0x08b6, 0x08ba,
- 0x08c3, 0x08c3, 0x08d1, 0x08df, 0x08df, 0x08e5, 0x08ef, 0x08f7,
- 0x08fd, 0x0908, 0x0919, 0x0919, 0x0919, 0x091e, 0x0926, 0x092c,
- // Entry 140 - 17F
- 0x092c, 0x0935, 0x0935, 0x0941, 0x094c, 0x0951, 0x095d, 0x095d,
- 0x0962, 0x0967, 0x0967, 0x096e, 0x0974, 0x0974, 0x0974, 0x097a,
- 0x0980, 0x0988, 0x0999, 0x09aa, 0x09aa, 0x09b4, 0x09bb, 0x09c1,
- 0x09c1, 0x09c6, 0x09cb, 0x09d6, 0x09d6, 0x09d6, 0x09dd, 0x09ed,
- 0x09ed, 0x09ed, 0x09ed, 0x09f2, 0x09f9, 0x0a05, 0x0a05, 0x0a05,
- 0x0a05, 0x0a0d, 0x0a17, 0x0a25, 0x0a2d, 0x0a35, 0x0a3b, 0x0a49,
- 0x0a49, 0x0a49, 0x0a49, 0x0a50, 0x0a58, 0x0a5e, 0x0a5e, 0x0a65,
- 0x0a6e, 0x0a77, 0x0a7d, 0x0a82, 0x0a87, 0x0a90, 0x0a90, 0x0a90,
- // Entry 180 - 1BF
- 0x0a90, 0x0a97, 0x0a97, 0x0a9d, 0x0aa1, 0x0aae, 0x0aae, 0x0ab8,
- 0x0ac1, 0x0ac7, 0x0acc, 0x0ad3, 0x0ad8, 0x0ad8, 0x0ad8, 0x0ae1,
- 0x0ae1, 0x0ae8, 0x0af2, 0x0af9, 0x0b02, 0x0b08, 0x0b08, 0x0b0d,
- 0x0b13, 0x0b18, 0x0b1d, 0x0b28, 0x0b32, 0x0b40, 0x0b47, 0x0b4d,
- 0x0b59, 0x0b60, 0x0b6b, 0x0b74, 0x0b7a, 0x0b7a, 0x0b81, 0x0b91,
- 0x0b96, 0x0b96, 0x0b9e, 0x0b9e, 0x0b9e, 0x0ba3, 0x0baf, 0x0baf,
- 0x0bba, 0x0bbe, 0x0bd7, 0x0bde, 0x0be3, 0x0beb, 0x0beb, 0x0bf1,
- 0x0bf1, 0x0bf8, 0x0c00, 0x0c00, 0x0c06, 0x0c13, 0x0c18, 0x0c18,
- // Entry 1C0 - 1FF
- 0x0c21, 0x0c29, 0x0c30, 0x0c36, 0x0c3c, 0x0c4f, 0x0c5c, 0x0c63,
- 0x0c6b, 0x0c77, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c8c, 0x0c8c,
- 0x0c97, 0x0c97, 0x0c97, 0x0ca0, 0x0ca0, 0x0cb1, 0x0cb6, 0x0cb6,
- 0x0cc0, 0x0cc9, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cdb, 0x0ce2, 0x0ce2,
- 0x0ce2, 0x0ce2, 0x0ce2, 0x0ce6, 0x0ced, 0x0cf3, 0x0d06, 0x0d0f,
- 0x0d14, 0x0d1c, 0x0d1c, 0x0d1c, 0x0d22, 0x0d2c, 0x0d32, 0x0d32,
- 0x0d42, 0x0d42, 0x0d46, 0x0d46, 0x0d4d, 0x0d5f, 0x0d69, 0x0d69,
- 0x0d72, 0x0d76, 0x0d76, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d8c, 0x0d99,
- // Entry 200 - 23F
- 0x0da6, 0x0db4, 0x0dbc, 0x0dc4, 0x0dc4, 0x0dc9, 0x0dc9, 0x0dc9,
- 0x0dd1, 0x0dd7, 0x0de0, 0x0de0, 0x0df0, 0x0e04, 0x0e0e, 0x0e0e,
- 0x0e0e, 0x0e14, 0x0e19, 0x0e20, 0x0e26, 0x0e2c, 0x0e30, 0x0e3b,
- 0x0e3b, 0x0e45, 0x0e4c, 0x0e4c, 0x0e54, 0x0e66, 0x0e6e, 0x0e6e,
- 0x0e6e, 0x0e6e, 0x0e78, 0x0e78, 0x0e81, 0x0e8c, 0x0e93, 0x0e9d,
- 0x0ea6, 0x0eae, 0x0ebb, 0x0ec5, 0x0ec9, 0x0ecd, 0x0ecd, 0x0ecd,
- 0x0ecd, 0x0ecd, 0x0ed5, 0x0ed5, 0x0edb, 0x0edb, 0x0ee2, 0x0ee8,
- 0x0eee, 0x0ef6, 0x0ef6, 0x0f00, 0x0f00, 0x0f05, 0x0f09, 0x0f11,
- // Entry 240 - 27F
- 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f19, 0x0f23, 0x0f23, 0x0f29,
- 0x0f48, 0x0f4e, 0x0f63, 0x0f63, 0x0f7f, 0x0f7f, 0x0f92, 0x0fa6,
- 0x0fb6, 0x0fc5, 0x0fd0, 0x0fe0, 0x0ffb, 0x100c, 0x101f, 0x101f,
- 0x1030, 0x1041, 0x104d, 0x1055, 0x106d, 0x1082, 0x108c, 0x109d,
- 0x10b5, 0x10cd,
-} // Size: 1244 bytes
-
-var itLangStr string = "" + // Size: 4988 bytes
- "afarabcasoavestanafrikaansakanamaricoaragonesearaboassameseavaroaymaraaz" +
- "erbaigianobaschirobielorussobulgarobislamabambarabengalesetibetanobreton" +
- "ebosniacocatalanocecenochamorrocorsocreececoslavo della Chiesaciuvasciog" +
- "allesedanesetedescodivehidzongkhaewegrecoingleseesperantospagnoloestoneb" +
- "ascopersianofulahfinlandesefigianofaroesefrancesefrisone occidentaleirla" +
- "ndesegaelico scozzesegalizianoguaranígujaratimannesehausaebraicohindihir" +
- "i motucroatohaitianoungheresearmenohererointerlinguaindonesianointerling" +
- "ueigbosichuan yiinupiakidoislandeseitalianoinuktitutgiapponesegiavaneseg" +
- "eorgianokongokikuyukuanyamakazakogroenlandesekhmerkannadacoreanokanurika" +
- "shmiricurdokomicornicochirghisolatinolussemburghesegandalimburgeselingal" +
- "alaolituanoluba-katangalettonemalgasciomarshallesemaorimacedonemalayalam" +
- "mongolomarathimalesemaltesebirmanonaurundebele del nordnepalesendongaola" +
- "ndesenorvegese nynorsknorvegese bokmålndebele del sudnavajonyanjaoccitan" +
- "oojibwaoromooriyaosseticopunjabipalipolaccopashtoportoghesequechuaromanc" +
- "iorundirumenorussokinyarwandasanscritosardosindhisami del nordsangosinga" +
- "leseslovaccoslovenosamoanoshonasomaloalbaneseserboswatisotho del sudsund" +
- "anesesvedeseswahilitamiltelugutagicothaitigrinoturcomannotswanatonganotu" +
- "rcotsongatatarotaitianouiguroucrainourduusbecovendavietnamitavolapükvall" +
- "onewolofxhosayiddishyorubazhuangcinesezuluaccineseacioliadangmeadygheara" +
- "bo tunisinoafrihiliaghemainuaccadoalabamaaleutoalbanese ghegoaltai merid" +
- "ionaleinglese anticoangikaaramaicoaraucanoaraonaarapahoarabo algerinoaru" +
- "acoarabo marocchinoarabo egizianoasulingua dei segni americanaasturianok" +
- "otavaawadhibelucibalinesebavaresebasabamunbatak tobaghomalabegiawembabet" +
- "awibenabafutbadagabeluci occidentalebhojpuribicolbinibanjarkomsiksikabis" +
- "hnupriyabakhtiaribrajbrahuibodoakooseburiatbugibulublinmedumbacaddocarib" +
- "icocayugaatsamcebuanochigachibchaciagataicochuukesemarigergo chinookchoc" +
- "tawchipewyancherokeecheyennecurdo soranicoptocapiznonturco crimeokashubi" +
- "andakotadargwataitadelawareslavedogribdincazarmadogribasso sorabodusun c" +
- "entraledualaolandese mediojola-fonydiuladazagaembuefikemilianoegiziano a" +
- "nticoekajukaelamiticoinglese medioyupik centraleewondoestremegnofangfili" +
- "ppinofinlandese del Tornedalenfonfrancese cajunfrancese mediofrancese an" +
- "ticofrancoprovenzalefrisone settentrionalefrisone orientalefriulanogagag" +
- "auzogangayogbayadari zoroastrianogeezgilbertesegilakitedesco medio altot" +
- "edesco antico altokonkani goanogondigorontalogoticogerbogreco anticotede" +
- "sco svizzerowayuugusiigwichʼinhaidahakkahawaianohindi figianohiligaynahi" +
- "ttitehmongalto soraboxianghupaibanibibioilocanoingushingricocreolo giama" +
- "icanolojbanngamambomachamegiudeo persianogiudeo arabojutlandicokara-kalp" +
- "akcabilokachinkaikambakawikabardiakanembutyapmakondecapoverdianokorokain" +
- "gangkhasikhotanesekoyra chiinikhowarkirmanjkikakokalenjinkimbundupermiac" +
- "okonkanikosraeankpellekarachay-Balkarcarelianokurukhshambalabafiacolonie" +
- "sekumykkutenaigiudeo-spagnololangilahndalambalezghianLingua Franca Noval" +
- "igurelivonelakotalombardololo bantuloziluri settentrionaleletgalloluba-l" +
- "ulualuisenolundaluolushailuyiacinese classicolazmaduresemafamagahimaithi" +
- "limakasarmandingomasaimabamokshamandarmendemerucreolo maurizianoirlandes" +
- "e mediomakhuwa-meettometa’micmacmenangkabaumanchumanipurimohawkmossimari" +
- " occidentalemundangmultilinguacreekmirandesemarwarimentawaimyeneerzyamaz" +
- "andaranimin nannapoletanonamabasso tedesconewariniasniueaokwasiongiemboo" +
- "nnogainorse anticonovialn’kosotho del nordnuernewari classiconyamwezinya" +
- "nkolenyoronzimaosageturco ottomanopangasinanpahlavipampangapapiamentopal" +
- "aupiccardotedesco della Pennsylvaniapersiano anticotedesco palatinofenic" +
- "iopiemonteseponticoponapeprussianoprovenzale anticok’iche’quechua dell’a" +
- "ltopiano del Chimborazorajasthanirapanuirarotongaromagnolotarifitromboro" +
- "manirotumanorutenorovianaarumenorwasandaweyakutaramaico samaritanosambur" +
- "usasaksantalisaurashtrangambaysangusicilianoscozzesesassaresecurdo merid" +
- "ionalesenecasenaseriselkupkoyraboro senniirlandese anticosamogiticotashe" +
- "lhitshanchadian arabicsidamotedesco slesianoselayarsami del sudsami di L" +
- "ulesami di Inarisami skoltsoninkesogdianosranan tongoserersahosaterfries" +
- "ischsukumasususumerocomorianocongo swahilisiriaco classicosiriacoslesian" +
- "otulutemnetesoterenotetumtigretivtokelautsakhurklingontlingittalisciotam" +
- "asheknyasa del Tongatok pisinturoyotarokozaconicotsimshiantat islamicotu" +
- "mbukatuvalutasawaqtuviniantamazightudmurtugariticombundurootvaivenetovep" +
- "sofiammingo occidentalevotovõrovunjowalserwalamowaraywashowarlpiriwukalm" +
- "ykmengreliosogayao (bantu)yapeseyangbenyembanheengatucantonesezapotecbli" +
- "ssymbolzelandesezenagatamazight del Marocco standardzuninessun contenuto" +
- " linguisticozazaarabo moderno standardtedesco austriacoalto tedesco sviz" +
- "zeroinglese australianoinglese canadeseinglese britannicoinglese america" +
- "nospagnolo latinoamericanospagnolo europeospagnolo messicanofrancese can" +
- "adesefrancese svizzerobasso tedesco olandesefiammingoportoghese brasilia" +
- "noportoghese europeomoldavoserbo-croatocinese semplificatocinese tradizi" +
- "onale"
-
-var itLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000a, 0x0011, 0x001a, 0x001e, 0x0025, 0x002e,
- 0x0033, 0x003b, 0x0040, 0x0046, 0x0052, 0x005a, 0x0064, 0x006b,
- 0x0072, 0x0079, 0x0082, 0x008a, 0x0091, 0x0099, 0x00a1, 0x00a7,
- 0x00af, 0x00b4, 0x00b8, 0x00bc, 0x00ce, 0x00d7, 0x00de, 0x00e4,
- 0x00eb, 0x00f1, 0x00f9, 0x00fc, 0x0101, 0x0108, 0x0111, 0x0119,
- 0x011f, 0x0124, 0x012c, 0x0131, 0x013b, 0x0142, 0x0149, 0x0151,
- 0x0164, 0x016d, 0x017d, 0x0186, 0x018e, 0x0196, 0x019d, 0x01a2,
- 0x01a9, 0x01ae, 0x01b7, 0x01bd, 0x01c5, 0x01ce, 0x01d4, 0x01da,
- // Entry 40 - 7F
- 0x01e5, 0x01f0, 0x01fb, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021c,
- 0x0224, 0x022d, 0x0237, 0x0240, 0x0249, 0x024e, 0x0254, 0x025c,
- 0x0262, 0x026e, 0x0273, 0x027a, 0x0281, 0x0287, 0x028f, 0x0294,
- 0x0298, 0x029f, 0x02a8, 0x02ae, 0x02bc, 0x02c1, 0x02cb, 0x02d2,
- 0x02d5, 0x02dc, 0x02e8, 0x02ef, 0x02f8, 0x0303, 0x0308, 0x0310,
- 0x0319, 0x0320, 0x0327, 0x032d, 0x0334, 0x033b, 0x0340, 0x0350,
- 0x0358, 0x035e, 0x0366, 0x0377, 0x0388, 0x0397, 0x039d, 0x03a3,
- 0x03ab, 0x03b1, 0x03b6, 0x03bb, 0x03c3, 0x03ca, 0x03ce, 0x03d5,
- // Entry 80 - BF
- 0x03db, 0x03e5, 0x03ec, 0x03f4, 0x03f9, 0x03ff, 0x0404, 0x040f,
- 0x0418, 0x041d, 0x0423, 0x0430, 0x0435, 0x043e, 0x0446, 0x044d,
- 0x0454, 0x0459, 0x045f, 0x0467, 0x046c, 0x0471, 0x047e, 0x0487,
- 0x048e, 0x0495, 0x049a, 0x04a0, 0x04a6, 0x04aa, 0x04b1, 0x04bb,
- 0x04c1, 0x04c8, 0x04cd, 0x04d3, 0x04d9, 0x04e1, 0x04e7, 0x04ee,
- 0x04f2, 0x04f8, 0x04fd, 0x0507, 0x050f, 0x0516, 0x051b, 0x0520,
- 0x0527, 0x052d, 0x0533, 0x0539, 0x053d, 0x0545, 0x054b, 0x0552,
- 0x0558, 0x0566, 0x056e, 0x0573, 0x0577, 0x057d, 0x0584, 0x058a,
- // Entry C0 - FF
- 0x0598, 0x05a9, 0x05b7, 0x05bd, 0x05c5, 0x05cd, 0x05d3, 0x05da,
- 0x05e8, 0x05ee, 0x05fe, 0x060c, 0x060f, 0x0629, 0x0632, 0x0638,
- 0x063e, 0x0644, 0x064c, 0x0654, 0x0658, 0x065d, 0x0667, 0x066e,
- 0x0673, 0x0678, 0x067e, 0x0682, 0x0687, 0x068d, 0x069f, 0x06a7,
- 0x06ac, 0x06b0, 0x06b6, 0x06b9, 0x06c0, 0x06cb, 0x06d4, 0x06d8,
- 0x06de, 0x06e2, 0x06e8, 0x06ee, 0x06f2, 0x06f6, 0x06fa, 0x0701,
- 0x0706, 0x070e, 0x0714, 0x0719, 0x0720, 0x0725, 0x072c, 0x0736,
- 0x073e, 0x0742, 0x074f, 0x0756, 0x075f, 0x0767, 0x076f, 0x077b,
- // Entry 100 - 13F
- 0x0780, 0x0788, 0x0794, 0x079d, 0x07a3, 0x07a9, 0x07ae, 0x07b6,
- 0x07bb, 0x07c1, 0x07c6, 0x07cb, 0x07d0, 0x07dc, 0x07ea, 0x07ef,
- 0x07fd, 0x0806, 0x080b, 0x0811, 0x0815, 0x0819, 0x0821, 0x0830,
- 0x0837, 0x0840, 0x084d, 0x085b, 0x0861, 0x086b, 0x086f, 0x0878,
- 0x0891, 0x0894, 0x08a2, 0x08b0, 0x08bf, 0x08cf, 0x08e5, 0x08f6,
- 0x08fe, 0x0900, 0x0907, 0x090a, 0x090e, 0x0913, 0x0924, 0x0928,
- 0x0932, 0x0938, 0x094a, 0x095d, 0x096a, 0x096f, 0x0978, 0x097e,
- 0x0983, 0x098f, 0x099f, 0x09a4, 0x09a4, 0x09a9, 0x09b2, 0x09b7,
- // Entry 140 - 17F
- 0x09bc, 0x09c4, 0x09d1, 0x09da, 0x09e1, 0x09e6, 0x09f1, 0x09f6,
- 0x09fa, 0x09fe, 0x0a04, 0x0a0b, 0x0a11, 0x0a18, 0x0a29, 0x0a2f,
- 0x0a37, 0x0a3e, 0x0a4d, 0x0a59, 0x0a63, 0x0a6e, 0x0a74, 0x0a7a,
- 0x0a7d, 0x0a82, 0x0a86, 0x0a8e, 0x0a95, 0x0a99, 0x0aa0, 0x0aac,
- 0x0aac, 0x0ab0, 0x0ab8, 0x0abd, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1,
- 0x0ae5, 0x0aed, 0x0af5, 0x0afd, 0x0b04, 0x0b0c, 0x0b12, 0x0b21,
- 0x0b21, 0x0b21, 0x0b2a, 0x0b30, 0x0b38, 0x0b3d, 0x0b46, 0x0b4b,
- 0x0b52, 0x0b61, 0x0b66, 0x0b6c, 0x0b71, 0x0b79, 0x0b8b, 0x0b91,
- // Entry 180 - 1BF
- 0x0b97, 0x0b9d, 0x0ba5, 0x0baf, 0x0bb3, 0x0bc6, 0x0bce, 0x0bd8,
- 0x0bdf, 0x0be4, 0x0be7, 0x0bed, 0x0bf2, 0x0c01, 0x0c04, 0x0c0c,
- 0x0c10, 0x0c16, 0x0c1e, 0x0c25, 0x0c2d, 0x0c32, 0x0c36, 0x0c3c,
- 0x0c42, 0x0c47, 0x0c4b, 0x0c5c, 0x0c6b, 0x0c79, 0x0c80, 0x0c86,
- 0x0c91, 0x0c97, 0x0c9f, 0x0ca5, 0x0caa, 0x0cba, 0x0cc1, 0x0ccc,
- 0x0cd1, 0x0cda, 0x0ce1, 0x0ce9, 0x0cee, 0x0cf3, 0x0cfe, 0x0d05,
- 0x0d0f, 0x0d13, 0x0d20, 0x0d26, 0x0d2a, 0x0d2e, 0x0d30, 0x0d36,
- 0x0d3f, 0x0d44, 0x0d50, 0x0d56, 0x0d5c, 0x0d6a, 0x0d6e, 0x0d7d,
- // Entry 1C0 - 1FF
- 0x0d85, 0x0d8d, 0x0d92, 0x0d97, 0x0d9c, 0x0daa, 0x0db4, 0x0dbb,
- 0x0dc3, 0x0dcd, 0x0dd2, 0x0dda, 0x0df4, 0x0df4, 0x0e03, 0x0e13,
- 0x0e1a, 0x0e24, 0x0e2b, 0x0e31, 0x0e3a, 0x0e4b, 0x0e56, 0x0e7d,
- 0x0e87, 0x0e8e, 0x0e97, 0x0ea0, 0x0ea7, 0x0eac, 0x0eb2, 0x0eba,
- 0x0ec0, 0x0ec7, 0x0ece, 0x0ed1, 0x0ed8, 0x0edd, 0x0ef0, 0x0ef7,
- 0x0efc, 0x0f03, 0x0f0d, 0x0f14, 0x0f19, 0x0f22, 0x0f2a, 0x0f33,
- 0x0f44, 0x0f4a, 0x0f4e, 0x0f52, 0x0f58, 0x0f67, 0x0f77, 0x0f81,
- 0x0f8a, 0x0f8e, 0x0f9c, 0x0fa2, 0x0fb2, 0x0fb9, 0x0fc5, 0x0fd1,
- // Entry 200 - 23F
- 0x0fde, 0x0fe8, 0x0fef, 0x0ff7, 0x1003, 0x1008, 0x100c, 0x101a,
- 0x1020, 0x1024, 0x102a, 0x1033, 0x1040, 0x1050, 0x1057, 0x105f,
- 0x1063, 0x1068, 0x106c, 0x1072, 0x1077, 0x107c, 0x107f, 0x1086,
- 0x108d, 0x1094, 0x109b, 0x10a3, 0x10ab, 0x10ba, 0x10c3, 0x10c9,
- 0x10cf, 0x10d7, 0x10e0, 0x10ec, 0x10f3, 0x10f9, 0x1100, 0x1108,
- 0x1111, 0x1117, 0x1120, 0x1126, 0x112a, 0x112d, 0x1133, 0x1138,
- 0x114d, 0x114d, 0x1151, 0x1156, 0x115b, 0x1161, 0x1167, 0x116c,
- 0x1171, 0x1179, 0x117b, 0x1181, 0x118a, 0x118e, 0x1199, 0x119f,
- // Entry 240 - 27F
- 0x11a6, 0x11ab, 0x11b4, 0x11bd, 0x11c4, 0x11ce, 0x11d7, 0x11dd,
- 0x11fb, 0x11ff, 0x121b, 0x121f, 0x1235, 0x1235, 0x1246, 0x125b,
- 0x126e, 0x127e, 0x1290, 0x12a1, 0x12b9, 0x12c9, 0x12db, 0x12db,
- 0x12ec, 0x12fd, 0x1313, 0x131c, 0x1331, 0x1343, 0x134a, 0x1356,
- 0x1369, 0x137c,
-} // Size: 1244 bytes
-
-var jaLangStr string = "" + // Size: 10000 bytes
- "アファル語アブハズ語アヴェスタ語アフリカーンス語アカン語アムハラ語アラゴン語アラビア語アッサム語アヴァル語アイマラ語アゼルバイジャン語バシキール" +
- "語ベラルーシ語ブルガリア語ビスラマ語バンバラ語ベンガル語チベット語ブルトン語ボスニア語カタロニア語チェチェン語チャモロ語コルシカ語クリー語チ" +
- "ェコ語教会スラブ語チュヴァシ語ウェールズ語デンマーク語ドイツ語ディベヒ語ゾンカ語エウェ語ギリシャ語英語エスペラント語スペイン語エストニア語バ" +
- "スク語ペルシア語フラニ語フィンランド語フィジー語フェロー語フランス語西フリジア語アイルランド語スコットランド・ゲール語ガリシア語グアラニー語" +
- "グジャラート語マン島語ハウサ語ヘブライ語ヒンディー語ヒリモツ語クロアチア語ハイチ語ハンガリー語アルメニア語ヘレロ語インターリングアインドネシ" +
- "ア語インターリングイボ語四川イ語イヌピアック語イド語アイスランド語イタリア語イヌクウティトット語日本語ジャワ語ジョージア語コンゴ語キクユ語ク" +
- "ワニャマ語カザフ語グリーンランド語クメール語カンナダ語韓国語カヌリ語カシミール語クルド語コミ語コーンウォール語キルギス語ラテン語ルクセンブル" +
- "ク語ガンダ語リンブルフ語リンガラ語ラオ語リトアニア語ルバ・カタンガ語ラトビア語マダガスカル語マーシャル語マオリ語マケドニア語マラヤーラム語モ" +
- "ンゴル語マラーティー語マレー語マルタ語ビルマ語ナウル語北ンデベレ語ネパール語ンドンガ語オランダ語ノルウェー語(ニーノシュク)ノルウェー語(ブ" +
- "ークモール)南ンデベレ語ナバホ語ニャンジャ語オック語オジブウェー語オロモ語オリヤー語オセット語パンジャブ語パーリ語ポーランド語パシュトゥー語" +
- "ポルトガル語ケチュア語ロマンシュ語ルンディ語ルーマニア語ロシア語ルワンダ語サンスクリット語サルデーニャ語シンド語北サーミ語サンゴ語シンハラ語" +
- "スロバキア語スロベニア語サモア語ショナ語ソマリ語アルバニア語セルビア語スワジ語南部ソト語スンダ語スウェーデン語スワヒリ語タミル語テルグ語タジ" +
- "ク語タイ語ティグリニア語トルクメン語ツワナ語トンガ語トルコ語ツォンガ語タタール語タヒチ語ウイグル語ウクライナ語ウルドゥー語ウズベク語ベンダ語" +
- "ベトナム語ヴォラピュク語ワロン語ウォロフ語コサ語イディッシュ語ヨルバ語チワン語中国語ズールー語アチェ語アチョリ語アダングメ語アディゲ語チュニ" +
- "ジア・アラビア語アフリヒリ語アゲム語アイヌ語アッカド語アラバマ語アレウト語ゲグ・アルバニア語南アルタイ語古英語アンギカ語アラム語アラウカン語" +
- "アラオナ語アラパホー語アルジェリア・アラビア語アラワク語モロッコ・アラビア語エジプト・アラビア語アス語アメリカ手話アストゥリアス語コタヴァア" +
- "ワディー語バルーチー語バリ語バイエルン・オーストリア語バサ語バムン語トバ・バタク語ゴーマラ語ベジャ語ベンバ語ベタウィ語ベナ語バフット語バダガ" +
- "語西バローチー語ボージュプリー語ビコル語ビニ語バンジャル語コム語シクシカ語ビシュヌプリヤ・マニプリ語バフティヤーリー語ブラジ語ブラフイ語ボド" +
- "語アコース語ブリヤート語ブギ語ブル語ビリン語メドゥンバ語カドー語カリブ語カユーガ語チャワイ語セブアノ語チガ語チブチャ語チャガタイ語チューク語" +
- "マリ語チヌーク混成語チョクトー語チペワイアン語チェロキー語シャイアン語クルド語(ソラニー)コプト語カピス語クリミア・タタール語カシューブ語ダ" +
- "コタ語ダルガン語タイタ語デラウェア語スレイビー語ドグリブ語ディンカ語ザルマ語ドーグリー語低ソルビア語中央ドゥスン語ドゥアラ語中世オランダ語ジ" +
- "ョラ=フォニィ語ジュラ語ダザガ語エンブ語エフィク語エミリア語古代エジプト語エカジュク語エラム語中英語中央アラスカ・ユピック語エウォンド語エス" +
- "トレマドゥーラ語ファング語フィリピノ語トルネダール・フィンランド語フォン語ケイジャン・フランス語中期フランス語古フランス語アルピタン語北フリ" +
- "ジア語東フリジア語フリウリ語ガ語ガガウズ語贛語ガヨ語バヤ語ダリー語(ゾロアスター教)ゲエズ語キリバス語ギラキ語中高ドイツ語古高ドイツ語ゴア・" +
- "コンカニ語ゴーンディー語ゴロンタロ語ゴート語グレボ語古代ギリシャ語スイスドイツ語ワユ語フラフラ語グシイ語グウィッチン語ハイダ語客家語ハワイ語" +
- "フィジー・ヒンディー語ヒリガイノン語ヒッタイト語フモン語上ソルビア語湘語アタパスカ語イバン語イビビオ語イロカノ語イングーシ語イングリア語ジャ" +
- "マイカ・クレオール語ロジバン語ンゴンバ語マチャメ語ユダヤ・ペルシア語ユダヤ・アラビア語ユトランド語カラカルパク語カビル語カチン語カジェ語カン" +
- "バ語カウィ語カバルド語カネンブ語カタブ語マコンデ語カーボベルデ・クレオール語ニャン語コロ語カインガング語カシ語コータン語コイラ・チーニ語コワ" +
- "ール語キルマンジュキ語カコ語カレンジン語キンブンド語コミ・ペルミャク語コンカニ語コスラエ語クペレ語カラチャイ語クリオ語キナライア語カレリア語" +
- "クルク語サンバー語バフィア語ケルン語クムク語クテナイ語ラディノ語ランギ語ラフンダー語ランバ語レズギ語リングア・フランカ・ノバリグリア語リヴォ" +
- "ニア語ラコタ語ロンバルド語モンゴ語ロジ語北ロル語ラトガリア語ルバ・ルルア語ルイセーニョ語ルンダ語ルオ語ルシャイ語ルヒヤ語漢文ラズ語マドゥラ語" +
- "マファ語マガヒー語マイティリー語マカッサル語マンディンゴ語マサイ語マバ語モクシャ語マンダル語メンデ語メル語モーリシャス・クレオール語中期アイ" +
- "ルランド語マクア・ミート語メタ語ミクマク語ミナンカバウ語満州語マニプリ語モーホーク語モシ語山地マリ語ムンダン語複数言語クリーク語ミランダ語マ" +
- "ールワーリー語メンタワイ語ミエネ語エルジャ語マーザンダラーン語閩南語ナポリ語ナマ語低地ドイツ語ネワール語ニアス語ニウーエイ語アオ・ナガ語クワ" +
- "シオ語ンジエムブーン語ノガイ語古ノルド語ノヴィアルンコ語北部ソト語ヌエル語古典ネワール語ニャムウェジ語ニャンコレ語ニョロ語ンゼマ語オセージ語" +
- "オスマントルコ語パンガシナン語パフラヴィー語パンパンガ語パピアメント語パラオ語ピカルディ語ペンシルベニア・ドイツ語メノナイト低地ドイツ語古代" +
- "ペルシア語プファルツ語フェニキア語ピエモンテ語ポントス・ギリシャ語ポンペイ語プロシア語古期プロバンス語キチェ語チンボラソ高地ケチュア語ラージ" +
- "ャスターン語ラパヌイ語ラロトンガ語ロマーニャ語リーフ語ロンボ語ロマーニー語ロツマ語ルシン語ロヴィアナ語アルーマニア語ルワ語サンダウェ語ヤクー" +
- "ト語サマリア・アラム語サンブル語ササク語サンターリー語サウラーシュトラ語ンガムバイ語サング語シチリア語スコットランド語サッサリ・サルデーニャ" +
- "語南部クルド語セネカ語セナ語セリ語セリクプ語コイラボロ・センニ語古期アイルランド語サモギティア語)タシルハイト語シャン語チャド・アラビア語シ" +
- "ダモ語低シレジア語スラヤール語南サーミ語ルレ・サーミ語イナリ・サーミ語スコルト・サーミ語ソニンケ語ソグド語スリナム語セレル語サホ語ザーターフ" +
- "リジア語スクマ語スス語シュメール語コモロ語コンゴ・スワヒリ語古典シリア語シリア語シレジア語トゥル語テムネ語テソ語テレーノ語テトゥン語ティグレ" +
- "語ティブ語トケラウ語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語(ニアサ)トク・ピシン語トゥロヨ語タロコ語ツァコン語チ" +
- "ムシュ語ムスリム・タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジクト語ウドムルト語ウガリト語ムブンドゥ語ルートヴァイ" +
- "語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語ワショ語ワルピリ語呉語カルムイク" +
- "語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント語ゼナガ語タマージク語(モロッコ" +
- "公用語)ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス英語アメリカ英語スペイン語 " +
- "(イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語簡体中国語繁体中国語"
-
-var jaLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x001e, 0x0030, 0x0048, 0x0054, 0x0063, 0x0072,
- 0x0081, 0x0090, 0x009f, 0x00ae, 0x00c9, 0x00db, 0x00ed, 0x00ff,
- 0x010e, 0x011d, 0x012c, 0x013b, 0x014a, 0x0159, 0x016b, 0x017d,
- 0x018c, 0x019b, 0x01a7, 0x01b3, 0x01c5, 0x01d7, 0x01e9, 0x01fb,
- 0x0207, 0x0216, 0x0222, 0x022e, 0x023d, 0x0243, 0x0258, 0x0267,
- 0x0279, 0x0285, 0x0294, 0x02a0, 0x02b5, 0x02c4, 0x02d3, 0x02e2,
- 0x02f4, 0x0309, 0x032d, 0x033c, 0x034e, 0x0363, 0x036f, 0x037b,
- 0x038a, 0x039c, 0x03ab, 0x03bd, 0x03c9, 0x03db, 0x03ed, 0x03f9,
- // Entry 40 - 7F
- 0x0411, 0x0426, 0x043b, 0x0444, 0x0450, 0x0465, 0x046e, 0x0483,
- 0x0492, 0x04b0, 0x04b9, 0x04c5, 0x04d7, 0x04e3, 0x04ef, 0x0501,
- 0x050d, 0x0525, 0x0534, 0x0543, 0x054c, 0x0558, 0x056a, 0x0576,
- 0x057f, 0x0597, 0x05a6, 0x05b2, 0x05ca, 0x05d6, 0x05e8, 0x05f7,
- 0x0600, 0x0612, 0x062a, 0x0639, 0x064e, 0x0660, 0x066c, 0x067e,
- 0x0693, 0x06a2, 0x06b7, 0x06c3, 0x06cf, 0x06db, 0x06e7, 0x06f9,
- 0x0708, 0x0717, 0x0726, 0x074c, 0x0772, 0x0784, 0x0790, 0x07a2,
- 0x07ae, 0x07c3, 0x07cf, 0x07de, 0x07ed, 0x07ff, 0x080b, 0x081d,
- // Entry 80 - BF
- 0x0832, 0x0844, 0x0853, 0x0865, 0x0874, 0x0886, 0x0892, 0x08a1,
- 0x08b9, 0x08ce, 0x08da, 0x08e9, 0x08f5, 0x0904, 0x0916, 0x0928,
- 0x0934, 0x0940, 0x094c, 0x095e, 0x096d, 0x0979, 0x0988, 0x0994,
- 0x09a9, 0x09b8, 0x09c4, 0x09d0, 0x09dc, 0x09e5, 0x09fa, 0x0a0c,
- 0x0a18, 0x0a24, 0x0a30, 0x0a3f, 0x0a4e, 0x0a5a, 0x0a69, 0x0a7b,
- 0x0a8d, 0x0a9c, 0x0aa8, 0x0ab7, 0x0acc, 0x0ad8, 0x0ae7, 0x0af0,
- 0x0b05, 0x0b11, 0x0b1d, 0x0b26, 0x0b35, 0x0b41, 0x0b50, 0x0b62,
- 0x0b71, 0x0b92, 0x0ba4, 0x0bb0, 0x0bbc, 0x0bcb, 0x0bda, 0x0be9,
- // Entry C0 - FF
- 0x0c04, 0x0c16, 0x0c1f, 0x0c2e, 0x0c3a, 0x0c4c, 0x0c5b, 0x0c6d,
- 0x0c91, 0x0ca0, 0x0cbe, 0x0cdc, 0x0ce5, 0x0cf7, 0x0d0f, 0x0d1b,
- 0x0d2d, 0x0d3f, 0x0d48, 0x0d6f, 0x0d78, 0x0d84, 0x0d99, 0x0da8,
- 0x0db4, 0x0dc0, 0x0dcf, 0x0dd8, 0x0de7, 0x0df3, 0x0e08, 0x0e20,
- 0x0e2c, 0x0e35, 0x0e47, 0x0e50, 0x0e5f, 0x0e86, 0x0ea1, 0x0ead,
- 0x0ebc, 0x0ec5, 0x0ed4, 0x0ee6, 0x0eef, 0x0ef8, 0x0f04, 0x0f16,
- 0x0f22, 0x0f2e, 0x0f3d, 0x0f4c, 0x0f5b, 0x0f64, 0x0f73, 0x0f85,
- 0x0f94, 0x0f9d, 0x0fb2, 0x0fc4, 0x0fd9, 0x0feb, 0x0ffd, 0x1017,
- // Entry 100 - 13F
- 0x1023, 0x102f, 0x104d, 0x105f, 0x106b, 0x107a, 0x1086, 0x1098,
- 0x10aa, 0x10b9, 0x10c8, 0x10d4, 0x10e6, 0x10f8, 0x110d, 0x111c,
- 0x1131, 0x114c, 0x1158, 0x1164, 0x1170, 0x117f, 0x118e, 0x11a3,
- 0x11b5, 0x11c1, 0x11ca, 0x11ee, 0x1200, 0x121e, 0x122d, 0x123f,
- 0x1269, 0x1275, 0x1296, 0x12ab, 0x12bd, 0x12cf, 0x12e1, 0x12f3,
- 0x1302, 0x1308, 0x1317, 0x131d, 0x1326, 0x132f, 0x1352, 0x135e,
- 0x136d, 0x1379, 0x138b, 0x139d, 0x13b5, 0x13ca, 0x13dc, 0x13e8,
- 0x13f4, 0x1409, 0x141e, 0x1427, 0x1436, 0x1442, 0x1457, 0x1463,
- // Entry 140 - 17F
- 0x146c, 0x1478, 0x1499, 0x14ae, 0x14c0, 0x14cc, 0x14de, 0x14e4,
- 0x14f6, 0x1502, 0x1511, 0x1520, 0x1532, 0x1544, 0x1568, 0x1577,
- 0x1586, 0x1595, 0x15b0, 0x15cb, 0x15dd, 0x15f2, 0x15fe, 0x160a,
- 0x1616, 0x1622, 0x162e, 0x163d, 0x164c, 0x1658, 0x1667, 0x168e,
- 0x169a, 0x16a3, 0x16b8, 0x16c1, 0x16d0, 0x16e8, 0x16f7, 0x170f,
- 0x1718, 0x172a, 0x173c, 0x1757, 0x1766, 0x1775, 0x1781, 0x1793,
- 0x179f, 0x17b1, 0x17c0, 0x17cc, 0x17db, 0x17ea, 0x17f6, 0x1802,
- 0x1811, 0x1820, 0x182c, 0x183e, 0x184a, 0x1856, 0x187a, 0x1889,
- // Entry 180 - 1BF
- 0x189b, 0x18a7, 0x18b9, 0x18c5, 0x18ce, 0x18da, 0x18ec, 0x1901,
- 0x1916, 0x1922, 0x192b, 0x193a, 0x1946, 0x194c, 0x1955, 0x1964,
- 0x1970, 0x197f, 0x1994, 0x19a6, 0x19bb, 0x19c7, 0x19d0, 0x19df,
- 0x19ee, 0x19fa, 0x1a03, 0x1a2a, 0x1a45, 0x1a5d, 0x1a66, 0x1a75,
- 0x1a8a, 0x1a93, 0x1aa2, 0x1ab4, 0x1abd, 0x1acc, 0x1adb, 0x1ae7,
- 0x1af6, 0x1b05, 0x1b1d, 0x1b2f, 0x1b3b, 0x1b4a, 0x1b65, 0x1b6e,
- 0x1b7a, 0x1b83, 0x1b95, 0x1ba4, 0x1bb0, 0x1bc2, 0x1bd4, 0x1be3,
- 0x1bfb, 0x1c07, 0x1c16, 0x1c25, 0x1c2e, 0x1c3d, 0x1c49, 0x1c5e,
- // Entry 1C0 - 1FF
- 0x1c73, 0x1c85, 0x1c91, 0x1c9d, 0x1cac, 0x1cc4, 0x1cd9, 0x1cee,
- 0x1d00, 0x1d15, 0x1d21, 0x1d33, 0x1d57, 0x1d78, 0x1d8d, 0x1d9f,
- 0x1db1, 0x1dc3, 0x1de1, 0x1df0, 0x1dff, 0x1e17, 0x1e23, 0x1e47,
- 0x1e62, 0x1e71, 0x1e83, 0x1e95, 0x1ea1, 0x1ead, 0x1ebf, 0x1ecb,
- 0x1ed7, 0x1ee9, 0x1efe, 0x1f07, 0x1f19, 0x1f28, 0x1f43, 0x1f52,
- 0x1f5e, 0x1f73, 0x1f8e, 0x1fa0, 0x1fac, 0x1fbb, 0x1fd3, 0x1ff7,
- 0x2009, 0x2015, 0x201e, 0x2027, 0x2036, 0x2054, 0x206f, 0x2085,
- 0x209a, 0x20a6, 0x20c1, 0x20cd, 0x20df, 0x20f1, 0x2100, 0x2115,
- // Entry 200 - 23F
- 0x212d, 0x2148, 0x2157, 0x2163, 0x2172, 0x217e, 0x2187, 0x21a2,
- 0x21ae, 0x21b7, 0x21c9, 0x21d5, 0x21f0, 0x2202, 0x220e, 0x221d,
- 0x2229, 0x2235, 0x223e, 0x224d, 0x225c, 0x226b, 0x2277, 0x2286,
- 0x2295, 0x22a7, 0x22bc, 0x22cb, 0x22dd, 0x22f4, 0x2309, 0x2318,
- 0x2324, 0x2333, 0x2342, 0x2360, 0x2372, 0x237e, 0x238d, 0x239c,
- 0x23c3, 0x23d5, 0x23e4, 0x23f6, 0x23ff, 0x240b, 0x241a, 0x2429,
- 0x243b, 0x2453, 0x2462, 0x246e, 0x247d, 0x248c, 0x249e, 0x24aa,
- 0x24b6, 0x24c5, 0x24cb, 0x24dd, 0x24ec, 0x24f5, 0x24fe, 0x250a,
- // Entry 240 - 27F
- 0x2519, 0x2528, 0x2540, 0x2549, 0x2558, 0x256d, 0x257f, 0x258b,
- 0x25b4, 0x25bd, 0x25d2, 0x25db, 0x25f6, 0x25f6, 0x25f6, 0x2614,
- 0x262f, 0x263e, 0x2650, 0x2662, 0x2662, 0x2686, 0x2686, 0x2686,
- 0x2686, 0x2686, 0x2686, 0x269b, 0x269b, 0x26c2, 0x26d4, 0x26f2,
- 0x2701, 0x2710,
-} // Size: 1244 bytes
-
-var kaLangStr string = "" + // Size: 10123 bytes
- "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიაიმარ" +
- "ააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბამბარაბენგალურიტიბეტურიბრეტ" +
- "ონულიბოსნიურიკატალანურიჩეჩნურიკორსიკულიკრიჩეხურისაეკლესიო სლავურიჩუვაშ" +
- "ურიუელსურიდანიურიგერმანულიდივეჰიძონგკხაევებერძნულიინგლისურიესპერანტოეს" +
- "პანურიესტონურიბასკურისპარსულიფინურიფიჯიფარერულიფრანგულიდასავლეთფრიზიულ" +
- "იირლანდიურიშოტლანდიური გელურიგალისიურიგუარანიგუჯარათიმენურიჰაუსაებრაულ" +
- "იჰინდიხორვატულიჰაიტიურიუნგრულისომხურიინტერლინგუალურიინდონეზიურიინტერლი" +
- "ნგიიგბოსიჩუანის იიდოისლანდიურიიტალიურიინუკტიტუტიიაპონურიიავურიქართულიკ" +
- "ონგოკიკუიუყაზახურიდასავლეთ გრენლანდიურიქმერულიკანადაკორეულიკანურიქაშმი" +
- "რულიქურთულიკომიკორნულიყირგიზულილათინურილუქსემბურგულიგანდალიმბურგულილინ" +
- "გალალაოსურილიტვურილუბა-კატანგალატვიურიმალაგასიურიმაორიმაკედონურიმალაია" +
- "ლამურიმონღოლურიმარათჰიმალაიურიმალტურიბირმულინაურუჩრდილოეთ ნდებელენეპალ" +
- "ურინიდერლანდურინორვეგიული ნიუნორსკინორვეგიული ბუკმოლინავახონიანჯაოქსიტ" +
- "ანურიოჯიბვეორომოორიაოსურიპენჯაბურიპალიპოლონურიპუშტუპორტუგალიურიკეჩუარე" +
- "ტორომანულირუნდირუმინულირუსულიკინიარუანდასანსკრიტისარდინიულისინდჰურიჩრდ" +
- "ილოეთ საამურისანგოსინჰალურისლოვაკურისლოვენურისამოაშონასომალიურიალბანურ" +
- "ისერბულისამხრეთ სოთოს ენასუნდურიშვედურისუაჰილიტამილურიტელუგუტაჯიკურიტა" +
- "ითიგრინიათურქმენულიტსვანატონგანურითურქულითათრულიუიღურულიუკრაინულიურდუუ" +
- "ზბეკურივიეტნამურივოლოფურიქჰოსაიდიშიიორუბაჩინურიზულუაჩეხურიაჩოლიადანგმე" +
- "ადიღეურიაღემიაინუურიაქადურიალეუტურისამხრეთ ალთაურიძველი ინგლისურიანგიკ" +
- "აარამეულიმაპუდუნგუნიარაპაჰოარავაკიასუასტურიულიავადიბელუჯიბალინურიბასაბ" +
- "ამუნიბეჯაბემბაბენადასავლეთ ბელუჯიბოჯპურიბრაჯიბოდობურიატულიბილინიკაიუგა" +
- "ჩიგაჩიბჩამარიულიჩეროკისორანი ქურთულიკოპტურიყირიმულ-თურქულიკაშუბურიდაკო" +
- "ტადარგუულიტაიტადელავარულიდოგრიბიდინკაზარმადოგრიქვემოსორბულიდუალადიოლად" +
- "იულაემბუეფიკიძველეგვიპტურიევონდოფილიპინურიფონიძველი ფრანგულიჩრდილოფრიზ" +
- "იულიაღმოსავლეთფრიზიულიფრიულურიგაგაუზურიგბაიაგეეზიძველი ზემოგერმანულიგო" +
- "ნდიგოთურიძველი ბერძნულიშვეიცარიული გერმანულიგუსიიჰავაიურიხეთური ენაზემ" +
- "ოსორბულიიბანიიბიბიოინგუშურილოჟბანინგომბაკიმაშამიიუდეო-სპარსულიიუდეო-არ" +
- "აბულიყარაყალფახურიკაბილურიკაჩინიკამბაყაბარდოულიმაკონდეკაბუვერდიანუკოირ" +
- "ა-ჩიინიკალენჯინიკიმბუნდუკომი-პერმიაკულიკონკანიკპელეყარაჩაულ-ბალყარულიკ" +
- "არელიურიკურუქიშამბალაბაფიაყუმუხურიკუტენაილადინოლანგილანდალამბალეზგიური" +
- "ლაკოტამონგოლოზიჩრდილოეთ ლურილუისენიოლუნდალუომიზოლუჰიამაფამაგაჰიმაითილი" +
- "მასაიმაბამოქშამენდემერუმორისიენიმაქუვა-მეეტომეტა’ ენამანჯურიულიმანიპურ" +
- "იმოჰაუკურიმუნდანგიკრიკიმირანდულიმარვარიმიენეერზიამაზანდერანულინეაპოლიტ" +
- "ანურინამაქვემოგერმანულინევარიკვასიონოღაურიძველსკანდინავიურინკონუერიკლა" +
- "სიკური ნევარულინიამვეზინიანკოლენიორონზიმაფალაურიძველი სპარსულიფინიკიურ" +
- "იძველი პროვანსულიკიჩერაჯასთანირაპანუირაროტონგულირომბობოშურირუაიაკუტური" +
- "სამარიულ-არამეულისამბურუსანგუსიცილიურისამხრეთ ქურთულისენეკასენასელკუპუ" +
- "რიკოირაბორო-სენიძველი ირლანდიურიშილჰაშანიჩადური არაბულისამხრეთ საამური" +
- "ლულე-საამურიინარი-საამურისკოლტ-საამურიშუმერულიკომორულიკონგოს სუაჰილიკლ" +
- "ასიკური სირიულისირიულიტესოთიგრეკლინგონიტასავაქიტუვაცენტრალური მოროკოს " +
- "ტამაზიგხტიუდმურტულიუგარითულიუცნობი ენავაივუნჯოველაითავალპირიყალმუხურის" +
- "ოგაკანტონურიბლისსიმბოლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტილინგვი" +
- "სტური შიგთავსი არ არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გ" +
- "ერმანულიშვეიცარიული ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისუ" +
- "რიბრიტანული ინგლისურიამერიკული ინგლისურილათინურ ამერიკული ესპანურიევრო" +
- "პული ესპანურიმექსიკური ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვ" +
- "ემოსაქსონურიფლამანდიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლ" +
- "დავურისერბულ-ხორვატულიგამარტივებული ჩინურიტრადიციული ჩინური"
-
-var kaLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0027, 0x003f, 0x005d, 0x006c, 0x0084, 0x009f,
- 0x00b4, 0x00c9, 0x00c9, 0x00db, 0x0102, 0x011d, 0x013b, 0x0156,
- 0x0156, 0x016b, 0x0186, 0x019e, 0x01b9, 0x01d1, 0x01ef, 0x0204,
- 0x0204, 0x021f, 0x0228, 0x023a, 0x026b, 0x0283, 0x0298, 0x02ad,
- 0x02c8, 0x02da, 0x02ef, 0x02f8, 0x0310, 0x032b, 0x0346, 0x035e,
- 0x0376, 0x038b, 0x03a3, 0x03a3, 0x03b5, 0x03c1, 0x03d9, 0x03f1,
- 0x0421, 0x043f, 0x0473, 0x048e, 0x04a3, 0x04bb, 0x04cd, 0x04dc,
- 0x04f1, 0x0500, 0x0500, 0x051b, 0x0533, 0x0548, 0x055d, 0x055d,
- // Entry 40 - 7F
- 0x058a, 0x05ab, 0x05c9, 0x05d5, 0x05f1, 0x05f1, 0x05fa, 0x0618,
- 0x0630, 0x064e, 0x0666, 0x0678, 0x068d, 0x069c, 0x06ae, 0x06ae,
- 0x06c6, 0x0703, 0x0718, 0x072a, 0x073f, 0x0751, 0x076c, 0x0781,
- 0x078d, 0x07a2, 0x07bd, 0x07d5, 0x07fc, 0x080b, 0x0829, 0x083e,
- 0x0853, 0x0868, 0x088a, 0x08a2, 0x08c3, 0x08c3, 0x08d2, 0x08f0,
- 0x0914, 0x092f, 0x0944, 0x095c, 0x0971, 0x0986, 0x0995, 0x09c3,
- 0x09db, 0x09db, 0x09ff, 0x0a39, 0x0a6d, 0x0a6d, 0x0a7f, 0x0a91,
- 0x0aaf, 0x0ac1, 0x0ad0, 0x0adc, 0x0aeb, 0x0b06, 0x0b12, 0x0b2a,
- // Entry 80 - BF
- 0x0b39, 0x0b5d, 0x0b6c, 0x0b90, 0x0b9f, 0x0bb7, 0x0bc9, 0x0bea,
- 0x0c05, 0x0c23, 0x0c3b, 0x0c69, 0x0c78, 0x0c93, 0x0cae, 0x0cc9,
- 0x0cd8, 0x0ce4, 0x0cff, 0x0d17, 0x0d2c, 0x0d2c, 0x0d5b, 0x0d70,
- 0x0d85, 0x0d9a, 0x0db2, 0x0dc4, 0x0ddc, 0x0de5, 0x0dfd, 0x0e1b,
- 0x0e2d, 0x0e48, 0x0e5d, 0x0e5d, 0x0e72, 0x0e72, 0x0e8a, 0x0ea5,
- 0x0eb1, 0x0ec9, 0x0ec9, 0x0ee7, 0x0ee7, 0x0ee7, 0x0eff, 0x0f0e,
- 0x0f1d, 0x0f2f, 0x0f2f, 0x0f41, 0x0f4d, 0x0f62, 0x0f71, 0x0f86,
- 0x0f9e, 0x0f9e, 0x0f9e, 0x0fad, 0x0fc2, 0x0fd7, 0x0fd7, 0x0fef,
- // Entry C0 - FF
- 0x0fef, 0x101a, 0x1045, 0x1057, 0x106f, 0x1090, 0x1090, 0x10a5,
- 0x10a5, 0x10ba, 0x10ba, 0x10ba, 0x10c3, 0x10c3, 0x10de, 0x10de,
- 0x10ed, 0x10ff, 0x1117, 0x1117, 0x1123, 0x1135, 0x1135, 0x1135,
- 0x1141, 0x1150, 0x1150, 0x115c, 0x115c, 0x115c, 0x1187, 0x119c,
- 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x11ab,
- 0x11ab, 0x11b7, 0x11b7, 0x11d2, 0x11d2, 0x11d2, 0x11e4, 0x11e4,
- 0x11e4, 0x11e4, 0x11f6, 0x11f6, 0x11f6, 0x1202, 0x1211, 0x1211,
- 0x1211, 0x1226, 0x1226, 0x1226, 0x1226, 0x1238, 0x1238, 0x1260,
- // Entry 100 - 13F
- 0x1275, 0x1275, 0x12a0, 0x12b8, 0x12ca, 0x12e2, 0x12f1, 0x130f,
- 0x130f, 0x1324, 0x1333, 0x1342, 0x1351, 0x1375, 0x1375, 0x1384,
- 0x1384, 0x1393, 0x13a2, 0x13a2, 0x13ae, 0x13bd, 0x13bd, 0x13e4,
- 0x13e4, 0x13e4, 0x13e4, 0x13e4, 0x13f6, 0x13f6, 0x13f6, 0x1414,
- 0x1414, 0x1420, 0x1420, 0x1420, 0x1448, 0x1448, 0x1472, 0x14a8,
- 0x14c0, 0x14c0, 0x14db, 0x14db, 0x14db, 0x14ea, 0x14ea, 0x14f9,
- 0x14f9, 0x14f9, 0x14f9, 0x1530, 0x1530, 0x153f, 0x153f, 0x1551,
- 0x1551, 0x1579, 0x15b6, 0x15b6, 0x15b6, 0x15c5, 0x15c5, 0x15c5,
- // Entry 140 - 17F
- 0x15c5, 0x15dd, 0x15dd, 0x15dd, 0x15f9, 0x15f9, 0x161a, 0x161a,
- 0x161a, 0x1629, 0x163b, 0x163b, 0x1653, 0x1653, 0x1653, 0x1668,
- 0x167a, 0x1692, 0x16ba, 0x16df, 0x16df, 0x1706, 0x171e, 0x1730,
- 0x1730, 0x173f, 0x173f, 0x175d, 0x175d, 0x175d, 0x1772, 0x1796,
- 0x1796, 0x1796, 0x1796, 0x1796, 0x1796, 0x17b5, 0x17b5, 0x17b5,
- 0x17b5, 0x17d0, 0x17e8, 0x1813, 0x1828, 0x1828, 0x1837, 0x186b,
- 0x186b, 0x186b, 0x1886, 0x1898, 0x18ad, 0x18bc, 0x18bc, 0x18d4,
- 0x18e9, 0x18fb, 0x190a, 0x1919, 0x1928, 0x1940, 0x1940, 0x1940,
- // Entry 180 - 1BF
- 0x1940, 0x1952, 0x1952, 0x1961, 0x196d, 0x1992, 0x1992, 0x1992,
- 0x19aa, 0x19b9, 0x19c2, 0x19ce, 0x19dd, 0x19dd, 0x19dd, 0x19dd,
- 0x19e9, 0x19fb, 0x1a10, 0x1a10, 0x1a10, 0x1a1f, 0x1a2b, 0x1a3a,
- 0x1a3a, 0x1a49, 0x1a55, 0x1a70, 0x1a70, 0x1a92, 0x1aab, 0x1aab,
- 0x1aab, 0x1ac9, 0x1ae1, 0x1afc, 0x1afc, 0x1afc, 0x1b14, 0x1b14,
- 0x1b23, 0x1b3e, 0x1b53, 0x1b53, 0x1b62, 0x1b71, 0x1b98, 0x1b98,
- 0x1bbf, 0x1bcb, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c07, 0x1c19,
- 0x1c19, 0x1c2e, 0x1c61, 0x1c61, 0x1c6a, 0x1c6a, 0x1c79, 0x1cad,
- // Entry 1C0 - 1FF
- 0x1cc5, 0x1cdd, 0x1cec, 0x1cfb, 0x1cfb, 0x1cfb, 0x1cfb, 0x1d10,
- 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d38, 0x1d38,
- 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d81, 0x1d8d, 0x1d8d,
- 0x1da8, 0x1dbd, 0x1dde, 0x1dde, 0x1dde, 0x1ded, 0x1dff, 0x1dff,
- 0x1dff, 0x1dff, 0x1dff, 0x1e08, 0x1e08, 0x1e20, 0x1e51, 0x1e66,
- 0x1e66, 0x1e66, 0x1e66, 0x1e66, 0x1e75, 0x1e90, 0x1e90, 0x1e90,
- 0x1ebb, 0x1ecd, 0x1ed9, 0x1ed9, 0x1ef4, 0x1f1c, 0x1f4a, 0x1f4a,
- 0x1f59, 0x1f65, 0x1f8d, 0x1f8d, 0x1f8d, 0x1f8d, 0x1fb8, 0x1fda,
- // Entry 200 - 23F
- 0x1fff, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024,
- 0x2024, 0x2024, 0x203c, 0x2054, 0x207c, 0x20ad, 0x20c2, 0x20c2,
- 0x20c2, 0x20c2, 0x20ce, 0x20ce, 0x20ce, 0x20dd, 0x20dd, 0x20dd,
- 0x20dd, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5,
- 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x210d, 0x2119,
- 0x216c, 0x2187, 0x21a2, 0x21a2, 0x21be, 0x21c7, 0x21c7, 0x21c7,
- 0x21c7, 0x21c7, 0x21c7, 0x21c7, 0x21d6, 0x21d6, 0x21eb, 0x21eb,
- 0x21eb, 0x2200, 0x2200, 0x221b, 0x221b, 0x2227, 0x2227, 0x2227,
- // Entry 240 - 27F
- 0x2227, 0x2227, 0x2227, 0x2242, 0x2242, 0x226c, 0x226c, 0x227e,
- 0x22da, 0x22da, 0x2328, 0x233a, 0x2393, 0x2393, 0x23ca, 0x2413,
- 0x2450, 0x2484, 0x24bb, 0x24f2, 0x253c, 0x256d, 0x25a1, 0x25a1,
- 0x25d2, 0x260c, 0x2636, 0x2657, 0x269a, 0x26d7, 0x26f2, 0x2720,
- 0x275a, 0x278b,
-} // Size: 1244 bytes
-
-var kkLangStr string = "" + // Size: 5518 bytes
- "абхаз тіліафрикаанс тіліакан тіліамхар тіліараб тіліассам тіліәзірбайжан" +
- " тілібашқұрт тілібеларусь тіліболгар тілібамбара тілібенгал тілітибет ті" +
- "лібретон тілібосния тілікаталан тілішешен тілікорсика тілічех тілічуваш" +
- " тіліваллий тілідат тілінеміс тілідзонг-кэ тіліэве тілігрек тіліағылшын " +
- "тіліэсперанто тіліиспан тіліэстон тілібаск тіліпарсы тіліфин тіліфиджи " +
- "тіліфарер тіліфранцуз тілібатыс фриз тіліирланд тілігалисия тілігуарани" +
- " тілігуджарати тілімэнс тіліхауса тіліиврит тіліхинди тіліхорват тілігаи" +
- "ти тілівенгр тіліармян тіліиндонезия тіліигбо тілісычуан и тіліисланд т" +
- "іліитальян тіліинуктитут тіліжапон тіліява тілігрузин тілікикуйю тіліқа" +
- "зақ тілікалаалисут тілікхмер тіліканнада тілікәріс тілікашмир тілікүрд " +
- "тілікорн тіліқырғыз тілілатын тілілюксембург тіліганда тілілингала тілі" +
- "лаос тілілитва тілілуба-катанга тілілатыш тілімалагаси тілімаори тіліма" +
- "кедон тілімалаялам тілімоңғол тілімаратхи тілімалай тілімальта тілібирм" +
- "а тілісолтүстік ндебеле тілінепал тілінидерланд тілінорвегиялық нюнорск" +
- " тілінорвегиялық букмол тіліоромо тіліория тіліпенджаб тіліполяк тіліпуш" +
- "ту тіліпортугал тілікечуа тіліроманш тілірунди тілірумын тіліорыс тілік" +
- "иньяруанда тілісанскрит тілісиндхи тілісолтүстік саам тілісанго тілісин" +
- "гал тілісловак тілісловен тілішона тілісомали тіліалбан тілісерб тілішв" +
- "ед тілісуахили тілітамил тілітелугу тілітәжік тілітай тілітигринья тілі" +
- "түрікмен тілітонган тілітүрік тілітатар тіліұйғыр тіліукраин тіліурду т" +
- "іліөзбек тілівьетнам тіліволоф тілікхоса тілійоруба тіліқытай тілізулу " +
- "тіліагхем тілімапуче тіліасу тілібемба тілібена тілібатыс балучи тілібо" +
- "до тілікига тілічероки тілісорани тілітаита тілізарма тілітөменгі лужиц" +
- "а тілідуала тілідиола тіліембу тіліфилиппин тілігагауз тілішвейцариялық" +
- " неміс тілігусии тілігавайи тіліжоғарғы лужица тілінгомба тілімачаме тіл" +
- "ікабил тілікамба тілімаконде тілікабувердиана тілікойра чини тілікаленж" +
- "ин тілікоми-пермяк тіліконкани тілішамбала тілібафиа тіліланги тілілако" +
- "та тілісолтүстік люри тілілуо тілілухиа тілімасай тілімеру тіліморисиен" +
- " тілімакуа-меетто тілімета тілімогавк тілімунданг тілімазандеран тілінам" +
- "а тілітөменгі неміс тіліквасио тілінко тілінуэр тілінианколе тілікиче т" +
- "іліромбо тіліруа тілісамбуру тілісангу тіліоңтүстік күрд тілісена тілік" +
- "ойраборо сенни тіліташелхит тіліоңтүстік саам тілілуле саам тіліинари с" +
- "аам тілісколт саамконго суахили тілітесо тілітасавак тіліорталық атлас " +
- "тамасагихт тілібелгісіз тілвай тілівунджо тілівальбири тілісога тілімар" +
- "окколық стандартты тамазигхт тілітілдік мазмұны жоққазіргі стандартты а" +
- "раб тіліавстриялық неміс тілішвейцариялық жоғарғы неміс тіліавстралиялы" +
- "қ ағылшын тіліканадалық ағылшын тілібританиялық ағылшын тіліамерикандық" +
- " ағылшын тілілатын американдық испан тіліибериялық испан тілімексикалық " +
- "испан тіліканадалық француз тілішвейцариялық француз тілітөменгі саксон" +
- " тіліфламанд тілібразилиялық португал тіліеуропалық португал тілімолдова" +
- "н тіліжеңілдетілген қытай тілідәстүрлі қытай тілі"
-
-var kkLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0013, 0x0013, 0x002e, 0x003f, 0x0052, 0x0052,
- 0x0063, 0x0076, 0x0076, 0x0076, 0x0093, 0x00aa, 0x00c3, 0x00d8,
- 0x00d8, 0x00ef, 0x0104, 0x0117, 0x012c, 0x0141, 0x0158, 0x016b,
- 0x016b, 0x0182, 0x0182, 0x0191, 0x0191, 0x01a4, 0x01b9, 0x01c8,
- 0x01db, 0x01db, 0x01f3, 0x0202, 0x0213, 0x022a, 0x0245, 0x0258,
- 0x026b, 0x027c, 0x028f, 0x028f, 0x029e, 0x02b1, 0x02c4, 0x02db,
- 0x02f7, 0x030c, 0x030c, 0x0323, 0x033a, 0x0355, 0x0366, 0x0379,
- 0x038c, 0x039f, 0x039f, 0x03b4, 0x03c7, 0x03da, 0x03ed, 0x03ed,
- // Entry 40 - 7F
- 0x03ed, 0x0408, 0x0408, 0x0419, 0x0431, 0x0431, 0x0431, 0x0446,
- 0x045d, 0x0478, 0x048b, 0x049a, 0x04af, 0x04af, 0x04c4, 0x04c4,
- 0x04d7, 0x04f4, 0x0507, 0x051e, 0x0531, 0x0531, 0x0546, 0x0557,
- 0x0557, 0x0568, 0x057d, 0x0590, 0x05ad, 0x05c0, 0x05c0, 0x05d7,
- 0x05e8, 0x05fb, 0x061b, 0x062e, 0x0647, 0x0647, 0x065a, 0x0671,
- 0x068a, 0x069f, 0x06b6, 0x06c9, 0x06de, 0x06f1, 0x06f1, 0x071b,
- 0x072e, 0x072e, 0x0749, 0x0777, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
- 0x07a3, 0x07a3, 0x07b6, 0x07c7, 0x07c7, 0x07de, 0x07de, 0x07f1,
- // Entry 80 - BF
- 0x0804, 0x081d, 0x0830, 0x0845, 0x0858, 0x086b, 0x087c, 0x089b,
- 0x08b4, 0x08b4, 0x08c9, 0x08ed, 0x0900, 0x0915, 0x092a, 0x093f,
- 0x093f, 0x0950, 0x0965, 0x0978, 0x0989, 0x0989, 0x0989, 0x0989,
- 0x099a, 0x09b1, 0x09c4, 0x09d9, 0x09ec, 0x09fb, 0x0a14, 0x0a2d,
- 0x0a2d, 0x0a42, 0x0a55, 0x0a55, 0x0a68, 0x0a68, 0x0a7b, 0x0a90,
- 0x0aa1, 0x0ab4, 0x0ab4, 0x0acb, 0x0acb, 0x0acb, 0x0ade, 0x0af1,
- 0x0af1, 0x0b06, 0x0b06, 0x0b19, 0x0b2a, 0x0b2a, 0x0b2a, 0x0b2a,
- 0x0b2a, 0x0b2a, 0x0b2a, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d,
- // Entry C0 - FF
- 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b52, 0x0b52, 0x0b52,
- 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b61, 0x0b61, 0x0b61, 0x0b61,
- 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61,
- 0x0b61, 0x0b74, 0x0b74, 0x0b85, 0x0b85, 0x0b85, 0x0ba5, 0x0ba5,
- 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5,
- 0x0ba5, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6,
- 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bc7, 0x0bc7, 0x0bc7,
- 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bdc, 0x0bdc, 0x0bf1,
- // Entry 100 - 13F
- 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0c04, 0x0c04,
- 0x0c04, 0x0c04, 0x0c04, 0x0c17, 0x0c17, 0x0c3b, 0x0c3b, 0x0c4e,
- 0x0c4e, 0x0c61, 0x0c61, 0x0c61, 0x0c72, 0x0c72, 0x0c72, 0x0c72,
- 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c8b,
- 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b,
- 0x0c8b, 0x0c8b, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0,
- 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0,
- 0x0ca0, 0x0ca0, 0x0ccc, 0x0ccc, 0x0ccc, 0x0cdf, 0x0cdf, 0x0cdf,
- // Entry 140 - 17F
- 0x0cdf, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0d18, 0x0d18,
- 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18,
- 0x0d2d, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d55, 0x0d55,
- 0x0d55, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d7f, 0x0da0,
- 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0dbc, 0x0dbc, 0x0dbc,
- 0x0dbc, 0x0dd5, 0x0dd5, 0x0df3, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a,
- 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e21, 0x0e34, 0x0e34, 0x0e34,
- 0x0e34, 0x0e34, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47,
- // Entry 180 - 1BF
- 0x0e47, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e80, 0x0e80, 0x0e80,
- 0x0e80, 0x0e80, 0x0e8f, 0x0e8f, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2,
- 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0eb5, 0x0eb5, 0x0eb5,
- 0x0eb5, 0x0eb5, 0x0ec6, 0x0edf, 0x0edf, 0x0eff, 0x0f10, 0x0f10,
- 0x0f10, 0x0f10, 0x0f10, 0x0f25, 0x0f25, 0x0f25, 0x0f3c, 0x0f3c,
- 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f59, 0x0f59,
- 0x0f59, 0x0f6a, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0fa1,
- 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb0, 0x0fb0, 0x0fc1, 0x0fc1,
- // Entry 1C0 - 1FF
- 0x0fc1, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda,
- 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda,
- 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0feb, 0x0feb,
- 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0ffe, 0x0ffe, 0x0ffe,
- 0x0ffe, 0x0ffe, 0x0ffe, 0x100d, 0x100d, 0x100d, 0x100d, 0x1024,
- 0x1024, 0x1024, 0x1024, 0x1024, 0x1037, 0x1037, 0x1037, 0x1037,
- 0x1059, 0x1059, 0x106a, 0x106a, 0x106a, 0x1090, 0x1090, 0x1090,
- 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10cb, 0x10e5,
- // Entry 200 - 23F
- 0x1101, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114,
- 0x1114, 0x1114, 0x1114, 0x1114, 0x1136, 0x1136, 0x1136, 0x1136,
- 0x1136, 0x1136, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147,
- 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147,
- 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x115e, 0x115e,
- 0x1195, 0x1195, 0x1195, 0x1195, 0x11ac, 0x11bb, 0x11bb, 0x11bb,
- 0x11bb, 0x11bb, 0x11bb, 0x11bb, 0x11d0, 0x11d0, 0x11d0, 0x11d0,
- 0x11d0, 0x11e9, 0x11e9, 0x11e9, 0x11e9, 0x11fa, 0x11fa, 0x11fa,
- // Entry 240 - 27F
- 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa,
- 0x123f, 0x123f, 0x1261, 0x1261, 0x1296, 0x1296, 0x12be, 0x12f9,
- 0x1329, 0x1353, 0x1381, 0x13af, 0x13e4, 0x140a, 0x1432, 0x1432,
- 0x145c, 0x148c, 0x14b0, 0x14c7, 0x14f7, 0x1523, 0x153c, 0x153c,
- 0x156a, 0x158e,
-} // Size: 1244 bytes
-
-var kmLangStr string = "" + // Size: 5497 bytes
- "ភាសាអាហ្វារអាប់ខាហ៊្សានភាសាអាវែស្តង់អាហ្វ្រិកានអាកានអាមហារីចភាសាអារ៉ាហ្គ" +
- "ោនអារ៉ាប់អាសាមីសភាសាអីម៉ារ៉ាអាហ៊្សែរបែហ្សង់បែស្កឺបេឡារុស្សប៊ុលហ្ការីបា" +
- "ម្បារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនកូស៊ីខានឆេកឈូវ៉ាសវេលដាណ" +
- "ឺម៉ាកអាល្លឺម៉ង់ដុងខាអ៊ីវក្រិចអង់គ្លេសអេស្ពេរ៉ាន់តូអេស្ប៉ាញអេស្តូនីបាស្" +
- "កេភឺសៀនហ្វាំងឡង់ហ៊្វីជីហ្វារូសបារាំងហ្វ្រីស៊ានខាងលិចអៀរឡង់ភាសាហ្កែលិគ " +
- "(gd)ហ្គាលីស្យានហ្គូរ៉ានីហ្កុយ៉ារាទីមេនហូសាអ៊ីស្រាអែលហិណ្ឌីក្រូអាតហៃទីហុង" +
- "គ្រីអារមេនីឥណ្ឌូណេស៊ីអ៊ីកបូស៊ីឈាន់យីអ៊ីស្លង់អ៊ីតាលីអ៊ីនុកទីទុតជប៉ុនជ្វ" +
- "ាហ្សក\u200bហ្ស៊ីគីគូយូកាហ្សាក់ស្តង់់កាឡាលលីស៊ុតខ្មែរកន្នដកូរ៉េកាស្មៀរឃ" +
- "ឺដកូនីសគៀរហ្គីស្តង់ឡាតំាងលុចហ្សំបួរហ្គាន់ដាលីនកាឡាឡាវលីទុយអានីលូបាកាតា" +
- "នហ្គាឡាតវីម៉ាឡាហ្គាស៊ីម៉ោរីម៉ាសេដូនីមលយាល័មម៉ុងហ្គោលីម៉ារ៉ាធីម៉ាឡេស៊ីម" +
- "៉ាល់តាភូមានេបេលេខាងជើងនេប៉ាល់ហុល្លង់ន័រវែស នីនូសន័រវែស បុកម៉ាល់អូរ៉ូម៉" +
- "ូអូរីយ៉ាបឹនជាពិប៉ូឡូញបាស្តូព័រទុយហ្កាល់កេទជួអារ៉ូម៉ង់រូន្ឌីរូម៉ានីរុស្" +
- "ស៊ីគិនយ៉ាវ៉ាន់ដាសំស្ក្រឹតស៊ីនឌីសាមីខាងជើងសានហ្គោស្រីលង្កាស្លូវ៉ាគីស្លូ" +
- "វ៉ានីភាសាសាមូអាសូណាសូម៉ាលីអាល់បានីស៊ែបស៊ូដង់ស៊ុយអែដស្វាហ៊ីលីតាមីលតេលុគ" +
- "ុតាដហ្សីគីស្តង់ថៃទីរិនយាទួគមេនីស្តង់តុងហ្គោទួរគីតាតាអ៊ុយហ្គឺរអ៊ុយក្រែន" +
- "អ៊ូរឌូអ៊ូហ្សបេគីស្តង់វៀតណាមវូឡុហ្វឃសាភាសាយីឌីហ្សយរូបាភាសាចួងចិនសូលូអាហ" +
- "្គីមម៉ាពូឈីអាស៊ូបេមបាបេណាបាឡូជីខាងលិចបូដូឈីហ្គាឆេរូគីខឺដកណ្តាលតៃតាហ្សា" +
- "ម៉ាសូប៊ីក្រោមឌូអាឡាចូឡាហ៊្វុនយីអេមប៊ូហ្វីលីពីនកាគូសអាល្លឺម៉ង (ស្វីស)ហ្" +
- "គូស៊ីហាវៃសូប៊ីលើងុំបាម៉ាឆាំកាប៊ីឡេកាំបាម៉ាកូនដេកាប៊ូវឺឌៀនូគុយរ៉ាឈីនីកា" +
- "លែនជីនគូមីភឹមយ៉ាគគុនកានីសាមបាឡាបាហ្វៀឡានហ្គីឡាកូតាលូរីខាងជើងលូអូលូយ៉ាម" +
- "៉ាសៃមេរូម៉ូរីស៊ីនម៉ាកគូវ៉ាមីតូមេតាម៊ូហាគមុនដាងម៉ាហ្សានដឺរេនីណាម៉ាអាល្ល" +
- "ឺម៉ង់ក្រោមក្វាស្យូនគោនូអ័រណានកូលេគីចឈីរុមបូរ៉្វាសាមបូរូសានហ្គូអម្បូរឃឺ" +
- "ដខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសាមីខាងត្បូងលូលីសាមីអ៊ីណារីសាម៉" +
- "ីស្កុលសាមីកុងហ្គោស្វាហ៊ីលីតេសូតាសាវ៉ាក់តាម៉ាសាយអាត្លាសកណ្តាលភាសាមិនស្គ" +
- "ាល់វៃវុនចូវ៉ារីប៉ារីសូហ្គាម៉ារ៉ុកគ្មាន\u200bទិន្នន័យ\u200bភាសាអារ៉ាប់ផ" +
- "្លូវការអេស្ប៉ាញ (អ៊ឺរ៉ុប)ហ្សាក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម" +
- "៉ុលដាវីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ"
-
-var kmLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0021, 0x0045, 0x006c, 0x008d, 0x009c, 0x00b4, 0x00de,
- 0x00f3, 0x0108, 0x0108, 0x012c, 0x0159, 0x016b, 0x0186, 0x01a4,
- 0x01a4, 0x01bc, 0x01da, 0x01e6, 0x0201, 0x0213, 0x0228, 0x0237,
- 0x0237, 0x024f, 0x024f, 0x0258, 0x0258, 0x026a, 0x0273, 0x028b,
- 0x02a9, 0x02a9, 0x02b8, 0x02c4, 0x02d3, 0x02eb, 0x0312, 0x032a,
- 0x0342, 0x0354, 0x0363, 0x0363, 0x037e, 0x0393, 0x03a8, 0x03ba,
- 0x03ea, 0x03fc, 0x0422, 0x0443, 0x045e, 0x047f, 0x0488, 0x0494,
- 0x04b2, 0x04c4, 0x04c4, 0x04d9, 0x04e5, 0x04fa, 0x050f, 0x050f,
- // Entry 40 - 7F
- 0x050f, 0x052d, 0x052d, 0x053f, 0x055a, 0x055a, 0x055a, 0x0572,
- 0x0587, 0x05a8, 0x05b7, 0x05c3, 0x05e1, 0x05e1, 0x05f3, 0x05f3,
- 0x061d, 0x063e, 0x064d, 0x065c, 0x066b, 0x066b, 0x0680, 0x0689,
- 0x0689, 0x0698, 0x06bc, 0x06ce, 0x06ec, 0x0704, 0x0704, 0x0719,
- 0x0722, 0x073d, 0x0764, 0x0773, 0x0797, 0x0797, 0x07a6, 0x07c1,
- 0x07d6, 0x07f4, 0x080c, 0x0824, 0x0839, 0x0845, 0x0845, 0x0869,
- 0x087e, 0x087e, 0x0893, 0x08b5, 0x08e0, 0x08e0, 0x08e0, 0x08e0,
- 0x08e0, 0x08e0, 0x08f8, 0x090d, 0x090d, 0x0922, 0x0922, 0x0934,
- // Entry 80 - BF
- 0x0946, 0x096a, 0x097f, 0x0994, 0x09a6, 0x09bb, 0x09d0, 0x09f7,
- 0x0a12, 0x0a12, 0x0a24, 0x0a42, 0x0a57, 0x0a72, 0x0a8d, 0x0aa8,
- 0x0ac6, 0x0ad2, 0x0ae7, 0x0aff, 0x0b0b, 0x0b0b, 0x0b0b, 0x0b1d,
- 0x0b32, 0x0b4d, 0x0b5c, 0x0b6e, 0x0b98, 0x0b9e, 0x0bb3, 0x0bd7,
- 0x0bd7, 0x0bec, 0x0bfb, 0x0bfb, 0x0c07, 0x0c07, 0x0c22, 0x0c3d,
- 0x0c4f, 0x0c7c, 0x0c7c, 0x0c8e, 0x0c8e, 0x0c8e, 0x0ca3, 0x0cac,
- 0x0ccd, 0x0cdc, 0x0cf1, 0x0cfa, 0x0d06, 0x0d06, 0x0d06, 0x0d06,
- 0x0d06, 0x0d06, 0x0d06, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b,
- // Entry C0 - FF
- 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d30, 0x0d30, 0x0d30,
- 0x0d30, 0x0d30, 0x0d30, 0x0d30, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f,
- 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f,
- 0x0d3f, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d5a, 0x0d7e, 0x0d7e,
- 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e,
- 0x0d7e, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a,
- 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d9c, 0x0d9c, 0x0d9c,
- 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0dae, 0x0dae, 0x0dc9,
- // Entry 100 - 13F
- 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dd5, 0x0dd5,
- 0x0dd5, 0x0dd5, 0x0dd5, 0x0dea, 0x0dea, 0x0e08, 0x0e08, 0x0e1a,
- 0x0e1a, 0x0e3e, 0x0e3e, 0x0e3e, 0x0e50, 0x0e50, 0x0e50, 0x0e50,
- 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e6b,
- 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b,
- 0x0e6b, 0x0e6b, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a,
- 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a,
- 0x0e7a, 0x0e7a, 0x0ea7, 0x0ea7, 0x0ea7, 0x0ebc, 0x0ebc, 0x0ebc,
- // Entry 140 - 17F
- 0x0ebc, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0edd, 0x0edd,
- 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd,
- 0x0eec, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0f13, 0x0f13,
- 0x0f13, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f3a, 0x0f5b,
- 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f79, 0x0f79, 0x0f79,
- 0x0f79, 0x0f91, 0x0f91, 0x0fb2, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7,
- 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fdc, 0x0fee, 0x0fee, 0x0fee,
- 0x0fee, 0x0fee, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003,
- // Entry 180 - 1BF
- 0x1003, 0x1015, 0x1015, 0x1015, 0x1015, 0x1033, 0x1033, 0x1033,
- 0x1033, 0x1033, 0x103f, 0x103f, 0x104e, 0x104e, 0x104e, 0x104e,
- 0x104e, 0x104e, 0x104e, 0x104e, 0x104e, 0x105d, 0x105d, 0x105d,
- 0x105d, 0x105d, 0x1069, 0x1084, 0x1084, 0x10ab, 0x10b7, 0x10b7,
- 0x10b7, 0x10b7, 0x10b7, 0x10c9, 0x10c9, 0x10c9, 0x10db, 0x10db,
- 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x1105, 0x1105,
- 0x1105, 0x1114, 0x1141, 0x1141, 0x1141, 0x1141, 0x1141, 0x1159,
- 0x1159, 0x1159, 0x1159, 0x1159, 0x1162, 0x1162, 0x1171, 0x1171,
- // Entry 1C0 - 1FF
- 0x1171, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186,
- 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186,
- 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1195, 0x1195,
- 0x1195, 0x1195, 0x1195, 0x1195, 0x1195, 0x11a4, 0x11a4, 0x11a4,
- 0x11a4, 0x11a4, 0x11a4, 0x11b3, 0x11b3, 0x11b3, 0x11b3, 0x11c8,
- 0x11c8, 0x11c8, 0x11c8, 0x11c8, 0x11dd, 0x11dd, 0x11dd, 0x11dd,
- 0x1210, 0x1210, 0x121f, 0x121f, 0x121f, 0x124f, 0x124f, 0x124f,
- 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x128e, 0x12a6,
- // Entry 200 - 23F
- 0x12ca, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5,
- 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x1315, 0x1315, 0x1315, 0x1315,
- 0x1315, 0x1315, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321,
- 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321,
- 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x133c, 0x133c,
- 0x137b, 0x137b, 0x137b, 0x137b, 0x13a2, 0x13a8, 0x13a8, 0x13a8,
- 0x13a8, 0x13a8, 0x13a8, 0x13a8, 0x13b7, 0x13b7, 0x13b7, 0x13b7,
- 0x13b7, 0x13d5, 0x13d5, 0x13d5, 0x13d5, 0x13e7, 0x13e7, 0x13e7,
- // Entry 240 - 27F
- 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7,
- 0x13fc, 0x13fc, 0x1435, 0x1435, 0x1462, 0x1462, 0x1462, 0x1462,
- 0x1462, 0x1462, 0x1462, 0x1462, 0x1462, 0x1492, 0x1492, 0x1492,
- 0x1492, 0x1492, 0x14c2, 0x14d7, 0x14d7, 0x1510, 0x1528, 0x1528,
- 0x1552, 0x1579,
-} // Size: 1244 bytes
-
-var knLangStr string = "" + // Size: 11656 bytes
- "ಅಫಾರ್ಅಬ್ಖಾಜಿಯನ್ಅವೆಸ್ಟನ್ಆಫ್ರಿಕಾನ್ಸ್ಅಕಾನ್ಅಂಹರಿಕ್ಅರಗೊನೀಸ್ಅರೇಬಿಕ್ಅಸ್ಸಾಮೀಸ್ಅವ" +
- "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬೆಂಗಾಲಿ" +
- "ಟಿಬೇಟಿಯನ್ಬ್ರೆಟನ್ಬೋಸ್ನಿಯನ್ಕೆಟಲಾನ್ಚೆಚನ್ಕಮೊರೊಕೋರ್ಸಿಕನ್ಕ್ರೀಜೆಕ್ಚರ್ಚ್ ಸ್ಲಾವ" +
- "ಿಕ್ಚುವಾಶ್ವೆಲ್ಶ್ಡ್ಯಾನಿಶ್ಜರ್ಮನ್ದಿವೆಹಿಜೋಂಗ್\u200cಖಾಈವ್ಗ್ರೀಕ್ಇಂಗ್ಲೀಷ್ಎಸ್ಪೆ" +
- "ರಾಂಟೊಸ್ಪ್ಯಾನಿಷ್ಎಸ್ಟೊನಿಯನ್ಬಾಸ್ಕ್ಪರ್ಶಿಯನ್ಫುಲಾಹ್ಫಿನ್ನಿಶ್ಫಿಜಿಯನ್ಫರೋಸಿಫ್ರೆಂ" +
- "ಚ್ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್ಐರಿಷ್ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್ಗ್ಯಾಲಿಶಿಯನ್ಗೌರಾನಿಗುಜರಾತಿಮ್ಯಾಂಕ" +
- "್ಸ್ಹೌಸಾಹೀಬ್ರ್ಯೂಹಿಂದಿಹಿರಿ ಮೊಟುಕ್ರೊಯೇಶಿಯನ್ಹೈತಿಯನ್ಹಂಗೇರಿಯನ್ಅರ್ಮೇನಿಯನ್ಹೆರೆ" +
- "ರೊಇಂಟರ್\u200cಲಿಂಗ್ವಾಇಂಡೋನೇಶಿಯನ್ಇಂಟರ್ಲಿಂಗ್ಇಗ್ಬೊಸಿಚುಅನ್ ಯಿಇನುಪಿಯಾಕ್ಇಡೊಐಸ" +
- "್ಲಾಂಡಿಕ್ಇಟಾಲಿಯನ್ಇನುಕ್ಟಿಟುಟ್ಜಾಪನೀಸ್ಜಾವಾನೀಸ್ಜಾರ್ಜಿಯನ್ಕೊಂಗೊಕಿಕುಯುಕ್ವಾನ್" +
- "\u200cಯಾಮಾಕಝಕ್ಕಲಾಲ್ಲಿಸುಟ್ಖಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕನುರಿಕಾಶ್ಮೀರಿಕುರ್ದಿಷ್ಕೋಮಿಕೋರ್ನ" +
- "ಿಷ್ಕಿರ್ಗಿಜ್ಲ್ಯಾಟಿನ್ಲಕ್ಸಂಬರ್ಗ್ಗಾಂಡಾಲಿಂಬರ್ಗಿಶ್ಲಿಂಗಾಲಲಾವೋಲಿಥುವೇನಿಯನ್ಲೂಬಾ-" +
- "ಕಟಾಂಗಾಲಟ್ವಿಯನ್ಮಲಗಾಸಿಮಾರ್ಶಲ್ಲೀಸ್ಮಾವೋರಿಮೆಸಿಡೋನಿಯನ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮರಾಠಿಮಲ" +
- "ಯ್ಮಾಲ್ಟೀಸ್ಬರ್ಮೀಸ್ನೌರುಉತ್ತರ ದೆಬೆಲೆನೇಪಾಳಿಡೋಂಗಾಡಚ್ನಾರ್ವೆಜಿಯನ್ ನೈನೊಸ್ಕ್ನಾರ" +
- "್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್ದಕ್ಷಿಣ ದೆಬೆಲೆನವಾಜೊನ್ಯಾಂಜಾಒಸಿಟನ್ಒಜಿಬ್ವಾಓರೊಮೋಒರಿಯಾಒಸ್ಸೆಟ" +
- "ಿಕ್ಪಂಜಾಬಿಪಾಲಿಪೋಲಿಶ್ಪಾಷ್ಟೋಪೋರ್ಚುಗೀಸ್ಕ್ವೆಚುವಾರೊಮಾನ್ಷ್ರುಂಡಿರೊಮೇನಿಯನ್ರಷ್ಯನ" +
- "್ಕೀನ್ಯಾರುವಾಂಡಾಸಂಸ್ಕೃತಸರ್ಡೀನಿಯನ್ಸಿಂಧಿಉತ್ತರ ಸಾಮಿಸಾಂಗೋಸಿಂಹಳಸ್ಲೋವಾಕ್ಸ್ಲೋವೇ" +
- "ನಿಯನ್ಸಮೋವನ್ಶೋನಾಸೊಮಾಲಿಅಲ್ಬೇನಿಯನ್ಸರ್ಬಿಯನ್ಸ್ವಾತಿದಕ್ಷಿಣ ಸೋಥೋಸುಂಡಾನೀಸ್ಸ್ವೀಡ" +
- "ಿಷ್ಸ್ವಹಿಲಿತಮಿಳುತೆಲುಗುತಾಜಿಕ್ಥಾಯ್ಟಿಗ್ರಿನ್ಯಾಟರ್ಕ್\u200cಮೆನ್ಸ್ವಾನಾಟೋಂಗನ್ಟರ" +
- "್ಕಿಶ್ಸೋಂಗಾಟಾಟರ್ತಹಿತಿಯನ್ಉಯಿಘರ್ಉಕ್ರೈನಿಯನ್ಉರ್ದುಉಜ್ಬೇಕ್ವೆಂಡಾವಿಯೇಟ್ನಾಮೀಸ್ವೋ" +
- "ಲಾಪುಕ್ವಾಲೂನ್ವೋಲೋಫ್ಕ್ಸೋಸಯಡ್ಡಿಶ್ಯೊರುಬಾಝೂವಾಂಗ್ಚೈನೀಸ್ಜುಲುಅಛಿನೀಸ್ಅಕೋಲಿಅಡಂಗ್" +
- "\u200cಮೆಅಡೈಘೆಆಫ್ರಿಹಿಲಿಅಘೆಮ್ಐನುಅಕ್ಕಾಡಿಯನ್ಅಲೆಯುಟ್ದಕ್ಷಿಣ ಅಲ್ಟಾಯ್ಪ್ರಾಚೀನ ಇಂಗ" +
- "್ಲೀಷ್ಆಂಗಿಕಾಅರಾಮಿಕ್ಮಪುಚೆಅರಪಾಹೋಅರಾವಾಕ್ಅಸುಆಸ್ಟುರಿಯನ್ಅವಧಿಬಲೂಚಿಬಲಿನೀಸ್ಬಸಾಬೇ" +
- "ಜಾಬೆಂಬಾಬೆನಪಶ್ಚಿಮ ಬಲೊಚಿಭೋಜಪುರಿಬಿಕೊಲ್ಬಿನಿಸಿಕ್ಸಿಕಾಬ್ರಾಜ್ಬೋಡೊಬುರಿಯಟ್ಬುಗಿನೀ" +
- "ಸ್ಬ್ಲಿನ್ಕ್ಯಾಡ್ಡೋಕಾರಿಬ್ಅಟ್ಸಮ್ಸೆಬುಆನೋಚಿಗಾಚಿಬ್ಚಾಚಗಟಾಯ್ಚೂಕಿಸೆಮಾರಿಚಿನೂಕ್ ಜಾ" +
- "ರ್ಗೋನ್ಚೋಕ್ಟಾವ್ಚಿಪೆವ್ಯಾನ್ಚೆರೋಕೀಚೀಯೆನ್ನೇಸೊರಾನಿ ಕುರ್ದಿಷ್ಕೊಪ್ಟಿಕ್ಕ್ರಿಮೀಯನ್" +
- " ಟರ್ಕಿಷ್ಕಶುಬಿಯನ್ಡಕೋಟದರ್ಗ್ವಾಟೈಟಡೆಲಾವೇರ್ಸ್ಲೇವ್ಡೋಗ್ರಿಬ್ಡಿಂಕಾಜರ್ಮಾಡೋಗ್ರಿಲೋವರ" +
- "್ ಸೋರ್ಬಿಯನ್ಡುವಾಲಾಮಧ್ಯ ಡಚ್ಜೊಲ-ಫೊನ್ಯಿಡ್ಯೂಲಾಎಂಬುಎಫಿಕ್ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ಎಕ" +
- "ಾಜುಕ್ಎಲಾಮೈಟ್ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ಇವಾಂಡೋಫೆಂಗ್ಫಿಲಿಪಿನೊಫೋನ್ಮಧ್ಯ ಫ್ರೆಂಚ್ಪ್ರಾಚೀನ ಫ್" +
- "ರೆಂಚ್ಉತ್ತರ ಫ್ರಿಸಿಯನ್ಪೂರ್ವ ಫ್ರಿಸಿಯನ್ಫ್ರಿಯುಲಿಯನ್ಗಗಗೌಜ್ಗಾಯೋಗ್ಬಾಯಾಗೀಝ್ಗಿಲ್" +
- "ಬರ್ಟೀಸ್ಮಧ್ಯ ಹೈ ಜರ್ಮನ್ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ಗೊಂಡಿಗೊರೊಂಟಾಲೋಗೋಥಿಕ್ಗ್ರೇಬೋಪ್ರಾಚೀ" +
- "ನ ಗ್ರೀಕ್ಸ್ವಿಸ್ ಜರ್ಮನ್ಗುಸಿಗ್ವಿಚ್\u200cಇನ್ಹೈಡಾಹವಾಯಿಯನ್ಹಿಲಿಗೇನನ್ಹಿಟ್ಟಿಟೆಮ" +
- "ೋಂಗ್ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್ಹೂಪಾಇಬಾನ್ಇಲ್ಲಿಕೋಇಂಗುಷ್ಲೊಜ್ಬಾನ್ನೊಂಬಾಮ್ಯಕಮೆಜೂಡಿಯೋ-ಪರ್" +
- "ಶಿಯನ್ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ಕಾರಾ-ಕಲ್ಪಾಕ್ಕಬೈಲ್ಕಚಿನ್ಜ್ಜುಕಂಬಾಕಾವಿಕಬರ್ಡಿಯನ್ಟ್ಯಾಪ್ಮ್" +
- "ಯಾಕೊಂಡ್ಕಬುವೆರ್ಡಿಯನುಕೋರೋಖಾಸಿಖೋಟಾನೀಸ್ಕೊಯ್ರ ಚೀನಿಕಲೆಂಜಿನ್ಕಿಂಬುಂಡುಕೊಮಿ-ಪರ್ಮ" +
- "್ಯಕ್ಕೊಂಕಣಿಕೊಸರಿಯನ್ಕಪೆಲ್ಲೆಕರಚಯ್-ಬಲ್ಕಾರ್ಕರೇಲಿಯನ್ಕುರುಖ್ಶಂಬಲಬಫಿಯಕುಮೈಕ್ಕುಟೇ" +
- "ನಾಯ್ಕಾಡಿನೋಲಾಂಗಿಲಹಂಡಾಲಂಬಾಲೆಜ್ಘಿಯನ್ಲಕೊಟಮೊಂಗೋಲೋಝಿಲುಬ-ಲುಲಾಲೂಯಿಸೆನೋಲುಂಡಾಲುವ" +
- "ೋಲುಶಾಯ್ಲುಯಿಯಮದುರೀಸ್ಮಗಾಹಿಮೈಥಿಲಿಮಕಾಸರ್ಮಂಡಿಂಗೊಮಸಾಯ್ಮೋಕ್ಷಮಂದಾರ್ಮೆಂಡೆಮೆರುಮೊ" +
- "ರಿಸನ್ಮಧ್ಯ ಐರಿಷ್ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊಮೆಟಾಮಿಕ್\u200cಮ್ಯಾಕ್ಮಿನಂಗ್\u200cಕಬಾವುಮಂಚ" +
- "ುಮಣಿಪುರಿಮೊಹಾವ್ಕ್ಮೊಸ್ಸಿಮುಂಡಂಗ್ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆಗಳುಕ್ರೀಕ್ಕಿರಾಂಡೀಸ್ಮಾರ್ವಾಡಿ" +
- "ಎರ್\u200cಝ್ಯಾನಿಯಾಪೊಲಿಟನ್ನಮಲೋ ಜರ್ಮನ್ನೇವಾರೀನಿಯಾಸ್ನಿಯುವನ್ಖ್ವಾಸಿಯೊನೊಗಾಯ್ಪ್" +
- "ರಾಚೀನ ನೋರ್ಸ್ಎನ್\u200cಕೋಉತ್ತರ ಸೋಥೋನೂಯರ್ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿನ್ಯಾಮ್\u200cವೆಂಜ" +
- "ಿನ್ಯಾನ್\u200cಕೋಲೆನ್ಯೋರೋಜೀಮಾಓಸಾಜ್ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ಪಂಗಾಸಿನನ್ಪಹ್ಲವಿಪಂಪಾಂಗ" +
- "ಾಪಾಪಿಯಮೆಂಟೋಪಲುಆನ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಫೀನಿಷಿಯನ್ಪೋನ್\u200c\u200cಪಿಯನ್ಪ್ರಾಚೀನ" +
- " ಪ್ರೊವೆನ್ಶಿಯಲ್ಕಿಷೆರಾಜಾಸ್ಥಾನಿರಾಪಾನುಯಿರಾರೋಟೊಂಗನ್ರೊಂಬೊರೋಮಾನಿಅರೋಮಾನಿಯನ್ರುವಸಂ" +
- "ಡಾವೇಯಾಕುಟ್ಸಮರಿಟನ್ ಅರಾಮಿಕ್ಸಂಬುರುಸಸಾಕ್ಸಂತಾಲಿಸಂಗುಸಿಸಿಲಿಯನ್ಸ್ಕೋಟ್ಸ್ದಕ್ಷಿಣ " +
- "ಕುರ್ದಿಶ್ಸೆನಸೆಲ್ಕಪ್ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿಪ್ರಾಚೀನ ಐರಿಷ್ಟಷೆಲ್\u200dಹಿಟ್ಶಾನ್ಸಿಡಾ" +
- "ಮೋದಕ್ಷಿಣ ಸಾಮಿಲೂಲ್ ಸಾಮಿಇನರಿ ಸಾಮಿಸ್ಕೋಟ್ ಸಾಮಿಸೋನಿಂಕೆಸೋಗ್ಡಿಏನ್ಸ್ರಾನನ್ ಟೋಂಗ" +
- "ೋಸೇರೇರ್ಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಕ್ಟಿಮ್ನೆಟ" +
- "ೆಸೊಟೆರೆನೋಟೇಟಮ್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋ" +
- "ಕ್ ಪಿಸಿನ್ಸಿಂಶಿಯನ್ತುಂಬುಕಾಟುವಾಲುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್" +
- "\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುರೂಟ್ವಾಯಿವೋಟಿಕ್ವುಂಜೊವಲಾಮೋವರಾಯ್ವಾಷೋವಾರ್ಲ್" +
- "\u200cಪಿರಿಕಲ್\u200cಮೈಕ್ಸೊಗಯಾಓಯಪೀಸೆಝೋಪೊಟೆಕ್ಬ್ಲಿಸ್\u200cಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್" +
- "ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರ" +
- "ಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನ" +
- "ೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ" +
- "್ಯಾನಿಶ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್" +
- " ಫ್ರೆಂಚ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮೊಲ್ಡೆವಿಯನ್ಸರ್" +
- "ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್"
-
-var knLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x002d, 0x0045, 0x0066, 0x0075, 0x008a, 0x00a2,
- 0x00b7, 0x00d2, 0x00e4, 0x00f9, 0x011a, 0x012f, 0x014d, 0x016b,
- 0x0183, 0x0195, 0x01aa, 0x01c5, 0x01da, 0x01f5, 0x020a, 0x0219,
- 0x0228, 0x0243, 0x024f, 0x025b, 0x0283, 0x0295, 0x02a7, 0x02bf,
- 0x02d1, 0x02e3, 0x02fb, 0x0304, 0x0316, 0x032e, 0x034c, 0x036a,
- 0x0388, 0x039a, 0x03b2, 0x03c4, 0x03dc, 0x03f1, 0x0400, 0x0415,
- 0x0443, 0x0452, 0x0483, 0x04a4, 0x04b6, 0x04cb, 0x04e6, 0x04f2,
- 0x050a, 0x0519, 0x0532, 0x0553, 0x0568, 0x0583, 0x05a1, 0x05b3,
- // Entry 40 - 7F
- 0x05da, 0x05fb, 0x0619, 0x0628, 0x0644, 0x065f, 0x0668, 0x0686,
- 0x069e, 0x06bf, 0x06d4, 0x06ec, 0x0707, 0x0716, 0x0728, 0x0749,
- 0x0755, 0x0776, 0x0785, 0x0794, 0x07a9, 0x07b8, 0x07d0, 0x07e8,
- 0x07f4, 0x080c, 0x0824, 0x083c, 0x085a, 0x0869, 0x0887, 0x0899,
- 0x08a5, 0x08c6, 0x08e5, 0x08fd, 0x090f, 0x0930, 0x0942, 0x0963,
- 0x0975, 0x0990, 0x099f, 0x09ab, 0x09c3, 0x09d8, 0x09e4, 0x0a06,
- 0x0a18, 0x0a27, 0x0a30, 0x0a6a, 0x0aa1, 0x0ac6, 0x0ad5, 0x0aea,
- 0x0afc, 0x0b11, 0x0b20, 0x0b2f, 0x0b4a, 0x0b5c, 0x0b68, 0x0b7a,
- // Entry 80 - BF
- 0x0b8c, 0x0baa, 0x0bc2, 0x0bda, 0x0be9, 0x0c04, 0x0c16, 0x0c3d,
- 0x0c52, 0x0c70, 0x0c7f, 0x0c9b, 0x0caa, 0x0cb9, 0x0cd1, 0x0cf2,
- 0x0d04, 0x0d10, 0x0d22, 0x0d40, 0x0d58, 0x0d6a, 0x0d89, 0x0da4,
- 0x0dbc, 0x0dd1, 0x0de0, 0x0df2, 0x0e04, 0x0e10, 0x0e2e, 0x0e4c,
- 0x0e5e, 0x0e70, 0x0e85, 0x0e94, 0x0ea3, 0x0ebb, 0x0ecd, 0x0eeb,
- 0x0efa, 0x0f0f, 0x0f1e, 0x0f42, 0x0f5a, 0x0f6c, 0x0f7e, 0x0f8d,
- 0x0fa2, 0x0fb4, 0x0fc9, 0x0fdb, 0x0fe7, 0x0ffc, 0x100b, 0x1023,
- 0x1032, 0x1032, 0x104d, 0x105c, 0x1065, 0x1083, 0x1083, 0x1098,
- // Entry C0 - FF
- 0x1098, 0x10c0, 0x10ee, 0x1100, 0x1115, 0x1124, 0x1124, 0x1136,
- 0x1136, 0x114b, 0x114b, 0x114b, 0x1154, 0x1154, 0x1172, 0x1172,
- 0x117e, 0x118d, 0x11a2, 0x11a2, 0x11ab, 0x11ab, 0x11ab, 0x11ab,
- 0x11b7, 0x11c6, 0x11c6, 0x11cf, 0x11cf, 0x11cf, 0x11f1, 0x1206,
- 0x1218, 0x1224, 0x1224, 0x1224, 0x123c, 0x123c, 0x123c, 0x124e,
- 0x124e, 0x125a, 0x125a, 0x126f, 0x1287, 0x1287, 0x1299, 0x1299,
- 0x12b1, 0x12c3, 0x12c3, 0x12d5, 0x12ea, 0x12f6, 0x1308, 0x131a,
- 0x132c, 0x1338, 0x1363, 0x137b, 0x1399, 0x13ab, 0x13c3, 0x13ee,
- // Entry 100 - 13F
- 0x1406, 0x1406, 0x1437, 0x144f, 0x145b, 0x1470, 0x1479, 0x1491,
- 0x14a3, 0x14bb, 0x14ca, 0x14d9, 0x14eb, 0x1516, 0x1516, 0x1528,
- 0x153e, 0x155a, 0x156c, 0x156c, 0x1578, 0x1587, 0x1587, 0x15bb,
- 0x15d0, 0x15e5, 0x160a, 0x160a, 0x161c, 0x161c, 0x162b, 0x1643,
- 0x1643, 0x164f, 0x164f, 0x1671, 0x169c, 0x169c, 0x16c7, 0x16f2,
- 0x1713, 0x1716, 0x1725, 0x1725, 0x1731, 0x1743, 0x1743, 0x174f,
- 0x1770, 0x1770, 0x1796, 0x17c5, 0x17c5, 0x17d4, 0x17ef, 0x1801,
- 0x1813, 0x183b, 0x1860, 0x1860, 0x1860, 0x186c, 0x188a, 0x1896,
- // Entry 140 - 17F
- 0x1896, 0x18ae, 0x18ae, 0x18c9, 0x18e1, 0x18f0, 0x191b, 0x191b,
- 0x1927, 0x1936, 0x1936, 0x194b, 0x195d, 0x195d, 0x195d, 0x1975,
- 0x1984, 0x1996, 0x19c1, 0x19e9, 0x19e9, 0x1a0b, 0x1a1a, 0x1a29,
- 0x1a35, 0x1a41, 0x1a4d, 0x1a68, 0x1a68, 0x1a7a, 0x1a95, 0x1ab9,
- 0x1ab9, 0x1ac5, 0x1ac5, 0x1ad1, 0x1ae9, 0x1b05, 0x1b05, 0x1b05,
- 0x1b05, 0x1b1d, 0x1b35, 0x1b5a, 0x1b6c, 0x1b84, 0x1b99, 0x1bbe,
- 0x1bbe, 0x1bbe, 0x1bd6, 0x1be8, 0x1bf4, 0x1c00, 0x1c00, 0x1c12,
- 0x1c2a, 0x1c3c, 0x1c4b, 0x1c5a, 0x1c66, 0x1c81, 0x1c81, 0x1c81,
- // Entry 180 - 1BF
- 0x1c81, 0x1c8d, 0x1c8d, 0x1c9c, 0x1ca8, 0x1ca8, 0x1ca8, 0x1cbe,
- 0x1cd6, 0x1ce5, 0x1cf1, 0x1d03, 0x1d12, 0x1d12, 0x1d12, 0x1d27,
- 0x1d27, 0x1d36, 0x1d48, 0x1d5a, 0x1d6f, 0x1d7e, 0x1d7e, 0x1d8d,
- 0x1d9f, 0x1dae, 0x1dba, 0x1dcf, 0x1deb, 0x1e14, 0x1e20, 0x1e41,
- 0x1e65, 0x1e71, 0x1e86, 0x1e9e, 0x1eb0, 0x1eb0, 0x1ec5, 0x1ef9,
- 0x1f0b, 0x1f26, 0x1f3e, 0x1f3e, 0x1f3e, 0x1f56, 0x1f56, 0x1f56,
- 0x1f77, 0x1f7d, 0x1f96, 0x1fa8, 0x1fba, 0x1fcf, 0x1fcf, 0x1fe7,
- 0x1fe7, 0x1ff9, 0x2021, 0x2021, 0x2033, 0x204f, 0x205e, 0x208c,
- // Entry 1C0 - 1FF
- 0x20b0, 0x20d1, 0x20e3, 0x20ef, 0x20fe, 0x212f, 0x214a, 0x215c,
- 0x2171, 0x218f, 0x21a1, 0x21a1, 0x21a1, 0x21a1, 0x21cf, 0x21cf,
- 0x21ea, 0x21ea, 0x21ea, 0x220b, 0x220b, 0x2248, 0x2254, 0x2254,
- 0x2272, 0x228a, 0x22a8, 0x22a8, 0x22a8, 0x22b7, 0x22c9, 0x22c9,
- 0x22c9, 0x22c9, 0x22e7, 0x22f0, 0x2302, 0x2314, 0x233f, 0x2351,
- 0x2360, 0x2372, 0x2372, 0x2372, 0x237e, 0x2399, 0x23b1, 0x23b1,
- 0x23dc, 0x23dc, 0x23e5, 0x23e5, 0x23fa, 0x2428, 0x244d, 0x244d,
- 0x246b, 0x2477, 0x2477, 0x2489, 0x2489, 0x2489, 0x24a8, 0x24c1,
- // Entry 200 - 23F
- 0x24da, 0x24f9, 0x250e, 0x2529, 0x254e, 0x2560, 0x2560, 0x2560,
- 0x2572, 0x257e, 0x2599, 0x2599, 0x25be, 0x25ef, 0x2604, 0x2604,
- 0x2604, 0x2616, 0x2622, 0x2634, 0x2643, 0x2655, 0x2661, 0x2679,
- 0x2679, 0x2691, 0x26ac, 0x26ac, 0x26c1, 0x26e3, 0x2702, 0x2702,
- 0x2702, 0x2702, 0x271a, 0x271a, 0x272f, 0x2741, 0x2750, 0x276b,
- 0x27a0, 0x27be, 0x27d9, 0x27ee, 0x27fa, 0x2806, 0x2806, 0x2806,
- 0x2806, 0x2806, 0x2818, 0x2818, 0x2827, 0x2827, 0x2836, 0x2845,
- 0x2851, 0x2872, 0x2872, 0x288a, 0x288a, 0x2893, 0x289c, 0x28ab,
- // Entry 240 - 27F
- 0x28ab, 0x28ab, 0x28ab, 0x28ab, 0x28c3, 0x28f0, 0x28f0, 0x2902,
- 0x2955, 0x2961, 0x29ae, 0x29ba, 0x29fb, 0x29fb, 0x2a2c, 0x2a58,
- 0x2a95, 0x2ac9, 0x2afa, 0x2b2b, 0x2b7b, 0x2bb5, 0x2bef, 0x2bef,
- 0x2c20, 0x2c48, 0x2c48, 0x2c60, 0x2ca0, 0x2cda, 0x2cfb, 0x2d2c,
- 0x2d54, 0x2d88,
-} // Size: 1244 bytes
-
-var koLangStr string = "" + // Size: 7007 bytes
- "아파르어압카즈어아베스타어아프리칸스어아칸어암하라어아라곤어아랍어아삼어아바릭어아이마라어아제르바이잔어바슈키르어벨라루스어불가리아어비슬라마어" +
- "밤바라어벵골어티베트어브르타뉴어보스니아어카탈로니아어체첸어차모로어코르시카어크리어체코어교회 슬라브어추바시어웨일스어덴마크어독일어디베히" +
- "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서프리지아어아일랜드어스코틀랜" +
- "드 게일어갈리시아어과라니어구자라트어맹크스어하우사어히브리어힌디어히리 모투어크로아티아어아이티어헝가리어아르메니아어헤레로어인테르링구아" +
- " (국제보조어협회)인도네시아어인테르링구에이그보어쓰촨 이어이누피아크어이도어아이슬란드어이탈리아어이눅티투트어일본어자바어조지아어콩고어키쿠" +
- "유어쿠안야마어카자흐어그린란드어캄보디아어칸나다어한국어칸누리어카슈미르어쿠르드어코미어콘월어키르기스어라틴어룩셈부르크어간다어림버거어링갈" +
- "라어라오어리투아니아어루바-카탄가어라트비아어말라가시어마셜제도어마오리어마케도니아어말라얄람어몽고어마라티어말레이어몰타어버마어나우루어북" +
- "부 은데벨레어네팔어느동가어네덜란드어노르웨이어(니노르스크)노르웨이어(보크말)남부 은데벨레어나바호어니안자어; 치츄어; 츄어오크어오" +
- "지브웨이어오로모어오리야어오세트어펀잡어팔리어폴란드어파슈토어포르투갈어케추아어로만시어룬디어루마니아어러시아어르완다어산스크리트어사르디니" +
- "아어신디어북부 사미어산고어스리랑카어슬로바키아어슬로베니아어사모아어쇼나어소말리아어알바니아어세르비아어시스와티어소토어 (남부)순다어스" +
- "웨덴어스와힐리어타밀어텔루구어타지크어태국어티그리냐어투르크멘어세츠와나어통가어터키어총가어타타르어타히티어위구르어우크라이나어우르두어우즈" +
- "베크어벤다어베트남어볼라퓌크어왈론어월로프어코사어이디시어요루바어주앙어중국어줄루어아체어아콜리어아당메어아닥헤어튀니지 아랍어아프리히리어" +
- "아그햄어아이누어아카드어알류트어남부 알타이어고대 영어앙가어아람어아라우칸어아라파호어알제리 아랍어아라와크어모로코 아랍어이집트 아랍어" +
- "아수어아스투리아어아와히어발루치어발리어바사어바문어고말라어베자어벰바어베나어바푸트어서부 발로치어호즈푸리어비콜어비니어콤어식시카어브라지" +
- "어브라후이어보도어아쿠즈어부리아타부기어불루어브린어메둠바어카도어카리브어카유가어앗삼어세부아노어치가어치브차어차가타이어추크어마리어치누크" +
- "어와 영어 프랑스어의 혼성어촉토어치페우얀체로키어샤이엔어소라니 쿠르드어콥트어크리민 터키어; 크리민 타타르어카슈비아어다코타어다르그" +
- "와어타이타어델라웨어어슬라브어도그리브어딩카어자르마어도그리어저지 소르비아어두알라어중세 네덜란드어졸라 포니어드율라어다장가어엠부어이픽" +
- "어이집트어 (고대)이카죽어엘람어영어, 중세이원도어팡그어필리핀어폰어중세 프랑스어고대 프랑스어북부 프리슬란드어동부 프리슬란드어프리" +
- "우리안어가어가가우스어가요어그바야어조로아스터 다리어게이즈어키리바시어길라키어중세 고지 독일어고대 고지 독일어고아 콘칸어곤디어고론탈" +
- "로어고트어게르보어그리스어, 고대독일어(스위스)구시어그위친어하이다어하와이어피지 힌디어헤리가뇬어하타이트어히몸어고지 소르비아어후파어" +
- "이반어이비비오어이로코어인귀시어로반어응곰바어마차메어유대-페르시아어유대-아라비아어카라칼파크어커바일어카친어까꼬토끄어캄바어카위어카바르" +
- "디어카넴부어티얍어마콘데어크리올어코로어카시어호탄어코이라 친니어코와르어카코어칼렌진어킴분두어코미페르먀크어코카니어코스라이엔어크펠레어카" +
- "라챠이-발카르어카렐리야어쿠르크어샴발라어바피아어콜로그니안어쿠믹어쿠테네어라디노어랑기어라한다어람바어레즈기안어링구아 프랑카 노바라코타" +
- "어몽구어로지어북부 루리어루바-룰루아어루이세노어룬다어루오어루샤이어루야어마두라어마파어마가히마이틸리마카사어만딩고어마사이어마바어모크샤" +
- "어만다르어멘데어메루어모리스얀어아일랜드어, 중세마크후와-메토어메타어미크맥어미낭카바우만주어마니푸리어모호크어모시어서부 마리어문당어다" +
- "중 언어크리크어미란데어마르와리어미예네어엘즈야어마잔데라니어나폴리어나마어저지 독일어네와르어니아스어니웨언어크와시오어느기엠본어노가이어" +
- "노르웨이, 고대응코어소토어 (북부)누에르어네와르어 (고전)니암웨지어니안콜어뉴로어느지마어오세이지어터키어, 오스만판가시난어팔레비어" +
- "팜팡가어파피아먼토어파라우안어고대 페르시아어페니키아어폰틱어폼페이어고대 프로방스어키체어라자스탄어라파뉴이라로통가어롬보어집시어루신어아" +
- "로마니아어르와어산다웨어야큐트어사마리아 아랍어삼부루어사사크어산탈리어느감바이어상구어시칠리아어스코틀랜드어남부 쿠르드어세네카어세나어셀" +
- "쿠프어코이야보로 세니어아일랜드, 고대타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어소닌케어" +
- "소그디엔어스라난 통가어세레르어사호어수쿠마족어수수어수메르어코모로어콩고 스와힐리어시리아어 (고전)시리아어팀니어테조어테레노어테툼어티" +
- "그레어티비어토켈라우제도어차후르어클링온어틀링깃족어탈리쉬어타마섹어통가어 (니아살랜드)토크 피신어타로코어트심시안어툼부카어투발루어타사" +
- "와크어투비니안어중앙 모로코 타마지트어우드말트어유가리틱어윤번두어어근바이어보틱어분조어월저어와라모어와라이어와쇼어왈피리어칼미크어소가어" +
- "야오족어얍페세어양본어옘바어사포테크어블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 " +
- "독일어(스위스)영어(호주)플라망어몰도바어세르비아-크로아티아어"
-
-var koLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0018, 0x0027, 0x0039, 0x0042, 0x004e, 0x005a,
- 0x0063, 0x006c, 0x0078, 0x0087, 0x009c, 0x00ab, 0x00ba, 0x00c9,
- 0x00d8, 0x00e4, 0x00ed, 0x00f9, 0x0108, 0x0117, 0x0129, 0x0132,
- 0x013e, 0x014d, 0x0156, 0x015f, 0x0172, 0x017e, 0x018a, 0x0196,
- 0x019f, 0x01ab, 0x01b4, 0x01bd, 0x01c9, 0x01cf, 0x01e1, 0x01ed,
- 0x01ff, 0x020b, 0x021a, 0x0223, 0x022f, 0x0238, 0x0241, 0x024d,
- 0x025f, 0x026e, 0x0287, 0x0296, 0x02a2, 0x02b1, 0x02bd, 0x02c9,
- 0x02d5, 0x02de, 0x02ee, 0x0300, 0x030c, 0x0318, 0x032a, 0x0336,
- // Entry 40 - 7F
- 0x0360, 0x0372, 0x0384, 0x0390, 0x039d, 0x03af, 0x03b8, 0x03ca,
- 0x03d9, 0x03eb, 0x03f4, 0x03fd, 0x0409, 0x0412, 0x041e, 0x042d,
- 0x0439, 0x0448, 0x0457, 0x0463, 0x046c, 0x0478, 0x0487, 0x0493,
- 0x049c, 0x04a5, 0x04b4, 0x04bd, 0x04cf, 0x04d8, 0x04e4, 0x04f0,
- 0x04f9, 0x050b, 0x051e, 0x052d, 0x053c, 0x054b, 0x0557, 0x0569,
- 0x0578, 0x0581, 0x058d, 0x0599, 0x05a2, 0x05ab, 0x05b7, 0x05cd,
- 0x05d6, 0x05e2, 0x05f1, 0x0611, 0x062b, 0x0641, 0x064d, 0x066c,
- 0x0675, 0x0687, 0x0693, 0x069f, 0x06ab, 0x06b4, 0x06bd, 0x06c9,
- // Entry 80 - BF
- 0x06d5, 0x06e4, 0x06f0, 0x06fc, 0x0705, 0x0714, 0x0720, 0x072c,
- 0x073e, 0x0750, 0x0759, 0x0769, 0x0772, 0x0781, 0x0793, 0x07a5,
- 0x07b1, 0x07ba, 0x07c9, 0x07d8, 0x07e7, 0x07f6, 0x0808, 0x0811,
- 0x081d, 0x082c, 0x0835, 0x0841, 0x084d, 0x0856, 0x0865, 0x0874,
- 0x0883, 0x088c, 0x0895, 0x089e, 0x08aa, 0x08b6, 0x08c2, 0x08d4,
- 0x08e0, 0x08ef, 0x08f8, 0x0904, 0x0913, 0x091c, 0x0928, 0x0931,
- 0x093d, 0x0949, 0x0952, 0x095b, 0x0964, 0x096d, 0x0979, 0x0985,
- 0x0991, 0x09a4, 0x09b6, 0x09c2, 0x09ce, 0x09da, 0x09da, 0x09e6,
- // Entry C0 - FF
- 0x09e6, 0x09f9, 0x0a06, 0x0a0f, 0x0a18, 0x0a27, 0x0a27, 0x0a36,
- 0x0a49, 0x0a58, 0x0a6b, 0x0a7e, 0x0a87, 0x0a87, 0x0a99, 0x0a99,
- 0x0aa5, 0x0ab1, 0x0aba, 0x0aba, 0x0ac3, 0x0acc, 0x0acc, 0x0ad8,
- 0x0ae1, 0x0aea, 0x0aea, 0x0af3, 0x0aff, 0x0aff, 0x0b12, 0x0b21,
- 0x0b2a, 0x0b33, 0x0b33, 0x0b39, 0x0b45, 0x0b45, 0x0b45, 0x0b51,
- 0x0b60, 0x0b69, 0x0b75, 0x0b81, 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8,
- 0x0bb1, 0x0bbd, 0x0bc9, 0x0bd2, 0x0be1, 0x0bea, 0x0bf6, 0x0c05,
- 0x0c0e, 0x0c17, 0x0c47, 0x0c50, 0x0c5c, 0x0c68, 0x0c74, 0x0c8a,
- // Entry 100 - 13F
- 0x0c93, 0x0c93, 0x0cbe, 0x0ccd, 0x0cd9, 0x0ce8, 0x0cf4, 0x0d03,
- 0x0d0f, 0x0d1e, 0x0d27, 0x0d33, 0x0d3f, 0x0d55, 0x0d55, 0x0d61,
- 0x0d77, 0x0d87, 0x0d93, 0x0d9f, 0x0da8, 0x0db1, 0x0db1, 0x0dc6,
- 0x0dd2, 0x0ddb, 0x0de9, 0x0de9, 0x0df5, 0x0df5, 0x0dfe, 0x0e0a,
- 0x0e0a, 0x0e10, 0x0e10, 0x0e23, 0x0e36, 0x0e36, 0x0e4f, 0x0e68,
- 0x0e7a, 0x0e80, 0x0e8f, 0x0e8f, 0x0e98, 0x0ea4, 0x0ebd, 0x0ec9,
- 0x0ed8, 0x0ee4, 0x0efb, 0x0f12, 0x0f22, 0x0f2b, 0x0f3a, 0x0f43,
- 0x0f4f, 0x0f63, 0x0f77, 0x0f77, 0x0f77, 0x0f80, 0x0f8c, 0x0f98,
- // Entry 140 - 17F
- 0x0f98, 0x0fa4, 0x0fb4, 0x0fc3, 0x0fd2, 0x0fdb, 0x0ff1, 0x0ff1,
- 0x0ffa, 0x1003, 0x1012, 0x101e, 0x102a, 0x102a, 0x102a, 0x1033,
- 0x103f, 0x104b, 0x1061, 0x1077, 0x1077, 0x1089, 0x1095, 0x109e,
- 0x10ad, 0x10b6, 0x10bf, 0x10ce, 0x10da, 0x10e3, 0x10ef, 0x10fb,
- 0x10fb, 0x1104, 0x1104, 0x110d, 0x1116, 0x1129, 0x1135, 0x1135,
- 0x113e, 0x114a, 0x1156, 0x116b, 0x1177, 0x1189, 0x1195, 0x11ae,
- 0x11ae, 0x11ae, 0x11bd, 0x11c9, 0x11d5, 0x11e1, 0x11f3, 0x11fc,
- 0x1208, 0x1214, 0x121d, 0x1229, 0x1232, 0x1241, 0x125b, 0x125b,
- // Entry 180 - 1BF
- 0x125b, 0x1267, 0x1267, 0x1270, 0x1279, 0x1289, 0x1289, 0x129c,
- 0x12ab, 0x12b4, 0x12bd, 0x12c9, 0x12d2, 0x12d2, 0x12d2, 0x12de,
- 0x12e7, 0x12f0, 0x12fc, 0x1308, 0x1314, 0x1320, 0x1329, 0x1335,
- 0x1341, 0x134a, 0x1353, 0x1362, 0x1379, 0x138f, 0x1398, 0x13a4,
- 0x13b3, 0x13bc, 0x13cb, 0x13d7, 0x13e0, 0x13f0, 0x13f9, 0x1406,
- 0x1412, 0x141e, 0x142d, 0x142d, 0x1439, 0x1445, 0x1457, 0x1457,
- 0x1463, 0x146c, 0x147c, 0x1488, 0x1494, 0x14a0, 0x14a0, 0x14af,
- 0x14be, 0x14ca, 0x14de, 0x14de, 0x14e7, 0x14f9, 0x1505, 0x151a,
- // Entry 1C0 - 1FF
- 0x1529, 0x1535, 0x153e, 0x154a, 0x1559, 0x156d, 0x157c, 0x1588,
- 0x1594, 0x15a6, 0x15b5, 0x15b5, 0x15b5, 0x15b5, 0x15cb, 0x15cb,
- 0x15da, 0x15da, 0x15e3, 0x15ef, 0x15ef, 0x1605, 0x160e, 0x160e,
- 0x161d, 0x1629, 0x1638, 0x1638, 0x1638, 0x1641, 0x164a, 0x164a,
- 0x1653, 0x1653, 0x1665, 0x166e, 0x167a, 0x1686, 0x169c, 0x16a8,
- 0x16b4, 0x16c0, 0x16c0, 0x16cf, 0x16d8, 0x16e7, 0x16f9, 0x16f9,
- 0x170c, 0x1718, 0x1721, 0x1721, 0x172d, 0x1746, 0x175a, 0x175a,
- 0x1769, 0x176f, 0x1788, 0x1794, 0x1794, 0x1794, 0x17a4, 0x17b4,
- // Entry 200 - 23F
- 0x17c7, 0x17da, 0x17e6, 0x17f5, 0x1808, 0x1814, 0x181d, 0x181d,
- 0x182c, 0x1835, 0x1841, 0x184d, 0x1863, 0x1878, 0x1884, 0x1884,
- 0x1884, 0x188d, 0x1896, 0x18a2, 0x18ab, 0x18b7, 0x18c0, 0x18d5,
- 0x18e1, 0x18ed, 0x18fc, 0x1908, 0x1914, 0x192f, 0x193f, 0x193f,
- 0x194b, 0x194b, 0x195a, 0x195a, 0x1966, 0x1972, 0x1981, 0x1990,
- 0x19b0, 0x19bf, 0x19ce, 0x19da, 0x19e0, 0x19e9, 0x19e9, 0x19e9,
- 0x19e9, 0x19e9, 0x19f2, 0x19f2, 0x19fb, 0x1a04, 0x1a10, 0x1a1c,
- 0x1a25, 0x1a31, 0x1a31, 0x1a3d, 0x1a3d, 0x1a46, 0x1a52, 0x1a5e,
- // Entry 240 - 27F
- 0x1a67, 0x1a70, 0x1a70, 0x1a70, 0x1a7f, 0x1a8f, 0x1a8f, 0x1a9b,
- 0x1abb, 0x1ac4, 0x1adf, 0x1ae8, 0x1aff, 0x1aff, 0x1aff, 0x1b1a,
- 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28,
- 0x1b28, 0x1b28, 0x1b28, 0x1b34, 0x1b34, 0x1b34, 0x1b40, 0x1b5f,
-} // Size: 1240 bytes
-
-var kyLangStr string = "" + // Size: 3906 bytes
- "абхазчаафрикаанчааканчаамхарчаарабчаассамчаазербайжанчабашкырчабеларусча" +
- "болгарчабамбарадабангладешчетибетчебретончобоснийчекаталанчачеченчекорс" +
- "иканчачехчечувашчауелшчедатчанемисчежонгучаэбечегрекчеанглисчеэсперанто" +
- "испанчаэстончобаскчафарсчафинчефижичефароэчефранцузчабатыш фризчеирланд" +
- "чагалисиячагуарашгужаратчаманксычахаусачаивриттехиндичехорватчагаитичем" +
- "ажарчаармянчаиндонезчеигбочоносучаисландчаиталиянчаинуктитуттаяпончожав" +
- "анизчегрузинчекикуйичеказакчакалаалисутчакмерчеканнадачакорейчекашмирче" +
- "курдчакорнишчекыргызчалатынчалюксембургчагандачалингалачалаочолитовчолу" +
- "ба-катангачалатышчамалагасчамаоричемакедончомалайаламчамоңголчомаратиче" +
- "малайчамалтизчебурмачатүндүк ндыбелченепалчаголландчанорвежче (Нинорск)" +
- "норвежче (Букмал)оромочоориячапунжабичеполякчапашточопортугалчакечуачар" +
- "оманшчарундичерумынчаорусчаруандачасанскритчесиндхичетүндүк самичесанго" +
- "чосингалачасловакчасловенчешоначасомаличеалбанчасербчесесотосунданчашве" +
- "дчесуахиличетамилчетелугучатажикчетайчатигриниачатүркмөнчөтонгачатүркчө" +
- "татарчауйгурчаукраинчеурдучаөзбекчевьетнамчауолофчокосачаидишчейорубача" +
- "кытайчазулучаагемчемапучедеасучабембачабеначачыгыш балучичебододочигача" +
- "черокичесорани курдтаитачазамрачатөмөнкү сорбианчадуалачажола-фоничеэмб" +
- "учафилипиногагаузчанемисче (Швейцария)гусичегавайчажогорку сорбианчанго" +
- "мбачамачамечекабылчакамбачамакондечекабувердичекойра чиничекаленжичеком" +
- "и-пермякчаконканичешамабалачабафиячалангичелакотачатүндүк луричелуочолу" +
- "хиячамасайчамеручаморисианчамакуачаметөчөмохаукчамундангчамазандераниче" +
- "намачатөмөнкү немисчеквасиочонкочонуерченыйанколчокичечеромбочоруачасам" +
- "буручасангучатүштүк курдчасеначакойраборо сенничеташелитчетүштүк саамич" +
- "елөлө саамичеинари саамическолт саамичеконго суахаличетесочоклингончота" +
- "сабакчаборбордук Атлас тамазитчебелгисиз тилдевайичевунжочоворлпиричесо" +
- "гачамарокко тамазигт адабий тилиндетилдик мазмун жоказыркы адабий араб " +
- "тилиндеиспанча (Европа)төмөнкү саксончофламандчапортугалча (Европа)молд" +
- "ованчасерб-хорваткытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)"
-
-var kyLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000e, 0x000e, 0x0022, 0x002e, 0x003c, 0x003c,
- 0x0048, 0x0056, 0x0056, 0x0056, 0x006e, 0x007e, 0x0090, 0x00a0,
- 0x00a0, 0x00b2, 0x00c8, 0x00d6, 0x00e6, 0x00f6, 0x0108, 0x0116,
- 0x0116, 0x012a, 0x012a, 0x0134, 0x0134, 0x0142, 0x014e, 0x0158,
- 0x0166, 0x0166, 0x0174, 0x017e, 0x018a, 0x019a, 0x01ac, 0x01ba,
- 0x01c8, 0x01d4, 0x01e0, 0x01e0, 0x01ea, 0x01f6, 0x0204, 0x0216,
- 0x022d, 0x023d, 0x023d, 0x024f, 0x025b, 0x026d, 0x027d, 0x028b,
- 0x0299, 0x02a7, 0x02a7, 0x02b7, 0x02c5, 0x02d3, 0x02e1, 0x02e1,
- // Entry 40 - 7F
- 0x02e1, 0x02f3, 0x02f3, 0x02ff, 0x030b, 0x030b, 0x030b, 0x031b,
- 0x032d, 0x0343, 0x034f, 0x0361, 0x0371, 0x0371, 0x0381, 0x0381,
- 0x038f, 0x03a7, 0x03b3, 0x03c5, 0x03d3, 0x03d3, 0x03e3, 0x03ef,
- 0x03ef, 0x03ff, 0x040f, 0x041d, 0x0435, 0x0443, 0x0443, 0x0455,
- 0x045f, 0x046d, 0x0488, 0x0496, 0x04a8, 0x04a8, 0x04b6, 0x04c8,
- 0x04de, 0x04ee, 0x04fe, 0x050c, 0x051c, 0x052a, 0x052a, 0x0547,
- 0x0555, 0x0555, 0x0567, 0x0588, 0x05a7, 0x05a7, 0x05a7, 0x05a7,
- 0x05a7, 0x05a7, 0x05b5, 0x05c1, 0x05c1, 0x05d3, 0x05d3, 0x05e1,
- // Entry 80 - BF
- 0x05ef, 0x0603, 0x0611, 0x0621, 0x062f, 0x063d, 0x0649, 0x0659,
- 0x066d, 0x066d, 0x067d, 0x0696, 0x06a4, 0x06b6, 0x06c6, 0x06d6,
- 0x06d6, 0x06e2, 0x06f2, 0x0700, 0x070c, 0x070c, 0x0718, 0x0728,
- 0x0734, 0x0746, 0x0754, 0x0764, 0x0772, 0x077c, 0x0790, 0x07a2,
- 0x07a2, 0x07b0, 0x07bc, 0x07bc, 0x07ca, 0x07ca, 0x07d8, 0x07e8,
- 0x07f4, 0x0802, 0x0802, 0x0814, 0x0814, 0x0814, 0x0822, 0x082e,
- 0x083a, 0x084a, 0x084a, 0x0858, 0x0864, 0x0864, 0x0864, 0x0864,
- 0x0864, 0x0864, 0x0864, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- // Entry C0 - FF
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0880, 0x0880, 0x0880,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x088a, 0x088a, 0x088a, 0x088a,
- 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a,
- 0x088a, 0x0898, 0x0898, 0x08a4, 0x08a4, 0x08a4, 0x08bf, 0x08bf,
- 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf,
- 0x08bf, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb,
- 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08d7, 0x08d7, 0x08d7,
- 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08e7, 0x08e7, 0x08fc,
- // Entry 100 - 13F
- 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x090a, 0x090a,
- 0x090a, 0x090a, 0x090a, 0x0918, 0x0918, 0x0939, 0x0939, 0x0947,
- 0x0947, 0x095c, 0x095c, 0x095c, 0x0968, 0x0968, 0x0968, 0x0968,
- 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0978,
- 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978,
- 0x0978, 0x0978, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988,
- 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988,
- 0x0988, 0x0988, 0x09ab, 0x09ab, 0x09ab, 0x09b7, 0x09b7, 0x09b7,
- // Entry 140 - 17F
- 0x09b7, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09e6, 0x09e6,
- 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6,
- 0x09f6, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a14, 0x0a14,
- 0x0a14, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a34, 0x0a4a,
- 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a61, 0x0a61, 0x0a61,
- 0x0a61, 0x0a73, 0x0a73, 0x0a8c, 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e,
- 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e, 0x0ab2, 0x0ac0, 0x0ac0, 0x0ac0,
- 0x0ac0, 0x0ac0, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace,
- // Entry 180 - 1BF
- 0x0ace, 0x0ade, 0x0ade, 0x0ade, 0x0ade, 0x0af7, 0x0af7, 0x0af7,
- 0x0af7, 0x0af7, 0x0b01, 0x0b01, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f,
- 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b1d, 0x0b1d, 0x0b1d,
- 0x0b1d, 0x0b1d, 0x0b29, 0x0b3d, 0x0b3d, 0x0b4b, 0x0b57, 0x0b57,
- 0x0b57, 0x0b57, 0x0b57, 0x0b67, 0x0b67, 0x0b67, 0x0b79, 0x0b79,
- 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b93, 0x0b93,
- 0x0b93, 0x0b9f, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bcc,
- 0x0bcc, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bd6, 0x0bd6, 0x0be2, 0x0be2,
- // Entry 1C0 - 1FF
- 0x0be2, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6,
- 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6,
- 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0c02, 0x0c02,
- 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c10, 0x0c10, 0x0c10,
- 0x0c10, 0x0c10, 0x0c10, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c2c,
- 0x0c2c, 0x0c2c, 0x0c2c, 0x0c2c, 0x0c3a, 0x0c3a, 0x0c3a, 0x0c3a,
- 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c80, 0x0c80, 0x0c80,
- 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0cad, 0x0cc4,
- // Entry 200 - 23F
- 0x0cdd, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6,
- 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0d13, 0x0d13, 0x0d13, 0x0d13,
- 0x0d13, 0x0d13, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f,
- 0x0d1f, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31,
- 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d43, 0x0d43,
- 0x0d73, 0x0d73, 0x0d73, 0x0d73, 0x0d8e, 0x0d9a, 0x0d9a, 0x0d9a,
- 0x0d9a, 0x0d9a, 0x0d9a, 0x0d9a, 0x0da8, 0x0da8, 0x0da8, 0x0da8,
- 0x0da8, 0x0dbc, 0x0dbc, 0x0dbc, 0x0dbc, 0x0dc8, 0x0dc8, 0x0dc8,
- // Entry 240 - 27F
- 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8,
- 0x0e03, 0x0e03, 0x0e23, 0x0e23, 0x0e54, 0x0e54, 0x0e54, 0x0e54,
- 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e71, 0x0e71, 0x0e71,
- 0x0e71, 0x0e71, 0x0e90, 0x0ea2, 0x0ea2, 0x0ec5, 0x0ed9, 0x0eee,
- 0x0f23, 0x0f42,
-} // Size: 1244 bytes
-
-var loLangStr string = "" + // Size: 10775 bytes
- "ອະຟາແອບຄາຊຽນອາເວັສແຕນອາຟຣິການອາການອຳຮາຣິກອາຣາໂກເນັດອາຣັບອັສຊາມີສອາວາຣິກອ" +
- "າຍມາລາອາເຊີໄບຈານິບາຣກີເບລາຣັສຊຽນບັງກາຣຽນບິສລະມາບາມບາຣາເບັງກາລີທິເບທັນເ" +
- "ບຣຕັນບອສນຽນຄາຕາລານຊີເຄນຊາມໍໂຣຄໍຊິກາຄີເຊກໂບດສລາວິກຊູວາຊເວວແດນິຊເຢຍລະມັນ" +
- "ດີວີຮີດີຊອງຄາອິວາກຣີກອັງກິດເອສປາຍສະແປນນິຊເອສໂຕນຽນບັສກີເປີຊຽນຟູລາຟິນນິຊ" +
- "ຟິຈຽນຟາໂຣສຝຣັ່ງຟຣິຊຽນ ຕາເວັນຕົກໄອຣິສສະກັອດເກລິກກາລິຊຽນກົວຣານີກູຈາຣາຕິແ" +
- "ມງຊ໌ເຮົາຊາຮີບຣິວຮິນດິຮິຣິໂມຕູໂຄຣເອທຽນໄຮຕຽນຮັງກາຣຽນອາເມນຽນເຮິຮິໂຣອິນເຕີ" +
- "ລິງລົວອິນໂດເນຊຽນອິນເຕີລິງກຣີອິກໂບເຊສວຍຢີອິນນູປຽກອີໂດໄອສແລນດິກອິຕາລຽນອິ" +
- "ນນຸກຕິຕັດຍີ່ປຸ່ນຈາແວນີສຈໍຈຽນຄອງໂກຄິຄູຢຸກວນຍາມາຄາຊັກກຣີນແລນລິດຂະເໝນຄັນນ" +
- "າດາເກົາຫລີຄານຸລິຄາສເມຍຣິເຄີດິສໂຄມິຄໍນິຊເກຍກີສລາຕິນລັກເຊມບວກກິຊແກນດາລິມ" +
- "ເບີກີຊລິງກາລາລາວລິທົວນຽນລູບາ-ຄາຕັງກາລັດວຽນມາລາກາສຊີມາຊານເລັດມາວຣິແມັກເ" +
- "ຊໂດນຽນມາເລອາລຳມອງໂກເລຍມາຣາທີມາເລມອລທີສມຽນມານາຢູລູເອັນເດເບເລເໜືອເນປາລີເ" +
- "ອັນດອງກາດັຊນໍເວຈຽນ ນີນອກນໍເວຈຽນ ບັອກມອລນີບີລີໃຕ້ນາວາໂຈນານຈາອັອກຊີຕານໂອ" +
- "ຈິບວາໂອໂຣໂມໂອຣິຢາອອດເຊຕິກປັນຈາບີປາລີໂປລິຊປາສໂຕປອກຕຸຍກິສຄີຊົວໂຣແມນຊ໌ຣຸນ" +
- "ດິໂຣແມນຽນລັດເຊຍຄິນຢາວານດາສັນສະກຣິດສາດີນຽນສິນທິຊາມິເໜືອແຊງໂກສິນຫາລາສະໂລ" +
- "ແວັກສະໂລເວນຽນຊາມົວໂຊນາໂຊມາລີອານບານຽນເຊີບຽນຊຣາຕິໂຊໂທໃຕ້ຊຸນແດນນີສສະວີດິຊ" +
- "ຊວາຮີລິທາມິລເຕລູກູທາຈິກໄທຕິກຣິນຢາເທີກເມັນເຕສະວານາທອງການເທີຄິຊເຕຊອງກາທາ" +
- "ທາຕາຮີຕຽນອຸຍເຄີຢູເຄຣນຽນອູຣດູອຸສເບກເວນດາຫວຽດນາມໂວລາພັກວໍລູມວໍລອບໂຮຊາຢິວ" +
- "ໂຢຣູບາຊວາງຈີນຊູລູແອັກຊີເນັສອາໂຄລີອາແດງມີເອດີຮິແອຟີຮີລີອາເຮັມໄອນູອັກກາດ" +
- "ຽມອາເລີດອານໄຕໃຕ້ອັງກິດໂບຮານແອນຈີກາອາລາມິກອາຣົວຄານຽນອາຣາປາໂຮອາຣາແວກອາຊູ" +
- "ອັສຕູຮຽນອາວາຮິບາລູຊີບາລີເນັດບາຊາບາມຸນໂຄມາລາບີເຈເບັມບາບີນາບາຟັດບາໂລຈີ ພ" +
- "າກຕາເວັນຕົກໂບພູຣິບີຄອນບີນີກົມຊິກຊິກາບຣາໂບດູອາຄຸດບູຣຽດບູຈີເນັດບູລູບລິນເ" +
- "ມດູມບາແຄດໂດຄາຣິບຄາຢູກາອາດແຊມຊີບູໂນຊີກາຊິບຊາຊາກາໄຕຊູເກດມາຣິຊີນຸກຈາກອນຊອ" +
- "ກຕິວຊີພິວຢານຊີໂຣກີຊີເຢນນີໂຊຣານິ ເຄີດິຊຄອບຕິກຄຣີເມນເຕີຄິຊກາຊູບຽນດາໂກຕາດ" +
- "າກວາໄຕຕາເດລາວາຊີເລັບໂດກຣິບດິນກາຊາມາດອກຣີຊໍບຽນຕໍ່ກວ່າດົວລາດັກກາງໂຈລາ-ຟອ" +
- "ນຢີດູລາດາຊາກາເອັມບູອີຟິກອີຢິບບູຮານອີກາຈັກອີລາໄມອັງກິດກາງອີວອນດູແຟງຟີລິ" +
- "ປີໂນຟອນຟຮັ່ງເສດກາງຟຮັ່ງເສດໂບຮານຟຣີຊຽນເໜືອຟຣີຊຽນຕາເວັນອອກຟຣີລຽນກາກາກາອຸ" +
- "ຊກາໂຢບາຍາກີກິນເບີເທັດເຢຍລະມັນສູງກາງເຢຍລະມັນສູງໂບຮານກອນດີໂກຣອນຕາໂຣກອດຮິ" +
- "ກກຣີໂບແອນຊຽນກຣີກສະວິສ ເຈີແມນກູຊິວິດອິນໄຮດາຮາໄວອຽນຮິຣິໄກນອນຮິດໄຕມອງຊໍບຽ" +
- "ນ ທາງຕອນເໜືອຮູປາໄອບານໄອໄບໄບໂອໄອໂລໂກອິນກັຊໂລບບັນງອມບາມາແຊມຈູແດວ-ເພີຊຽນຈ" +
- "ູແດວ-ອາລາບິກກາຣາ-ການປາກກາໄບລ໌ກາຊິນຈຣູກາມບາກະວີກາບາດຽນຄາແນມບູຕີບມາຄອນເດ" +
- "ຄາເວີເດຍນູໂຄໂລຄາສິໂຄຕັນຄອຍຣາ ຊິນີຄາໂກຄາເລັນຈິນຄິມບັນດູໂຄມີ-ເພີມຢັກກອນກ" +
- "ານີຄູສໄລກາແປຣກາຣາໄຊ-ບານກາກາເຣລຽນກູຣູກຊຳບາລ້າບາເຟຍໂຄລອກນຽນຄູມີກຄູເທໄນລາ" +
- "ດີໂນແລນກິລານດາແລມບາລີຊຽນລາໂກຕາແມັງໂກ້ໂລຊິລູຣິ ທາງຕອນເໜືອລູບາ-ລູລົວລູເຊ" +
- "ໂນລຸນດາລົວລູໄຊລູໄຍມາດູລາມາຟາມາກາຮິໄມທີລິມາກາຊາຣມັນດິງກາມາໄຊມາບາມອກຊາມາ" +
- "ນດາຣເມນເດເມຣູມໍຣິສເຢນໄອລິດກາງມາຄູວາ-ມີດໂຕເມທາມິກແມກທີແນງກາບູແມນຈູມານີພ" +
- "ູຣິໂມຫາມອສຊີມັນດັງຫລາຍພາສາຄຣິກມີລັນດາມາວາຣິມໍຢິນເອີຍາມາແຊນເດີລັງນາໂປລີ" +
- "ນາມາເຢຍລະມັນ ຕອນໄຕ້ນີວາຣິນີ່ອັດນີ່ອູກວາຊີໂອຈີ່ມບູນນໍໄກນໍໂບຮານເອັນໂກໂຊໂ" +
- "ທເໜືອເນີເນວາດັ້ງເດີມນາມວີຊິນານຄອນໂນໂຣນິມາໂອແຊກຕູກີອອດໂຕມັນປານກາຊີມານພາ" +
- "ລາວີປາມປານກາປາມເປຍເມັນໂທປາລົວອານເປີເຊຍໂບຮານຟີນີເຊຍພອນເພໂປວອງຊານໂບຮານKʼ" +
- "icheʼຣາຈັສທານິຣາປານຸຍຣາໂຣທອນການຣົມໂບໂຣເມນີອາໂຣມານຽນອາຣວາຊັນດາວຊາກາສາມາຣິ" +
- "ແຕນ-ຊຳບູຣູຊາຊັກຊານທາລິກຳເບຊານກູຊີຊິລີນສກອດພາກໄຕ້ ຂອງ ກູດິດຊີນາເຊນຄັບໂຄ" +
- "ຍຣາໂບໂຣ ເຊນນິອີຣິຊເກົ່າທາເຊວຫິດໄທໃຫ່ຍອາລັບ-ຊາດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາ" +
- "ຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂ" +
- "ນຣຽນຄອງໂກ ຊວາຮີລິຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູມໄທກຣີຕີວໂຕເກ" +
- "ເລົາຄຣິງກອນທລີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີແອນຕຳບູກາຕູວາ" +
- "ລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູລູດໄວໂວຕິກວັນໂຈວ" +
- "າເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແຍງເບນແຢມບາກວາງຕຸ້ງຊາໂປແຕບສ" +
- "ັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານຊູນີບໍ່ມີເນື້ອຫາພາສາຊາຊາອ" +
- "າຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ ໄຮ ເຈີແມນອັງກິດ (ໂອດສະຕາລ" +
- "ີ)ອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມຣິກັນ ສະແປນນິຊສະເປັນ ຢຸໂ" +
- "ຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິສ ບະເລຊີ່ນປອກ" +
- "ຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຈີນແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ"
-
-var loLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0024, 0x003f, 0x0057, 0x0066, 0x007b, 0x0099,
- 0x00a8, 0x00c0, 0x00d5, 0x00ea, 0x010b, 0x011a, 0x0138, 0x0150,
- 0x0165, 0x017a, 0x0192, 0x01a7, 0x01b9, 0x01cb, 0x01e0, 0x01ef,
- 0x0201, 0x0213, 0x0219, 0x0222, 0x023d, 0x024c, 0x0255, 0x0264,
- 0x027c, 0x028e, 0x02a3, 0x02af, 0x02bb, 0x02cd, 0x02df, 0x02f7,
- 0x030f, 0x031e, 0x0330, 0x033c, 0x034e, 0x035d, 0x036c, 0x037b,
- 0x03a9, 0x03b8, 0x03d9, 0x03ee, 0x0403, 0x041b, 0x042a, 0x043c,
- 0x044e, 0x045d, 0x0475, 0x048d, 0x049c, 0x04b4, 0x04c9, 0x04de,
- // Entry 40 - 7F
- 0x0502, 0x0520, 0x0544, 0x0553, 0x0568, 0x0580, 0x058c, 0x05a7,
- 0x05bc, 0x05dd, 0x05f2, 0x0607, 0x0616, 0x0625, 0x0637, 0x064c,
- 0x065b, 0x0679, 0x0688, 0x069d, 0x06b2, 0x06c4, 0x06dc, 0x06ee,
- 0x06fa, 0x0709, 0x071b, 0x072a, 0x074e, 0x075d, 0x0778, 0x078d,
- 0x0796, 0x07ae, 0x07d0, 0x07e2, 0x07fd, 0x0818, 0x0827, 0x0848,
- 0x0860, 0x0878, 0x088a, 0x0896, 0x08a8, 0x08b7, 0x08c9, 0x08f3,
- 0x0905, 0x0920, 0x0929, 0x094e, 0x0979, 0x0994, 0x09a6, 0x09b5,
- 0x09d0, 0x09e5, 0x09f7, 0x0a09, 0x0a21, 0x0a36, 0x0a42, 0x0a51,
- // Entry 80 - BF
- 0x0a60, 0x0a7b, 0x0a8a, 0x0a9f, 0x0aae, 0x0ac3, 0x0ad5, 0x0af3,
- 0x0b0e, 0x0b23, 0x0b32, 0x0b4a, 0x0b59, 0x0b6e, 0x0b86, 0x0ba1,
- 0x0bb0, 0x0bbc, 0x0bce, 0x0be6, 0x0bf8, 0x0c07, 0x0c1c, 0x0c37,
- 0x0c4c, 0x0c61, 0x0c70, 0x0c82, 0x0c91, 0x0c97, 0x0caf, 0x0cc7,
- 0x0cdf, 0x0cf1, 0x0d03, 0x0d18, 0x0d24, 0x0d39, 0x0d4b, 0x0d63,
- 0x0d72, 0x0d84, 0x0d93, 0x0da8, 0x0dbd, 0x0dcc, 0x0ddb, 0x0de7,
- 0x0df0, 0x0e02, 0x0e0e, 0x0e17, 0x0e23, 0x0e41, 0x0e53, 0x0e68,
- 0x0e7a, 0x0e7a, 0x0e92, 0x0ea4, 0x0eb0, 0x0ec8, 0x0ec8, 0x0eda,
- // Entry C0 - FF
- 0x0eda, 0x0ef2, 0x0f13, 0x0f28, 0x0f3d, 0x0f5b, 0x0f5b, 0x0f73,
- 0x0f73, 0x0f88, 0x0f88, 0x0f88, 0x0f94, 0x0f94, 0x0fac, 0x0fac,
- 0x0fbe, 0x0fd0, 0x0fe8, 0x0fe8, 0x0ff4, 0x1003, 0x1003, 0x1015,
- 0x1021, 0x1033, 0x1033, 0x103f, 0x104e, 0x104e, 0x1085, 0x1097,
- 0x10a6, 0x10b2, 0x10b2, 0x10bb, 0x10d0, 0x10d0, 0x10d0, 0x10d9,
- 0x10d9, 0x10e5, 0x10f4, 0x1103, 0x111b, 0x1127, 0x1133, 0x1148,
- 0x1157, 0x1166, 0x1178, 0x118a, 0x119c, 0x11a8, 0x11b7, 0x11c9,
- 0x11d8, 0x11e4, 0x1202, 0x1214, 0x122c, 0x123e, 0x1253, 0x1278,
- // Entry 100 - 13F
- 0x128a, 0x128a, 0x12ae, 0x12c3, 0x12d5, 0x12e4, 0x12f0, 0x1302,
- 0x1314, 0x1326, 0x1335, 0x1341, 0x1350, 0x1374, 0x1374, 0x1383,
- 0x1395, 0x13b1, 0x13bd, 0x13cf, 0x13e1, 0x13f0, 0x13f0, 0x140e,
- 0x1423, 0x1435, 0x1450, 0x1450, 0x1465, 0x1465, 0x146e, 0x1486,
- 0x1486, 0x148f, 0x148f, 0x14b0, 0x14d7, 0x14d7, 0x14f5, 0x1522,
- 0x1534, 0x153a, 0x154f, 0x154f, 0x155b, 0x1567, 0x1567, 0x156d,
- 0x158b, 0x158b, 0x15b5, 0x15e5, 0x15e5, 0x15f4, 0x160f, 0x1621,
- 0x1630, 0x164e, 0x1670, 0x1670, 0x1670, 0x167c, 0x168e, 0x169a,
- // Entry 140 - 17F
- 0x169a, 0x16af, 0x16af, 0x16ca, 0x16d9, 0x16e2, 0x1710, 0x1710,
- 0x171c, 0x172b, 0x1743, 0x1755, 0x1767, 0x1767, 0x1767, 0x1779,
- 0x1788, 0x1797, 0x17b9, 0x17de, 0x17de, 0x17fd, 0x180f, 0x181e,
- 0x1827, 0x1836, 0x1842, 0x1857, 0x186c, 0x1875, 0x188a, 0x18a8,
- 0x18a8, 0x18b4, 0x18b4, 0x18c0, 0x18cf, 0x18eb, 0x18eb, 0x18eb,
- 0x18f7, 0x1912, 0x192a, 0x194c, 0x1961, 0x1970, 0x197f, 0x19a1,
- 0x19a1, 0x19a1, 0x19b6, 0x19c5, 0x19da, 0x19e9, 0x1a01, 0x1a10,
- 0x1a22, 0x1a34, 0x1a43, 0x1a52, 0x1a61, 0x1a70, 0x1a70, 0x1a70,
- // Entry 180 - 1BF
- 0x1a70, 0x1a82, 0x1a82, 0x1a97, 0x1aa3, 0x1ace, 0x1ace, 0x1aea,
- 0x1afc, 0x1b0b, 0x1b14, 0x1b20, 0x1b2c, 0x1b2c, 0x1b2c, 0x1b3e,
- 0x1b4a, 0x1b5c, 0x1b6e, 0x1b83, 0x1b9b, 0x1ba7, 0x1bb3, 0x1bc2,
- 0x1bd4, 0x1be3, 0x1bef, 0x1c07, 0x1c1f, 0x1c41, 0x1c4d, 0x1c5f,
- 0x1c7a, 0x1c89, 0x1ca1, 0x1cad, 0x1cbc, 0x1cbc, 0x1cce, 0x1ce6,
- 0x1cf2, 0x1d07, 0x1d19, 0x1d19, 0x1d28, 0x1d37, 0x1d58, 0x1d58,
- 0x1d6a, 0x1d76, 0x1da1, 0x1db3, 0x1dc5, 0x1dd4, 0x1dd4, 0x1de9,
- 0x1dfe, 0x1e0a, 0x1e1f, 0x1e1f, 0x1e31, 0x1e49, 0x1e52, 0x1e76,
- // Entry 1C0 - 1FF
- 0x1e8b, 0x1e9d, 0x1ea9, 0x1eb5, 0x1ec4, 0x1ee8, 0x1f06, 0x1f18,
- 0x1f30, 0x1f54, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f8d, 0x1f8d,
- 0x1fa2, 0x1fa2, 0x1fa2, 0x1fb1, 0x1fb1, 0x1fd8, 0x1fe1, 0x1fe1,
- 0x1ffc, 0x2011, 0x202f, 0x202f, 0x202f, 0x203e, 0x2050, 0x2050,
- 0x2050, 0x2050, 0x206b, 0x207a, 0x208c, 0x2098, 0x20b4, 0x20c6,
- 0x20d5, 0x20ea, 0x20ea, 0x20f6, 0x2105, 0x211a, 0x2126, 0x2126,
- 0x2152, 0x2152, 0x215e, 0x215e, 0x2170, 0x219b, 0x21b9, 0x21b9,
- 0x21d1, 0x21e3, 0x21fc, 0x220e, 0x220e, 0x220e, 0x2223, 0x2238,
- // Entry 200 - 23F
- 0x2256, 0x226e, 0x2283, 0x2295, 0x22b9, 0x22c8, 0x22d4, 0x22d4,
- 0x22e9, 0x22f5, 0x230d, 0x2322, 0x2347, 0x2377, 0x2386, 0x2386,
- 0x2386, 0x2395, 0x23a1, 0x23b3, 0x23c2, 0x23d1, 0x23da, 0x23f2,
- 0x23f2, 0x2407, 0x241c, 0x241c, 0x2434, 0x2458, 0x2470, 0x2470,
- 0x2482, 0x2482, 0x249a, 0x249a, 0x24ac, 0x24be, 0x24d3, 0x24e8,
- 0x251a, 0x252c, 0x2541, 0x2556, 0x255f, 0x2565, 0x2565, 0x2565,
- 0x2565, 0x2565, 0x2574, 0x2574, 0x2583, 0x2592, 0x25a4, 0x25b0,
- 0x25bc, 0x25d1, 0x25d1, 0x25e3, 0x25e3, 0x25ef, 0x25fe, 0x2607,
- // Entry 240 - 27F
- 0x2619, 0x2628, 0x2628, 0x2640, 0x2655, 0x267f, 0x267f, 0x2691,
- 0x26db, 0x26e7, 0x2717, 0x2723, 0x2765, 0x2765, 0x2795, 0x27be,
- 0x27ee, 0x27ee, 0x2818, 0x2848, 0x288c, 0x28ae, 0x28e2, 0x28e2,
- 0x2902, 0x2902, 0x2921, 0x2933, 0x2967, 0x2992, 0x29a7, 0x29c6,
- 0x29ed, 0x2a17,
-} // Size: 1244 bytes
-
-var ltLangStr string = "" + // Size: 5831 bytes
- "afarųabchazųavestųafrikanųakanųamharųaragonesųarabųasamųavarikųaimarųaze" +
- "rbaidžaniečiųbaškirųbaltarusiųbulgarųbislamabambarųbengalųtibetiečiųbret" +
- "onųbosniųkatalonųčečėnųčamorųkorsikiečiųkryčekųbažnytinė slavųčiuvašųval" +
- "ųdanųvokiečiųdivehibotijųeviųgraikųanglųesperantoispanųestųbaskųpersųfu" +
- "lahųsuomiųfidžiųfarerųprancūzųvakarų fryzųairiųškotų (gėlų)galisųgvarani" +
- "ųgudžaratųmeniečiųhausųhebrajųhindihiri motukroatųHaičiovengrųarmėnųher" +
- "erointerlingvaindoneziečiųinterkalbaigbųsičuan jiinupiakidoislandųitalųi" +
- "nukitutjaponųjaviečiųgruzinųKongokikujųkuaniamakazachųkalalisutkhmerųkan" +
- "adųkorėjiečiųkanurikašmyrųkurdųkomikornųkirgizųlotynųliuksemburgiečiųgan" +
- "dalimburgišngalųlaosiečiųlietuviųluba katangalatviųmalagasųMaršalo Salųm" +
- "aoriųmakedonųmalajaliųmongolųmaratųmalajiečiųmaltiečiųbirmiečiųnaurųšiau" +
- "rės ndebelųnepaliečiųndongųolandųnaujoji norvegųNorvegijos rašytinė – bū" +
- "kmolųpietų ndebelenavajųnianjaočitarųojibvaoromųorijųosetinųpendžabųpali" +
- "lenkųpuštūnųportugalųkečujųretoromanųrundirumunųrusųkinjaruandųsanskrita" +
- "ssardiniečiųsindųšiaurės samiųsangosinhalųslovakųslovėnųsamoašonųsomalie" +
- "čiųalbanųserbųsvatipietų sesutosundųšvedųsuahiliųtamilųtelugųtadžikųtaj" +
- "ųtigrajųturkmėnųtsvanatonganųturkųtsongatotoriųtaitiečiųuigūrųukrainieč" +
- "iųurdųuzbekųvendavietnamiečiųvolapiukvalonųvolofųkosųjidišjorubųchuangki" +
- "nųzulųačinezųakoliųadangmųadygėjųTuniso arabųafrihiliaghemųainųakadianųa" +
- "labamiečiųaleutųalbanų kalbos gegų tarmėpietų Altajaussenoji anglųangikų" +
- "aramaikųmapudungunųaraonųarapahųAlžyro arabųaravakųMaroko arabųEgipto ar" +
- "abųasuAmerikos ženklų kalbaasturianųkotavaavadhibalučibalinezųbavarųbasų" +
- "bamunųbatak tobaghomalųbėjųbembųbetavibenųbafutųbadagavakarų beludžiųbau" +
- "čpuribikolųbinibandžarųkomųsiksikaBišnuprijosbakhtiaribrajųbrahujųbodoa" +
- "kūsųburiatųbuginezųbulublinmedumbųkadokaribųkaijūgųatsamųcebuanųčigųčibč" +
- "ačagatųčukesųmaričinuk žargonasčoktaučipvėjųčerokiųčajenųsoranių kurdųko" +
- "ptųcapiznonKrymo turkųkašubųdakotųdargvataitųdelaveroslavedogribųdinkųza" +
- "rmųdogrižemutinių sorbųcentrinio DusunodualųVidurio Vokietijosdžiola-fon" +
- "idyulųdazagųembuefikitalų kalbos Emilijos tarmėsenovės egiptiečiųekajuke" +
- "lamitųVidurio Anglijoscentrinės Aliaskos jupikųevondoispanų kalbos Ekstr" +
- "emadūros tarmėfangfilipiniečiųsuomių kalbos Tornedalio tarmėfonkadžunų p" +
- "rancūzųVidurio Prancūzijossenoji prancūzųArpitanošiaurinių fryzųrytų fry" +
- "zųfrulangagagaūzųkinų kalbos dziangsi tarmėgajogbajazoroastrų darigyzkir" +
- "ibatigilakiVidurio Aukštosios VokietijosSenoji Aukštosios VokietijosGoa " +
- "konkaniųgondigorontalogotųgrebosenovės graikųŠveicarijos vokiečiųvajųfra" +
- "fragusigvičinohaidokinų kalbos hakų tarmėhavajiečiųFidžio hindihiligaino" +
- "nhititųhmongaukštutinių sorbųkinų kalbos hunano tarmėhupaibanibibioiloko" +
- "ingušųingrųJamaikos kreolų anglųloibanngombųmačamųjudėjų persųjudėjų ara" +
- "bųdanų kalbos jutų tarmėkarakalpakųkebailųkačinjukembųkavikabardinųkanem" +
- "bųtyapmakondųŽaliojo Kyšulio kreolųkenyangkorokaingangkasikotanezųkojra " +
- "činikhovarųkirmanjkikakokalenjinųkimbundukomių-permiųkonkaniųkosreanųkp" +
- "elekaračiajų balkarijoskriokinaray-akarelųkurukšambalųbafųkolognųkumikųk" +
- "utenailadinolangilandalambalezginųnaujoji frankų kalbaligūrųlyviųlakotųl" +
- "ombardųmongolozišiaurės lurilatgaliųluba lulualuisenolundaluomizolujakla" +
- "sikinė kinųlazmadurezųmafųmagahimaithilimakasaromandingomasajųmabųmokšam" +
- "andarmendemerųmorisijųVidurio Airijosmakua-maetometamikmakminankabumanču" +
- "manipurimohokmosivakarų marimundangųkelios kalboskrykųmirandezųmarvarime" +
- "ntavaimjenųerzyjųmazenderaniųkinų kalbos pietų minų tarmėneapoliečiųnama" +
- "Žemutinės Vokietijosnevariniasniuenųao nagakvasiųngiembūnųnogųnorsunovi" +
- "alenkošiaurės sothųnuerųklasikinė nevariniamveziniankolųnioronzimaosageo" +
- "smanų turkųpangasinanpahlavipampangapapiementopalaupikardųPensilvanijos " +
- "vokiečiųvokiečių kalbos žemaičių tarmėsenoji persųvokiečių kalbos Pfalco" +
- " tarmėfinikiečiųitalų kalbos Pjemonto tarmėPontoPonapėsprūsųsenovės prov" +
- "ansalųkičiųČimboraso aukštumų kečujųradžastanorapanuirarotonganitalų kal" +
- "bos Romanijos tarmėrifųromboromųrotumanųrusinųRovianosaromaniųruasandavi" +
- "jakutųsamarėjų aramiųsambūrųsasaksantalisauraštrųngambajųsangųsiciliečių" +
- "škotųsasaresų sardinųpietų kurdųsenecųsenųseriselkupkojraboro senisenoj" +
- "i airiųžemaičiųtachelhitųšanchadian arabųsidamosileziečių žemaičiųselaja" +
- "rųpietų samiųLulėjo samiųInario samiųSkolto samiųsoninkesogdiensranan to" +
- "ngosererųsahoSaterlendo fryzųsukumasusušumerųKomorųKongo suahiliųklasiki" +
- "nė siriečiųsirųsileziečiųtulųtimnetesoterenotetumtigretivtokelautsakurųk" +
- "lingonųtlingittalyšųtamašekniasa tongostok pisinturoyotarokotsakonųtsimš" +
- "ianmusulmonų tatųtumbukųtuvalutasavakųtuviųCentrinio Maroko tamazitųudmu" +
- "rtųugariticumbundurūtvaivenetųvepsųvakarų flamandųpagrindinė frankonųvot" +
- "ikvõrovunjovalserųvalamovaraivašovalrpirikinų kalbos vu tarmėkalmukųmegr" +
- "elųsogųjaojapezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekų„B" +
- "liss“ simboliųzelandųzenagastandartinė Maroko tamazigtųzuninėra kalbinio" +
- " turiniozazašiuolaikinė standartinė arabųAustrijos vokiečiųŠveicarijos a" +
- "ukštutinė vokiečiųAustralijos anglųKanados anglųDidžiosios Britanijos an" +
- "glųJungtinių Valstijų anglųLotynų Amerikos ispanųEuropos ispanųMeksikos " +
- "ispanųKanados prancūzųŠveicarijos prancūzųŽemutinės Saksonijos (Nyderlan" +
- "dai)flamandųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųsupa" +
- "prastintoji kinųtradicinė kinų"
-
-var ltLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0006, 0x000e, 0x0015, 0x001e, 0x0024, 0x002b, 0x0035,
- 0x003b, 0x0041, 0x0049, 0x0050, 0x0063, 0x006c, 0x0077, 0x007f,
- 0x0086, 0x008e, 0x0096, 0x00a2, 0x00aa, 0x00b1, 0x00ba, 0x00c4,
- 0x00cc, 0x00d9, 0x00dc, 0x00e2, 0x00f4, 0x00fe, 0x0103, 0x0108,
- 0x0112, 0x0118, 0x011f, 0x0124, 0x012b, 0x0131, 0x013a, 0x0141,
- 0x0146, 0x014c, 0x0152, 0x0159, 0x0160, 0x0168, 0x016f, 0x0179,
- 0x0187, 0x018d, 0x019d, 0x01a4, 0x01ad, 0x01b8, 0x01c2, 0x01c8,
- 0x01d0, 0x01d5, 0x01de, 0x01e5, 0x01ec, 0x01f3, 0x01fb, 0x0201,
- // Entry 40 - 7F
- 0x020c, 0x021a, 0x0224, 0x0229, 0x0233, 0x023a, 0x023d, 0x0245,
- 0x024b, 0x0253, 0x025a, 0x0264, 0x026c, 0x0271, 0x0278, 0x0280,
- 0x0288, 0x0291, 0x0298, 0x029f, 0x02ac, 0x02b2, 0x02bb, 0x02c1,
- 0x02c5, 0x02cb, 0x02d3, 0x02da, 0x02ec, 0x02f1, 0x02fb, 0x0301,
- 0x030c, 0x0315, 0x0321, 0x0328, 0x0331, 0x033f, 0x0346, 0x034f,
- 0x0359, 0x0361, 0x0368, 0x0374, 0x037f, 0x038a, 0x0390, 0x03a2,
- 0x03ae, 0x03b5, 0x03bc, 0x03cc, 0x03ef, 0x03fd, 0x0404, 0x040a,
- 0x0413, 0x0419, 0x041f, 0x0425, 0x042d, 0x0437, 0x043b, 0x0441,
- // Entry 80 - BF
- 0x044b, 0x0455, 0x045d, 0x0468, 0x046d, 0x0474, 0x0479, 0x0485,
- 0x048f, 0x049c, 0x04a2, 0x04b2, 0x04b7, 0x04bf, 0x04c7, 0x04d0,
- 0x04d5, 0x04db, 0x04e7, 0x04ee, 0x04f4, 0x04f9, 0x0506, 0x050c,
- 0x0513, 0x051c, 0x0523, 0x052a, 0x0533, 0x0538, 0x0540, 0x054a,
- 0x0550, 0x0558, 0x055e, 0x0564, 0x056c, 0x0577, 0x057f, 0x058c,
- 0x0591, 0x0598, 0x059d, 0x05ab, 0x05b3, 0x05ba, 0x05c1, 0x05c6,
- 0x05cc, 0x05d3, 0x05d9, 0x05de, 0x05e3, 0x05ec, 0x05f3, 0x05fb,
- 0x0604, 0x0611, 0x0619, 0x0620, 0x0625, 0x062e, 0x063b, 0x0642,
- // Entry C0 - FF
- 0x065d, 0x066c, 0x0679, 0x0680, 0x0689, 0x0695, 0x069c, 0x06a4,
- 0x06b2, 0x06ba, 0x06c7, 0x06d4, 0x06d7, 0x06ee, 0x06f8, 0x06fe,
- 0x0704, 0x070b, 0x0714, 0x071b, 0x0720, 0x0727, 0x0731, 0x0739,
- 0x073f, 0x0745, 0x074b, 0x0750, 0x0757, 0x075d, 0x076f, 0x0778,
- 0x077f, 0x0783, 0x078d, 0x0792, 0x0799, 0x07a5, 0x07ae, 0x07b4,
- 0x07bc, 0x07c0, 0x07c7, 0x07cf, 0x07d8, 0x07dc, 0x07e0, 0x07e8,
- 0x07ec, 0x07f3, 0x07fc, 0x0803, 0x080b, 0x0811, 0x0818, 0x0820,
- 0x0828, 0x082c, 0x083c, 0x0843, 0x084d, 0x0856, 0x085e, 0x086d,
- // Entry 100 - 13F
- 0x0873, 0x087b, 0x0887, 0x088f, 0x0896, 0x089c, 0x08a2, 0x08aa,
- 0x08af, 0x08b7, 0x08bd, 0x08c3, 0x08c8, 0x08da, 0x08ea, 0x08f0,
- 0x0902, 0x090e, 0x0914, 0x091b, 0x091f, 0x0923, 0x0940, 0x0955,
- 0x095b, 0x0963, 0x0973, 0x098e, 0x0994, 0x09b8, 0x09bc, 0x09ca,
- 0x09ea, 0x09ed, 0x0a01, 0x0a15, 0x0a26, 0x0a2e, 0x0a40, 0x0a4c,
- 0x0a52, 0x0a54, 0x0a5d, 0x0a79, 0x0a7d, 0x0a82, 0x0a91, 0x0a94,
- 0x0a9c, 0x0aa2, 0x0ac0, 0x0add, 0x0aea, 0x0aef, 0x0af8, 0x0afd,
- 0x0b02, 0x0b12, 0x0b29, 0x0b2e, 0x0b34, 0x0b38, 0x0b40, 0x0b45,
- // Entry 140 - 17F
- 0x0b5e, 0x0b6a, 0x0b77, 0x0b81, 0x0b88, 0x0b8d, 0x0ba1, 0x0bbb,
- 0x0bbf, 0x0bc3, 0x0bc9, 0x0bce, 0x0bd6, 0x0bdc, 0x0bf3, 0x0bf9,
- 0x0c00, 0x0c08, 0x0c17, 0x0c26, 0x0c3f, 0x0c4b, 0x0c53, 0x0c59,
- 0x0c5b, 0x0c61, 0x0c65, 0x0c6f, 0x0c77, 0x0c7b, 0x0c83, 0x0c9c,
- 0x0ca3, 0x0ca7, 0x0caf, 0x0cb3, 0x0cbc, 0x0cc7, 0x0ccf, 0x0cd8,
- 0x0cdc, 0x0ce6, 0x0cee, 0x0cfc, 0x0d05, 0x0d0e, 0x0d13, 0x0d29,
- 0x0d2d, 0x0d36, 0x0d3d, 0x0d42, 0x0d4b, 0x0d50, 0x0d58, 0x0d5f,
- 0x0d66, 0x0d6c, 0x0d71, 0x0d76, 0x0d7b, 0x0d83, 0x0d98, 0x0da0,
- // Entry 180 - 1BF
- 0x0da6, 0x0dad, 0x0db6, 0x0dbb, 0x0dbf, 0x0dcd, 0x0dd6, 0x0de0,
- 0x0de7, 0x0dec, 0x0def, 0x0df3, 0x0df7, 0x0e07, 0x0e0a, 0x0e13,
- 0x0e18, 0x0e1e, 0x0e26, 0x0e2e, 0x0e36, 0x0e3d, 0x0e42, 0x0e48,
- 0x0e4e, 0x0e53, 0x0e58, 0x0e61, 0x0e70, 0x0e7b, 0x0e7f, 0x0e85,
- 0x0e8e, 0x0e94, 0x0e9c, 0x0ea1, 0x0ea5, 0x0eb1, 0x0eba, 0x0ec7,
- 0x0ecd, 0x0ed7, 0x0ede, 0x0ee6, 0x0eec, 0x0ef3, 0x0f00, 0x0f20,
- 0x0f2d, 0x0f31, 0x0f47, 0x0f4d, 0x0f51, 0x0f58, 0x0f5f, 0x0f66,
- 0x0f71, 0x0f76, 0x0f7b, 0x0f81, 0x0f85, 0x0f95, 0x0f9b, 0x0fac,
- // Entry 1C0 - 1FF
- 0x0fb4, 0x0fbd, 0x0fc2, 0x0fc7, 0x0fcc, 0x0fda, 0x0fe4, 0x0feb,
- 0x0ff3, 0x0ffd, 0x1002, 0x100a, 0x1022, 0x1046, 0x1053, 0x1072,
- 0x107e, 0x109b, 0x10a0, 0x10a8, 0x10af, 0x10c3, 0x10ca, 0x10e8,
- 0x10f3, 0x10fa, 0x1104, 0x1122, 0x1127, 0x112c, 0x1131, 0x113a,
- 0x1141, 0x1149, 0x1152, 0x1155, 0x115c, 0x1163, 0x1175, 0x117e,
- 0x1183, 0x118a, 0x1195, 0x119e, 0x11a4, 0x11b0, 0x11b7, 0x11c9,
- 0x11d6, 0x11dd, 0x11e2, 0x11e6, 0x11ec, 0x11fa, 0x1207, 0x1212,
- 0x121d, 0x1221, 0x122f, 0x1235, 0x124d, 0x1256, 0x1263, 0x1271,
- // Entry 200 - 23F
- 0x127e, 0x128b, 0x1292, 0x1299, 0x12a5, 0x12ac, 0x12b0, 0x12c1,
- 0x12c7, 0x12cb, 0x12d3, 0x12da, 0x12e9, 0x12fe, 0x1303, 0x130f,
- 0x1314, 0x1319, 0x131d, 0x1323, 0x1328, 0x132d, 0x1330, 0x1337,
- 0x133f, 0x1348, 0x134f, 0x1357, 0x135f, 0x136b, 0x1374, 0x137a,
- 0x1380, 0x1388, 0x1391, 0x13a1, 0x13a9, 0x13af, 0x13b8, 0x13be,
- 0x13d8, 0x13e0, 0x13e8, 0x13ef, 0x13f3, 0x13f6, 0x13fd, 0x1403,
- 0x1414, 0x1429, 0x142e, 0x1433, 0x1438, 0x1440, 0x1446, 0x144b,
- 0x1450, 0x1458, 0x146e, 0x1476, 0x147e, 0x1483, 0x1486, 0x148d,
- // Entry 240 - 27F
- 0x1496, 0x149c, 0x14a4, 0x14bf, 0x14c8, 0x14dd, 0x14e5, 0x14eb,
- 0x1509, 0x150d, 0x1523, 0x1527, 0x1548, 0x1548, 0x155c, 0x1580,
- 0x1592, 0x15a0, 0x15bd, 0x15d8, 0x15f0, 0x15ff, 0x160f, 0x160f,
- 0x1621, 0x1638, 0x165c, 0x1665, 0x167a, 0x168c, 0x1694, 0x16a2,
- 0x16b7, 0x16c7,
-} // Size: 1244 bytes
-
-var lvLangStr string = "" + // Size: 4332 bytes
- "afāruabhāzuavestaafrikanduakanuamharuaragoniešuarābuasamiešuavāruaimarua" +
- "zerbaidžāņubaškīrubaltkrievubulgārubišlamābambarubengāļutibetiešubretoņu" +
- "bosniešukatalāņučečenučamorrukorsikāņukrīčehubaznīcslāvučuvašuvelsiešudā" +
- "ņuvācumaldīviešudzongkeevugrieķuangļuesperantospāņuigauņubaskupersiešuf" +
- "ulusomufidžiešufērufrančurietumfrīzuīrugēlugalisiešugvaranugudžaratumeni" +
- "ešuhausuivritshindihirimotuhorvātuhaitiešuungāruarmēņuhereruinterlingvai" +
- "ndonēziešuinterlingveigboSičuaņas jiinupiakuidoīslandiešuitāļuinuītujapā" +
- "ņujaviešugruzīnukongukikujukvaņamukazahugrenlandiešukhmerukannadukoreji" +
- "ešukanurukašmiriešukurdukomiešukorniešukirgīzulatīņuluksemburgiešugandul" +
- "imburgiešulingalalaosiešulietuviešulubakatangalatviešumalagasumāršaliešu" +
- "maorumaķedoniešumalajalumongoļumaratumalajiešumaltiešubirmiešunauruiešuz" +
- "iemeļndebelunepāliešundonguholandiešujaunnorvēģunorvēģu bukmolsdienvidnd" +
- "ebelunavahučičevaoksitāņuodžibvuoromuorijuosetīnupandžabupālipoļupuštupo" +
- "rtugāļukečvuretoromāņurundurumāņukrievukiņaruandasanskritssardīniešusind" +
- "huziemeļsāmusangosingāļuslovākuslovēņusamoāņušonusomāļualbāņuserbusvatud" +
- "ienvidsotusundaniešuzviedrusvahilitamilutelugutadžikutajutigrinjaturkmēņ" +
- "ucvanutongiešuturkucongutatārutaitiešuuiguruukraiņuurduuzbekuvenduvjetna" +
- "miešuvolapiksvaloņuvolofukhosujidišsjorubudžuanuķīniešuzuluačinuačoluada" +
- "ngmuadiguafrihiliaghemuainuakadiešualeutudienvidaltajiešusenangļuangikaa" +
- "ramiešuaraukāņuarapahuaravakuasuastūriešuavadhubeludžubaliešubasubamumug" +
- "omalubedžubembubenabafuturietumbeludžubhodžpūrubikolubinukomusiksikubrad" +
- "žiešubodonkosiburjatubugubulubilinumedumbukadukarībukajugaatsamusebuāņu" +
- "kigačibčudžagatajsčūkumariešučinuku žargonsčoktavučipevaianučirokušejenu" +
- "kurdu (Sorani)koptuKrimas tatārukašubudakotudargutaitudelavērusleivudogr" +
- "ibudinkuzarmudogrulejassorbudualuvidusholandiešudiola-fonjīdiūludazukjem" +
- "buefikuēģiptiešuekadžukuelamiešuvidusangļuevondufangufilipīniešufonuvidu" +
- "sfrančusenfrančuziemeļfrīzuaustrumfrīzufriūlugagagauzugajogbajugēzukirib" +
- "atiešuvidusaugšvācusenaugšvācugondu valodasgorontalugotugrebosengrieķuŠv" +
- "eices vācugusiikučinuhaiduhavajiešuhiligainonuhetuhmonguaugšsorbuhupuiba" +
- "nuibibioilokuingušuložbansjgomačamujūdpersiešujūdarābukarakalpakukabiluk" +
- "ačinukadžikambukāvikabardiešukaņembukatabumakondekaboverdiešukorukhasuho" +
- "taniešukoiračiinīkakokalendžīnukimbundukomiešu-permiešukonkanukosrājiešu" +
- "kpellukaračaju un balkārukarēļukuruhušambalubafijuĶelnes vācukumikukuten" +
- "ajuladinolangilandulambulezgīnulakotumongulozuziemeļlurulubalulvaluisenu" +
- "lunduluolušejuluhjumaduriešumafumagahiešumaithilimakasarumandingumasajum" +
- "abumokšumandarumendumeruMaurīcijas kreoluvidusīrumakua-meettomgomikmakum" +
- "inangkabavumandžūrumanipūrumohaukumosumundanguvairākas valodaskrīkumiran" +
- "diešumarvarumjenuerzjumazanderāņuneapoliešunamalejasvācunevarunjasuniuāņ" +
- "ukvasiongjembūnunogajusennorvēģunkoziemeļsotunueruklasiskā nevaruņamvezu" +
- "ņankoluņorunzemuvažāžuturku osmaņupangasinanupehlevipampanganupapjament" +
- "opalaviešusenpersufeniķiešuponapiešusenprovansiešukičeradžastāņurapanuju" +
- "rarotongiešurombočigānuaromūnuruandasandavujakutusamārijas aramiešusambu" +
- "rusasakusantalungambejusangusicīliešuskotudienvidkurdusenekusenuselkupuk" +
- "oiraboro sennisenīrušilhušanuČadas arābusidamudienvidsāmuLuleo sāmuInari" +
- " sāmuskoltsāmusoninkusogdiešusranantogoserērusahosukumususušumerukomoruK" +
- "ongo svahiliklasiskā sīriešusīriešutemnutesoterenotetumutigrutivutokelav" +
- "iešuklingoņutlinkitutuaregunjasas tongutokpisinstarokocimšiāņutumbukutuv" +
- "aliešutasavakutuviešuCentrālmarokas tamazītsudmurtuugaritiešuumbundusakn" +
- "evajuvotuvundžoVallisas vācuvalamuvarajuvašovarlpirīkalmikusogujaojapieš" +
- "ujanbaņujembukantoniešusapotekublissimbolikazenagustandarta marokāņu ber" +
- "beruzunjubez lingvistiska saturazazakimūsdienu standarta arābudienvidaze" +
- "rbaidžāņuAustrijas vācuŠveices augšvācuAustrālijas angļuKanādas angļuLie" +
- "lbritānijas angļuASV angļuLatīņamerikas spāņuEiropas spāņuMeksikas spāņu" +
- "Kanādas frančuŠveices frančulejassakšuflāmuBrazīlijas portugāļuEiropas p" +
- "ortugāļumoldāvuserbu-horvātuķīniešu vienkāršotāķīniešu tradicionālā"
-
-var lvLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0006, 0x000d, 0x0013, 0x001c, 0x0021, 0x0027, 0x0032,
- 0x0038, 0x0041, 0x0047, 0x004d, 0x005c, 0x0065, 0x006f, 0x0077,
- 0x0080, 0x0087, 0x0090, 0x009a, 0x00a2, 0x00ab, 0x00b5, 0x00bd,
- 0x00c5, 0x00d0, 0x00d4, 0x00d9, 0x00e6, 0x00ee, 0x00f7, 0x00fd,
- 0x0102, 0x010e, 0x0115, 0x0118, 0x011f, 0x0125, 0x012e, 0x0135,
- 0x013c, 0x0141, 0x014a, 0x014e, 0x0152, 0x015c, 0x0161, 0x0168,
- 0x0174, 0x0178, 0x017d, 0x0187, 0x018e, 0x0198, 0x01a0, 0x01a5,
- 0x01ab, 0x01b0, 0x01b8, 0x01c0, 0x01c9, 0x01d0, 0x01d8, 0x01de,
- // Entry 40 - 7F
- 0x01e9, 0x01f6, 0x0201, 0x0205, 0x0212, 0x021a, 0x021d, 0x0229,
- 0x0230, 0x0237, 0x023f, 0x0247, 0x024f, 0x0254, 0x025a, 0x0262,
- 0x0268, 0x0275, 0x027b, 0x0282, 0x028c, 0x0292, 0x029e, 0x02a3,
- 0x02ab, 0x02b4, 0x02bc, 0x02c4, 0x02d3, 0x02d8, 0x02e4, 0x02eb,
- 0x02f4, 0x02ff, 0x030a, 0x0313, 0x031b, 0x0328, 0x032d, 0x033a,
- 0x0342, 0x034a, 0x0350, 0x035a, 0x0363, 0x036c, 0x0376, 0x0384,
- 0x038f, 0x0395, 0x03a0, 0x03ad, 0x03be, 0x03cc, 0x03d2, 0x03da,
- 0x03e4, 0x03ec, 0x03f1, 0x03f6, 0x03fe, 0x0407, 0x040c, 0x0411,
- // Entry 80 - BF
- 0x0417, 0x0422, 0x0428, 0x0434, 0x0439, 0x0441, 0x0447, 0x0452,
- 0x045b, 0x0467, 0x046d, 0x0479, 0x047e, 0x0487, 0x048f, 0x0498,
- 0x04a1, 0x04a6, 0x04ae, 0x04b6, 0x04bb, 0x04c0, 0x04cb, 0x04d6,
- 0x04dd, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x04fc, 0x0504, 0x050e,
- 0x0513, 0x051c, 0x0521, 0x0526, 0x052d, 0x0536, 0x053c, 0x0544,
- 0x0548, 0x054e, 0x0553, 0x055f, 0x0567, 0x056e, 0x0574, 0x0579,
- 0x0580, 0x0586, 0x058d, 0x0597, 0x059b, 0x05a1, 0x05a7, 0x05ae,
- 0x05b3, 0x05b3, 0x05bb, 0x05c1, 0x05c5, 0x05ce, 0x05ce, 0x05d4,
- // Entry C0 - FF
- 0x05d4, 0x05e5, 0x05ee, 0x05f4, 0x05fd, 0x0607, 0x0607, 0x060e,
- 0x060e, 0x0615, 0x0615, 0x0615, 0x0618, 0x0618, 0x0623, 0x0623,
- 0x0629, 0x0631, 0x0639, 0x0639, 0x063d, 0x0643, 0x0643, 0x0649,
- 0x064f, 0x0654, 0x0654, 0x0658, 0x065e, 0x065e, 0x066c, 0x0677,
- 0x067d, 0x0681, 0x0681, 0x0685, 0x068c, 0x068c, 0x068c, 0x0697,
- 0x0697, 0x069b, 0x06a0, 0x06a7, 0x06ab, 0x06af, 0x06b5, 0x06bc,
- 0x06c0, 0x06c7, 0x06cd, 0x06d3, 0x06dc, 0x06e0, 0x06e7, 0x06f1,
- 0x06f7, 0x06ff, 0x070f, 0x0717, 0x0722, 0x0729, 0x0730, 0x073e,
- // Entry 100 - 13F
- 0x0743, 0x0743, 0x0751, 0x0758, 0x075e, 0x0763, 0x0768, 0x0771,
- 0x0777, 0x077e, 0x0783, 0x0788, 0x078d, 0x0797, 0x0797, 0x079c,
- 0x07ac, 0x07b8, 0x07be, 0x07c2, 0x07c8, 0x07cd, 0x07cd, 0x07d9,
- 0x07e2, 0x07eb, 0x07f6, 0x07f6, 0x07fc, 0x07fc, 0x0801, 0x080e,
- 0x080e, 0x0812, 0x0812, 0x081e, 0x0828, 0x0828, 0x0835, 0x0842,
- 0x0849, 0x084b, 0x0852, 0x0852, 0x0856, 0x085b, 0x085b, 0x0860,
- 0x086c, 0x086c, 0x087b, 0x0888, 0x0888, 0x0895, 0x089e, 0x08a2,
- 0x08a7, 0x08b1, 0x08bf, 0x08bf, 0x08bf, 0x08c4, 0x08cb, 0x08d0,
- // Entry 140 - 17F
- 0x08d0, 0x08da, 0x08da, 0x08e5, 0x08e9, 0x08ef, 0x08f9, 0x08f9,
- 0x08fd, 0x0902, 0x0908, 0x090d, 0x0914, 0x0914, 0x0914, 0x091c,
- 0x091f, 0x0926, 0x0933, 0x093d, 0x093d, 0x0948, 0x094e, 0x0955,
- 0x095b, 0x0960, 0x0965, 0x0970, 0x0978, 0x097e, 0x0985, 0x0992,
- 0x0992, 0x0996, 0x0996, 0x099b, 0x09a5, 0x09b1, 0x09b1, 0x09b1,
- 0x09b5, 0x09c1, 0x09c9, 0x09db, 0x09e2, 0x09ee, 0x09f4, 0x0a09,
- 0x0a09, 0x0a09, 0x0a11, 0x0a17, 0x0a1f, 0x0a25, 0x0a32, 0x0a38,
- 0x0a40, 0x0a46, 0x0a4b, 0x0a50, 0x0a55, 0x0a5d, 0x0a5d, 0x0a5d,
- // Entry 180 - 1BF
- 0x0a5d, 0x0a63, 0x0a63, 0x0a68, 0x0a6c, 0x0a77, 0x0a77, 0x0a80,
- 0x0a87, 0x0a8c, 0x0a8f, 0x0a96, 0x0a9b, 0x0a9b, 0x0a9b, 0x0aa5,
- 0x0aa9, 0x0ab3, 0x0abb, 0x0ac3, 0x0acb, 0x0ad1, 0x0ad5, 0x0adb,
- 0x0ae2, 0x0ae7, 0x0aeb, 0x0afd, 0x0b06, 0x0b12, 0x0b15, 0x0b1c,
- 0x0b28, 0x0b32, 0x0b3b, 0x0b42, 0x0b46, 0x0b46, 0x0b4e, 0x0b5f,
- 0x0b65, 0x0b70, 0x0b77, 0x0b77, 0x0b7c, 0x0b81, 0x0b8e, 0x0b8e,
- 0x0b99, 0x0b9d, 0x0ba7, 0x0bad, 0x0bb2, 0x0bba, 0x0bba, 0x0bc0,
- 0x0bca, 0x0bd0, 0x0bdc, 0x0bdc, 0x0bdf, 0x0bea, 0x0bef, 0x0bff,
- // Entry 1C0 - 1FF
- 0x0c07, 0x0c0f, 0x0c14, 0x0c19, 0x0c22, 0x0c2f, 0x0c3a, 0x0c41,
- 0x0c4b, 0x0c55, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c67, 0x0c67,
- 0x0c72, 0x0c72, 0x0c72, 0x0c7c, 0x0c7c, 0x0c8b, 0x0c90, 0x0c90,
- 0x0c9d, 0x0ca5, 0x0cb2, 0x0cb2, 0x0cb2, 0x0cb7, 0x0cbf, 0x0cbf,
- 0x0cbf, 0x0cbf, 0x0cc7, 0x0ccd, 0x0cd4, 0x0cda, 0x0cee, 0x0cf5,
- 0x0cfb, 0x0d02, 0x0d02, 0x0d0a, 0x0d0f, 0x0d1a, 0x0d1f, 0x0d1f,
- 0x0d2b, 0x0d31, 0x0d35, 0x0d35, 0x0d3c, 0x0d4b, 0x0d52, 0x0d52,
- 0x0d58, 0x0d5d, 0x0d6a, 0x0d70, 0x0d70, 0x0d70, 0x0d7c, 0x0d87,
- // Entry 200 - 23F
- 0x0d92, 0x0d9c, 0x0da3, 0x0dac, 0x0db6, 0x0dbd, 0x0dc1, 0x0dc1,
- 0x0dc7, 0x0dcb, 0x0dd2, 0x0dd8, 0x0de5, 0x0df8, 0x0e01, 0x0e01,
- 0x0e01, 0x0e06, 0x0e0a, 0x0e10, 0x0e16, 0x0e1b, 0x0e1f, 0x0e2b,
- 0x0e2b, 0x0e34, 0x0e3c, 0x0e3c, 0x0e43, 0x0e4f, 0x0e58, 0x0e58,
- 0x0e5e, 0x0e5e, 0x0e69, 0x0e69, 0x0e70, 0x0e7a, 0x0e82, 0x0e8a,
- 0x0ea3, 0x0eaa, 0x0eb5, 0x0ebc, 0x0ec1, 0x0ec5, 0x0ec5, 0x0ec5,
- 0x0ec5, 0x0ec5, 0x0ec9, 0x0ec9, 0x0ed0, 0x0ede, 0x0ee4, 0x0eea,
- 0x0eef, 0x0ef8, 0x0ef8, 0x0eff, 0x0eff, 0x0f03, 0x0f06, 0x0f0e,
- // Entry 240 - 27F
- 0x0f16, 0x0f1b, 0x0f1b, 0x0f26, 0x0f2e, 0x0f3b, 0x0f3b, 0x0f41,
- 0x0f5d, 0x0f62, 0x0f79, 0x0f7f, 0x0f99, 0x0faf, 0x0fbe, 0x0fd1,
- 0x0fe4, 0x0ff3, 0x1009, 0x1013, 0x102a, 0x1039, 0x1049, 0x1049,
- 0x1059, 0x1069, 0x1074, 0x107a, 0x1091, 0x10a4, 0x10ac, 0x10ba,
- 0x10d3, 0x10ec,
-} // Size: 1244 bytes
-
-var mkLangStr string = "" + // Size: 10127 bytes
- "афарскиапхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" +
- "арскиајмарскиазербејџанскибашкирскибелорускибугарскибисламабамбарабенга" +
- "лскитибетскибретонскибосанскикаталонскичеченскичаморскикорзиканскикриче" +
- "шкицрковнословенскичувашкивелшкиданскигерманскидивехиѕонгкаевегрчкиангл" +
- "искиесперантошпанскиестонскибаскискиперсискифулафинскифиџискифарскифран" +
- "цускизападнофризискиирскишкотски гелскигалицискигваранскигуџаратиманксх" +
- "аусахебрејскихиндихири мотухрватскихаитскиунгарскиерменскихерероинтерли" +
- "нгваиндонезискиокциденталигбосичуан јиинупијачкиидоисландскииталијански" +
- "инуктитутјапонскијаванскигрузискиконгокикујуквањамаказакстанскикалалису" +
- "ткмерскиканнадакорејскиканурикашмирскикурдскикомикорнскикиргистанскилат" +
- "инскилуксембуршкигандалимбуршкилингалалаошкилитванскилуба-катангалатвис" +
- "кималгашкимаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" +
- "тешкибурманскинауруанскисеверен ндебеленепалскиндонгахоландскинорвешки " +
- "нинорскнорвешки букмолјужен ндебеленавахоњанџаокситанскиоџибваоромоориј" +
- "аосетскипенџапскипалиполскипаштунскипортугалскикечуанскиретороманскирун" +
- "дироманскирускируандасанскритсардинскисиндисевернолапонскисангосинхалск" +
- "исловачкисловенечкисамоанскишонасомалискиалбанскисрпскисватисесотосундс" +
- "кишведскисвахилитамилскителугутаџикистанскитајландскитигрињатуркменскиц" +
- "ванатонганскитурскицонгататарскитахитскиујгурскиукраинскиурдуузбекистан" +
- "скивендавиетнамскиволапиквалонскиволофскикосајидишјорупскиџуаншкикинеск" +
- "изулуачешкиаколиадангмеадигејскитуниски арапскиафрихилиагемскиајнуакадс" +
- "киалабамскиалеутскигешки албанскијужноалтајскистароанглискиангикаарамеј" +
- "скимапучкиараонаарапахоалжирски арапскиаравачкимарокански арапскиегипет" +
- "ски арапскиасуамерикански знаковен јазикастурскикотаваавадибелуџискибал" +
- "искибаварскибасабамунскитобагомалабеџабембабетавскибенабафутбадагазапад" +
- "ен балочибоџпурибиколскибинибанџарскикомсиксикабишнупријабахтијарскибра" +
- "јбрахујскибодоакосебурјатскибугискибулубиленскимедумбакадокарипскикајуг" +
- "аацамсебуанскичигачибчачагатајскичучкимарискичинучки жаргончоктавскичип" +
- "евјанскичерокискичејенскицентрален курдскикоптскикапизнонкримскотурскик" +
- "ашупскидакотадаргватаитаделаверслејвидогрипскидинказармадогридолнолужич" +
- "кидусунскидуаласреднохоландскијола-фоњиџуладазагаембуефикемилијанскиста" +
- "роегипетскиекаџукеламскисредноанглискицентралнојупичкиевондоекстремадур" +
- "скифангфилипинскитурнедаленски финскифонкаџунски францускисреднофранцус" +
- "кистарофранцускифранкопровансалскисевернофризискиисточнофризискифурланс" +
- "кигагагаускигангајогбајазороастриски даригизгилбертанскигиланскисредног" +
- "орногерманскистарогорногерманскигоански конканигондигоронталоготскигреб" +
- "остарогрчкишвајцарски германскигвахирофарефарегусигвичинскихајдахакахав" +
- "ајскифиџиски хиндихилигајнонскихетитскихмонггорнолужичкисјангхупаибаниб" +
- "ибиоилоканскиингушкиижорскијамајски креолскиложбаннгомбамачамееврејскоп" +
- "ерсискиеврејскоарапскијитскикаракалпачкикабилскикачинскикаџекамбакавика" +
- "бардинскиканембутјапмакондекабувердианукењангкорокаинганшкикасихотански" +
- "којра чииниковарскизазакикакокаленџинкимбундукоми-пермјачкиконканикозре" +
- "јскикпелекарачаевско-балкарскикриокинарајскикарелскикурухшамбалабафијак" +
- "олоњскикумичкикутенајскиладинолангиландаламбалезгинскилингва франка нов" +
- "алигурскиливонскилакотскиломбардскимонголозисевернолурискилатгалскилуба" +
- "-лулуалујсењскилундалуомизолујакнижевен кинескиласкимадурскимафамагахима" +
- "итилимакасарскимандингомасајскимабамокшанскимандарскимендемеруморисјенс" +
- "редноирскимакува-митометамикмакминангкабауманџурскиманипуримохавскимоси" +
- "западномарискимундангповеќе јазицикрикмирандскимарваримјенеерзјанскимаз" +
- "ендеранскијужноминскинеаполскинамадолногерманскиневарскинијасниуејскиао" +
- "квазионгиембунногајскистаронордискиновијалнкосеверен сотонуеркласичен н" +
- "еварскињамвезињанколењоронзимаосашкиотомански турскипангасинанскисредно" +
- "персискипампангапапијаментопалауанскипикардскипенсилваниски германскиме" +
- "нонитски долногерманскистароперсискифалечкогерманскифеникискипиемонтски" +
- "понтскипонпејскипрускистаропровансалскикичекичванскираџастанскирапанујс" +
- "кираротонганскиромањолскирифскиромборомскиротуманскирусинскировијанскив" +
- "лашкируасандавејакутскисамарјански арамејскисамбурусасачкисанталисаураш" +
- "трангембејсангусицилијанскишкотски германскисасарски сардинскијужнокурд" +
- "скисенекасенасериселкупскикојраборо сенистароирскисамогитскитачелхитшан" +
- "чадски арапскисидамодолношлезискиселајарскијужнолапонскилулски лапонски" +
- "инарски лапонскисколтски лапонскисонинкезогдијанскисрански тонгосерерса" +
- "хозатерландски фризискисукумасусусумерскикоморијанскиконгоански свахили" +
- "класичен сирискисирискишлезискитулутимнетесотеренотетумтигретивтокелауа" +
- "нскицахурскиклингонскитлингитталишкитамашекњаса тонгаток писинтуројотар" +
- "окоцаконскицимшијанскитатскитумбукатувалуанскитазавактуванскицентрално " +
- "марокански тамазитскиудмуртскиугаритскиумбундукоренвајвенетскивепшкизап" +
- "аднофламанскимајнскофранконскивотскивирувунџовалсерволамоварајскивашову" +
- "калмичкимегрелскисогајаојапскијенгбенјембањенгатукантонскизапотечкиблис" +
- "симболизеландскизенагастандарден марокански тамазигтскизунибез лингвист" +
- "ичка содржиназазалитературен арапскибритански англискиамерикански англи" +
- "скишпански (во Европа)француски (во Канада)португалски (во Европа)молда" +
- "вскисрпскохрватскипоедноставен кинескитрадиционален кинески"
-
-var mkLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070,
- 0x007e, 0x008c, 0x009a, 0x00aa, 0x00c4, 0x00d6, 0x00e8, 0x00f8,
- 0x0106, 0x0114, 0x0126, 0x0136, 0x0148, 0x0158, 0x016c, 0x017c,
- 0x018c, 0x01a2, 0x01a8, 0x01b2, 0x01d2, 0x01e0, 0x01ec, 0x01f8,
- 0x020a, 0x0216, 0x0222, 0x0228, 0x0232, 0x0242, 0x0254, 0x0262,
- 0x0272, 0x0282, 0x0292, 0x029a, 0x02a6, 0x02b4, 0x02c0, 0x02d2,
- 0x02f0, 0x02fa, 0x0315, 0x0327, 0x0339, 0x0349, 0x0353, 0x035d,
- 0x036f, 0x0379, 0x038a, 0x039a, 0x03a8, 0x03b8, 0x03c8, 0x03d4,
- // Entry 40 - 7F
- 0x03ea, 0x0400, 0x0414, 0x041c, 0x042d, 0x0441, 0x0447, 0x0459,
- 0x046f, 0x0481, 0x0491, 0x04a1, 0x04b1, 0x04bb, 0x04c7, 0x04d5,
- 0x04ed, 0x04ff, 0x050d, 0x051b, 0x052b, 0x0537, 0x0549, 0x0557,
- 0x055f, 0x056d, 0x0585, 0x0595, 0x05ad, 0x05b7, 0x05c9, 0x05d7,
- 0x05e3, 0x05f5, 0x060c, 0x061c, 0x062c, 0x063e, 0x064c, 0x0660,
- 0x0672, 0x0684, 0x0690, 0x06a0, 0x06b0, 0x06c2, 0x06d6, 0x06f3,
- 0x0703, 0x070f, 0x0721, 0x0740, 0x075d, 0x0776, 0x0782, 0x078c,
- 0x07a0, 0x07ac, 0x07b6, 0x07c0, 0x07ce, 0x07e0, 0x07e8, 0x07f4,
- // Entry 80 - BF
- 0x0806, 0x081c, 0x082e, 0x0846, 0x0850, 0x0860, 0x086a, 0x0876,
- 0x0886, 0x0898, 0x08a2, 0x08c0, 0x08ca, 0x08dc, 0x08ec, 0x0900,
- 0x0912, 0x091a, 0x092c, 0x093c, 0x0948, 0x0952, 0x095e, 0x096c,
- 0x097a, 0x0988, 0x0998, 0x09a4, 0x09be, 0x09d2, 0x09e0, 0x09f4,
- 0x09fe, 0x0a10, 0x0a1c, 0x0a26, 0x0a36, 0x0a46, 0x0a56, 0x0a68,
- 0x0a70, 0x0a8a, 0x0a94, 0x0aa8, 0x0ab6, 0x0ac6, 0x0ad6, 0x0ade,
- 0x0ae8, 0x0af8, 0x0b06, 0x0b14, 0x0b1c, 0x0b28, 0x0b32, 0x0b40,
- 0x0b52, 0x0b6f, 0x0b7f, 0x0b8d, 0x0b95, 0x0ba3, 0x0bb5, 0x0bc5,
- // Entry C0 - FF
- 0x0be0, 0x0bfa, 0x0c14, 0x0c20, 0x0c32, 0x0c40, 0x0c4c, 0x0c5a,
- 0x0c79, 0x0c89, 0x0cac, 0x0ccd, 0x0cd3, 0x0d05, 0x0d15, 0x0d21,
- 0x0d2b, 0x0d3d, 0x0d4b, 0x0d5b, 0x0d63, 0x0d73, 0x0d7b, 0x0d87,
- 0x0d8f, 0x0d99, 0x0da9, 0x0db1, 0x0dbb, 0x0dc7, 0x0de2, 0x0df0,
- 0x0e00, 0x0e08, 0x0e1a, 0x0e20, 0x0e2e, 0x0e42, 0x0e58, 0x0e60,
- 0x0e72, 0x0e7a, 0x0e84, 0x0e96, 0x0ea4, 0x0eac, 0x0ebc, 0x0eca,
- 0x0ed2, 0x0ee2, 0x0eee, 0x0ef6, 0x0f08, 0x0f10, 0x0f1a, 0x0f2e,
- 0x0f38, 0x0f46, 0x0f61, 0x0f73, 0x0f89, 0x0f9b, 0x0fab, 0x0fcc,
- // Entry 100 - 13F
- 0x0fda, 0x0fea, 0x1004, 0x1014, 0x1020, 0x102c, 0x1036, 0x1044,
- 0x1050, 0x1062, 0x106c, 0x1076, 0x1080, 0x1098, 0x10a8, 0x10b2,
- 0x10d0, 0x10e1, 0x10e9, 0x10f5, 0x10fd, 0x1105, 0x111b, 0x1137,
- 0x1143, 0x1151, 0x116d, 0x118d, 0x1199, 0x11b5, 0x11bd, 0x11d1,
- 0x11f8, 0x11fe, 0x1221, 0x123f, 0x125b, 0x127f, 0x129d, 0x12bb,
- 0x12cd, 0x12d1, 0x12e1, 0x12e7, 0x12ef, 0x12f9, 0x131a, 0x1320,
- 0x1338, 0x1348, 0x1370, 0x1396, 0x13b3, 0x13bd, 0x13cf, 0x13db,
- 0x13e5, 0x13f9, 0x1420, 0x142e, 0x143e, 0x1446, 0x1458, 0x1462,
- // Entry 140 - 17F
- 0x146a, 0x147a, 0x1493, 0x14ad, 0x14bd, 0x14c7, 0x14df, 0x14e9,
- 0x14f1, 0x14f9, 0x1505, 0x1517, 0x1525, 0x1533, 0x1554, 0x1560,
- 0x156c, 0x1578, 0x1598, 0x15b6, 0x15c2, 0x15da, 0x15ea, 0x15fa,
- 0x1602, 0x160c, 0x1614, 0x162a, 0x1638, 0x1640, 0x164e, 0x1666,
- 0x1672, 0x167a, 0x168e, 0x1696, 0x16a6, 0x16bb, 0x16cb, 0x16d7,
- 0x16df, 0x16ef, 0x16ff, 0x171a, 0x1728, 0x173a, 0x1744, 0x176d,
- 0x1775, 0x1789, 0x1799, 0x17a3, 0x17b1, 0x17bd, 0x17cd, 0x17db,
- 0x17ef, 0x17fb, 0x1805, 0x180f, 0x1819, 0x182b, 0x184d, 0x185d,
- // Entry 180 - 1BF
- 0x186d, 0x187d, 0x1891, 0x189b, 0x18a3, 0x18bf, 0x18d1, 0x18e4,
- 0x18f6, 0x1900, 0x1906, 0x190e, 0x1916, 0x1935, 0x193f, 0x194f,
- 0x1957, 0x1963, 0x1971, 0x1985, 0x1995, 0x19a5, 0x19ad, 0x19bf,
- 0x19d1, 0x19db, 0x19e3, 0x19f3, 0x1a09, 0x1a1e, 0x1a26, 0x1a32,
- 0x1a48, 0x1a5a, 0x1a6a, 0x1a7a, 0x1a82, 0x1a9e, 0x1aac, 0x1ac5,
- 0x1acd, 0x1adf, 0x1aed, 0x1aed, 0x1af7, 0x1b09, 0x1b23, 0x1b39,
- 0x1b4b, 0x1b53, 0x1b6f, 0x1b7f, 0x1b89, 0x1b99, 0x1b9d, 0x1ba9,
- 0x1bb9, 0x1bc9, 0x1be3, 0x1bf1, 0x1bf7, 0x1c0e, 0x1c16, 0x1c37,
- // Entry 1C0 - 1FF
- 0x1c45, 0x1c53, 0x1c5b, 0x1c65, 0x1c71, 0x1c90, 0x1caa, 0x1cc6,
- 0x1cd6, 0x1cec, 0x1d00, 0x1d12, 0x1d3f, 0x1d70, 0x1d8a, 0x1daa,
- 0x1dbc, 0x1dd0, 0x1dde, 0x1df0, 0x1dfc, 0x1e1e, 0x1e26, 0x1e38,
- 0x1e4e, 0x1e62, 0x1e7c, 0x1e90, 0x1e9c, 0x1ea6, 0x1eb2, 0x1ec6,
- 0x1ed6, 0x1eea, 0x1ef6, 0x1efc, 0x1f0a, 0x1f1a, 0x1f43, 0x1f51,
- 0x1f5f, 0x1f6d, 0x1f7f, 0x1f8d, 0x1f97, 0x1faf, 0x1fd0, 0x1ff3,
- 0x200b, 0x2017, 0x201f, 0x2027, 0x2039, 0x2054, 0x2068, 0x207c,
- 0x208c, 0x2092, 0x20ad, 0x20b9, 0x20d3, 0x20e7, 0x2101, 0x211e,
- // Entry 200 - 23F
- 0x213d, 0x215e, 0x216c, 0x2182, 0x219b, 0x21a5, 0x21ad, 0x21d6,
- 0x21e2, 0x21ea, 0x21fa, 0x2212, 0x2235, 0x2254, 0x2262, 0x2272,
- 0x227a, 0x2284, 0x228c, 0x2298, 0x22a2, 0x22ac, 0x22b2, 0x22ca,
- 0x22da, 0x22ee, 0x22fc, 0x230a, 0x2318, 0x232b, 0x233c, 0x2348,
- 0x2354, 0x2364, 0x237a, 0x2386, 0x2394, 0x23aa, 0x23b8, 0x23c8,
- 0x2404, 0x2416, 0x2428, 0x2436, 0x2440, 0x2446, 0x2456, 0x2462,
- 0x2482, 0x24a4, 0x24b0, 0x24b8, 0x24c2, 0x24ce, 0x24da, 0x24ea,
- 0x24f2, 0x24f2, 0x24f6, 0x2506, 0x2518, 0x2520, 0x2526, 0x2532,
- // Entry 240 - 27F
- 0x2540, 0x254a, 0x2558, 0x256a, 0x257c, 0x2592, 0x25a4, 0x25b0,
- 0x25f0, 0x25f8, 0x2628, 0x2630, 0x2655, 0x2655, 0x2655, 0x2655,
- 0x2655, 0x2655, 0x2678, 0x269f, 0x269f, 0x26c1, 0x26c1, 0x26c1,
- 0x26e7, 0x26e7, 0x26e7, 0x26e7, 0x26e7, 0x2711, 0x2723, 0x273f,
- 0x2766, 0x278f,
-} // Size: 1244 bytes
-
-var mlLangStr string = "" + // Size: 11903 bytes
- "അഫാർഅബ്\u200cഖാസിയൻഅവസ്റ്റാൻആഫ്രിക്കാൻസ്അകാൻ\u200cഅംഹാരിക്അരഗോണീസ്അറബിക്" +
- "ആസ്സാമീസ്അവാരിക്അയ്മാറഅസർബൈജാനിബഷ്ഖിർബെലാറുഷ്യൻബൾഗേറിയൻബിസ്\u200cലാമബം" +
- "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻകമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" +
- "ച്ച് സ്ലാവിക്ചുവാഷ്വെൽഷ്ഡാനിഷ്ജർമ്മൻദിവെഹിസോങ്കഇവ്ഗ്രീക്ക്ഇംഗ്ലീഷ്എസ്" +
- "\u200cപരാന്റോസ്\u200cപാനിഷ്എസ്റ്റോണിയൻബാസ്\u200cക്പേർഷ്യൻഫുലഫിന്നിഷ്ഫിജി" +
- "യൻഫാറോസ്ഫ്രഞ്ച്പശ്ചിമ ഫ്രിഷിയൻഐറിഷ്സ്കോട്ടിഷ് ഗൈലിക്ഗലീഷ്യൻഗ്വരനീഗുജറാ" +
- "ത്തിമാൻസ്ഹൗസഹീബ്രുഹിന്ദിഹിരി മോതുക്രൊയേഷ്യൻഹെയ്\u200cതിയൻഹംഗേറിയൻഅർമേന" +
- "ിയൻഹെരേരൊഇന്റർലിൻ\u200cഗ്വാഇൻഡോനേഷ്യൻഇന്റർലിംഗ്വഇഗ്ബോഷുവാൻയിഇനുപിയാക്ഇ" +
- "ഡോഐസ്\u200cലാൻഡിക്ഇറ്റാലിയൻഇനുക്റ്റിറ്റട്ട്ജാപ്പനീസ്ജാവാനീസ്ജോർജിയൻകോം" +
- "ഗോകികൂയുക്വാന്യമകസാഖ്കലാല്ലിസട്ട്ഖമെർകന്നഡകൊറിയൻകനൂറികാശ്\u200cമീരികുർ" +
- "ദ്ദിഷ്കോമികോർണിഷ്കിർഗിസ്ലാറ്റിൻലക്\u200cസംബർഗിഷ്ഗാണ്ടലിംബർഗിഷ്ലിംഗാലലാ" +
- "വോലിത്വാനിയൻലുബ-കറ്റംഗലാറ്റ്വിയൻമലഗാസിമാർഷല്ലീസ്മവോറിമാസിഡോണിയൻമലയാളംമ" +
- "ംഗോളിയൻമറാത്തിമലെയ്മാൾട്ടീസ്ബർമീസ്നൗറുനോർത്ത് ഡെബിൾനേപ്പാളിഡോങ്കഡച്ച്ന" +
- "ോർവീജിയൻ നൈനോർക്\u200cസ്നോർവീജിയൻ ബുക്\u200cമൽദക്ഷിണ നെഡിബിൾനവാഹൊന്യൻജ" +
- "ഓക്\u200cസിറ്റൻഓജിബ്വാഒറോമോഒഡിയഒസ്സെറ്റിക്പഞ്ചാബിപാലിപോളിഷ്പഷ്തുപോർച്ച" +
- "ുഗീസ്ക്വെച്ചുവറൊമാഞ്ച്റുണ്ടിറൊമാനിയൻറഷ്യൻകിന്യാർവാണ്ടസംസ്\u200cകൃതംസർഡ" +
- "ിനിയാൻസിന്ധിവടക്കൻ സമിസാംഗോസിംഹളസ്ലോവാക്സ്ലോവേനിയൻസമോവൻഷോണസോമാലിഅൽബേനി" +
- "യൻസെർബിയൻസ്വാറ്റിതെക്കൻ സോതോസുണ്ടാനീസ്സ്വീഡിഷ്സ്വാഹിലിതമിഴ്തെലുങ്ക്താജ" +
- "ിക്തായ്ടൈഗ്രിന്യതുർക്\u200cമെൻത്സ്വാനടോംഗൻടർക്കിഷ്ത്സോംഗടാട്ടർതാഹിതിയൻ" +
- "ഉയ്ഘുർഉക്രേനിയൻഉറുദുഉസ്\u200cബെക്ക്വെന്ദവിയറ്റ്നാമീസ്വോളാപുക്വല്ലൂൺവൊള" +
- "ോഫ്ഖോസയിദ്ദിഷ്യൊറൂബാസ്വാംഗ്ചൈനീസ്സുലുഅചിനീസ്അകോലിഅഡാങ്ഗമിഅഡൈഗേആഫ്രിഹില" +
- "ിആഘേംഅയിനുഅക്കാഡിയൻഅലൈട്ട്തെക്കൻ അൾത്തായിപഴയ ഇംഗ്ലീഷ്ആൻഗികഅരമായഭാഷമാപു" +
- "ചിഅരപാഹോഅറാവക്ആസുഓസ്\u200cട്രിയൻഅവധിബലൂചിബാലിനീസ്ബസബാമുൻഘോമാലബേജബേംബബെ" +
- "നാബാഫട്ട്പശ്ചിമ ബലൂചിഭോജ്\u200cപൂരിബികോൽബിനികോംസിക്സികബ്രജ്ബോഡോഅക്കൂസ്" +
- "ബുറിയത്ത്ബുഗിനീസ്ബുളുബ്ലിൻമെഡുംബകാഡോകാരിബ്കയൂഗഅറ്റ്സാംസെബുവാനോചിഗചിബ്ച" +
- "ചഗതൈചൂകീസ്മാരിചിനൂഗ്-ജാർഗൺചോക്റ്റാവ്ചിപേവ്യൻഷെരോക്കിചിയേന്നേസൊറാനി കുർ" +
- "ദിഷ്കോപ്റ്റിക്ക്രിമിയൻ ടർക്കിഷ്കാഷുബിയാൻഡകോട്ടഡർഗ്വാതൈതദലവാരെസ്ലേവ്ഡോഗ" +
- "്രിബ്ദിൻകസാർമ്മഡോഗ്രിലോവർ സോർബിയൻദ്വാലമദ്ധ്യ ഡച്ച്യോല-ഫോന്യിദ്വൈലഡാസാഗ" +
- "എംബുഎഫിക്പ്രാചീന ഈജിപ്ഷ്യൻഎകാജുക്എലാമൈറ്റ്മദ്ധ്യ ഇംഗ്ലീഷ്എവോൻഡോഫങ്ഫിലി" +
- "പ്പിനോഫോൻമദ്ധ്യ ഫ്രഞ്ച്പഴയ ഫ്രഞ്ച്നോർത്തേൻ ഫ്രിഷ്യൻഈസ്റ്റേൺ ഫ്രിഷ്യൻഫ്" +
- "രിയുലിയാൻഗാഗാഗൂസ്ഗയൊഗബ്യഗീസ്ഗിൽബർസേമദ്ധ്യ ഉച്ച ജർമൻപ്രാചീന ഉച്ച ജർമൻഗോ" +
- "ണ്ഡിഗൊറോൻറാലോഗോഥിക്ക്ഗ്രബൊപുരാതന യവന ഭാഷസ്വിസ് ജർമ്മൻഗുസീഗ്വിച്ച് ഇൻഹൈ" +
- "ഡഹവായിയൻഹിലിഗയ്നോൺഹിറ്റൈറ്റേമോങ്അപ്പർ സോർബിയൻഹൂപഇബാൻഇബീബിയോഇലോകോഇംഗ്വി" +
- "ഷ്ലോജ്ബാൻഗോമ്പമചേംജൂഡിയോ-പേർഷ്യൻജൂഡിയോ-അറബിക്കര-കാൽപ്പക്കബൈൽകാചിൻജ്ജുക" +
- "ംബകാവികബർഡിയാൻകനെംബുട്യാപ്മക്കോണ്ടെകബുവെർദിയാനുകോറോഘാസിഘോറ്റാനേസേകൊയ്റ" +
- " ചീനികക്കോകലെഞ്ഞിൻക്ലിംഗൻകോമി-പെർമ്യാക്ക്കൊങ്കണികൊസറേയൻകപെല്ലേകരചൈ-ബാൽകർ" +
- "കരീലിയൻകുരുഖ്ഷംഭാളഭാഫിയകൊളോഞ്ഞിയൻകുമൈക്കുതേനൈലാഡിനോലാംഗിലഹ്\u200cൻഡലംബ" +
- "ലഹ്ഗിയാൻലഗോത്തമോങ്കോലൊസിവടക്കൻ ലൂറിലൂബ-ലുലുവലൂയിസെനോലുൻഡലുവോമിസോലുയിയമ" +
- "ദുരേസേമാഫമഗാഹിമൈഥിലിമകാസർമണ്ഡിൻഗോമസായ്മാബമോക്ഷമണ്ഡാർമെൻഡെമേരുമൊറിസിൻമദ" +
- "്ധ്യ ഐറിഷ്മാഖുവാ-മീത്തോമേത്താമിക്മാക്മിനാങ്കബൗമൻചുമണിപ്പൂരിമോഹാക്മൊസ്സ" +
- "ിമുന്ദാംഗ്പലഭാഷകൾക്രീക്ക്മിരാൻറസേമർവാരിമയീൻഏഴ്സ്യമസന്ററാനിനെപ്പോളിറ്റാ" +
- "ൻനാമലോ ജർമൻനേവാരിനിയാസ്ന്യുവാൻക്വാസിയോഗീംബൂൺനോഗൈപഴയ പേർഷ്യൻഇൻകോനോർത്തേ" +
- "ൻ സോതോനുവേർക്ലാസിക്കൽ നേവാരിന്യാംവേസിന്യാൻകോൾന്യോറോസിമഒസേജ്ഓട്ടോമൻ തുർ" +
- "ക്കിഷ്പങ്കാസിനൻപാഹ്ലവിപാംപൻഗപാപിയാമെൻറൊപലാവുൻപ്രാചീന പേർഷ്യൻഫീനിഷ്യൻപൊ" +
- "ൻപിയൻപ്രൊവൻഷ്ൽക്വിച്ചെരാജസ്ഥാനിരാപനൂയിരാരോടോങ്കൻറോംബോറോമനിആരോമാനിയൻറുവ" +
- "ാസാൻഡവേസാഖസമരിയാക്കാരുടെ അരമായസംബുരുസസാക്സന്താലിഗംബായ്സംഗുസിസിലിയൻസ്കോ" +
- "ട്സ്തെക്കൻ കുർദ്ദിഷ്സെനേകസേനസെൽകപ്കൊയ്റാബൊറോ സെന്നിപ്രാചീന ഐറിഷ്താച്ചല" +
- "ിറ്റ്ഷാൻചാഡ് അറബിസിഡാമോതെക്കൻ സാമിലൂലീ സമിഇനാരി സാമിസ്കോൾട്ട് സമിസോണിൻ" +
- "കെസോജിഡിയൻശ്രാനൻ ഡോങ്കോസെറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻകോംഗോ സ്വാഹിലി" +
- "പുരാതന സുറിയാനിഭാഷസുറിയാനിടിംനേടെസോടെറേനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലി" +
- "ംഗോൺലിംഗ്വിറ്റ്ടമഷേക്ന്യാസാ ഡോങ്കടോക് പിസിൻതരോക്കോസിംഷ്യൻടുംബുകതുവാലുട" +
- "സവാക്ക്തുവിനിയൻമധ്യ അറ്റ്\u200cലസ് ടമാസൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്" +
- "ദുമൂലഭാഷവൈവോട്ടിക്വുഞ്ജോവാൾസർവലമൊവാരേയ്വാഷൊവാൾപ്പിരികൽമൈക്സോഗോയാവോയെപ്" +
- "പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സാപ്പോടെക്ബ്ലിസ്സിംബൽസ്സെനഗമൊറോക്കൻ സാധാരണ താമ" +
- "സൈറ്റ്സുനിഭാഷാപരമായ ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓ" +
- "സ്\u200cട്രിയൻ ജർമൻസ്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ" +
- "്ലീഷ്ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാ" +
- "നിഷ്യൂറോപ്യൻ സ്\u200cപാനിഷ്മെക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ്രഞ്ച്സ്വിസ് ഫ്" +
- "രഞ്ച്ലോ സാക്സൺഫ്ലമിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്യൻ പോർച്ചുഗീസ്മോൾഡാവിയ" +
- "ൻസെർബോ-ക്രൊയേഷ്യൻ"
-
-var mlLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x002a, 0x0045, 0x0069, 0x0078, 0x0090, 0x00a8,
- 0x00ba, 0x00d5, 0x00ea, 0x00fc, 0x0117, 0x0129, 0x0147, 0x015f,
- 0x0177, 0x0186, 0x0198, 0x01ad, 0x01c5, 0x01dd, 0x01f5, 0x0201,
- 0x0210, 0x022b, 0x0237, 0x0249, 0x0274, 0x0286, 0x0295, 0x02a7,
- 0x02b9, 0x02cb, 0x02da, 0x02e3, 0x02fb, 0x0313, 0x0334, 0x034f,
- 0x0370, 0x0385, 0x039a, 0x03a3, 0x03bb, 0x03cd, 0x03df, 0x03f4,
- 0x041f, 0x042e, 0x045f, 0x0474, 0x0486, 0x04a1, 0x04b0, 0x04b9,
- 0x04cb, 0x04dd, 0x04f6, 0x0514, 0x052f, 0x0547, 0x055f, 0x0571,
- // Entry 40 - 7F
- 0x0598, 0x05b6, 0x05d7, 0x05e6, 0x05fb, 0x0616, 0x061f, 0x0640,
- 0x065b, 0x068b, 0x06a6, 0x06be, 0x06d3, 0x06e2, 0x06f4, 0x070c,
- 0x071b, 0x073f, 0x074b, 0x075a, 0x076c, 0x077b, 0x0796, 0x07b1,
- 0x07bd, 0x07d2, 0x07e7, 0x07fc, 0x0820, 0x082f, 0x084a, 0x085c,
- 0x0868, 0x0886, 0x08a2, 0x08c0, 0x08d2, 0x08f0, 0x08ff, 0x091d,
- 0x092f, 0x0947, 0x095c, 0x096b, 0x0986, 0x0998, 0x09a4, 0x09c9,
- 0x09e1, 0x09f0, 0x09ff, 0x0a39, 0x0a6a, 0x0a92, 0x0aa1, 0x0ab0,
- 0x0ace, 0x0ae3, 0x0af2, 0x0afe, 0x0b1f, 0x0b34, 0x0b40, 0x0b52,
- // Entry 80 - BF
- 0x0b61, 0x0b82, 0x0b9d, 0x0bb5, 0x0bc7, 0x0bdf, 0x0bee, 0x0c12,
- 0x0c2d, 0x0c48, 0x0c5a, 0x0c76, 0x0c85, 0x0c94, 0x0cac, 0x0cca,
- 0x0cd9, 0x0ce2, 0x0cf4, 0x0d0c, 0x0d21, 0x0d39, 0x0d58, 0x0d76,
- 0x0d8e, 0x0da6, 0x0db5, 0x0dcd, 0x0ddf, 0x0deb, 0x0e06, 0x0e21,
- 0x0e36, 0x0e45, 0x0e5d, 0x0e6f, 0x0e81, 0x0e99, 0x0eab, 0x0ec6,
- 0x0ed5, 0x0ef3, 0x0f02, 0x0f29, 0x0f41, 0x0f53, 0x0f65, 0x0f6e,
- 0x0f86, 0x0f98, 0x0fad, 0x0fbf, 0x0fcb, 0x0fe0, 0x0fef, 0x1007,
- 0x1016, 0x1016, 0x1031, 0x103d, 0x104c, 0x1067, 0x1067, 0x107c,
- // Entry C0 - FF
- 0x107c, 0x10a7, 0x10c9, 0x10d8, 0x10f0, 0x1102, 0x1102, 0x1114,
- 0x1114, 0x1126, 0x1126, 0x1126, 0x112f, 0x112f, 0x114d, 0x114d,
- 0x1159, 0x1168, 0x1180, 0x1180, 0x1186, 0x1195, 0x1195, 0x11a4,
- 0x11ad, 0x11b9, 0x11b9, 0x11c5, 0x11da, 0x11da, 0x11fc, 0x1217,
- 0x1226, 0x1232, 0x1232, 0x123b, 0x1250, 0x1250, 0x1250, 0x125f,
- 0x125f, 0x126b, 0x1280, 0x129b, 0x12b3, 0x12bf, 0x12ce, 0x12e0,
- 0x12ec, 0x12fe, 0x130a, 0x1322, 0x133a, 0x1343, 0x1352, 0x135e,
- 0x1370, 0x137c, 0x139e, 0x13bc, 0x13d4, 0x13ec, 0x1404, 0x142c,
- // Entry 100 - 13F
- 0x144a, 0x144a, 0x147b, 0x1496, 0x14a8, 0x14ba, 0x14c3, 0x14d5,
- 0x14e7, 0x14ff, 0x150b, 0x151d, 0x152f, 0x1551, 0x1551, 0x1560,
- 0x1582, 0x159e, 0x15ad, 0x15bc, 0x15c8, 0x15d7, 0x15d7, 0x1608,
- 0x161d, 0x1638, 0x1663, 0x1663, 0x1675, 0x1675, 0x167e, 0x169c,
- 0x169c, 0x16a5, 0x16a5, 0x16cd, 0x16ec, 0x16ec, 0x171d, 0x174e,
- 0x176f, 0x1775, 0x1787, 0x1787, 0x1790, 0x179c, 0x179c, 0x17a8,
- 0x17bd, 0x17bd, 0x17e9, 0x1818, 0x1818, 0x182a, 0x1845, 0x185d,
- 0x186c, 0x1892, 0x18b7, 0x18b7, 0x18b7, 0x18c3, 0x18e2, 0x18eb,
- // Entry 140 - 17F
- 0x18eb, 0x1900, 0x1900, 0x191e, 0x193c, 0x1948, 0x196d, 0x196d,
- 0x1976, 0x1982, 0x1997, 0x19a6, 0x19be, 0x19be, 0x19be, 0x19d3,
- 0x19e2, 0x19ee, 0x1a16, 0x1a3b, 0x1a3b, 0x1a5a, 0x1a66, 0x1a75,
- 0x1a81, 0x1a8a, 0x1a96, 0x1aae, 0x1ac0, 0x1ad2, 0x1aed, 0x1b11,
- 0x1b11, 0x1b1d, 0x1b1d, 0x1b29, 0x1b47, 0x1b63, 0x1b63, 0x1b63,
- 0x1b72, 0x1b8a, 0x1b9f, 0x1bcd, 0x1be2, 0x1bf7, 0x1c0c, 0x1c28,
- 0x1c28, 0x1c28, 0x1c3d, 0x1c4f, 0x1c5e, 0x1c6d, 0x1c8b, 0x1c9d,
- 0x1caf, 0x1cc1, 0x1cd0, 0x1ce2, 0x1ceb, 0x1d03, 0x1d03, 0x1d03,
- // Entry 180 - 1BF
- 0x1d03, 0x1d15, 0x1d15, 0x1d27, 0x1d33, 0x1d52, 0x1d52, 0x1d6b,
- 0x1d83, 0x1d8f, 0x1d9b, 0x1da7, 0x1db6, 0x1db6, 0x1db6, 0x1dcb,
- 0x1dd4, 0x1de3, 0x1df5, 0x1e04, 0x1e1c, 0x1e2b, 0x1e34, 0x1e43,
- 0x1e55, 0x1e64, 0x1e70, 0x1e85, 0x1ea7, 0x1ecc, 0x1ede, 0x1ef6,
- 0x1f11, 0x1f1d, 0x1f38, 0x1f4a, 0x1f5c, 0x1f5c, 0x1f77, 0x1f8c,
- 0x1fa4, 0x1fbc, 0x1fce, 0x1fce, 0x1fda, 0x1fec, 0x2007, 0x2007,
- 0x202e, 0x2037, 0x204a, 0x205c, 0x206e, 0x2083, 0x2083, 0x209b,
- 0x20ad, 0x20b9, 0x20d8, 0x20d8, 0x20e4, 0x2109, 0x2118, 0x2149,
- // Entry 1C0 - 1FF
- 0x2164, 0x217c, 0x218e, 0x2197, 0x21a6, 0x21d7, 0x21f2, 0x2207,
- 0x2219, 0x223a, 0x224c, 0x224c, 0x224c, 0x224c, 0x2277, 0x2277,
- 0x228f, 0x228f, 0x228f, 0x22a4, 0x22a4, 0x22bf, 0x22d7, 0x22d7,
- 0x22f2, 0x2307, 0x2325, 0x2325, 0x2325, 0x2334, 0x2343, 0x2343,
- 0x2343, 0x2343, 0x235e, 0x236a, 0x237c, 0x2385, 0x23bf, 0x23d1,
- 0x23e0, 0x23f5, 0x23f5, 0x2407, 0x2413, 0x242b, 0x2443, 0x2443,
- 0x2471, 0x2480, 0x2489, 0x2489, 0x249b, 0x24cc, 0x24f1, 0x24f1,
- 0x2512, 0x251b, 0x2534, 0x2546, 0x2546, 0x2546, 0x2565, 0x257b,
- // Entry 200 - 23F
- 0x2597, 0x25bc, 0x25d1, 0x25e9, 0x260e, 0x261a, 0x2626, 0x2626,
- 0x2635, 0x2641, 0x2659, 0x2671, 0x2699, 0x26cd, 0x26e5, 0x26e5,
- 0x26e5, 0x26f4, 0x2700, 0x2712, 0x2727, 0x2739, 0x2745, 0x275d,
- 0x275d, 0x2775, 0x2796, 0x2796, 0x27a8, 0x27ca, 0x27e6, 0x27e6,
- 0x27fb, 0x27fb, 0x2810, 0x2810, 0x2822, 0x2834, 0x284c, 0x2864,
- 0x28a8, 0x28c6, 0x28e4, 0x28fc, 0x290e, 0x2914, 0x2914, 0x2914,
- 0x2914, 0x2914, 0x292c, 0x292c, 0x293e, 0x294d, 0x2959, 0x296b,
- 0x2977, 0x2992, 0x2992, 0x29a4, 0x29a4, 0x29b0, 0x29bc, 0x29d4,
- // Entry 240 - 27F
- 0x29ec, 0x29f5, 0x29f5, 0x2a10, 0x2a2e, 0x2a55, 0x2a55, 0x2a61,
- 0x2aa8, 0x2ab4, 0x2b09, 0x2b15, 0x2b5f, 0x2b5f, 0x2b8a, 0x2bb0,
- 0x2bed, 0x2c1b, 0x2c52, 0x2c86, 0x2cd3, 0x2d07, 0x2d3e, 0x2d3e,
- 0x2d69, 0x2d91, 0x2daa, 0x2dbf, 0x2dfc, 0x2e36, 0x2e51, 0x2e7f,
-} // Size: 1240 bytes
-
-var mnLangStr string = "" + // Size: 3152 bytes
- "абхазафрикаканамхарарабассамазербайжанбашкирбеларусьболгарбамбарабенгалт" +
- "өвдбретонбосникаталанкорсикчехуэлсданигерманжонхаэвэгреканглиэсперантои" +
- "спаниэстонибаскперсфинляндфижифарерфранцбаруун фризынирландшотланд келт" +
- "галикгуаранигужаратиманксхаусаеврейхиндихорватгаитиунгарарменинтерлингв" +
- "оиндонезинэгдмэл хэлигбошичуан еиисландиталиинуктитутяпонявагүржкикуюүх" +
- "асагкалалисуткамбожканнадасолонгоскашмиркүрдкорныкиргизлатинлюксембургг" +
- "андалингалалаослитвалуба-катангалатвималагасимаоримакедонмалайламмонгол" +
- "маратималаймалтибирмхойд ндебелебалбаголланднорвегийн нинорскнорвегийн " +
- "букмолфранцын окситаноромоорияпанжабпольшпаштопортугалкечуароманшрундир" +
- "умынороскинярвандасанскритсиндхихойд самисангосинхаласловаксловеншонасо" +
- "малиалбанисербсунданшведсвахилитамилтэлүгүтажиктайтигринатуркментонгату" +
- "рктатаруйгарукрайнурдуузбеквьетнамволофхосаиддишёрубахятадзулуагеммапүч" +
- "иасубембабенабодочигачирокисорани күрдтайтазармаловер-сорбидуалажола-фо" +
- "ниэмбуфилиппингагузшвейцари германгузыхавайдээд сорбингомбамачамэкабиле" +
- "камбамакондекабүвердианукойра чиникаленжинкоми-пермякконканишамбалабафи" +
- "алангилакоталуолуяамасаймеруморисенмакува-митометамохаукмундангнамакваз" +
- "ионконуернянколекичеромборвасамбүрүсангүсенакёраборо сенитачелхитөмнөд " +
- "самилюле самиинари самисколт самиконго свахилитэсотасавактөв атласын та" +
- "мазайттодорхойгүй хэлвайвунжосогатамазитхэл зүйн агуулга байхгүйстандар" +
- "т арабавстри германшвейцари дээр германавстрали англиканад англибритани" +
- "йн англиамерикийн англилатин америкийн испаниевропын испанимексикийн ис" +
- "паниканад францшвейцари францфламандпортугал (бразил)европын португалмо" +
- "лдавхялбаршуулсан хятадуламжлалт хятад"
-
-var mnLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000a, 0x000a, 0x0014, 0x001c, 0x0026, 0x0026,
- 0x002e, 0x0038, 0x0038, 0x0038, 0x004c, 0x0058, 0x0068, 0x0074,
- 0x0074, 0x0082, 0x008e, 0x0096, 0x00a2, 0x00ac, 0x00ba, 0x00ba,
- 0x00ba, 0x00c6, 0x00c6, 0x00cc, 0x00cc, 0x00cc, 0x00d4, 0x00dc,
- 0x00e8, 0x00e8, 0x00f2, 0x00f8, 0x0100, 0x010a, 0x011c, 0x0128,
- 0x0134, 0x013c, 0x0144, 0x0144, 0x0152, 0x015a, 0x0164, 0x016e,
- 0x0187, 0x0193, 0x01aa, 0x01b4, 0x01c2, 0x01d2, 0x01dc, 0x01e6,
- 0x01f0, 0x01fa, 0x01fa, 0x0206, 0x0210, 0x021a, 0x0224, 0x0224,
- // Entry 40 - 7F
- 0x023a, 0x024a, 0x025f, 0x0267, 0x0278, 0x0278, 0x0278, 0x0284,
- 0x028e, 0x02a0, 0x02a8, 0x02ae, 0x02b6, 0x02b6, 0x02c2, 0x02c2,
- 0x02cc, 0x02de, 0x02ea, 0x02f8, 0x0308, 0x0308, 0x0314, 0x031c,
- 0x031c, 0x0326, 0x0332, 0x033c, 0x0350, 0x035a, 0x035a, 0x0368,
- 0x0370, 0x037a, 0x0391, 0x039b, 0x03ab, 0x03ab, 0x03b5, 0x03c3,
- 0x03d3, 0x03df, 0x03eb, 0x03f5, 0x03ff, 0x0407, 0x0407, 0x041e,
- 0x0428, 0x0428, 0x0436, 0x0457, 0x0476, 0x0476, 0x0476, 0x0476,
- 0x0493, 0x0493, 0x049d, 0x04a5, 0x04a5, 0x04b1, 0x04b1, 0x04bb,
- // Entry 80 - BF
- 0x04c5, 0x04d5, 0x04df, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051b,
- 0x052b, 0x052b, 0x0537, 0x0548, 0x0552, 0x0560, 0x056c, 0x0578,
- 0x0578, 0x0580, 0x058c, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05ac,
- 0x05b4, 0x05c2, 0x05cc, 0x05d8, 0x05e2, 0x05e8, 0x05f6, 0x0604,
- 0x0604, 0x060e, 0x0616, 0x0616, 0x0620, 0x0620, 0x062a, 0x0636,
- 0x063e, 0x0648, 0x0648, 0x0656, 0x0656, 0x0656, 0x0660, 0x0668,
- 0x0672, 0x067c, 0x067c, 0x0686, 0x068e, 0x068e, 0x068e, 0x068e,
- 0x068e, 0x068e, 0x068e, 0x0696, 0x0696, 0x0696, 0x0696, 0x0696,
- // Entry C0 - FF
- 0x0696, 0x0696, 0x0696, 0x0696, 0x0696, 0x06a2, 0x06a2, 0x06a2,
- 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a8, 0x06a8, 0x06a8, 0x06a8,
- 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8,
- 0x06a8, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba,
- 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba,
- 0x06ba, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2,
- 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06ca, 0x06ca, 0x06ca,
- 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d6, 0x06d6, 0x06eb,
- // Entry 100 - 13F
- 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06f5, 0x06f5,
- 0x06f5, 0x06f5, 0x06f5, 0x06ff, 0x06ff, 0x0714, 0x0714, 0x071e,
- 0x071e, 0x072f, 0x072f, 0x072f, 0x0737, 0x0737, 0x0737, 0x0737,
- 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0747,
- 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747,
- 0x0747, 0x0747, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
- 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
- 0x0751, 0x0751, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776,
- // Entry 140 - 17F
- 0x0776, 0x0780, 0x0780, 0x0780, 0x0780, 0x0780, 0x0793, 0x0793,
- 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793,
- 0x079f, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07b7, 0x07b7,
- 0x07b7, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cf, 0x07e7,
- 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07fa, 0x07fa, 0x07fa,
- 0x07fa, 0x080a, 0x080a, 0x081f, 0x082d, 0x082d, 0x082d, 0x082d,
- 0x082d, 0x082d, 0x082d, 0x082d, 0x083b, 0x0845, 0x0845, 0x0845,
- 0x0845, 0x0845, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f,
- // Entry 180 - 1BF
- 0x084f, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b,
- 0x085b, 0x085b, 0x0861, 0x0861, 0x0869, 0x0869, 0x0869, 0x0869,
- 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0873, 0x0873, 0x0873,
- 0x0873, 0x0873, 0x087b, 0x0889, 0x0889, 0x089e, 0x08a6, 0x08a6,
- 0x08a6, 0x08a6, 0x08a6, 0x08b2, 0x08b2, 0x08b2, 0x08c0, 0x08c0,
- 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0,
- 0x08c0, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4,
- 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08da, 0x08da, 0x08e2, 0x08e2,
- // Entry 1C0 - 1FF
- 0x08e2, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0,
- 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0,
- 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f8, 0x08f8,
- 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x0902, 0x0902, 0x0902,
- 0x0902, 0x0902, 0x0902, 0x0908, 0x0908, 0x0908, 0x0908, 0x0916,
- 0x0916, 0x0916, 0x0916, 0x0916, 0x0920, 0x0920, 0x0920, 0x0920,
- 0x0920, 0x0920, 0x0928, 0x0928, 0x0928, 0x0941, 0x0941, 0x0941,
- 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0964, 0x0975,
- // Entry 200 - 23F
- 0x0988, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b,
- 0x099b, 0x099b, 0x099b, 0x099b, 0x09b4, 0x09b4, 0x09b4, 0x09b4,
- 0x09b4, 0x09b4, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc,
- 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc,
- 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09ca, 0x09ca,
- 0x09f0, 0x09f0, 0x09f0, 0x09f0, 0x0a0d, 0x0a13, 0x0a13, 0x0a13,
- 0x0a13, 0x0a13, 0x0a13, 0x0a13, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d,
- 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a25, 0x0a25, 0x0a25,
- // Entry 240 - 27F
- 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25,
- 0x0a33, 0x0a33, 0x0a60, 0x0a60, 0x0a79, 0x0a79, 0x0a92, 0x0ab8,
- 0x0ad3, 0x0ae8, 0x0b05, 0x0b22, 0x0b4c, 0x0b67, 0x0b86, 0x0b86,
- 0x0b9b, 0x0bb6, 0x0bb6, 0x0bc4, 0x0be3, 0x0c02, 0x0c0e, 0x0c0e,
- 0x0c33, 0x0c50,
-} // Size: 1244 bytes
-
-var mrLangStr string = "" + // Size: 11013 bytes
- "अफारअबखेजियनअवेस्तनअफ्रिकान्सअकानअम्हारिकअर्गोनीजअरबीआसामीअ\u200dॅव्हेरि" +
- "कऐमराअझरबैजानीबष्किरबेलारुशियनबल्गेरियनबिस्लामाबाम्बाराबंगालीतिबेटीब्र" +
- "ेतॉनबोस्नियनकातालानचेचेनकॅमोरोकॉर्सिकनक्रीझेकचर्च स्लाव्हिकचूवाशवेल्शड" +
- "ॅनिशजर्मनदिवेहीझोंगखाएवेग्रीकइंग्रजीएस्परान्टोस्पॅनिशइस्टोनियनबास्कफार" +
- "सीफुलाहफिन्निशफिजियनफरोइजफ्रेंचपश्चिमी फ्रिशियनआयरिशस्कॉट्स गेलिकगॅलिश" +
- "ियनगुआरनीगुजरातीमांक्सहौसाहिब्रूहिंदीहिरी मॉटूक्रोएशियनहैतीयनहंगेरियनआ" +
- "र्मेनियनहरेरोइंटरलिंग्वाइंडोनेशियनइन्टरलिंगईग्बोसिचुआन यीइनूपियाकइडौआई" +
- "सलँडिकइटालियनइनुकिटुट्जपानीजावानीजजॉर्जियनकाँगोकिकुयूक्वान्यामाकझाककला" +
- "ल्लिसतख्मेरकन्नडकोरियनकनुरीकाश्मीरीकुर्दिशकोमीकोर्निशकिरगीझलॅटिनलक्झें" +
- "बर्गिशगांडालिंबूर्गिशलिंगालालाओलिथुआनियनल्यूबा-कटांगालात्व्हियनमलागसीम" +
- "ार्शलीजमाओरीमॅसेडोनियनमल्याळममंगोलियनमराठीमलयमाल्टिज्बर्मीनउरूउत्तर दे" +
- "बेलीनेपाळीडोंगाडचनॉर्वेजियन न्योर्स्कनॉर्वेजियन बोकमालदक्षिणात्य देबेल" +
- "ीनावाजोन्यान्जाऑक्सितानओजिब्वाओरोमोउडियाओस्सेटिकपंजाबीपालीपोलिशपश्तोपो" +
- "र्तुगीजक्वेचुआरोमान्शरुन्दीरोमानियनरशियनकिन्यार्वान्डासंस्कृतसर्दिनियन" +
- "सिंधीउत्तरी सामीसांगोसिंहलास्लोव्हाकस्लोव्हेनियनसामोअनशोनासोमालीअल्बान" +
- "ियनसर्बियनस्वातीसेसोथोसुंदानीजस्वीडिशस्वाहिलीतामिळतेलगूताजिकथाईतिग्रिन" +
- "्यातुर्कमेनत्स्वानाटोंगनतुर्कीसोंगातातरताहितीयनउइगुरयुक्रेनियनउर्दूउझ्" +
- "बेकव्हेंदाव्हिएतनामीओलापुकवालूनवोलोफखोसायिद्दिशयोरुबाझुआंगचीनीझुलूअचीन" +
- "ीअकोलीअडांग्मेअडिघेअफ्रिहिलीअघेमऐनूअक्कादिआनअलेउतदक्षिणात्य अल्ताईपुरा" +
- "तन इंग्रजीअंगिकाअ\u200dॅरेमाइकमापुचीअराफाओअरावकअसुअस्तुरियनअवधीबलुचीबा" +
- "लिनीसबसाबेजाबेम्बाबेनापश्चिमी बालोचीभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडोबु" +
- "रियातबगिनीसब्लिनकॅड्डोकॅरिबअत्समसिबुआनोकिगाचिब्चाछगाताईचूकीसेमारीचिनूक" +
- " जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नमध्य कुर्दिशकॉप्टिकक्राइमीन तुर्कीकाश" +
- "ुबियनदाकोतादार्गवातायताडेलॅवेयरस्लाव्हडोग्रिबदिन्काझार्माडोगरीलोअर सोर" +
- "्बियनदुआलामिडल डचजोला-फोंयीड्युलाएम्बूएफिकप्राचीन इजिप्शियनएकाजुकएलामा" +
- "इटमिडल इंग्रजीइवोन्डोफँगफिलिपिनोफॉनमिडल फ्रेंचपुरातन फ्रेंचउत्तरी फ्रि" +
- "शियनपौर्वात्य फ्रिशियनफ्रियुलियानGaगागाउझगायोबायागीझजिल्बरटीजमिडल हाय " +
- "जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन ग्रीकस्विस जर्म" +
- "नगसीग्विच’इनहैडाहवाईयनहिलीगेनॉनहिट्टितेमाँगअप्पर सॉर्बियनहूपाइबानइलोको" +
- "इंगुशलोज्बानगोम्बामशामेजुदेओ-फारसीजुदेओ-अरबीकारा-कल्पककबाइलकाचिनज्जुका" +
- "म्बाकावीकबार्डियनत्यापमाकोन्देकाबवर्दियानुकोरोखासीखोतानीसकोयरा चीनीकाल" +
- "ेंजीनकिम्बन्दुकोमी-परम्याककोंकणीकोसरियनक्पेल्लेकराचय-बाल्करकरेलियनकुरू" +
- "खशांबालाबाफियाकुमीककुतेनाईलादीनोलांगीलाह्न्डालाम्बालेझ्घीयनलाकोटामोंगो" +
- "लोझिउत्तरी ल्युरीलुबा-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युइयामादुरीसमगहीमै" +
- "थिलीमकस्सरमन्डिन्गोमसाईमोक्षमंडारमेन्डेमेरूमोरिस्येनमिडल आयरिशमाखुव्हा" +
- "-मीट्टोमीटामिकमॅकमिनांग्काबाउमान्चुमणिपुरीमोहॉकमोस्सीमुंडांगएकविध भाषाक्" +
- "रीकमिरांडिज्मारवाडीएर्झ्यामाझानदेरानीनेपोलिटाननामालो जर्मननेवारीनियासन" +
- "ियुआनक्वासिओनोगाईपुरातन नॉर्सएन्कोउत्तरी सोथोनुएरअभिजात नेवारीन्यामवेझ" +
- "ीन्यानकोलन्योरोन्झिमाओसेजओटोमान तुर्किशपंगासीनानपहलवीपाम्पान्गापापियाम" +
- "ेन्टोपालाउआनपुरातन फारसीफोनिशियनपोह्नपियनपुरातन प्रोव्हेन्सलकीशेइराजस्" +
- "थानीरापानुईरारोटोंगनरोम्बोरोमानीअरोमानियनरव्हासँडवेयाकूतसामरिटान अरॅमि" +
- "कसांबुरूसासाकसंतालीसांगुसिसिलियनस्कॉट्सदक्षिणी कुर्दिशसेनासेल्कपकोयराब" +
- "ोरो सेन्नीपुरातन आयरिशताशेल्हिटशॅनसिदामोदक्षिणात्य सामील्युल सामीइनारी" +
- " सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनको" +
- "मोरियनकाँगो स्वाहिलीअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरेनोतेतुमटाइग्रेत" +
- "िवटोकेलाऊक्लिंगोनलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनसिम्शियनतुम्बुकाटु" +
- "वालुतासाव्हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुरूटवा" +
- "ईवॉटिकवुंजोवलामोवारेवाशोवार्लपिरीकाल्मिकसोगायाओयापीसकँटोनीजझेपोटेकब्लि" +
- "सिम्बॉल्सझेनान्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावैज्ञानिक सामग्री नाह" +
- "ीझाझाआधुनिक प्रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय जर्मनऑस्ट्रेलियन इंग" +
- "्रजीकॅनडियन इंग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅटिन अमेरिकन स्पॅनिश" +
- "युरोपियन स्पॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस फ्रेंचलो सॅक्सनफ्ल" +
- "ेमिशब्राझिलियन पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हियनसर्बो-क्रोएशियनस" +
- "रलीकृत चीनीपारंपारिक चीनी"
-
-var mrLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0024, 0x0039, 0x0057, 0x0063, 0x007b, 0x0093,
- 0x009f, 0x00ae, 0x00cc, 0x00d8, 0x00f3, 0x0105, 0x0123, 0x013e,
- 0x0156, 0x016e, 0x0180, 0x0192, 0x01a7, 0x01bf, 0x01d4, 0x01e3,
- 0x01f5, 0x020d, 0x0219, 0x0222, 0x024a, 0x0259, 0x0268, 0x0277,
- 0x0286, 0x0298, 0x02aa, 0x02b3, 0x02c2, 0x02d7, 0x02f5, 0x030a,
- 0x0325, 0x0334, 0x0343, 0x0352, 0x0367, 0x0379, 0x0388, 0x039a,
- 0x03c8, 0x03d7, 0x03fc, 0x0414, 0x0426, 0x043b, 0x044d, 0x0459,
- 0x046b, 0x047a, 0x0493, 0x04ae, 0x04c0, 0x04d8, 0x04f3, 0x0502,
- // Entry 40 - 7F
- 0x0523, 0x0541, 0x055c, 0x056b, 0x0584, 0x059c, 0x05a5, 0x05bd,
- 0x05d2, 0x05ed, 0x05fc, 0x0611, 0x0629, 0x0638, 0x064a, 0x0668,
- 0x0674, 0x068f, 0x069e, 0x06ad, 0x06bf, 0x06ce, 0x06e6, 0x06fb,
- 0x0707, 0x071c, 0x072e, 0x073d, 0x0761, 0x0770, 0x078e, 0x07a3,
- 0x07ac, 0x07c7, 0x07ec, 0x080a, 0x081c, 0x0834, 0x0843, 0x0861,
- 0x0876, 0x088e, 0x089d, 0x08a6, 0x08be, 0x08cd, 0x08d9, 0x08fb,
- 0x090d, 0x091c, 0x0922, 0x095c, 0x098d, 0x09be, 0x09d0, 0x09e8,
- 0x0a00, 0x0a15, 0x0a24, 0x0a33, 0x0a4b, 0x0a5d, 0x0a69, 0x0a78,
- // Entry 80 - BF
- 0x0a87, 0x0aa2, 0x0ab7, 0x0acc, 0x0ade, 0x0af6, 0x0b05, 0x0b2f,
- 0x0b44, 0x0b5f, 0x0b6e, 0x0b8d, 0x0b9c, 0x0bae, 0x0bc9, 0x0bed,
- 0x0bff, 0x0c0b, 0x0c1d, 0x0c38, 0x0c4d, 0x0c5f, 0x0c71, 0x0c89,
- 0x0c9e, 0x0cb6, 0x0cc5, 0x0cd4, 0x0ce3, 0x0cec, 0x0d0a, 0x0d22,
- 0x0d3a, 0x0d49, 0x0d5b, 0x0d6a, 0x0d76, 0x0d8e, 0x0d9d, 0x0dbb,
- 0x0dca, 0x0ddc, 0x0df1, 0x0e0f, 0x0e21, 0x0e30, 0x0e3f, 0x0e4b,
- 0x0e60, 0x0e72, 0x0e81, 0x0e8d, 0x0e99, 0x0ea8, 0x0eb7, 0x0ecf,
- 0x0ede, 0x0ede, 0x0ef9, 0x0f05, 0x0f0e, 0x0f29, 0x0f29, 0x0f38,
- // Entry C0 - FF
- 0x0f38, 0x0f69, 0x0f91, 0x0fa3, 0x0fbe, 0x0fd0, 0x0fd0, 0x0fe2,
- 0x0fe2, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ffa, 0x0ffa, 0x1015, 0x1015,
- 0x1021, 0x1030, 0x1045, 0x1045, 0x104e, 0x104e, 0x104e, 0x104e,
- 0x105a, 0x106c, 0x106c, 0x1078, 0x1078, 0x1078, 0x10a0, 0x10b5,
- 0x10c4, 0x10d0, 0x10d0, 0x10d0, 0x10e8, 0x10e8, 0x10e8, 0x10f4,
- 0x10f4, 0x1100, 0x1100, 0x1115, 0x1127, 0x1127, 0x1136, 0x1136,
- 0x1148, 0x1157, 0x1157, 0x1166, 0x117b, 0x1187, 0x1199, 0x11ab,
- 0x11bd, 0x11c9, 0x11eb, 0x11fd, 0x1218, 0x122a, 0x123f, 0x1261,
- // Entry 100 - 13F
- 0x1276, 0x1276, 0x12a1, 0x12b9, 0x12cb, 0x12e0, 0x12ef, 0x1307,
- 0x131c, 0x1331, 0x1343, 0x1355, 0x1364, 0x1389, 0x1389, 0x1398,
- 0x13ab, 0x13c7, 0x13d9, 0x13d9, 0x13e8, 0x13f4, 0x13f4, 0x1425,
- 0x1437, 0x144c, 0x146e, 0x146e, 0x1483, 0x1483, 0x148c, 0x14a4,
- 0x14a4, 0x14ad, 0x14ad, 0x14cc, 0x14f1, 0x14f1, 0x151c, 0x1550,
- 0x1571, 0x1573, 0x1585, 0x1585, 0x1591, 0x159d, 0x159d, 0x15a6,
- 0x15c1, 0x15c1, 0x15e7, 0x1613, 0x1613, 0x1622, 0x1640, 0x164f,
- 0x1661, 0x1686, 0x16a5, 0x16a5, 0x16a5, 0x16ae, 0x16c6, 0x16d2,
- // Entry 140 - 17F
- 0x16d2, 0x16e4, 0x16e4, 0x16ff, 0x1717, 0x1723, 0x174b, 0x174b,
- 0x1757, 0x1763, 0x1763, 0x1772, 0x1781, 0x1781, 0x1781, 0x1796,
- 0x17a8, 0x17b7, 0x17d6, 0x17f2, 0x17f2, 0x180e, 0x181d, 0x182c,
- 0x1838, 0x184a, 0x1856, 0x1871, 0x1871, 0x1880, 0x1898, 0x18bc,
- 0x18bc, 0x18c8, 0x18c8, 0x18d4, 0x18e9, 0x1905, 0x1905, 0x1905,
- 0x1905, 0x191d, 0x1938, 0x195a, 0x196c, 0x1981, 0x1999, 0x19bb,
- 0x19bb, 0x19bb, 0x19d0, 0x19df, 0x19f4, 0x1a06, 0x1a06, 0x1a15,
- 0x1a2a, 0x1a3c, 0x1a4b, 0x1a63, 0x1a75, 0x1a8d, 0x1a8d, 0x1a8d,
- // Entry 180 - 1BF
- 0x1a8d, 0x1a9f, 0x1a9f, 0x1aae, 0x1aba, 0x1adf, 0x1adf, 0x1afb,
- 0x1b10, 0x1b22, 0x1b31, 0x1b40, 0x1b55, 0x1b55, 0x1b55, 0x1b6a,
- 0x1b6a, 0x1b76, 0x1b88, 0x1b9a, 0x1bb5, 0x1bc1, 0x1bc1, 0x1bd0,
- 0x1bdf, 0x1bf1, 0x1bfd, 0x1c18, 0x1c34, 0x1c5f, 0x1c6b, 0x1c7d,
- 0x1ca1, 0x1cb3, 0x1cc8, 0x1cd7, 0x1ce9, 0x1ce9, 0x1cfe, 0x1d1a,
- 0x1d29, 0x1d44, 0x1d59, 0x1d59, 0x1d59, 0x1d6e, 0x1d8f, 0x1d8f,
- 0x1daa, 0x1db6, 0x1dcc, 0x1dde, 0x1ded, 0x1dff, 0x1dff, 0x1e14,
- 0x1e14, 0x1e23, 0x1e45, 0x1e45, 0x1e54, 0x1e73, 0x1e7f, 0x1ea4,
- // Entry 1C0 - 1FF
- 0x1ebf, 0x1ed7, 0x1ee9, 0x1efb, 0x1f07, 0x1f2f, 0x1f4a, 0x1f59,
- 0x1f77, 0x1f9b, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fd2, 0x1fd2,
- 0x1fea, 0x1fea, 0x1fea, 0x2005, 0x2005, 0x203c, 0x204b, 0x204b,
- 0x2066, 0x207b, 0x2096, 0x2096, 0x2096, 0x20a8, 0x20ba, 0x20ba,
- 0x20ba, 0x20ba, 0x20d5, 0x20e4, 0x20f3, 0x2102, 0x212d, 0x2142,
- 0x2151, 0x2163, 0x2163, 0x2163, 0x2172, 0x218a, 0x219f, 0x219f,
- 0x21ca, 0x21ca, 0x21d6, 0x21d6, 0x21e8, 0x2216, 0x2238, 0x2238,
- 0x2253, 0x225c, 0x225c, 0x226e, 0x226e, 0x226e, 0x2299, 0x22b5,
- // Entry 200 - 23F
- 0x22d1, 0x22f3, 0x230b, 0x2323, 0x234b, 0x235a, 0x235a, 0x235a,
- 0x236c, 0x2378, 0x2390, 0x23a8, 0x23d0, 0x23f8, 0x240d, 0x240d,
- 0x240d, 0x241f, 0x242b, 0x243d, 0x244c, 0x2461, 0x246a, 0x247f,
- 0x247f, 0x2497, 0x24a9, 0x24a9, 0x24be, 0x24e3, 0x24fc, 0x24fc,
- 0x24fc, 0x24fc, 0x2514, 0x2514, 0x252c, 0x253e, 0x2559, 0x2571,
- 0x25a6, 0x25bb, 0x25d6, 0x25f1, 0x25fa, 0x2603, 0x2603, 0x2603,
- 0x2603, 0x2603, 0x2612, 0x2612, 0x2621, 0x2621, 0x2630, 0x263c,
- 0x2648, 0x2663, 0x2663, 0x2678, 0x2678, 0x2684, 0x268d, 0x269c,
- // Entry 240 - 27F
- 0x269c, 0x269c, 0x269c, 0x26b1, 0x26c6, 0x26ed, 0x26ed, 0x2705,
- 0x2749, 0x2755, 0x279f, 0x27ab, 0x27e3, 0x27e3, 0x280e, 0x2837,
- 0x286e, 0x2899, 0x28c4, 0x28ef, 0x292a, 0x2958, 0x2986, 0x2986,
- 0x29ae, 0x29d0, 0x29e9, 0x29fe, 0x2a38, 0x2a6c, 0x2a90, 0x2abb,
- 0x2add, 0x2b05,
-} // Size: 1244 bytes
-
-var msLangStr string = "" + // Size: 2443 bytes
- "AbkhaziaAvestanAfrikaansAkanAmharicArabAssamAvaricAymaraAzerbaijanBashki" +
- "rBelarusBulgariaBambaraBenggalaTibetBretonBosniaCataloniaChechenCorsicaC" +
- "zechSlavik GerejaChuvashWalesDenmarkJermanDivehiDzongkhaEweGreekInggeris" +
- "EsperantoSepanyolEstoniaBasqueParsiFinlandFijiFaroePerancisFrisian Barat" +
- "IrelandScots GaelicGaliciaGuaraniGujeratManxHausaIbraniHindiCroatiaHaiti" +
- "HungaryArmeniaInterlinguaIndonesiaInterlingueIgboSichuan YiIcelandItaliI" +
- "nuktitutJepunJawaGeorgiaKongoKikuyaKazakhstanKalaallisutKhmerKannadaKore" +
- "aKashmirKurdishCornishKirghizLatinLuxembourgGandaLingalaLaosLithuaniaLub" +
- "a-KatangaLatviaMalagasyMaoriMacedoniaMalayalamMongoliaMarathiBahasa Mela" +
- "yuMaltaBurmaNdebele UtaraNepalBelandaNynorsk NorwayBokmål NorwayNyanjaOc" +
- "citaniaOromoOriyaOssetePunjabiPolandPashtoPortugisQuechuaRomanshRundiRom" +
- "aniaRusiaKinyarwandaSanskritSindhiSami UtaraSangoSinhalaSlovakSloveniaSa" +
- "moaShonaSomaliAlbaniaSerbiaSwatiSotho SelatanSundaSwedenSwahiliTamilTelu" +
- "guTajikThaiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkraine" +
- "UrduUzbekistanVendaVietnamWolofXhosaYiddishYorubaCinaZuluAkoliAdygheArab" +
- " TunisiaAghemAltai SelatanMapucheArab AlgeriaArab MaghribiArab MesirAsuB" +
- "aluchiBasaaBamunGhomalaBejaBembaBenaBafutBalochi BaratKomBishnupriyaBrah" +
- "uiBodoAkooseBuriatBuluMedumbaCayugaChigaMariCherokeeKurdi SoraniCopticTu" +
- "rki KrimeaTaitaZarmaDogriLower SorbianDualaJola-FonyiDazagaEmbuEfikEwond" +
- "oFilipinaGaGagauzGbayaZoroastrian DariGilakiGreek PurbaJerman Switzerlan" +
- "dGusiiHawaiiUpper SorbianIbibioNgombaMachameKabyleKambaKanembuMakondeKab" +
- "uverdianuKoyra ChiiniKhowarKakoKalenjinKomi-PermyakKonkaniShambalaBafiaC" +
- "olognianLangiLahndaLakotaLoziLuri UtaraLuba-LuluaLuoMizoLuyiaMafaMasaiMa" +
- "baMeruMorisyenMakhuwa-MeettoMeta’ManipuriMohawkMundangMyeneMazanderaniNa" +
- "maJerman RendahKwasioNgiemboonN’koSotho UtaraNuerNyankoleKʼicheʼRomboRwa" +
- "SamburuNgambaySanguKurdish SelatanSenecaSenaKoyraboro SenniTachelhitChad" +
- "ian ArabSami SelatanLule SamiInari SamiSkolt SamiSahoComoriaCongo Swahil" +
- "iTesoTetumKlingonTalyshTok PisinTarokoTumbukaTasawaqTamazight Atlas Teng" +
- "ahBahasa Tidak DiketahuiVaiVunjoWalserWarlpiriSogaYangbenYembaTamazight " +
- "Maghribi StandardTiada kandungan linguistikZazaArab Standard ModenJerman" +
- " AustriaJerman Halus SwitzerlandInggeris AustraliaInggeris KanadaInggeri" +
- "s BritishInggeris ASSepanyol Amerika LatinSepanyol EropahSepanyol Mexico" +
- "Perancis KanadaPerancis SwitzerlandSaxon RendahFlemishPortugis BrazilPor" +
- "tugis EropahMoldaviaSerboCroatiaCina RingkasCina Tradisional"
-
-var msLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x000f, 0x0018, 0x001c, 0x0023, 0x0023,
- 0x0027, 0x002c, 0x0032, 0x0038, 0x0042, 0x0049, 0x0050, 0x0058,
- 0x0058, 0x005f, 0x0067, 0x006c, 0x0072, 0x0078, 0x0081, 0x0088,
- 0x0088, 0x008f, 0x008f, 0x0094, 0x00a1, 0x00a8, 0x00ad, 0x00b4,
- 0x00ba, 0x00c0, 0x00c8, 0x00cb, 0x00d0, 0x00d8, 0x00e1, 0x00e9,
- 0x00f0, 0x00f6, 0x00fb, 0x00fb, 0x0102, 0x0106, 0x010b, 0x0113,
- 0x0120, 0x0127, 0x0133, 0x013a, 0x0141, 0x0148, 0x014c, 0x0151,
- 0x0157, 0x015c, 0x015c, 0x0163, 0x0168, 0x016f, 0x0176, 0x0176,
- // Entry 40 - 7F
- 0x0181, 0x018a, 0x0195, 0x0199, 0x01a3, 0x01a3, 0x01a3, 0x01aa,
- 0x01af, 0x01b8, 0x01bd, 0x01c1, 0x01c8, 0x01cd, 0x01d3, 0x01d3,
- 0x01dd, 0x01e8, 0x01ed, 0x01f4, 0x01f9, 0x01f9, 0x0200, 0x0207,
- 0x0207, 0x020e, 0x0215, 0x021a, 0x0224, 0x0229, 0x0229, 0x0230,
- 0x0234, 0x023d, 0x0249, 0x024f, 0x0257, 0x0257, 0x025c, 0x0265,
- 0x026e, 0x0276, 0x027d, 0x028a, 0x028f, 0x0294, 0x0294, 0x02a1,
- 0x02a6, 0x02a6, 0x02ad, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02cf,
- 0x02d8, 0x02d8, 0x02dd, 0x02e2, 0x02e8, 0x02ef, 0x02ef, 0x02f5,
- // Entry 80 - BF
- 0x02fb, 0x0303, 0x030a, 0x0311, 0x0316, 0x031d, 0x0322, 0x032d,
- 0x0335, 0x0335, 0x033b, 0x0345, 0x034a, 0x0351, 0x0357, 0x035f,
- 0x0364, 0x0369, 0x036f, 0x0376, 0x037c, 0x0381, 0x038e, 0x0393,
- 0x0399, 0x03a0, 0x03a5, 0x03ab, 0x03b0, 0x03b4, 0x03bc, 0x03c3,
- 0x03c9, 0x03ce, 0x03d3, 0x03d9, 0x03de, 0x03e4, 0x03ea, 0x03f1,
- 0x03f5, 0x03ff, 0x0404, 0x040b, 0x040b, 0x040b, 0x0410, 0x0415,
- 0x041c, 0x0422, 0x0422, 0x0426, 0x042a, 0x042a, 0x042f, 0x042f,
- 0x0435, 0x0441, 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
- // Entry C0 - FF
- 0x0446, 0x0453, 0x0453, 0x0453, 0x0453, 0x045a, 0x045a, 0x045a,
- 0x0466, 0x0466, 0x0473, 0x047d, 0x0480, 0x0480, 0x0480, 0x0480,
- 0x0480, 0x0487, 0x0487, 0x0487, 0x048c, 0x0491, 0x0491, 0x0498,
- 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04aa, 0x04aa, 0x04b7, 0x04b7,
- 0x04b7, 0x04b7, 0x04b7, 0x04ba, 0x04ba, 0x04c5, 0x04c5, 0x04c5,
- 0x04cb, 0x04cf, 0x04d5, 0x04db, 0x04db, 0x04df, 0x04df, 0x04e6,
- 0x04e6, 0x04e6, 0x04ec, 0x04ec, 0x04ec, 0x04f1, 0x04f1, 0x04f1,
- 0x04f1, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04fd, 0x04fd, 0x0509,
- // Entry 100 - 13F
- 0x050f, 0x050f, 0x051b, 0x051b, 0x051b, 0x051b, 0x0520, 0x0520,
- 0x0520, 0x0520, 0x0520, 0x0525, 0x052a, 0x0537, 0x0537, 0x053c,
- 0x053c, 0x0546, 0x0546, 0x054c, 0x0550, 0x0554, 0x0554, 0x0554,
- 0x0554, 0x0554, 0x0554, 0x0554, 0x055a, 0x055a, 0x055a, 0x0562,
- 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562,
- 0x0562, 0x0564, 0x056a, 0x056a, 0x056a, 0x056f, 0x057f, 0x057f,
- 0x057f, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585,
- 0x0585, 0x0590, 0x05a2, 0x05a2, 0x05a2, 0x05a7, 0x05a7, 0x05a7,
- // Entry 140 - 17F
- 0x05a7, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ba, 0x05ba,
- 0x05ba, 0x05ba, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0,
- 0x05c6, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05d3, 0x05d3,
- 0x05d3, 0x05d8, 0x05d8, 0x05d8, 0x05df, 0x05df, 0x05e6, 0x05f2,
- 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05fe, 0x0604, 0x0604,
- 0x0608, 0x0610, 0x0610, 0x061c, 0x0623, 0x0623, 0x0623, 0x0623,
- 0x0623, 0x0623, 0x0623, 0x0623, 0x062b, 0x0630, 0x0639, 0x0639,
- 0x0639, 0x0639, 0x063e, 0x0644, 0x0644, 0x0644, 0x0644, 0x0644,
- // Entry 180 - 1BF
- 0x0644, 0x064a, 0x064a, 0x064a, 0x064e, 0x0658, 0x0658, 0x0662,
- 0x0662, 0x0662, 0x0665, 0x0669, 0x066e, 0x066e, 0x066e, 0x066e,
- 0x0672, 0x0672, 0x0672, 0x0672, 0x0672, 0x0677, 0x067b, 0x067b,
- 0x067b, 0x067b, 0x067f, 0x0687, 0x0687, 0x0695, 0x069c, 0x069c,
- 0x069c, 0x069c, 0x06a4, 0x06aa, 0x06aa, 0x06aa, 0x06b1, 0x06b1,
- 0x06b1, 0x06b1, 0x06b1, 0x06b1, 0x06b6, 0x06b6, 0x06c1, 0x06c1,
- 0x06c1, 0x06c5, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d8,
- 0x06e1, 0x06e1, 0x06e1, 0x06e1, 0x06e7, 0x06f2, 0x06f6, 0x06f6,
- // Entry 1C0 - 1FF
- 0x06f6, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe,
- 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe,
- 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x0707, 0x0707,
- 0x0707, 0x0707, 0x0707, 0x0707, 0x0707, 0x070c, 0x070c, 0x070c,
- 0x070c, 0x070c, 0x070c, 0x070f, 0x070f, 0x070f, 0x070f, 0x0716,
- 0x0716, 0x0716, 0x0716, 0x071d, 0x0722, 0x0722, 0x0722, 0x0722,
- 0x0731, 0x0737, 0x073b, 0x073b, 0x073b, 0x074a, 0x074a, 0x074a,
- 0x0753, 0x0753, 0x075f, 0x075f, 0x075f, 0x075f, 0x076b, 0x0774,
- // Entry 200 - 23F
- 0x077e, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x078c, 0x078c,
- 0x078c, 0x078c, 0x078c, 0x0793, 0x07a0, 0x07a0, 0x07a0, 0x07a0,
- 0x07a0, 0x07a0, 0x07a4, 0x07a4, 0x07a9, 0x07a9, 0x07a9, 0x07a9,
- 0x07a9, 0x07b0, 0x07b0, 0x07b6, 0x07b6, 0x07b6, 0x07bf, 0x07bf,
- 0x07c5, 0x07c5, 0x07c5, 0x07c5, 0x07cc, 0x07cc, 0x07d3, 0x07d3,
- 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07ff, 0x0802, 0x0802, 0x0802,
- 0x0802, 0x0802, 0x0802, 0x0802, 0x0807, 0x080d, 0x080d, 0x080d,
- 0x080d, 0x0815, 0x0815, 0x0815, 0x0815, 0x0819, 0x0819, 0x0819,
- // Entry 240 - 27F
- 0x0820, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825,
- 0x0840, 0x0840, 0x085a, 0x085e, 0x0871, 0x0871, 0x087f, 0x0897,
- 0x08a9, 0x08b8, 0x08c8, 0x08d3, 0x08e9, 0x08f8, 0x0907, 0x0907,
- 0x0916, 0x092a, 0x0936, 0x093d, 0x094c, 0x095b, 0x0963, 0x096f,
- 0x097b, 0x098b,
-} // Size: 1244 bytes
-
-var myLangStr string = "" + // Size: 6975 bytes
- "အဘ်ခါဇီရန်အာဖရိကန်းစ်အာကိန်အန်ဟာရစျချအာရေဗီအက္စမီစ်အော်ဇောဘိုင်ဂျောနီဘက်" +
- "ရှ်ကီအာဘီလာရုဘူဂေးရီးယားဘန်ဘာရာဘင်္ဂါလီတိဘက်ဘရီတွန်ဘော့စ်နီးယားကာတာလန်" +
- "ချေချင်းခိုစီကန်ခရီးချက်ချူဗက်ရှ်ဝေလဒိန်းမတ်ဂျာမန်ဒွန်ကာဝီဂရိအင်္ဂလိပ်" +
- "အက္စပရန္တိုစပိန်အက်စ်တိုးနီးရန်းဘစ်က္ကီပါရှန်ဖင်နစ်ရှ်ဖီဂျီဖာရိုအိစ်ပြ" +
- "င်သစ်အနောက်ပိုင်း ဖရီစီရန်အိုင်းရစ်ဂါလာစီယံဂူအာရာနီဂူဂျာရသီမန်းဇ်ဟာဥစာ" +
- "ဟီးဘရူးဟိန္ဒီခရိုအေရှန်ဟာအီတီအန်ဟန်ဂေရီအာမေနီအန်အင်ဒိုနီးရှားအစ္ဂဘိုစီ" +
- "ချွမ် ရီအိုင်စ်လန္ဒီအီတလီအီနုခ်တီတုဂျပန်ဂျာဗားနီးစ်ဂျော်ဂျီယန်ကွန်ဂိုခ" +
- "ီခူယူခါဇါခ်ခလာအ်လီဆပ်ခမာကန္နာဒါကိုးရီးယားကက်ရှ်မီရီကဒ်ခိုနီရှ်ခရူဂစ်လက" +
- "်တင်လူဇင်ဘတ်က်ဂန်ဒီလင်ဂါလာလာအိုလစ္သူအာနီယံလူဘာ-ခါတန်ဂါလက္ဘီအံအာလာဂါစီမ" +
- "ောင်းရီ (နယူးဇီလန်ကျွန်းရှိ ပင်ရင်းတိုင်းရင်းသားလူမျိုး)မာစီဒိုနီယံမလေ" +
- "းရာလမ်မွန်ဂိုလီးယန်းမာရသီမလေးမောလ္တီစ်ဗမာတောင်ဒီဘီလီနီပါလီဒတ်ချ်နော်ဝေ" +
- "း နီးနော်စ်ခ်ဘွတ်မော်လ်အိုရိုမိုအိုရီရာပန်ချာပီပါဠိပိုလန်ပါရှ်တိုပေါ်တ" +
- "ူဂီခက်ချ်ဝါရောမရွန်ဒီရိုမေနီယားရုရှကင်ရာဝန်ဒါသင်္သကရိုက်စင်ဒီတောင်ဆာမိ" +
- "ဆမ်ဂိုဆင်ဟာလစလိုဗက်စလိုဗေးနီးယမ်းရှိနာဆိုမာလီအယ်လ်ဘေးနီးယန်းဆားဗီးယန်း" +
- "ဆွီဒင်ဆြာဟီလီတမီးလ်တီလီဂုတာဂျစ်ထိုင်းတီဂ်ရင်ရာတခ္မင်တွန်ဂါတာကစ်တတာဝီဂါ" +
- "ယူကရိန်းအော်ဒူဦးဇ်ဘက်ဗီယက်နမ်ဝူလိုဖ်ဇိုစာရိုရုဘာတရုတ်ဇူလူအာဂ်ဟိန်းအင်္" +
- "ဂလိပ်စာဟောင်းမာပုချီအာစုဘာလီဘာဆာဘိန်ဘာဘီနာအနောက်ပိုင်းဘဲလိုချီဗိုဒိုချ" +
- "ီဂါချာရိုကီဆိုရာနီ ကူဒစ်ရှ်ဒါကိုတာတိုင်တာဒီလာဝဲဇာမာအောက်ဆိုဘီအမ်ဒူအလာအ" +
- "လယ်ပိုင်း ဒတ်ချ်ဂျိုလာ-ဖွန်ရီအမ်ဘူရှေးဟောင်း အီဂျစ်အလယ်ပိုင်း အင်္ဂလိပ" +
- "်ဖိလစ်ပီနိုအလယ်ပိုင်းပြင်သစ်ပြင်သစ်ဟောင်းမြောက်ပိုင်း ဖရီစီရန်အရှေ့ပို" +
- "င်း ဖရီစီရန်ဂါဂါဇ်အလယ်ပိုင်းအမြင့်ဂျာမန်ရှေးဟောင်း ဂရိဆွစ် ဂျာမန်ဂူစီး" +
- "ဟာဝေယံအပေါ်ဆိုဘီအမ်ဂွမ်ဘာမချာမီဂျူဒီယို-ပါရှန်ဂျူဒီယို-အာရေဗျခဘိုင်လ်က" +
- "ချင်ခမ်ဘာမာခွန်ဒီခဘူဗာဒီအာနူခါစီခိုရာ ချီအီနီခါလိမ်ဂျင်ကိုမီ-ပါမြက်ကွန" +
- "်ကနီရှန်ဘာလာဘာဖီအာလန်ဂီလာကိုတာမြောက်လူရီလူအိုလူရီအာမာဆိုင်မီရုမိုရှီစ်" +
- "ယန်းအလယ်ပိုင်း အိုင်းရစ်မာခူဝါ-မီအီတိုမီတာမန်ချူးမိုဟော့ခ်မန်ဒန်းအကြိမ" +
- "်များစွာ ဘာသာစကားများမာဇန်ဒါရန်နီနာမာအနိမ့် ဂျာမန်ဝါဆီအိုနကိုနူအာယန်ကိ" +
- "ုလီပါရှန် အဟောင်းခီခ်အီချီရွမ်ဘိုဝါဆန်ဘူရုဆန်ဂုစကော့စီနာခိုရာဘိုရို ဆမ" +
- "်နီအိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင်ပိုင်း ဆာမိလူလီ ဆာမိအီနာရီ ဆာမ" +
- "ိခိုလ် ဆာမိခွန်ဂို စွာဟီလီတီဆိုတာဆာဝါခ်အလယ်အက်တ်လက်စ် တာမာဇိုက်မူလရင်း" +
- "မြစ်ဗိုင်ဗန်ဂျိုဝေါလ်ပါရီဆိုဂါမိုရိုကန် တွမ်မဇိုတ် စံဘာသာစကား နှင့် ပတ" +
- "်သက် သောအရာမရှိအရေဗီ(ပုံမှန်)ဩစတြီးယ ဂျာမန်ဆွစ် အမြင့် ဂျာမန်ဩစတြေးလျှ" +
- " အင်္ဂလိပ်ကနေဒါ အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂလိပ်လက်တင်အမေရိ" +
- "က စပိန်စပိန်(ဥရောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဖလီမစ်ရှ်ဘရာဇီး ပေါ်တူဂီဥရ" +
- "ောပ ပေါ်တူဂီရိုးရှင်းသော တရုတ်ရှေးရိုးစဉ်လာ တရုတ်"
-
-var myLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x001e, 0x001e, 0x003f, 0x0051, 0x006f, 0x006f,
- 0x0081, 0x0099, 0x0099, 0x0099, 0x00cf, 0x00ed, 0x00ff, 0x0120,
- 0x0120, 0x0135, 0x014d, 0x015c, 0x0171, 0x0195, 0x01aa, 0x01c2,
- 0x01c2, 0x01da, 0x01e6, 0x01f2, 0x01f2, 0x020d, 0x0216, 0x022e,
- 0x0240, 0x0240, 0x0252, 0x0258, 0x0261, 0x027c, 0x029d, 0x02ac,
- 0x02dc, 0x02f1, 0x0303, 0x0303, 0x031e, 0x032d, 0x0348, 0x035d,
- 0x039a, 0x03b5, 0x03b5, 0x03cd, 0x03e5, 0x03fd, 0x040f, 0x041e,
- 0x0433, 0x0445, 0x0445, 0x0463, 0x047e, 0x0493, 0x04ae, 0x04ae,
- // Entry 40 - 7F
- 0x04ae, 0x04d5, 0x04d5, 0x04ea, 0x0506, 0x0506, 0x0506, 0x052a,
- 0x0539, 0x0557, 0x0566, 0x0587, 0x05a8, 0x05bd, 0x05cf, 0x05cf,
- 0x05e1, 0x05ff, 0x0608, 0x061d, 0x063b, 0x063b, 0x0659, 0x0662,
- 0x0662, 0x067a, 0x068c, 0x069e, 0x06bc, 0x06cb, 0x06cb, 0x06e0,
- 0x06ef, 0x0710, 0x0732, 0x0747, 0x075f, 0x075f, 0x0802, 0x0823,
- 0x083e, 0x0868, 0x0877, 0x0883, 0x089e, 0x08a7, 0x08a7, 0x08c8,
- 0x08da, 0x08da, 0x08ec, 0x0923, 0x0941, 0x0941, 0x0941, 0x0941,
- 0x0941, 0x0941, 0x095c, 0x0971, 0x0971, 0x0989, 0x0995, 0x09a7,
- // Entry 80 - BF
- 0x09bf, 0x09d7, 0x09ef, 0x09fb, 0x0a0d, 0x0a2b, 0x0a37, 0x0a55,
- 0x0a76, 0x0a76, 0x0a85, 0x0aa0, 0x0ab2, 0x0ac4, 0x0ad9, 0x0b03,
- 0x0b03, 0x0b12, 0x0b27, 0x0b54, 0x0b72, 0x0b72, 0x0b72, 0x0b72,
- 0x0b84, 0x0b99, 0x0bab, 0x0bbd, 0x0bcf, 0x0be1, 0x0bfc, 0x0c0e,
- 0x0c0e, 0x0c20, 0x0c2f, 0x0c2f, 0x0c38, 0x0c38, 0x0c44, 0x0c5c,
- 0x0c6e, 0x0c83, 0x0c83, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cbf,
- 0x0cbf, 0x0cd4, 0x0cd4, 0x0ce3, 0x0cef, 0x0cef, 0x0cef, 0x0cef,
- 0x0cef, 0x0cef, 0x0cef, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a,
- // Entry C0 - FF
- 0x0d0a, 0x0d0a, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d52, 0x0d52, 0x0d52,
- 0x0d52, 0x0d52, 0x0d52, 0x0d52, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d5e,
- 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d76, 0x0d76, 0x0d76, 0x0d76,
- 0x0d76, 0x0d88, 0x0d88, 0x0d94, 0x0d94, 0x0d94, 0x0dd0, 0x0dd0,
- 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0,
- 0x0dd0, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2,
- 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0df1, 0x0df1, 0x0df1,
- 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0e09, 0x0e09, 0x0e37,
- // Entry 100 - 13F
- 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e4c, 0x0e4c, 0x0e61, 0x0e73,
- 0x0e73, 0x0e73, 0x0e73, 0x0e7f, 0x0e7f, 0x0ea6, 0x0ea6, 0x0eb5,
- 0x0ee6, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f1a, 0x0f1a, 0x0f1a, 0x0f4b,
- 0x0f4b, 0x0f4b, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0fa3,
- 0x0fa3, 0x0fa3, 0x0fa3, 0x0fd6, 0x0ffd, 0x0ffd, 0x103a, 0x1074,
- 0x1074, 0x1074, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086,
- 0x1086, 0x1086, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8,
- 0x10c8, 0x10f0, 0x110f, 0x110f, 0x110f, 0x111e, 0x111e, 0x111e,
- // Entry 140 - 17F
- 0x111e, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1157, 0x1157,
- 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157,
- 0x1169, 0x117b, 0x11a6, 0x11d1, 0x11d1, 0x11d1, 0x11e9, 0x11f8,
- 0x11f8, 0x1207, 0x1207, 0x1207, 0x1207, 0x1207, 0x121f, 0x1240,
- 0x1240, 0x1240, 0x1240, 0x124c, 0x124c, 0x1271, 0x1271, 0x1271,
- 0x1271, 0x128f, 0x128f, 0x12b1, 0x12c6, 0x12c6, 0x12c6, 0x12c6,
- 0x12c6, 0x12c6, 0x12c6, 0x12c6, 0x12de, 0x12f0, 0x12f0, 0x12f0,
- 0x12f0, 0x12f0, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff,
- // Entry 180 - 1BF
- 0x12ff, 0x1314, 0x1314, 0x1314, 0x1314, 0x1332, 0x1332, 0x1332,
- 0x1332, 0x1332, 0x1341, 0x1341, 0x1353, 0x1353, 0x1353, 0x1353,
- 0x1353, 0x1353, 0x1353, 0x1353, 0x1353, 0x1368, 0x1368, 0x1368,
- 0x1368, 0x1368, 0x1374, 0x1398, 0x13d2, 0x13fa, 0x1406, 0x1406,
- 0x1406, 0x141b, 0x141b, 0x1436, 0x1436, 0x1436, 0x144b, 0x1497,
- 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x14bb, 0x14bb,
- 0x14bb, 0x14c7, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x1501,
- 0x1501, 0x1501, 0x1501, 0x1501, 0x150d, 0x150d, 0x1519, 0x1519,
- // Entry 1C0 - 1FF
- 0x1519, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531,
- 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1559, 0x1559,
- 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1574, 0x1574,
- 0x1574, 0x1574, 0x1574, 0x1574, 0x1574, 0x1589, 0x1589, 0x1589,
- 0x1589, 0x1589, 0x1589, 0x158f, 0x158f, 0x158f, 0x158f, 0x15a4,
- 0x15a4, 0x15a4, 0x15a4, 0x15a4, 0x15b3, 0x15b3, 0x15c2, 0x15c2,
- 0x15c2, 0x15c2, 0x15ce, 0x15ce, 0x15ce, 0x15ff, 0x162d, 0x162d,
- 0x164e, 0x165d, 0x165d, 0x165d, 0x165d, 0x165d, 0x168b, 0x16a4,
- // Entry 200 - 23F
- 0x16c3, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df,
- 0x16df, 0x16df, 0x16df, 0x16df, 0x170a, 0x170a, 0x170a, 0x170a,
- 0x170a, 0x170a, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719,
- 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719,
- 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1731, 0x1731,
- 0x1777, 0x1777, 0x1777, 0x1777, 0x1798, 0x17a7, 0x17a7, 0x17a7,
- 0x17a7, 0x17a7, 0x17a7, 0x17a7, 0x17bc, 0x17bc, 0x17bc, 0x17bc,
- 0x17bc, 0x17d7, 0x17d7, 0x17d7, 0x17d7, 0x17e6, 0x17e6, 0x17e6,
- // Entry 240 - 27F
- 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6,
- 0x1827, 0x1827, 0x1881, 0x1881, 0x18a7, 0x18a7, 0x18cf, 0x1901,
- 0x1938, 0x1963, 0x1997, 0x19cb, 0x19ff, 0x1a1f, 0x1a1f, 0x1a1f,
- 0x1a44, 0x1a66, 0x1a66, 0x1a81, 0x1aac, 0x1ad4, 0x1ad4, 0x1ad4,
- 0x1b08, 0x1b3f,
-} // Size: 1244 bytes
-
-var neLangStr string = "" + // Size: 12514 bytes
- "अफारअब्खाजियालीअवेस्तानअफ्रिकान्सआकानअम्हारिकअरागोनीअरबीआसामीअवारिकऐमारा" +
- "अजरबैजानीबास्किरबेलारुसीबुल्गेरियालीबिस्लामबाम्बाराबंगालीतिब्बतीब्रेटन" +
- "बोस्नियालीक्याटालनचेचेनचामोर्रोकोर्सिकनक्रीचेकचर्च स्लाभिकचुभासवेल्शडे" +
- "निसजर्मनदिबेहीजोङ्खाइवीग्रीकअङ्ग्रेजीएस्पेरान्तोस्पेनीइस्टोनियालीबास्क" +
- "फारसीफुलाहफिनिसफिजियालीफारोजफ्रान्सेलीफ्रिजीयनआयरिसस्कटिस गाएलिकगलिसिय" +
- "ालीगुवारानीगुजरातीमान्क्सहाउसाहिब्रुहिन्दीहिरी मोटुक्रोयसियालीहैटियाली" +
- "हङ्गेरियालीआर्मेनियालीहेरेरोइन्टर्लिङ्गुआइन्डोनेसियालीइन्टरलिङ्ग्वेइग्" +
- "बोसिचुआन यिइनुपिआक्इडोआइसल्यान्डियालीइटालेलीइनुक्टिटुटजापानीजाभानीजर्ज" +
- "ियालीकोङ्गोकिकुयुकुआन्यामाकाजाखकालालिसुटखमेरकन्नाडाकोरियालीकानुरीकास्म" +
- "िरीकुर्दीकोमीकोर्निसकिर्गिजल्याटिनलक्जेम्बर्गीगान्डालिम्बुर्गीलिङ्गाला" +
- "लाओलिथुआनियालीलुबा-काताङ्गालात्भियालीमलागासीमार्सालीमाओरीम्यासेडोनियाल" +
- "ीमलयालममङ्गोलियालीमराठीमलायमाल्टिजबर्मेलीनाउरूउत्तरी न्डेबेलेनेपालीन्द" +
- "ोन्गाडचनर्वेली नाइनोर्स्कनर्वेली बोकमालनाभाजोन्यान्जाअक्सिटनओजिब्वाओरो" +
- "मोउडियाअोस्सेटिकपंजाबीपालीपोलिसपास्तोपोर्तुगीक्वेचुवारोमानिसरुन्डीरोमा" +
- "नियालीरूसीकिन्यारवान्डासंस्कृतसिन्धीउत्तरी सामीसाङ्गोसिन्हालीस्लोभाकिय" +
- "ालीस्लोभेनियालीशोनासोमालीअल्बानियालीसर्बियालीस्वातीस्विडिसस्वाहिलीतामि" +
- "लतेलुगुताजिकथाईतिग्रीन्याटर्कमेनटोङ्गनटर्किशतातारउइघुरयुक्रेनीउर्दुउज्" +
- "बेकीभियतनामीवुलुफखोसायिद्दिसयोरूवाचिनियाँजुलुअचाइनिजअकोलीअदाङमेअदिघेअफ" +
- "्रिहिलीआघेमअइनुअक्कादियालीअलाबामाअलेउटघेग अल्बानियालीपुरातन अङ्ग्रेजीअ" +
- "ङ्गिकाअरामाइकमापुचेअराओनाअरापाहोअल्जेरियाली अरबीअरावाकमोरोक्कोली अरबीइ" +
- "जिप्ट अरबीआसुअमेरिकी साङ्केतिक भाषाअस्टुरियालीकोटावाअवधीबालुचीबालीबाभा" +
- "रियालीबासाबामुनबाताक तोबाघोमालाबेजाबेम्बाबेटावीबेनाबाफुटबडागापश्चिम बा" +
- "लोचीभोजपुरीबिकोलबिनीबन्जारकोमविष्णुप्रियाबाख्तिआरीब्रजब्राहुइबोडोअकुजब" +
- "ुरिआतबुगिनियालीबुलुब्लिनमेडुम्बाकाड्डोक्यारिबकायुगाअट्सामसेबुआनोचिगाचि" +
- "ब्चाचागाटाईचुकेसेमारीचिनुक जार्गनचोक्टावचिपेव्यानचेरोकीचेयेन्नेकेन्द्र" +
- "ीय कुर्दीकोप्टिककापिज्नोनक्रिमियाली तुर्ककासुवियनडाकोटादार्ग्वाताइतादे" +
- "लावरदोग्रिबदिन्काजर्माडोगरीतल्लो सोर्बियनकेन्द्रीय दुसुनदुवालामध्य डचज" +
- "ोला-फोनिलद्युलादाजागाएम्बुएफिकएमिलियालीपुरातन इजिप्टीएकाजुकएलामाइटमध्य" +
- " अङ्ग्रेजीकेन्द्रीय युपिकइवोन्डोएक्सट्रेमादुरालीफाङफिलिपिनीफोनकाहुन फ्रा" +
- "न्सेलीमध्य फ्रान्सेलीपुरातन फ्रान्सेलीअर्पितानउत्तरी फ्रिजीपूर्वी फ्रि" +
- "सियालीफ्रिउलियालीगागगाउजगान चिनियाँगायोग्बायागिजगिल्बर्टीगिलाकीमध्य उच" +
- "्च जर्मनपुरातन उच्च जर्मनगोवा कोन्कानीगोन्डीगोरोन्टालोगोथिकग्रेबोपुरात" +
- "न ग्रिकस्वीस जर्मनफ्राफ्रागुसीगुइचिनहाइदाहक्का चिनियाँहवाइयनफिजी हिन्द" +
- "ीहिलिगायनोनहिट्टिटेहमोङमाथिल्लो सोर्बियनहुपाइबानइबिबियोइयोकोइन्गसइन्ग्" +
- "रियालीजमैकाली क्रेओले अङ्ग्रेजीलोज्बानन्गोम्बामाचामेजुडियो-फारसीजुडियो" +
- "-अरबीजुटिसकारा-काल्पाककाबिलकाचिनज्जुकाम्बाकावीकाबार्दियालीकानेम्बुमाकोन्" +
- "डेकाबुभेर्डियानुकेनयाङकोरोकाइनगाङखासीखोटानीकोयरा चिनीखोवारकिर्मान्जकीक" +
- "ाकोकालेन्जिनकिम्बुन्डुकोमी-पर्म्याककोन्कानीकोस्रालीक्पेल्लेकाराचाय-बाल" +
- "्करक्रिओकिनाराय-एकारेलियालीकुरुखशाम्बालाबाफियाकोलोग्नियालीकुमिककुतेनाइ" +
- "लाडिनोलाङ्गीलाहन्डालाम्बालाज्घियालीलिङ्गुवा फ्राङ्का नोभालिगुरियालीलिभ" +
- "ोनियालीलाकोतालोम्बार्डमोङ्गोलोजीउत्तरी लुरीलाट्गालीलुबा-लुलुआलुइसेनोलु" +
- "न्डालुओमिजोलुइयासाहित्यिक चिनियाँलाजमादुरेसेमाफामगधीमैथिलीमाकासारमान्द" +
- "िङोमसाईमाबामोक्षमन्दरमेन्डेमेरूमोरिसेनमध्य आयरिसमाखुवा-मिट्टोमेटामिकमा" +
- "कमिनाङकाबाउमान्चुमनिपुरीमोहकमोस्सीमुन्डाङबहुभाषाक्रिकमिरान्डीमाडवारीमे" +
- "न्टावाईम्येनेइर्ज्यामजानडेरानीमिन नान चिनियाँनेपोलिटाननामातल्लो जर्मनन" +
- "ेवारीनियासनिउएनअओ नागाक्वासियोन्गिएम्बुननोगाइपुरानो नोर्सेनोभियलनकोउत्" +
- "तरी सोथोनुएरपरम्परागत नेवारीन्यामवेजीन्यान्कोलन्योरोनजिमाओसागेअटोमन तु" +
- "र्कीपाङ्गासिनानपाहलावीपामपाङ्गापापियामेन्तोपालाउवालीपिकार्डपेन्सिलभानि" +
- "याली जर्मनपुरातन फारसीपालाटिन जर्मनफोनिसियालीपिएडमोन्तेसेपोन्टिकपुरातन" +
- " प्रोभेन्कालकिचेचिम्बोराजो उच्चस्थान किचुआराजस्थानीरोम्बोअरोमानीयालीर्" +
- "\u200cवासाम्बुरूसान्तालीन्गामबायसाङ्गुदक्षिणी कुर्दिशसेनाकोयराबोरो सेन्न" +
- "ीपुरातन आयरीसटाचेल्हिटचाड अरबीतल्लो सिलेसियालीदक्षिणी सामीलुले सामीइना" +
- "री सामीस्कोइट सामीस्रानान टोङ्गोसुकुमासुसूसुमेरियालीकोमोरीकङ्गो स्वाहि" +
- "लीपरम्परागत सिरियाकसिरियाकटेसोक्लिङ्गनन्यास टोङ्गामुस्लिम टाटतासावाकके" +
- "न्द्रीय एट्लास टामाजिघटअज्ञात भाषाभाइमुख्य-फ्राङ्कोनियालीभुन्जोवार्ल्प" +
- "िरीकाल्मिकमिनग्रेलियालीसोगान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोर" +
- "ोक्कोन तामाजिघटभाषिक सामग्री छैनआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस" +
- " हाई जर्मनअस्ट्रेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअम" +
- "ेरिकी अङ्ग्रेजील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्य" +
- "ानेडाली फ्रान्सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुग" +
- "ीमाल्डाभियनसरलिकृत चिनियाँपरम्परागत चिनियाँ"
-
-var neLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x002d, 0x0045, 0x0063, 0x006f, 0x0087, 0x009c,
- 0x00a8, 0x00b7, 0x00c9, 0x00d8, 0x00f3, 0x0108, 0x0120, 0x0144,
- 0x0159, 0x0171, 0x0183, 0x0198, 0x01aa, 0x01c8, 0x01e0, 0x01ef,
- 0x0207, 0x021f, 0x022b, 0x0234, 0x0256, 0x0265, 0x0274, 0x0283,
- 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031c,
- 0x033d, 0x034c, 0x035b, 0x036a, 0x0379, 0x0391, 0x03a0, 0x03be,
- 0x03d6, 0x03e5, 0x040a, 0x0425, 0x043d, 0x0452, 0x0467, 0x0476,
- 0x0488, 0x049a, 0x04b3, 0x04d4, 0x04ec, 0x050d, 0x052e, 0x0540,
- // Entry 40 - 7F
- 0x0567, 0x058e, 0x05b5, 0x05c4, 0x05dd, 0x05f5, 0x05fe, 0x062b,
- 0x0640, 0x065e, 0x0670, 0x0682, 0x069d, 0x06af, 0x06c1, 0x06dc,
- 0x06eb, 0x0706, 0x0712, 0x0727, 0x073f, 0x0751, 0x0769, 0x077b,
- 0x0787, 0x079c, 0x07b1, 0x07c6, 0x07ea, 0x07fc, 0x081a, 0x0832,
- 0x083b, 0x085c, 0x0881, 0x089f, 0x08b4, 0x08cc, 0x08db, 0x0905,
- 0x0917, 0x0938, 0x0947, 0x0953, 0x0968, 0x097d, 0x098c, 0x09b7,
- 0x09c9, 0x09e1, 0x09e7, 0x0a1b, 0x0a43, 0x0a43, 0x0a55, 0x0a6d,
- 0x0a82, 0x0a97, 0x0aa6, 0x0ab5, 0x0ad0, 0x0ae2, 0x0aee, 0x0afd,
- // Entry 80 - BF
- 0x0b0f, 0x0b27, 0x0b3f, 0x0b54, 0x0b66, 0x0b84, 0x0b90, 0x0bb7,
- 0x0bcc, 0x0bcc, 0x0bde, 0x0bfd, 0x0c0f, 0x0c27, 0x0c4b, 0x0c6f,
- 0x0c6f, 0x0c7b, 0x0c8d, 0x0cae, 0x0cc9, 0x0cdb, 0x0cdb, 0x0cdb,
- 0x0cf0, 0x0d08, 0x0d17, 0x0d29, 0x0d38, 0x0d41, 0x0d5f, 0x0d74,
- 0x0d74, 0x0d86, 0x0d98, 0x0d98, 0x0da7, 0x0da7, 0x0db6, 0x0dce,
- 0x0ddd, 0x0df2, 0x0df2, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e19, 0x0e25,
- 0x0e3a, 0x0e4c, 0x0e4c, 0x0e61, 0x0e6d, 0x0e82, 0x0e91, 0x0ea3,
- 0x0eb2, 0x0eb2, 0x0ecd, 0x0ed9, 0x0ee5, 0x0f06, 0x0f1b, 0x0f2a,
- // Entry C0 - FF
- 0x0f55, 0x0f55, 0x0f83, 0x0f98, 0x0fad, 0x0fbf, 0x0fd1, 0x0fe6,
- 0x1014, 0x1026, 0x1051, 0x1070, 0x1079, 0x10b7, 0x10d8, 0x10ea,
- 0x10f6, 0x1108, 0x1114, 0x1132, 0x113e, 0x114d, 0x1169, 0x117b,
- 0x1187, 0x1199, 0x11ab, 0x11b7, 0x11c6, 0x11d5, 0x11fa, 0x120f,
- 0x121e, 0x122a, 0x123c, 0x1245, 0x1245, 0x1269, 0x1284, 0x1290,
- 0x12a5, 0x12b1, 0x12bd, 0x12cf, 0x12ed, 0x12f9, 0x1308, 0x1320,
- 0x1332, 0x1347, 0x1359, 0x136b, 0x1380, 0x138c, 0x139e, 0x13b3,
- 0x13c5, 0x13d1, 0x13f3, 0x1408, 0x1423, 0x1435, 0x144d, 0x147b,
- // Entry 100 - 13F
- 0x1490, 0x14ab, 0x14d9, 0x14f1, 0x1503, 0x151b, 0x152a, 0x153c,
- 0x153c, 0x1551, 0x1563, 0x1572, 0x1581, 0x15a9, 0x15d4, 0x15e6,
- 0x15f9, 0x1615, 0x1627, 0x1639, 0x1648, 0x1654, 0x166f, 0x1697,
- 0x16a9, 0x16be, 0x16e6, 0x1711, 0x1726, 0x1756, 0x175f, 0x1777,
- 0x1777, 0x1780, 0x17ae, 0x17d9, 0x180a, 0x1822, 0x1847, 0x1878,
- 0x1899, 0x189f, 0x18ae, 0x18cd, 0x18d9, 0x18eb, 0x18eb, 0x18f4,
- 0x190f, 0x1921, 0x194a, 0x1979, 0x199e, 0x19b0, 0x19ce, 0x19dd,
- 0x19ef, 0x1a11, 0x1a30, 0x1a30, 0x1a48, 0x1a54, 0x1a66, 0x1a75,
- // Entry 140 - 17F
- 0x1a9a, 0x1aac, 0x1acb, 0x1ae9, 0x1b01, 0x1b0d, 0x1b3e, 0x1b3e,
- 0x1b4a, 0x1b56, 0x1b6b, 0x1b7a, 0x1b89, 0x1baa, 0x1bf1, 0x1c06,
- 0x1c1e, 0x1c30, 0x1c52, 0x1c71, 0x1c80, 0x1ca2, 0x1cb1, 0x1cc0,
- 0x1ccc, 0x1cde, 0x1cea, 0x1d0e, 0x1d26, 0x1d26, 0x1d3e, 0x1d68,
- 0x1d7a, 0x1d86, 0x1d9b, 0x1da7, 0x1db9, 0x1dd5, 0x1de4, 0x1e05,
- 0x1e11, 0x1e2c, 0x1e4a, 0x1e6f, 0x1e87, 0x1e9f, 0x1eb7, 0x1edf,
- 0x1eee, 0x1f07, 0x1f25, 0x1f34, 0x1f4c, 0x1f5e, 0x1f82, 0x1f91,
- 0x1fa6, 0x1fb8, 0x1fca, 0x1fdf, 0x1ff1, 0x200f, 0x204d, 0x206b,
- // Entry 180 - 1BF
- 0x2089, 0x209b, 0x20b6, 0x20c8, 0x20d4, 0x20f3, 0x210b, 0x2127,
- 0x213c, 0x214e, 0x2157, 0x2163, 0x2172, 0x21a3, 0x21ac, 0x21c4,
- 0x21d0, 0x21dc, 0x21ee, 0x2203, 0x221b, 0x2227, 0x2233, 0x2242,
- 0x2251, 0x2263, 0x226f, 0x2284, 0x22a0, 0x22c5, 0x22d1, 0x22e3,
- 0x2301, 0x2313, 0x2328, 0x2334, 0x2346, 0x2346, 0x235b, 0x2370,
- 0x237f, 0x2397, 0x23ac, 0x23c7, 0x23d9, 0x23ee, 0x240c, 0x2435,
- 0x2450, 0x245c, 0x247b, 0x248d, 0x249c, 0x24ab, 0x24be, 0x24d6,
- 0x24f4, 0x2503, 0x2528, 0x253a, 0x2543, 0x2562, 0x256e, 0x259c,
- // Entry 1C0 - 1FF
- 0x25b7, 0x25d2, 0x25e4, 0x25f3, 0x2602, 0x2624, 0x2645, 0x265a,
- 0x2675, 0x2699, 0x26b4, 0x26c9, 0x2706, 0x2706, 0x2728, 0x274d,
- 0x276b, 0x278f, 0x27a4, 0x27a4, 0x27a4, 0x27d8, 0x27e4, 0x282e,
- 0x2849, 0x2849, 0x2849, 0x2849, 0x2849, 0x285b, 0x285b, 0x285b,
- 0x285b, 0x285b, 0x287c, 0x288b, 0x288b, 0x288b, 0x288b, 0x28a3,
- 0x28a3, 0x28bb, 0x28bb, 0x28d3, 0x28e5, 0x28e5, 0x28e5, 0x28e5,
- 0x2910, 0x2910, 0x291c, 0x291c, 0x291c, 0x294a, 0x296c, 0x296c,
- 0x2987, 0x2987, 0x299d, 0x299d, 0x29cb, 0x29cb, 0x29ed, 0x2a06,
- // Entry 200 - 23F
- 0x2a22, 0x2a41, 0x2a41, 0x2a41, 0x2a69, 0x2a69, 0x2a69, 0x2a69,
- 0x2a7b, 0x2a87, 0x2aa5, 0x2ab7, 0x2adf, 0x2b10, 0x2b25, 0x2b25,
- 0x2b25, 0x2b25, 0x2b31, 0x2b31, 0x2b31, 0x2b31, 0x2b31, 0x2b31,
- 0x2b31, 0x2b49, 0x2b49, 0x2b49, 0x2b49, 0x2b6b, 0x2b6b, 0x2b6b,
- 0x2b6b, 0x2b6b, 0x2b6b, 0x2b8a, 0x2b8a, 0x2b8a, 0x2b9f, 0x2b9f,
- 0x2be6, 0x2be6, 0x2be6, 0x2be6, 0x2c05, 0x2c0e, 0x2c0e, 0x2c0e,
- 0x2c0e, 0x2c48, 0x2c48, 0x2c48, 0x2c5a, 0x2c5a, 0x2c5a, 0x2c5a,
- 0x2c5a, 0x2c78, 0x2c78, 0x2c8d, 0x2cb4, 0x2cc0, 0x2cc0, 0x2cc0,
- // Entry 240 - 27F
- 0x2cc0, 0x2cc0, 0x2cdb, 0x2cff, 0x2cff, 0x2d29, 0x2d29, 0x2d29,
- 0x2d6a, 0x2d6a, 0x2d99, 0x2d99, 0x2dc5, 0x2dc5, 0x2df6, 0x2e1f,
- 0x2e62, 0x2e9c, 0x2ecd, 0x2efe, 0x2f3c, 0x2f67, 0x2f92, 0x2f92,
- 0x2fcf, 0x2fcf, 0x2ff1, 0x3006, 0x3037, 0x3068, 0x3086, 0x3086,
- 0x30b1, 0x30e2,
-} // Size: 1244 bytes
-
-var nlLangStr string = "" + // Size: 4999 bytes
- "AfarAbchazischAvestischAfrikaansAkanAmhaarsAragoneesArabischAssameesAvar" +
- "ischAymaraAzerbeidzjaansBasjkiersWit-RussischBulgaarsBislamaBambaraBenga" +
- "alsTibetaansBretonsBosnischCatalaansTsjetsjeensChamorroCorsicaansCreeTsj" +
- "echischKerkslavischTsjoevasjischWelshDeensDuitsDivehiDzongkhaEweGrieksEn" +
- "gelsEsperantoSpaansEstischBaskischPerzischFulahFinsFijischFaeröersFransF" +
- "riesIersSchots-GaelischGalicischGuaraníGujaratiManxHausaHebreeuwsHindiHi" +
- "ri MotuKroatischHaïtiaans CreoolsHongaarsArmeensHereroInterlinguaIndones" +
- "ischInterlingueIgboYiInupiaqIdoIJslandsItaliaansInuktitutJapansJavaansGe" +
- "orgischKongoGikuyuKuanyamaKazachsGroenlandsKhmerKannadaKoreaansKanuriKas" +
- "jmiriKoerdischKomiCornishKirgizischLatijnLuxemburgsLugandaLimburgsLingal" +
- "aLaotiaansLitouwsLuba-KatangaLetsMalagassischMarshalleesMaoriMacedonisch" +
- "MalayalamMongoolsMarathiMaleisMalteesBirmaansNauruaansNoord-NdebeleNepal" +
- "eesNdongaNederlandsNoors - NynorskNoors - BokmålZuid-NdbeleNavajoNyanjaO" +
- "ccitaansOjibwaAfaan OromoOdiaOssetischPunjabiPaliPoolsPasjtoePortugeesQu" +
- "echuaReto-RomaansKirundiRoemeensRussischKinyarwandaSanskrietSardijnsSind" +
- "hiNoord-SamischSangoSingaleesSlowaaksSloveensSamoaansShonaSomalischAlban" +
- "eesServischSwaziZuid-SothoSoendaneesZweedsSwahiliTamilTeluguTadzjieksTha" +
- "iTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiaansOeigoersOekr" +
- "aïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddischYorubaZhua" +
- "ngChineesZoeloeAtjehsAkoliAdangmeAdygeesTunesisch ArabischAfrihiliAghemA" +
- "inuAkkadischAlabamaAleoetischGegischZuid-AltaïschOudengelsAngikaArameesM" +
- "apudungunAraonaArapahoAlgerijns ArabischArawakMarokkaans ArabischEgyptis" +
- "ch ArabischAsuAmerikaanse GebarentaalAsturischKotavaAwadhiBeloetsjiBalin" +
- "eesBeiersBasaBamounBatak TobaGhomala’BejaBembaBetawiBenaBafutBadagaWeste" +
- "rs BeloetsjiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBra" +
- "huiBodoAkooseBoerjatischBugineesBuluBlinMedumbaCaddoCaribischCayugaAtsam" +
- "CebuanoChigaChibchaChagataiChuukeesMariChinook JargonChoctawChipewyanChe" +
- "rokeeCheyenneSoranîKoptischCapiznonKrim-TataarsKasjoebischDakotaDargwaTa" +
- "itaDelawareSlaveyDogribDinkaZarmaDogriNedersorbischDusunDualaMiddelneder" +
- "landsJola-FonyiDyulaDazagaEmbuEfikEmilianoOudegyptischEkajukElamitischMi" +
- "ddelengelsYupikEwondoExtremeensFangFilipijnsTornedal-FinsFonCajun-FransM" +
- "iddelfransOudfransArpitaansNoord-FriesOost-FriesFriulischGaGagaoezischGa" +
- "nyuGayoGbayaZoroastrisch DariGe’ezGilberteesGilakiMiddelhoogduitsOudhoog" +
- "duitsGoa KonkaniGondiGorontaloGothischGreboOudgrieksZwitserduitsWayuuGur" +
- "uneGusiiGwichʼinHaidaHakkaHawaïaansFijisch HindiHiligaynonHettitischHmon" +
- "gOppersorbischXiangyuHupaIbanIbibioIlokoIngoesjetischIngrischJamaicaans " +
- "CreoolsLojbanNgombaMachameJudeo-PerzischJudeo-ArabischJutlandsKarakalpak" +
- "sKabylischKachinJjuKambaKawiKabardischKanembuTyapMakondeKaapverdisch Cre" +
- "oolsKenyangKoroKaingangKhasiKhotaneesKoyra ChiiniKhowarKirmanckîKakoKale" +
- "njinKimbunduKomi-PermjaaksKonkaniKosraeaansKpelleKaratsjaj-BalkarischKri" +
- "oKinaray-aKarelischKurukhShambalaBafiaKölschKoemuksKutenaiLadinoLangiLah" +
- "ndaLambaLezgischLingua Franca NovaLigurischLijfsLakotaLombardischMongoLo" +
- "ziNoordelijk LuriLetgaalsLuba-LuluaLuisenoLundaLuoMizoLuyiaKlassiek Chin" +
- "eesLazischMadoereesMafaMagahiMaithiliMakassaarsMandingoMaaMabaMoksjaMand" +
- "arMendeMeruMorisyenMiddeliersMakhuwa-MeettoMeta’Mi’kmaqMinangkabauMantsj" +
- "oeMeiteiMohawkMossiWest-MariMundangMeerdere talenCreekMirandeesMarwariMe" +
- "ntawaiMyeneErzjaMazanderaniMinnanyuNapolitaansNamaNedersaksischNewariNia" +
- "sNiueaansAo NagaNgumbaNgiemboonNogaiOudnoorsNovialN’KoNoord-SothoNuerKla" +
- "ssiek NepalbhasaNyamweziNyankoleNyoroNzimaOsageOttomaans-TurksPangasinan" +
- "PahlaviPampangaPapiamentsPalausPicardischPennsylvania-DuitsPlautdietschO" +
- "udperzischPaltsischFoenicischPiëmonteesPontischPohnpeiaansOudpruisischOu" +
- "dprovençaalsK’iche’KichwaRajasthaniRapanuiRarotonganRomagnolRiffijnsRomb" +
- "oRomaniRotumaansRoetheensRovianaAroemeensRwaSandaweJakoetsSamaritaans-Ar" +
- "ameesSamburuSasakSantaliSaurashtraNgambaySanguSiciliaansSchotsSassareesP" +
- "ahlavaniSenecaSenaSeriSelkoepsKoyraboro SenniOudiersSamogitischTashelhiy" +
- "tShanTsjadisch ArabischSidamoSilezisch DuitsSelayarZuid-SamischLule-Sami" +
- "schInari-SamischSkolt-SamischSoninkeSogdischSranantongoSererSahoSaterfri" +
- "esSukumaSoesoeSoemerischShimaoreCongo SwahiliKlassiek SyrischSyrischSile" +
- "zischTuluTimneTesoTerenoTetunTigreTivTokelausTsakhurKlingonTlingitTalysh" +
- "TamashekNyasa TongaTok PisinTuroyoTarokoTsakonischTsimshianMoslim TatToe" +
- "mboekaTuvaluaansTasawaqToevaansTamazight (Centraal-Marokko)OedmoertsOega" +
- "ritischUmbunduRootVaiVenetiaansWepsischWest-VlaamsOpperfrankischVotischV" +
- "õroVunjoWalserWolayttaWarayWashoWarlpiriWuyuKalmuksMingreelsSogaYaoYape" +
- "esYangbenYembaNheengatuKantoneesZapotecBlissymbolenZeeuwsZenagaStandaard" +
- " Marokkaanse TamazightZunigeen linguïstische inhoudZazamodern standaard " +
- "ArabischOostenrijks DuitsZwitsers HoogduitsAustralisch EngelsCanadees En" +
- "gelsBrits EngelsAmerikaans EngelsLatijns-Amerikaans SpaansEuropees Spaan" +
- "sMexicaans SpaansCanadees FransZwitsers FransVlaamsBraziliaans Portugees" +
- "Europees PortugeesServo-Kroatischvereenvoudigd Chineestraditioneel Chine" +
- "es"
-
-var nlLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002b, 0x0034,
- 0x003c, 0x0044, 0x004c, 0x0052, 0x0060, 0x0069, 0x0075, 0x007d,
- 0x0084, 0x008b, 0x0093, 0x009c, 0x00a3, 0x00ab, 0x00b4, 0x00bf,
- 0x00c7, 0x00d1, 0x00d5, 0x00df, 0x00eb, 0x00f8, 0x00fd, 0x0102,
- 0x0107, 0x010d, 0x0115, 0x0118, 0x011e, 0x0124, 0x012d, 0x0133,
- 0x013a, 0x0142, 0x014a, 0x014f, 0x0153, 0x015a, 0x0163, 0x0168,
- 0x016d, 0x0171, 0x0180, 0x0189, 0x0191, 0x0199, 0x019d, 0x01a2,
- 0x01ab, 0x01b0, 0x01b9, 0x01c2, 0x01d4, 0x01dc, 0x01e3, 0x01e9,
- // Entry 40 - 7F
- 0x01f4, 0x01ff, 0x020a, 0x020e, 0x0210, 0x0217, 0x021a, 0x0222,
- 0x022b, 0x0234, 0x023a, 0x0241, 0x024a, 0x024f, 0x0255, 0x025d,
- 0x0264, 0x026e, 0x0273, 0x027a, 0x0282, 0x0288, 0x0290, 0x0299,
- 0x029d, 0x02a4, 0x02ae, 0x02b4, 0x02be, 0x02c5, 0x02cd, 0x02d4,
- 0x02dd, 0x02e4, 0x02f0, 0x02f4, 0x0300, 0x030b, 0x0310, 0x031b,
- 0x0324, 0x032c, 0x0333, 0x0339, 0x0340, 0x0348, 0x0351, 0x035e,
- 0x0366, 0x036c, 0x0376, 0x0385, 0x0394, 0x039f, 0x03a5, 0x03ab,
- 0x03b4, 0x03ba, 0x03c5, 0x03c9, 0x03d2, 0x03d9, 0x03dd, 0x03e2,
- // Entry 80 - BF
- 0x03e9, 0x03f2, 0x03f9, 0x0405, 0x040c, 0x0414, 0x041c, 0x0427,
- 0x0430, 0x0438, 0x043e, 0x044b, 0x0450, 0x0459, 0x0461, 0x0469,
- 0x0471, 0x0476, 0x047f, 0x0487, 0x048f, 0x0494, 0x049e, 0x04a8,
- 0x04ae, 0x04b5, 0x04ba, 0x04c0, 0x04c9, 0x04cd, 0x04d5, 0x04de,
- 0x04e4, 0x04ec, 0x04f1, 0x04f7, 0x04fe, 0x0508, 0x0510, 0x051a,
- 0x051e, 0x0526, 0x052b, 0x0535, 0x053d, 0x0542, 0x0547, 0x054c,
- 0x0554, 0x055a, 0x0560, 0x0567, 0x056d, 0x0573, 0x0578, 0x057f,
- 0x0586, 0x0598, 0x05a0, 0x05a5, 0x05a9, 0x05b2, 0x05b9, 0x05c3,
- // Entry C0 - FF
- 0x05ca, 0x05d8, 0x05e1, 0x05e7, 0x05ee, 0x05f8, 0x05fe, 0x0605,
- 0x0617, 0x061d, 0x0630, 0x0642, 0x0645, 0x065c, 0x0665, 0x066b,
- 0x0671, 0x067a, 0x0682, 0x0688, 0x068c, 0x0692, 0x069c, 0x06a6,
- 0x06aa, 0x06af, 0x06b5, 0x06b9, 0x06be, 0x06c4, 0x06d5, 0x06dd,
- 0x06e2, 0x06e6, 0x06ec, 0x06ef, 0x06f6, 0x0701, 0x070a, 0x070e,
- 0x0714, 0x0718, 0x071e, 0x0729, 0x0731, 0x0735, 0x0739, 0x0740,
- 0x0745, 0x074e, 0x0754, 0x0759, 0x0760, 0x0765, 0x076c, 0x0774,
- 0x077c, 0x0780, 0x078e, 0x0795, 0x079e, 0x07a6, 0x07ae, 0x07b5,
- // Entry 100 - 13F
- 0x07bd, 0x07c5, 0x07d1, 0x07dc, 0x07e2, 0x07e8, 0x07ed, 0x07f5,
- 0x07fb, 0x0801, 0x0806, 0x080b, 0x0810, 0x081d, 0x0822, 0x0827,
- 0x0837, 0x0841, 0x0846, 0x084c, 0x0850, 0x0854, 0x085c, 0x0868,
- 0x086e, 0x0878, 0x0884, 0x0889, 0x088f, 0x0899, 0x089d, 0x08a6,
- 0x08b3, 0x08b6, 0x08c1, 0x08cc, 0x08d4, 0x08dd, 0x08e8, 0x08f2,
- 0x08fb, 0x08fd, 0x0908, 0x090d, 0x0911, 0x0916, 0x0927, 0x092e,
- 0x0938, 0x093e, 0x094d, 0x0959, 0x0964, 0x0969, 0x0972, 0x097a,
- 0x097f, 0x0988, 0x0994, 0x0999, 0x099f, 0x09a4, 0x09ad, 0x09b2,
- // Entry 140 - 17F
- 0x09b7, 0x09c1, 0x09ce, 0x09d8, 0x09e2, 0x09e7, 0x09f4, 0x09fb,
- 0x09ff, 0x0a03, 0x0a09, 0x0a0e, 0x0a1b, 0x0a23, 0x0a35, 0x0a3b,
- 0x0a41, 0x0a48, 0x0a56, 0x0a64, 0x0a6c, 0x0a77, 0x0a80, 0x0a86,
- 0x0a89, 0x0a8e, 0x0a92, 0x0a9c, 0x0aa3, 0x0aa7, 0x0aae, 0x0ac2,
- 0x0ac9, 0x0acd, 0x0ad5, 0x0ada, 0x0ae3, 0x0aef, 0x0af5, 0x0aff,
- 0x0b03, 0x0b0b, 0x0b13, 0x0b21, 0x0b28, 0x0b32, 0x0b38, 0x0b4c,
- 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b70, 0x0b75, 0x0b7c, 0x0b83,
- 0x0b8a, 0x0b90, 0x0b95, 0x0b9b, 0x0ba0, 0x0ba8, 0x0bba, 0x0bc3,
- // Entry 180 - 1BF
- 0x0bc8, 0x0bce, 0x0bd9, 0x0bde, 0x0be2, 0x0bf1, 0x0bf9, 0x0c03,
- 0x0c0a, 0x0c0f, 0x0c12, 0x0c16, 0x0c1b, 0x0c2b, 0x0c32, 0x0c3b,
- 0x0c3f, 0x0c45, 0x0c4d, 0x0c57, 0x0c5f, 0x0c62, 0x0c66, 0x0c6c,
- 0x0c72, 0x0c77, 0x0c7b, 0x0c83, 0x0c8d, 0x0c9b, 0x0ca2, 0x0cab,
- 0x0cb6, 0x0cbe, 0x0cc4, 0x0cca, 0x0ccf, 0x0cd8, 0x0cdf, 0x0ced,
- 0x0cf2, 0x0cfb, 0x0d02, 0x0d0a, 0x0d0f, 0x0d14, 0x0d1f, 0x0d27,
- 0x0d32, 0x0d36, 0x0d43, 0x0d49, 0x0d4d, 0x0d55, 0x0d5c, 0x0d62,
- 0x0d6b, 0x0d70, 0x0d78, 0x0d7e, 0x0d84, 0x0d8f, 0x0d93, 0x0da6,
- // Entry 1C0 - 1FF
- 0x0dae, 0x0db6, 0x0dbb, 0x0dc0, 0x0dc5, 0x0dd4, 0x0dde, 0x0de5,
- 0x0ded, 0x0df7, 0x0dfd, 0x0e07, 0x0e19, 0x0e25, 0x0e30, 0x0e39,
- 0x0e43, 0x0e4e, 0x0e56, 0x0e61, 0x0e6d, 0x0e7c, 0x0e87, 0x0e8d,
- 0x0e97, 0x0e9e, 0x0ea8, 0x0eb0, 0x0eb8, 0x0ebd, 0x0ec3, 0x0ecc,
- 0x0ed5, 0x0edc, 0x0ee5, 0x0ee8, 0x0eef, 0x0ef6, 0x0f09, 0x0f10,
- 0x0f15, 0x0f1c, 0x0f26, 0x0f2d, 0x0f32, 0x0f3c, 0x0f42, 0x0f4b,
- 0x0f54, 0x0f5a, 0x0f5e, 0x0f62, 0x0f6a, 0x0f79, 0x0f80, 0x0f8b,
- 0x0f95, 0x0f99, 0x0fab, 0x0fb1, 0x0fc0, 0x0fc7, 0x0fd3, 0x0fdf,
- // Entry 200 - 23F
- 0x0fec, 0x0ff9, 0x1000, 0x1008, 0x1013, 0x1018, 0x101c, 0x1026,
- 0x102c, 0x1032, 0x103c, 0x1044, 0x1051, 0x1061, 0x1068, 0x1071,
- 0x1075, 0x107a, 0x107e, 0x1084, 0x1089, 0x108e, 0x1091, 0x1099,
- 0x10a0, 0x10a7, 0x10ae, 0x10b4, 0x10bc, 0x10c7, 0x10d0, 0x10d6,
- 0x10dc, 0x10e6, 0x10ef, 0x10f9, 0x1102, 0x110c, 0x1113, 0x111b,
- 0x1137, 0x1140, 0x114b, 0x1152, 0x1156, 0x1159, 0x1163, 0x116b,
- 0x1176, 0x1184, 0x118b, 0x1190, 0x1195, 0x119b, 0x11a3, 0x11a8,
- 0x11ad, 0x11b5, 0x11b9, 0x11c0, 0x11c9, 0x11cd, 0x11d0, 0x11d6,
- // Entry 240 - 27F
- 0x11dd, 0x11e2, 0x11eb, 0x11f4, 0x11fb, 0x1207, 0x120d, 0x1213,
- 0x1232, 0x1236, 0x1250, 0x1254, 0x126d, 0x126d, 0x127e, 0x1290,
- 0x12a2, 0x12b1, 0x12bd, 0x12ce, 0x12e7, 0x12f6, 0x1306, 0x1306,
- 0x1314, 0x1322, 0x1322, 0x1328, 0x133d, 0x134f, 0x134f, 0x135e,
- 0x1373, 0x1387,
-} // Size: 1244 bytes
-
-var noLangStr string = "" + // Size: 4987 bytes
- "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" +
- "aymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengaliti" +
- "betanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekkis" +
- "kkirkeslavisktsjuvasjiskwalisiskdansktyskdivehidzongkhaewegreskengelskes" +
- "perantospanskestiskbaskiskpersiskfulanifinskfijianskfærøyskfranskvestfri" +
- "siskirskskotsk gæliskgalisiskguaranigujaratimanskhausahebraiskhindihiri " +
- "motukroatiskhaitiskungarskarmenskhererointerlinguaindonesiskinterlinguei" +
- "bosichuan-yiinupiakidoislandskitalienskinuktitutjapanskjavanesiskgeorgis" +
- "kkikongokikuyukuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikasjm" +
- "irikurdiskkomikorniskkirgisisklatinluxemburgskgandalimburgisklingalalaot" +
- "isklitauiskluba-katangalatviskgassiskmarshallesiskmaorimakedonskmalayala" +
- "mmongolskmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalindongan" +
- "ederlandsknorsk nynorsknorsk bokmålsør-ndebelenavajonyanjaoksitanskojibw" +
- "aoromooriyaossetiskpunjabipalipolskpashtoportugisiskquechuaretoromanskru" +
- "ndirumenskrussiskkinyarwandasanskritsardinsksindhinordsamisksangosingale" +
- "siskslovakiskslovensksamoanskshonasomalialbanskserbiskswatisør-sothosund" +
- "anesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensksetswanato" +
- "ngansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskvendaviet" +
- "namesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzuluachinesi" +
- "skacoliadangmeadyghetunisisk-arabiskafrihiliaghemainuakkadiskalabamaaleu" +
- "tiskgegisk-albansksøraltaiskgammelengelskangikaarameiskaraukanskaraonaar" +
- "apahoalgerisk arabiskarawakmarokkansk-arabiskegyptisk arabiskasuamerikan" +
- "sk tegnspråkasturiskkotavaawadhibaluchibalinesiskbairiskbasabamunbatak t" +
- "obaghomalabejabembabetawibenabafutbadagavestbalutsjibhojpuribikolbiniban" +
- "jarkomsiksikabishnupriyabakhtiaribrajbrahuibodoakoseburiatbuginesiskbulu" +
- "blinmedumbacaddokaribiskcayugaatsamcebuanskkigachibchachagataichuukesisk" +
- "marichinookchoctawchipewianskcherokesiskcheyennekurdisk (sorani)koptiskk" +
- "apizkrimtatariskkasjubiskdakotadargwataitadelawareslaviskdogribdinkazarm" +
- "adogrilavsorbisksentraldusundualamellomnederlandskjola-fonyidyuladazagak" +
- "iembuefikemilianskgammelegyptiskekajukelamittiskmellomengelsksentralyupi" +
- "kewondoekstremaduranskfangfilippinsktornedalsfinskfonkajunfranskmellomfr" +
- "anskgammelfranskarpitansknordfrisiskøstfrisiskfriulianskgagagausiskganga" +
- "yogbayazoroastrisk darigeskiribatiskgilekimellomhøytyskgammelhøytyskgoan" +
- "sk konkanigondigorontalogotiskgrebogammelgresksveitsertyskwayuufrafragus" +
- "iigwichinhaidahakkahawaiiskfijiansk hindihiligaynonhettittiskhmonghøysor" +
- "biskxianghupaibanibibioilokoingusjiskingriskjamaicansk kreolengelsklojba" +
- "nngombamachamejødepersiskjødearabiskjyskkarakalpakiskkabylskkachinjjukam" +
- "bakawikabardiskkanembutyapmakondekappverdiskkenyangkorokaingangkhasikhot" +
- "anesiskkoyra chiinikhowarkirmanckikakokalenjinkimbundukomipermjakiskkonk" +
- "anikosraeanskkpellekarachay-balkarkriokinaray-akarelskkurukhshambalabafi" +
- "akølnskkumykkutenailadinsklangilahndalambalezghianlingua franca novaligu" +
- "risklivisklakotalombardiskmongolozinord-lurilatgalliskluba-lulualuisenol" +
- "undaluomizoluhyaklassisk kinesisklaziskmaduresiskmafamagahimaithilimakas" +
- "armandingomasaimabamokshamandarmendemerumauritisk-kreolskmellomirskmakhu" +
- "wa-meettometa’micmacminangkabaumandsjumanipurimohawkmossivestmariskmunda" +
- "ngflere språkcreekmirandesiskmarwarimentawaimyeneerzyamazandaraniminnann" +
- "apolitansknamanedertysknewariniasniueanskao nagakwasiongiemboonnogaigamm" +
- "elnorsknovialnʼkonord-sothonuerklassisk newarinyamwezinyankolenyoronzima" +
- "osageottomansk tyrkiskpangasinanpahlavipampangapapiamentopalauiskpikardi" +
- "skpennsylvaniatyskplautdietschgammelpersiskpalatintyskfønikiskpiemontesi" +
- "skpontiskponapiskprøyssiskgammelprovençalskquichékichwa (Chimborazo-høyl" +
- "andet)rajasthanirapanuirarotonganskromagnolskriffromboromanirotumanskrus" +
- "inskrovianaaromanskrwasandawejakutsksamaritansk arameisksamburusasaksant" +
- "alisaurashtrangambaysangusicilianskskotsksassarisk sardinsksørkurdisksen" +
- "ecasenaseriselkupiskkoyraboro sennigammelirsksamogitisktachelhitshanTsja" +
- "d-arabisksidamolavschlesiskselayarsørsamisklulesamiskenaresamiskskoltesa" +
- "misksoninkesogdisksranan tongoserersahosaterfrisisksukumasususumeriskkom" +
- "oriskkongolesisk swahiliklassisk syrisksyriskschlesisktulutemnetesoteren" +
- "otetumtigrétivtokelautsakhurskklingontlingittalyshtamasjeknyasa-tongansk" +
- "tok pisinturoyotarokotsakonisktsimshianmuslimsk tattumbukatuvalutasawaqt" +
- "uvinisksentralmarokkansk tamazightudmurtugaritiskumbundurotvaivenetiansk" +
- "vepsiskvestflamskMain-frankiskvotisksørestiskvunjowalserwalamowaraywasho" +
- "warlpiriwukalmykmingrelsksogayaoyapesiskyangbenyembanheengatukantonesisk" +
- "zapotecblissymbolerzeeuwszenagastandard marrokansk tamazightzuniuten spr" +
- "åklig innholdzazamoderne standard arabiskøsterriksk tysksveitsisk høyty" +
- "skaustralsk engelskcanadisk engelskbritisk engelskamerikansk engelsklati" +
- "namerikansk spanskeuropeisk spanskmeksikansk spanskcanadisk fransksveits" +
- "isk fransknedersaksiskflamskbrasiliansk portugisiskeuropeisk portugisisk" +
- "moldovskserbokroatiskforenklet kinesisktradisjonell kinesisk"
-
-var noLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032,
- 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079,
- 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba,
- 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e5, 0x00f0, 0x00f8, 0x00fd,
- 0x0101, 0x0107, 0x010f, 0x0112, 0x0117, 0x011e, 0x0127, 0x012d,
- 0x0133, 0x013a, 0x0141, 0x0147, 0x014c, 0x0154, 0x015d, 0x0163,
- 0x016e, 0x0172, 0x0180, 0x0188, 0x018f, 0x0197, 0x019c, 0x01a1,
- 0x01a9, 0x01ae, 0x01b7, 0x01bf, 0x01c6, 0x01cd, 0x01d4, 0x01da,
- // Entry 40 - 7F
- 0x01e5, 0x01ef, 0x01fa, 0x01fd, 0x0207, 0x020e, 0x0211, 0x0219,
- 0x0222, 0x022b, 0x0232, 0x023c, 0x0244, 0x024b, 0x0251, 0x0259,
- 0x0262, 0x026d, 0x0272, 0x0279, 0x0281, 0x0287, 0x028f, 0x0296,
- 0x029a, 0x02a1, 0x02aa, 0x02af, 0x02ba, 0x02bf, 0x02c9, 0x02d0,
- 0x02d7, 0x02df, 0x02eb, 0x02f2, 0x02f9, 0x0306, 0x030b, 0x0314,
- 0x031d, 0x0325, 0x032c, 0x0334, 0x033d, 0x0346, 0x034b, 0x0357,
- 0x035d, 0x0363, 0x036e, 0x037b, 0x0388, 0x0394, 0x039a, 0x03a0,
- 0x03a9, 0x03af, 0x03b4, 0x03b9, 0x03c1, 0x03c8, 0x03cc, 0x03d1,
- // Entry 80 - BF
- 0x03d7, 0x03e2, 0x03e9, 0x03f4, 0x03f9, 0x0400, 0x0407, 0x0412,
- 0x041a, 0x0422, 0x0428, 0x0432, 0x0437, 0x0442, 0x044b, 0x0453,
- 0x045b, 0x0460, 0x0466, 0x046d, 0x0474, 0x0479, 0x0483, 0x048e,
- 0x0494, 0x049b, 0x04a0, 0x04a6, 0x04b0, 0x04b4, 0x04bc, 0x04c5,
- 0x04cd, 0x04d5, 0x04dc, 0x04e2, 0x04ea, 0x04f2, 0x04fa, 0x0502,
- 0x0506, 0x050e, 0x0513, 0x051f, 0x0526, 0x052e, 0x0533, 0x0538,
- 0x053f, 0x0545, 0x054b, 0x0553, 0x0557, 0x0561, 0x0566, 0x056d,
- 0x0573, 0x0583, 0x058b, 0x0590, 0x0594, 0x059c, 0x05a3, 0x05ab,
- // Entry C0 - FF
- 0x05b9, 0x05c4, 0x05d1, 0x05d7, 0x05df, 0x05e8, 0x05ee, 0x05f5,
- 0x0605, 0x060b, 0x061d, 0x062d, 0x0630, 0x0645, 0x064d, 0x0653,
- 0x0659, 0x0660, 0x066a, 0x0671, 0x0675, 0x067a, 0x0684, 0x068b,
- 0x068f, 0x0694, 0x069a, 0x069e, 0x06a3, 0x06a9, 0x06b5, 0x06bd,
- 0x06c2, 0x06c6, 0x06cc, 0x06cf, 0x06d6, 0x06e1, 0x06ea, 0x06ee,
- 0x06f4, 0x06f8, 0x06fd, 0x0703, 0x070d, 0x0711, 0x0715, 0x071c,
- 0x0721, 0x0729, 0x072f, 0x0734, 0x073c, 0x0740, 0x0747, 0x074f,
- 0x0759, 0x075d, 0x0764, 0x076b, 0x0776, 0x0781, 0x0789, 0x0799,
- // Entry 100 - 13F
- 0x07a0, 0x07a5, 0x07b1, 0x07ba, 0x07c0, 0x07c6, 0x07cb, 0x07d3,
- 0x07da, 0x07e0, 0x07e5, 0x07ea, 0x07ef, 0x07f9, 0x0805, 0x080a,
- 0x081b, 0x0825, 0x082a, 0x0830, 0x0836, 0x083a, 0x0843, 0x0851,
- 0x0857, 0x0861, 0x086e, 0x087a, 0x0880, 0x088f, 0x0893, 0x089d,
- 0x08ab, 0x08ae, 0x08b9, 0x08c5, 0x08d1, 0x08da, 0x08e5, 0x08f0,
- 0x08fa, 0x08fc, 0x0905, 0x0908, 0x090c, 0x0911, 0x0921, 0x0924,
- 0x092e, 0x0934, 0x0942, 0x0950, 0x095e, 0x0963, 0x096c, 0x0972,
- 0x0977, 0x0982, 0x098e, 0x0993, 0x0999, 0x099e, 0x09a5, 0x09aa,
- // Entry 140 - 17F
- 0x09af, 0x09b7, 0x09c5, 0x09cf, 0x09d9, 0x09de, 0x09e9, 0x09ee,
- 0x09f2, 0x09f6, 0x09fc, 0x0a01, 0x0a0a, 0x0a11, 0x0a28, 0x0a2e,
- 0x0a34, 0x0a3b, 0x0a47, 0x0a53, 0x0a57, 0x0a64, 0x0a6b, 0x0a71,
- 0x0a74, 0x0a79, 0x0a7d, 0x0a86, 0x0a8d, 0x0a91, 0x0a98, 0x0aa3,
- 0x0aaa, 0x0aae, 0x0ab6, 0x0abb, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1,
- 0x0ae5, 0x0aed, 0x0af5, 0x0b03, 0x0b0a, 0x0b14, 0x0b1a, 0x0b29,
- 0x0b2d, 0x0b36, 0x0b3d, 0x0b43, 0x0b4b, 0x0b50, 0x0b57, 0x0b5c,
- 0x0b63, 0x0b6a, 0x0b6f, 0x0b75, 0x0b7a, 0x0b82, 0x0b94, 0x0b9c,
- // Entry 180 - 1BF
- 0x0ba2, 0x0ba8, 0x0bb2, 0x0bb7, 0x0bbb, 0x0bc4, 0x0bce, 0x0bd8,
- 0x0bdf, 0x0be4, 0x0be7, 0x0beb, 0x0bf0, 0x0c01, 0x0c07, 0x0c11,
- 0x0c15, 0x0c1b, 0x0c23, 0x0c2a, 0x0c32, 0x0c37, 0x0c3b, 0x0c41,
- 0x0c47, 0x0c4c, 0x0c50, 0x0c61, 0x0c6b, 0x0c79, 0x0c80, 0x0c86,
- 0x0c91, 0x0c98, 0x0ca0, 0x0ca6, 0x0cab, 0x0cb5, 0x0cbc, 0x0cc8,
- 0x0ccd, 0x0cd8, 0x0cdf, 0x0ce7, 0x0cec, 0x0cf1, 0x0cfc, 0x0d02,
- 0x0d0d, 0x0d11, 0x0d1a, 0x0d20, 0x0d24, 0x0d2c, 0x0d33, 0x0d39,
- 0x0d42, 0x0d47, 0x0d52, 0x0d58, 0x0d5d, 0x0d67, 0x0d6b, 0x0d7a,
- // Entry 1C0 - 1FF
- 0x0d82, 0x0d8a, 0x0d8f, 0x0d94, 0x0d99, 0x0daa, 0x0db4, 0x0dbb,
- 0x0dc3, 0x0dcd, 0x0dd5, 0x0dde, 0x0dee, 0x0dfa, 0x0e07, 0x0e12,
- 0x0e1b, 0x0e27, 0x0e2e, 0x0e36, 0x0e40, 0x0e52, 0x0e59, 0x0e77,
- 0x0e81, 0x0e88, 0x0e94, 0x0e9e, 0x0ea2, 0x0ea7, 0x0ead, 0x0eb6,
- 0x0ebd, 0x0ec4, 0x0ecc, 0x0ecf, 0x0ed6, 0x0edd, 0x0ef1, 0x0ef8,
- 0x0efd, 0x0f04, 0x0f0e, 0x0f15, 0x0f1a, 0x0f24, 0x0f2a, 0x0f3c,
- 0x0f47, 0x0f4d, 0x0f51, 0x0f55, 0x0f5e, 0x0f6d, 0x0f77, 0x0f81,
- 0x0f8a, 0x0f8e, 0x0f9b, 0x0fa1, 0x0fad, 0x0fb4, 0x0fbe, 0x0fc8,
- // Entry 200 - 23F
- 0x0fd3, 0x0fdf, 0x0fe6, 0x0fed, 0x0ff9, 0x0ffe, 0x1002, 0x100e,
- 0x1014, 0x1018, 0x1020, 0x1028, 0x103b, 0x104a, 0x1050, 0x1059,
- 0x105d, 0x1062, 0x1066, 0x106c, 0x1071, 0x1077, 0x107a, 0x1081,
- 0x108a, 0x1091, 0x1098, 0x109e, 0x10a6, 0x10b4, 0x10bd, 0x10c3,
- 0x10c9, 0x10d2, 0x10db, 0x10e7, 0x10ee, 0x10f4, 0x10fb, 0x1103,
- 0x111e, 0x1124, 0x112d, 0x1134, 0x1137, 0x113a, 0x1144, 0x114b,
- 0x1155, 0x1162, 0x1168, 0x1172, 0x1177, 0x117d, 0x1183, 0x1188,
- 0x118d, 0x1195, 0x1197, 0x119d, 0x11a6, 0x11aa, 0x11ad, 0x11b5,
- // Entry 240 - 27F
- 0x11bc, 0x11c1, 0x11ca, 0x11d5, 0x11dc, 0x11e8, 0x11ee, 0x11f4,
- 0x1211, 0x1215, 0x122b, 0x122f, 0x1247, 0x1247, 0x1257, 0x1269,
- 0x127a, 0x128a, 0x1299, 0x12ab, 0x12c1, 0x12d1, 0x12e2, 0x12e2,
- 0x12f1, 0x1301, 0x130d, 0x1313, 0x132a, 0x133f, 0x1347, 0x1354,
- 0x1366, 0x137b,
-} // Size: 1244 bytes
-
-var paLangStr string = "" + // Size: 5353 bytes
- "ਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਬੀਅਸਾਮੀਅਜ਼ਰਬਾਈਜਾਨੀਬਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬੰ" +
- "ਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨਕੋਰਸੀਕਨਚੈਕਚੁਵਾਸ਼ਵੈਲਜ਼ਡੈਨਿਸ਼ਜਰਮਨ" +
- "ਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰਗਰੇਜ਼ੀਇਸਪੇਰਾਂਟੋਸਪੇਨੀਇਸਟੋਨੀਆਈਬਾਸਕਫ਼ਾਰਸੀਫਿਨਿਸ਼ਫ਼ਿਜ਼ੀਫ਼" +
- "ੇਰੋਸੇਫਰਾਂਸੀਸੀਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨਆਇਰੀਗੈਲਿਸ਼ਿਅਨਗੁਆਰਾਨੀਗੁਜਰਾਤੀਮੈਂਕਸਹੌਸਾਹਿਬਰੂਹਿ" +
- "ੰਦੀਕ੍ਰੋਏਸ਼ਿਆਈਹੈਤੀਆਈਹੰਗਰੀਆਈਅਰਮੀਨੀਆਈਇੰਡੋਨੇਸ਼ੀਆਈਇਗਬੋਸਿਚੁਆਨ ਯੀਆਈਸਲੈਂਡਿਕਇਤਾ" +
- "ਲਵੀਇੰਕਟੀਟੂਤਜਪਾਨੀਜਾਵਾਨੀਜ਼ਜਾਰਜੀਆਈਕਿਕੂਯੂਕਜ਼ਾਖ਼ਕਲਾਅੱਲੀਸੁਟਖਮੇਰਕੰਨੜਕੋਰੀਆਈਕਸ਼" +
- "ਮੀਰੀਕੁਰਦਕੋਰਨਿਸ਼ਕਿਰਗੀਜ਼ਲਾਤੀਨੀਲਕਜ਼ਮਬਰਗਿਸ਼ਗਾਂਡਾਲਿੰਗਾਲਾਲਾਓਲਿਥੁਆਨੀਅਨਲੂਬਾ-ਕਾ" +
- "ਟਾਂਗਾਲਾਟਵਿਅਨਮੇਲੇਗਸੀਮਾਉਰੀਮੈਕਡੋਨੀਆਈਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਰਾਠੀਮਲਯਮਾਲਟੀਜ਼ਬਰਮੀਉੱਤਰ" +
- "ੀ ਨਡੇਬੇਲੇਨੇਪਾਲੀਡੱਚਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲਓਰੋਮੋਉੜੀਆਪੰਜਾਬੀਪਲੀਪ" +
- "ੋਲੈਂਡੀਪਸ਼ਤੋਪੁਰਤਗਾਲੀਕਕੇਸ਼ੁਆਰੋਮਾਂਸ਼ਰੁੰਡੀਰੋਮਾਨੀਆਈਰੂਸੀਕਿਨਿਆਰਵਾਂਡਾਸੰਸਕ੍ਰਿਤਸ" +
- "ਿੰਧੀਉੱਤਰੀ ਸਾਮੀਸਾਂਗੋਸਿੰਹਾਲਾਸਲੋਵਾਕਸਲੋਵੇਨੀਆਈਸ਼ੋਨਾਸੋਮਾਲੀਅਲਬਾਨੀਆਈਸਰਬੀਆਈਸੂੰਡ" +
- "ਾਨੀਸਵੀਡਿਸ਼ਸਵਾਹਿਲੀਤਮਿਲਤੇਲਗੂਤਾਜਿਕਥਾਈਤਿਗ੍ਰੀਨਿਆਤੁਰਕਮੇਨਟੌਂਗਨਤੁਰਕੀਤਤਾਰਉਇਗੁਰਯ" +
- "ੂਕਰੇਨੀਆਈਉਰਦੂਉਜ਼ਬੇਕਵੀਅਤਨਾਮੀਵੋਲੋਫਖੋਸਾਯੋਰੂਬਾਚੀਨੀਜ਼ੁਲੂਅਚੀਨੀਅਕੋਲੀਅਗੇਮਪੁਰਾਣੀ" +
- " ਅੰਗਰੇਜ਼ੀਮਾਪੁਚੇਅਸੂਬੇਮਬਾਬੇਨਾਪੱਛਮੀ ਬਲੂਚੀਭੋਜਪੁਰੀਬੋਡੋਚੀਗਾਮਾਰੀਚੇਰੋਕੀਕੇਂਦਰੀ ਕੁ" +
- "ਰਦਿਸ਼ਟੇਟਾਜ਼ਾਰਮਾਲੋਅਰ ਸੋਰਬੀਅਨਡੂਆਲਾਜੋਲਾ-ਫੋਇਨੀਇੰਬੂਪੁਰਾਤਨ ਮਿਸਰੀਫਿਲੀਪਿਨੋਗਾਗੌ" +
- "ਜ਼ਪੁਰਾਤਨ ਯੂਨਾਨੀਸਵਿਸ ਜਰਮਨਗੁਸੀਹਵਾਈਫਿਜੀ ਹਿੰਦੀਅੱਪਰ ਸੋਰਬੀਅਨਨਗੋਂਬਾਮਚਾਮੇਕਬਾਇਲ" +
- "ਕੰਬਾਮਕੋਂਡਕਾਬੁਵੇਰਦਿਆਨੂਕੋਯਰਾ ਚੀਨੀਕਲੇਜਿਨਕੋਮੀ-ਪੇਰਮਿਆਕਕੋਂਕਣੀਸ਼ੰਬਾਲਾਬਫ਼ੀਆਲੰਗ" +
- "ਾਈਲਕੋਟਾਉੱਤਰੀ ਲੁਰੀਲੂਓਲੂਈਆਮੈਥਲੀਮਸਾਈਮੇਰੂਮੋਰੀਸਿਅਨਮਖੋਵਾ-ਮਿੱਟੋਮੇਟਾਮਨੀਪੁਰੀਮੋਹ" +
- "ਾਵਕਮੁੰਡੇਂਗਕਈ ਭਾਸ਼ਾਵਾਂਮੇਜ਼ੈਂਡਰਾਨੀਨਾਮਾਲੋ ਜਰਮਨਕਵਾਸਿਓਐਂਕੋਨੁਏਰਨਿਆਂਕੋਲੇਕੇਸ਼ਰ" +
- "ਾਜਸਥਾਨੀਰੋਮਬੋਰਵਾਸਮਬੁਰੂਸੰਥਾਲੀਸੇਂਗੋਦੱਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿ" +
- "ਟਸ਼ਾਨਦੱਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀਸਕੌਲਟ ਸਾਮੀਕਾਂਗੋ ਸਵਾਹਿਲੀਟੇਸੋਤਾਸਾਵਿਕਮੱ" +
- "ਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤਅਗਿਆਤ ਭਾਸ਼ਾਵਾਈਵੂੰਜੋਵਾਲਪੁਰੀਸੋਗਾਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਕੋਈ " +
- "ਭਾਸ਼ਾਈ ਸਮੱਗਰੀ ਨਹੀਂਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਆਸਟਰੀਆਈ ਜਰਮਨਸਵਿਸ ਹਾਈ ਜਰਮਨਆਸਟ੍ਰੇਲੀਆਈ" +
- " ਅੰਗਰੇਜ਼ੀਕੈਨੇਡੀਅਨ ਅੰਗਰੇਜ਼ੀਬਰਤਾਨਵੀ ਅੰਗਰੇਜ਼ੀਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀਲਾਤੀਨੀ ਅਮਰੀਕੀ ਸ" +
- "ਪੇਨੀਯੂਰਪੀ ਸਪੇਨੀਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀਸਵਿਸ ਫਰਾਂਸੀਸੀਲੋ ਸੈਕਸਨਫਲ" +
- "ੈਮਿਸ਼ਬ੍ਰਾਜ਼ੀਲੀਆਈ ਪੁਰਤਗਾਲੀਯੂਰਪੀ ਪੁਰਤਗਾਲੀਮੋਲਡਾਵੀਆਈਸਰਲ ਚੀਨੀਰਵਾਇਤੀ ਚੀਨੀ"
-
-var paLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x001b, 0x001b, 0x0030, 0x003c, 0x0051, 0x0051,
- 0x005d, 0x006c, 0x006c, 0x006c, 0x008d, 0x009f, 0x00b7, 0x00d2,
- 0x00d2, 0x00e4, 0x00f6, 0x0108, 0x0117, 0x012c, 0x0141, 0x014d,
- 0x014d, 0x0162, 0x0162, 0x016b, 0x016b, 0x017d, 0x018c, 0x019e,
- 0x01aa, 0x01aa, 0x01bf, 0x01c8, 0x01da, 0x01f2, 0x020d, 0x021c,
- 0x0234, 0x0240, 0x0252, 0x0252, 0x0264, 0x0276, 0x028b, 0x02a3,
- 0x02cb, 0x02d7, 0x02d7, 0x02f2, 0x0307, 0x031c, 0x032b, 0x0337,
- 0x0346, 0x0355, 0x0355, 0x0373, 0x0385, 0x039a, 0x03b2, 0x03b2,
- // Entry 40 - 7F
- 0x03b2, 0x03d3, 0x03d3, 0x03df, 0x03f8, 0x03f8, 0x03f8, 0x0413,
- 0x0425, 0x043d, 0x044c, 0x0464, 0x0479, 0x0479, 0x048b, 0x048b,
- 0x049d, 0x04bb, 0x04c7, 0x04d3, 0x04e5, 0x04e5, 0x04fa, 0x0506,
- 0x0506, 0x051b, 0x0530, 0x0542, 0x0563, 0x0572, 0x0572, 0x0587,
- 0x0590, 0x05ab, 0x05cd, 0x05e2, 0x05f7, 0x05f7, 0x0606, 0x0621,
- 0x0633, 0x064b, 0x065a, 0x0663, 0x0678, 0x0684, 0x0684, 0x06a9,
- 0x06bb, 0x06bb, 0x06c4, 0x06f8, 0x0723, 0x0723, 0x0723, 0x0723,
- 0x0723, 0x0723, 0x0732, 0x073e, 0x073e, 0x0750, 0x0759, 0x076e,
- // Entry 80 - BF
- 0x077d, 0x0795, 0x07aa, 0x07bf, 0x07ce, 0x07e6, 0x07f2, 0x0813,
- 0x082b, 0x082b, 0x083a, 0x0856, 0x0865, 0x087a, 0x088c, 0x08a7,
- 0x08a7, 0x08b6, 0x08c8, 0x08e0, 0x08f2, 0x08f2, 0x08f2, 0x0907,
- 0x091c, 0x0931, 0x093d, 0x094c, 0x095b, 0x0964, 0x097f, 0x0994,
- 0x0994, 0x09a3, 0x09b2, 0x09b2, 0x09be, 0x09be, 0x09cd, 0x09e8,
- 0x09f4, 0x0a06, 0x0a06, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a2d, 0x0a39,
- 0x0a39, 0x0a4b, 0x0a4b, 0x0a57, 0x0a66, 0x0a75, 0x0a84, 0x0a84,
- 0x0a84, 0x0a84, 0x0a84, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90,
- // Entry C0 - FF
- 0x0a90, 0x0a90, 0x0abb, 0x0abb, 0x0abb, 0x0acd, 0x0acd, 0x0acd,
- 0x0acd, 0x0acd, 0x0acd, 0x0acd, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6,
- 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6,
- 0x0ad6, 0x0ae5, 0x0ae5, 0x0af1, 0x0af1, 0x0af1, 0x0b10, 0x0b25,
- 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25,
- 0x0b25, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31,
- 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b3d, 0x0b3d, 0x0b3d,
- 0x0b3d, 0x0b49, 0x0b49, 0x0b49, 0x0b49, 0x0b5b, 0x0b5b, 0x0b83,
- // Entry 100 - 13F
- 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b8f, 0x0b8f,
- 0x0b8f, 0x0b8f, 0x0b8f, 0x0ba1, 0x0ba1, 0x0bc3, 0x0bc3, 0x0bd2,
- 0x0bd2, 0x0bee, 0x0bee, 0x0bee, 0x0bfa, 0x0bfa, 0x0bfa, 0x0c1c,
- 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c34,
- 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34,
- 0x0c34, 0x0c34, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46,
- 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46,
- 0x0c46, 0x0c6b, 0x0c84, 0x0c84, 0x0c84, 0x0c90, 0x0c90, 0x0c90,
- // Entry 140 - 17F
- 0x0c90, 0x0c9c, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cda, 0x0cda,
- 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda,
- 0x0cec, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0d0a, 0x0d0a,
- 0x0d0a, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d25, 0x0d49,
- 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d65, 0x0d65, 0x0d65,
- 0x0d65, 0x0d77, 0x0d77, 0x0d99, 0x0dab, 0x0dab, 0x0dab, 0x0dab,
- 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dc0, 0x0dcf, 0x0dcf, 0x0dcf,
- 0x0dcf, 0x0dcf, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde,
- // Entry 180 - 1BF
- 0x0dde, 0x0ded, 0x0ded, 0x0ded, 0x0ded, 0x0e09, 0x0e09, 0x0e09,
- 0x0e09, 0x0e09, 0x0e12, 0x0e12, 0x0e1e, 0x0e1e, 0x0e1e, 0x0e1e,
- 0x0e1e, 0x0e1e, 0x0e2d, 0x0e2d, 0x0e2d, 0x0e39, 0x0e39, 0x0e39,
- 0x0e39, 0x0e39, 0x0e45, 0x0e5d, 0x0e5d, 0x0e7c, 0x0e88, 0x0e88,
- 0x0e88, 0x0e88, 0x0e9d, 0x0eaf, 0x0eaf, 0x0eaf, 0x0ec4, 0x0ee3,
- 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0f04, 0x0f04,
- 0x0f04, 0x0f10, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f35,
- 0x0f35, 0x0f35, 0x0f35, 0x0f35, 0x0f41, 0x0f41, 0x0f4d, 0x0f4d,
- // Entry 1C0 - 1FF
- 0x0f4d, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65,
- 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65,
- 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f71, 0x0f71,
- 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f98, 0x0f98, 0x0f98,
- 0x0f98, 0x0f98, 0x0f98, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb3,
- 0x0fb3, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fd4, 0x0fd4, 0x0fd4, 0x0fd4,
- 0x0ff9, 0x0ff9, 0x1005, 0x1005, 0x1005, 0x1030, 0x1030, 0x1030,
- 0x1045, 0x1051, 0x1051, 0x1051, 0x1051, 0x1051, 0x106d, 0x1086,
- // Entry 200 - 23F
- 0x10a2, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be,
- 0x10be, 0x10be, 0x10be, 0x10be, 0x10e3, 0x10e3, 0x10e3, 0x10e3,
- 0x10e3, 0x10e3, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef,
- 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef,
- 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x1104, 0x1104,
- 0x1130, 0x1130, 0x1130, 0x1130, 0x114f, 0x1158, 0x1158, 0x1158,
- 0x1158, 0x1158, 0x1158, 0x1158, 0x1167, 0x1167, 0x1167, 0x1167,
- 0x1167, 0x117c, 0x117c, 0x117c, 0x117c, 0x1188, 0x1188, 0x1188,
- // Entry 240 - 27F
- 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188,
- 0x11c6, 0x11c6, 0x1202, 0x1202, 0x1231, 0x1231, 0x1253, 0x1276,
- 0x12ad, 0x12de, 0x130c, 0x1337, 0x136c, 0x138b, 0x13b6, 0x13b6,
- 0x13e7, 0x140c, 0x1422, 0x1437, 0x1471, 0x1499, 0x14b4, 0x14b4,
- 0x14ca, 0x14e9,
-} // Size: 1244 bytes
-
-var plLangStr string = "" + // Size: 5558 bytes
- "afarabchaskiawestyjskiafrikaansakanamharskiaragońskiarabskiasamskiawarsk" +
- "iajmaraazerskibaszkirskibiałoruskibułgarskibislamabambarabengalskitybeta" +
- "ńskibretońskibośniackikatalońskiczeczeńskichamorrokorsykańskikriczeskis" +
- "taro-cerkiewno-słowiańskiczuwaskiwalijskiduńskiniemieckimalediwskidzongk" +
- "haewegreckiangielskiesperantohiszpańskiestońskibaskijskiperskifulanifińs" +
- "kifidżijskifarerskifrancuskizachodniofryzyjskiirlandzkiszkocki gaelickig" +
- "alicyjskiguaranigudźarackimanxhausahebrajskihindihiri motuchorwackihaita" +
- "ńskiwęgierskiormiańskihererointerlinguaindonezyjskiinterlingueigbosyczu" +
- "ańskiinupiakidoislandzkiwłoskiinuktitutjapońskijawajskigruzińskikongokik" +
- "ujukwanyamakazachskigrenlandzkikhmerskikannadakoreańskikanurikaszmirskik" +
- "urdyjskikomikornijskikirgiskiłacińskiluksemburskigandalimburgijskilingal" +
- "alaotańskilitewskiluba-katangałotewskimalgaskimarshallmaoryjskimacedońsk" +
- "imalajalammongolskimarathimalajskimaltańskibirmańskinaurundebele północn" +
- "ynepalskindonganiderlandzkinorweski (nynorsk)norweski (bokmål)ndebele po" +
- "łudniowynawahonjandżaprowansalskiodżibwaoromskiorijaosetyjskipendżabski" +
- "palijskipolskipasztoportugalskikeczuaretoromańskirundirumuńskirosyjskiki" +
- "nya-ruandasanskrytsardyńskisindhilapoński północnysangosyngaleskisłowack" +
- "isłoweńskisamoańskiszonasomalijskialbańskiserbskisiswatisotho południowy" +
- "sundajskiszwedzkisuahilitamilskitelugutadżyckitajskitigriniaturkmeńskise" +
- "tswanatongatureckitsongatatarskitahitańskiujgurskiukraińskiurduuzbeckive" +
- "ndawietnamskivolapukwalońskiwolofkhosajidyszjorubaczuangchińskizuluaceha" +
- "czoliadangmeadygejskitunezyjski arabskiafrihiliaghemajnuakadyjskialabama" +
- "aleuckialbański gegijskipołudniowoałtajskistaroangielskiangikaaramejskia" +
- "raukańskiaraonaarapahoalgierski arabskiarawakmarokański arabskiegipski a" +
- "rabskiasuamerykański język migowyasturyjskikotavaawadhibeludżibalijskiba" +
- "warskibasabamumbatak tobaghomalabedżabembabetawibenabafutbadagabeludżi p" +
- "ółnocnybhodźpuribikolbinibanjarkomsiksikabisznuprija-manipuribachtiarsk" +
- "ibradźbrahuibodoakoseburiackibugińskibulublinmedumbakaddokaribikajugaats" +
- "amcebuanochigaczibczaczagatajskitrukmaryjskiżargon Chinookchoctawchipewy" +
- "anczirokeskijęzyk Czejenówsoranikoptyjskicapiznonkrymski tureckikaszubsk" +
- "idakotadargwijskitaitadelawareslavedogribdinkadżermadogridolnołużyckidus" +
- "un centralnydualaśredniowieczny niderlandzkidioladyuladazagaembuefikemil" +
- "ijskistarożytny egipskiekajukelamickiśrednioangielskiyupik środkowosyber" +
- "yjskiewondoestremadurskifangfilipinomeänkielifoncajunśredniofrancuskista" +
- "rofrancuskifranko-prowansalskipółnocnofryzyjskifryzyjski wschodnifriulij" +
- "skigagagauskigangayogbayazaratusztriański darigyyzgilbertańskigiliańskiś" +
- "rednio-wysoko-niemieckistaro-wysoko-niemieckikonkani (Goa)gondigorontalo" +
- "gockigrebostarogreckiszwajcarski niemieckiwayúufrafragusiigwichʼinhaidah" +
- "akkahawajskihindi fidżyjskiehiligajnonhetyckihmongijskigórnołużyckixiang" +
- "hupaibanagibibioilokanoinguskiingryjskijamajskilojbanngombemachamejudeop" +
- "erskijudeoarabskijutlandzkikarakałpackikabylskikaczinjjukambakawikabardy" +
- "jskikanembutyapmakondekreolski Wysp Zielonego Przylądkakenyangkorokainga" +
- "ngkhasichotańskikoyra chinikhowarkirmandżkikakokalenjinkimbundukomi-perm" +
- "iackikonkanikosraekpellekaraczajsko-bałkarskikriokinarayakarelskikurukhs" +
- "ambalabafiagwara kolońskakumyckikutenailadyńskilangilahndalambalezgijski" +
- "Lingua Franca Novaliguryjskiliwskilakotalombardzkimongoloziluryjski półn" +
- "ocnyłatgalskiluba-lulualuisenolundaluolushailuhyachiński klasycznylazyjs" +
- "kimadurajskimafamagahimaithilimakasarmandingomasajskimabamokshamandarmen" +
- "demerukreolski Mauritiusaśrednioirlandzkimakuametamicmacminangkabumanchu" +
- "manipuryjskimohawkmossizachodniomaryjskimundangwiele językówcreekmirande" +
- "semarwarimentawaimyeneerzyamazanderańskiminnańskineapolitańskinamadolnon" +
- "iemieckinewarskiniasniueaongumbangiemboonnogajskistaronordyjskinovialn’k" +
- "osotho północnynuernewarski klasycznyniamwezinyankolenyoronzemaosageosma" +
- "ńsko-tureckipangasinopahlavipampangopapiamentopalaupikardyjskipensylwań" +
- "skiplautdietschstaroperskipalatynackifenickipiemonckipontyjskiponpejskip" +
- "ruskistaroprowansalskikiczechimborazo górski keczuaradźasthanirapanuirar" +
- "otongaromagnoltarifitrombocygańskirotumańskirusińskirovianaarumuńskirwas" +
- "andawejakuckisamarytański aramejskisamburusasaksantalisaurasztryjskingam" +
- "baysangusycylijskiszkockisassarskipołudniowokurdyjskisenekasenaseriselku" +
- "pskikoyraboro sennistaroirlandzkiżmudzkitashelhiytshanarabski (Czad)sida" +
- "modolnośląskiselayarlapoński południowylapoński Lulelapoński Inarilapońs" +
- "ki Skoltsoninkesogdyjskisranan tongoserersahofryzyjski saterlandzkisukum" +
- "asususumeryjskikomoryjskikongijski suahilisyriackisyryjskiśląskitulutemn" +
- "eatesoterenotetumtigretiwtokelaucachurskiklingońskitlingittałyskitamasze" +
- "ktonga (Niasa)tok pisinturoyotarokocakońskitsimshiantackitumbukatuvaluta" +
- "sawaqtuwińskicentralnomarokański tamazightudmurckiugaryckiumbundujęzyk r" +
- "dzennywaiweneckiwepskizachodnioflamandzkimeński frankońskiwotiackivõrovu" +
- "njowalserwalamowarajwashoWarlpiriwukałmuckimegrelskisogayaojapskiyangben" +
- "yembanhengatukantońskizapoteckiblisszelandzkizenagastandardowy marokańsk" +
- "i tamazightzunibrak treści o charakterze językowymzazakiwspółczesny arab" +
- "skiaustriacki niemieckiwysokoniemiecki (Szwajcaria)australijski angielsk" +
- "ikanadyjski angielskibrytyjski angielskiamerykański angielskiamerykański" +
- " hiszpańskieuropejski hiszpańskimeksykański hiszpańskikanadyjski francus" +
- "kiszwajcarski francuskiflamandzkibrazylijski portugalskieuropejski portu" +
- "galskimołdawskiserbsko-chorwackichiński (uproszczony)chiński (tradycyjny" +
- ")"
-
-var plLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000c, 0x0016, 0x001f, 0x0023, 0x002b, 0x0035,
- 0x003c, 0x0043, 0x004a, 0x0050, 0x0057, 0x0061, 0x006c, 0x0076,
- 0x007d, 0x0084, 0x008d, 0x0098, 0x00a2, 0x00ac, 0x00b7, 0x00c2,
- 0x00ca, 0x00d6, 0x00d9, 0x00df, 0x00fb, 0x0103, 0x010b, 0x0112,
- 0x011b, 0x0125, 0x012d, 0x0130, 0x0136, 0x013f, 0x0148, 0x0153,
- 0x015c, 0x0165, 0x016b, 0x0171, 0x0178, 0x0182, 0x018a, 0x0193,
- 0x01a5, 0x01ae, 0x01be, 0x01c8, 0x01cf, 0x01da, 0x01de, 0x01e3,
- 0x01ec, 0x01f1, 0x01fa, 0x0203, 0x020d, 0x0217, 0x0221, 0x0227,
- // Entry 40 - 7F
- 0x0232, 0x023e, 0x0249, 0x024d, 0x0258, 0x025f, 0x0262, 0x026b,
- 0x0272, 0x027b, 0x0284, 0x028c, 0x0296, 0x029b, 0x02a1, 0x02a9,
- 0x02b2, 0x02bd, 0x02c5, 0x02cc, 0x02d6, 0x02dc, 0x02e6, 0x02ef,
- 0x02f3, 0x02fc, 0x0304, 0x030e, 0x031a, 0x031f, 0x032b, 0x0332,
- 0x033c, 0x0344, 0x0350, 0x0359, 0x0361, 0x0369, 0x0372, 0x037d,
- 0x0386, 0x038f, 0x0396, 0x039e, 0x03a8, 0x03b2, 0x03b7, 0x03c9,
- 0x03d1, 0x03d7, 0x03e3, 0x03f5, 0x0407, 0x041a, 0x0420, 0x0428,
- 0x0434, 0x043c, 0x0443, 0x0448, 0x0451, 0x045c, 0x0464, 0x046a,
- // Entry 80 - BF
- 0x0470, 0x047b, 0x0481, 0x048e, 0x0493, 0x049c, 0x04a4, 0x04b0,
- 0x04b8, 0x04c2, 0x04c8, 0x04dc, 0x04e1, 0x04eb, 0x04f4, 0x04ff,
- 0x0509, 0x050e, 0x0518, 0x0521, 0x0528, 0x052f, 0x0540, 0x0549,
- 0x0551, 0x0558, 0x0560, 0x0566, 0x056f, 0x0575, 0x057d, 0x0588,
- 0x0590, 0x0595, 0x059c, 0x05a2, 0x05aa, 0x05b5, 0x05bd, 0x05c7,
- 0x05cb, 0x05d2, 0x05d7, 0x05e1, 0x05e8, 0x05f1, 0x05f6, 0x05fb,
- 0x0601, 0x0607, 0x060d, 0x0615, 0x0619, 0x061d, 0x0623, 0x062a,
- 0x0633, 0x0645, 0x064d, 0x0652, 0x0656, 0x065f, 0x0666, 0x066d,
- // Entry C0 - FF
- 0x067f, 0x0693, 0x06a1, 0x06a7, 0x06b0, 0x06bb, 0x06c1, 0x06c8,
- 0x06d9, 0x06df, 0x06f2, 0x0701, 0x0704, 0x071e, 0x0728, 0x072e,
- 0x0734, 0x073c, 0x0744, 0x074c, 0x0750, 0x0755, 0x075f, 0x0766,
- 0x076c, 0x0771, 0x0777, 0x077b, 0x0780, 0x0786, 0x0799, 0x07a3,
- 0x07a8, 0x07ac, 0x07b2, 0x07b5, 0x07bc, 0x07d0, 0x07db, 0x07e1,
- 0x07e7, 0x07eb, 0x07f0, 0x07f8, 0x0801, 0x0805, 0x0809, 0x0810,
- 0x0815, 0x081b, 0x0821, 0x0826, 0x082d, 0x0832, 0x0839, 0x0844,
- 0x0848, 0x0850, 0x085f, 0x0866, 0x086f, 0x0879, 0x0889, 0x088f,
- // Entry 100 - 13F
- 0x0898, 0x08a0, 0x08af, 0x08b8, 0x08be, 0x08c8, 0x08cd, 0x08d5,
- 0x08da, 0x08e0, 0x08e5, 0x08ec, 0x08f1, 0x08ff, 0x090e, 0x0913,
- 0x092f, 0x0934, 0x0939, 0x093f, 0x0943, 0x0947, 0x0950, 0x0963,
- 0x0969, 0x0971, 0x0982, 0x099b, 0x09a1, 0x09ae, 0x09b2, 0x09ba,
- 0x09c4, 0x09c7, 0x09cc, 0x09dd, 0x09eb, 0x09fe, 0x0a11, 0x0a23,
- 0x0a2d, 0x0a2f, 0x0a37, 0x0a3a, 0x0a3e, 0x0a43, 0x0a59, 0x0a5d,
- 0x0a6a, 0x0a74, 0x0a8d, 0x0aa3, 0x0ab0, 0x0ab5, 0x0abe, 0x0ac3,
- 0x0ac8, 0x0ad3, 0x0ae8, 0x0aee, 0x0af4, 0x0af9, 0x0b02, 0x0b07,
- // Entry 140 - 17F
- 0x0b0c, 0x0b14, 0x0b25, 0x0b2f, 0x0b36, 0x0b40, 0x0b4f, 0x0b54,
- 0x0b58, 0x0b5e, 0x0b64, 0x0b6b, 0x0b72, 0x0b7b, 0x0b83, 0x0b89,
- 0x0b8f, 0x0b96, 0x0ba1, 0x0bad, 0x0bb7, 0x0bc4, 0x0bcc, 0x0bd2,
- 0x0bd5, 0x0bda, 0x0bde, 0x0be9, 0x0bf0, 0x0bf4, 0x0bfb, 0x0c1d,
- 0x0c24, 0x0c28, 0x0c30, 0x0c35, 0x0c3f, 0x0c4a, 0x0c50, 0x0c5b,
- 0x0c5f, 0x0c67, 0x0c6f, 0x0c7d, 0x0c84, 0x0c8a, 0x0c90, 0x0ca6,
- 0x0caa, 0x0cb2, 0x0cba, 0x0cc0, 0x0cc7, 0x0ccc, 0x0cdb, 0x0ce2,
- 0x0ce9, 0x0cf2, 0x0cf7, 0x0cfd, 0x0d02, 0x0d0b, 0x0d1d, 0x0d27,
- // Entry 180 - 1BF
- 0x0d2d, 0x0d33, 0x0d3d, 0x0d42, 0x0d46, 0x0d59, 0x0d63, 0x0d6d,
- 0x0d74, 0x0d79, 0x0d7c, 0x0d82, 0x0d87, 0x0d99, 0x0da1, 0x0dab,
- 0x0daf, 0x0db5, 0x0dbd, 0x0dc4, 0x0dcc, 0x0dd4, 0x0dd8, 0x0dde,
- 0x0de4, 0x0de9, 0x0ded, 0x0e00, 0x0e11, 0x0e16, 0x0e1a, 0x0e20,
- 0x0e2a, 0x0e30, 0x0e3c, 0x0e42, 0x0e47, 0x0e58, 0x0e5f, 0x0e6e,
- 0x0e73, 0x0e7c, 0x0e83, 0x0e8b, 0x0e90, 0x0e95, 0x0ea3, 0x0ead,
- 0x0ebb, 0x0ebf, 0x0ecd, 0x0ed5, 0x0ed9, 0x0edd, 0x0edf, 0x0ee5,
- 0x0eee, 0x0ef6, 0x0f04, 0x0f0a, 0x0f10, 0x0f20, 0x0f24, 0x0f36,
- // Entry 1C0 - 1FF
- 0x0f3e, 0x0f46, 0x0f4b, 0x0f50, 0x0f55, 0x0f66, 0x0f6f, 0x0f76,
- 0x0f7e, 0x0f88, 0x0f8d, 0x0f98, 0x0fa5, 0x0fb1, 0x0fbc, 0x0fc7,
- 0x0fce, 0x0fd7, 0x0fe0, 0x0fe9, 0x0fef, 0x1000, 0x1005, 0x101e,
- 0x102a, 0x1031, 0x103a, 0x1042, 0x1049, 0x104e, 0x1057, 0x1062,
- 0x106b, 0x1072, 0x107c, 0x107f, 0x1086, 0x108d, 0x10a4, 0x10ab,
- 0x10b0, 0x10b7, 0x10c5, 0x10cc, 0x10d1, 0x10db, 0x10e2, 0x10eb,
- 0x10ff, 0x1105, 0x1109, 0x110d, 0x1116, 0x1125, 0x1133, 0x113b,
- 0x1145, 0x1149, 0x1157, 0x115d, 0x116a, 0x1171, 0x1186, 0x1194,
- // Entry 200 - 23F
- 0x11a3, 0x11b2, 0x11b9, 0x11c2, 0x11ce, 0x11d3, 0x11d7, 0x11ed,
- 0x11f3, 0x11f7, 0x1201, 0x120b, 0x121c, 0x1224, 0x122c, 0x1234,
- 0x1238, 0x123d, 0x1242, 0x1248, 0x124d, 0x1252, 0x1255, 0x125c,
- 0x1265, 0x1270, 0x1277, 0x127f, 0x1287, 0x1294, 0x129d, 0x12a3,
- 0x12a9, 0x12b2, 0x12bb, 0x12c0, 0x12c7, 0x12cd, 0x12d4, 0x12dd,
- 0x12fb, 0x1303, 0x130b, 0x1312, 0x1320, 0x1323, 0x132a, 0x1330,
- 0x1343, 0x1356, 0x135e, 0x1363, 0x1368, 0x136e, 0x1374, 0x1379,
- 0x137e, 0x1386, 0x1388, 0x1391, 0x139a, 0x139e, 0x13a1, 0x13a7,
- // Entry 240 - 27F
- 0x13ae, 0x13b3, 0x13bb, 0x13c5, 0x13ce, 0x13d3, 0x13dc, 0x13e2,
- 0x1403, 0x1407, 0x142c, 0x1432, 0x1447, 0x1447, 0x145b, 0x1477,
- 0x148d, 0x14a1, 0x14b4, 0x14ca, 0x14e2, 0x14f8, 0x1510, 0x1510,
- 0x1524, 0x1539, 0x1539, 0x1543, 0x155a, 0x1570, 0x157a, 0x158b,
- 0x15a1, 0x15b6,
-} // Size: 1244 bytes
-
-var ptLangStr string = "" + // Size: 4263 bytes
- "afarabcázioavésticoafricânerakanamáricoaragonêsárabeassamêsavaricaimaraa" +
- "zerbaijanobashkirbielorrussobúlgarobislamábambarabengalitibetanobretãobó" +
- "sniocatalãochechenochamorrocórsicocreetchecoeslavo eclesiásticotchuvache" +
- "galêsdinamarquêsalemãodivehidzongaevegregoinglêsesperantoespanholestonia" +
- "nobascopersafulafinlandêsfijianoferoêsfrancêsfrísio ocidentalirlandêsgaé" +
- "lico escocêsgalegoguaraniguzeratemanxhauçáhebraicohíndihiri motucroataha" +
- "itianohúngaroarmêniohererointerlínguaindonésiointerlingueibosichuan yiin" +
- "upiaqueidoislandêsitalianoinuktitutjaponêsjavanêsgeorgianocongolêsquicui" +
- "okuanyamacazaquegroenlandêskhmercanarêscoreanocanúricaxemiracurdokomicór" +
- "nicoquirguizlatimluxemburguêslugandalimburguêslingalalaosianolituanoluba" +
- "-catangaletãomalgaxemarshalêsmaorimacedôniomalaialamongolmaratamalaiomal" +
- "têsbirmanêsnauruanondebele do nortenepalidongoholandêsnynorsk norueguêsb" +
- "okmål norueguêsndebele do sulnavajonianjaoccitânicoojibwaoromooriyaosset" +
- "icpanjabipálipolonêspashtoportuguêsquíchuaromancherundiromenorussoquinia" +
- "ruandasânscritosardosindisami do nortesangocingalêseslovacoeslovenosamoa" +
- "noshonasomalialbanêssérvioswatisoto do sulsundanêssuecosuaílitâmiltelugu" +
- "tajiquetailandêstigríniaturcomenotswanatonganêsturcotsongatatartaitianou" +
- "igurucranianourduusbequevendavietnamitavolapuquevalãouólofexosaiídicheio" +
- "rubazhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadianoaleú" +
- "tealtai do sulinglês arcaicoangikaaramaicomapudungunarapahoarauaquiasuas" +
- "turianoawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbalúchi oc" +
- "identalbhojpuribikolbinikomsiksikabrajbodoakooseburiatbuginêsbulublinmed" +
- "umbacaddocaribecayugaatsamcebuanochigachibchachagataichuukesemarichinook" +
- " jargonchoctawchipewyancherokeecheienesorâni curdocoptaturco da Crimeiak" +
- "ashubiandacotadargwataitadelawareslavedogribdinkazarmadogrisorábio baixo" +
- "dualaholandês médiojola-fonyidiúladazagaembuefiqueegípcio arcaicoekajuke" +
- "lamiteinglês médioewondofanguefilipinofomfrancês médiofrancês arcaicofrí" +
- "sio setentrionalfrisão orientalfriulanogagagauzgayogbaiageezgilbertêsale" +
- "mão médio-altoalemão arcaico altogondigorontalogóticogrebogrego arcaicoa" +
- "lemão suíçogusiigwichʼinhaidahavaianohiligaynonhititahmongsorábio altohu" +
- "paibanibibioilocanoinguchelojbannguembamachamejudaico-persajudaico-arábi" +
- "cokara-kalpakkabylekachinjjukambakawikabardianokanembutyapmacondekabuver" +
- "dianukorokhasikhotanêskoyra chiinikakokalenjinquimbundokomi-permyakconca" +
- "nikosraeankpellekarachay-balkaridioma caréliokurukhshambalabafiakölschku" +
- "mykkutenailadinolangilahndalambalezghianlacotamongoloziluri setentrional" +
- "luba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarmand" +
- "ingamassaimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miquem" +
- "aqueminangkabaumanchumanipurimoicanomossimundangidiomas múltiploscreekmi" +
- "randêsmarwarimyeneerzyamazandaraninapolitanonamabaixo alemãonewariniasni" +
- "ueanokwasiongiemboonnogainórdico arcaicon’kosoto setentrionalnuernewari " +
- "clássiconyamwezinyankolenyoronzimaosageturco otomanopangasinãpálavipampa" +
- "ngapapiamentopalauanopersa arcaicofeníciopohnpeianprovençal arcaicoquich" +
- "érajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoaramaico " +
- "samaritanosamburusasaksantalingambaysangusicilianoescocêscurdo meridiona" +
- "lsenecasenaselkupkoyraboro senniirlandês arcaicotachelhitshanárabe chadi" +
- "anosidamosami do sulsami de Lulesami de Inarisami de Skoltsoninquêsogdia" +
- "noidioma surinamêssereresahosukumasossosumériocomorianosuaíli do Congosi" +
- "ríaco clássicosiríacotimnetesoterenotétumtigrétivtoquelauanoklingontling" +
- "uitetamaxequetonganês de Nyasatok pisintarokotsimshiantumbukatuvaluanota" +
- "sawaqtuvinianotamazight do Atlas Centraludmurtugaríticoumbunduidioma des" +
- "conhecidovaivoticvunjowalserwalamowaraywashowarlpirikalmyklusogayaoyapes" +
- "eyangbenyembacantonêszapotecasímbolos bliszenagatamazight marroquino pad" +
- "rãozunhisem conteúdo linguísticozazaárabe modernoazeri sulalemão austría" +
- "coalto alemão suíçoinglês australianoinglês canadenseinglês britânicoing" +
- "lês americanoespanhol latino-americanoespanhol europeuespanhol mexicanof" +
- "rancês canadensefrancês suíçobaixo-saxãoflamengoportuguês do Brasilportu" +
- "guês europeumoldávioservo-croatachinês simplificadochinês tradicional"
-
-var ptLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000c, 0x0015, 0x001f, 0x0023, 0x002b, 0x0034,
- 0x003a, 0x0042, 0x0048, 0x004e, 0x0059, 0x0060, 0x006b, 0x0073,
- 0x007b, 0x0082, 0x0089, 0x0091, 0x0098, 0x009f, 0x00a7, 0x00af,
- 0x00b7, 0x00bf, 0x00c3, 0x00c9, 0x00dd, 0x00e6, 0x00ec, 0x00f8,
- 0x00ff, 0x0105, 0x010b, 0x010e, 0x0113, 0x011a, 0x0123, 0x012b,
- 0x0134, 0x0139, 0x013e, 0x0142, 0x014c, 0x0153, 0x015a, 0x0162,
- 0x0173, 0x017c, 0x018d, 0x0193, 0x019a, 0x01a2, 0x01a6, 0x01ad,
- 0x01b5, 0x01bb, 0x01c4, 0x01ca, 0x01d2, 0x01da, 0x01e2, 0x01e8,
- // Entry 40 - 7F
- 0x01f4, 0x01fe, 0x0209, 0x020c, 0x0216, 0x021f, 0x0222, 0x022b,
- 0x0233, 0x023c, 0x0244, 0x024c, 0x0255, 0x025e, 0x0265, 0x026d,
- 0x0274, 0x0280, 0x0285, 0x028d, 0x0294, 0x029b, 0x02a3, 0x02a8,
- 0x02ac, 0x02b4, 0x02bc, 0x02c1, 0x02ce, 0x02d5, 0x02e0, 0x02e7,
- 0x02ef, 0x02f6, 0x0302, 0x0308, 0x030f, 0x0319, 0x031e, 0x0328,
- 0x0330, 0x0336, 0x033c, 0x0342, 0x0349, 0x0352, 0x035a, 0x036a,
- 0x0370, 0x0375, 0x037e, 0x0390, 0x03a2, 0x03b0, 0x03b6, 0x03bc,
- 0x03c7, 0x03cd, 0x03d2, 0x03d7, 0x03de, 0x03e5, 0x03ea, 0x03f2,
- // Entry 80 - BF
- 0x03f8, 0x0402, 0x040a, 0x0412, 0x0417, 0x041d, 0x0422, 0x042e,
- 0x0438, 0x043d, 0x0442, 0x044f, 0x0454, 0x045d, 0x0465, 0x046d,
- 0x0474, 0x0479, 0x047f, 0x0487, 0x048e, 0x0493, 0x049e, 0x04a7,
- 0x04ac, 0x04b3, 0x04b9, 0x04bf, 0x04c6, 0x04d0, 0x04d9, 0x04e2,
- 0x04e8, 0x04f1, 0x04f6, 0x04fc, 0x0501, 0x0509, 0x050e, 0x0517,
- 0x051b, 0x0522, 0x0527, 0x0531, 0x053a, 0x0540, 0x0547, 0x054b,
- 0x0553, 0x0559, 0x055f, 0x0566, 0x056a, 0x0570, 0x0575, 0x057c,
- 0x0582, 0x0582, 0x058a, 0x058f, 0x0593, 0x059b, 0x059b, 0x05a2,
- // Entry C0 - FF
- 0x05a2, 0x05ae, 0x05bd, 0x05c3, 0x05cb, 0x05d5, 0x05d5, 0x05dc,
- 0x05dc, 0x05e4, 0x05e4, 0x05e4, 0x05e7, 0x05e7, 0x05f0, 0x05f0,
- 0x05f6, 0x05fe, 0x0606, 0x0606, 0x060a, 0x060f, 0x060f, 0x0619,
- 0x061d, 0x0622, 0x0622, 0x0626, 0x062b, 0x062b, 0x063d, 0x0645,
- 0x064a, 0x064e, 0x064e, 0x0651, 0x0658, 0x0658, 0x0658, 0x065c,
- 0x065c, 0x0660, 0x0666, 0x066c, 0x0674, 0x0678, 0x067c, 0x0683,
- 0x0688, 0x068e, 0x0694, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4,
- 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ed, 0x06fa,
- // Entry 100 - 13F
- 0x06ff, 0x06ff, 0x070f, 0x0718, 0x071e, 0x0724, 0x0729, 0x0731,
- 0x0736, 0x073c, 0x0741, 0x0746, 0x074b, 0x0759, 0x0759, 0x075e,
- 0x076e, 0x0778, 0x077e, 0x0784, 0x0788, 0x078e, 0x078e, 0x079e,
- 0x07a4, 0x07ab, 0x07b9, 0x07b9, 0x07bf, 0x07bf, 0x07c5, 0x07cd,
- 0x07cd, 0x07d0, 0x07d0, 0x07df, 0x07ef, 0x07ef, 0x0803, 0x0813,
- 0x081b, 0x081d, 0x0823, 0x0823, 0x0827, 0x082c, 0x082c, 0x0830,
- 0x083a, 0x083a, 0x084d, 0x0861, 0x0861, 0x0866, 0x086f, 0x0876,
- 0x087b, 0x0888, 0x0897, 0x0897, 0x0897, 0x089c, 0x08a5, 0x08aa,
- // Entry 140 - 17F
- 0x08aa, 0x08b2, 0x08b2, 0x08bc, 0x08c2, 0x08c7, 0x08d4, 0x08d4,
- 0x08d8, 0x08dc, 0x08e2, 0x08e9, 0x08f0, 0x08f0, 0x08f0, 0x08f6,
- 0x08fd, 0x0904, 0x0911, 0x0921, 0x0921, 0x092c, 0x0932, 0x0938,
- 0x093b, 0x0940, 0x0944, 0x094e, 0x0955, 0x0959, 0x0960, 0x096c,
- 0x096c, 0x0970, 0x0970, 0x0975, 0x097e, 0x098a, 0x098a, 0x098a,
- 0x098e, 0x0996, 0x099f, 0x09ab, 0x09b2, 0x09ba, 0x09c0, 0x09cf,
- 0x09cf, 0x09cf, 0x09de, 0x09e4, 0x09ec, 0x09f1, 0x09f8, 0x09fd,
- 0x0a04, 0x0a0a, 0x0a0f, 0x0a15, 0x0a1a, 0x0a22, 0x0a22, 0x0a22,
- // Entry 180 - 1BF
- 0x0a22, 0x0a28, 0x0a28, 0x0a2d, 0x0a31, 0x0a42, 0x0a42, 0x0a4c,
- 0x0a53, 0x0a58, 0x0a5b, 0x0a61, 0x0a66, 0x0a66, 0x0a66, 0x0a6e,
- 0x0a72, 0x0a78, 0x0a80, 0x0a87, 0x0a8f, 0x0a95, 0x0a99, 0x0a9e,
- 0x0aa4, 0x0aa9, 0x0aad, 0x0ab5, 0x0ac5, 0x0aca, 0x0ad1, 0x0adb,
- 0x0ae6, 0x0aec, 0x0af4, 0x0afb, 0x0b00, 0x0b00, 0x0b07, 0x0b19,
- 0x0b1e, 0x0b27, 0x0b2e, 0x0b2e, 0x0b33, 0x0b38, 0x0b43, 0x0b43,
- 0x0b4d, 0x0b51, 0x0b5e, 0x0b64, 0x0b68, 0x0b6f, 0x0b6f, 0x0b75,
- 0x0b7e, 0x0b83, 0x0b93, 0x0b93, 0x0b99, 0x0baa, 0x0bae, 0x0bbe,
- // Entry 1C0 - 1FF
- 0x0bc6, 0x0bce, 0x0bd3, 0x0bd8, 0x0bdd, 0x0bea, 0x0bf4, 0x0bfb,
- 0x0c03, 0x0c0d, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c22, 0x0c22,
- 0x0c2a, 0x0c2a, 0x0c2a, 0x0c33, 0x0c33, 0x0c45, 0x0c4c, 0x0c4c,
- 0x0c55, 0x0c5c, 0x0c67, 0x0c67, 0x0c67, 0x0c6c, 0x0c72, 0x0c72,
- 0x0c72, 0x0c72, 0x0c79, 0x0c7c, 0x0c83, 0x0c89, 0x0c9c, 0x0ca3,
- 0x0ca8, 0x0caf, 0x0caf, 0x0cb6, 0x0cbb, 0x0cc4, 0x0ccc, 0x0ccc,
- 0x0cdc, 0x0ce2, 0x0ce6, 0x0ce6, 0x0cec, 0x0cfb, 0x0d0c, 0x0d0c,
- 0x0d15, 0x0d19, 0x0d28, 0x0d2e, 0x0d2e, 0x0d2e, 0x0d39, 0x0d45,
- // Entry 200 - 23F
- 0x0d52, 0x0d5f, 0x0d68, 0x0d70, 0x0d81, 0x0d87, 0x0d8b, 0x0d8b,
- 0x0d91, 0x0d96, 0x0d9e, 0x0da7, 0x0db7, 0x0dc9, 0x0dd1, 0x0dd1,
- 0x0dd1, 0x0dd6, 0x0dda, 0x0de0, 0x0de6, 0x0dec, 0x0def, 0x0dfa,
- 0x0dfa, 0x0e01, 0x0e0a, 0x0e0a, 0x0e13, 0x0e25, 0x0e2e, 0x0e2e,
- 0x0e34, 0x0e34, 0x0e3d, 0x0e3d, 0x0e44, 0x0e4d, 0x0e54, 0x0e5d,
- 0x0e77, 0x0e7d, 0x0e87, 0x0e8e, 0x0ea1, 0x0ea4, 0x0ea4, 0x0ea4,
- 0x0ea4, 0x0ea4, 0x0ea9, 0x0ea9, 0x0eae, 0x0eb4, 0x0eba, 0x0ebf,
- 0x0ec4, 0x0ecc, 0x0ecc, 0x0ed2, 0x0ed2, 0x0ed8, 0x0edb, 0x0ee1,
- // Entry 240 - 27F
- 0x0ee8, 0x0eed, 0x0eed, 0x0ef6, 0x0efe, 0x0f0c, 0x0f0c, 0x0f12,
- 0x0f2e, 0x0f33, 0x0f4d, 0x0f51, 0x0f5f, 0x0f68, 0x0f7a, 0x0f8e,
- 0x0fa1, 0x0fb2, 0x0fc4, 0x0fd5, 0x0fee, 0x0ffe, 0x100f, 0x100f,
- 0x1021, 0x1031, 0x103d, 0x1045, 0x1059, 0x106b, 0x1074, 0x1080,
- 0x1094, 0x10a7,
-} // Size: 1244 bytes
-
-var ptPTLangStr string = "" + // Size: 591 bytes
- "africânderchecochuvasheweestóniofrísico ocidentalhaúçahindiarménioigboco" +
- "nguêscanarimgandamacedónionorueguês nynorsknorueguês bokmålprovençalossé" +
- "ticopolacopastókinyarwandaturcomanotongamapuchebamunghomalajargão chinoo" +
- "ksorani curdobaixo sórabioegípcio clássicoinglês medievalfrancês medieva" +
- "lfrísio orientalalemão medieval altogrego clássicoalto sórabiocabo-verdi" +
- "anolezghianoluri do norteluoirlandês, medievalmohawkbaixo-alemãoromanêss" +
- "akhaárabe do Chadelule samiinari samiskolt samirootvaisogaárabe moderno " +
- "padrãoazeri meridionalinglês canadianofrancês canadiano"
-
-var ptPTLangIdx = []uint16{ // 601 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0017, 0x0017, 0x0017,
- 0x0017, 0x0017, 0x0017, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003b,
- 0x003b, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0048, 0x0048,
- // Entry 40 - 7F
- 0x0048, 0x0048, 0x0048, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
- 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0060, 0x0060, 0x0060,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006a,
- 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a,
- 0x006a, 0x006a, 0x006a, 0x007c, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x0098, 0x0098, 0x0098, 0x0098, 0x00a1, 0x00a1, 0x00a1, 0x00a7,
- // Entry 80 - BF
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8,
- 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
- 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
- 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c1,
- 0x00c1, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- // Entry C0 - FF
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d2, 0x00d2, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f4,
- // Entry 100 - 13F
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0102, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0114,
- 0x0114, 0x0114, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
- 0x0124, 0x0124, 0x0124, 0x0135, 0x0135, 0x0135, 0x0135, 0x0145,
- 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145,
- 0x0145, 0x0145, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
- 0x015a, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
- // Entry 140 - 17F
- 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0183,
- 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
- 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
- 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
- 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x018c, 0x018c, 0x018c,
- // Entry 180 - 1BF
- 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x0199, 0x0199, 0x0199,
- 0x0199, 0x0199, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
- 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
- 0x019c, 0x019c, 0x019c, 0x019c, 0x01af, 0x01af, 0x01af, 0x01af,
- 0x01af, 0x01af, 0x01af, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5,
- 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5,
- 0x01b5, 0x01b5, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- // Entry 1C0 - 1FF
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01ca, 0x01ca,
- 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01cf, 0x01cf, 0x01cf,
- 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf,
- 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf,
- 0x01cf, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e7,
- // Entry 200 - 23F
- 0x01f1, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01ff, 0x0202, 0x0202, 0x0202,
- 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
- 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0206, 0x0206, 0x0206,
- // Entry 240 - 27F
- 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206,
- 0x0206, 0x0206, 0x0206, 0x0206, 0x021c, 0x022c, 0x022c, 0x022c,
- 0x022c, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d,
- 0x024f,
-} // Size: 1226 bytes
-
-var roLangStr string = "" + // Size: 4388 bytes
- "afarabhazăavestanăafrikaansakanamharicăaragonezăarabăasamezăavarăaymaraa" +
- "zerăbașkirăbielorusăbulgarăbislamabambarabengalezătibetanăbretonăbosniac" +
- "ăcatalanăcecenăchamorrocorsicanăcreecehăslavonăciuvașăgalezădanezăgerma" +
- "nădivehidzongkhaewegreacăenglezăesperantospaniolăestonianăbascăpersanăfu" +
- "lahfinlandezăfijianăfaroezăfrancezăfrizonă occidentalăirlandezăgaelică s" +
- "coțianăgalicianăguaranigujaratimanxhausaebraicăhindihiri motucroatăhaiti" +
- "anămaghiarăarmeanăhererointerlinguaindonezianăinterlingueigbosichuan yii" +
- "nupiakidoislandezăitalianăinuktitutjaponezăjavanezăgeorgianăcongolezăkik" +
- "uyukuanyamakazahăkalaallisutkhmerăkannadacoreeanăkanuricașmirăkurdăkomic" +
- "ornicăkârgâzălatinăluxemburghezăgandalimburghezălingalalaoțianălituanian" +
- "ăluba-katangaletonămalgașămarshallezămaorimacedoneanămalayalammongolăma" +
- "rathimalaezămaltezăbirmanezănaurundebele de nordnepalezăndonganeerlandez" +
- "ănorvegiană nynorsknorvegiană bokmålndebele de sudnavajonyanjaoccitanăo" +
- "jibwaoromooriyaosetăpunjabipalipolonezăpaștunăportughezăquechuaromanșăki" +
- "rundiromânărusăkinyarwandasanscrităsardinianăsindhisami de nordsangosing" +
- "halezăslovacăslovenăsamoanăshonasomalezăalbanezăsârbăswatisesothosundane" +
- "zăsuedezăswahilitamilătelugutadjicăthailandezătigrinăturkmenăsetswanaton" +
- "gaturcătsongatătarătahitianăuigurăucraineanăurduuzbecăvendavietnamezăvol" +
- "apukvalonăwolofxhosaidișyorubazhuangchinezăzuluacehacoliadangmeadygheafr" +
- "ihiliaghemainuakkadianăaleutăaltaică meridionalăengleză vecheangikaarama" +
- "icămapuchearapahoarawakasuasturianăawadhibaluchibalinezăbasaabamunghomal" +
- "abejabembabenabafutbaluchi occidentalăbhojpuribikolbinikomsiksikabrajbod" +
- "oakooseburiatbuginezăbulublinmedumbacaddocaribcayugaatsamcebuanochigachi" +
- "bchachagataichuukesemarijargon chinookchoctawchipewyancherokeecheyenneku" +
- "rdă soranicoptăturcă crimeeanăcașubianădakotadargwataitadelawareslavedog" +
- "ribdinkazarmadogrisorabă de josdualaolandeză mijlociejola-fonyidyuladaza" +
- "gaembuefikegipteană vecheekajukelamităengleză mijlocieewondofangfilipine" +
- "zăfonfranceză mijlociefranceză vechefrizonă nordicăfrizonă orientalăfriu" +
- "lanăgagăgăuzăgayogbayageezgilbertinăgermană mijlocie înaltăgermană veche" +
- " înaltăgondigorontalogoticăgrebogreacă vechegermană elvețianăgusiigwichʼ" +
- "inhaidahawaiianăhiligaynonhitităhmongsorabă de sushupaibanibibioilokoing" +
- "ușălojbanngombamachameiudeo-persanăiudeo-arabăkarakalpakkabylekachinjjuk" +
- "ambakawikabardiankanembutyapmakondekabuverdianukorokhasilimbp khotanezăk" +
- "oyra chiinikakokalenjinkimbundukomi-permiakkonkanikosraekpellekaraceai-b" +
- "alkarkarelianăkurukhshambalabafiakölschkumykkutenailadinolangilahndalamb" +
- "alezghianlakotamongoloziluri de nordluba-lulualuisenolundaluolusahiluyia" +
- "madurezămafamagahimaithilimakasarmandingomasaimabamokshamandarmendemerum" +
- "orisyenirlandeză mijlociemakhuwa-meettometa’micmacminangkabaumanciuriană" +
- "manipurmohawkmossimundanglimbi multiplecreekmirandezămarwarimyeneerzyama" +
- "zanderaninapolitanănamagermana de josnewariniasniueanăkwasiongiemboonnog" +
- "ainordică vechen’kosotho de nordnuernewari clasicănyamwezinyankolenyoron" +
- "zimaosageturcă otomanăpangasinanpahlavipampangapapiamentopalauanăpersană" +
- " vechefenicianăpohnpeianăprovensală vechequichérajasthanirapanuirarotong" +
- "anromboromaniaromânărwasandawesakhaaramaică samariteanăsamburusasaksanta" +
- "lingambaysangusicilianăscotskurdă de sudsenecasenaselkupkoyraboro Sennii" +
- "rlandeză vechetachelhitshanarabă ciadianăsidamosami de sudlule samiinari" +
- " samiskolt samisoninkesogdiensranan tongoserersahosukumasususumerianăcom" +
- "orezăswahili Congosiriacă clasicăsiriacătimnetesoterenotetumtigretivtoke" +
- "lauklingonianătlingittamasheknyasa tongatok pisintarokotsimshiantumbukat" +
- "uvalutasawaqtuvanătamazight central marocanăudmurtugariticăumbundurootva" +
- "ivoticvunjowalserwalamowaraywashowarlpiricalmucăsogayaoyapezăyangbenyemb" +
- "acantonezăzapotecăsimboluri Bilsszenagatamazight standard marocanăzunifa" +
- "ră conținut lingvisticzazaarabă standard modernăgermană austriacăgermană" +
- " standard elvețianăengleză australianăengleză canadianăengleză britanică" +
- "engleză americanăspaniolă latino-americanăspaniolă europeanăspaniolă mex" +
- "icanăfranceză canadianăfranceză elvețianăsaxona de josflamandăportugheză" +
- " brazilianăportugheză europeanămoldoveneascăsârbo-croatăchineză simplifi" +
- "catăchineză tradițională"
-
-var roLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0034,
- 0x003a, 0x0042, 0x0048, 0x004e, 0x0054, 0x005d, 0x0067, 0x006f,
- 0x0076, 0x007d, 0x0087, 0x0090, 0x0098, 0x00a1, 0x00aa, 0x00b1,
- 0x00b9, 0x00c3, 0x00c7, 0x00cc, 0x00d4, 0x00dd, 0x00e4, 0x00eb,
- 0x00f3, 0x00f9, 0x0101, 0x0104, 0x010b, 0x0113, 0x011c, 0x0125,
- 0x012f, 0x0135, 0x013d, 0x0142, 0x014d, 0x0155, 0x015d, 0x0166,
- 0x017b, 0x0185, 0x0198, 0x01a2, 0x01a9, 0x01b1, 0x01b5, 0x01ba,
- 0x01c2, 0x01c7, 0x01d0, 0x01d7, 0x01e0, 0x01e9, 0x01f1, 0x01f7,
- // Entry 40 - 7F
- 0x0202, 0x020e, 0x0219, 0x021d, 0x0227, 0x022e, 0x0231, 0x023b,
- 0x0244, 0x024d, 0x0256, 0x025f, 0x0269, 0x0273, 0x0279, 0x0281,
- 0x0288, 0x0293, 0x029a, 0x02a1, 0x02aa, 0x02b0, 0x02b9, 0x02bf,
- 0x02c3, 0x02cb, 0x02d5, 0x02dc, 0x02ea, 0x02ef, 0x02fb, 0x0302,
- 0x030c, 0x0317, 0x0323, 0x032a, 0x0333, 0x033f, 0x0344, 0x0350,
- 0x0359, 0x0361, 0x0368, 0x0370, 0x0378, 0x0382, 0x0387, 0x0396,
- 0x039f, 0x03a5, 0x03b1, 0x03c4, 0x03d7, 0x03e5, 0x03eb, 0x03f1,
- 0x03fa, 0x0400, 0x0405, 0x040a, 0x0410, 0x0417, 0x041b, 0x0424,
- // Entry 80 - BF
- 0x042d, 0x0438, 0x043f, 0x0448, 0x044f, 0x0457, 0x045c, 0x0467,
- 0x0471, 0x047c, 0x0482, 0x048e, 0x0493, 0x049e, 0x04a6, 0x04ae,
- 0x04b6, 0x04bb, 0x04c4, 0x04cd, 0x04d4, 0x04d9, 0x04e0, 0x04ea,
- 0x04f2, 0x04f9, 0x0500, 0x0506, 0x050e, 0x051a, 0x0522, 0x052b,
- 0x0533, 0x0538, 0x053e, 0x0544, 0x054c, 0x0556, 0x055d, 0x0568,
- 0x056c, 0x0573, 0x0578, 0x0583, 0x058a, 0x0591, 0x0596, 0x059b,
- 0x05a0, 0x05a6, 0x05ac, 0x05b4, 0x05b8, 0x05bc, 0x05c1, 0x05c8,
- 0x05ce, 0x05ce, 0x05d6, 0x05db, 0x05df, 0x05e9, 0x05e9, 0x05f0,
- // Entry C0 - FF
- 0x05f0, 0x0605, 0x0613, 0x0619, 0x0622, 0x0629, 0x0629, 0x0630,
- 0x0630, 0x0636, 0x0636, 0x0636, 0x0639, 0x0639, 0x0643, 0x0643,
- 0x0649, 0x0650, 0x0659, 0x0659, 0x065e, 0x0663, 0x0663, 0x066a,
- 0x066e, 0x0673, 0x0673, 0x0677, 0x067c, 0x067c, 0x0690, 0x0698,
- 0x069d, 0x06a1, 0x06a1, 0x06a4, 0x06ab, 0x06ab, 0x06ab, 0x06af,
- 0x06af, 0x06b3, 0x06b9, 0x06bf, 0x06c8, 0x06cc, 0x06d0, 0x06d7,
- 0x06dc, 0x06e1, 0x06e7, 0x06ec, 0x06f3, 0x06f8, 0x06ff, 0x0707,
- 0x070f, 0x0713, 0x0721, 0x0728, 0x0731, 0x0739, 0x0741, 0x074e,
- // Entry 100 - 13F
- 0x0754, 0x0754, 0x0765, 0x0770, 0x0776, 0x077c, 0x0781, 0x0789,
- 0x078e, 0x0794, 0x0799, 0x079e, 0x07a3, 0x07b1, 0x07b1, 0x07b6,
- 0x07c8, 0x07d2, 0x07d7, 0x07dd, 0x07e1, 0x07e5, 0x07e5, 0x07f5,
- 0x07fb, 0x0803, 0x0814, 0x0814, 0x081a, 0x081a, 0x081e, 0x0829,
- 0x0829, 0x082c, 0x082c, 0x083e, 0x084d, 0x084d, 0x085e, 0x0871,
- 0x087a, 0x087c, 0x0886, 0x0886, 0x088a, 0x088f, 0x088f, 0x0893,
- 0x089e, 0x089e, 0x08b8, 0x08cf, 0x08cf, 0x08d4, 0x08dd, 0x08e4,
- 0x08e9, 0x08f6, 0x090a, 0x090a, 0x090a, 0x090f, 0x0918, 0x091d,
- // Entry 140 - 17F
- 0x091d, 0x0927, 0x0927, 0x0931, 0x0938, 0x093d, 0x094b, 0x094b,
- 0x094f, 0x0953, 0x0959, 0x095e, 0x0966, 0x0966, 0x0966, 0x096c,
- 0x0972, 0x0979, 0x0987, 0x0993, 0x0993, 0x099d, 0x09a3, 0x09a9,
- 0x09ac, 0x09b1, 0x09b5, 0x09be, 0x09c5, 0x09c9, 0x09d0, 0x09dc,
- 0x09dc, 0x09e0, 0x09e0, 0x09e5, 0x09f5, 0x0a01, 0x0a01, 0x0a01,
- 0x0a05, 0x0a0d, 0x0a15, 0x0a21, 0x0a28, 0x0a2e, 0x0a34, 0x0a43,
- 0x0a43, 0x0a43, 0x0a4d, 0x0a53, 0x0a5b, 0x0a60, 0x0a67, 0x0a6c,
- 0x0a73, 0x0a79, 0x0a7e, 0x0a84, 0x0a89, 0x0a91, 0x0a91, 0x0a91,
- // Entry 180 - 1BF
- 0x0a91, 0x0a97, 0x0a97, 0x0a9c, 0x0aa0, 0x0aac, 0x0aac, 0x0ab6,
- 0x0abd, 0x0ac2, 0x0ac5, 0x0acb, 0x0ad0, 0x0ad0, 0x0ad0, 0x0ad9,
- 0x0add, 0x0ae3, 0x0aeb, 0x0af2, 0x0afa, 0x0aff, 0x0b03, 0x0b09,
- 0x0b0f, 0x0b14, 0x0b18, 0x0b20, 0x0b33, 0x0b41, 0x0b48, 0x0b4e,
- 0x0b59, 0x0b65, 0x0b6c, 0x0b72, 0x0b77, 0x0b77, 0x0b7e, 0x0b8c,
- 0x0b91, 0x0b9b, 0x0ba2, 0x0ba2, 0x0ba7, 0x0bac, 0x0bb7, 0x0bb7,
- 0x0bc2, 0x0bc6, 0x0bd4, 0x0bda, 0x0bde, 0x0be6, 0x0be6, 0x0bec,
- 0x0bf5, 0x0bfa, 0x0c08, 0x0c08, 0x0c0e, 0x0c1b, 0x0c1f, 0x0c2e,
- // Entry 1C0 - 1FF
- 0x0c36, 0x0c3e, 0x0c43, 0x0c48, 0x0c4d, 0x0c5c, 0x0c66, 0x0c6d,
- 0x0c75, 0x0c7f, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96,
- 0x0ca0, 0x0ca0, 0x0ca0, 0x0cab, 0x0cab, 0x0cbc, 0x0cc3, 0x0cc3,
- 0x0ccd, 0x0cd4, 0x0cde, 0x0cde, 0x0cde, 0x0ce3, 0x0ce9, 0x0ce9,
- 0x0ce9, 0x0ce9, 0x0cf2, 0x0cf5, 0x0cfc, 0x0d01, 0x0d17, 0x0d1e,
- 0x0d23, 0x0d2a, 0x0d2a, 0x0d31, 0x0d36, 0x0d40, 0x0d45, 0x0d45,
- 0x0d52, 0x0d58, 0x0d5c, 0x0d5c, 0x0d62, 0x0d71, 0x0d81, 0x0d81,
- 0x0d8a, 0x0d8e, 0x0d9e, 0x0da4, 0x0da4, 0x0da4, 0x0daf, 0x0db8,
- // Entry 200 - 23F
- 0x0dc2, 0x0dcc, 0x0dd3, 0x0dda, 0x0de6, 0x0deb, 0x0def, 0x0def,
- 0x0df5, 0x0df9, 0x0e03, 0x0e0c, 0x0e19, 0x0e2a, 0x0e32, 0x0e32,
- 0x0e32, 0x0e37, 0x0e3b, 0x0e41, 0x0e46, 0x0e4b, 0x0e4e, 0x0e55,
- 0x0e55, 0x0e61, 0x0e68, 0x0e68, 0x0e70, 0x0e7b, 0x0e84, 0x0e84,
- 0x0e8a, 0x0e8a, 0x0e93, 0x0e93, 0x0e9a, 0x0ea0, 0x0ea7, 0x0eae,
- 0x0ec9, 0x0ecf, 0x0ed9, 0x0ee0, 0x0ee4, 0x0ee7, 0x0ee7, 0x0ee7,
- 0x0ee7, 0x0ee7, 0x0eec, 0x0eec, 0x0ef1, 0x0ef7, 0x0efd, 0x0f02,
- 0x0f07, 0x0f0f, 0x0f0f, 0x0f17, 0x0f17, 0x0f1b, 0x0f1e, 0x0f25,
- // Entry 240 - 27F
- 0x0f2c, 0x0f31, 0x0f31, 0x0f3b, 0x0f44, 0x0f53, 0x0f53, 0x0f59,
- 0x0f75, 0x0f79, 0x0f93, 0x0f97, 0x0faf, 0x0faf, 0x0fc2, 0x0fdf,
- 0x0ff4, 0x1007, 0x101a, 0x102d, 0x1048, 0x105c, 0x106f, 0x106f,
- 0x1083, 0x1098, 0x10a5, 0x10ae, 0x10c5, 0x10db, 0x10e9, 0x10f7,
- 0x110d, 0x1124,
-} // Size: 1244 bytes
-
-var ruLangStr string = "" + // Size: 9370 bytes
- "афарабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийассамски" +
- "йаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбисламабам" +
- "барийскийбенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийча" +
- "моррокорсиканскийкриийскийчешскийцерковнославянскийчувашскийваллийскийд" +
- "атскийнемецкиймальдивскийдзонг-кээвегреческийанглийскийэсперантоиспанск" +
- "ийэстонскийбаскскийперсидскийфулахфинскийфиджифарерскийфранцузскийзапад" +
- "но-фризскийирландскийгэльскийгалисийскийгуаранигуджаратимэнскийхаусаивр" +
- "итхиндихиримотухорватскийгаитянскийвенгерскийармянскийгерероинтерлингва" +
- "индонезийскийинтерлингвеигбосычуаньинупиакидоисландскийитальянскийинукт" +
- "итутяпонскийяванскийгрузинскийконгокикуйюкунамаказахскийгренландскийкхм" +
- "ерскийканнадакорейскийканурикашмирикурдскийкомикорнийскийкиргизскийлати" +
- "нскийлюксембургскийгандалимбургскийлингалалаосскийлитовскийлуба-катанга" +
- "латышскиймалагасийскиймаршалльскиймаоримакедонскиймалаяламмонгольскийма" +
- "ратхималайскиймальтийскийбирманскийнаурусеверный ндебелинепальскийндонг" +
- "анидерландскийнорвежский нюнорскнорвежский букмолндебели южныйнавахонья" +
- "нджаокситанскийоджибваоромоорияосетинскийпанджабипалипольскийпуштупорту" +
- "гальскийкечуароманшскийрундирумынскийрусскийкиньяруандасанскритсардинск" +
- "ийсиндхисеверносаамскийсангосингальскийсловацкийсловенскийсамоанскийшон" +
- "асомалиалбанскийсербскийсвазисото южныйсунданскийшведскийсуахилитамильс" +
- "кийтелугутаджикскийтайскийтигриньятуркменскийтсванатонганскийтурецкийтс" +
- "онгататарскийтаитянскийуйгурскийукраинскийурдуузбекскийвендавьетнамский" +
- "волапюкваллонскийволофкосаидишйорубачжуанькитайскийзулуачехскийачолиада" +
- "нгмеадыгейскийафрихилиагхемайнуаккадскийалеутскийюжноалтайскийстароангл" +
- "ийскийангикаарамейскийарауканскийарапахоаравакскийасуастурийскийавадхиб" +
- "елуджскийбалийскийбасабамумгхомалабеджабембабенабафутзападно-белуджский" +
- "бходжпурибикольскийбиникомсиксикабрауибодоакоосебурятскийбугийскийбулуб" +
- "илин (блин)медумбакаддокарибкайюгаатсамкебуаночигачибчачагатайскийчукот" +
- "скиймарийский (черемисский)чинук жаргончоктавчипевайянчерокичейеннсоран" +
- "и курдскийкоптскийкрымско-татарскийкашубианскийдакотадаргватаитаделавар" +
- "скийслейвидогрибдинказармадогринижнелужицкийдуаласредненидерландскийдьо" +
- "ла-фоньидиула (дьюла)дазагскийэмбуэфикдревнеегипетскийэкаджукэламскийср" +
- "еднеанглийскийэвондофангфилиппинскийфонсреднефранцузскийстарофранцузски" +
- "йфризский северныйвосточный фризскийфриульскийгагагаузскийгайогбаягеэзг" +
- "ильбертскийсредневерхненемецкийдревневерхненемецкийгондигоронталоготски" +
- "йгребодревнегреческийшвейцарский немецкийгусиигвичинхайдагавайскийхилиг" +
- "айнонхеттскийхмонгверхнелужицкийхупаибанскийибибиоилокоингушскийложбанн" +
- "гомбамачамееврейско-персидскийеврейско-арабскийкаракалпакскийкабильский" +
- "качинскийкаджикамбакавикабардинскийканембутьяпмакондекабувердьянукорокх" +
- "асихотанскийкойра чииникакокаленджинкимбундийскийкоми-пермяцкийконканик" +
- "осраенскийкпеллекарачаево-балкарскийкарельскийкурухшамбалабафиякёльшкум" +
- "ыкскийкутенаиладинолангилахндаламбалезгинскийлакотамонголозисеверно-лур" +
- "ийскийлуба-лулуалуисеньолундалуо (Кения и Танзания)лушайлухьямадурскийм" +
- "афамагахимайтхилимакассарскиймандингомасаимабанскиймокшанскиймандарский" +
- "мендемерумаврикийский креольскийсреднеирландскиймакуа-мееттометамикмакм" +
- "инангкабауманьчжурскийманипурскиймохаукмосимундангнесколько языковкрикм" +
- "ирандийскиймарваримиенеэрзямазендеранскийнеаполитанскийнаманижнегерманс" +
- "кийневарскийниасниуэквасионгиембундногайскийстаронорвежскийнкосото севе" +
- "рныйнуэрневари (классический)ньямвезиньянколеньоронзимаоседжистаротурец" +
- "кийпангасинанпехлевийскийпампангапапьяментопалаустароперсидскийфиникийс" +
- "кийпонапестаропровансальскийкичераджастханирапануираротонганскийромбоцы" +
- "ганскийарумынскийруандасандавеякутскийсамаритянский арамейскийсамбуруса" +
- "сакисанталингамбайскийсангусицилийскийшотландскийюжнокурдскийсенекасена" +
- "селькупскийкойраборо сеннистароирландскийташельхитшанскийчадский арабсс" +
- "идамаюжно-саамскийлуле-саамскийинари-саамскийскольт-саамскийсонинкесогд" +
- "ийскийсранан тонгосерерсахосукумасусушумерскийкоморскийконголезский суа" +
- "хиликлассический сирийскийсирийскийтемнетесотеренотетумтигретивитокелай" +
- "скийклингонскийтлингиттамашекньяса (тонга)ток-писинтуройотарокоцимшиант" +
- "умбукатувалутасавактувинскийсреднеатласский тамазигхтскийудмуртскийугар" +
- "итскийумбундукорневой языкваиводскийвунджовалисскийволамоварайвашовальб" +
- "ирикалмыцкийсогаяояпянбанйембакантонскийсапотекскийблиссимволиказенагск" +
- "ийтамазигхтскийзуньибез языкового содержаниязазаарабский литературныйав" +
- "стрийский немецкийшвейцарский верхненемецкийавстралийский английскийкан" +
- "адский английскийбританский английскийамериканский английскийлатиноамер" +
- "иканский испанскийевропейский испанскиймексиканский испанскийканадский " +
- "французскийшвейцарский французскийнижнесаксонскийфламандскийбразильский" +
- " португальскийевропейский португальскиймолдавскийсербскохорватскийупроще" +
- "нный китайскийтрадиционный китайский"
-
-var ruLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0008, 0x001a, 0x0030, 0x0042, 0x004a, 0x005c, 0x0070,
- 0x0080, 0x0092, 0x00a2, 0x00ae, 0x00cc, 0x00e0, 0x00f6, 0x010a,
- 0x0118, 0x0130, 0x0146, 0x0158, 0x016c, 0x0180, 0x0196, 0x01a8,
- 0x01b6, 0x01ce, 0x01e0, 0x01ee, 0x0212, 0x0224, 0x0238, 0x0246,
- 0x0256, 0x026c, 0x027b, 0x0281, 0x0293, 0x02a7, 0x02b9, 0x02cb,
- 0x02dd, 0x02ed, 0x0301, 0x030b, 0x0319, 0x0323, 0x0335, 0x034b,
- 0x036a, 0x037e, 0x038e, 0x03a4, 0x03b2, 0x03c4, 0x03d2, 0x03dc,
- 0x03e6, 0x03f0, 0x0400, 0x0414, 0x0428, 0x043c, 0x044e, 0x045a,
- // Entry 40 - 7F
- 0x0470, 0x048a, 0x04a0, 0x04a8, 0x04b6, 0x04c4, 0x04ca, 0x04de,
- 0x04f4, 0x0506, 0x0516, 0x0526, 0x053a, 0x0544, 0x0550, 0x055c,
- 0x056e, 0x0586, 0x0598, 0x05a6, 0x05b8, 0x05c4, 0x05d2, 0x05e2,
- 0x05ea, 0x05fe, 0x0612, 0x0624, 0x0640, 0x064a, 0x0660, 0x066e,
- 0x067e, 0x0690, 0x06a7, 0x06b9, 0x06d3, 0x06eb, 0x06f5, 0x070b,
- 0x071b, 0x0731, 0x073f, 0x0751, 0x0767, 0x077b, 0x0785, 0x07a4,
- 0x07b8, 0x07c4, 0x07de, 0x0801, 0x0822, 0x083b, 0x0847, 0x0855,
- 0x086b, 0x0879, 0x0883, 0x088b, 0x089f, 0x08af, 0x08b7, 0x08c7,
- // Entry 80 - BF
- 0x08d1, 0x08eb, 0x08f5, 0x0909, 0x0913, 0x0925, 0x0933, 0x0949,
- 0x0959, 0x096d, 0x0979, 0x0997, 0x09a1, 0x09b7, 0x09c9, 0x09dd,
- 0x09f1, 0x09f9, 0x0a05, 0x0a17, 0x0a27, 0x0a31, 0x0a44, 0x0a58,
- 0x0a68, 0x0a76, 0x0a8a, 0x0a96, 0x0aaa, 0x0ab8, 0x0ac8, 0x0ade,
- 0x0aea, 0x0afe, 0x0b0e, 0x0b1a, 0x0b2c, 0x0b40, 0x0b52, 0x0b66,
- 0x0b6e, 0x0b80, 0x0b8a, 0x0ba0, 0x0bae, 0x0bc2, 0x0bcc, 0x0bd4,
- 0x0bdc, 0x0be8, 0x0bf4, 0x0c06, 0x0c0e, 0x0c1e, 0x0c28, 0x0c36,
- 0x0c4a, 0x0c4a, 0x0c5a, 0x0c64, 0x0c6c, 0x0c7e, 0x0c7e, 0x0c90,
- // Entry C0 - FF
- 0x0c90, 0x0caa, 0x0cc8, 0x0cd4, 0x0ce8, 0x0cfe, 0x0cfe, 0x0d0c,
- 0x0d0c, 0x0d20, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d3c, 0x0d3c,
- 0x0d48, 0x0d5c, 0x0d6e, 0x0d6e, 0x0d76, 0x0d80, 0x0d80, 0x0d8e,
- 0x0d98, 0x0da2, 0x0da2, 0x0daa, 0x0db4, 0x0db4, 0x0dd7, 0x0de9,
- 0x0dfd, 0x0e05, 0x0e05, 0x0e0b, 0x0e19, 0x0e19, 0x0e19, 0x0e23,
- 0x0e23, 0x0e2b, 0x0e37, 0x0e49, 0x0e5b, 0x0e63, 0x0e78, 0x0e86,
- 0x0e90, 0x0e9a, 0x0ea6, 0x0eb0, 0x0ebe, 0x0ec6, 0x0ed0, 0x0ee6,
- 0x0ef8, 0x0f23, 0x0f3a, 0x0f46, 0x0f58, 0x0f64, 0x0f70, 0x0f8d,
- // Entry 100 - 13F
- 0x0f9d, 0x0f9d, 0x0fbe, 0x0fd6, 0x0fe2, 0x0fee, 0x0ff8, 0x100e,
- 0x101a, 0x1026, 0x1030, 0x103a, 0x1044, 0x105e, 0x105e, 0x1068,
- 0x108e, 0x10a3, 0x10ba, 0x10cc, 0x10d4, 0x10dc, 0x10dc, 0x10fc,
- 0x110a, 0x111a, 0x113a, 0x113a, 0x1146, 0x1146, 0x114e, 0x1166,
- 0x1166, 0x116c, 0x116c, 0x118e, 0x11ae, 0x11ae, 0x11cf, 0x11f2,
- 0x1206, 0x120a, 0x121e, 0x121e, 0x1226, 0x122e, 0x122e, 0x1236,
- 0x124e, 0x124e, 0x1276, 0x129e, 0x129e, 0x12a8, 0x12ba, 0x12c8,
- 0x12d2, 0x12f0, 0x1317, 0x1317, 0x1317, 0x1321, 0x132d, 0x1337,
- // Entry 140 - 17F
- 0x1337, 0x1349, 0x1349, 0x135d, 0x136d, 0x1377, 0x1393, 0x1393,
- 0x139b, 0x13ab, 0x13b7, 0x13c1, 0x13d3, 0x13d3, 0x13d3, 0x13df,
- 0x13eb, 0x13f7, 0x141c, 0x143d, 0x143d, 0x1459, 0x146d, 0x147f,
- 0x1489, 0x1493, 0x149b, 0x14b3, 0x14c1, 0x14c9, 0x14d7, 0x14ef,
- 0x14ef, 0x14f7, 0x14f7, 0x1501, 0x1513, 0x1528, 0x1528, 0x1528,
- 0x1530, 0x1542, 0x155c, 0x1577, 0x1585, 0x159b, 0x15a7, 0x15ce,
- 0x15ce, 0x15ce, 0x15e2, 0x15ec, 0x15fa, 0x1604, 0x160e, 0x1620,
- 0x162e, 0x163a, 0x1644, 0x1650, 0x165a, 0x166e, 0x166e, 0x166e,
- // Entry 180 - 1BF
- 0x166e, 0x167a, 0x167a, 0x1684, 0x168c, 0x16ad, 0x16ad, 0x16c0,
- 0x16d0, 0x16da, 0x1701, 0x170b, 0x1715, 0x1715, 0x1715, 0x1727,
- 0x172f, 0x173b, 0x174b, 0x1763, 0x1773, 0x177d, 0x178f, 0x17a3,
- 0x17b7, 0x17c1, 0x17c9, 0x17f6, 0x1816, 0x182d, 0x1835, 0x1841,
- 0x1857, 0x186f, 0x1885, 0x1891, 0x1899, 0x1899, 0x18a7, 0x18c6,
- 0x18ce, 0x18e6, 0x18f4, 0x18f4, 0x18fe, 0x1906, 0x1922, 0x1922,
- 0x193e, 0x1946, 0x1964, 0x1976, 0x197e, 0x1986, 0x1986, 0x1992,
- 0x19a4, 0x19b6, 0x19d4, 0x19d4, 0x19da, 0x19f3, 0x19fb, 0x1a22,
- // Entry 1C0 - 1FF
- 0x1a32, 0x1a42, 0x1a4c, 0x1a56, 0x1a62, 0x1a7c, 0x1a90, 0x1aa8,
- 0x1ab8, 0x1acc, 0x1ad6, 0x1ad6, 0x1ad6, 0x1ad6, 0x1af4, 0x1af4,
- 0x1b0a, 0x1b0a, 0x1b0a, 0x1b16, 0x1b16, 0x1b3c, 0x1b44, 0x1b44,
- 0x1b5a, 0x1b68, 0x1b84, 0x1b84, 0x1b84, 0x1b8e, 0x1ba0, 0x1ba0,
- 0x1ba0, 0x1ba0, 0x1bb4, 0x1bc0, 0x1bce, 0x1bde, 0x1c0d, 0x1c1b,
- 0x1c27, 0x1c35, 0x1c35, 0x1c4b, 0x1c55, 0x1c6b, 0x1c81, 0x1c81,
- 0x1c99, 0x1ca5, 0x1cad, 0x1cad, 0x1cc3, 0x1ce0, 0x1cfe, 0x1cfe,
- 0x1d10, 0x1d1e, 0x1d37, 0x1d43, 0x1d43, 0x1d43, 0x1d5c, 0x1d75,
- // Entry 200 - 23F
- 0x1d90, 0x1dad, 0x1dbb, 0x1dcf, 0x1de6, 0x1df0, 0x1df8, 0x1df8,
- 0x1e04, 0x1e0c, 0x1e1e, 0x1e30, 0x1e57, 0x1e82, 0x1e94, 0x1e94,
- 0x1e94, 0x1e9e, 0x1ea6, 0x1eb2, 0x1ebc, 0x1ec6, 0x1ece, 0x1ee4,
- 0x1ee4, 0x1efa, 0x1f08, 0x1f08, 0x1f16, 0x1f2d, 0x1f3e, 0x1f4a,
- 0x1f56, 0x1f56, 0x1f64, 0x1f64, 0x1f72, 0x1f7e, 0x1f8c, 0x1f9e,
- 0x1fd7, 0x1feb, 0x1fff, 0x200d, 0x2026, 0x202c, 0x202c, 0x202c,
- 0x202c, 0x202c, 0x203a, 0x203a, 0x2046, 0x2058, 0x2064, 0x206e,
- 0x2076, 0x2086, 0x2086, 0x2098, 0x2098, 0x20a0, 0x20a4, 0x20a8,
- // Entry 240 - 27F
- 0x20b2, 0x20bc, 0x20bc, 0x20d0, 0x20e6, 0x2100, 0x2100, 0x2112,
- 0x212c, 0x2136, 0x2164, 0x216c, 0x2195, 0x2195, 0x21bc, 0x21ef,
- 0x221e, 0x2245, 0x226e, 0x229b, 0x22d2, 0x22fb, 0x2326, 0x2326,
- 0x234f, 0x237c, 0x239a, 0x23b0, 0x23e1, 0x2412, 0x2426, 0x2448,
- 0x246f, 0x249a,
-} // Size: 1244 bytes
-
-var siLangStr string = "" + // Size: 5819 bytes
- "ඇබ්කාසියානුඅප්\u200dරිකානුඅකාන්ඇම්හාරික්අරාබිඇසමියානුඅසර්බයිජාන්බාෂ්කිර්" +
- "බෙලරුසියානුබල්ගේරියානුබම්බරාබෙංගාලිටිබෙට්බ්\u200dරේටොන්බොස්නියානුකැටලන" +
- "්චෙච්නියානුක්\u200dරොඑශියානුචෙත්චවේෂ්වේල්ස්ඩැනිශ්ජර්මන්දිවෙහිඩිසොන්කාඉ" +
- "ව්ග්\u200dරීකඉංග්\u200dරීසිඑස්පැරන්ටෝස්පාඤ්ඤඑස්තෝනියානුබොස්කෝපර්සියානු" +
- "ෆින්ලන්තෆීජිෆාරෝස්ප්\u200dරංශබටහිර ෆ්\u200dරිසියානුඅයර්ලන්තගැලීසියානුග" +
- "ුවාරනිගුජරාටිමැන්ක්ස්හෝසාහීබෲහින්දික්\u200dරෝයේශියානුහයිටිහන්ගේරියානුආ" +
- "ර්මේනියානුඉන්දුනීසියානුඉග්බෝසිචුආන් යීඅයිස්ලන්තඉතාලිඉනුක්ටිටුට්ජපන්ජාව" +
- "ාජෝර්ජියානුකිකුයුකසාඛ්කලාලිසට්කමර්කණ්ණඩකොරියානුකාෂ්මීර්කුර්දිකෝනීසියාන" +
- "ුකිර්ගිස්ලතින්ලක්සැම්බර්ග්ගන්ඩාලින්ගලාලාඕලිතුවේනියානුලුලැට්වියානුමලගාස" +
- "ිමාවොරිමැසිඩෝනියානුමලයාලම්මොංගෝලියානුමරාතිමැලේමොල්ටිස්බුරුමඋතුරු එන්ඩි" +
- "බෙලෙනේපාලලන්දේසිනොවේර්ජියානු නයිනෝර්ස්ක්නෝවේජියානු බොක්මාල්ඔරොමෝඔරියාජ" +
- "න්ජාබිපෝලන්තපෂ්ටොපෘතුගීසික්වීචුවාරොමෑන්ශ්රුන්ඩිරොමේනියානුරුසියානුකින්ය" +
- "ර්වන්ඩාසංස්කෘතසින්ධිඋතුරු සාමිසන්ග්\u200dරෝසිංහලස්ලෝවැක්ස්ලෝවේනියානුශෝ" +
- "නාසෝමාලිඇල්බේනියානුසර්බියානුසන්ඩනීසියානුස්වීඩන්ස්වාහිලිදෙමළතෙළිඟුටජික්" +
- "තායිටිග්\u200dරින්යාටර්ක්මෙන්ටොංගාතුර්කිටාටර්උයිගර්යුක්රේනියානුඋර්දුඋස" +
- "්බෙක්වියට්නාම්වොලොෆ්ශෝසායොරූබාචීනසුලුටියුනිසියනු අරාබිඇගම්මපුචෙඅසුබෙම්" +
- "බාබෙනාබටහිර බලොචිබොඩොචිගාචෙරොකීසොරානි කුර්දිෂ්ටයිටාෆර්මාපහළ සෝබියානුඩු" +
- "ආලාජොල-ෆෝනියිඑම්බුපිලිපීනගගාස්ස්විස් ජර්මනිගුසීහවායිඉහළ සෝබියානුනොම්බා" +
- "මැකාමීකැබලාකැම්බාමැකොන්ඩ්කබුවෙර්ඩියානෝකොයිරා චිනිකලෙන්ජන්කොමි-පර්මියාක" +
- "්කොන්කනිශාම්බලාබාෆියාලංගිලකොටඋතුරු ලුරිලුඔලුයියාමසායිමෙරුමොරිස්යෙම්මඛු" +
- "වා-මීටෝමෙටාමොහොව්ක්මුන්ඩන්මැසන්ඩරනිනාමාපහළ ජර්මන්කුවාසිඔඑන්‘කෝනොයර්නයන" +
- "්කොළේකියිචේරෝම්බෝර්වාසම්බුරුසංගුදකුණු කුර්දිසෙනාකෝයිරාබොරො සෙන්නිටචේල්" +
- "හිට්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිකොන්ගෝ ස්වාහිලිටෙසෝටසවාක" +
- "්මධ්\u200dයම ඇට්ලස් ටමසිට්නොදන්නා භාෂාවවයිවුන්ජෝවොපිරිසොගාසම්මත මොරොක්" +
- "කෝ ටමසිග්ත්වාග් විද්\u200dයා අන්තර්ගතයක් නැතනවීන සම්මත අරාබිඔස්ට්" +
- "\u200dරියානු ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසික" +
- "ැනේඩියානු ඉංග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු " +
- "ඉංග්\u200dරීසිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤක" +
- "ැනේඩියානු ප්\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල" +
- " පෘතුගීසියුරෝපීය පෘතුගීසිමොල්ඩෝවාවසුළුකළ චීනසාම්ප්\u200dරදායික චීන"
-
-var siLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0021, 0x0021, 0x003f, 0x004e, 0x0069, 0x0069,
- 0x0078, 0x0090, 0x0090, 0x0090, 0x00b1, 0x00c9, 0x00ea, 0x010b,
- 0x010b, 0x011d, 0x0132, 0x0144, 0x015f, 0x017d, 0x018f, 0x01ad,
- 0x01ad, 0x01d1, 0x01d1, 0x01dd, 0x01dd, 0x01ec, 0x01fe, 0x0210,
- 0x0222, 0x0234, 0x024c, 0x0255, 0x0267, 0x0282, 0x02a0, 0x02b5,
- 0x02d6, 0x02e8, 0x0303, 0x0303, 0x031b, 0x0327, 0x0339, 0x034b,
- 0x037c, 0x0394, 0x0394, 0x03b2, 0x03c7, 0x03dc, 0x03f4, 0x0400,
- 0x040c, 0x041e, 0x041e, 0x0445, 0x0454, 0x0475, 0x0496, 0x0496,
- // Entry 40 - 7F
- 0x0496, 0x04bd, 0x04bd, 0x04cc, 0x04e8, 0x04e8, 0x04e8, 0x0503,
- 0x0512, 0x0533, 0x053f, 0x054b, 0x0569, 0x0569, 0x057b, 0x057b,
- 0x058a, 0x05a2, 0x05ae, 0x05bd, 0x05d5, 0x05d5, 0x05ed, 0x05ff,
- 0x05ff, 0x061d, 0x0635, 0x0644, 0x0668, 0x0677, 0x0677, 0x068c,
- 0x0695, 0x06b9, 0x06bf, 0x06dd, 0x06ef, 0x06ef, 0x0701, 0x0725,
- 0x073a, 0x075b, 0x076a, 0x0776, 0x078e, 0x079d, 0x079d, 0x07c8,
- 0x07d7, 0x07d7, 0x07ec, 0x0832, 0x0869, 0x0869, 0x0869, 0x0869,
- 0x0869, 0x0869, 0x0878, 0x0887, 0x0887, 0x089c, 0x089c, 0x08ae,
- // Entry 80 - BF
- 0x08bd, 0x08d5, 0x08ed, 0x0905, 0x0917, 0x0935, 0x094d, 0x0971,
- 0x0986, 0x0986, 0x0998, 0x09b4, 0x09cc, 0x09db, 0x09f3, 0x0a17,
- 0x0a17, 0x0a23, 0x0a35, 0x0a56, 0x0a71, 0x0a71, 0x0a71, 0x0a95,
- 0x0aaa, 0x0ac2, 0x0ace, 0x0ae0, 0x0aef, 0x0afb, 0x0b1c, 0x0b37,
- 0x0b37, 0x0b46, 0x0b58, 0x0b58, 0x0b67, 0x0b67, 0x0b79, 0x0b9d,
- 0x0bac, 0x0bc1, 0x0bc1, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bee, 0x0bfa,
- 0x0bfa, 0x0c0c, 0x0c0c, 0x0c15, 0x0c21, 0x0c21, 0x0c21, 0x0c21,
- 0x0c21, 0x0c52, 0x0c52, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e,
- // Entry C0 - FF
- 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c6d, 0x0c6d, 0x0c6d,
- 0x0c6d, 0x0c6d, 0x0c6d, 0x0c6d, 0x0c76, 0x0c76, 0x0c76, 0x0c76,
- 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76,
- 0x0c76, 0x0c88, 0x0c88, 0x0c94, 0x0c94, 0x0c94, 0x0cb3, 0x0cb3,
- 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3,
- 0x0cb3, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf,
- 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0ccb, 0x0ccb, 0x0ccb,
- 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cdd, 0x0cdd, 0x0d08,
- // Entry 100 - 13F
- 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d17, 0x0d17,
- 0x0d17, 0x0d17, 0x0d17, 0x0d26, 0x0d26, 0x0d48, 0x0d48, 0x0d57,
- 0x0d57, 0x0d73, 0x0d73, 0x0d73, 0x0d82, 0x0d82, 0x0d82, 0x0d82,
- 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d97,
- 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97,
- 0x0d97, 0x0d97, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6,
- 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6,
- 0x0da6, 0x0da6, 0x0dcb, 0x0dcb, 0x0dcb, 0x0dd7, 0x0dd7, 0x0dd7,
- // Entry 140 - 17F
- 0x0dd7, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0e08, 0x0e08,
- 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08,
- 0x0e1a, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e3b, 0x0e3b,
- 0x0e3b, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e65, 0x0e8c,
- 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0eab, 0x0eab, 0x0eab,
- 0x0eab, 0x0ec3, 0x0ec3, 0x0eeb, 0x0f00, 0x0f00, 0x0f00, 0x0f00,
- 0x0f00, 0x0f00, 0x0f00, 0x0f00, 0x0f15, 0x0f27, 0x0f27, 0x0f27,
- 0x0f27, 0x0f27, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33,
- // Entry 180 - 1BF
- 0x0f33, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f5b, 0x0f5b, 0x0f5b,
- 0x0f5b, 0x0f5b, 0x0f64, 0x0f64, 0x0f76, 0x0f76, 0x0f76, 0x0f76,
- 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f85, 0x0f85, 0x0f85,
- 0x0f85, 0x0f85, 0x0f91, 0x0faf, 0x0faf, 0x0fcb, 0x0fd7, 0x0fd7,
- 0x0fd7, 0x0fd7, 0x0fd7, 0x0fef, 0x0fef, 0x0fef, 0x1004, 0x1004,
- 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x101f, 0x101f,
- 0x101f, 0x102b, 0x1047, 0x1047, 0x1047, 0x1047, 0x1047, 0x105c,
- 0x105c, 0x105c, 0x105c, 0x105c, 0x106e, 0x106e, 0x107d, 0x107d,
- // Entry 1C0 - 1FF
- 0x107d, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095,
- 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095,
- 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x10a7, 0x10a7,
- 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10b9, 0x10b9, 0x10b9,
- 0x10b9, 0x10b9, 0x10b9, 0x10c5, 0x10c5, 0x10c5, 0x10c5, 0x10da,
- 0x10da, 0x10da, 0x10da, 0x10da, 0x10e6, 0x10e6, 0x10e6, 0x10e6,
- 0x1108, 0x1108, 0x1114, 0x1114, 0x1114, 0x1145, 0x1145, 0x1145,
- 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x117c, 0x1195,
- // Entry 200 - 23F
- 0x11b1, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6,
- 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x1201, 0x1201, 0x1201, 0x1201,
- 0x1201, 0x1201, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d,
- 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d,
- 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x121f, 0x121f,
- 0x1257, 0x1257, 0x1257, 0x1257, 0x127c, 0x1285, 0x1285, 0x1285,
- 0x1285, 0x1285, 0x1285, 0x1285, 0x1297, 0x1297, 0x1297, 0x1297,
- 0x1297, 0x12a9, 0x12a9, 0x12a9, 0x12a9, 0x12b5, 0x12b5, 0x12b5,
- // Entry 240 - 27F
- 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5,
- 0x12f6, 0x12f6, 0x1344, 0x1344, 0x1370, 0x1370, 0x13a7, 0x13d9,
- 0x141f, 0x1459, 0x1496, 0x14cd, 0x150b, 0x1536, 0x156a, 0x156a,
- 0x159b, 0x15c0, 0x15df, 0x15f7, 0x1625, 0x1653, 0x166e, 0x166e,
- 0x168a, 0x16bb,
-} // Size: 1244 bytes
-
-var skLangStr string = "" + // Size: 5626 bytes
- "afarčinaabcházčinaavestčinaafrikánčinaakančinaamharčinaaragónčinaarabčin" +
- "aásamčinaavarčinaaymarčinaazerbajdžančinabaškirčinabieloruštinabulharčin" +
- "abislamabambarčinabengálčinatibetčinabretónčinabosniačtinakatalánčinačeč" +
- "enčinačamorčinakorzičtinakríčeštinacirkevná slovančinačuvaštinawaleština" +
- "dánčinanemčinadivehidzongkäeweštinagréčtinaangličtinaesperantošpanielčin" +
- "aestónčinabaskičtinaperzštinafulbčinafínčinafidžijčinafaerčinafrancúzšti" +
- "nazápadná frízštinaírčinaškótska gaelčinagalícijčinaguaraníjčinagudžarát" +
- "činamančinahauštinahebrejčinahindčinahiri motuchorvátčinahaitčinamaďarč" +
- "inaarménčinahererointerlinguaindonézštinainterlingueigboštinas’čchuanská" +
- " ioštinainupiaqidoislandčinataliančinainuktitutjapončinajávčinagruzínčin" +
- "akongčinakikujčinakuaňamakazaštinagrónčinakhmérčinakannadčinakórejčinaka" +
- "nurijčinakašmírčinakurdčinakomijčinakornčinakirgizštinalatinčinaluxembur" +
- "činagandčinalimburčinalingalčinalaoštinalitovčinalubčina (katanžská)lot" +
- "yštinamalgaštinakajin-majolmaorijčinamacedónčinamalajálamčinamongolčinam" +
- "aráthčinamalajčinamaltčinabarmčinanauruseverné ndebelenepálčinandongahol" +
- "andčinanórčina (nynorsk)nórčina (bokmål)južná ndebelčinanavajočewaokcitá" +
- "nčinaodžibvaoromčinauríjčinaosetčinapandžábčinapálípoľštinapaštčinaportu" +
- "galčinakečuánčinarétorománčinakirundčinarumunčinaruštinakiňarwandasanskr" +
- "itsardínčinasindhčinalapončina (severná)sangosinhalčinaslovenčinaslovinč" +
- "inasamojčinašončinasomálčinaalbánčinasrbčinasvazijčinajužná sothčinasund" +
- "činašvédčinasvahilčinatamilčinatelugčinatadžičtinathajčinatigriňaturkmé" +
- "nčinatswančinatongčinaturečtinatsongatatárčinatahitčinaujgurčinaukrajinč" +
- "inaurdčinauzbečtinavendčinavietnamčinavolapükvalónčinawolofčinaxhoštinaj" +
- "idišjorubčinačuangčinačínštinazuluštinaacehčinaačoliadangmeadygčinaafrih" +
- "iliaghemainčinaakkadčinaaleutčinajužná altajčinastará angličtinaangikaar" +
- "amejčinaaraukánčinaarapahoarawačtinaasuastúrčinaavadhčinabalúčtinabalijč" +
- "inabasabamunghomalabedžabembabenabafutzápadná balúčtinabhódžpurčinabikol" +
- "binikomsiksikabradžčinabodoakooseburiatčinabugištinabulublinmedumbakaddo" +
- "karibskýcayugaatsamcebuánčinakigačibčačagatajčinatrukmarijčinačinucký ža" +
- "rgónčoktavčinačipevajčinačerokíčejenčinakurdčina (sorání)koptčinakrymská" +
- " turečtinakašubčinadakotčinadarginčinataitadelawarčinaslovančinadogribči" +
- "nadinkazarmadógrídolnolužická srbčinadualastredná holandčinajola-fonyiďu" +
- "ladazagaembuefikstaroegyptskýekadžukelamčinastredná angličtinaewondofang" +
- "činafilipínčinafončinastredná francúzštinastará francúzštinaseverná frí" +
- "zštinavýchodná frízštinafriulčinagagagauzštinagayogbajaetiópčinakiribatč" +
- "inastredná horná nemčinastará horná nemčinagóndčinagorontalogótčinagrebo" +
- "starogréčtinanemčina (švajčiarska)gusiigwichʼinhaidahavajčinahiligajnonč" +
- "inachetitčinahmonghornolužická srbčinahupčinaibančinaibibioilokánčinaing" +
- "uštinalojbanngombamašamežidovská perzštinažidovská arabčinakarakalpačtin" +
- "akabylčinakačjinčinajjukambakawikabardčinakanembutyapmakondekapverdčinak" +
- "orokhasijčinachotančinazápadná songhajčinakakokalendžinkimbundukomi-perm" +
- "iačtinakonkánčinakusaiekpellekaračajevsko-balkarský jazykkarelčinakurukh" +
- "činašambalabafiakolínčinakumyčtinakutenajčinažidovská španielčinalangil" +
- "ahandčinalambalezginčinalakotčinamongoloziseverné luriluba-luluánčinalui" +
- "seňolundaluomizorámčinaluhjamadurčinamafamagadhčinamaithilčinamakasarčin" +
- "amandingomasajčinamabamokšiančinamandarčinamendimerumaurícijská kreolčin" +
- "astredná írčinamakua-meettometa’mikmakčinaminangkabaučinamandžuštinamaní" +
- "purčinamohawkčinamossimundangviaceré jazykykríkčinamirandčinamarawarimye" +
- "neerzjančinamázandaránčinaneapolčinanamadolná nemčinanevárčinaniasánčina" +
- "niueštinakwasiongiemboonnogajčinastará nórčinan’koseverná sothčinanuerkl" +
- "asická nevárčinaňamweziňankoleňoronzimaosagčinaosmanská turečtinapangasi" +
- "nančinapahlavípampangapapiamentopalaučinastará perzštinafeničtinapohnpei" +
- "činastará okcitánčinakičéradžastančinarapanujčinararotonganromborómčina" +
- "arumunčinarwasandawejakutčinasamaritánska aramejčinasamburusasačtinasant" +
- "alčinangambaysangusicílčinaškótčinakurdčina (južná)senecasenaselkupčinak" +
- "oyraboro sennistará írčinatachelhitšančinačadská arabčinasidamolapončina" +
- " (južná)lapončina (lulská)lapončina (inarijská)lapončina (skoltská)sonin" +
- "kesogdijčinasrananserersahosukumasususumerčinakomorčinasvahilčina (konžs" +
- "ká)klasická sýrčinasýrčinatemnetesoterenotetumtigrejčinativtokelaučinakl" +
- "ingónčinatlingitčinatamašekňasa tongatok pisintarokotsimshijské jazykytu" +
- "mbukatuvalčinatasawaqtuviančinatamašek (stredomarocký)udmurtčinaugaritči" +
- "naumbundukoreňvaivodčinavunjowalserčinawalamowaraywashowarlpirikalmyčtin" +
- "asogajaojapčinajangbenyembakantončinazapotéčtinasystém Blisszenagatamaše" +
- "k (štandardný marocký)zuništinabez jazykového obsahuzázáarabčina (modern" +
- "á štandardná)nemčina (rakúska)nemčina (švajčiarska spisovná)angličtina " +
- "(austrálska)angličtina (kanadská)angličtina (britská)angličtina (americk" +
- "á)španielčina (latinskoamerická)španielčina (európska)španielčina (mexi" +
- "cká)francúzština (kanadská)francúzština (švajčiarska)dolná saštinaflámči" +
- "naportugalčina (brazílska)portugalčina (európska)moldavčinasrbochorvátči" +
- "načínština (zjednodušená)čínština (tradičná)"
-
-var skLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0015, 0x001f, 0x002c, 0x0035, 0x003f, 0x004b,
- 0x0054, 0x005e, 0x0067, 0x0071, 0x0082, 0x008e, 0x009b, 0x00a6,
- 0x00ad, 0x00b8, 0x00c4, 0x00ce, 0x00da, 0x00e6, 0x00f3, 0x00ff,
- 0x010a, 0x0115, 0x0119, 0x0122, 0x0137, 0x0142, 0x014c, 0x0155,
- 0x015d, 0x0163, 0x016b, 0x0174, 0x017e, 0x0189, 0x0192, 0x019f,
- 0x01aa, 0x01b5, 0x01bf, 0x01c8, 0x01d1, 0x01dd, 0x01e6, 0x01f4,
- 0x0209, 0x0211, 0x0224, 0x0231, 0x023f, 0x024e, 0x0256, 0x025f,
- 0x026a, 0x0273, 0x027c, 0x0289, 0x0292, 0x029d, 0x02a8, 0x02ae,
- // Entry 40 - 7F
- 0x02b9, 0x02c7, 0x02d2, 0x02dc, 0x02f4, 0x02fb, 0x02fe, 0x0309,
- 0x0314, 0x031d, 0x0327, 0x0330, 0x033c, 0x0345, 0x034f, 0x0357,
- 0x0361, 0x036b, 0x0376, 0x0381, 0x038c, 0x0398, 0x03a5, 0x03ae,
- 0x03b8, 0x03c1, 0x03cd, 0x03d7, 0x03e4, 0x03ed, 0x03f8, 0x0403,
- 0x040c, 0x0416, 0x042c, 0x0436, 0x0441, 0x044c, 0x0457, 0x0464,
- 0x0473, 0x047e, 0x048a, 0x0494, 0x049d, 0x04a6, 0x04ab, 0x04bb,
- 0x04c6, 0x04cc, 0x04d7, 0x04ea, 0x04fd, 0x0510, 0x0516, 0x051b,
- 0x0528, 0x0530, 0x0539, 0x0543, 0x054c, 0x055a, 0x0560, 0x056a,
- // Entry 80 - BF
- 0x0574, 0x0581, 0x058e, 0x059e, 0x05a9, 0x05b3, 0x05bb, 0x05c6,
- 0x05ce, 0x05da, 0x05e4, 0x05f9, 0x05fe, 0x0609, 0x0614, 0x061f,
- 0x0629, 0x0632, 0x063d, 0x0648, 0x0650, 0x065b, 0x066c, 0x0675,
- 0x0680, 0x068b, 0x0695, 0x069f, 0x06ab, 0x06b4, 0x06bc, 0x06c9,
- 0x06d3, 0x06dc, 0x06e6, 0x06ec, 0x06f7, 0x0701, 0x070b, 0x0717,
- 0x071f, 0x0729, 0x0732, 0x073e, 0x0746, 0x0751, 0x075b, 0x0764,
- 0x076a, 0x0774, 0x077f, 0x078a, 0x0794, 0x079d, 0x07a3, 0x07aa,
- 0x07b3, 0x07b3, 0x07bb, 0x07c0, 0x07c8, 0x07d2, 0x07d2, 0x07dc,
- // Entry C0 - FF
- 0x07dc, 0x07ee, 0x0800, 0x0806, 0x0811, 0x081e, 0x081e, 0x0825,
- 0x0825, 0x0830, 0x0830, 0x0830, 0x0833, 0x0833, 0x083e, 0x083e,
- 0x0848, 0x0853, 0x085d, 0x085d, 0x0861, 0x0866, 0x0866, 0x086d,
- 0x0873, 0x0878, 0x0878, 0x087c, 0x0881, 0x0881, 0x0896, 0x08a5,
- 0x08aa, 0x08ae, 0x08ae, 0x08b1, 0x08b8, 0x08b8, 0x08b8, 0x08c3,
- 0x08c3, 0x08c7, 0x08cd, 0x08d8, 0x08e2, 0x08e6, 0x08ea, 0x08f1,
- 0x08f6, 0x08ff, 0x0905, 0x090a, 0x0916, 0x091a, 0x0921, 0x092e,
- 0x0932, 0x093c, 0x094e, 0x095a, 0x0967, 0x096f, 0x097a, 0x098e,
- // Entry 100 - 13F
- 0x0997, 0x0997, 0x09aa, 0x09b5, 0x09bf, 0x09ca, 0x09cf, 0x09db,
- 0x09e6, 0x09f1, 0x09f6, 0x09fb, 0x0a02, 0x0a19, 0x0a19, 0x0a1e,
- 0x0a32, 0x0a3c, 0x0a41, 0x0a47, 0x0a4b, 0x0a4f, 0x0a4f, 0x0a5d,
- 0x0a65, 0x0a6e, 0x0a82, 0x0a82, 0x0a88, 0x0a88, 0x0a91, 0x0a9e,
- 0x0a9e, 0x0aa6, 0x0aa6, 0x0abd, 0x0ad2, 0x0ad2, 0x0ae6, 0x0afc,
- 0x0b06, 0x0b08, 0x0b14, 0x0b14, 0x0b18, 0x0b1d, 0x0b1d, 0x0b28,
- 0x0b34, 0x0b34, 0x0b4c, 0x0b62, 0x0b62, 0x0b6c, 0x0b75, 0x0b7e,
- 0x0b83, 0x0b92, 0x0baa, 0x0baa, 0x0baa, 0x0baf, 0x0bb8, 0x0bbd,
- // Entry 140 - 17F
- 0x0bbd, 0x0bc7, 0x0bc7, 0x0bd6, 0x0be1, 0x0be6, 0x0bfd, 0x0bfd,
- 0x0c05, 0x0c0e, 0x0c14, 0x0c20, 0x0c2a, 0x0c2a, 0x0c2a, 0x0c30,
- 0x0c36, 0x0c3d, 0x0c52, 0x0c66, 0x0c66, 0x0c75, 0x0c7f, 0x0c8b,
- 0x0c8e, 0x0c93, 0x0c97, 0x0ca2, 0x0ca9, 0x0cad, 0x0cb4, 0x0cc0,
- 0x0cc0, 0x0cc4, 0x0cc4, 0x0ccf, 0x0cda, 0x0cf0, 0x0cf0, 0x0cf0,
- 0x0cf4, 0x0cfe, 0x0d06, 0x0d17, 0x0d23, 0x0d29, 0x0d2f, 0x0d4d,
- 0x0d4d, 0x0d4d, 0x0d57, 0x0d62, 0x0d6a, 0x0d6f, 0x0d7a, 0x0d84,
- 0x0d90, 0x0da8, 0x0dad, 0x0db8, 0x0dbd, 0x0dc8, 0x0dc8, 0x0dc8,
- // Entry 180 - 1BF
- 0x0dc8, 0x0dd2, 0x0dd2, 0x0dd7, 0x0ddb, 0x0de8, 0x0de8, 0x0df9,
- 0x0e01, 0x0e06, 0x0e09, 0x0e16, 0x0e1b, 0x0e1b, 0x0e1b, 0x0e25,
- 0x0e29, 0x0e34, 0x0e40, 0x0e4c, 0x0e54, 0x0e5e, 0x0e62, 0x0e6f,
- 0x0e7a, 0x0e7f, 0x0e83, 0x0e9b, 0x0eac, 0x0eb8, 0x0ebf, 0x0eca,
- 0x0eda, 0x0ee7, 0x0ef4, 0x0eff, 0x0f04, 0x0f04, 0x0f0b, 0x0f1a,
- 0x0f24, 0x0f2f, 0x0f37, 0x0f37, 0x0f3c, 0x0f47, 0x0f58, 0x0f58,
- 0x0f63, 0x0f67, 0x0f76, 0x0f81, 0x0f8d, 0x0f97, 0x0f97, 0x0f9d,
- 0x0fa6, 0x0fb0, 0x0fc0, 0x0fc0, 0x0fc6, 0x0fd8, 0x0fdc, 0x0ff1,
- // Entry 1C0 - 1FF
- 0x0ff9, 0x1001, 0x1006, 0x100b, 0x1014, 0x1028, 0x1037, 0x103f,
- 0x1047, 0x1051, 0x105b, 0x105b, 0x105b, 0x105b, 0x106c, 0x106c,
- 0x1076, 0x1076, 0x1076, 0x1082, 0x1082, 0x1096, 0x109c, 0x109c,
- 0x10ab, 0x10b7, 0x10c1, 0x10c1, 0x10c1, 0x10c6, 0x10cf, 0x10cf,
- 0x10cf, 0x10cf, 0x10da, 0x10dd, 0x10e4, 0x10ee, 0x1107, 0x110e,
- 0x1118, 0x1123, 0x1123, 0x112a, 0x112f, 0x113a, 0x1145, 0x1145,
- 0x1158, 0x115e, 0x1162, 0x1162, 0x116d, 0x117c, 0x118b, 0x118b,
- 0x1194, 0x119d, 0x11af, 0x11b5, 0x11b5, 0x11b5, 0x11c9, 0x11dd,
- // Entry 200 - 23F
- 0x11f4, 0x120a, 0x1211, 0x121c, 0x1222, 0x1227, 0x122b, 0x122b,
- 0x1231, 0x1235, 0x123f, 0x1249, 0x1260, 0x1273, 0x127c, 0x127c,
- 0x127c, 0x1281, 0x1285, 0x128b, 0x1290, 0x129b, 0x129e, 0x12aa,
- 0x12aa, 0x12b7, 0x12c3, 0x12c3, 0x12cb, 0x12d6, 0x12df, 0x12df,
- 0x12e5, 0x12e5, 0x12f8, 0x12f8, 0x12ff, 0x1309, 0x1310, 0x131b,
- 0x1334, 0x133f, 0x134a, 0x1351, 0x1357, 0x135a, 0x135a, 0x135a,
- 0x135a, 0x135a, 0x1362, 0x1362, 0x1367, 0x1372, 0x1378, 0x137d,
- 0x1382, 0x138a, 0x138a, 0x1395, 0x1395, 0x1399, 0x139c, 0x13a4,
- // Entry 240 - 27F
- 0x13ab, 0x13b0, 0x13b0, 0x13bb, 0x13c8, 0x13d5, 0x13d5, 0x13db,
- 0x13fb, 0x1405, 0x141b, 0x1421, 0x1442, 0x1442, 0x1455, 0x1477,
- 0x1490, 0x14a7, 0x14bd, 0x14d4, 0x14f5, 0x150e, 0x1526, 0x1526,
- 0x1540, 0x155e, 0x156d, 0x1577, 0x1591, 0x15aa, 0x15b5, 0x15c6,
- 0x15e2, 0x15fa,
-} // Size: 1244 bytes
-
-var slLangStr string = "" + // Size: 6193 bytes
- "afarščinaabhaščinaavestijščinaafrikanščinaakanščinaamharščinaaragonščina" +
- "arabščinaasamščinaavarščinaajmarščinaazerbajdžanščinabaškirščinabelorušč" +
- "inabolgarščinabislamščinabambarščinabengalščinatibetanščinabretonščinabo" +
- "sanščinakatalonščinačečenščinačamorščinakorziščinakrijščinačeščinastara " +
- "cerkvena slovanščinačuvaščinavaližanščinadanščinanemščinadiveščinadzonka" +
- "evenščinagrščinaangleščinaesperantošpanščinaestonščinabaskovščinaperzijš" +
- "činafulščinafinščinafidžijščinaferščinafrancoščinafrizijščinairščinaško" +
- "tska gelščinagalicijščinagvaranijščinagudžaratščinamanščinahavščinahebre" +
- "jščinahindujščinahiri motuhrvaščinahaitijska kreolščinamadžarščinaarmenš" +
- "činahererointerlingvaindonezijščinainterlingveigboščinasečuanska jiščin" +
- "ainupiaščinaidoislandščinaitalijanščinainuktitutščinajaponščinajavanščin" +
- "agruzinščinakongovščinakikujščinakvanjamakazaščinagrenlandščinakmerščina" +
- "kanadakorejščinakanurščinakašmirščinakurdščinakomijščinakornijščinakirgi" +
- "ščinalatinščinaluksemburščinagandalimburščinalingalalaoščinalitovščinal" +
- "uba-katangalatvijščinamalagaščinamarshallovščinamaorščinamakedonščinamal" +
- "ajalamščinamongolščinamaratščinamalajščinamalteščinaburmanščinanaurujšči" +
- "naseverna ndebelščinanepalščinanizozemščinanovonorveščinaknjižna norvešč" +
- "inajužna ndebelščinanavajščinanjanščinaokcitanščinaanašinabščinaoromoori" +
- "jščinaosetinščinapandžabščinapalijščinapoljščinapaštunščinaportugalščina" +
- "kečuanščinaretoromanščinarundščinaromunščinaruščinaruandščinasanskrtsard" +
- "inščinasindščinaseverna samijščinasangosingalščinaslovaščinaslovenščinas" +
- "amoanščinašonščinasomalščinaalbanščinasrbščinasvazijščinasesotosundanšči" +
- "našvedščinasvahilitamilščinatelugijščinatadžiščinatajščinatigrajščinatur" +
- "kmenščinacvanščinatongščinaturščinatsongatatarščinatahitščinaujgurščinau" +
- "krajinščinaurdujščinauzbeščinavendavietnamščinavolapukvalonščinavolofšči" +
- "nakoščinajidišjorubščinakitajščinazulujščinaačejščinaačolijščinaadangmej" +
- "ščinaadigejščinaafrihiliaghemščinaainujščinaakadščinaaleutščinajužna al" +
- "tajščinastara angleščinaangikaščinaaramejščinaaravkanščinaarapaščinaarav" +
- "aščinaasujščinaasturijščinaavadščinabeludžijščinabalijščinabasabedžabemb" +
- "abenajščinazahodnobalučijščinabodžpuribikolski jezikedosiksikabradžbakan" +
- "ščinabodojščinaburjatščinabuginščinablinščinakadoščinakaribski jezikseb" +
- "uanščinačigajščinačibčevščinačagatajščinatrukeščinamarijščinačinuški žar" +
- "gončoktavščinačipevščinačerokeščinačejenščinasoranska kurdščinakoptščina" +
- "krimska tatarščinakašubščinadakotščinadarginščinataitajščinadelavarščina" +
- "slavejščinadogribdinkazarmajščinadogridolnja lužiška srbščinadualasrednj" +
- "a nizozemščinajola-fonjiščinadiulaembujščinaefiščinastara egipčanščinaek" +
- "ajukelamščinasrednja angleščinaevondovščinafangijščinafilipinščinafonšči" +
- "nasrednja francoščinastara francoščinaseverna frizijščinavzhodna frizijš" +
- "činafurlanščinagagagavščinagajščinagbajščinaetiopščinakiribatščinasredn" +
- "ja visoka nemščinastara visoka nemščinagondigorontalščinagotščinagrebšči" +
- "nastara grščinanemščina (Švica)gusijščinahaidščinahavajščinahiligajnonšč" +
- "inahetitščinahmonščinagornja lužiška srbščinahupaibanščinailokanščinaing" +
- "uščinalojbanngombamačamejščinajudovska perzijščinajudovska arabščinakara" +
- "kalpaščinakabilščinakačinščinakambaščinakavikabardinščinatjapska nigerij" +
- "ščinamakondščinazelenortskootoška kreolščinakasikotanščinakoyra chiinik" +
- "alenjinščinakimbundukomi-permjaščinakonkanščinakosrajščinakpelejščinakar" +
- "ačaj-balkarščinakarelščinakurukshambalabafiakumiščinakutenajščinaladinšč" +
- "inalangijščinalandalambalezginščinalakotščinamongolozisevernolurijščinal" +
- "uba-lulualuisenščinalundaluolushailuhijščinamadurščinamagadščinamaitilim" +
- "akasarščinamandingomasajščinamokšavščinamandarščinamendemerumorisjenščin" +
- "asrednja irščinamakuva-metometamikmaščinaminangkabaumandžurščinamanipurš" +
- "činamohoščinamosijščinamundangveč jezikovmirandeščinamarvarščinaerzjanš" +
- "činamazanderanščinanapolitanščinakhoekhoenizka nemščinanevarščinaniašči" +
- "naniuejščinakwasionogajščinastara nordijščinan’koseverna sotščinanueršči" +
- "naklasična nevarščinanjamveščinanjankolenjoronzimaosageotomanska turščin" +
- "apangasinanščinapampanščinapapiamentupalavanščinastara perzijščinafeniča" +
- "nščinaponpejščinastara provansalščinaquicheradžastanščinarapanujščinarar" +
- "otongščinaromboromščinaaromunščinarwajakutščinasamaritanska aramejščinas" +
- "amburščinasasaščinasantalščinasangujščinasicilijanščinaškotščinajužna ku" +
- "rdščinasenaselkupščinakoyraboro sennistara irščinatahelitska berberščina" +
- "šanščinasidamščinajužna samijščinaluleška samijščinainarska samijščinas" +
- "amijščina Skoltsurinamska kreolščinasererščinasukumasusujščinasumerščina" +
- "šikomorsvahili (Kongo)klasična sirščinasirščinatemnejščinatesotetumščin" +
- "atigrejščinativščinatokelavščinaklingonščinatlingitščinatamajaščinamalav" +
- "ijska tongščinatok pisintsimščinatumbukščinatuvalujščinatasawaqtuvinščin" +
- "atamašek (srednji atlas)udmurtščinaugaritski jezikumbundščinaneznan ali " +
- "neveljaven jezikvajščinavotjaščinavunjovalamščinavarajščinavašajščinavar" +
- "lpirščinakalmiščinasogščinajaojščinajapščinakantonščinazapoteščinaznakov" +
- "ni jezik Blisszenaščinastandardni maroški tamazigzunijščinabrez jezikosl" +
- "ovne vsebinezazajščinasodobna standardna arabščinaavstrijska nemščinavis" +
- "oka nemščina (Švica)avstralska angleščinakanadska angleščinaangleščina (" +
- "VB)angleščina (ZDA)latinskoameriška španščinaiberska španščinakanadska f" +
- "rancoščinašvicarska francoščinanizka saščinaflamščinabrazilska portugalš" +
- "činaiberska portugalščinamoldavščinasrbohrvaščinapoenostavljena kitajšč" +
- "inatradicionalna kitajščina"
-
-var slLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000b, 0x0016, 0x0024, 0x0032, 0x003d, 0x0049, 0x0056,
- 0x0061, 0x006c, 0x0077, 0x0083, 0x0096, 0x00a4, 0x00b1, 0x00be,
- 0x00cb, 0x00d8, 0x00e5, 0x00f3, 0x0100, 0x010c, 0x011a, 0x0128,
- 0x0135, 0x0141, 0x014c, 0x0156, 0x0172, 0x017e, 0x018d, 0x0197,
- 0x01a1, 0x01ac, 0x01b2, 0x01bd, 0x01c6, 0x01d2, 0x01db, 0x01e7,
- 0x01f3, 0x0200, 0x020d, 0x0217, 0x0221, 0x022f, 0x0239, 0x0246,
- 0x0253, 0x025c, 0x026f, 0x027d, 0x028c, 0x029c, 0x02a6, 0x02b0,
- 0x02bd, 0x02ca, 0x02d3, 0x02de, 0x02f4, 0x0302, 0x030e, 0x0314,
- // Entry 40 - 7F
- 0x031f, 0x032f, 0x033a, 0x0345, 0x0359, 0x0366, 0x0369, 0x0376,
- 0x0385, 0x0395, 0x03a1, 0x03ad, 0x03ba, 0x03c7, 0x03d3, 0x03db,
- 0x03e6, 0x03f5, 0x0400, 0x0406, 0x0412, 0x041e, 0x042c, 0x0437,
- 0x0443, 0x0450, 0x045c, 0x0468, 0x0478, 0x047d, 0x048a, 0x0491,
- 0x049b, 0x04a7, 0x04b3, 0x04c0, 0x04cd, 0x04de, 0x04e9, 0x04f7,
- 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x0545, 0x0552, 0x0567,
- 0x0573, 0x0573, 0x0581, 0x0591, 0x05a6, 0x05ba, 0x05c6, 0x05d1,
- 0x05df, 0x05ef, 0x05f4, 0x05ff, 0x060c, 0x061b, 0x0627, 0x0632,
- // Entry 80 - BF
- 0x0640, 0x064f, 0x065d, 0x066d, 0x0678, 0x0684, 0x068d, 0x0699,
- 0x06a0, 0x06ad, 0x06b8, 0x06cc, 0x06d1, 0x06de, 0x06ea, 0x06f7,
- 0x0704, 0x070f, 0x071b, 0x0727, 0x0731, 0x073e, 0x0744, 0x0751,
- 0x075d, 0x0764, 0x0770, 0x077e, 0x078b, 0x0795, 0x07a2, 0x07b0,
- 0x07bb, 0x07c6, 0x07d0, 0x07d6, 0x07e2, 0x07ee, 0x07fa, 0x0808,
- 0x0814, 0x081f, 0x0824, 0x0832, 0x0839, 0x0845, 0x0851, 0x085a,
- 0x0860, 0x086c, 0x086c, 0x0878, 0x0884, 0x0890, 0x089e, 0x08ad,
- 0x08ba, 0x08ba, 0x08c2, 0x08ce, 0x08da, 0x08e5, 0x08e5, 0x08f1,
- // Entry C0 - FF
- 0x08f1, 0x0904, 0x0916, 0x0923, 0x0930, 0x093e, 0x093e, 0x094a,
- 0x094a, 0x0956, 0x0956, 0x0956, 0x0961, 0x0961, 0x096f, 0x096f,
- 0x097a, 0x098a, 0x0996, 0x0996, 0x099a, 0x099a, 0x099a, 0x099a,
- 0x09a0, 0x09a5, 0x09a5, 0x09b1, 0x09b1, 0x09b1, 0x09c7, 0x09d0,
- 0x09de, 0x09e1, 0x09e1, 0x09e1, 0x09e8, 0x09e8, 0x09e8, 0x09fa,
- 0x09fa, 0x0a06, 0x0a06, 0x0a13, 0x0a1f, 0x0a1f, 0x0a2a, 0x0a2a,
- 0x0a35, 0x0a43, 0x0a43, 0x0a43, 0x0a50, 0x0a5d, 0x0a6c, 0x0a7b,
- 0x0a87, 0x0a93, 0x0aa4, 0x0ab2, 0x0abf, 0x0acd, 0x0ada, 0x0aee,
- // Entry 100 - 13F
- 0x0af9, 0x0af9, 0x0b0d, 0x0b1a, 0x0b26, 0x0b33, 0x0b40, 0x0b4e,
- 0x0b5b, 0x0b61, 0x0b66, 0x0b73, 0x0b78, 0x0b93, 0x0b93, 0x0b98,
- 0x0bae, 0x0bbf, 0x0bc4, 0x0bc4, 0x0bd0, 0x0bda, 0x0bda, 0x0bef,
- 0x0bf5, 0x0c00, 0x0c14, 0x0c14, 0x0c22, 0x0c22, 0x0c2f, 0x0c3d,
- 0x0c3d, 0x0c47, 0x0c47, 0x0c5c, 0x0c6f, 0x0c6f, 0x0c84, 0x0c99,
- 0x0ca6, 0x0ca8, 0x0cb4, 0x0cb4, 0x0cbe, 0x0cc9, 0x0cc9, 0x0cd5,
- 0x0ce3, 0x0ce3, 0x0cfc, 0x0d13, 0x0d13, 0x0d18, 0x0d27, 0x0d31,
- 0x0d3c, 0x0d4b, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d75,
- // Entry 140 - 17F
- 0x0d75, 0x0d81, 0x0d81, 0x0d92, 0x0d9e, 0x0da9, 0x0dc4, 0x0dc4,
- 0x0dc8, 0x0dd3, 0x0dd3, 0x0de0, 0x0deb, 0x0deb, 0x0deb, 0x0df1,
- 0x0df7, 0x0e06, 0x0e1c, 0x0e30, 0x0e30, 0x0e40, 0x0e4c, 0x0e59,
- 0x0e59, 0x0e65, 0x0e69, 0x0e78, 0x0e78, 0x0e8e, 0x0e9b, 0x0eba,
- 0x0eba, 0x0eba, 0x0eba, 0x0ebe, 0x0eca, 0x0ed6, 0x0ed6, 0x0ed6,
- 0x0ed6, 0x0ee5, 0x0eed, 0x0eff, 0x0f0c, 0x0f19, 0x0f26, 0x0f3c,
- 0x0f3c, 0x0f3c, 0x0f48, 0x0f4d, 0x0f55, 0x0f5a, 0x0f5a, 0x0f65,
- 0x0f73, 0x0f7f, 0x0f8c, 0x0f91, 0x0f96, 0x0fa3, 0x0fa3, 0x0fa3,
- // Entry 180 - 1BF
- 0x0fa3, 0x0faf, 0x0faf, 0x0fb4, 0x0fb8, 0x0fcb, 0x0fcb, 0x0fd5,
- 0x0fe2, 0x0fe7, 0x0fea, 0x0ff0, 0x0ffc, 0x0ffc, 0x0ffc, 0x1008,
- 0x1008, 0x1014, 0x101b, 0x1029, 0x1031, 0x103d, 0x103d, 0x104b,
- 0x1058, 0x105d, 0x1061, 0x1070, 0x1081, 0x108c, 0x1090, 0x109c,
- 0x10a7, 0x10b6, 0x10c4, 0x10cf, 0x10db, 0x10db, 0x10e2, 0x10ee,
- 0x10ee, 0x10fc, 0x1109, 0x1109, 0x1109, 0x1116, 0x1127, 0x1127,
- 0x1137, 0x113f, 0x114f, 0x115b, 0x1165, 0x1171, 0x1171, 0x1177,
- 0x1177, 0x1183, 0x1196, 0x1196, 0x119c, 0x11ae, 0x11b9, 0x11cf,
- // Entry 1C0 - 1FF
- 0x11dc, 0x11e4, 0x11e9, 0x11ee, 0x11f3, 0x1207, 0x1218, 0x1218,
- 0x1225, 0x122f, 0x123d, 0x123d, 0x123d, 0x123d, 0x1250, 0x1250,
- 0x125f, 0x125f, 0x125f, 0x126c, 0x126c, 0x1282, 0x1288, 0x1288,
- 0x1299, 0x12a7, 0x12b6, 0x12b6, 0x12b6, 0x12bb, 0x12c5, 0x12c5,
- 0x12c5, 0x12c5, 0x12d2, 0x12d5, 0x12d5, 0x12e1, 0x12fb, 0x1308,
- 0x1313, 0x1320, 0x1320, 0x1320, 0x132d, 0x133d, 0x1349, 0x1349,
- 0x135b, 0x135b, 0x135f, 0x135f, 0x136c, 0x137b, 0x138a, 0x138a,
- 0x13a2, 0x13ad, 0x13ad, 0x13b9, 0x13b9, 0x13b9, 0x13cc, 0x13e1,
- // Entry 200 - 23F
- 0x13f5, 0x1407, 0x1407, 0x1407, 0x141e, 0x142a, 0x142a, 0x142a,
- 0x1430, 0x143c, 0x1448, 0x1450, 0x145f, 0x1473, 0x147d, 0x147d,
- 0x147d, 0x148a, 0x148e, 0x148e, 0x149a, 0x14a7, 0x14b1, 0x14bf,
- 0x14bf, 0x14cd, 0x14db, 0x14db, 0x14e8, 0x14fe, 0x1507, 0x1507,
- 0x1507, 0x1507, 0x1512, 0x1512, 0x151f, 0x152d, 0x1534, 0x1540,
- 0x1558, 0x1565, 0x1574, 0x1581, 0x159c, 0x15a6, 0x15a6, 0x15a6,
- 0x15a6, 0x15a6, 0x15b2, 0x15b2, 0x15b7, 0x15b7, 0x15c3, 0x15cf,
- 0x15dc, 0x15ea, 0x15ea, 0x15f6, 0x15f6, 0x1600, 0x160b, 0x1615,
- // Entry 240 - 27F
- 0x1615, 0x1615, 0x1615, 0x1622, 0x162f, 0x1643, 0x1643, 0x164e,
- 0x1669, 0x1675, 0x168e, 0x169a, 0x16b8, 0x16b8, 0x16cd, 0x16e7,
- 0x16fe, 0x1713, 0x1724, 0x1736, 0x1754, 0x1768, 0x1768, 0x1768,
- 0x177e, 0x1796, 0x17a5, 0x17b0, 0x17c9, 0x17e0, 0x17ed, 0x17fc,
- 0x1817, 0x1831,
-} // Size: 1244 bytes
-
-var sqLangStr string = "" + // Size: 2672 bytes
- "abkazishtafrikanishtakanishtamarikishtarabishtasamezishtazerbajxhanishtb" +
- "ashkirishtbjellorusishtbullgarishtbambarishtbengalishttibetishtbretonish" +
- "tboshnjakishtkatalonishtçeçenishtkorsikanishtçekishtçuvashishtuellsishtd" +
- "anishtgjermanishtxhongaishtjuishtgreqishtanglishtesperantospanjishteston" +
- "ishtbaskishtpersishtfinlandishtfixhianishtfaroishtfrëngjishtfrizianishti" +
- "rlandishtgalikeguaranishtguxharatishtmanksishthausishthebraishtindishtkr" +
- "oatishthaitianishthungarishtarmenishtindonezishtigboishtsishuanishtislan" +
- "dishtitalishtinuktitutishtjaponishtjavanishtgjeorgjishtkikujuishtkazakis" +
- "htkalalisutishtkmerekanadekoreanishtkashmirekurdekornishishtkirgizishtla" +
- "tinishtluksemburgasegandishtlingalishtlaosishtlituanishtlubakatangishtle" +
- "tonishtmalagezishtmaorishtmaqedonishtmalajalamishtmongolishtmaratishtmal" +
- "ajishtmaltishtbirmanishtndebelishte veriorenepalishtholandishtninorske n" +
- "orvegjezebokmalishte norvegjezeoromoishtorijaishtpanxhabishtpolonishtpas" +
- "htoishtportugalishtkeçuaishtromerundishtrumanishtrusishtkiniaruandishtsa" +
- "nskritishtsindishtsamishte verioresangoishtsinhalishtsllovakishtslloveni" +
- "shtshonishtsomalishtshqipserbishtsundanishtsuedishtsuahilishttamiletelug" +
- "etaxhikishttajlandishttigrinjeturkmenishttonganishtturqishttatarishtujgu" +
- "reukrainishturduuzbekevietnamishtulufishtxhozaishtjorubishtkinezishtzulu" +
- "ishtagemishtmapuçishtasuishtbembaishtbenaishtbalokishte perëndimorebodoi" +
- "shtçigishtçerokishtkurdishte soranitaitishtzarmishtsorbishte e poshtmedu" +
- "alaishtxhulafonjishtembuishtfilipinasegagauzishtgjermanishte zviceranegu" +
- "sishthuajanishtsorbiane e sipërmengombishtmaçamishtkabilishtkambaishtmak" +
- "ondishtkabuverdianishtkojraçinishtkalenjinishtkomishte permiakekonkanish" +
- "tshambalishtbafianishtlangishtlakotishtlurishte verioreluoishtlujaishtma" +
- "saishtmeruishtnorisjenemakuamitoishtmetaishtmohaukishtmundagishtemazande" +
- "ranishtnamaishtegjermanishte e vendeve të ulëtakuasishtnkoishtnuerishtni" +
- "ankolishtkiçeishtromboishteruaishtsamburishtsanguishtkurdishte jugoresen" +
- "aishtesenishte kojraboretaçelitishtsamishte jugoresamishte lulejesamisht" +
- "e inariesamishte skoltesuahilishte kongojetezoishttasaukishttamaziatisht" +
- "e atlase qendroree panjohurvaishtvunjishtuarlipirishtsogishttamazishte s" +
- "tandarde marokenenuk ka përmbajtje gjuhësorearabishte standarde moderneg" +
- "jermanishte austriakegjermanishte zvicerane (dialekti i Alpeve)anglishte" +
- " australianeanglishte kanadezeanglishte britanikeanglishte amerikanespan" +
- "jishte amerikano-latinespanjishte evropianespanjishte meksikanefrëngjish" +
- "te kanadezefrëngjishte zviceranegjermanishte saksone e vendeve të ulëtaf" +
- "lamandishtportugalishte brazilianeportugalishte evropianemoldavishteSerb" +
- "o-Kroatishtkinezishte e thjeshtuarkinezishte tradicionale"
-
-var sqLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0009, 0x0014, 0x001c, 0x0026, 0x0026,
- 0x002e, 0x0038, 0x0038, 0x0038, 0x0047, 0x0052, 0x005f, 0x006a,
- 0x006a, 0x0074, 0x007e, 0x0087, 0x0091, 0x009d, 0x00a8, 0x00b3,
- 0x00b3, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00d2, 0x00db, 0x00e2,
- 0x00ed, 0x00ed, 0x00f7, 0x00fd, 0x0105, 0x010d, 0x0116, 0x011f,
- 0x0128, 0x0130, 0x0138, 0x0138, 0x0143, 0x014e, 0x0156, 0x0161,
- 0x016c, 0x0176, 0x0176, 0x017c, 0x0186, 0x0192, 0x019b, 0x01a3,
- 0x01ac, 0x01b3, 0x01b3, 0x01bc, 0x01c7, 0x01d1, 0x01da, 0x01da,
- // Entry 40 - 7F
- 0x01da, 0x01e5, 0x01e5, 0x01ed, 0x01f8, 0x01f8, 0x01f8, 0x0202,
- 0x020a, 0x0217, 0x0220, 0x0229, 0x0234, 0x0234, 0x023e, 0x023e,
- 0x0247, 0x0254, 0x0259, 0x025f, 0x0269, 0x0269, 0x0271, 0x0276,
- 0x0276, 0x0281, 0x028b, 0x0294, 0x02a1, 0x02a9, 0x02a9, 0x02b3,
- 0x02bb, 0x02c5, 0x02d3, 0x02dc, 0x02e7, 0x02e7, 0x02ef, 0x02fa,
- 0x0307, 0x0311, 0x031a, 0x0323, 0x032b, 0x0335, 0x0335, 0x0348,
- 0x0351, 0x0351, 0x035b, 0x036e, 0x0384, 0x0384, 0x0384, 0x0384,
- 0x0384, 0x0384, 0x038d, 0x0396, 0x0396, 0x03a1, 0x03a1, 0x03aa,
- // Entry 80 - BF
- 0x03b4, 0x03c0, 0x03ca, 0x03ce, 0x03d6, 0x03df, 0x03e6, 0x03f4,
- 0x0400, 0x0400, 0x0408, 0x0418, 0x0421, 0x042b, 0x0436, 0x0441,
- 0x0441, 0x0449, 0x0452, 0x0457, 0x045f, 0x045f, 0x045f, 0x0469,
- 0x0471, 0x047b, 0x0481, 0x0487, 0x0491, 0x049c, 0x04a4, 0x04af,
- 0x04af, 0x04b9, 0x04c1, 0x04c1, 0x04ca, 0x04ca, 0x04d0, 0x04da,
- 0x04de, 0x04e4, 0x04e4, 0x04ef, 0x04ef, 0x04ef, 0x04f7, 0x0500,
- 0x0500, 0x0509, 0x0509, 0x0512, 0x051a, 0x051a, 0x051a, 0x051a,
- 0x051a, 0x051a, 0x051a, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
- // Entry C0 - FF
- 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052c, 0x052c, 0x052c,
- 0x052c, 0x052c, 0x052c, 0x052c, 0x0533, 0x0533, 0x0533, 0x0533,
- 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
- 0x0533, 0x053c, 0x053c, 0x0544, 0x0544, 0x0544, 0x055b, 0x055b,
- 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b,
- 0x055b, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563,
- 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x056b, 0x056b, 0x056b,
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0575, 0x0575, 0x0585,
- // Entry 100 - 13F
- 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x058d, 0x058d,
- 0x058d, 0x058d, 0x058d, 0x0595, 0x0595, 0x05a8, 0x05a8, 0x05b1,
- 0x05b1, 0x05be, 0x05be, 0x05be, 0x05c6, 0x05c6, 0x05c6, 0x05c6,
- 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05d0,
- 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0,
- 0x05d0, 0x05d0, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da,
- 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da,
- 0x05da, 0x05da, 0x05f0, 0x05f0, 0x05f0, 0x05f7, 0x05f7, 0x05f7,
- // Entry 140 - 17F
- 0x05f7, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0614, 0x0614,
- 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614,
- 0x061d, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0630, 0x0630,
- 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0643, 0x0652,
- 0x0652, 0x0652, 0x0652, 0x0652, 0x0652, 0x065f, 0x065f, 0x065f,
- 0x065f, 0x066b, 0x066b, 0x067c, 0x0686, 0x0686, 0x0686, 0x0686,
- 0x0686, 0x0686, 0x0686, 0x0686, 0x0691, 0x069b, 0x069b, 0x069b,
- 0x069b, 0x069b, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3,
- // Entry 180 - 1BF
- 0x06a3, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06bc, 0x06bc, 0x06bc,
- 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06cb, 0x06cb, 0x06cb, 0x06cb,
- 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06d3, 0x06d3, 0x06d3,
- 0x06d3, 0x06d3, 0x06db, 0x06e4, 0x06e4, 0x06f1, 0x06f9, 0x06f9,
- 0x06f9, 0x06f9, 0x06f9, 0x0703, 0x0703, 0x0703, 0x070e, 0x070e,
- 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x071c, 0x071c,
- 0x071c, 0x0725, 0x0746, 0x0746, 0x0746, 0x0746, 0x0746, 0x074e,
- 0x074e, 0x074e, 0x074e, 0x074e, 0x0755, 0x0755, 0x075d, 0x075d,
- // Entry 1C0 - 1FF
- 0x075d, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768,
- 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768,
- 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0771, 0x0771,
- 0x0771, 0x0771, 0x0771, 0x0771, 0x0771, 0x077b, 0x077b, 0x077b,
- 0x077b, 0x077b, 0x077b, 0x0782, 0x0782, 0x0782, 0x0782, 0x078c,
- 0x078c, 0x078c, 0x078c, 0x078c, 0x0795, 0x0795, 0x0795, 0x0795,
- 0x07a5, 0x07a5, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07c0, 0x07c0,
- 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07db, 0x07ea,
- // Entry 200 - 23F
- 0x07f9, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808,
- 0x0808, 0x0808, 0x0808, 0x0808, 0x081b, 0x081b, 0x081b, 0x081b,
- 0x081b, 0x081b, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823,
- 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823,
- 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x082d, 0x082d,
- 0x084a, 0x084a, 0x084a, 0x084a, 0x0854, 0x085a, 0x085a, 0x085a,
- 0x085a, 0x085a, 0x085a, 0x085a, 0x0862, 0x0862, 0x0862, 0x0862,
- 0x0862, 0x086e, 0x086e, 0x086e, 0x086e, 0x0875, 0x0875, 0x0875,
- // Entry 240 - 27F
- 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
- 0x0892, 0x0892, 0x08af, 0x08af, 0x08ca, 0x08ca, 0x08e0, 0x090a,
- 0x091f, 0x0931, 0x0944, 0x0957, 0x0972, 0x0986, 0x099a, 0x099a,
- 0x09af, 0x09c5, 0x09ee, 0x09f9, 0x0a11, 0x0a28, 0x0a33, 0x0a42,
- 0x0a59, 0x0a70,
-} // Size: 1244 bytes
-
-var srLangStr string = "" + // Size: 7594 bytes
- "АфарскиабхаскиАвестанскиафрикансаканамхарскиАрагонежанскиарапскиасамскиА" +
- "варскиАјмараазербејџанскибашкирскибелорускибугарскиБисламабамбарабенгал" +
- "скитибетанскибретонскибосанскикаталонскиЧеченскиЧаморокорзиканскиКричеш" +
- "киСтарословенскиЧувашкивелшкиданскинемачкиДивехијскиџонгаевегрчкиенглес" +
- "киесперантошпанскиестонскибаскијскиперсијскиФулахфинскифиџијскифарскифр" +
- "анцускизападни фризијскиирскиШкотски Галскигалицијскигваранигуџаратиман" +
- "скихаусахебрејскихиндиХири МотухрватскихаићанскимађарскијерменскиХереро" +
- "ИнтерлингваиндонежанскиМеђујезичкиигбосечуан јиУнупиакИдоисландскиитали" +
- "јанскиинуктитутјапанскијаванскигрузијскиКонгокикујуКуањамаказашкикалали" +
- "суткмерскиканадакорејскиКанурикашмирскикурдскиКомикорнволскикиргискилат" +
- "инскилуксембуршкигандаЛимбургишлингалалаошкилитванскилуба-катангалетонс" +
- "кималгашкиМаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" +
- "тешкибурманскиНаурусеверни ндебеленепалскиНдонгахоландскинорвешки нинор" +
- "скнорвешки бокмалЈужни ндебелеНавахоЊањаПровансалскиОјибваоромооријаОсе" +
- "тскипанџабиПалипољскипаштунскипортугалскикечуарето-романскирундирумунск" +
- "ирускикинјаруандасанскритСардињаскисиндисеверни самисангосинхалскислова" +
- "чкисловеначкиСамоанскишонасомалскиалбанскисрпскиСватиСесотосунданскишве" +
- "дскисвахилитамилскителугутаџичкитајландскитигрињатуркменскиТсванатонгат" +
- "урскиТсонгататарскиТахићанскиујгурскиукрајинскиурдуузбечкиВендавијетнам" +
- "скиВолапукВалунволофкосаЈидишјорубаЖуангкинескизулуАчинескиАколиАдангме" +
- "јскиАдигејскиАфрихилиагемАинуАкадијскиАљутЈужни алтаиСтароенглескиАнгик" +
- "аАрмајскимапучеАрапахоАравакасуАстуријскиАвадхиБалучиБалинезијскиБасаБе" +
- "јабембабеназападни белучкиБојпуриБиколБиниСисикаБрајбодоБуриатБугинежан" +
- "скиБлинКадоКарипскиАтсамскиЦебуаночигаЧибчаЧагатаиЧукескиМариЧинукскиЧо" +
- "ктавскиЧипвијанскичерокиЧејенскисорани курдскиКоптскиКримеански турскиК" +
- "ашубијанскиДакотаДаргватаитаДелаверСлавскиДогрибДинказармаДогридоњи луж" +
- "ичкосрпскидуалаСредњи холандскиџола фоњиЂулаембуЕфикскиСтароегипатскиЕк" +
- "ајукЕламитскиСредњи енглескиЕвондоФангфилипинскиФонСредњи францускиСтар" +
- "офранцускиСеверно-фризијскиИсточни фризијскиФриулијскиГагагаузГајоГбаја" +
- "ЏизГилбертшкиСредњи високи немачкиСтаронемачкиГондиГоронталоГотскиГребо" +
- "СтарогрчкиШвајцарски немачкигусиГвич’инХаидахавајскиХилигајнонХититеХмо" +
- "нггорњи лужичкосрпскиХупаИбанИлокоИнгвишкиЛојбаннгомбамачамеЈудео-перси" +
- "јскиЈудео-арапскиКара-калпашкикабилеКачинЂукамбаКавиКабардијскиТјапмако" +
- "ндезеленортски креолскиКороКасиКотанешкикојра чииникаленџинКимбундукоми" +
- "-пермскиконканиКосреанскиКпелеКарачај-балкарКарелијскиКурукхшамбалабафиј" +
- "аКумикКутенаиЛадинолангиЛандаЛамбаЛезгианлакотаМонгоЛозисеверни луриЛуб" +
- "а-лулуаЛуисеноЛундалуоЛушаилујиаМадурешкиМагахиМаитилиМакасарМандингома" +
- "саиМокшаМандарМендемеруморисјенСредњи ирскимакува-меетометаМикмакМинанг" +
- "кабауМанчуМанипуримохокМосимундангВише језикаКришкиМирандешкиМарвариЕрз" +
- "ијамазандеранскиНеаполитанскинамаНиски немачкиНевариНиасНиуеанквасиоНог" +
- "аиСтари норскин’коСеверни сотонуерКласични невариЊамвезинјанколеЊороНзи" +
- "маОсагеОтомански турскиПангасинскиПахлавиПампангаПапиаментоПалауанскиСт" +
- "ароперсијскиФеничанскиПонпејскиСтаропровансалскик’ичеРађастаниРапануиРа" +
- "ротонганромбоРоманиАроманијскируаСандавеЈакутСамаритански арамејскисамб" +
- "уруСасакСанталисангуСицилијанскиШкотскијужнокурдскисенаСелкапкојраборо " +
- "сениСтароирскиташелхитШанСидамојужни самилуле самиинари самисколт самиС" +
- "онинкеСоџијенскиСранански тонгоСерерСукумаСусуСумерскиКоморскиконго сва" +
- "хилиКласични сиријскиСиријскиТимнетесоТереноТетумТигреТивТокелауКлингон" +
- "скиТлингитТамашекЊаса тонгаТок ПисинТсимшианТумбукаТувалутасавакТувиниј" +
- "скицентралноатласки тамазигтУдмуртУгаритскиУмбундуРутваиВотскивунџоВала" +
- "моВарајВашоварлпириКалмиксогаЈаоЈапешкиКантонскиЗапотечкиБлисимболиЗена" +
- "гастандардни марокански тамазигтЗунибез лингвистичког садржајаЗазамодер" +
- "ан стандардни арапскишвајцарски високи немачкинискосаксонскифламанскиБр" +
- "азилски португалскиИберијски португалскимолдавскиСрпскохрватски"
-
-var srLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x0048, 0x0058, 0x0072,
- 0x0080, 0x008e, 0x009c, 0x00a8, 0x00c2, 0x00d4, 0x00e6, 0x00f6,
- 0x0104, 0x0112, 0x0124, 0x0138, 0x014a, 0x015a, 0x016e, 0x017e,
- 0x018a, 0x01a0, 0x01a6, 0x01b0, 0x01cc, 0x01da, 0x01e6, 0x01f2,
- 0x0200, 0x0214, 0x021e, 0x0224, 0x022e, 0x023e, 0x0250, 0x025e,
- 0x026e, 0x0280, 0x0292, 0x029c, 0x02a8, 0x02b8, 0x02c4, 0x02d6,
- 0x02f7, 0x0301, 0x031c, 0x0330, 0x033e, 0x034e, 0x035a, 0x0364,
- 0x0376, 0x0380, 0x0391, 0x03a1, 0x03b3, 0x03c3, 0x03d5, 0x03e1,
- // Entry 40 - 7F
- 0x03f7, 0x040f, 0x0425, 0x042d, 0x043e, 0x044c, 0x0452, 0x0464,
- 0x047a, 0x048c, 0x049c, 0x04ac, 0x04be, 0x04c8, 0x04d4, 0x04e2,
- 0x04f0, 0x0502, 0x0510, 0x051c, 0x052c, 0x0538, 0x054a, 0x0558,
- 0x0560, 0x0574, 0x0584, 0x0594, 0x05ac, 0x05b6, 0x05c8, 0x05d6,
- 0x05e2, 0x05f4, 0x060b, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f,
- 0x0671, 0x0683, 0x068f, 0x069f, 0x06af, 0x06c1, 0x06cb, 0x06e8,
- 0x06f8, 0x0704, 0x0716, 0x0735, 0x0752, 0x076b, 0x0777, 0x077f,
- 0x0797, 0x07a3, 0x07ad, 0x07b7, 0x07c5, 0x07d3, 0x07db, 0x07e7,
- // Entry 80 - BF
- 0x07f9, 0x080f, 0x0819, 0x0832, 0x083c, 0x084c, 0x0856, 0x086c,
- 0x087c, 0x0890, 0x089a, 0x08b1, 0x08bb, 0x08cd, 0x08dd, 0x08f1,
- 0x0903, 0x090b, 0x091b, 0x092b, 0x0937, 0x0941, 0x094d, 0x095f,
- 0x096d, 0x097b, 0x098b, 0x0997, 0x09a5, 0x09b9, 0x09c7, 0x09db,
- 0x09e7, 0x09f1, 0x09fd, 0x0a09, 0x0a19, 0x0a2d, 0x0a3d, 0x0a51,
- 0x0a59, 0x0a67, 0x0a71, 0x0a87, 0x0a95, 0x0a9f, 0x0aa9, 0x0ab1,
- 0x0abb, 0x0ac7, 0x0ad1, 0x0adf, 0x0ae7, 0x0af7, 0x0b01, 0x0b17,
- 0x0b29, 0x0b29, 0x0b39, 0x0b41, 0x0b49, 0x0b5b, 0x0b5b, 0x0b63,
- // Entry C0 - FF
- 0x0b63, 0x0b78, 0x0b92, 0x0b9e, 0x0bae, 0x0bba, 0x0bba, 0x0bc8,
- 0x0bc8, 0x0bd4, 0x0bd4, 0x0bd4, 0x0bda, 0x0bda, 0x0bee, 0x0bee,
- 0x0bfa, 0x0c06, 0x0c1e, 0x0c1e, 0x0c26, 0x0c26, 0x0c26, 0x0c26,
- 0x0c2e, 0x0c38, 0x0c38, 0x0c40, 0x0c40, 0x0c40, 0x0c5d, 0x0c6b,
- 0x0c75, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c89, 0x0c89, 0x0c89, 0x0c91,
- 0x0c91, 0x0c99, 0x0c99, 0x0ca5, 0x0cbd, 0x0cbd, 0x0cc5, 0x0cc5,
- 0x0ccd, 0x0cdd, 0x0cdd, 0x0ced, 0x0cfb, 0x0d03, 0x0d0d, 0x0d1b,
- 0x0d29, 0x0d31, 0x0d41, 0x0d53, 0x0d69, 0x0d75, 0x0d85, 0x0da0,
- // Entry 100 - 13F
- 0x0dae, 0x0dae, 0x0dcf, 0x0de7, 0x0df3, 0x0dff, 0x0e09, 0x0e17,
- 0x0e25, 0x0e31, 0x0e3b, 0x0e45, 0x0e4f, 0x0e72, 0x0e72, 0x0e7c,
- 0x0e9b, 0x0eac, 0x0eb4, 0x0eb4, 0x0ebc, 0x0eca, 0x0eca, 0x0ee6,
- 0x0ef2, 0x0f04, 0x0f21, 0x0f21, 0x0f2d, 0x0f2d, 0x0f35, 0x0f49,
- 0x0f49, 0x0f4f, 0x0f4f, 0x0f6e, 0x0f8a, 0x0f8a, 0x0fab, 0x0fcc,
- 0x0fe0, 0x0fe4, 0x0ff0, 0x0ff0, 0x0ff8, 0x1002, 0x1002, 0x1008,
- 0x101c, 0x101c, 0x1044, 0x105c, 0x105c, 0x1066, 0x1078, 0x1084,
- 0x108e, 0x10a2, 0x10c5, 0x10c5, 0x10c5, 0x10cd, 0x10dc, 0x10e6,
- // Entry 140 - 17F
- 0x10e6, 0x10f6, 0x10f6, 0x110a, 0x1116, 0x1120, 0x1145, 0x1145,
- 0x114d, 0x1155, 0x1155, 0x115f, 0x116f, 0x116f, 0x116f, 0x117b,
- 0x1187, 0x1193, 0x11b0, 0x11c9, 0x11c9, 0x11e2, 0x11ee, 0x11f8,
- 0x11fc, 0x1206, 0x120e, 0x1224, 0x1224, 0x122c, 0x123a, 0x1261,
- 0x1261, 0x1269, 0x1269, 0x1271, 0x1283, 0x1298, 0x1298, 0x1298,
- 0x1298, 0x12a8, 0x12b8, 0x12cf, 0x12dd, 0x12f1, 0x12fb, 0x1316,
- 0x1316, 0x1316, 0x132a, 0x1336, 0x1344, 0x1350, 0x1350, 0x135a,
- 0x1368, 0x1374, 0x137e, 0x1388, 0x1392, 0x13a0, 0x13a0, 0x13a0,
- // Entry 180 - 1BF
- 0x13a0, 0x13ac, 0x13ac, 0x13b6, 0x13be, 0x13d5, 0x13d5, 0x13e8,
- 0x13f6, 0x1400, 0x1406, 0x1410, 0x141a, 0x141a, 0x141a, 0x142c,
- 0x142c, 0x1438, 0x1446, 0x1454, 0x1464, 0x146e, 0x146e, 0x1478,
- 0x1484, 0x148e, 0x1496, 0x14a6, 0x14bd, 0x14d4, 0x14dc, 0x14e8,
- 0x14fe, 0x1508, 0x1518, 0x1522, 0x152a, 0x152a, 0x1538, 0x154d,
- 0x1559, 0x156d, 0x157b, 0x157b, 0x157b, 0x1587, 0x15a1, 0x15a1,
- 0x15bb, 0x15c3, 0x15dc, 0x15e8, 0x15f0, 0x15fc, 0x15fc, 0x1608,
- 0x1608, 0x1612, 0x1629, 0x1629, 0x1632, 0x1649, 0x1651, 0x166e,
- // Entry 1C0 - 1FF
- 0x167c, 0x168c, 0x1694, 0x169e, 0x16a8, 0x16c7, 0x16dd, 0x16eb,
- 0x16fb, 0x170f, 0x1723, 0x1723, 0x1723, 0x1723, 0x173f, 0x173f,
- 0x1753, 0x1753, 0x1753, 0x1765, 0x1765, 0x1787, 0x1792, 0x1792,
- 0x17a4, 0x17b2, 0x17c6, 0x17c6, 0x17c6, 0x17d0, 0x17dc, 0x17dc,
- 0x17dc, 0x17dc, 0x17f2, 0x17f8, 0x1806, 0x1810, 0x183b, 0x1849,
- 0x1853, 0x1861, 0x1861, 0x1861, 0x186b, 0x1883, 0x1891, 0x1891,
- 0x18a9, 0x18a9, 0x18b1, 0x18b1, 0x18bd, 0x18d8, 0x18ec, 0x18ec,
- 0x18fc, 0x1902, 0x1902, 0x190e, 0x190e, 0x190e, 0x1921, 0x1932,
- // Entry 200 - 23F
- 0x1945, 0x1958, 0x1966, 0x197a, 0x1997, 0x19a1, 0x19a1, 0x19a1,
- 0x19ad, 0x19b5, 0x19c5, 0x19d5, 0x19ee, 0x1a0f, 0x1a1f, 0x1a1f,
- 0x1a1f, 0x1a29, 0x1a31, 0x1a3d, 0x1a47, 0x1a51, 0x1a57, 0x1a65,
- 0x1a65, 0x1a79, 0x1a87, 0x1a87, 0x1a95, 0x1aa8, 0x1ab9, 0x1ab9,
- 0x1ab9, 0x1ab9, 0x1ac9, 0x1ac9, 0x1ad7, 0x1ae3, 0x1af1, 0x1b05,
- 0x1b36, 0x1b42, 0x1b54, 0x1b62, 0x1b68, 0x1b6e, 0x1b6e, 0x1b6e,
- 0x1b6e, 0x1b6e, 0x1b7a, 0x1b7a, 0x1b84, 0x1b84, 0x1b90, 0x1b9a,
- 0x1ba2, 0x1bb2, 0x1bb2, 0x1bbe, 0x1bbe, 0x1bc6, 0x1bcc, 0x1bda,
- // Entry 240 - 27F
- 0x1bda, 0x1bda, 0x1bda, 0x1bec, 0x1bfe, 0x1c12, 0x1c12, 0x1c1e,
- 0x1c58, 0x1c60, 0x1c92, 0x1c9a, 0x1ccc, 0x1ccc, 0x1ccc, 0x1cfc,
- 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc,
- 0x1cfc, 0x1cfc, 0x1d18, 0x1d2a, 0x1d53, 0x1d7c, 0x1d8e, 0x1daa,
-} // Size: 1240 bytes
-
-var srLatnLangStr string = "" + // Size: 3982 bytes
- "AfarskiabhaskiAvestanskiafrikansakanamharskiAragonežanskiarapskiasamskiA" +
- "varskiAjmaraazerbejdžanskibaškirskibeloruskibugarskiBislamabambarabengal" +
- "skitibetanskibretonskibosanskikatalonskiČečenskiČamorokorzikanskiKričešk" +
- "iStaroslovenskiČuvaškivelškidanskinemačkiDivehijskidžongaevegrčkienglesk" +
- "iesperantošpanskiestonskibaskijskipersijskiFulahfinskifidžijskifarskifra" +
- "ncuskizapadni frizijskiirskiŠkotski Galskigalicijskigvaranigudžaratimans" +
- "kihausahebrejskihindiHiri MotuhrvatskihaićanskimađarskijermenskiHereroIn" +
- "terlingvaindonežanskiMeđujezičkiigbosečuan jiUnupiakIdoislandskiitalijan" +
- "skiinuktitutjapanskijavanskigruzijskiKongokikujuKuanjamakazaškikalalisut" +
- "kmerskikanadakorejskiKanurikašmirskikurdskiKomikornvolskikirgiskilatinsk" +
- "iluksemburškigandaLimburgišlingalalaoškilitvanskiluba-katangaletonskimal" +
- "gaškiMaršalskimaorskimakedonskimalajalammongolskimaratimalajskimalteškib" +
- "urmanskiNauruseverni ndebelenepalskiNdongaholandskinorveški ninorsknorve" +
- "ški bokmalJužni ndebeleNavahoNjanjaProvansalskiOjibvaoromoorijaOsetskip" +
- "andžabiPalipoljskipaštunskiportugalskikečuareto-romanskirundirumunskirus" +
- "kikinjaruandasanskritSardinjaskisindiseverni samisangosinhalskislovačkis" +
- "lovenačkiSamoanskišonasomalskialbanskisrpskiSvatiSesotosundanskišvedskis" +
- "vahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskiTsvanatongatursk" +
- "iTsongatatarskiTahićanskiujgurskiukrajinskiurduuzbečkiVendavijetnamskiVo" +
- "lapukValunvolofkosaJidišjorubaŽuangkineskizuluAčineskiAkoliAdangmejskiAd" +
- "igejskiAfrihiliagemAinuAkadijskiAljutJužni altaiStaroengleskiAngikaArmaj" +
- "skimapučeArapahoAravakasuAsturijskiAvadhiBalučiBalinezijskiBasaBejabemba" +
- "benazapadni belučkiBojpuriBikolBiniSisikaBrajbodoBuriatBuginežanskiBlinK" +
- "adoKaripskiAtsamskiCebuanočigaČibčaČagataiČukeskiMariČinukskiČoktavskiČi" +
- "pvijanskičerokiČejenskisorani kurdskiKoptskiKrimeanski turskiKašubijansk" +
- "iDakotaDargvataitaDelaverSlavskiDogribDinkazarmaDogridonji lužičkosrpski" +
- "dualaSrednji holandskidžola fonjiĐulaembuEfikskiStaroegipatskiEkajukElam" +
- "itskiSrednji engleskiEvondoFangfilipinskiFonSrednji francuskiStarofrancu" +
- "skiSeverno-frizijskiIstočni frizijskiFriulijskiGagagauzGajoGbajaDžizGilb" +
- "ertškiSrednji visoki nemačkiStaronemačkiGondiGorontaloGotskiGreboStarogr" +
- "čkiŠvajcarski nemačkigusiGvič’inHaidahavajskiHiligajnonHititeHmonggornj" +
- "i lužičkosrpskiHupaIbanIlokoIngviškiLojbanngombamačameJudeo-persijskiJud" +
- "eo-arapskiKara-kalpaškikabileKačinĐukambaKaviKabardijskiTjapmakondezelen" +
- "ortski kreolskiKoroKasiKotaneškikojra čiinikalendžinKimbundukomi-permski" +
- "konkaniKosreanskiKpeleKaračaj-balkarKarelijskiKurukhšambalabafijaKumikKu" +
- "tenaiLadinolangiLandaLambaLezgianlakotaMongoLoziseverni luriLuba-luluaLu" +
- "isenoLundaluoLušailujiaMadureškiMagahiMaitiliMakasarMandingomasaiMokšaMa" +
- "ndarMendemerumorisjenSrednji irskimakuva-meetometaMikmakMinangkabauManču" +
- "ManipurimohokMosimundangViše jezikaKriškiMirandeškiMarvariErzijamazander" +
- "anskiNeapolitanskinamaNiski nemačkiNevariNiasNiueankvasioNogaiStari nors" +
- "kin’koSeverni sotonuerKlasični nevariNjamvezinjankoleNjoroNzimaOsageOtom" +
- "anski turskiPangasinskiPahlaviPampangaPapiamentoPalauanskiStaropersijski" +
- "FeničanskiPonpejskiStaroprovansalskik’ičeRađastaniRapanuiRarotonganrombo" +
- "RomaniAromanijskiruaSandaveJakutSamaritanski aramejskisamburuSasakSantal" +
- "isanguSicilijanskiŠkotskijužnokurdskisenaSelkapkojraboro seniStaroirskit" +
- "ašelhitŠanSidamojužni samilule samiinari samiskolt samiSoninkeSodžijensk" +
- "iSrananski tongoSererSukumaSusuSumerskiKomorskikongo svahiliKlasični sir" +
- "ijskiSirijskiTimnetesoTerenoTetumTigreTivTokelauKlingonskiTlingitTamašek" +
- "Njasa tongaTok PisinTsimšianTumbukaTuvalutasavakTuvinijskicentralnoatlas" +
- "ki tamazigtUdmurtUgaritskiUmbunduRutvaiVotskivundžoValamoVarajVašovarlpi" +
- "riKalmiksogaJaoJapeškiKantonskiZapotečkiBlisimboliZenagastandardni marok" +
- "anski tamazigtZunibez lingvističkog sadržajaZazamoderan standardni araps" +
- "kišvajcarski visoki nemačkiniskosaksonskiflamanskiBrazilski portugalskiI" +
- "berijski portugalskimoldavskiSrpskohrvatski"
-
-var srLatnLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x003a,
- 0x0041, 0x0048, 0x004f, 0x0055, 0x0064, 0x006e, 0x0077, 0x007f,
- 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a9, 0x00b1, 0x00bb, 0x00c5,
- 0x00cc, 0x00d7, 0x00da, 0x00e1, 0x00ef, 0x00f8, 0x00ff, 0x0105,
- 0x010d, 0x0117, 0x011e, 0x0121, 0x0127, 0x012f, 0x0138, 0x0140,
- 0x0148, 0x0151, 0x015a, 0x015f, 0x0165, 0x016f, 0x0175, 0x017e,
- 0x018f, 0x0194, 0x01a3, 0x01ad, 0x01b4, 0x01be, 0x01c4, 0x01c9,
- 0x01d2, 0x01d7, 0x01e0, 0x01e8, 0x01f2, 0x01fb, 0x0204, 0x020a,
- // Entry 40 - 7F
- 0x0215, 0x0222, 0x022f, 0x0233, 0x023d, 0x0244, 0x0247, 0x0250,
- 0x025b, 0x0264, 0x026c, 0x0274, 0x027d, 0x0282, 0x0288, 0x0290,
- 0x0298, 0x02a1, 0x02a8, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd,
- 0x02d1, 0x02db, 0x02e3, 0x02eb, 0x02f8, 0x02fd, 0x0307, 0x030e,
- 0x0315, 0x031e, 0x032a, 0x0332, 0x033b, 0x0345, 0x034c, 0x0356,
- 0x035f, 0x0368, 0x036e, 0x0376, 0x037f, 0x0388, 0x038d, 0x039c,
- 0x03a4, 0x03aa, 0x03b3, 0x03c4, 0x03d4, 0x03e2, 0x03e8, 0x03ee,
- 0x03fa, 0x0400, 0x0405, 0x040a, 0x0411, 0x041a, 0x041e, 0x0425,
- // Entry 80 - BF
- 0x042f, 0x043a, 0x0440, 0x044d, 0x0452, 0x045a, 0x045f, 0x046a,
- 0x0472, 0x047d, 0x0482, 0x048e, 0x0493, 0x049c, 0x04a5, 0x04b0,
- 0x04b9, 0x04be, 0x04c6, 0x04ce, 0x04d4, 0x04d9, 0x04df, 0x04e8,
- 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b,
- 0x0531, 0x0536, 0x053c, 0x0542, 0x054a, 0x0555, 0x055d, 0x0567,
- 0x056b, 0x0573, 0x0578, 0x0583, 0x058a, 0x058f, 0x0594, 0x0598,
- 0x059e, 0x05a4, 0x05aa, 0x05b1, 0x05b5, 0x05be, 0x05c3, 0x05ce,
- 0x05d7, 0x05d7, 0x05df, 0x05e3, 0x05e7, 0x05f0, 0x05f0, 0x05f5,
- // Entry C0 - FF
- 0x05f5, 0x0601, 0x060e, 0x0614, 0x061c, 0x0623, 0x0623, 0x062a,
- 0x062a, 0x0630, 0x0630, 0x0630, 0x0633, 0x0633, 0x063d, 0x063d,
- 0x0643, 0x064a, 0x0656, 0x0656, 0x065a, 0x065a, 0x065a, 0x065a,
- 0x065e, 0x0663, 0x0663, 0x0667, 0x0667, 0x0667, 0x0677, 0x067e,
- 0x0683, 0x0687, 0x0687, 0x0687, 0x068d, 0x068d, 0x068d, 0x0691,
- 0x0691, 0x0695, 0x0695, 0x069b, 0x06a8, 0x06a8, 0x06ac, 0x06ac,
- 0x06b0, 0x06b8, 0x06b8, 0x06c0, 0x06c7, 0x06cc, 0x06d3, 0x06db,
- 0x06e3, 0x06e7, 0x06f0, 0x06fa, 0x0706, 0x070d, 0x0716, 0x0724,
- // Entry 100 - 13F
- 0x072b, 0x072b, 0x073c, 0x0749, 0x074f, 0x0755, 0x075a, 0x0761,
- 0x0768, 0x076e, 0x0773, 0x0778, 0x077d, 0x0792, 0x0792, 0x0797,
- 0x07a8, 0x07b4, 0x07b9, 0x07b9, 0x07bd, 0x07c4, 0x07c4, 0x07d2,
- 0x07d8, 0x07e1, 0x07f1, 0x07f1, 0x07f7, 0x07f7, 0x07fb, 0x0805,
- 0x0805, 0x0808, 0x0808, 0x0819, 0x0827, 0x0827, 0x0838, 0x084a,
- 0x0854, 0x0856, 0x085c, 0x085c, 0x0860, 0x0865, 0x0865, 0x086a,
- 0x0875, 0x0875, 0x088c, 0x0899, 0x0899, 0x089e, 0x08a7, 0x08ad,
- 0x08b2, 0x08bd, 0x08d1, 0x08d1, 0x08d1, 0x08d5, 0x08df, 0x08e4,
- // Entry 140 - 17F
- 0x08e4, 0x08ec, 0x08ec, 0x08f6, 0x08fc, 0x0901, 0x0917, 0x0917,
- 0x091b, 0x091f, 0x091f, 0x0924, 0x092d, 0x092d, 0x092d, 0x0933,
- 0x0939, 0x0940, 0x094f, 0x095c, 0x095c, 0x096a, 0x0970, 0x0976,
- 0x0979, 0x097e, 0x0982, 0x098d, 0x098d, 0x0991, 0x0998, 0x09ac,
- 0x09ac, 0x09b0, 0x09b0, 0x09b4, 0x09be, 0x09ca, 0x09ca, 0x09ca,
- 0x09ca, 0x09d4, 0x09dc, 0x09e8, 0x09ef, 0x09f9, 0x09fe, 0x0a0d,
- 0x0a0d, 0x0a0d, 0x0a17, 0x0a1d, 0x0a25, 0x0a2b, 0x0a2b, 0x0a30,
- 0x0a37, 0x0a3d, 0x0a42, 0x0a47, 0x0a4c, 0x0a53, 0x0a53, 0x0a53,
- // Entry 180 - 1BF
- 0x0a53, 0x0a59, 0x0a59, 0x0a5e, 0x0a62, 0x0a6e, 0x0a6e, 0x0a78,
- 0x0a7f, 0x0a84, 0x0a87, 0x0a8d, 0x0a92, 0x0a92, 0x0a92, 0x0a9c,
- 0x0a9c, 0x0aa2, 0x0aa9, 0x0ab0, 0x0ab8, 0x0abd, 0x0abd, 0x0ac3,
- 0x0ac9, 0x0ace, 0x0ad2, 0x0ada, 0x0ae7, 0x0af3, 0x0af7, 0x0afd,
- 0x0b08, 0x0b0e, 0x0b16, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b26, 0x0b32,
- 0x0b39, 0x0b44, 0x0b4b, 0x0b4b, 0x0b4b, 0x0b51, 0x0b5e, 0x0b5e,
- 0x0b6b, 0x0b6f, 0x0b7d, 0x0b83, 0x0b87, 0x0b8d, 0x0b8d, 0x0b93,
- 0x0b93, 0x0b98, 0x0ba4, 0x0ba4, 0x0baa, 0x0bb6, 0x0bba, 0x0bca,
- // Entry 1C0 - 1FF
- 0x0bd2, 0x0bda, 0x0bdf, 0x0be4, 0x0be9, 0x0bf9, 0x0c04, 0x0c0b,
- 0x0c13, 0x0c1d, 0x0c27, 0x0c27, 0x0c27, 0x0c27, 0x0c35, 0x0c35,
- 0x0c40, 0x0c40, 0x0c40, 0x0c49, 0x0c49, 0x0c5a, 0x0c62, 0x0c62,
- 0x0c6c, 0x0c73, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c82, 0x0c88, 0x0c88,
- 0x0c88, 0x0c88, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb8, 0x0cbf,
- 0x0cc4, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cd0, 0x0cdc, 0x0ce4, 0x0ce4,
- 0x0cf1, 0x0cf1, 0x0cf5, 0x0cf5, 0x0cfb, 0x0d09, 0x0d13, 0x0d13,
- 0x0d1c, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d26, 0x0d31, 0x0d3a,
- // Entry 200 - 23F
- 0x0d44, 0x0d4e, 0x0d55, 0x0d61, 0x0d70, 0x0d75, 0x0d75, 0x0d75,
- 0x0d7b, 0x0d7f, 0x0d87, 0x0d8f, 0x0d9c, 0x0dae, 0x0db6, 0x0db6,
- 0x0db6, 0x0dbb, 0x0dbf, 0x0dc5, 0x0dca, 0x0dcf, 0x0dd2, 0x0dd9,
- 0x0dd9, 0x0de3, 0x0dea, 0x0dea, 0x0df2, 0x0dfd, 0x0e06, 0x0e06,
- 0x0e06, 0x0e06, 0x0e0f, 0x0e0f, 0x0e16, 0x0e1c, 0x0e23, 0x0e2d,
- 0x0e46, 0x0e4c, 0x0e55, 0x0e5c, 0x0e5f, 0x0e62, 0x0e62, 0x0e62,
- 0x0e62, 0x0e62, 0x0e68, 0x0e68, 0x0e6f, 0x0e6f, 0x0e75, 0x0e7a,
- 0x0e7f, 0x0e87, 0x0e87, 0x0e8d, 0x0e8d, 0x0e91, 0x0e94, 0x0e9c,
- // Entry 240 - 27F
- 0x0e9c, 0x0e9c, 0x0e9c, 0x0ea5, 0x0eaf, 0x0eb9, 0x0eb9, 0x0ebf,
- 0x0edd, 0x0ee1, 0x0efd, 0x0f01, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f36,
- 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36,
- 0x0f36, 0x0f36, 0x0f44, 0x0f4d, 0x0f62, 0x0f77, 0x0f80, 0x0f8e,
-} // Size: 1240 bytes
-
-var svLangStr string = "" + // Size: 5432 bytes
- "afarabchaziskaavestiskaafrikaansakanamhariskaaragonesiskaarabiskaassames" +
- "iskaavariskaaymaraazerbajdzjanskabasjkiriskavitryskabulgariskabislamabam" +
- "barabengalitibetanskabretonskabosniskakatalanskatjetjenskachamorrokorsik" +
- "anskacreetjeckiskakyrkslaviskatjuvasjiskawalesiskadanskatyskadivehibhuta" +
- "nesiskaewegrekiskaengelskaesperantospanskaestniskabaskiskapersiskafulani" +
- "finskafijianskafäröiskafranskavästfrisiskairiskaskotsk gäliskagaliciskag" +
- "uaranígujaratimanxhausahebreiskahindihirimotukroatiskahaitiskaungerskaar" +
- "meniskahererointerlinguaindonesiskainterlingueigboszezuan iinupiakidoisl" +
- "ändskaitalienskainuktitutjapanskajavanesiskageorgiskakikongokikuyukuany" +
- "amakazakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurd" +
- "iskakomekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalao" +
- "tiskalitauiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonsk" +
- "amalayalammongoliskamarathimalajiskamaltesiskaburmesiskanaurunordndebele" +
- "nepalesiskandonganederländskanynorskanorskt bokmålsydndebelenavahonyanja" +
- "occitanskaodjibwaoromooriyaossetiskapunjabipalipolskaafghanskaportugisis" +
- "kaquechuarätoromanskarundirumänskaryskakinjarwandasanskritsardiskasindhi" +
- "nordsamiskasangosingalesiskaslovakiskaslovenskasamoanskashonasomaliskaal" +
- "banskaserbiskaswatisydsothosundanesiskasvenskaswahilitamiltelugiskatadzj" +
- "ikiskathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsongatataris" +
- "katahitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallo" +
- "nskawolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmea" +
- "dygeiskatunisisk arabiskaafrihiliaghemainuakkadiskaAlabama-muskogeealeut" +
- "iskagegiskasydaltaiskafornengelskaangikaarameiskaaraukanskaaraoniskaarap" +
- "ahoalgerisk arabiskaarawakiskamarockansk arabiskaegyptisk arabiskaasuame" +
- "rikanskt teckenspråkasturiskakotavaawadhibaluchiskabalinesiskabayerskaba" +
- "sabamunskabatak-tobaghomalabejabembabetawiskabenabafutbagadavästbaluchis" +
- "kabhojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahu" +
- "iskabodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayu" +
- "gaatsamcebuanochigachibchachagataichuukesiskamariskachinookchoctawchipew" +
- "yancherokesiskacheyennesoranisk kurdiskakoptiskakapisnonkrimtatariskakas" +
- "jubiskadakotadarginskataitadelawareslavejdogribdinkazarmadogrilågsorbisk" +
- "acentraldusundualamedelnederländskajola-fonyidyuladazagaembuefikemiliska" +
- "fornegyptiskaekajukelamitiskamedelengelskacentralalaskisk jupiskaewondoe" +
- "xtremaduriskafangfilippinskameänkielifonspråketcajun-franskamedelfranska" +
- "fornfranskafrankoprovensalskanordfrisiskaöstfrisiskafriulianskagãgagauzi" +
- "skagangayogbayazoroastrisk darietiopiskagilbertiskagilakimedelhögtyskafo" +
- "rnhögtyskaGoa-konkanigondigorontalogotiskagreboforngrekiskaschweizertysk" +
- "awayuufarefaregusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhettiti" +
- "skahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriskajam" +
- "aikansk engelsk kreollojbanngombakimashamijudisk persiskajudisk arabiska" +
- "jylländskakarakalpakiskakabyliskakachinjjukambakawikabardinskakanembutya" +
- "pmakondekapverdiskakenjangkorokaingangkhasikhotanesiskaTimbuktu-songhoyk" +
- "howarkirmanjkimkakokalenjinkimbundukomi-permjakiskakonkanikosreanskakpel" +
- "lekarachay-balkarkriokinaray-akarelskakurukhkisambaabafiakölniskakumykis" +
- "kakutenajladinolangilahndalambalezghienlingua franca novaliguriskalivoni" +
- "skalakotalombardiskamongolozinordlurilettgalliskaluba-lulualuiseñolundal" +
- "uolushailuhyalitterär kineiskalaziskamaduresiskamafamagahimaithilimakasa" +
- "rmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskamakh" +
- "uwa-meettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästmaris" +
- "kamundangflera språkmuskogeemirandesiskamarwarimentawaimyeneerjyamazande" +
- "ranimin nannapolitanskanamalågtyskanewariskaniasniueanskaao-nagakwasioba" +
- "mileké-ngiemboonnogaifornnordiskanovialn-kånordsothonuerklassisk newaris" +
- "kanyamwezinyankolenyoronzimaosageottomanskapangasinanmedelpersiskapampan" +
- "gapapiamentopalaupikardiskaPennsylvaniatyskamennonitisk lågtyskafornpers" +
- "iskaPfalz-tyskafeniciskapiemontesiskapontiskaponapefornpreussiskafornpro" +
- "vensalskaquichéChimborazo-höglandskichwarajasthanirapanuirarotonganskaro" +
- "magnolriffianskaromboromanirotumänskarusynrovianskaarumänskarwasandaweja" +
- "kutiskasamaritanskasamburusasaksantalisaurashtrangambaysangusicilianskas" +
- "kotskasassaresisk sardiskasydkurdiskasenecasenaseriselkupGao-songhayforn" +
- "iriskasamogitiskatachelhitshanChad-arabiskasidamolågsilesiskaselayarsyds" +
- "amiskalulesamiskaenaresamiskaskoltsamiskasoninkesogdiskasranan tongosere" +
- "rsahosaterfrisiskasukumasususumeriskashimaoréKongo-swahiliklassisk syris" +
- "kasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiskatsakhurkli" +
- "ngonskatlingittalyshtamasheknyasatonganskatok pisinturoyotarokotsakodisk" +
- "atsimshianmuslimsk tatariskatumbukatuvaluanskatasawaqtuviniskacentralmar" +
- "ockansk tamazightudmurtiskaugaritiskaumbundurotvajvenetianskavepsvästfla" +
- "mländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywashowarlpir" +
- "iwukalmuckiskamingrelianskalusogakiyaojapetiskayangbenbamileké-jembanhee" +
- "ngatukantonesiskazapotekblissymbolerzeeländskazenagamarockansk standard-" +
- "tamazightzuniinget språkligt innehållzazaiskamodern standardarabiskaöste" +
- "rrikisk tyskaschweizisk högtyskaaustralisk engelskakanadensisk engelskab" +
- "rittisk engelskaamerikansk engelskalatinamerikansk spanskaeuropeisk span" +
- "skamexikansk spanskakanadensisk franskaschweizisk franskalågsaxiskaflaml" +
- "ändskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviskaserbokroa" +
- "tiskaförenklad kinesiskatraditionell kinesiska"
-
-var svLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
- 0x0041, 0x004c, 0x0054, 0x005a, 0x0069, 0x0074, 0x007c, 0x0086,
- 0x008d, 0x0094, 0x009b, 0x00a5, 0x00ae, 0x00b6, 0x00c0, 0x00ca,
- 0x00d2, 0x00dd, 0x00e1, 0x00ea, 0x00f6, 0x0101, 0x010a, 0x0110,
- 0x0115, 0x011b, 0x0127, 0x012a, 0x0132, 0x013a, 0x0143, 0x014a,
- 0x0152, 0x015a, 0x0162, 0x0168, 0x016e, 0x0177, 0x0181, 0x0188,
- 0x0195, 0x019b, 0x01aa, 0x01b3, 0x01bb, 0x01c3, 0x01c7, 0x01cc,
- 0x01d5, 0x01da, 0x01e2, 0x01eb, 0x01f3, 0x01fb, 0x0204, 0x020a,
- // Entry 40 - 7F
- 0x0215, 0x0220, 0x022b, 0x022f, 0x0238, 0x023f, 0x0242, 0x024c,
- 0x0256, 0x025f, 0x0267, 0x0272, 0x027b, 0x0282, 0x0288, 0x0290,
- 0x0299, 0x02a6, 0x02b2, 0x02b9, 0x02c2, 0x02c8, 0x02d3, 0x02db,
- 0x02df, 0x02e7, 0x02f1, 0x02f6, 0x0303, 0x030a, 0x0315, 0x031c,
- 0x0324, 0x032d, 0x0339, 0x0341, 0x034d, 0x0359, 0x035e, 0x0368,
- 0x0371, 0x037b, 0x0382, 0x038b, 0x0395, 0x039f, 0x03a4, 0x03af,
- 0x03ba, 0x03c0, 0x03cd, 0x03d5, 0x03e3, 0x03ed, 0x03f3, 0x03f9,
- 0x0403, 0x040a, 0x040f, 0x0414, 0x041d, 0x0424, 0x0428, 0x042e,
- // Entry 80 - BF
- 0x0437, 0x0443, 0x044a, 0x0457, 0x045c, 0x0465, 0x046a, 0x0475,
- 0x047d, 0x0485, 0x048b, 0x0496, 0x049b, 0x04a7, 0x04b1, 0x04ba,
- 0x04c3, 0x04c8, 0x04d1, 0x04d9, 0x04e1, 0x04e6, 0x04ee, 0x04fa,
- 0x0501, 0x0508, 0x050d, 0x0516, 0x0521, 0x052d, 0x0535, 0x0540,
- 0x0546, 0x054f, 0x0557, 0x055d, 0x0566, 0x056f, 0x0578, 0x0581,
- 0x0585, 0x058e, 0x0593, 0x05a0, 0x05a8, 0x05b1, 0x05b6, 0x05bb,
- 0x05c3, 0x05c9, 0x05cf, 0x05d8, 0x05dc, 0x05e7, 0x05ed, 0x05f4,
- 0x05fd, 0x060e, 0x0616, 0x061b, 0x061f, 0x0628, 0x0638, 0x0641,
- // Entry C0 - FF
- 0x0648, 0x0653, 0x065f, 0x0665, 0x066e, 0x0678, 0x0681, 0x0688,
- 0x0699, 0x06a3, 0x06b6, 0x06c7, 0x06ca, 0x06e2, 0x06eb, 0x06f1,
- 0x06f7, 0x0701, 0x070c, 0x0714, 0x0718, 0x0720, 0x072a, 0x0731,
- 0x0735, 0x073a, 0x0743, 0x0747, 0x074c, 0x0752, 0x0761, 0x0769,
- 0x076e, 0x0772, 0x077c, 0x0783, 0x078a, 0x0795, 0x079e, 0x07a2,
- 0x07ab, 0x07af, 0x07b6, 0x07c1, 0x07cc, 0x07d2, 0x07d6, 0x07de,
- 0x07e3, 0x07ec, 0x07f2, 0x07f7, 0x07fe, 0x0803, 0x080a, 0x0812,
- 0x081d, 0x0824, 0x082b, 0x0832, 0x083b, 0x0847, 0x084f, 0x0860,
- // Entry 100 - 13F
- 0x0868, 0x0870, 0x087d, 0x0887, 0x088d, 0x0896, 0x089b, 0x08a3,
- 0x08a9, 0x08af, 0x08b4, 0x08b9, 0x08be, 0x08ca, 0x08d6, 0x08db,
- 0x08ed, 0x08f7, 0x08fc, 0x0902, 0x0906, 0x090a, 0x0912, 0x091f,
- 0x0925, 0x092f, 0x093c, 0x0953, 0x0959, 0x0967, 0x096b, 0x0976,
- 0x0980, 0x098b, 0x0998, 0x09a4, 0x09af, 0x09c1, 0x09cd, 0x09d9,
- 0x09e4, 0x09e7, 0x09f1, 0x09f4, 0x09f8, 0x09fd, 0x0a0d, 0x0a16,
- 0x0a21, 0x0a27, 0x0a35, 0x0a42, 0x0a4d, 0x0a52, 0x0a5b, 0x0a62,
- 0x0a67, 0x0a73, 0x0a81, 0x0a86, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f,
- // Entry 140 - 17F
- 0x0aa4, 0x0aad, 0x0ab7, 0x0ac1, 0x0acb, 0x0ad6, 0x0ae2, 0x0ae7,
- 0x0aeb, 0x0af2, 0x0af8, 0x0afd, 0x0b07, 0x0b0f, 0x0b27, 0x0b2d,
- 0x0b33, 0x0b3c, 0x0b4b, 0x0b5a, 0x0b65, 0x0b73, 0x0b7c, 0x0b82,
- 0x0b85, 0x0b8a, 0x0b8e, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb6,
- 0x0bbd, 0x0bc1, 0x0bc9, 0x0bce, 0x0bda, 0x0bea, 0x0bf0, 0x0bf9,
- 0x0bfe, 0x0c06, 0x0c0e, 0x0c1e, 0x0c25, 0x0c2f, 0x0c35, 0x0c44,
- 0x0c48, 0x0c51, 0x0c59, 0x0c5f, 0x0c67, 0x0c6c, 0x0c75, 0x0c7e,
- 0x0c85, 0x0c8b, 0x0c90, 0x0c96, 0x0c9b, 0x0ca3, 0x0cb5, 0x0cbe,
- // Entry 180 - 1BF
- 0x0cc7, 0x0ccd, 0x0cd8, 0x0cdd, 0x0ce1, 0x0ce9, 0x0cf5, 0x0cff,
- 0x0d07, 0x0d0c, 0x0d0f, 0x0d15, 0x0d1a, 0x0d2c, 0x0d33, 0x0d3e,
- 0x0d42, 0x0d48, 0x0d50, 0x0d57, 0x0d5c, 0x0d66, 0x0d6a, 0x0d70,
- 0x0d76, 0x0d7b, 0x0d7f, 0x0d8f, 0x0d9a, 0x0da8, 0x0daf, 0x0db8,
- 0x0dc3, 0x0dce, 0x0dd6, 0x0ddc, 0x0de1, 0x0ded, 0x0df4, 0x0e00,
- 0x0e08, 0x0e14, 0x0e1b, 0x0e23, 0x0e28, 0x0e2d, 0x0e38, 0x0e3f,
- 0x0e4b, 0x0e4f, 0x0e58, 0x0e61, 0x0e65, 0x0e6e, 0x0e75, 0x0e7b,
- 0x0e8e, 0x0e93, 0x0e9f, 0x0ea5, 0x0eaa, 0x0eb3, 0x0eb7, 0x0ec9,
- // Entry 1C0 - 1FF
- 0x0ed1, 0x0ed9, 0x0ede, 0x0ee3, 0x0ee8, 0x0ef2, 0x0efc, 0x0f09,
- 0x0f11, 0x0f1b, 0x0f20, 0x0f2a, 0x0f3b, 0x0f50, 0x0f5c, 0x0f67,
- 0x0f70, 0x0f7d, 0x0f85, 0x0f8b, 0x0f99, 0x0fa9, 0x0fb0, 0x0fca,
- 0x0fd4, 0x0fdb, 0x0fe8, 0x0ff0, 0x0ffa, 0x0fff, 0x1005, 0x1010,
- 0x1015, 0x101e, 0x1028, 0x102b, 0x1032, 0x103b, 0x1047, 0x104e,
- 0x1053, 0x105a, 0x1064, 0x106b, 0x1070, 0x107b, 0x1082, 0x1096,
- 0x10a1, 0x10a7, 0x10ab, 0x10af, 0x10b5, 0x10c0, 0x10ca, 0x10d5,
- 0x10de, 0x10e2, 0x10ef, 0x10f5, 0x1102, 0x1109, 0x1113, 0x111e,
- // Entry 200 - 23F
- 0x112a, 0x1136, 0x113d, 0x1145, 0x1151, 0x1156, 0x115a, 0x1167,
- 0x116d, 0x1171, 0x117a, 0x1183, 0x1190, 0x11a0, 0x11a7, 0x11b0,
- 0x11b4, 0x11b9, 0x11bd, 0x11c3, 0x11c8, 0x11ce, 0x11d2, 0x11dd,
- 0x11e4, 0x11ee, 0x11f5, 0x11fb, 0x1203, 0x1211, 0x121a, 0x1220,
- 0x1226, 0x1230, 0x1239, 0x124b, 0x1252, 0x125d, 0x1264, 0x126d,
- 0x1288, 0x1292, 0x129c, 0x12a3, 0x12a6, 0x12a9, 0x12b4, 0x12b8,
- 0x12c9, 0x12d7, 0x12de, 0x12e3, 0x12e8, 0x12f3, 0x12f9, 0x12fe,
- 0x1303, 0x130b, 0x130d, 0x1318, 0x1325, 0x132b, 0x1330, 0x1339,
- // Entry 240 - 27F
- 0x1340, 0x134f, 0x1358, 0x1364, 0x136b, 0x1377, 0x1382, 0x1388,
- 0x13a5, 0x13a9, 0x13c3, 0x13cb, 0x13e2, 0x13e2, 0x13f4, 0x1408,
- 0x141b, 0x142f, 0x1440, 0x1453, 0x146a, 0x147b, 0x148c, 0x148c,
- 0x149f, 0x14b1, 0x14bc, 0x14c8, 0x14e0, 0x14f6, 0x1500, 0x150e,
- 0x1522, 0x1538,
-} // Size: 1244 bytes
-
-var swLangStr string = "" + // Size: 2426 bytes
- "KiabkhaziKiafrikanaKiakaniKiamhariKiarabuKiassamKiaimaraKiazabajaniKibas" +
- "hkirKibelarusiKibulgariaKibambaraKibengaliKitibetiKibretoniKibosniaKikat" +
- "alaniKichecheniaKikosikaniKichekiKichuvashKiwelisiKidenmakiKijerumaniKid" +
- "ivehiKizongkhaKieweKigirikiKiingerezaKiesperantoKihispaniaKiestoniaKibas" +
- "queKiajemiKifiniKifijiKifaroeKifaransaKifrisia cha MagharibiKiayalandiKi" +
- "gaeli cha UskotiKigalisiKiguaraniKigujaratiKimanxKihausaKiebraniaKihindi" +
- "KroeshiaKihaitiKihungariKiarmeniaKiintalinguaKiindonesiaKiigboSichuan Yi" +
- "KiaisilandiKiitalianoKiinuktitutKijapaniKijavaKijojiaKikongoKikikuyuKika" +
- "zakiKikalaallisutKikambodiaKikannadaKikoreaKikashmiriKikurdiKikomiKikorn" +
- "iKikirigiziKilatiniKilasembagiKigandaKilingalaKilaosiKilithuaniaKiluba-K" +
- "atangaKilatviaMalagasiKimaoriKimasedoniaKimalayalamKimongoliaKimarathiKi" +
- "malesiaKimaltaKiburmaKindebele cha KaskaziniKinepaliKiholanziKinorwe Kip" +
- "yaKibokmal cha NorweKinyanjaKiokitaniKioromoKioriyaKiosetiaKipunjabiKipo" +
- "landiKipashtoKirenoKiquechuaKiromanshiKirundiKiromaniaKirusiKinyarwandaK" +
- "isanskritiKisindhiKisami cha KaskaziniKisangoKisinhalaKislovakiaKisloven" +
- "iaKisamoaKishonaKisomaliKialbaniaKiserbiaKiswatiKisotho cha KusiniKisund" +
- "aKiswidiKiswahiliKitamilKiteluguKitajikiKitailandiKitigrinyaKiturukimeni" +
- "KitswanaKitongaKiturukiKitsongaKitatariKitahitiKiuyghurKiukraniaKiurduKi" +
- "uzbekiKivendaKivietinamuKiwolofuKixhosaKiyidiKiyorubaKichinaKizuluKiakol" +
- "iKiaghemKimapucheKiarabu cha KialjeriaKiarabu cha MisriKiasuKibembaKiben" +
- "aKibalochi cha MagharibiKibodoKichigaKicherokeeKikurdi cha SoraniKitaita" +
- "KizarmaKidolnoserbskiKidualaKijola-FonyiKiembuKiefikiKifilipinoKigaKigag" +
- "auziKiyunaniKijerumani cha UswisiKikisiiKihawaiKihitihsbKingombaKimacham" +
- "eKikabyliaKikambaKimakondeKikabuverdianuKikoroKikoyra ChiiniKikalenjinKi" +
- "mbunduKikomipermyakKikonkaniKisambaaKibafiaKirangiChilambaKilakotaKilozi" +
- "Kiluri cha KaskaziniKiluba-LuluaKijaluoKiluhyaKimagahiKimaasaiKimeruKimo" +
- "riseniKimakhuwa-MeettoKimetaKimohokiKimundangKimazanderaniKinamandsKinew" +
- "ariKikwasioN’KoKisotho cha KaskaziniKinuerKinewari cha kaleKinyankoleKʼi" +
- "cheʼKiromboKirwoKisamburuKisanguKikurdi cha KusiniKisenaKoyraboro SenniK" +
- "itachelhitKisami cha KusiniKisami cha LuleKisami cha InariKisami cha Sko" +
- "ltKisukumaKingwanaKitesoKitetumKiklingoniKitokpisinKitumbukaKitasawaqCen" +
- "tral Atlas TamazightLugha IsiyojulikanaKivaiKivunjoKiwarlpiriKisogaKiyao" +
- "Tamaziti Msingi ya KimorokoHakuna maudhui ya lughaKiarabu Sanifu cha Kis" +
- "asaKichina (Kilichorahisishwa)Kichina cha Jadi"
-
-var swLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022,
- 0x0029, 0x0030, 0x0030, 0x0038, 0x0043, 0x004c, 0x0056, 0x0060,
- 0x0060, 0x0069, 0x0072, 0x007a, 0x0083, 0x008b, 0x0095, 0x00a0,
- 0x00a0, 0x00aa, 0x00aa, 0x00b1, 0x00b1, 0x00ba, 0x00c2, 0x00cb,
- 0x00d5, 0x00dd, 0x00e6, 0x00eb, 0x00f3, 0x00fd, 0x0108, 0x0112,
- 0x011b, 0x0123, 0x012a, 0x012a, 0x0130, 0x0136, 0x013d, 0x0146,
- 0x015c, 0x0166, 0x0178, 0x0180, 0x0189, 0x0193, 0x0199, 0x01a0,
- 0x01a9, 0x01b0, 0x01b0, 0x01b8, 0x01bf, 0x01c8, 0x01d1, 0x01d1,
- // Entry 40 - 7F
- 0x01dd, 0x01e8, 0x01e8, 0x01ee, 0x01f8, 0x01f8, 0x01f8, 0x0203,
- 0x020d, 0x0218, 0x0220, 0x0226, 0x022d, 0x0234, 0x023c, 0x023c,
- 0x0244, 0x0251, 0x025b, 0x0264, 0x026b, 0x026b, 0x0275, 0x027c,
- 0x0282, 0x0289, 0x0293, 0x029b, 0x02a6, 0x02ad, 0x02ad, 0x02b6,
- 0x02bd, 0x02c8, 0x02d6, 0x02de, 0x02e6, 0x02e6, 0x02ed, 0x02f8,
- 0x0303, 0x030d, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d, 0x0344,
- 0x034c, 0x034c, 0x0355, 0x0362, 0x0374, 0x0374, 0x0374, 0x037c,
- 0x0385, 0x0385, 0x038c, 0x0393, 0x039b, 0x03a4, 0x03a4, 0x03ad,
- // Entry 80 - BF
- 0x03b5, 0x03bb, 0x03c4, 0x03ce, 0x03d5, 0x03de, 0x03e4, 0x03ef,
- 0x03fa, 0x03fa, 0x0402, 0x0416, 0x041d, 0x0426, 0x0430, 0x043a,
- 0x0441, 0x0448, 0x0450, 0x0459, 0x0461, 0x0468, 0x047a, 0x0481,
- 0x0488, 0x0491, 0x0498, 0x04a0, 0x04a8, 0x04b2, 0x04bc, 0x04c8,
- 0x04d0, 0x04d7, 0x04df, 0x04e7, 0x04ef, 0x04f7, 0x04ff, 0x0508,
- 0x050e, 0x0516, 0x051d, 0x0528, 0x0528, 0x0528, 0x0530, 0x0537,
- 0x053d, 0x0545, 0x0545, 0x054c, 0x0552, 0x0552, 0x0559, 0x0559,
- 0x0559, 0x0559, 0x0559, 0x0560, 0x0560, 0x0560, 0x0560, 0x0560,
- // Entry C0 - FF
- 0x0560, 0x0560, 0x0560, 0x0560, 0x0560, 0x0569, 0x0569, 0x0569,
- 0x057e, 0x057e, 0x057e, 0x058f, 0x0594, 0x0594, 0x0594, 0x0594,
- 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
- 0x0594, 0x059b, 0x059b, 0x05a1, 0x05a1, 0x05a1, 0x05b8, 0x05b8,
- 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8,
- 0x05b8, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be,
- 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05c5, 0x05c5, 0x05c5,
- 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05cf, 0x05cf, 0x05e1,
- // Entry 100 - 13F
- 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e8, 0x05e8,
- 0x05e8, 0x05e8, 0x05e8, 0x05ef, 0x05ef, 0x05fd, 0x05fd, 0x0604,
- 0x0604, 0x0610, 0x0610, 0x0610, 0x0616, 0x061d, 0x061d, 0x061d,
- 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x0627,
- 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627,
- 0x0627, 0x062b, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634,
- 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634,
- 0x0634, 0x063c, 0x0651, 0x0651, 0x0651, 0x0658, 0x0658, 0x0658,
- // Entry 140 - 17F
- 0x0658, 0x065f, 0x065f, 0x065f, 0x0665, 0x0665, 0x0668, 0x0668,
- 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668,
- 0x0670, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0682, 0x0682,
- 0x0682, 0x0689, 0x0689, 0x0689, 0x0689, 0x0689, 0x0692, 0x06a0,
- 0x06a0, 0x06a6, 0x06a6, 0x06a6, 0x06a6, 0x06b4, 0x06b4, 0x06b4,
- 0x06b4, 0x06be, 0x06c6, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc,
- 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06e4, 0x06eb, 0x06eb, 0x06eb,
- 0x06eb, 0x06eb, 0x06f2, 0x06f2, 0x06fa, 0x06fa, 0x06fa, 0x06fa,
- // Entry 180 - 1BF
- 0x06fa, 0x0702, 0x0702, 0x0702, 0x0708, 0x071c, 0x071c, 0x0728,
- 0x0728, 0x0728, 0x072f, 0x072f, 0x0736, 0x0736, 0x0736, 0x0736,
- 0x0736, 0x073e, 0x073e, 0x073e, 0x073e, 0x0746, 0x0746, 0x0746,
- 0x0746, 0x0746, 0x074c, 0x0756, 0x0756, 0x0766, 0x076c, 0x076c,
- 0x076c, 0x076c, 0x076c, 0x0774, 0x0774, 0x0774, 0x077d, 0x077d,
- 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x078a, 0x078a,
- 0x078a, 0x0790, 0x0793, 0x079b, 0x079b, 0x079b, 0x079b, 0x07a3,
- 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a9, 0x07be, 0x07c4, 0x07d5,
- // Entry 1C0 - 1FF
- 0x07d5, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df,
- 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df,
- 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e8, 0x07e8,
- 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07ef, 0x07ef, 0x07ef,
- 0x07ef, 0x07ef, 0x07ef, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07fd,
- 0x07fd, 0x07fd, 0x07fd, 0x07fd, 0x0804, 0x0804, 0x0804, 0x0804,
- 0x0816, 0x0816, 0x081c, 0x081c, 0x081c, 0x082b, 0x082b, 0x082b,
- 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0847, 0x0856,
- // Entry 200 - 23F
- 0x0866, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876,
- 0x087e, 0x087e, 0x087e, 0x087e, 0x0886, 0x0886, 0x0886, 0x0886,
- 0x0886, 0x0886, 0x088c, 0x088c, 0x0893, 0x0893, 0x0893, 0x0893,
- 0x0893, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x08a7, 0x08a7,
- 0x08a7, 0x08a7, 0x08a7, 0x08a7, 0x08b0, 0x08b0, 0x08b9, 0x08b9,
- 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e3, 0x08e8, 0x08e8, 0x08e8,
- 0x08e8, 0x08e8, 0x08e8, 0x08e8, 0x08ef, 0x08ef, 0x08ef, 0x08ef,
- 0x08ef, 0x08f9, 0x08f9, 0x08f9, 0x08f9, 0x08ff, 0x0904, 0x0904,
- // Entry 240 - 27F
- 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904,
- 0x091f, 0x091f, 0x0936, 0x0936, 0x094f, 0x094f, 0x094f, 0x094f,
- 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f,
- 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f,
- 0x096a, 0x097a,
-} // Size: 1244 bytes
-
-var taLangStr string = "" + // Size: 12271 bytes
- "அஃபார்அப்காஜியான்அவெஸ்தான்ஆஃப்ரிகான்ஸ்அகான்அம்ஹாரிக்ஆர்கோனீஸ்அரபிக்அஸ்ஸா" +
- "மீஸ்அவேரிக்அய்மராஅஸர்பைஜானிபஷ்கிர்பெலாருஷியன்பல்கேரியன்பிஸ்லாமாபம்பாரா" +
- "வங்காளம்திபெத்தியன்பிரெட்டன்போஸ்னியன்கேட்டலான்செச்சென்சாமோரோகார்சிகன்க" +
- "்ரீசெக்சர்ச் ஸ்லாவிக்சுவாஷ்வேல்ஷ்டேனிஷ்ஜெர்மன்திவேஹிபூடானிஈவ்கிரேக்கம்" +
- "ஆங்கிலம்எஸ்பரேன்டோஸ்பானிஷ்எஸ்டோனியன்பாஸ்க்பெர்ஷியன்ஃபுலாஃபின்னிஷ்ஃபிஜி" +
- "யன்ஃபரோயிஸ்பிரெஞ்சுமேற்கு ஃப்ரிஷியன்ஐரிஷ்ஸ்காட்ஸ் கேலிக்காலிஸியன்குரான" +
- "ிகுஜராத்திமேங்க்ஸ்ஹௌஸாஹீப்ரூஇந்திஹிரி மோட்டுகுரோஷியன்ஹைத்தியன்ஹங்கேரிய" +
- "ன்ஆர்மேனியன்ஹெரேரோஇண்டர்லிங்வாஇந்தோனேஷியன்இன்டர்லிங்இக்போசிசுவான் ஈஇனு" +
- "பியாக்இடோஐஸ்லேண்டிக்இத்தாலியன்இனுகிடூட்ஜப்பானியம்ஜாவனீஸ்ஜார்ஜியன்காங்க" +
- "ோகிகுயூகுவான்யாமாகசாக்கலாலிசூட்கெமெர்கன்னடம்கொரியன்கனுரிகாஷ்மிரிகுர்தி" +
- "ஷ்கோமிகார்னிஷ்கிர்கிஸ்லத்தின்லக்ஸம்போர்கிஷ்கான்டாலிம்பர்கிஷ்லிங்காலாலா" +
- "வோலிதுவேனியன்லுபா-கடாங்காலாட்வியன்மலகாஸிமார்ஷெலிஷ்மௌரிமாஸிடோனியன்மலையா" +
- "ளம்மங்கோலியன்மராத்திமலாய்மால்டிஸ்பர்மீஸ்நவ்ரூவடக்கு தெபெலேநேபாளிதோங்கா" +
- "டச்சுநார்வேஜியன் நியூநார்ஸ்க்நார்வேஜியன் பொக்மால்தெற்கு தெபெலேநவாஜோநயன" +
- "்ஜாஒக்கிடன்ஓஜிபவாஒரோமோஒரியாஒசெட்டிக்பஞ்சாபிபாலிபோலிஷ்பஷ்தோபோர்ச்சுக்கீ" +
- "ஸ்கிவேசுவாரோமான்ஷ்ருண்டிரோமேனியன்ரஷியன்கின்யாருவான்டாசமஸ்கிருதம்சாடினி" +
- "யன்சிந்திவடக்கு சமிசாங்கோசிங்களம்ஸ்லோவாக்ஸ்லோவேனியன்ஸாமோவான்ஷோனாசோமாலி" +
- "அல்பேனியன்செர்பியன்ஸ்வாடீதெற்கு ஸோதோசுண்டானீஸ்ஸ்வீடிஷ்சுவாஹிலிதமிழ்தெல" +
- "ுங்குதாஜிக்தாய்டிக்ரின்யாதுருக்மென்ஸ்வானாடோங்கான்துருக்கிஷ்ஸோங்காடாடர்" +
- "டஹிதியான்உய்குர்உக்ரைனியன்உருதுஉஸ்பெக்வென்டாவியட்நாமிஸ்ஒலாபூக்ஒவாலூன்ஒ" +
- "லூஃப்ஹோசாஇத்திஷ்யோருபாஜுவாங்சீனம்ஜுலுஆச்சினீஸ்அகோலிஅதாங்மேஅதகேதுனிசிய " +
- "அரபுஅஃப்ரிஹிலிஅகெம்ஐனுஅக்கேதியன்அலூட்தெற்கு அல்தைபழைய ஆங்கிலம்அங்கிகாஅ" +
- "ராமைக்மபுசேஅரபஹோஅராவாக்அசுஅஸ்துரியன்அவதிபெலுசிபலினீஸ்பாஸாபேஜாபெம்பாபென" +
- "ாபடகாமேற்கு பலோச்சிபோஜ்பூரிபிகோல்பினிசிக்சிகாபிஷ்ணுப்பிரியாப்ராஜ்போடோப" +
- "ுரியாத்புகினீஸ்ப்லின்கேடோகரீப்ஆட்சம்செபுவானோசிகாசிப்சாஷகதைசூகிசேமாரிசி" +
- "னூக் ஜார்கான்சோக்தௌசிபெவ்யான்செரோகீசெயேனிமத்திய குர்திஷ்காப்டிக்கிரிமி" +
- "யன் துர்க்கிகஷுபியன்தகோடாதார்குவாடைடாதெலாவேர்ஸ்லாவ்டோக்ரிப்டின்காசார்ம" +
- "ாடோக்ரிலோயர் சோர்பியன்டுவாலாமத்திய டச்சுஜோலா-ஃபோன்யிட்யூலாஎம்புஎஃபிக்ப" +
- "ண்டைய எகிப்தியன்ஈகாஜுக்எலமைட்மத்திய ஆங்கிலம்எவோன்டோஃபங்க்ஃபிலிபினோஃபான" +
- "்மத்திய ஃப்ரென்ச்பழைய ஃப்ரென்ச்வடக்கு ஃப்ரிஸியான்கிழக்கு ஃப்ரிஸியான்ஃப" +
- "்ரியூலியன்காகாகௌஸ்கயோபயாகீஜ்கில்பெர்டீஸ்மத்திய ஹை ஜெர்மன்பழைய ஹை ஜெர்ம" +
- "ன்கோன்டிகோரோன்டலோகோதிக்க்ரேபோபண்டைய கிரேக்கம்ஜெர்மன் (ஸ்விஸ்)குஸிகுவிச" +
- "ின்ஹைடாஹவாயியன்பிஜி இந்திஹிலிகாய்னான்ஹிட்டைட்மாங்க்அப்பர் சோர்பியான்ஹு" +
- "பாஇபான்இலோகோஇங்குஷ்லோஜ்பன்நகொம்பாமாசெம்ஜூதேயோ-பெர்ஷியன்ஜூதேயோ-அராபிக்க" +
- "ாரா-கல்பாக்கபாய்ல்காசின்ஜ்ஜூகம்பாகாவிகபார்டியன்தையாப்மகொண்டேகபுவெர்திய" +
- "ானுகோரோகாஸிகோதானீஸ்கொய்ரா சீனீகலின்ஜின்கிம்புன்துகொமி-பெர்ம்யாக்கொங்கண" +
- "ிகோஸ்ரைன்க்பெல்லேகராசே-பல்கார்கரேலியன்குருக்ஷம்பாலாபாஃபியாகும்இக்குடேன" +
- "ைலடினோலங்கிலஹன்டாலம்பாலெஜ்ஜியன்லகோடாமோங்கோலோசிவடக்கு லுரிலுபா-லுலுலாலு" +
- "ய்சேனோலூன்டாலுயோலுஷய்லுயியாமதுரீஸ்மகாஹிமைதிலிமகாசார்மான்டிங்கோமாசாய்மோ" +
- "க்க்ஷாமான்டார்மென்டீமெருமொரிசியன்மத்திய ஐரிஷ்மகுவா-மீட்டோமேடாமிக்மாக்ம" +
- "ின்னாங்கபௌமன்சுமனிபூரிமொஹாக்மோஸ்ஸிமுன்டாங்பல மொழிகள்க்ரீக்மிரான்டீஸ்மா" +
- "ர்வாரிஏர்ஜியாமசந்தேரனிநியோபோலிடன்நாமாலோ ஜெர்மன்நெவாரிநியாஸ்நியூவான்க்வ" +
- "ாசியோநோகைபழைய நோர்ஸ்என்‘கோவடக்கு சோதோநியூர்பாரம்பரிய நேவாரிநியாம்வேஜிந" +
- "ியான்கோலேநியோரோநிஜ்மாஓசேஜ்ஒட்டோமன் துர்க்கிபன்காசினன்பாஹ்லவிபம்பாங்காப" +
- "பியேமென்டோபலௌவ்ன்பென்சில்வேனிய ஜெர்மன்பழைய பெர்ஷியன்ஃபொனிஷியன்ஃபோன்பெய" +
- "ென்பழைய ப்ரோவென்சால்கீசீராஜஸ்தானிரபனுய்ரரோடோங்கன்ரோம்போரோமானிஅரோமானியன" +
- "்ருவாசான்டாவேயாகுட்சமாரிடன் அராமைக்சம்புருசாசாக்சான்டாலிசௌராஷ்டிரம்சங்" +
- "குசிசிலியன்ஸ்காட்ஸ்தெற்கு குர்திஷ்செனாசெல்குப்கொய்ராபோரோ சென்னிபழைய ஐர" +
- "ிஷ்தசேஹித்ஷான்சிடாமோதெற்கு சமிலுலே சமிஇனாரி சமிஸ்கோல்ட் சமிசோனின்கேசோக" +
- "்தியன்ஸ்ரானன் டோங்கோசெரெர்சுகுமாசுசுசுமேரியன்கொமோரியன்காங்கோ சுவாஹிலிப" +
- "ாரம்பரிய சிரியாக்சிரியாக்டிம்னேடெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக்ளிங்க" +
- "ோன்டிலிங்கிட்டாமாஷேக்நயாசா டோங்காடோக் பிஸின்ட்ஸிம்ஷியன்தும்புகாடுவாலுட" +
- "சவாக்டுவினியன்மத்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிட்க்அம்பொண்டுரூட்வைவோட" +
- "்க்வுன்ஜோவாலாமோவாரேவாஷோவல்பிரிகல்மிக்சோகாயாவ்யாபேசிகாண்டோனீஸ்ஜாபோடெக்ப" +
- "்லிஸ்ஸிம்பால்ஸ்ஜெனகாஸ்டாண்டர்ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏ" +
- "துமில்லைஜாஜாநவீன நிலையான அரபிக்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திர" +
- "ேலிய ஆங்கிலம்கனடிய ஆங்கிலம்பிரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்ஸ்பானிஷ" +
- "் (ஐரோப்பா)கனடிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ்போர்ச்சுகீஸ்" +
- " (பிரேசில்)போர்ச்சுகீஸ் (ஐரோப்பா)மோல்டாவியன்செர்போ-க்ரோஷியன்எளிதாக்கப்பட" +
- "்ட சீனம்பாரம்பரிய சீனம்"
-
-var taLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0033, 0x004e, 0x0072, 0x0081, 0x009c, 0x00b7,
- 0x00c9, 0x00e4, 0x00f9, 0x010b, 0x0129, 0x013e, 0x015f, 0x017d,
- 0x0195, 0x01aa, 0x01c2, 0x01e3, 0x01fe, 0x0219, 0x0234, 0x024c,
- 0x025e, 0x0279, 0x0285, 0x0291, 0x02b9, 0x02cb, 0x02dd, 0x02ef,
- 0x0304, 0x0316, 0x0328, 0x0331, 0x034c, 0x0364, 0x0382, 0x039a,
- 0x03b8, 0x03ca, 0x03e5, 0x03f4, 0x040f, 0x0427, 0x043f, 0x0457,
- 0x0488, 0x0497, 0x04c2, 0x04dd, 0x04ef, 0x050a, 0x0522, 0x052e,
- 0x0540, 0x054f, 0x056e, 0x0589, 0x05a4, 0x05c2, 0x05e0, 0x05f2,
- // Entry 40 - 7F
- 0x0616, 0x063a, 0x0658, 0x0667, 0x0683, 0x069e, 0x06a7, 0x06c8,
- 0x06e6, 0x0701, 0x071f, 0x0734, 0x074f, 0x0761, 0x0773, 0x0791,
- 0x07a0, 0x07bb, 0x07cd, 0x07e2, 0x07f7, 0x0806, 0x081e, 0x0836,
- 0x0842, 0x085a, 0x0872, 0x0887, 0x08b1, 0x08c3, 0x08e4, 0x08fc,
- 0x0908, 0x0929, 0x094b, 0x0966, 0x0978, 0x0996, 0x09a2, 0x09c3,
- 0x09db, 0x09f9, 0x0a0e, 0x0a1d, 0x0a35, 0x0a4a, 0x0a59, 0x0a7e,
- 0x0a90, 0x0aa2, 0x0ab1, 0x0af7, 0x0b31, 0x0b56, 0x0b65, 0x0b77,
- 0x0b8f, 0x0ba1, 0x0bb0, 0x0bbf, 0x0bda, 0x0bef, 0x0bfb, 0x0c0d,
- // Entry 80 - BF
- 0x0c1c, 0x0c46, 0x0c5e, 0x0c76, 0x0c88, 0x0ca3, 0x0cb5, 0x0cdf,
- 0x0d00, 0x0d1b, 0x0d2d, 0x0d49, 0x0d5b, 0x0d73, 0x0d8b, 0x0dac,
- 0x0dc4, 0x0dd0, 0x0de2, 0x0e00, 0x0e1b, 0x0e2d, 0x0e4c, 0x0e6a,
- 0x0e82, 0x0e9a, 0x0ea9, 0x0ec1, 0x0ed3, 0x0edf, 0x0efd, 0x0f1b,
- 0x0f2d, 0x0f45, 0x0f63, 0x0f75, 0x0f84, 0x0f9f, 0x0fb4, 0x0fd2,
- 0x0fe1, 0x0ff6, 0x1008, 0x1029, 0x103e, 0x1053, 0x1065, 0x1071,
- 0x1086, 0x1098, 0x10aa, 0x10b9, 0x10c5, 0x10e0, 0x10ef, 0x1104,
- 0x1110, 0x1132, 0x1150, 0x115f, 0x1168, 0x1186, 0x1186, 0x1195,
- // Entry C0 - FF
- 0x1195, 0x11b7, 0x11dc, 0x11f1, 0x1206, 0x1215, 0x1215, 0x1224,
- 0x1224, 0x1239, 0x1239, 0x1239, 0x1242, 0x1242, 0x1260, 0x1260,
- 0x126c, 0x127e, 0x1293, 0x1293, 0x129f, 0x129f, 0x129f, 0x129f,
- 0x12ab, 0x12bd, 0x12bd, 0x12c9, 0x12c9, 0x12d5, 0x12fd, 0x1315,
- 0x1327, 0x1333, 0x1333, 0x1333, 0x134b, 0x1375, 0x1375, 0x1387,
- 0x1387, 0x1393, 0x1393, 0x13ab, 0x13c3, 0x13c3, 0x13d5, 0x13d5,
- 0x13e1, 0x13f0, 0x13f0, 0x1402, 0x141a, 0x1426, 0x1438, 0x1444,
- 0x1456, 0x1462, 0x148d, 0x149f, 0x14bd, 0x14cf, 0x14e1, 0x150c,
- // Entry 100 - 13F
- 0x1524, 0x1524, 0x1558, 0x1570, 0x157f, 0x1597, 0x15a3, 0x15bb,
- 0x15cd, 0x15e5, 0x15f7, 0x1609, 0x161b, 0x1646, 0x1646, 0x1658,
- 0x167a, 0x169c, 0x16ae, 0x16ae, 0x16bd, 0x16cf, 0x16cf, 0x1700,
- 0x1715, 0x1727, 0x1752, 0x1752, 0x1767, 0x1767, 0x1779, 0x1794,
- 0x1794, 0x17a3, 0x17a3, 0x17d1, 0x17f9, 0x17f9, 0x182d, 0x1864,
- 0x1888, 0x188e, 0x18a0, 0x18a0, 0x18a9, 0x18b2, 0x18b2, 0x18be,
- 0x18e2, 0x18e2, 0x1911, 0x193a, 0x193a, 0x194c, 0x1967, 0x1979,
- 0x198b, 0x19b9, 0x19e3, 0x19e3, 0x19e3, 0x19ef, 0x1a07, 0x1a13,
- // Entry 140 - 17F
- 0x1a13, 0x1a2b, 0x1a47, 0x1a6b, 0x1a83, 0x1a95, 0x1ac6, 0x1ac6,
- 0x1ad2, 0x1ae1, 0x1ae1, 0x1af0, 0x1b05, 0x1b05, 0x1b05, 0x1b1a,
- 0x1b2f, 0x1b41, 0x1b6f, 0x1b97, 0x1b97, 0x1bb9, 0x1bce, 0x1be0,
- 0x1bec, 0x1bfb, 0x1c07, 0x1c25, 0x1c25, 0x1c37, 0x1c4c, 0x1c73,
- 0x1c73, 0x1c7f, 0x1c7f, 0x1c8b, 0x1ca3, 0x1cc2, 0x1cc2, 0x1cc2,
- 0x1cc2, 0x1cdd, 0x1cfb, 0x1d26, 0x1d3b, 0x1d53, 0x1d6b, 0x1d90,
- 0x1d90, 0x1d90, 0x1da8, 0x1dba, 0x1dcf, 0x1de4, 0x1de4, 0x1df9,
- 0x1e0b, 0x1e1a, 0x1e29, 0x1e3b, 0x1e4a, 0x1e65, 0x1e65, 0x1e65,
- // Entry 180 - 1BF
- 0x1e65, 0x1e74, 0x1e74, 0x1e86, 0x1e92, 0x1eb1, 0x1eb1, 0x1ed0,
- 0x1ee8, 0x1efa, 0x1f06, 0x1f15, 0x1f27, 0x1f27, 0x1f27, 0x1f3c,
- 0x1f3c, 0x1f4b, 0x1f5d, 0x1f72, 0x1f90, 0x1fa2, 0x1fa2, 0x1fba,
- 0x1fd2, 0x1fe4, 0x1ff0, 0x200b, 0x202d, 0x204f, 0x205b, 0x2073,
- 0x2094, 0x20a3, 0x20b8, 0x20ca, 0x20dc, 0x20dc, 0x20f4, 0x2110,
- 0x2122, 0x2140, 0x2158, 0x2158, 0x2158, 0x216d, 0x2188, 0x2188,
- 0x21a9, 0x21b5, 0x21d1, 0x21e3, 0x21f5, 0x220d, 0x220d, 0x2225,
- 0x2225, 0x2231, 0x2250, 0x2250, 0x2262, 0x2281, 0x2293, 0x22c1,
- // Entry 1C0 - 1FF
- 0x22df, 0x22fd, 0x230f, 0x2321, 0x2330, 0x2361, 0x237f, 0x2394,
- 0x23af, 0x23d0, 0x23e5, 0x23e5, 0x2422, 0x2422, 0x244a, 0x244a,
- 0x2468, 0x2468, 0x2468, 0x2489, 0x2489, 0x24ba, 0x24c6, 0x24c6,
- 0x24e1, 0x24f3, 0x2511, 0x2511, 0x2511, 0x2523, 0x2535, 0x2535,
- 0x2535, 0x2535, 0x2553, 0x255f, 0x2577, 0x2589, 0x25b7, 0x25cc,
- 0x25de, 0x25f6, 0x2617, 0x2617, 0x2626, 0x2641, 0x2659, 0x2659,
- 0x2684, 0x2684, 0x2690, 0x2690, 0x26a8, 0x26d9, 0x26f5, 0x26f5,
- 0x270a, 0x2716, 0x2716, 0x2728, 0x2728, 0x2728, 0x2744, 0x275a,
- // Entry 200 - 23F
- 0x2773, 0x2795, 0x27ad, 0x27c8, 0x27f0, 0x2802, 0x2802, 0x2802,
- 0x2814, 0x2820, 0x283b, 0x2856, 0x2881, 0x28b5, 0x28cd, 0x28cd,
- 0x28cd, 0x28df, 0x28eb, 0x28fd, 0x290f, 0x2921, 0x292d, 0x293f,
- 0x293f, 0x295d, 0x297b, 0x297b, 0x2993, 0x29b5, 0x29d4, 0x29d4,
- 0x29d4, 0x29d4, 0x29f5, 0x29f5, 0x2a0d, 0x2a1f, 0x2a31, 0x2a4c,
- 0x2a84, 0x2a9f, 0x2aba, 0x2ad5, 0x2ae1, 0x2ae7, 0x2ae7, 0x2ae7,
- 0x2ae7, 0x2ae7, 0x2af9, 0x2af9, 0x2b0b, 0x2b0b, 0x2b1d, 0x2b29,
- 0x2b35, 0x2b4a, 0x2b4a, 0x2b5f, 0x2b5f, 0x2b6b, 0x2b77, 0x2b89,
- // Entry 240 - 27F
- 0x2b89, 0x2b89, 0x2b89, 0x2ba7, 0x2bbf, 0x2bef, 0x2bef, 0x2bfe,
- 0x2c51, 0x2c5d, 0x2ca4, 0x2cb0, 0x2ce5, 0x2ce5, 0x2d13, 0x2d42,
- 0x2d79, 0x2da1, 0x2dd8, 0x2e09, 0x2e09, 0x2e39, 0x2e39, 0x2e39,
- 0x2e61, 0x2e89, 0x2ea5, 0x2ec0, 0x2eff, 0x2f3b, 0x2f5c, 0x2f8a,
- 0x2fc4, 0x2fef,
-} // Size: 1244 bytes
-
-var teLangStr string = "" + // Size: 11712 bytes
- "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీఅవ" +
- "ారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుశియన్బల్గేరియన్బిస్లామాబంబారాబెంగాలీటి" +
- "బెటన్బ్రెటన్బోస్నియన్కెటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ స్లావిక్" +
- "చువాష్వెల్ష్డేనిష్జర్మన్దివేహిజొన్ఖాఈవీగ్రీక్ఆంగ్లంఎస్పరెన్టొస్పానిష్ఈ" +
- "స్టొనియన్బాస్క్పర్షియన్ఫ్యులఫిన్నిష్ఫిజియన్ఫారోయీజ్ఫ్రెంచ్పశ్చిమ ఫ్రిస" +
- "ియన్ఐరిష్స్కాటిష్ గేలిక్గెలిషియన్గురానిగుజరాతిమంకస్హౌసాహీబ్రుహిందీహిరి" +
- " మోటుక్రొయెషియన్హైతియన్హన్గేరియన్ఆర్మేనియన్హిరేరోఇంటర్లింగ్వాఇండోనేషియన్" +
- "ఇంటర్ లింగ్ఇగ్బోశిషువన్ ఈఇనూపైఏక్ఈడౌఐస్లాండిక్ఇటాలియన్ఇనుక్టిటుట్జాపనీ" +
- "స్జావనీస్జార్జియన్కోంగోకికుయుక్వాన్యామకజఖ్కలాల్లిసూట్ఖ్మేర్కన్నడకొరియన" +
- "్కానురికాశ్మీరికుర్దిష్కోమికోర్నిష్కిర్గిజ్లాటిన్లుక్సంబర్గిష్గాండాలిమ" +
- "్బర్గిష్లింగాలలావోలిథుయేనియన్లూబ-కటాంగలాట్వియన్మాలాగసిమార్షలీస్మయోరిమస" +
- "డోనియన్మలయాళంమంగోలియన్మరాఠీమలేయ్మాల్టీస్బర్మీస్నౌరుఉత్తర దెబెలెనేపాలిద" +
- "ోంగాడచ్నార్విజియాన్ న్యోర్స్క్నార్వీజియన్ బొక్మాల్దక్షిణ దెబెలెనవాహోన్" +
- "యాన్జాఆక్సిటన్చేవాఒరోమోఒరియాఒసేటిక్పంజాబీపాలీపోలిష్పాష్టోపోర్చుగీస్కెష" +
- "ుయారోమన్ష్రండిరోమానియన్రష్యన్కిన్యర్వాండాసంస్కృతంసార్డీనియన్సింధీఉత్తర" +
- " సామిసాంగోసింహళంస్లోవాక్స్లోవేనియాన్సమోవన్షోనసోమాలిఅల్బేనియన్సెర్బియన్స్" +
- "వాతిదక్షిణ సోతోసుడానీస్స్వీడిష్స్వాహిలితమిళముతెలుగుతజిక్థాయ్తిగ్రిన్యా" +
- "తుర్కమెన్సెటస్వానాటాంగాన్టర్కిష్సోంగాటాటర్తహితియన్ఉయ్\u200cఘర్ఉక్రేనియ" +
- "న్ఉర్దూఉజ్బెక్వెండావియత్నామీస్వోలాపుక్వాలూన్వొలాఫ్షోసాఇడ్డిష్యోరుబాజువ" +
- "ాన్చైనీస్జూలూఆఖినీస్అకోలిఅడాంగ్మేఅడిగాబ్జేఅఫ్రిహిలిఅగేమ్ఐనుఅక్కాడియాన్" +
- "అలియుట్దక్షిణ ఆల్టైప్రాచీన ఆగ్లంఆంగికఅరామేక్అరౌకేనియన్అరాపాహోఅరావాక్అస" +
- "ుఅస్టురియాన్అవధిబాలుచిబాలినీస్బసాబేజాబెంబాబీనాపశ్చిమ బలూచీభోజ్ పూరిబిక" +
- "ోల్బినిసిక్ సికాబ్రాజ్బోడోబురియట్బ్యుగినిస్బ్లిన్కేడ్డోకేరిబ్అట్సామ్సే" +
- "బుఆనోఛిగాచిబ్చాచాగటైచూకిస్మారిచినూక్ జార్గన్చొచ్కతావ్చిపెవ్యాన్చెరోకీచ" +
- "ేయేన్సెంట్రల్ కుర్దిష్కోప్టిక్క్రిమియన్ టర్కిష్కషుబియన్డకోటాడార్గ్వాటై" +
- "టాడెలావేర్స్లేవ్డోగ్రిబ్డింకాజార్మాడోగ్రిలోవర్ సోర్బియన్దుఆలామధ్యమ డచ్" +
- "జోలా-ఫోనయిడ్యులాఇంబుఎఫిక్ప్రాచీన ఇజిప్షియన్ఏకాజక్ఎలామైట్మధ్యమ ఆంగ్లంఎవ" +
- "ోండొఫాంగ్ఫిలిపినోఫాన్మధ్యమ ప్రెంచ్ప్రాచీన ప్రెంచ్ఉత్తర ఫ్రిసియన్తూర్పు" +
- " ఫ్రిసియన్ఫ్రియులియన్గాగాగౌజ్గాయోగ్బాయాజీజ్గిల్బర్టీస్మధ్యమ హై జర్మన్ప్ర" +
- "ాచీన హై జర్మన్గోండిగోరోంటలాగోథిక్గ్రేబోప్రాచీన గ్రీక్స్విస్ జర్మన్గుస్" +
- "సీగ్విచిన్హైడాహవాయియన్హిలి గేయినోన్హిట్టిటేమోంగ్అప్పర్ సోర్బియన్హుపాఐబ" +
- "ాన్ఐయోకోఇంగుష్లోజ్బాన్గోంబామకొమ్జ్యుడియో-పర్షియన్జ్యుడియో-అరబిక్కారా-క" +
- "ల్పాక్కాబిల్కాచిన్జ్యూకంబాకావికబార్డియన్ట్యాప్మకొండేకాబువేర్దియనుకోరోఖ" +
- "ాసిఖటోనీస్కొయరా చీన్నీకలెంజిన్కిమ్బుండుకోమి-పర్మాక్కొంకణికోస్రేయన్పెల్" +
- "లేకరచే-బల్కార్కరేలియన్కూరుఖ్శంబాలాబాఫియకుమ్యిక్కుటేనైలాడినోలాంగీలాహండా" +
- "లాంబాలేజ్ఘియన్లకొటామొంగోలోజిఉత్తర లూరీలుబా-లులువలుఇసేనోలుండాలువోలుషైలు" +
- "యియమాదురీస్మగాహిమైథిలిమకాసార్మండింగోమాసాయిమొక్షామండార్మెండేమెరుమొరిస్య" +
- "ేన్మధ్యమ ఐరిష్మక్వా-మిట్టోమెటామికమాక్మినాంగ్కాబోమంచుమణిపూరిమోహుక్మోస్స" +
- "ిముదాంగ్బహుళ భాషలుక్రీక్మిరాండిస్మార్వాడిఎర్జియామాసన్\u200cదెరానినియాప" +
- "ోలిటన్నమలో జర్మన్నెవారినియాస్నియూఇయాన్క్వాసియెనోగైప్రాచిన నోర్స్న్కోఉత" +
- "్తర సోతోన్యుర్సాంప్రదాయ న్యుఆరిన్యంవేజిన్యాన్కోలెనిఓరోజీమాఒసాజ్ఒట్టోమన" +
- "్ టర్కిష్పంగా సినాన్పహ్లావిపంపగ్నపపియమేంటోపాలుఆన్ప్రాచీన పర్షియన్ఫోనిక" +
- "న్పోహ్న్పెయన్ప్రాచీన ప్రోవెంసాల్కిచేరాజస్తానిరాపన్యుయిరారోటొంగాన్రోంబో" +
- "రోమానీఆరోమేనియన్ర్వాసండావియాకుట్సమారిటన్ అరమేక్సంబురుససక్సంటాలిసాంగుసి" +
- "సిలియన్స్కాట్స్దక్షిణ కుర్దిష్సెనాసేల్కప్కోయోరాబోరో సెన్నీప్రాచీన ఐరిష" +
- "్టాచెల్\u200cహిట్షాన్సిడామోదక్షిణ సామిలులే సామిఇనారి సామిస్కోల్ట్ సామి" +
- "సోనింకిసోగ్డియన్స్రానన్ టోనగోసెరేర్సుకుమాసుసుసుమేరియాన్కొమొరియన్కాంగో " +
- "స్వాహిలిసాంప్రదాయ సిరియాక్సిరియాక్టింనేటెసోటెరెనోటేటంటీగ్రెటివ్టోకెలావ" +
- "్క్లింగాన్లింగిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్శింషీయన్టుంబుకాటువాలుట" +
- "సావాఖ్టువినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండురూట్" +
- "వాయివోటిక్వుంజొవాలామోవారేవాషోవార్లపిరికల్మిక్సొగాయాఒయాపిస్కాంటనీస్జపోట" +
- "ెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొరొకన్ తమజియట్జునిలిపి లేదుజాజాఆధునిక " +
- "ప్రామాణిక అరబిక్ఆస్ట్రేలియన్ జర్మన్స్విస్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీ" +
- "ష్కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్లీష్అమెరికన్ ఇంగ్లీష్లాటిన్ అమెరికెన్ " +
- "స్పానిష్యూరోపియన్ స్పానిష్మెక్సికన్ స్పానిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్" +
- "రెంచ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్ పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల్డ" +
- "ావియన్సేర్బో-క్రొయేషియన్సరళీకృత చైనీస్సాంప్రదాయక చైనీస్"
-
-var teLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x002d, 0x0048, 0x0069, 0x0078, 0x0093, 0x00ab,
- 0x00bd, 0x00d2, 0x00e7, 0x00f6, 0x0114, 0x0129, 0x0147, 0x0165,
- 0x017d, 0x018f, 0x01a4, 0x01b9, 0x01ce, 0x01e9, 0x01fe, 0x0210,
- 0x0222, 0x023d, 0x0249, 0x0255, 0x027a, 0x028c, 0x029e, 0x02b0,
- 0x02c2, 0x02d4, 0x02e6, 0x02ef, 0x0301, 0x0313, 0x0331, 0x0349,
- 0x0367, 0x0379, 0x0391, 0x03a0, 0x03b8, 0x03cd, 0x03e5, 0x03fa,
- 0x0428, 0x0437, 0x0462, 0x047d, 0x048f, 0x04a4, 0x04b3, 0x04bf,
- 0x04d1, 0x04e0, 0x04f9, 0x051a, 0x052f, 0x054d, 0x056b, 0x057d,
- // Entry 40 - 7F
- 0x05a1, 0x05c2, 0x05e1, 0x05f0, 0x0609, 0x0621, 0x062a, 0x0648,
- 0x0660, 0x0681, 0x0696, 0x06ab, 0x06c6, 0x06d5, 0x06e7, 0x0702,
- 0x070e, 0x072f, 0x0741, 0x0750, 0x0765, 0x0777, 0x078f, 0x07a7,
- 0x07b3, 0x07cb, 0x07e3, 0x07f5, 0x081c, 0x082b, 0x084c, 0x085e,
- 0x086a, 0x088b, 0x08a4, 0x08bf, 0x08d4, 0x08ef, 0x08fe, 0x0919,
- 0x092b, 0x0946, 0x0955, 0x0964, 0x097c, 0x0991, 0x099d, 0x09bf,
- 0x09d1, 0x09e0, 0x09e9, 0x0a2c, 0x0a66, 0x0a8b, 0x0a9a, 0x0ab2,
- 0x0aca, 0x0ad6, 0x0ae5, 0x0af4, 0x0b09, 0x0b1b, 0x0b27, 0x0b39,
- // Entry 80 - BF
- 0x0b4b, 0x0b69, 0x0b7b, 0x0b90, 0x0b9c, 0x0bb7, 0x0bc9, 0x0bed,
- 0x0c05, 0x0c26, 0x0c35, 0x0c51, 0x0c60, 0x0c72, 0x0c8a, 0x0cae,
- 0x0cc0, 0x0cc9, 0x0cdb, 0x0cf9, 0x0d14, 0x0d26, 0x0d45, 0x0d5d,
- 0x0d75, 0x0d8d, 0x0d9f, 0x0db1, 0x0dc0, 0x0dcc, 0x0dea, 0x0e05,
- 0x0e20, 0x0e35, 0x0e4a, 0x0e59, 0x0e68, 0x0e80, 0x0e95, 0x0eb3,
- 0x0ec2, 0x0ed7, 0x0ee6, 0x0f07, 0x0f1f, 0x0f31, 0x0f43, 0x0f4f,
- 0x0f64, 0x0f76, 0x0f88, 0x0f9a, 0x0fa6, 0x0fbb, 0x0fca, 0x0fe2,
- 0x0ffd, 0x0ffd, 0x1018, 0x1027, 0x1030, 0x1051, 0x1051, 0x1066,
- // Entry C0 - FF
- 0x1066, 0x1088, 0x10ad, 0x10bc, 0x10d1, 0x10ef, 0x10ef, 0x1104,
- 0x1104, 0x1119, 0x1119, 0x1119, 0x1122, 0x1122, 0x1143, 0x1143,
- 0x114f, 0x1161, 0x1179, 0x1179, 0x1182, 0x1182, 0x1182, 0x1182,
- 0x118e, 0x119d, 0x119d, 0x11a9, 0x11a9, 0x11a9, 0x11cb, 0x11e4,
- 0x11f6, 0x1202, 0x1202, 0x1202, 0x121b, 0x121b, 0x121b, 0x122d,
- 0x122d, 0x1239, 0x1239, 0x124e, 0x126c, 0x126c, 0x127e, 0x127e,
- 0x1290, 0x12a2, 0x12a2, 0x12b7, 0x12cc, 0x12d8, 0x12ea, 0x12f9,
- 0x130b, 0x1317, 0x133f, 0x135a, 0x1378, 0x138a, 0x139c, 0x13cd,
- // Entry 100 - 13F
- 0x13e5, 0x13e5, 0x1416, 0x142e, 0x143d, 0x1455, 0x1461, 0x1479,
- 0x148b, 0x14a3, 0x14b2, 0x14c4, 0x14d6, 0x1501, 0x1501, 0x1510,
- 0x1529, 0x1545, 0x1557, 0x1557, 0x1563, 0x1572, 0x1572, 0x15a6,
- 0x15b8, 0x15cd, 0x15ef, 0x15ef, 0x1601, 0x1601, 0x1610, 0x1628,
- 0x1628, 0x1634, 0x1634, 0x1659, 0x1684, 0x1684, 0x16af, 0x16dd,
- 0x16fe, 0x1704, 0x1716, 0x1716, 0x1722, 0x1734, 0x1734, 0x1740,
- 0x1761, 0x1761, 0x178a, 0x17b9, 0x17b9, 0x17c8, 0x17e0, 0x17f2,
- 0x1804, 0x182c, 0x1851, 0x1851, 0x1851, 0x1863, 0x187b, 0x1887,
- // Entry 140 - 17F
- 0x1887, 0x189f, 0x189f, 0x18c4, 0x18dc, 0x18eb, 0x1919, 0x1919,
- 0x1925, 0x1934, 0x1934, 0x1943, 0x1955, 0x1955, 0x1955, 0x196d,
- 0x197c, 0x198b, 0x19bc, 0x19e7, 0x19e7, 0x1a09, 0x1a1b, 0x1a2d,
- 0x1a39, 0x1a45, 0x1a51, 0x1a6f, 0x1a6f, 0x1a81, 0x1a93, 0x1aba,
- 0x1aba, 0x1ac6, 0x1ac6, 0x1ad2, 0x1ae7, 0x1b09, 0x1b09, 0x1b09,
- 0x1b09, 0x1b21, 0x1b3c, 0x1b5e, 0x1b70, 0x1b8b, 0x1b9d, 0x1bbf,
- 0x1bbf, 0x1bbf, 0x1bd7, 0x1be9, 0x1bfb, 0x1c0a, 0x1c0a, 0x1c22,
- 0x1c34, 0x1c46, 0x1c55, 0x1c67, 0x1c76, 0x1c91, 0x1c91, 0x1c91,
- // Entry 180 - 1BF
- 0x1c91, 0x1ca0, 0x1ca0, 0x1caf, 0x1cbb, 0x1cd7, 0x1cd7, 0x1cf3,
- 0x1d08, 0x1d17, 0x1d23, 0x1d2f, 0x1d3e, 0x1d3e, 0x1d3e, 0x1d56,
- 0x1d56, 0x1d65, 0x1d77, 0x1d8c, 0x1da1, 0x1db3, 0x1db3, 0x1dc5,
- 0x1dd7, 0x1de6, 0x1df2, 0x1e10, 0x1e2f, 0x1e51, 0x1e5d, 0x1e72,
- 0x1e93, 0x1e9f, 0x1eb4, 0x1ec6, 0x1ed8, 0x1ed8, 0x1eed, 0x1f09,
- 0x1f1b, 0x1f36, 0x1f4e, 0x1f4e, 0x1f4e, 0x1f63, 0x1f87, 0x1f87,
- 0x1fa8, 0x1fae, 0x1fc7, 0x1fd9, 0x1feb, 0x2006, 0x2006, 0x201e,
- 0x201e, 0x202a, 0x2052, 0x2052, 0x205e, 0x207a, 0x208c, 0x20bd,
- // Entry 1C0 - 1FF
- 0x20d5, 0x20f3, 0x2102, 0x210e, 0x211d, 0x214b, 0x216a, 0x217f,
- 0x2191, 0x21ac, 0x21c1, 0x21c1, 0x21c1, 0x21c1, 0x21ef, 0x21ef,
- 0x2204, 0x2204, 0x2204, 0x2225, 0x2225, 0x225c, 0x2268, 0x2268,
- 0x2283, 0x229e, 0x22bf, 0x22bf, 0x22bf, 0x22ce, 0x22e0, 0x22e0,
- 0x22e0, 0x22e0, 0x22fe, 0x230a, 0x231c, 0x232e, 0x2359, 0x236b,
- 0x2377, 0x2389, 0x2389, 0x2389, 0x2398, 0x23b3, 0x23cb, 0x23cb,
- 0x23f6, 0x23f6, 0x2402, 0x2402, 0x2417, 0x2448, 0x246d, 0x246d,
- 0x248e, 0x249a, 0x249a, 0x24ac, 0x24ac, 0x24ac, 0x24cb, 0x24e4,
- // Entry 200 - 23F
- 0x2500, 0x2525, 0x253a, 0x2555, 0x257a, 0x258c, 0x258c, 0x258c,
- 0x259e, 0x25aa, 0x25c8, 0x25e3, 0x260b, 0x263f, 0x2657, 0x2657,
- 0x2657, 0x2666, 0x2672, 0x2684, 0x2690, 0x26a2, 0x26ae, 0x26c6,
- 0x26c6, 0x26e1, 0x26f6, 0x26f6, 0x270b, 0x2730, 0x274f, 0x274f,
- 0x274f, 0x274f, 0x2767, 0x2767, 0x277c, 0x278e, 0x27a3, 0x27be,
- 0x2805, 0x2820, 0x283b, 0x2853, 0x285f, 0x286b, 0x286b, 0x286b,
- 0x286b, 0x286b, 0x287d, 0x287d, 0x288c, 0x288c, 0x289e, 0x28aa,
- 0x28b6, 0x28d1, 0x28d1, 0x28e6, 0x28e6, 0x28f2, 0x28fb, 0x290d,
- // Entry 240 - 27F
- 0x290d, 0x290d, 0x290d, 0x2925, 0x293a, 0x295e, 0x295e, 0x2970,
- 0x29b7, 0x29c3, 0x29dc, 0x29e8, 0x2a29, 0x2a29, 0x2a60, 0x2a8c,
- 0x2ac9, 0x2afa, 0x2b2b, 0x2b5c, 0x2ba3, 0x2bd7, 0x2c0b, 0x2c0b,
- 0x2c3c, 0x2c64, 0x2c80, 0x2c98, 0x2cd8, 0x2d12, 0x2d33, 0x2d67,
- 0x2d8f, 0x2dc0,
-} // Size: 1244 bytes
-
-var thLangStr string = "" + // Size: 13735 bytes
- "อะฟาร์อับคาซอเวสตะแอฟริกานส์อาคันอัมฮาราอารากอนอาหรับอัสสัมอาวาร์ไอย์มาร" +
- "าอาเซอร์ไบจานบัชคีร์เบลารุสบัลแกเรียบิสลามาบัมบาราเบงกาลีทิเบตเบรตันบอ" +
- "สเนียกาตาลังเชเชนชามอร์โรคอร์ซิกาครีเช็กเชอร์ชสลาวิกชูวัชเวลส์เดนมาร์ก" +
- "เยอรมันธิเวหิซองคาเอเวกรีกอังกฤษเอสเปอรันโตสเปนเอสโตเนียบัสเกเปอร์เซีย" +
- "ฟูลาฮ์ฟินแลนด์ฟิจิแฟโรฝรั่งเศสฟริเซียนตะวันตกไอริชสกอตส์กาลิกกาลิเซียก" +
- "วารานีคุชราตมานซ์เฮาชาฮิบรูฮินดีฮีรีโมตูโครเอเชียเฮติฮังการีอาร์เมเนีย" +
- "เฮเรโรอินเตอร์ลิงกัวอินโดนีเชียอินเตอร์ลิงกิวอิกโบเสฉวนยิอีนูเปียกอีโด" +
- "ไอซ์แลนด์อิตาลีอินุกติตุตญี่ปุ่นชวาจอร์เจียคองโกกีกูยูกวนยามาคาซัคกรีน" +
- "แลนด์เขมรกันนาดาเกาหลีคานูรีกัศมีร์เคิร์ดโกมิคอร์นิชคีร์กีซละตินลักเซม" +
- "เบิร์กยูกันดาลิมเบิร์กลิงกาลาลาวลิทัวเนียลูบา-กาตองกาลัตเวียมาลากาซีมา" +
- "ร์แชลลิสเมารีมาซิโดเนียมาลายาลัมมองโกเลียมราฐีมาเลย์มอลตาพม่านาอูรูเอ็" +
- "นเดเบเลเหนือเนปาลดองกาดัตช์นอร์เวย์นีนอสก์นอร์เวย์บุคมอลเอ็นเดเบเลใต้น" +
- "าวาโฮเนียนจาอ็อกซิตันโอจิบวาโอโรโมโอริยาออสเซเตียปัญจาบบาลีโปแลนด์พาชต" +
- "ูโปรตุเกสควิชัวโรแมนซ์บุรุนดีโรมาเนียรัสเซียรวันดาสันสกฤตซาร์เดญาสินธุ" +
- "ซามิเหนือแซงโกสิงหลสโลวักสโลวีเนียซามัวโชนาโซมาลีแอลเบเนียเซอร์เบียสวา" +
- "ติโซโทใต้ซุนดาสวีเดนสวาฮีลีทมิฬเตลูกูทาจิกไทยติกริญญาเติร์กเมนิสถานบอต" +
- "สวานาตองกาตุรกีซิิตซองกาตาตาร์ตาฮิตีอุยกัวยูเครนอูรดูอุซเบกเวนดาเวียดน" +
- "ามโวลาพึควาโลนีโวลอฟคะห์โอซายิวโยรูบาจ้วงจีนซูลูอาเจะห์อาโคลิอาแดงมีอะ" +
- "ดืยเกอาหรับตูนิเซียแอฟริฮีลีอักเฮมไอนุอักกาดแอละแบมาอาลิวต์เกกแอลเบเนี" +
- "ยอัลไตใต้อังกฤษโบราณอังคิกาอราเมอิกอาเราคาเนียนอาเรานาอาราปาโฮอาหรับแอ" +
- "ลจีเรียอาราวักอาหรับโมร็อกโกอาหรับพื้นเมืองอียิปต์อาซูภาษามืออเมริกันอ" +
- "ัสตูเรียสโคตาวาอวธีบาลูชิบาหลีบาวาเรียบาสาบามันบาตักโทบาโคมาลาเบจาเบมบ" +
- "าเบตาวีเบนาบาฟัตพทคะบาลูจิตะวันออกโภชปุรีบิกอลบินีบันจาร์กมสิกสิกาพิศน" +
- "ุปริยะบักติยารีพัรชบราฮุยโพโฑอาโคซีบูเรียตบูกิสบูลูบลินเมดุมบาคัดโดคาร" +
- "ิบคายูกาแอตแซมเซบูคีกาชิบชาชะกะไตชูกมารีชินุกจาร์กอนช็อกทอว์ชิพิวยันเช" +
- "อโรกีเชเยนเนเคิร์ดโซรานีคอปติกกาปิซนอนตุรกีไครเมียคาซูเบียนดาโกทาดาร์ก" +
- "ินไททาเดลาแวร์สเลวีโดกริบดิงกาซาร์มาโฑครีซอร์บส์ตอนล่างดูซุนกลางดัวลาด" +
- "ัตช์กลางโจลา-ฟอนยีดิวลาดาซากาเอ็มบูอีฟิกเอมีเลียอียิปต์โบราณอีกาจุกอีล" +
- "าไมต์อังกฤษกลางยูพิกกลางอีวันโดเอกซ์เตรมาดูราฟองฟิลิปปินส์ฟินแลนด์ทอร์" +
- "เนดาเล็นฟอนฝรั่งเศสกาฌ็องฝรั่งเศสกลางฝรั่งเศสโบราณอาร์พิตาฟริเซียนเหนื" +
- "อฟริเซียนตะวันออกฟรูลีกากากาอุซจีนกานกาโยกบายาดารีโซโรอัสเตอร์กีซกิลเบ" +
- "อร์ตกิลากีเยอรมันสูงกลางเยอรมันสูงโบราณกอนกานีของกัวกอนดิกอรอนทาโลโกธิ" +
- "กเกรโบกรีกโบราณเยอรมันสวิสวายูฟราฟรากุซซีกวิชอินไฮดาจีนแคะฮาวายฮินดีฟิ" +
- "จิฮีลีกัยนนฮิตไตต์ม้งซอร์บส์ตอนบนจีนเซียงฮูปาอิบานอิบิบิโออีโลโกอินกุช" +
- "อินเกรียนอังกฤษคลีโอลจาเมกาโลชบันอึนกอมบามาชาเมยิว-เปอร์เซียยิว-อาหรับ" +
- "จัทการา-กาลพากกาไบลกะฉิ่นคจูคัมบากวีคาร์บาเดียคาเนมบูทีแยปมาคอนเดคาบูเ" +
- "วอร์เดียนูเกินยางโคโรเคนก่างกาสีโคตันโคย์ราชีนีโควาร์เคอร์มานิกิคาโกคา" +
- "เลนจินคิมบุนดูโคมิ-เปียร์เมียคกอนกานีคูสไรกาแปลคาราไช-บัลคาร์คริโอกินา" +
- "รายอาแกรเลียนกุรุขชัมบาลาบาเฟียโคโลญคูมืยค์คูเทไนลาดิโนแลนจีลาฮ์นดาแลม" +
- "บาเลซเกียนลิงกัวฟรังกาโนวาลิกูเรียลิโวเนียลาโกตาลอมบาร์ดมองโกโลซิลูรีเ" +
- "หนือลัตเกลลูบา-ลูลัวลุยเซโนลันดาลัวลูไชลูเยียจีนคลาสสิกแลซมาดูรามาฟามค" +
- "หีไมถิลีมากาซาร์มันดิงกามาไซมาบามอคชามานดาร์เมนเดเมรูมอริสเยนไอริชกลาง" +
- "มากัววา-มีทโทเมตามิกแมกมีนังกาเบาแมนจูมณีปุระโมฮอว์กโมซีมารีตะวันตกมัน" +
- "ดังหลายภาษาครีกมีรันดามารวาฑีเม็นตาไวมยีนเอียร์ซยามาซันดารานีจีนมินหนา" +
- "นนาโปลีนามาเยอรมันต่ำ - แซกซอนต่ำเนวาร์นีอัสนีอูอ๋าวนากากวาซิโอจีมบูนโ" +
- "นไกนอร์สโบราณโนเวียลเอ็นโกโซโทเหนือเนือร์เนวาร์ดั้งเดิมเนียมเวซีเนียนโ" +
- "กเลนิโอโรนซิมาโอซากีตุรกีออตโตมันปางาซีนันปะห์ลาวีปัมปางาปาเปียเมนโตปา" +
- "เลาปิการ์เยอรมันเพนซิลเวเนียเพลาท์ดิชเปอร์เซียโบราณเยอรมันพาลาทิเนตฟิน" +
- "ิเชียพีดมอนต์พอนติกพอห์นเพปรัสเซียโปรวองซาลโบราณกีเชควิชัวไฮแลนด์ชิมโบ" +
- "ราโซราชสถานราปานูราโรทองกาโรมัณโญริฟฟิอันรอมโบโรมานีโรทูมันรูซินโรเวีย" +
- "นาอาโรมาเนียนรวาซันดาเวซาฮาอราเมอิกซามาเรียแซมบูรูซาซักสันตาลีเสาราษฏร" +
- "์กัมเบแซงกูซิซิลีสกอตส์ซาร์ดิเนียซาสซารีเคอร์ดิชใต้เซนิกาเซนาเซรีเซลคุ" +
- "ปโคย์ราโบโรเซนนีไอริชโบราณซาโมจิเตียนทาเชลีห์ทไทใหญ่อาหรับ-ชาดซิดาโมไซ" +
- "ลีเซียตอนล่างเซลายาร์ซามิใต้ซามิลูเลซามิอีนารีซามิสคอลต์โซนีนเกซอกดีนซ" +
- "ูรินาเมเซแรร์ซาโฮฟรีเซียนซัทเธอร์แลนด์ซูคูมาซูซูซูเมอโคเมอเรียนสวาฮีลี" +
- "-คองโกซีเรียแบบดั้งเดิมซีเรียไซลีเซียตูลูทิมเนเตโซเทเรโนเตตุมตีเกรทิฟโตเ" +
- "กเลาแซคเซอร์คลิงกอนทลิงกิตทาลิชทามาเชกไนอะซาตองกาท็อกพิซินตูโรโยทาโรโก" +
- "ซาโคเนียซิมชีแอนตัตมุสลิมทุมบูกาตูวาลูตัสซาวัคตูวาทามาไซต์แอตลาสกลางอุ" +
- "ดมูร์ตยูการิตอุมบุนดูรูทไวเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟรานโกเนียโวทิก" +
- "โวโรวุนจูวัลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค์เมเกรเลียโซก" +
- "าเย้ายัปแยงเบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแลนด์เซนากาทาม" +
- "าไซต์โมร็อกโกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานสมัยใหม่เยอรมั" +
- "น - ออสเตรียเยอรมันสูง (สวิส)อังกฤษ - ออสเตรเลียอังกฤษ - แคนาดาอังกฤษ " +
- "- สหราชอาณาจักรอังกฤษ - อเมริกันสเปน - ละตินอเมริกาสเปน - ยุโรปสเปน - เม" +
- "็กซิโกฝรั่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรตุเกส - บราซิล" +
- "โปรตุเกส - ยุโรปมอลโดวาเซอร์โบ-โครเอเชียจีนตัวย่อจีนตัวเต็ม"
-
-var thLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0024, 0x0036, 0x0054, 0x0063, 0x0078, 0x008d,
- 0x009f, 0x00b1, 0x00c3, 0x00db, 0x00ff, 0x0114, 0x0129, 0x0144,
- 0x0159, 0x016e, 0x0183, 0x0192, 0x01a4, 0x01b9, 0x01ce, 0x01dd,
- 0x01f5, 0x020d, 0x0216, 0x0222, 0x0246, 0x0255, 0x0264, 0x027c,
- 0x0291, 0x02a3, 0x02b2, 0x02be, 0x02ca, 0x02dc, 0x02fd, 0x0309,
- 0x0324, 0x0333, 0x034e, 0x0360, 0x0378, 0x0384, 0x0390, 0x03a8,
- 0x03d5, 0x03e4, 0x0405, 0x041d, 0x0432, 0x0444, 0x0453, 0x0462,
- 0x0471, 0x0480, 0x0498, 0x04b3, 0x04bf, 0x04d4, 0x04f2, 0x0504,
- // Entry 40 - 7F
- 0x052e, 0x054f, 0x0579, 0x0588, 0x059d, 0x05b8, 0x05c4, 0x05df,
- 0x05f1, 0x060f, 0x0624, 0x062d, 0x0645, 0x0654, 0x0666, 0x067b,
- 0x068a, 0x06a5, 0x06b1, 0x06c6, 0x06d8, 0x06ea, 0x06ff, 0x0711,
- 0x071d, 0x0732, 0x0747, 0x0756, 0x077a, 0x078f, 0x07aa, 0x07bf,
- 0x07c8, 0x07e3, 0x0805, 0x081a, 0x0832, 0x0850, 0x085f, 0x087d,
- 0x0898, 0x08b3, 0x08c2, 0x08d4, 0x08e3, 0x08ef, 0x0901, 0x092e,
- 0x093d, 0x094c, 0x095b, 0x0988, 0x09b2, 0x09d9, 0x09eb, 0x0a00,
- 0x0a1b, 0x0a30, 0x0a42, 0x0a54, 0x0a6f, 0x0a81, 0x0a8d, 0x0aa2,
- // Entry 80 - BF
- 0x0ab1, 0x0ac9, 0x0adb, 0x0af0, 0x0b05, 0x0b1d, 0x0b32, 0x0b44,
- 0x0b59, 0x0b71, 0x0b80, 0x0b9b, 0x0baa, 0x0bb9, 0x0bcb, 0x0be6,
- 0x0bf5, 0x0c01, 0x0c13, 0x0c2e, 0x0c49, 0x0c58, 0x0c6d, 0x0c7c,
- 0x0c8e, 0x0ca3, 0x0caf, 0x0cc1, 0x0cd0, 0x0cd9, 0x0cf1, 0x0d1b,
- 0x0d33, 0x0d42, 0x0d51, 0x0d6c, 0x0d7e, 0x0d90, 0x0da2, 0x0db4,
- 0x0dc3, 0x0dd5, 0x0de4, 0x0dfc, 0x0e11, 0x0e23, 0x0e32, 0x0e4a,
- 0x0e53, 0x0e65, 0x0e71, 0x0e7a, 0x0e86, 0x0e9b, 0x0ead, 0x0ec2,
- 0x0ed7, 0x0f01, 0x0f1c, 0x0f2e, 0x0f3a, 0x0f4c, 0x0f64, 0x0f79,
- // Entry C0 - FF
- 0x0f9d, 0x0fb5, 0x0fd6, 0x0feb, 0x1003, 0x1027, 0x103c, 0x1054,
- 0x1081, 0x1096, 0x10c0, 0x1102, 0x110e, 0x113b, 0x1159, 0x116b,
- 0x1177, 0x1189, 0x1198, 0x11b0, 0x11bc, 0x11cb, 0x11e6, 0x11f8,
- 0x1204, 0x1213, 0x1225, 0x1231, 0x1240, 0x124c, 0x1276, 0x128b,
- 0x129a, 0x12a6, 0x12bb, 0x12c1, 0x12d6, 0x12f4, 0x130f, 0x131b,
- 0x132d, 0x1339, 0x134b, 0x1360, 0x136f, 0x137b, 0x1387, 0x139c,
- 0x13ab, 0x13ba, 0x13cc, 0x13de, 0x13ea, 0x13f6, 0x1405, 0x1417,
- 0x1420, 0x142c, 0x1450, 0x1468, 0x1480, 0x1495, 0x14aa, 0x14ce,
- // Entry 100 - 13F
- 0x14e0, 0x14f8, 0x151c, 0x1537, 0x1549, 0x155e, 0x156a, 0x1582,
- 0x1591, 0x15a3, 0x15b2, 0x15c4, 0x15d3, 0x15fd, 0x1618, 0x1627,
- 0x1642, 0x165e, 0x166d, 0x167f, 0x1691, 0x16a0, 0x16b8, 0x16dc,
- 0x16f1, 0x1709, 0x1727, 0x1742, 0x1757, 0x1781, 0x178a, 0x17a8,
- 0x17e4, 0x17ed, 0x1817, 0x183b, 0x1862, 0x187a, 0x18a1, 0x18d1,
- 0x18e0, 0x18e6, 0x18fb, 0x190d, 0x1919, 0x1928, 0x1958, 0x1961,
- 0x197c, 0x198e, 0x19b8, 0x19e5, 0x1a0c, 0x1a1b, 0x1a36, 0x1a45,
- 0x1a54, 0x1a6f, 0x1a90, 0x1a9c, 0x1aae, 0x1abd, 0x1ad2, 0x1ade,
- // Entry 140 - 17F
- 0x1af0, 0x1aff, 0x1b1a, 0x1b35, 0x1b4a, 0x1b53, 0x1b77, 0x1b8f,
- 0x1b9b, 0x1baa, 0x1bc2, 0x1bd4, 0x1be6, 0x1c01, 0x1c37, 0x1c49,
- 0x1c61, 0x1c73, 0x1c98, 0x1cb4, 0x1cbd, 0x1cdc, 0x1ceb, 0x1cfd,
- 0x1d06, 0x1d15, 0x1d1e, 0x1d3c, 0x1d51, 0x1d60, 0x1d75, 0x1da2,
- 0x1db7, 0x1dc3, 0x1dd8, 0x1de4, 0x1df3, 0x1e11, 0x1e23, 0x1e44,
- 0x1e50, 0x1e68, 0x1e80, 0x1eae, 0x1ec3, 0x1ed2, 0x1ee1, 0x1f09,
- 0x1f18, 0x1f33, 0x1f4b, 0x1f5a, 0x1f6f, 0x1f81, 0x1f90, 0x1fa5,
- 0x1fb7, 0x1fc9, 0x1fd8, 0x1fed, 0x1ffc, 0x2014, 0x2044, 0x205c,
- // Entry 180 - 1BF
- 0x2074, 0x2086, 0x209e, 0x20ad, 0x20b9, 0x20d4, 0x20e6, 0x2102,
- 0x2117, 0x2126, 0x212f, 0x213b, 0x214d, 0x216b, 0x2174, 0x2186,
- 0x2192, 0x219e, 0x21b0, 0x21c8, 0x21e0, 0x21ec, 0x21f8, 0x2207,
- 0x221c, 0x222b, 0x2237, 0x224f, 0x226a, 0x228f, 0x229b, 0x22ad,
- 0x22cb, 0x22da, 0x22ef, 0x2304, 0x2310, 0x2331, 0x2343, 0x235b,
- 0x2367, 0x237c, 0x2391, 0x23a9, 0x23b5, 0x23d0, 0x23f1, 0x240f,
- 0x2421, 0x242d, 0x2469, 0x247b, 0x248a, 0x2496, 0x24ae, 0x24c3,
- 0x24d5, 0x24e1, 0x24ff, 0x2514, 0x2526, 0x2541, 0x2553, 0x257d,
- // Entry 1C0 - 1FF
- 0x2598, 0x25b3, 0x25c5, 0x25d4, 0x25e6, 0x260d, 0x2628, 0x2640,
- 0x2655, 0x2676, 0x2685, 0x2697, 0x26d0, 0x26eb, 0x2715, 0x2745,
- 0x275d, 0x2775, 0x2787, 0x279c, 0x27b4, 0x27de, 0x27ea, 0x282c,
- 0x2841, 0x2853, 0x286e, 0x2883, 0x289b, 0x28aa, 0x28bc, 0x28d1,
- 0x28e0, 0x28f8, 0x2919, 0x2922, 0x2937, 0x2943, 0x2973, 0x2988,
- 0x2997, 0x29ac, 0x29c7, 0x29d6, 0x29e5, 0x29f7, 0x2a09, 0x2a3c,
- 0x2a5d, 0x2a6f, 0x2a7b, 0x2a87, 0x2a99, 0x2ac6, 0x2ae4, 0x2b05,
- 0x2b20, 0x2b32, 0x2b4e, 0x2b60, 0x2b8d, 0x2ba5, 0x2bba, 0x2bd2,
- // Entry 200 - 23F
- 0x2bf0, 0x2c0e, 0x2c23, 0x2c35, 0x2c4d, 0x2c5f, 0x2c6b, 0x2caa,
- 0x2cbc, 0x2cc8, 0x2cd7, 0x2cf5, 0x2d1a, 0x2d4d, 0x2d5f, 0x2d77,
- 0x2d83, 0x2d92, 0x2d9e, 0x2db0, 0x2dbf, 0x2dce, 0x2dd7, 0x2dec,
- 0x2e04, 0x2e19, 0x2e2e, 0x2e3d, 0x2e52, 0x2e73, 0x2e8e, 0x2ea0,
- 0x2eb2, 0x2eca, 0x2ee2, 0x2efd, 0x2f12, 0x2f24, 0x2f3c, 0x2f48,
- 0x2f7e, 0x2f96, 0x2fab, 0x2fc3, 0x2fcc, 0x2fd2, 0x2fe7, 0x2ff6,
- 0x301d, 0x3045, 0x3054, 0x3060, 0x306f, 0x3087, 0x3099, 0x30ab,
- 0x30b7, 0x30d8, 0x30ea, 0x3102, 0x311d, 0x3129, 0x3135, 0x313e,
- // Entry 240 - 27F
- 0x3150, 0x315f, 0x3177, 0x318f, 0x31a4, 0x31c8, 0x31dd, 0x31ef,
- 0x3234, 0x3240, 0x326d, 0x3279, 0x32b8, 0x32b8, 0x32e8, 0x3315,
- 0x3348, 0x336f, 0x33ab, 0x33d8, 0x340b, 0x3429, 0x3450, 0x3450,
- 0x347d, 0x34a4, 0x34bf, 0x34d1, 0x34fe, 0x3528, 0x353d, 0x356e,
- 0x3589, 0x35a7,
-} // Size: 1244 bytes
-
-var trLangStr string = "" + // Size: 5557 bytes
- "AfarAbhazcaAvestçeAfrikaancaAkanAmharcaAragoncaArapçaAssamcaAvar DiliAym" +
- "araAzericeBaşkırtçaBeyaz RusçaBulgarcaBislamaBambaraBengalceTibetçeBreto" +
- "ncaBoşnakçaKatalancaÇeçenceChamorroKorsikacaCreeÇekçeKilise SlavcasıÇuva" +
- "şçaGalceDancaAlmancaDivehiButan DiliEweYunancaİngilizceEsperantoİspanyo" +
- "lcaEstoncaBaskçaFarsçaFulahFinceFiji DiliFaroe DiliFransızcaBatı Frizces" +
- "iİrlandacaİskoç Gal DiliGaliçyacaGuarani DiliGüceratçaManksHausaİbranice" +
- "HintçeHiri MotuHırvatçaHaiti DiliMacarcaErmeniceHereroInterlinguaEndonez" +
- "ceInterlingueİbo DiliSichuan YiInupiakIdoİzlandacaİtalyancaInuktitutJapo" +
- "ncaCava DiliGürcüceKongoKikuyuKuanyamaKazakçaGrönland DiliKmerceKannadaK" +
- "oreceKanuriKeşmirceKürtçeKomiKernevekçeKırgızcaLatinceLüksemburgcaGandaL" +
- "imburgcaLingalaLaocaLitvancaLuba-KatangaLetoncaMalgaşçaMarshall Adaları " +
- "DiliMaori DiliMakedoncaMalayalamMoğolcaMarathiMalaycaMaltacaBurmacaNauru" +
- " DiliKuzey NdebeleNepalceNdongaHollandacaNorveççe NynorskNorveççe Bokmål" +
- "Güney NdebeleNavaho DiliNyanjaOccitanOjibva DiliOromoOriya DiliOsetçePen" +
- "capçaPaliLehçePeştucaPortekizceKeçuvacaRomanşçaKirundiRomenceRusçaKinyar" +
- "wandaSanskritçeSardunya DiliSindhiKuzey SamiSangoSeylancaSlovakçaSlovenc" +
- "eSamoa DiliShonaSomaliceArnavutçaSırpçaSisvatiGüney SothoSunda Diliİsveç" +
- "çeSvahiliTamilceTelugu DiliTacikçeTaycaTigrinyaTürkmenceSetsvanaTongaca" +
- "TürkçeTsongaTatarcaTahiti DiliUygurcaUkraynacaUrducaÖzbekçeVendaVietnamc" +
- "aVolapükValoncaVolofçaZosaYidişYorubacaZhuangÇinceZulucaAchineseAcoliAda" +
- "ngmeAdigeceTunus ArapçasıAfrihiliAghemAyni DiliAkad DiliAlabamacaAleutGh" +
- "eg ArnavutçasıGüney AltaycaEski İngilizceAngikaAramiceAraukanya DiliArao" +
- "naArapaho DiliCezayir ArapçasıArawak DiliFas ArapçasıMısır ArapçasıAsuAm" +
- "erikan İşaret DiliAsturyascaKotavaAwadhiBaluchiBali DiliBavyera DiliBasa" +
- " DiliBamunBatak TobaGhomalaBeja DiliBembaBetawiBenaBafutBadagaBatı Baloc" +
- "hiArayaniceBikolBiniBanjar DiliKomSiksikaBishnupriyaBahtiyariBrajBrohice" +
- "BodoAkooseBuryatBugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoKigacaCh" +
- "ibchaÇağatay DiliChuukeseMariChinook JargonChoctawChipewyanÇerokiceŞayen" +
- " DiliOrta KürtçeKıpticeCapiznonKırım TürkçesiKashubianDakotaDarginceTait" +
- "aDelawareSlaveyDogribDinkaZarmaDogriAşağı SorbçaOrta KadazanDualaOrtaçağ" +
- " FelemenkçesiJola-FonyiDyulaDazagaEmbuEfikEmilia DiliEski Mısır DiliEkaj" +
- "ukElamOrtaçağ İngilizcesiMerkezi YupikçeEwondoEkstremadura DiliFangFilip" +
- "inceTornedalin FincesiFonCajun FransızcasıOrtaçağ FransızcasıEski Fransı" +
- "zcaArpitancaKuzey FrizceDoğu FrizcesiFriulianGaGagavuzcaGan ÇincesiGayoG" +
- "bayaZerdüşt DaricesiGeezKiribati DiliGilaniceOrtaçağ Yüksek AlmancasıEsk" +
- "i Yüksek AlmancaGoa KonkanicesiGondiGorontaloGotçaGreboAntik Yunancaİsvi" +
- "çre AlmancasıWayuuFrafraGusiiGwichʼinHaidaHakka ÇincesiHawaii DiliFiji " +
- "HintçesiHiligaynonHititçeHmongYukarı SorbçaXiang ÇincesiHupaIbanIbibioIl" +
- "okoİnguşçaİngriya DiliJamaika Patois DiliLojbanNgombaMachameYahudi Farsç" +
- "asıYahudi ArapçasıYutland DiliKarakalpakçaKabiliyeceKaçinJjuKambaKawiKab" +
- "ardeyceKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiHotancaKoyr" +
- "a ChiiniÇitral DiliKırmanççaKakoKalenjinKimbunduKomi-PermyakKonkaniKosra" +
- "eanKpelleKaraçay-BalkarcaKrioKinaray-aKarelyacaKurukhShambalaBafiaKöln D" +
- "iyalektiKumukçaKutenaiLadinoLangiLahndaLambaLezgiceLingua Franca NovaLig" +
- "urcaLivoncaLakotacaLombardçaMongoLoziKuzey LuriLatgalianLuba-LuluaLuisen" +
- "oLundaLuoLushaiLuyiaEdebi ÇinceLazcaMadura DiliMafaMagahiMaithiliMakasar" +
- "MandingoMasaiMabaMokşa DiliMandarMendeMeruMorisyenOrtaçağ İrlandacasıMak" +
- "huwa-MeettoMeta’MicmacMinangkabauMançurya DiliManipuriMohavk DiliMossiOv" +
- "a ÇirmişçesiMundangBirden Fazla DilCreekMiranda DiliMarvariMentawaiMyene" +
- "ErzyaMazenderancaMin Nan ÇincesiNapoliceNamaAşağı AlmancaNevariNiasNiuea" +
- "nAo NagaKwasioNgiemboonNogaycaEski NorseNovialN’KoKuzey SothoNuerKlasik " +
- "NevariNyamveziNyankoleNyoroNzimaOsageOsmanlı TürkçesiPangasinanPehlevi D" +
- "iliPampangaPapiamentoPalau DiliPicard DiliPensilvanya AlmancasıPlautdiet" +
- "schEski FarsçaPalatin AlmancasıFenike DiliPiyemonteceKuzeybatı KafkasyaP" +
- "ohnpeianPrusyacaEski ProvensalKiçeceChimborazo Highland QuichuaRajasthan" +
- "iRapanuiRarotonganRomanyolcaRif BerbericesiRomboRomancaRotumanRusinceRov" +
- "ianaUlahçaRwaSandaveYakutçaSamarit AramcasıSamburuSasakSantaliSaurashtra" +
- "NgambaySanguSicilyacaScotsSassari SarducaGüney KürtçesiSenecaSenaSeriSel" +
- "kupKoyraboro SenniEski İrlandacaSamogitçeTaşelhitShan DiliÇad ArapçasıSi" +
- "damoAşağı SilezyacaSelayarGüney SamiLule SamiInari SamiSkolt SamiSoninke" +
- "Sogdiana DiliSranan TongoSererSahoSaterland FrizcesiSukumaSusuSümerceKom" +
- "orcaKongo SvahiliKlasik SüryaniceSüryaniceSilezyacaTulucaTimneTesoTereno" +
- "TetumTigreTivTokelauSahurcaKlingoncaTlingitTalışçaTamaşekNyasa TongaTok " +
- "PisinTuroyoTarokoTsakoncaTsimshianTatçaTumbukaTuvaluTasawaqTuvacaOrta Fa" +
- "s TamazigtiUdmurtçaUgarit DiliUmbunduKökenVaiVenedikçeVepsBatı FlamancaM" +
- "ain Frankonya DiliVoticVõroVunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiK" +
- "almıkçaMegrelceSogaYaoYapçaYangbenYembaNheengatuKantoncaZapotek DiliBlis" +
- " SembolleriZelandacaZenagaStandart Berberi Dili TamazightZuniDilbilim iç" +
- "eriği yokZazacaModern Standart ArapçaGüney AzericeAvusturya Almancasıİsv" +
- "içre Yüksek AlmancasıAvustralya İngilizcesiKanada İngilizcesiİngiliz İng" +
- "ilizcesiAmerikan İngilizcesiLatin Amerika İspanyolcasıAvrupa İspanyolcas" +
- "ıMeksika İspanyolcasıKanada Fransızcasıİsviçre FransızcasıAşağı Saksonc" +
- "aFlamancaBrezilya PortekizcesiAvrupa PortekizcesiMoldovacaSırp-Hırvat Di" +
- "liBasitleştirilmiş ÇinceGeleneksel Çince"
-
-var trLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0004, 0x000b, 0x0013, 0x001d, 0x0021, 0x0028, 0x0030,
- 0x0037, 0x003e, 0x0047, 0x004d, 0x0054, 0x0060, 0x006c, 0x0074,
- 0x007b, 0x0082, 0x008a, 0x0092, 0x009a, 0x00a4, 0x00ad, 0x00b6,
- 0x00be, 0x00c7, 0x00cb, 0x00d2, 0x00e2, 0x00ec, 0x00f1, 0x00f6,
- 0x00fd, 0x0103, 0x010d, 0x0110, 0x0117, 0x0121, 0x012a, 0x0135,
- 0x013c, 0x0143, 0x014a, 0x014f, 0x0154, 0x015d, 0x0167, 0x0171,
- 0x017f, 0x0189, 0x0199, 0x01a3, 0x01af, 0x01ba, 0x01bf, 0x01c4,
- 0x01cd, 0x01d4, 0x01dd, 0x01e7, 0x01f1, 0x01f8, 0x0200, 0x0206,
- // Entry 40 - 7F
- 0x0211, 0x021a, 0x0225, 0x022e, 0x0238, 0x023f, 0x0242, 0x024c,
- 0x0256, 0x025f, 0x0266, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
- 0x0293, 0x02a1, 0x02a7, 0x02ae, 0x02b4, 0x02ba, 0x02c3, 0x02cb,
- 0x02cf, 0x02da, 0x02e4, 0x02eb, 0x02f8, 0x02fd, 0x0306, 0x030d,
- 0x0312, 0x031a, 0x0326, 0x032d, 0x0337, 0x034d, 0x0357, 0x0360,
- 0x0369, 0x0371, 0x0378, 0x037f, 0x0386, 0x038d, 0x0397, 0x03a4,
- 0x03ab, 0x03b1, 0x03bb, 0x03cd, 0x03df, 0x03ed, 0x03f8, 0x03fe,
- 0x0405, 0x0410, 0x0415, 0x041f, 0x0426, 0x042f, 0x0433, 0x0439,
- // Entry 80 - BF
- 0x0441, 0x044b, 0x0454, 0x045e, 0x0465, 0x046c, 0x0472, 0x047d,
- 0x0488, 0x0495, 0x049b, 0x04a5, 0x04aa, 0x04b2, 0x04bb, 0x04c3,
- 0x04cd, 0x04d2, 0x04da, 0x04e4, 0x04ec, 0x04f3, 0x04ff, 0x0509,
- 0x0513, 0x051a, 0x0521, 0x052c, 0x0534, 0x0539, 0x0541, 0x054b,
- 0x0553, 0x055a, 0x0562, 0x0568, 0x056f, 0x057a, 0x0581, 0x058a,
- 0x0590, 0x0599, 0x059e, 0x05a7, 0x05af, 0x05b6, 0x05be, 0x05c2,
- 0x05c8, 0x05d0, 0x05d6, 0x05dc, 0x05e2, 0x05ea, 0x05ef, 0x05f6,
- 0x05fd, 0x060d, 0x0615, 0x061a, 0x0623, 0x062c, 0x0635, 0x063a,
- // Entry C0 - FF
- 0x064c, 0x065a, 0x0669, 0x066f, 0x0676, 0x0684, 0x068a, 0x0696,
- 0x06a8, 0x06b3, 0x06c1, 0x06d3, 0x06d6, 0x06ec, 0x06f6, 0x06fc,
- 0x0702, 0x0709, 0x0712, 0x071e, 0x0727, 0x072c, 0x0736, 0x073d,
- 0x0746, 0x074b, 0x0751, 0x0755, 0x075a, 0x0760, 0x076d, 0x0776,
- 0x077b, 0x077f, 0x078a, 0x078d, 0x0794, 0x079f, 0x07a8, 0x07ac,
- 0x07b3, 0x07b7, 0x07bd, 0x07c3, 0x07c8, 0x07cc, 0x07d0, 0x07d7,
- 0x07dc, 0x07e1, 0x07e7, 0x07ec, 0x07f3, 0x07f9, 0x0800, 0x080e,
- 0x0816, 0x081a, 0x0828, 0x082f, 0x0838, 0x0841, 0x084c, 0x0859,
- // Entry 100 - 13F
- 0x0861, 0x0869, 0x087b, 0x0884, 0x088a, 0x0892, 0x0897, 0x089f,
- 0x08a5, 0x08ab, 0x08b0, 0x08b5, 0x08ba, 0x08ca, 0x08d6, 0x08db,
- 0x08f2, 0x08fc, 0x0901, 0x0907, 0x090b, 0x090f, 0x091a, 0x092b,
- 0x0931, 0x0935, 0x094b, 0x095b, 0x0961, 0x0972, 0x0976, 0x097f,
- 0x0991, 0x0994, 0x09a7, 0x09be, 0x09cd, 0x09d6, 0x09e2, 0x09f0,
- 0x09f8, 0x09fa, 0x0a03, 0x0a0f, 0x0a13, 0x0a18, 0x0a2a, 0x0a2e,
- 0x0a3b, 0x0a43, 0x0a5f, 0x0a73, 0x0a82, 0x0a87, 0x0a90, 0x0a96,
- 0x0a9b, 0x0aa8, 0x0abc, 0x0ac1, 0x0ac7, 0x0acc, 0x0ad5, 0x0ada,
- // Entry 140 - 17F
- 0x0ae8, 0x0af3, 0x0b01, 0x0b0b, 0x0b13, 0x0b18, 0x0b27, 0x0b35,
- 0x0b39, 0x0b3d, 0x0b43, 0x0b48, 0x0b52, 0x0b5f, 0x0b72, 0x0b78,
- 0x0b7e, 0x0b85, 0x0b96, 0x0ba7, 0x0bb3, 0x0bc0, 0x0bca, 0x0bd0,
- 0x0bd3, 0x0bd8, 0x0bdc, 0x0be6, 0x0bed, 0x0bf1, 0x0bf8, 0x0c04,
- 0x0c0b, 0x0c0f, 0x0c17, 0x0c1c, 0x0c23, 0x0c2f, 0x0c3b, 0x0c47,
- 0x0c4b, 0x0c53, 0x0c5b, 0x0c67, 0x0c6e, 0x0c76, 0x0c7c, 0x0c8d,
- 0x0c91, 0x0c9a, 0x0ca3, 0x0ca9, 0x0cb1, 0x0cb6, 0x0cc5, 0x0ccd,
- 0x0cd4, 0x0cda, 0x0cdf, 0x0ce5, 0x0cea, 0x0cf1, 0x0d03, 0x0d0a,
- // Entry 180 - 1BF
- 0x0d11, 0x0d19, 0x0d23, 0x0d28, 0x0d2c, 0x0d36, 0x0d3f, 0x0d49,
- 0x0d50, 0x0d55, 0x0d58, 0x0d5e, 0x0d63, 0x0d6f, 0x0d74, 0x0d7f,
- 0x0d83, 0x0d89, 0x0d91, 0x0d98, 0x0da0, 0x0da5, 0x0da9, 0x0db4,
- 0x0dba, 0x0dbf, 0x0dc3, 0x0dcb, 0x0de2, 0x0df0, 0x0df7, 0x0dfd,
- 0x0e08, 0x0e16, 0x0e1e, 0x0e29, 0x0e2e, 0x0e3f, 0x0e46, 0x0e56,
- 0x0e5b, 0x0e67, 0x0e6e, 0x0e76, 0x0e7b, 0x0e80, 0x0e8c, 0x0e9c,
- 0x0ea4, 0x0ea8, 0x0eb8, 0x0ebe, 0x0ec2, 0x0ec8, 0x0ecf, 0x0ed5,
- 0x0ede, 0x0ee5, 0x0eef, 0x0ef5, 0x0efb, 0x0f06, 0x0f0a, 0x0f17,
- // Entry 1C0 - 1FF
- 0x0f1f, 0x0f27, 0x0f2c, 0x0f31, 0x0f36, 0x0f49, 0x0f53, 0x0f5f,
- 0x0f67, 0x0f71, 0x0f7b, 0x0f86, 0x0f9c, 0x0fa8, 0x0fb4, 0x0fc6,
- 0x0fd1, 0x0fdc, 0x0fef, 0x0ff8, 0x1000, 0x100e, 0x1015, 0x1030,
- 0x103a, 0x1041, 0x104b, 0x1055, 0x1064, 0x1069, 0x1070, 0x1077,
- 0x107e, 0x1085, 0x108c, 0x108f, 0x1096, 0x109e, 0x10af, 0x10b6,
- 0x10bb, 0x10c2, 0x10cc, 0x10d3, 0x10d8, 0x10e1, 0x10e6, 0x10f5,
- 0x1106, 0x110c, 0x1110, 0x1114, 0x111a, 0x1129, 0x1138, 0x1142,
- 0x114b, 0x1154, 0x1163, 0x1169, 0x117b, 0x1182, 0x118d, 0x1196,
- // Entry 200 - 23F
- 0x11a0, 0x11aa, 0x11b1, 0x11be, 0x11ca, 0x11cf, 0x11d3, 0x11e5,
- 0x11eb, 0x11ef, 0x11f7, 0x11fe, 0x120b, 0x121c, 0x1226, 0x122f,
- 0x1235, 0x123a, 0x123e, 0x1244, 0x1249, 0x124e, 0x1251, 0x1258,
- 0x125f, 0x1268, 0x126f, 0x1279, 0x1281, 0x128c, 0x1295, 0x129b,
- 0x12a1, 0x12a9, 0x12b2, 0x12b8, 0x12bf, 0x12c5, 0x12cc, 0x12d2,
- 0x12e4, 0x12ed, 0x12f8, 0x12ff, 0x1305, 0x1308, 0x1312, 0x1316,
- 0x1324, 0x1337, 0x133c, 0x1341, 0x1346, 0x134c, 0x1352, 0x1357,
- 0x135c, 0x1364, 0x136f, 0x1379, 0x1381, 0x1385, 0x1388, 0x138e,
- // Entry 240 - 27F
- 0x1395, 0x139a, 0x13a3, 0x13ab, 0x13b7, 0x13c6, 0x13cf, 0x13d5,
- 0x13f4, 0x13f8, 0x140e, 0x1414, 0x142b, 0x1439, 0x144d, 0x1469,
- 0x1480, 0x1493, 0x14a8, 0x14bd, 0x14d9, 0x14ee, 0x1504, 0x1504,
- 0x1518, 0x152f, 0x1540, 0x1548, 0x155d, 0x1570, 0x1579, 0x158b,
- 0x15a4, 0x15b5,
-} // Size: 1244 bytes
-
-var ukLangStr string = "" + // Size: 9058 bytes
- "афарськаабхазькаавестійськаафрикаансаканамхарськаарагонськаарабськаассам" +
- "ськааварськааймараазербайджанськабашкирськабілоруськаболгарськабісламаб" +
- "амбарабенгальськатибетськабретонськабоснійськакаталонськачеченськачамор" +
- "рокорсиканськакрічеськацерковнослов’янськачуваськаваллійськаданськаніме" +
- "цькадівехідзонг-кеевегрецькаанглійськаесперантоіспанськаестонськабасксь" +
- "каперськафулафінськафіджіфарерськафранцузьказахіднофризькаірландськагае" +
- "льськагалісійськагуаранігуджаратіменкськахаусаівритгіндіхірі-мотухорват" +
- "ськагаїтянськаугорськавірменськагерероінтерлінгваіндонезійськаінтерлінг" +
- "веігбосичуаньінупіакідоісландськаіталійськаінуктітутяпонськаяванськагру" +
- "зинськаконґолезькакікуйюкунамаказахськакалааллісуткхмерськаканнадакорей" +
- "ськаканурікашмірськакурдськакомікорнійськакиргизькалатинськалюксембурзь" +
- "кагандалімбургійськалінгалалаоськалитовськалуба-катангалатвійськамалага" +
- "сійськамаршалльськамаорімакедонськамалаяламмонгольськамаратхімалайськам" +
- "альтійськабірманськанаурундебелє північнанепальськандонгаголландськанюн" +
- "ошк (Норвегія)букмол (Норвегія)ндебелє південнанавахоньянджаокитаноджіб" +
- "ваоромооріяосетинськапанджабіпаліпольськапуштупортугальськакечуаретором" +
- "анськарундірумунськаросійськакіньяруандасанскритсардинськасіндхісаамськ" +
- "а північнасангосингальськасловацькасловенськасамоанськашонасомаліалбанс" +
- "ькасербськасісватісото південнасунданськашведськасуахілітамільськателуг" +
- "утаджицькатайськатигриньятуркменськатсванатонганськатурецькатсонгататар" +
- "ськатаїтянськауйгурськаукраїнськаурдуузбецькавендавʼєтнамськаволап’юква" +
- "ллонськаволофкхосаідишйорубачжуанкитайськазулуськаачехськаачоліадангмеа" +
- "дигейськаафрихіліагемайнськааккадськаалабамаалеутськапівденноалтайськад" +
- "авньоанглійськаангікаарамейськаарауканськаараонаарапахоалжирська арабсь" +
- "кааравакськаасуамериканська мова рухівастурськаавадхібалучібалійськабае" +
- "рішбасабамумбатак тобагомалабеджабембабетавібенабафутбадагасхіднобелудж" +
- "ійськабходжпурібікольськабінібанджарськакомсіксікабахтіарібраджбодоакус" +
- "бурятськабугійськабулублінмедумбакаддокарібськакайюгаатсамсебуанськакіг" +
- "ачібчачагатайськачуукськамарійськачинук жаргончокточіпев’янчерокічейєнн" +
- "курдська (сорані)коптськакримськотатарськакашубськадакотадаргінськатаіт" +
- "аделаварськаслейвдогрибськадінкаджермадогрінижньолужицькадуаласередньон" +
- "ідерландськадьола-фонідіуладазагаембуефікдавньоєгипетськаекаджукеламськ" +
- "асередньоанглійськаевондофангфіліппінськафонсередньофранцузькадавньофра" +
- "нцузькаарпітанськафризька північнафризька східнафріульськагагагаузькага" +
- "йогбайягєезгільбертськасередньоверхньонімецькадавньоверхньонімецькагонд" +
- "ігоронталоготськагребодавньогрецьканімецька (Швейцарія)гусіїкучінхайдаг" +
- "авайськахілігайнонхітітіхмонгверхньолужицькахупаібанськаібібіоілоканськ" +
- "аінгуськаложбаннгомбамачамеіудео-перськаіудео-арабськакаракалпацькакабі" +
- "льськакачінйюкамбакавікабардинськаканембутіапмакондекабувердіанукорокха" +
- "сіхотаносакськакойра чіїнікакокаленджинкімбундукомі-перм’яцькаконканіко" +
- "сраекпеллєкарачаєво-балкарськакарельськакурукхшамбалабафіаколоніанкумиц" +
- "ькакутенаїладінолангіландаламбалезгінськалакотамонголозіпівнічна лурськ" +
- "алуба-лулуалуїсеньолундалуолушейлуйямадурськамафамагадхімайтхілімакасар" +
- "ськамандінгомасаїмабамокшамандарськамендемерумаврикійська креольськасер" +
- "едньоірландськамакува-меетометамікмакмінангкабауманчжурськаманіпурімага" +
- "вкмоссімундангдекілька мовкрікмірандськамарварімиінерзямазандеранськане" +
- "аполітанськанаманижньонімецьканеварініаськаніуеао нагаквазіонгємбуннога" +
- "йськадавньонорвезьканкосото північнануерневарі класичнаньямвезіньянколе" +
- "ньоронзімаосейджосманськапангасінанськапехлевіпампангапап’яментопалауан" +
- "ськадавньоперськафінікійсько-пунічнапонапедавньопровансальськакічераджа" +
- "стханірапануїраротонгаромбоциганськаарумунськарвасандавеякутськасамарит" +
- "янська арамейськасамбурусасакськасантальськангамбайсангусицилійськашотл" +
- "андськапівденнокурдськасенекасенаселькупськакойраборо сенідавньоірландс" +
- "ькатачелітшанськачадійська арабськасідамопівденносаамськасаамська лулес" +
- "аамська інарісаамська скольтсонінкесогдійськасранан тонгосерерсахосукум" +
- "асусушумерськакоморськаконгійське суахілісирійська класичнасирійськатем" +
- "нетесотеренотетумтигретівтокелауклінгонтлінгіттамашекньяса тонгаток-піс" +
- "інтарокоцимшиантумбукатувалутасавактувинськацентральномароканська тамаз" +
- "ітудмуртськаугаритськаумбундукоріньваїводськавуньовалзерськаваламоварай" +
- "вашовалпірікалмицькасогаяояпянгбенємбакантонськасапотекськаблісса моваз" +
- "енагастандартна марокканська берберськазуньїнемає мовного вмістузазакіс" +
- "учасна стандартна арабськапівденноазербайджанськаверхньонімецька (Швейц" +
- "арія)англійська британськаіспанська (Європа)нижньосаксонськафламандська" +
- "португальська (Європа)молдавськасербсько-хорватськакитайська спрощенаки" +
- "тайська традиційна"
-
-var ukLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0020, 0x0036, 0x0048, 0x0050, 0x0062, 0x0076,
- 0x0086, 0x0098, 0x00a8, 0x00b4, 0x00d2, 0x00e6, 0x00fa, 0x010e,
- 0x011c, 0x012a, 0x0140, 0x0152, 0x0166, 0x017a, 0x0190, 0x01a2,
- 0x01b0, 0x01c8, 0x01ce, 0x01da, 0x0201, 0x0211, 0x0225, 0x0233,
- 0x0243, 0x024f, 0x025e, 0x0264, 0x0272, 0x0286, 0x0298, 0x02aa,
- 0x02bc, 0x02cc, 0x02da, 0x02e2, 0x02f0, 0x02fa, 0x030c, 0x0320,
- 0x033c, 0x0350, 0x0362, 0x0378, 0x0386, 0x0398, 0x03a8, 0x03b2,
- 0x03bc, 0x03c6, 0x03d7, 0x03eb, 0x03ff, 0x040f, 0x0423, 0x042f,
- // Entry 40 - 7F
- 0x0445, 0x045f, 0x0475, 0x047d, 0x048b, 0x0499, 0x049f, 0x04b3,
- 0x04c7, 0x04d9, 0x04e9, 0x04f9, 0x050d, 0x0523, 0x052f, 0x053b,
- 0x054d, 0x0563, 0x0575, 0x0583, 0x0595, 0x05a1, 0x05b5, 0x05c5,
- 0x05cd, 0x05e1, 0x05f3, 0x0605, 0x061f, 0x0629, 0x0643, 0x0651,
- 0x065f, 0x0671, 0x0688, 0x069c, 0x06b6, 0x06ce, 0x06d8, 0x06ee,
- 0x06fe, 0x0714, 0x0722, 0x0734, 0x074a, 0x075e, 0x0768, 0x0787,
- 0x079b, 0x07a7, 0x07bd, 0x07dc, 0x07fb, 0x081a, 0x0826, 0x0834,
- 0x0840, 0x084e, 0x0858, 0x0860, 0x0874, 0x0884, 0x088c, 0x089c,
- // Entry 80 - BF
- 0x08a6, 0x08c0, 0x08ca, 0x08e4, 0x08ee, 0x0900, 0x0912, 0x0928,
- 0x0938, 0x094c, 0x0958, 0x0979, 0x0983, 0x0999, 0x09ab, 0x09bf,
- 0x09d3, 0x09db, 0x09e7, 0x09f9, 0x0a09, 0x0a17, 0x0a30, 0x0a44,
- 0x0a54, 0x0a62, 0x0a76, 0x0a82, 0x0a94, 0x0aa2, 0x0ab2, 0x0ac8,
- 0x0ad4, 0x0ae8, 0x0af8, 0x0b04, 0x0b16, 0x0b2a, 0x0b3c, 0x0b50,
- 0x0b58, 0x0b68, 0x0b72, 0x0b88, 0x0b99, 0x0bad, 0x0bb7, 0x0bc1,
- 0x0bc9, 0x0bd5, 0x0bdf, 0x0bf1, 0x0c01, 0x0c11, 0x0c1b, 0x0c29,
- 0x0c3d, 0x0c3d, 0x0c4d, 0x0c55, 0x0c63, 0x0c75, 0x0c83, 0x0c95,
- // Entry C0 - FF
- 0x0c95, 0x0cb7, 0x0cd7, 0x0ce3, 0x0cf7, 0x0d0d, 0x0d19, 0x0d27,
- 0x0d4a, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d64, 0x0d90, 0x0da2, 0x0da2,
- 0x0dae, 0x0dba, 0x0dcc, 0x0dd8, 0x0de0, 0x0dea, 0x0dfd, 0x0e09,
- 0x0e13, 0x0e1d, 0x0e29, 0x0e31, 0x0e3b, 0x0e47, 0x0e6b, 0x0e7d,
- 0x0e91, 0x0e99, 0x0eaf, 0x0eb5, 0x0ec3, 0x0ec3, 0x0ed3, 0x0edd,
- 0x0edd, 0x0ee5, 0x0eed, 0x0eff, 0x0f11, 0x0f19, 0x0f21, 0x0f2f,
- 0x0f39, 0x0f4b, 0x0f57, 0x0f61, 0x0f75, 0x0f7d, 0x0f87, 0x0f9d,
- 0x0fad, 0x0fbf, 0x0fd6, 0x0fe0, 0x0ff1, 0x0ffd, 0x1009, 0x1028,
- // Entry 100 - 13F
- 0x1038, 0x1038, 0x105a, 0x106c, 0x1078, 0x108c, 0x1096, 0x10ac,
- 0x10b6, 0x10ca, 0x10d4, 0x10e0, 0x10ea, 0x1106, 0x1106, 0x1110,
- 0x113a, 0x114d, 0x1157, 0x1163, 0x116b, 0x1173, 0x1173, 0x1193,
- 0x11a1, 0x11b1, 0x11d5, 0x11d5, 0x11e1, 0x11e1, 0x11e9, 0x1201,
- 0x1201, 0x1207, 0x1207, 0x122b, 0x124b, 0x1261, 0x1280, 0x129b,
- 0x12af, 0x12b3, 0x12c5, 0x12c5, 0x12cd, 0x12d7, 0x12d7, 0x12df,
- 0x12f7, 0x12f7, 0x1325, 0x134f, 0x134f, 0x1359, 0x136b, 0x1379,
- 0x1383, 0x139d, 0x13c2, 0x13c2, 0x13c2, 0x13cc, 0x13d6, 0x13e0,
- // Entry 140 - 17F
- 0x13e0, 0x13f2, 0x13f2, 0x1406, 0x1412, 0x141c, 0x143a, 0x143a,
- 0x1442, 0x1452, 0x145e, 0x1472, 0x1482, 0x1482, 0x1482, 0x148e,
- 0x149a, 0x14a6, 0x14bf, 0x14da, 0x14da, 0x14f4, 0x1508, 0x1512,
- 0x1516, 0x1520, 0x1528, 0x1540, 0x154e, 0x1556, 0x1564, 0x157c,
- 0x157c, 0x1584, 0x1584, 0x158e, 0x15a8, 0x15bd, 0x15bd, 0x15bd,
- 0x15c5, 0x15d7, 0x15e7, 0x1605, 0x1613, 0x161f, 0x162b, 0x1652,
- 0x1652, 0x1652, 0x1666, 0x1672, 0x1680, 0x168a, 0x169a, 0x16aa,
- 0x16b8, 0x16c4, 0x16ce, 0x16d8, 0x16e2, 0x16f6, 0x16f6, 0x16f6,
- // Entry 180 - 1BF
- 0x16f6, 0x1702, 0x1702, 0x170c, 0x1714, 0x1733, 0x1733, 0x1746,
- 0x1756, 0x1760, 0x1766, 0x1770, 0x1778, 0x1778, 0x1778, 0x178a,
- 0x1792, 0x17a0, 0x17b0, 0x17c6, 0x17d6, 0x17e0, 0x17e8, 0x17f2,
- 0x1806, 0x1810, 0x1818, 0x1845, 0x1869, 0x1880, 0x1888, 0x1894,
- 0x18aa, 0x18c0, 0x18d0, 0x18dc, 0x18e6, 0x18e6, 0x18f4, 0x190b,
- 0x1913, 0x1927, 0x1935, 0x1935, 0x193d, 0x1945, 0x1961, 0x1961,
- 0x197d, 0x1985, 0x19a1, 0x19ad, 0x19bb, 0x19c3, 0x19d0, 0x19dc,
- 0x19ea, 0x19fc, 0x1a1a, 0x1a1a, 0x1a20, 0x1a39, 0x1a41, 0x1a5e,
- // Entry 1C0 - 1FF
- 0x1a6e, 0x1a7e, 0x1a88, 0x1a92, 0x1a9e, 0x1ab0, 0x1acc, 0x1ada,
- 0x1aea, 0x1aff, 0x1b15, 0x1b15, 0x1b15, 0x1b15, 0x1b2f, 0x1b2f,
- 0x1b54, 0x1b54, 0x1b54, 0x1b60, 0x1b60, 0x1b88, 0x1b90, 0x1b90,
- 0x1ba6, 0x1bb4, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bd0, 0x1be2, 0x1be2,
- 0x1be2, 0x1be2, 0x1bf6, 0x1bfc, 0x1c0a, 0x1c1a, 0x1c49, 0x1c57,
- 0x1c69, 0x1c7f, 0x1c7f, 0x1c8d, 0x1c97, 0x1cad, 0x1cc3, 0x1cc3,
- 0x1ce3, 0x1cef, 0x1cf7, 0x1cf7, 0x1d0d, 0x1d28, 0x1d48, 0x1d48,
- 0x1d56, 0x1d64, 0x1d87, 0x1d93, 0x1d93, 0x1d93, 0x1db3, 0x1dcc,
- // Entry 200 - 23F
- 0x1de7, 0x1e04, 0x1e12, 0x1e26, 0x1e3d, 0x1e47, 0x1e4f, 0x1e4f,
- 0x1e5b, 0x1e63, 0x1e75, 0x1e87, 0x1eaa, 0x1ecd, 0x1edf, 0x1edf,
- 0x1edf, 0x1ee9, 0x1ef1, 0x1efd, 0x1f07, 0x1f11, 0x1f17, 0x1f25,
- 0x1f25, 0x1f33, 0x1f41, 0x1f41, 0x1f4f, 0x1f64, 0x1f75, 0x1f75,
- 0x1f81, 0x1f81, 0x1f8f, 0x1f8f, 0x1f9d, 0x1fa9, 0x1fb7, 0x1fc9,
- 0x2002, 0x2016, 0x202a, 0x2038, 0x2044, 0x204a, 0x204a, 0x204a,
- 0x204a, 0x204a, 0x2058, 0x2058, 0x2062, 0x2076, 0x2082, 0x208c,
- 0x2094, 0x20a2, 0x20a2, 0x20b4, 0x20b4, 0x20bc, 0x20c0, 0x20c4,
- // Entry 240 - 27F
- 0x20d0, 0x20d8, 0x20d8, 0x20ec, 0x2102, 0x2117, 0x2117, 0x2123,
- 0x2165, 0x216f, 0x2195, 0x21a1, 0x21d5, 0x2203, 0x2203, 0x2236,
- 0x2236, 0x2236, 0x225f, 0x225f, 0x225f, 0x2280, 0x2280, 0x2280,
- 0x2280, 0x2280, 0x22a0, 0x22b6, 0x22b6, 0x22df, 0x22f3, 0x2318,
- 0x233b, 0x2362,
-} // Size: 1244 bytes
-
-var urLangStr string = "" + // Size: 3619 bytes
- "ابقازیانایفریکانزاکانامہاریعربیآسامیایماراآزربائیجانیباشکیربیلاروسیبلغار" +
- "یبمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنکوراسیکنچیکچوواشویلشڈینشجرمنڈیویہ" +
- "یژونگکھاایویونانیانگریزیایسپرانٹوہسپانویاسٹونینباسکیفارسیفینیشفجیفیروئی" +
- "زفرانسیسیمغربی فریسیئنآئیرِشسکاٹ گیلِکگالیشیائیگُارانیگجراتیمینکسہؤساعب" +
- "رانیہندیکراتیہیتیہنگیرینارمینیبین لسانیاتانڈونیثیائیاِگبوسچوان ایآئس لی" +
- "نڈکاطالویاینُکٹیٹٹجاپانیجاویجارجیکانگوکیکویوقزاخكالاليستخمیرکنّاڈاکوریا" +
- "ئیکشمیریکردشکورنشکرغیزیلاطینیلگژمبرگشگینڈالِنگَلالاؤلتھُواینینلبا-كاتان" +
- "جالیٹوینملاگاسیماؤریمقدونیائیمالایالممنگؤلیمراٹهیمالائیمالٹیبرمیشمالی د" +
- "بیلنیپالیڈچنورویجینی نینورسکنارویجین بوکملنیانجاآكسیٹاناورومواورِیااوسی" +
- "ٹکپنجابیپولستانیپشتوپُرتگالیکویچوآرومانشرونڈیرومینینروسیکینیاروانڈاسَنس" +
- "کرِتسندھیشمالی سامیساںغوسنہالاسلوواکسلووینیائیساموآنشوناصومالیالبانیصرب" +
- "یسواتیجنوبی سوتھوسنڈانیزسویڈشسواحلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹ" +
- "ونگنترکیزونگاتاتارتاہیتییوئگہریوکرینیائیاردوازبیکوینڈاویتنامیوولوفژوسای" +
- "دشیوروباچینیزولواکولیاغمماپوچےآسوبیمبابینامغربی بلوچیبوڈوچیگاچیروکیسورا" +
- "نی کردشتائتازرماذیلی سربیائیدوالاجولا فونياامبوایفِکفلیپینوگاغاغاوزسوئس" +
- " جرمنگسیہوائیاپر سربیائینگومباماشیمقبائلیکامباماكوندهكابويرديانوكويرا شي" +
- "نيكالينجينکومی پرمیاککونکنیشامبالابافيالانگیلاکوٹالوزیشمالی لریلیوبا لو" +
- "لوآلولویاماسایمیروموریسیینماخاوا-ميتومیٹاموہاکمنڈانگمزندرانیناماادنی جر" +
- "منكوايسواینکوشمالی سوتھونویرنینکولكيشیرومبورواسامبوروسانگوجنوبی کردسینا" +
- "كويرابورو سينیتشلحيتجنوبی سامیلول سامیاناری سامیسکولٹ سامیکانگو سواحلیت" +
- "یسوٹیٹمکلنگنٹوک پِسِنٹمبوکاتاساواقسینٹرل ایٹلس ٹمازائٹنامعلوم زبانوائیو" +
- "نجووارلپیریسوگااسٹینڈرڈ مراقشی تمازیقیکوئی لسانی مواد نہیںماڈرن اسٹینڈر" +
- "ڈ عربیجنوبی آزربائیجانیآسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکین" +
- "یڈین انگریزیبرطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپ" +
- "انویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پر" +
- "تگالییورپی پرتگالیمالدوواسربو-کروئیشینچینی (آسان کردہ)روایتی چینی"
-
-var urLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x002a, 0x0036, 0x0036,
- 0x003e, 0x0048, 0x0048, 0x0054, 0x006a, 0x0076, 0x0086, 0x0092,
- 0x0092, 0x009e, 0x00aa, 0x00b2, 0x00bc, 0x00c6, 0x00d4, 0x00dc,
- 0x00dc, 0x00ec, 0x00ec, 0x00f2, 0x00f2, 0x00fc, 0x0104, 0x010c,
- 0x0114, 0x0120, 0x012e, 0x0134, 0x0140, 0x014e, 0x0160, 0x016e,
- 0x017c, 0x0186, 0x0190, 0x0190, 0x019a, 0x01a0, 0x01ae, 0x01be,
- 0x01d7, 0x01e3, 0x01f6, 0x0208, 0x0216, 0x0222, 0x022c, 0x0234,
- 0x0240, 0x0248, 0x0248, 0x0252, 0x025a, 0x0268, 0x0274, 0x0274,
- // Entry 40 - 7F
- 0x0289, 0x029f, 0x029f, 0x02a9, 0x02b8, 0x02b8, 0x02b8, 0x02c9,
- 0x02d5, 0x02e7, 0x02f3, 0x02fb, 0x0305, 0x030f, 0x031b, 0x031b,
- 0x0323, 0x0333, 0x033b, 0x0347, 0x0355, 0x0355, 0x0361, 0x0369,
- 0x0369, 0x0373, 0x037f, 0x038b, 0x039b, 0x03a5, 0x03a5, 0x03b3,
- 0x03b9, 0x03cd, 0x03e2, 0x03ee, 0x03fc, 0x03fc, 0x0406, 0x0418,
- 0x0428, 0x0434, 0x0440, 0x044c, 0x0456, 0x045e, 0x045e, 0x0471,
- 0x047d, 0x047d, 0x0481, 0x04a2, 0x04bd, 0x04bd, 0x04bd, 0x04c9,
- 0x04d7, 0x04d7, 0x04e3, 0x04ef, 0x04fb, 0x0507, 0x0507, 0x0517,
- // Entry 80 - BF
- 0x051f, 0x052f, 0x053b, 0x0547, 0x0551, 0x055f, 0x0567, 0x057d,
- 0x058d, 0x058d, 0x0597, 0x05aa, 0x05b4, 0x05c0, 0x05cc, 0x05e0,
- 0x05ec, 0x05f4, 0x0600, 0x060c, 0x0614, 0x061e, 0x0633, 0x0641,
- 0x064b, 0x0657, 0x065d, 0x0667, 0x066f, 0x0679, 0x0687, 0x0693,
- 0x069d, 0x06a7, 0x06af, 0x06b9, 0x06c3, 0x06cf, 0x06db, 0x06ef,
- 0x06f7, 0x0701, 0x070b, 0x0719, 0x0719, 0x0719, 0x0723, 0x072b,
- 0x0731, 0x073d, 0x073d, 0x0745, 0x074d, 0x074d, 0x0757, 0x0757,
- 0x0757, 0x0757, 0x0757, 0x075d, 0x075d, 0x075d, 0x075d, 0x075d,
- // Entry C0 - FF
- 0x075d, 0x075d, 0x075d, 0x075d, 0x075d, 0x0769, 0x0769, 0x0769,
- 0x0769, 0x0769, 0x0769, 0x0769, 0x076f, 0x076f, 0x076f, 0x076f,
- 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f,
- 0x076f, 0x0779, 0x0779, 0x0781, 0x0781, 0x0781, 0x0796, 0x0796,
- 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796,
- 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e,
- 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07a6, 0x07a6, 0x07a6,
- 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07b2, 0x07b2, 0x07c7,
- // Entry 100 - 13F
- 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07d1, 0x07d1,
- 0x07d1, 0x07d1, 0x07d1, 0x07d9, 0x07d9, 0x07f0, 0x07f0, 0x07fa,
- 0x07fa, 0x080d, 0x080d, 0x080d, 0x0815, 0x081f, 0x081f, 0x081f,
- 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x082d,
- 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d,
- 0x082d, 0x0831, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d,
- 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d,
- 0x083d, 0x083d, 0x084e, 0x084e, 0x084e, 0x0854, 0x0854, 0x0854,
- // Entry 140 - 17F
- 0x0854, 0x085e, 0x085e, 0x085e, 0x085e, 0x085e, 0x0873, 0x0873,
- 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873,
- 0x087f, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0895, 0x0895,
- 0x0895, 0x089f, 0x089f, 0x089f, 0x089f, 0x089f, 0x08ad, 0x08c3,
- 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08d6, 0x08d6, 0x08d6,
- 0x08d6, 0x08e6, 0x08e6, 0x08fb, 0x0907, 0x0907, 0x0907, 0x0907,
- 0x0907, 0x0907, 0x0907, 0x0907, 0x0915, 0x091f, 0x091f, 0x091f,
- 0x091f, 0x091f, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929,
- // Entry 180 - 1BF
- 0x0929, 0x0935, 0x0935, 0x0935, 0x093d, 0x094e, 0x094e, 0x0963,
- 0x0963, 0x0963, 0x0967, 0x0967, 0x096f, 0x096f, 0x096f, 0x096f,
- 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x0979, 0x0979, 0x0979,
- 0x0979, 0x0979, 0x0981, 0x0991, 0x0991, 0x09a6, 0x09ae, 0x09ae,
- 0x09ae, 0x09ae, 0x09ae, 0x09b8, 0x09b8, 0x09b8, 0x09c4, 0x09c4,
- 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09d4, 0x09d4,
- 0x09d4, 0x09dc, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09f9,
- 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a03, 0x0a18, 0x0a20, 0x0a20,
- // Entry 1C0 - 1FF
- 0x0a20, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c,
- 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c,
- 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a34, 0x0a34,
- 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a3e, 0x0a3e, 0x0a3e,
- 0x0a3e, 0x0a3e, 0x0a3e, 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a52,
- 0x0a52, 0x0a52, 0x0a52, 0x0a52, 0x0a5c, 0x0a5c, 0x0a5c, 0x0a5c,
- 0x0a6d, 0x0a6d, 0x0a75, 0x0a75, 0x0a75, 0x0a90, 0x0a90, 0x0a90,
- 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0aaf, 0x0abe,
- // Entry 200 - 23F
- 0x0ad1, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4,
- 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0afb, 0x0afb, 0x0afb, 0x0afb,
- 0x0afb, 0x0afb, 0x0b03, 0x0b03, 0x0b0b, 0x0b0b, 0x0b0b, 0x0b0b,
- 0x0b0b, 0x0b15, 0x0b15, 0x0b15, 0x0b15, 0x0b15, 0x0b26, 0x0b26,
- 0x0b26, 0x0b26, 0x0b26, 0x0b26, 0x0b32, 0x0b32, 0x0b40, 0x0b40,
- 0x0b66, 0x0b66, 0x0b66, 0x0b66, 0x0b7d, 0x0b85, 0x0b85, 0x0b85,
- 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b8d, 0x0b8d, 0x0b8d, 0x0b8d,
- 0x0b8d, 0x0b9d, 0x0b9d, 0x0b9d, 0x0b9d, 0x0ba5, 0x0ba5, 0x0ba5,
- // Entry 240 - 27F
- 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5,
- 0x0bd1, 0x0bd1, 0x0bf6, 0x0bf6, 0x0c1a, 0x0c3b, 0x0c54, 0x0c6e,
- 0x0c91, 0x0cae, 0x0ccb, 0x0ce6, 0x0d0e, 0x0d27, 0x0d44, 0x0d44,
- 0x0d63, 0x0d76, 0x0d89, 0x0d95, 0x0db2, 0x0dcb, 0x0dd9, 0x0df2,
- 0x0e0e, 0x0e23,
-} // Size: 1244 bytes
-
-var uzLangStr string = "" + // Size: 1850 bytes
- "abxazafrikaansakanamxararabassamozarbayjonboshqirdbelarusbolgarbambarben" +
- "galtibetbretonbosniykatalanchechenkorsikanchexchuvashvalliydatnemischadz" +
- "ongkaevegrekinglizchaesperantoispanchaestonchabaskforsfinchafijifarercha" +
- "fransuzchag‘arbiy frizirlandgalisiyguaranigujarotmenxausaibroniyhindxorv" +
- "atgaityanvengerarmanindonezigbosichuanislanditalyaninuktitutyaponyavangr" +
- "uzinchakikuyuqozoqchagrenlandxmerchakannadakoreyschakashmirchakurdchakor" +
- "nqirgʻizchalotinchalyuksemburgchagandalingalalaoschalitvaluba-katangalat" +
- "ishchamalagasiymaorimakedonmalayalammo‘g‘ulmaratximalaymaltiybirmanshimo" +
- "liy ndebelenepalgollandnorveg-nyunorsknorveg-bokmaloromooriyapanjobchapo" +
- "lyakchapushtuportugalchakechuaromanshrundirumincharuschakinyaruandasansk" +
- "ritsindxishimoliy saamsangosingalslovakchaslovenchashonasomalichaalbanse" +
- "rbchasundanshvedsuaxilitamiltelugutojiktaytigrinyaturkmantonganturktatar" +
- "uyg‘urukrainurduo‘zbekvyetnamvolofkxosayorubaxitoyzuluagemaraukanasubemb" +
- "abenag‘arbiy belujibodochigacherokisorani-kurdtaitazarmaquyi sorbchadual" +
- "adiola-fogniembufilipinchagagauznemis (Shveytsariya)gusiigavaychayuqori " +
- "sorbngombamachamekabilkambamakondekabuverdianukoyra-chiinikalenjinkomi-p" +
- "ermyakkonkanshambalabafiyalangilakotashimoliy luriluoluhyamasaymendemeru" +
- "morisyenmaxuva-mittometamohaukmundangmazanderannamaquyi nemiskvasionkonu" +
- "ernyankolekicheromboruandasamburusangujanubiy kurdsenakoyraboro-sennitas" +
- "helxitjanubiy saamlule-saaminari-saamskolt-saamkongo-suaxilitesotasavaqm" +
- "arkaziy atlas tamazigxtnoma’lum tilvaivunjovalbirisogatamazigxttil tarki" +
- "bi yo‘qstandart arabnemis (Avstriya)yuqori nemis (Shveytsariya)ingliz (A" +
- "vstraliya)ingliz (Kanada)ingliz (Britaniya)ingliz (Amerika)ispan (Lotin " +
- "Amerikasi)ispan (Yevropa)ispan (Meksika)fransuz (Kanada)fransuz (Shveyts" +
- "ariya)quyi saksonflamandportugal (Braziliya)portugal (Yevropa)moldovanso" +
- "ddalashgan xitoyan’anaviy xitoy"
-
-var uzLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0005, 0x0005, 0x000e, 0x0012, 0x0017, 0x0017,
- 0x001b, 0x0020, 0x0020, 0x0020, 0x002a, 0x0032, 0x0039, 0x003f,
- 0x003f, 0x0045, 0x004b, 0x0050, 0x0056, 0x005c, 0x0063, 0x006a,
- 0x006a, 0x0072, 0x0072, 0x0076, 0x0076, 0x007d, 0x0083, 0x0086,
- 0x008e, 0x008e, 0x0095, 0x0098, 0x009c, 0x00a5, 0x00ae, 0x00b6,
- 0x00be, 0x00c2, 0x00c6, 0x00c6, 0x00cc, 0x00d0, 0x00d8, 0x00e2,
- 0x00f0, 0x00f6, 0x00f6, 0x00fd, 0x0104, 0x010b, 0x010e, 0x0113,
- 0x011a, 0x011e, 0x011e, 0x0124, 0x012b, 0x0131, 0x0136, 0x0136,
- // Entry 40 - 7F
- 0x0136, 0x013d, 0x013d, 0x0141, 0x0148, 0x0148, 0x0148, 0x014e,
- 0x0155, 0x015e, 0x0163, 0x0168, 0x0171, 0x0171, 0x0177, 0x0177,
- 0x017f, 0x0187, 0x018e, 0x0195, 0x019e, 0x019e, 0x01a8, 0x01af,
- 0x01af, 0x01b3, 0x01be, 0x01c6, 0x01d4, 0x01d9, 0x01d9, 0x01e0,
- 0x01e7, 0x01ec, 0x01f8, 0x0201, 0x020a, 0x020a, 0x020f, 0x0216,
- 0x021f, 0x022a, 0x0231, 0x0236, 0x023c, 0x0242, 0x0242, 0x0252,
- 0x0257, 0x0257, 0x025e, 0x026d, 0x027a, 0x027a, 0x027a, 0x027a,
- 0x027a, 0x027a, 0x027f, 0x0284, 0x0284, 0x028d, 0x028d, 0x0296,
- // Entry 80 - BF
- 0x029c, 0x02a7, 0x02ad, 0x02b4, 0x02b9, 0x02c1, 0x02c7, 0x02d2,
- 0x02da, 0x02da, 0x02e0, 0x02ed, 0x02f2, 0x02f8, 0x0301, 0x030a,
- 0x030a, 0x030f, 0x0318, 0x031d, 0x0324, 0x0324, 0x0324, 0x032a,
- 0x032f, 0x0336, 0x033b, 0x0341, 0x0346, 0x0349, 0x0351, 0x0358,
- 0x0358, 0x035e, 0x0362, 0x0362, 0x0367, 0x0367, 0x036f, 0x0375,
- 0x0379, 0x0381, 0x0381, 0x0388, 0x0388, 0x0388, 0x038d, 0x0392,
- 0x0392, 0x0398, 0x0398, 0x039d, 0x03a1, 0x03a1, 0x03a1, 0x03a1,
- 0x03a1, 0x03a1, 0x03a1, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5,
- // Entry C0 - FF
- 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03ac, 0x03ac, 0x03ac,
- 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03af, 0x03af, 0x03af, 0x03af,
- 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af,
- 0x03af, 0x03b4, 0x03b4, 0x03b8, 0x03b8, 0x03b8, 0x03c8, 0x03c8,
- 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8,
- 0x03c8, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc,
- 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03d1, 0x03d1, 0x03d1,
- 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d8, 0x03d8, 0x03e3,
- // Entry 100 - 13F
- 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e8, 0x03e8,
- 0x03e8, 0x03e8, 0x03e8, 0x03ed, 0x03ed, 0x03f9, 0x03f9, 0x03fe,
- 0x03fe, 0x0409, 0x0409, 0x0409, 0x040d, 0x040d, 0x040d, 0x040d,
- 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x0417,
- 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417,
- 0x0417, 0x0417, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
- 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
- 0x041d, 0x041d, 0x0431, 0x0431, 0x0431, 0x0436, 0x0436, 0x0436,
- // Entry 140 - 17F
- 0x0436, 0x043e, 0x043e, 0x043e, 0x043e, 0x043e, 0x0449, 0x0449,
- 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449,
- 0x044f, 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b,
- 0x045b, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0467, 0x0473,
- 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x047f, 0x047f, 0x047f,
- 0x047f, 0x0487, 0x0487, 0x0493, 0x0499, 0x0499, 0x0499, 0x0499,
- 0x0499, 0x0499, 0x0499, 0x0499, 0x04a1, 0x04a7, 0x04a7, 0x04a7,
- 0x04a7, 0x04a7, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac,
- // Entry 180 - 1BF
- 0x04ac, 0x04b2, 0x04b2, 0x04b2, 0x04b2, 0x04bf, 0x04bf, 0x04bf,
- 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
- 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04cc, 0x04cc, 0x04cc,
- 0x04cc, 0x04d1, 0x04d5, 0x04dd, 0x04dd, 0x04e9, 0x04ed, 0x04ed,
- 0x04ed, 0x04ed, 0x04ed, 0x04f3, 0x04f3, 0x04f3, 0x04fa, 0x04fa,
- 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x0504, 0x0504,
- 0x0504, 0x0508, 0x0512, 0x0512, 0x0512, 0x0512, 0x0512, 0x0518,
- 0x0518, 0x0518, 0x0518, 0x0518, 0x051b, 0x051b, 0x051f, 0x051f,
- // Entry 1C0 - 1FF
- 0x051f, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527,
- 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527,
- 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x052c, 0x052c,
- 0x052c, 0x052c, 0x052c, 0x052c, 0x052c, 0x0531, 0x0531, 0x0531,
- 0x0531, 0x0531, 0x0531, 0x0537, 0x0537, 0x0537, 0x0537, 0x053e,
- 0x053e, 0x053e, 0x053e, 0x053e, 0x0543, 0x0543, 0x0543, 0x0543,
- 0x054f, 0x054f, 0x0553, 0x0553, 0x0553, 0x0562, 0x0562, 0x0562,
- 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0577, 0x0580,
- // Entry 200 - 23F
- 0x058a, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
- 0x0594, 0x0594, 0x0594, 0x0594, 0x05a1, 0x05a1, 0x05a1, 0x05a1,
- 0x05a1, 0x05a1, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5,
- 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5,
- 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05ac, 0x05ac,
- 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d5, 0x05d5, 0x05d5,
- 0x05d5, 0x05d5, 0x05d5, 0x05d5, 0x05da, 0x05da, 0x05da, 0x05da,
- 0x05da, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e5, 0x05e5, 0x05e5,
- // Entry 240 - 27F
- 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5,
- 0x05ee, 0x05ee, 0x0600, 0x0600, 0x060d, 0x060d, 0x061d, 0x0638,
- 0x064b, 0x065a, 0x066c, 0x067c, 0x0693, 0x06a2, 0x06b1, 0x06b1,
- 0x06c1, 0x06d7, 0x06e2, 0x06e9, 0x06fd, 0x070f, 0x0717, 0x0717,
- 0x0729, 0x073a,
-} // Size: 1244 bytes
-
-var viLangStr string = "" + // Size: 8556 bytes
- "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng Nam PhiTiếng AkanTiếng Amhari" +
- "cTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerbai" +
- "janTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraTiế" +
- "ng BengaliTiếng Tây TạngTiếng BretonTiếng Nam TưTiếng CatalanTiếng Chech" +
- "enTiếng ChamorroTiếng CorsicaTiếng CreeTiếng SécTiếng Slavơ Nhà thờTiếng" +
- " ChuvashTiếng WalesTiếng Đan MạchTiếng ĐứcTiếng DivehiTiếng DzongkhaTiến" +
- "g EweTiếng Hy LạpTiếng AnhTiếng Quốc Tế NgữTiếng Tây Ban NhaTiếng Estoni" +
- "aTiếng BasqueTiếng Ba TưTiếng FulahTiếng Phần LanTiếng FijiTiếng FaoreTi" +
- "ếng PhápTiếng FrisiaTiếng Ai-lenTiếng Xentơ (Xcốt len)Tiếng GalicianTi" +
- "ếng GuaraniTiếng GujaratiTiếng ManxTiếng HausaTiếng Do TháiTiếng Hindi" +
- "Tiếng Hiri MotuTiếng CroatiaTiếng HaitiTiếng HungaryTiếng ArmeniaTiếng H" +
- "ereroTiếng Khoa Học Quốc TếTiếng IndonesiaTiếng InterlingueTiếng IgboTiế" +
- "ng Di Tứ XuyênTiếng InupiaqTiếng IdoTiếng IcelandTiếng ÝTiếng InuktitutT" +
- "iếng NhậtTiếng JavaTiếng GruziaTiếng KongoTiếng KikuyuTiếng KuanyamaTiến" +
- "g KazakhTiếng KalaallisutTiếng Khơ-meTiếng KannadaTiếng HànTiếng KanuriT" +
- "iếng KashmiriTiếng KurdTiếng KomiTiếng CornwallTiếng KyrgyzTiếng La-tinh" +
- "Tiếng LuxembourgTiếng GandaTiếng LimburgTiếng LingalaTiếng LàoTiếng Lít-" +
- "vaTiếng Luba-KatangaTiếng LatviaTiếng MalagasyTiếng MarshallTiếng MaoriT" +
- "iếng MacedoniaTiếng MalayalamTiếng Mông CổTiếng MarathiTiếng MalaysiaTiế" +
- "ng MaltTiếng Miến ĐiệnTiếng NauruTiếng Ndebele Miền BắcTiếng NepalTiếng " +
- "NdongaTiếng Hà LanTiếng Na Uy (Nynorsk)Tiếng Na Uy (Bokmål)Tiếng Ndebele" +
- " Miền NamTiếng NavajoTiếng NyanjaTiếng OccitanTiếng OjibwaTiếng OromoTiế" +
- "ng OriyaTiếng OsseticTiếng PunjabTiếng PaliTiếng Ba LanTiếng PashtoTiếng" +
- " Bồ Đào NhaTiếng QuechuaTiếng RomanshTiếng RundiTiếng RumaniTiếng NgaTiế" +
- "ng KinyarwandaTiếng PhạnTiếng SardiniaTiếng SindhiTiếng Sami Miền BắcTiế" +
- "ng SangoTiếng SinhalaTiếng SlovakTiếng SloveniaTiếng SamoaTiếng ShonaTiế" +
- "ng SomaliTiếng An-ba-niTiếng SerbiaTiếng SwatiTiếng SesothoTiếng SundaTi" +
- "ếng Thụy ĐiểnTiếng SwahiliTiếng TamilTiếng TeluguTiếng TajikTiếng Thái" +
- "Tiếng TigrigyaTiếng TurkTiếng TswanaTiếng TongaTiếng Thổ Nhĩ KỳTiếng Tso" +
- "ngaTiếng TatarTiếng TahitiTiếng UyghurTiếng UcrainaTiếng UđuTiếng UzbekT" +
- "iếng VendaTiếng ViệtTiếng VolapükTiếng WalloonTiếng WolofTiếng XhosaTiến" +
- "g Y-đitTiếng YorubaTiếng ZhuangTiếng TrungTiếng ZuluTiếng AchineseTiếng " +
- "AcoliTiếng AdangmeTiếng AdygheTiếng AfrihiliTiếng AghemTiếng AinuTiếng A" +
- "kkadiaTiếng AlabamaTiếng AleutTiếng Gheg AlbaniTiếng Altai Miền NamTiếng" +
- " Anh cổTiếng AngikaTiếng AramaicTiếng AraucanianTiếng AraonaTiếng Arapah" +
- "oTiếng Ả Rập AlgeriaTiếng ArawakTiếng Ả Rập Ai CậpTiếng AsuNgôn ngữ Ký h" +
- "iệu MỹTiếng AsturiasTiếng AwadhiTiếng BaluchiTiếng BaliTiếng BavariaTiến" +
- "g BasaaTiếng BamunTiếng Batak TobaTiếng GhomalaTiếng BejaTiếng BembaTiến" +
- "g BetawiTiếng BenaTiếng BafutTiếng BadagaTiếng Tây BalochiTiếng Bhojpuri" +
- "Tiếng BikolTiếng BiniTiếng BanjarTiếng KomTiếng SiksikaTiếng Bishnupriya" +
- "Tiếng BakhtiariTiếng BrajTiếng BrahuiTiếng BodoTiếng AkooseTiếng BuriatT" +
- "iếng BuginTiếng BuluTiếng BlinTiếng MedumbaTiếng CaddoTiếng CaribTiếng C" +
- "ayugaTiếng AtsamTiếng CebuanoTiếng ChigaTiếng ChibchaTiếng ChagataiTiếng" +
- " ChuukTiếng MariBiệt ngữ ChinookTiếng ChoctawTiếng ChipewyanTiếng Cherok" +
- "eeTiếng CheyenneTiếng Kurd Miền TrungTiếng CopticTiếng CapiznonTiếng Thổ" +
- " Nhĩ Kỳ CrimeanTiếng KashubiaTiếng DakotaTiếng DargwaTiếng TaitaTiếng De" +
- "lawareTiếng SlaveTiếng DogribTiếng DinkaTiếng ZarmaTiếng DogriTiếng Hạ S" +
- "orbiaTiếng Dusun Miền TrungTiếng DualaTiếng Hà Lan Trung cổTiếng Jola-Fo" +
- "nyiTiếng DyulaTiếng DazagaTiếng EmbuTiếng EfikTiếng EmiliaTiếng Ai Cập c" +
- "ổTiếng EkajukTiếng ElamiteTiếng Anh Trung cổTiếng Yupik Miền TrungTiến" +
- "g EwondoTiếng ExtremaduraTiếng FangTiếng PhilipinTiếng FonTiếng Pháp Caj" +
- "unTiếng Pháp Trung cổTiếng Pháp cổTiếng ArpitanTiếng Frisian Miền BắcTiế" +
- "ng Frisian Miền ĐôngTiếng FriulianTiếng GaTiếng GagauzTiếng GayoTiếng Gb" +
- "ayaTiếng GeezTiếng GilbertTiếng GilakiTiếng Thượng Giéc-man Trung cổTiến" +
- "g Thượng Giéc-man cổTiếng Goan KonkaniTiếng GondiTiếng GorontaloTiếng Gô" +
- "-tíchTiếng GreboTiếng Hy Lạp cổTiếng Đức (Thụy Sĩ)Tiếng FrafraTiếng Gusi" +
- "iTiếng GwichʼinTiếng HaidaTiếng Trung HakkaTiếng HawaiiTiếng Fiji HindiT" +
- "iếng HiligaynonTiếng HittiteTiếng HmôngTiếng Thượng SorbiaTiếng HupaTiến" +
- "g IbanTiếng IbibioTiếng IlokoTiếng IngushTiếng IngriaTiếng Anh Jamaica C" +
- "reoleTiếng LojbanTiếng NgombaTiếng MachameTiếng Judeo-Ba TưTiếng Judeo-Ả" +
- " RậpTiếng JutishTiếng Kara-KalpakTiếng KabyleTiếng KachinTiếng JjuTiếng " +
- "KambaTiếng KawiTiếng KabardianTiếng KanembuTiếng TyapTiếng MakondeTiếng " +
- "KabuverdianuTiếng KoroTiếng KhasiTiếng KhotanTiếng Koyra ChiiniTiếng Kak" +
- "oTiếng KalenjinTiếng KimbunduTiếng Komi-PermyakTiếng KonkaniTiếng Kosrae" +
- "Tiếng KpelleTiếng Karachay-BalkarTiếng KarelianTiếng KurukhTiếng Shambal" +
- "aTiếng BafiaTiếng CologneTiếng KumykTiếng KutenaiTiếng LadinoTiếng Langi" +
- "Tiếng LahndaTiếng LambaTiếng LezghianTiếng LakotaTiếng MongoTiếng LoziTi" +
- "ếng Bắc LuriTiếng Luba-LuluaTiếng LuisenoTiếng LundaTiếng LuoTiếng Lus" +
- "haiTiếng LuyiaTiếng MaduraTiếng MafaTiếng MagahiTiếng MaithiliTiếng Maka" +
- "sarTiếng MandingoTiếng MasaiTiếng MabaTiếng MokshaTiếng MandarTiếng Mend" +
- "eTiếng MeruTiếng MorisyenTiếng Ai-len Trung cổTiếng Makhuwa-MeettoTiếng " +
- "Meta’Tiếng MicmacTiếng MinangkabauTiếng ManchuTiếng ManipuriTiếng Mohawk" +
- "Tiếng MossiTiếng MundangNhiều Ngôn ngữTiếng CreekTiếng MirandaTiếng Marw" +
- "ariTiếng MyeneTiếng ErzyaTiếng MazanderaniTiếng NapoliTiếng NamaTiếng Hạ" +
- " Giéc-manTiếng NewariTiếng NiasTiếng NiueanTiếng Ao NagaTiếng KwasioTiến" +
- "g NgiemboonTiếng NogaiTiếng Na Uy cổTiếng N’KoBắc SothoTiếng NuerTiếng N" +
- "ewari Cổ điểnTiếng NyamweziTiếng NyankoleTiếng NyoroTiếng NzimaTiếng Osa" +
- "geTiếng Thổ Nhĩ Kỳ OttomanTiếng PangasinanTiếng PahlaviTiếng PampangaTiế" +
- "ng PapiamentoTiếng PalauanTiếng Ba Tư cổTiếng PhoeniciaTiếng PohnpeianTi" +
- "ếng Provençal cổTiếng KʼicheʼTiếng Quechua ở Cao nguyên ChimborazoTiến" +
- "g RajasthaniTiếng RapanuiTiếng RarotonganTiếng RomboTiếng RomanyTiếng Ar" +
- "omaniaTiếng RwaTiếng SandaweTiếng SakhaTiếng Samaritan AramaicTiếng Samb" +
- "uruTiếng SasakTiếng SantaliTiếng NgambayTiếng SanguTiếng SiciliaTiếng Sc" +
- "otsTiếng Kurd Miền NamTiếng SenecaTiếng SenaTiếng SelkupTiếng Koyraboro " +
- "SenniTiếng Ai-len cổTiếng TachelhitTiếng ShanTiếng Ả-Rập ChadTiếng Sidam" +
- "oTIếng Sami Miền NamTiếng Lule SamiTiếng Inari SamiTiếng Skolt SamiTiếng" +
- " SoninkeTiếng SogdienTiếng Sranan TongoTiếng SererTiếng SahoTiếng Sukuma" +
- "Tiếng SusuTiếng SumeriaTiếng CômoTiếng Swahili CongoTiếng Syria Cổ điểnT" +
- "iếng SyriacTiếng TimneTiếng TesoTiếng TerenoTetumTiếng TigreTiếng TivTiế" +
- "ng TokelauTiếng KlingonTiếng TlingitTiếng TamashekTiếng Nyasa TongaTiếng" +
- " Tok PisinTiếng TarokoTiếng TsimshianTiếng TumbukaTiếng TuvaluTiếng Tasa" +
- "waqTiếng TuvinianTiếng Tamazight Miền Trung Ma-rốcTiếng UdmurtTiếng Ugar" +
- "iticTiếng UmbunduTiếng RootTiếng VaiTiếng VoticTiếng VunjoTiếng WalserTi" +
- "ếng WalamoTiếng WarayTiếng WashoTiếng WarlpiriTiếng KalmykTiếng SogaTi" +
- "ếng YaoTiếng YapTiếng YangbenTiếng YembaTiếng Quảng ĐôngTiếng ZapotecK" +
- "ý hiệu BlissymbolsTiếng ZenagaTiếng Tamazight Chuẩn của Ma-rốcTiếng Zun" +
- "iKhông có nội dung ngôn ngữTiếng ZazaTiếng Ả Rập Hiện đạiTiếng Thượng Gi" +
- "éc-man (Thụy Sĩ)Tiếng Anh (Anh)Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La t" +
- "inh)Tiếng Tây Ban Nha (Châu Âu)Tiếng Hạ SaxonTiếng FlemishTiếng Bồ Đào N" +
- "ha (Braxin)Tiếng Bồ Đào Nha (Châu Âu)Tiếng MoldovaTiếng Xéc bi - Croatia"
-
-var viLangIdx = []uint16{ // 608 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x001c, 0x002b, 0x003a, 0x0046, 0x0055, 0x0063,
- 0x0074, 0x0081, 0x008f, 0x009d, 0x00af, 0x00be, 0x00cd, 0x00dd,
- 0x00ec, 0x00fb, 0x010a, 0x011d, 0x012b, 0x013a, 0x0149, 0x0158,
- 0x0168, 0x0177, 0x0183, 0x018f, 0x01a8, 0x01b7, 0x01c4, 0x01d7,
- 0x01e5, 0x01f3, 0x0203, 0x020e, 0x021e, 0x0229, 0x0242, 0x0256,
- 0x0265, 0x0273, 0x0281, 0x028e, 0x02a0, 0x02ac, 0x02b9, 0x02c6,
- 0x02d4, 0x02e2, 0x02fd, 0x030d, 0x031c, 0x032c, 0x0338, 0x0345,
- 0x0355, 0x0362, 0x0373, 0x0382, 0x038f, 0x039e, 0x03ad, 0x03bb,
- // Entry 40 - 7F
- 0x03d9, 0x03ea, 0x03fd, 0x0409, 0x041f, 0x042e, 0x0439, 0x0448,
- 0x0452, 0x0463, 0x0471, 0x047d, 0x048b, 0x0498, 0x04a6, 0x04b6,
- 0x04c4, 0x04d7, 0x04e6, 0x04f5, 0x0501, 0x050f, 0x051f, 0x052b,
- 0x0537, 0x0547, 0x0555, 0x0564, 0x0576, 0x0583, 0x0592, 0x05a1,
- 0x05ad, 0x05bc, 0x05d0, 0x05de, 0x05ee, 0x05fe, 0x060b, 0x061c,
- 0x062d, 0x063f, 0x064e, 0x065e, 0x066a, 0x0680, 0x068d, 0x06a9,
- 0x06b6, 0x06c4, 0x06d3, 0x06ea, 0x0701, 0x071b, 0x0729, 0x0737,
- 0x0746, 0x0754, 0x0761, 0x076e, 0x077d, 0x078b, 0x0797, 0x07a5,
- // Entry 80 - BF
- 0x07b3, 0x07c9, 0x07d8, 0x07e7, 0x07f4, 0x0802, 0x080d, 0x0820,
- 0x082e, 0x083e, 0x084c, 0x0865, 0x0872, 0x0881, 0x088f, 0x089f,
- 0x08ac, 0x08b9, 0x08c7, 0x08d7, 0x08e5, 0x08f2, 0x0901, 0x090e,
- 0x0924, 0x0933, 0x0940, 0x094e, 0x095b, 0x0968, 0x0978, 0x0984,
- 0x0992, 0x099f, 0x09b6, 0x09c4, 0x09d1, 0x09df, 0x09ed, 0x09fc,
- 0x0a08, 0x0a15, 0x0a22, 0x0a30, 0x0a40, 0x0a4f, 0x0a5c, 0x0a69,
- 0x0a77, 0x0a85, 0x0a93, 0x0aa0, 0x0aac, 0x0abc, 0x0ac9, 0x0ad8,
- 0x0ae6, 0x0ae6, 0x0af6, 0x0b03, 0x0b0f, 0x0b1e, 0x0b2d, 0x0b3a,
- // Entry C0 - FF
- 0x0b4d, 0x0b65, 0x0b75, 0x0b83, 0x0b92, 0x0ba4, 0x0bb2, 0x0bc1,
- 0x0bda, 0x0be8, 0x0be8, 0x0c02, 0x0c0d, 0x0c28, 0x0c38, 0x0c38,
- 0x0c46, 0x0c55, 0x0c61, 0x0c70, 0x0c7d, 0x0c8a, 0x0c9c, 0x0cab,
- 0x0cb7, 0x0cc4, 0x0cd2, 0x0cde, 0x0ceb, 0x0cf9, 0x0d0d, 0x0d1d,
- 0x0d2a, 0x0d36, 0x0d44, 0x0d4f, 0x0d5e, 0x0d71, 0x0d82, 0x0d8e,
- 0x0d9c, 0x0da8, 0x0db6, 0x0dc4, 0x0dd1, 0x0ddd, 0x0de9, 0x0df8,
- 0x0e05, 0x0e12, 0x0e20, 0x0e2d, 0x0e3c, 0x0e49, 0x0e58, 0x0e68,
- 0x0e75, 0x0e81, 0x0e95, 0x0ea4, 0x0eb5, 0x0ec5, 0x0ed5, 0x0eee,
- // Entry 100 - 13F
- 0x0efc, 0x0f0c, 0x0f2b, 0x0f3b, 0x0f49, 0x0f57, 0x0f64, 0x0f74,
- 0x0f81, 0x0f8f, 0x0f9c, 0x0fa9, 0x0fb6, 0x0fc9, 0x0fe3, 0x0ff0,
- 0x100a, 0x101c, 0x1029, 0x1037, 0x1043, 0x104f, 0x105d, 0x1072,
- 0x1080, 0x108f, 0x10a5, 0x10bf, 0x10cd, 0x10e0, 0x10ec, 0x10fc,
- 0x10fc, 0x1107, 0x111a, 0x1132, 0x1144, 0x1153, 0x116f, 0x118c,
- 0x119c, 0x11a6, 0x11b4, 0x11b4, 0x11c0, 0x11cd, 0x11cd, 0x11d9,
- 0x11e8, 0x11f6, 0x121c, 0x123c, 0x1250, 0x125d, 0x126e, 0x127f,
- 0x128c, 0x12a1, 0x12bc, 0x12bc, 0x12ca, 0x12d7, 0x12e8, 0x12f5,
- // Entry 140 - 17F
- 0x1308, 0x1316, 0x1328, 0x133a, 0x1349, 0x1357, 0x136f, 0x136f,
- 0x137b, 0x1387, 0x1395, 0x13a2, 0x13b0, 0x13be, 0x13d8, 0x13e6,
- 0x13f4, 0x1403, 0x1417, 0x142e, 0x143c, 0x144f, 0x145d, 0x146b,
- 0x1476, 0x1483, 0x148f, 0x14a0, 0x14af, 0x14bb, 0x14ca, 0x14de,
- 0x14de, 0x14ea, 0x14ea, 0x14f7, 0x1505, 0x1519, 0x1519, 0x1519,
- 0x1525, 0x1535, 0x1545, 0x1559, 0x1568, 0x1576, 0x1584, 0x159b,
- 0x159b, 0x159b, 0x15ab, 0x15b9, 0x15c9, 0x15d6, 0x15e5, 0x15f2,
- 0x1601, 0x160f, 0x161c, 0x162a, 0x1637, 0x1647, 0x1647, 0x1647,
- // Entry 180 - 1BF
- 0x1647, 0x1655, 0x1655, 0x1662, 0x166e, 0x1680, 0x1680, 0x1692,
- 0x16a1, 0x16ae, 0x16b9, 0x16c7, 0x16d4, 0x16d4, 0x16d4, 0x16e2,
- 0x16ee, 0x16fc, 0x170c, 0x171b, 0x172b, 0x1738, 0x1744, 0x1752,
- 0x1760, 0x176d, 0x1779, 0x1789, 0x17a2, 0x17b8, 0x17c7, 0x17d5,
- 0x17e8, 0x17f6, 0x1806, 0x1814, 0x1821, 0x1821, 0x1830, 0x1843,
- 0x1850, 0x185f, 0x186e, 0x186e, 0x187b, 0x1888, 0x189b, 0x189b,
- 0x18a9, 0x18b5, 0x18cb, 0x18d9, 0x18e5, 0x18f3, 0x1902, 0x1910,
- 0x1921, 0x192e, 0x1940, 0x1940, 0x194e, 0x1959, 0x1965, 0x1980,
- // Entry 1C0 - 1FF
- 0x1990, 0x19a0, 0x19ad, 0x19ba, 0x19c7, 0x19e6, 0x19f8, 0x1a07,
- 0x1a17, 0x1a29, 0x1a38, 0x1a38, 0x1a38, 0x1a38, 0x1a4b, 0x1a4b,
- 0x1a5c, 0x1a5c, 0x1a5c, 0x1a6d, 0x1a6d, 0x1a84, 0x1a95, 0x1abf,
- 0x1ad1, 0x1ae0, 0x1af2, 0x1af2, 0x1af2, 0x1aff, 0x1b0d, 0x1b0d,
- 0x1b0d, 0x1b0d, 0x1b1d, 0x1b28, 0x1b37, 0x1b44, 0x1b5d, 0x1b6c,
- 0x1b79, 0x1b88, 0x1b88, 0x1b97, 0x1ba4, 0x1bb3, 0x1bc0, 0x1bc0,
- 0x1bd7, 0x1be5, 0x1bf1, 0x1bf1, 0x1bff, 0x1c16, 0x1c29, 0x1c29,
- 0x1c3a, 0x1c46, 0x1c5c, 0x1c6a, 0x1c6a, 0x1c6a, 0x1c81, 0x1c92,
- // Entry 200 - 23F
- 0x1ca4, 0x1cb6, 0x1cc5, 0x1cd4, 0x1ce8, 0x1cf5, 0x1d01, 0x1d01,
- 0x1d0f, 0x1d1b, 0x1d2a, 0x1d37, 0x1d4c, 0x1d66, 0x1d74, 0x1d74,
- 0x1d74, 0x1d81, 0x1d8d, 0x1d9b, 0x1da0, 0x1dad, 0x1db8, 0x1dc7,
- 0x1dc7, 0x1dd6, 0x1de5, 0x1de5, 0x1df5, 0x1e08, 0x1e19, 0x1e19,
- 0x1e27, 0x1e27, 0x1e38, 0x1e38, 0x1e47, 0x1e55, 0x1e64, 0x1e74,
- 0x1e9b, 0x1ea9, 0x1eb9, 0x1ec8, 0x1ed4, 0x1edf, 0x1edf, 0x1edf,
- 0x1edf, 0x1edf, 0x1eec, 0x1eec, 0x1ef9, 0x1f07, 0x1f15, 0x1f22,
- 0x1f2f, 0x1f3f, 0x1f3f, 0x1f4d, 0x1f4d, 0x1f59, 0x1f64, 0x1f6f,
- // Entry 240 - 27F
- 0x1f7e, 0x1f8b, 0x1f8b, 0x1fa1, 0x1fb0, 0x1fc6, 0x1fc6, 0x1fd4,
- 0x1ffc, 0x2008, 0x2029, 0x2035, 0x2054, 0x2054, 0x2054, 0x207c,
- 0x207c, 0x207c, 0x208d, 0x209f, 0x20c2, 0x20e2, 0x20e2, 0x20e2,
- 0x20e2, 0x20e2, 0x20f4, 0x2103, 0x2122, 0x2144, 0x2153, 0x216c,
-} // Size: 1240 bytes
-
-var zhLangStr string = "" + // Size: 6405 bytes
- "阿法文阿布哈西亚文阿维斯塔文南非荷兰文阿肯文阿姆哈拉文阿拉贡文阿拉伯文阿萨姆文阿瓦尔文艾马拉文阿塞拜疆文巴什客尔文白俄罗斯文保加利亚文比斯拉马文" +
- "班巴拉文孟加拉文藏文布里多尼文波斯尼亚文加泰罗尼亚文车臣文查莫罗文科西嘉文克里族文捷克文宗教斯拉夫文楚瓦什文威尔士文丹麦文德文迪维希文不丹文" +
- "埃维文希腊文英文世界文西班牙文爱沙尼亚文巴斯克文波斯文夫拉文芬兰文斐济文法罗文法文西弗里西亚文爱尔兰文苏格兰盖尔文加利西亚文瓜拉尼文古吉拉特" +
- "文马恩岛文豪萨文希伯来文印地文希里莫图文克罗地亚文海地文匈牙利文亚美尼亚文赫雷罗文国际文字印度尼西亚文国际文字(E)伊布文四川彝文依奴皮维克" +
- "文伊多文冰岛文意大利文因纽特文日文爪哇文格鲁吉亚文刚果文吉库尤文宽亚玛文哈萨克文格陵兰文高棉文卡纳达文韩文卡努里文克什米尔文库尔德文科米文凯" +
- "尔特文吉尔吉斯文拉丁文卢森堡文卢干达文淋布尔吉文林加拉文老挝文立陶宛文鲁巴加丹加文拉脱维亚文马尔加什文马绍尔文毛利文马其顿文马拉雅拉姆文蒙古" +
- "文马拉地文马来文马耳他文缅甸文瑙鲁文北恩德贝勒文尼泊尔文恩东加文荷兰文挪威尼诺斯克文挪威博克马尔文南恩德贝勒文纳瓦霍文尼扬扎文奥克西唐文奥吉" +
- "布瓦文奥洛莫文奥里亚文奥塞梯文旁遮普文巴利文波兰文普什图文葡萄牙文盖丘亚文罗曼什文基隆迪文罗马尼亚文俄文卢旺达文梵文萨丁文信德文北萨米文桑戈" +
- "文僧伽罗文斯洛伐克文斯洛文尼亚文萨摩亚文绍纳文索马里文阿尔巴尼亚文塞尔维亚文斯瓦特文南索托文巽他文瑞典文斯瓦希里文泰米尔文泰卢固文塔吉克文泰" +
- "文提格里尼亚文土库曼文塞茨瓦纳文汤加文土耳其文宗加文塔塔尔文塔西提文维吾尔文乌克兰文乌尔都文乌兹别克文文达文越南文沃拉普克文瓦隆文沃洛夫文科" +
- "萨文依地文约鲁巴文壮文中文祖鲁文亚齐文阿乔利文阿当梅文阿迪何文阿弗里希利文亚罕文阿伊努文阿卡德文阿留申文南阿尔泰文古英文昂加文阿拉米文马普切" +
- "文阿拉帕霍文阿拉瓦克文阿苏文阿斯图里亚思特文阿瓦乔文俾路支文巴里文巴萨文巴姆穆文戈马拉文别札文别姆巴文贝纳文巴非特文西俾路支文博杰普尔文毕库" +
- "尔文比尼文科姆文司克司卡文布拉杰文博多文阿库色文布里亚特文布吉文布鲁文布林文梅敦巴文卡多文巴勒比文卡尤加文阿灿文宿务文奇加文契布卡文查加文楚" +
- "吾克文马里文契努克文乔克托文佩瓦扬文彻罗基文夏延文索拉尼库尔德文科普特文克里米亚土耳其文卡舒文达科他文达尔格瓦文台塔文特拉华文司雷夫文多格里" +
- "布文丁卡文哲尔马文多格拉文下索布文都阿拉文中古荷兰文朱拉文迪尤拉文达扎葛文恩布文埃菲克文古埃及文埃克丘克文艾拉米特文中古英文旺杜文芳格文菲律" +
- "宾文丰文中古法文古法文北弗里西亚文东弗里西亚文弗留利文加文加告兹文迦约文葛巴亚文吉兹文吉尔伯特斯文中古高地德文古高地德文岗德文科洛涅达罗文哥" +
- "特文格列博文古希腊文瑞士德文古西文吉维克琴文海达文夏威夷文希利盖农文赫梯文赫蒙文上索布文胡帕文伊班文伊比比奥文伊洛干诺文印古什文逻辑文恩艮巴" +
- "马切姆文犹太波斯文犹太阿拉伯文卡拉卡尔帕克文卡比尔文卡琴文卡捷文卡姆巴文卡威文卡巴尔达文加涅姆布文卡塔布文马孔德文卡布佛得鲁文科罗文卡西文和" +
- "田文西桑海文卡库文卡伦金文金邦杜文科米-彼尔米亚克文刚卡尼文科斯拉伊文克佩列文卡拉恰伊巴尔卡尔文卡累利阿文库鲁克文香巴拉文巴菲亚文科隆文库梅" +
- "克文库特内文拉迪诺文朗吉文拉亨达文兰巴文莱兹依昂文拉科塔文芒戈文洛兹文北卢尔文鲁巴鲁瓦文路易塞诺文隆达文卢奥文卢晒文卢雅文马都拉文马法文马加" +
- "伊文迈蒂利文望加锡文曼丁哥文萨伊文马坝文莫克沙文曼达尔文门迪文梅鲁文毛里求斯克里奥尔文中古爱尔兰文马夸文梅塔米克马克文米南卡保文满文曼尼普里" +
- "文摩霍克文莫西文蒙当文多种语系克里克文米兰德斯文马尔瓦利文姆耶内文俄日亚文马赞德兰文拿波里文纳马文低地德文尼瓦尔文尼亚斯文纽埃文夸西奥文恩甘" +
- "澎文诺盖文古诺尔斯文西非书面文字北索托文努埃尔文经典尼瓦尔文尼亚姆韦齐文尼昂科勒文尼约罗文恩济马文奥萨格文奥托曼土耳其文邦阿西楠文帕拉维文邦" +
- "板牙文帕皮亚门托文帕劳文古老波斯文腓尼基文波纳佩文普罗文斯文基切文拉贾斯坦文拉帕努伊文拉罗汤加文兰博文吉普赛文阿罗马尼亚文罗瓦文散达维文雅库" +
- "特文萨玛利亚文桑布鲁文萨萨克文桑塔利文甘拜文桑古文西西里文苏格兰文南库尔德文塞内卡文塞纳文塞尔库普文东桑海文古爱尔兰文希尔哈文掸文乍得阿拉伯" +
- "文悉达摩文南萨米文律勒欧萨米文伊纳里萨米文斯科特萨米文索尼基文古粟特文苏里南汤加文谢列尔文萨霍文苏库马文苏苏文苏马文科摩罗文刚果斯瓦希里文经" +
- "典叙利亚文叙利亚文滕内文特索文特列纳文特塔姆文提格雷文蒂夫文托克劳文克林贡文特林吉特文塔马奇克文汤加文(尼亚萨地区)托克皮辛文太鲁阁文蒂姆西" +
- "亚文通布卡文图瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文根语言瓦伊文维普森文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦赖文瓦绍文瓦" +
- "尔皮瑞文卡尔梅克文索加文瑶族文雅浦文洋卞文耶姆巴文粤语萨波蒂克文布利斯符号泽纳加文标准摩洛哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯文" +
- "南阿塞拜疆文奥地利德文瑞士高地德文澳大利亚英文加拿大英文英式英文美式英文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文加拿大法文瑞士法文佛兰芒文" +
- "巴西葡萄牙文欧洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文简体中文繁体中文"
-
-var zhLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x001b, 0x002a, 0x0039, 0x0042, 0x0051, 0x005d,
- 0x0069, 0x0075, 0x0081, 0x008d, 0x009c, 0x00ab, 0x00ba, 0x00c9,
- 0x00d8, 0x00e4, 0x00f0, 0x00f6, 0x0105, 0x0114, 0x0126, 0x012f,
- 0x013b, 0x0147, 0x0153, 0x015c, 0x016e, 0x017a, 0x0186, 0x018f,
- 0x0195, 0x01a1, 0x01aa, 0x01b3, 0x01bc, 0x01c2, 0x01cb, 0x01d7,
- 0x01e6, 0x01f2, 0x01fb, 0x0204, 0x020d, 0x0216, 0x021f, 0x0225,
- 0x0237, 0x0243, 0x0255, 0x0264, 0x0270, 0x027f, 0x028b, 0x0294,
- 0x02a0, 0x02a9, 0x02b8, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7,
- // Entry 40 - 7F
- 0x0303, 0x0315, 0x0328, 0x0331, 0x033d, 0x034f, 0x0358, 0x0361,
- 0x036d, 0x0379, 0x037f, 0x0388, 0x0397, 0x03a0, 0x03ac, 0x03b8,
- 0x03c4, 0x03d0, 0x03d9, 0x03e5, 0x03eb, 0x03f7, 0x0406, 0x0412,
- 0x041b, 0x0427, 0x0436, 0x043f, 0x044b, 0x0457, 0x0466, 0x0472,
- 0x047b, 0x0487, 0x0499, 0x04a8, 0x04b7, 0x04c3, 0x04cc, 0x04d8,
- 0x04ea, 0x04f3, 0x04ff, 0x0508, 0x0514, 0x051d, 0x0526, 0x0538,
- 0x0544, 0x0550, 0x0559, 0x056e, 0x0583, 0x0595, 0x05a1, 0x05ad,
- 0x05bc, 0x05cb, 0x05d7, 0x05e3, 0x05ef, 0x05fb, 0x0604, 0x060d,
- // Entry 80 - BF
- 0x0619, 0x0625, 0x0631, 0x063d, 0x0649, 0x0658, 0x065e, 0x066a,
- 0x0670, 0x0679, 0x0682, 0x068e, 0x0697, 0x06a3, 0x06b2, 0x06c4,
- 0x06d0, 0x06d9, 0x06e5, 0x06f7, 0x0706, 0x0712, 0x071e, 0x0727,
- 0x0730, 0x073f, 0x074b, 0x0757, 0x0763, 0x0769, 0x077b, 0x0787,
- 0x0796, 0x079f, 0x07ab, 0x07b4, 0x07c0, 0x07cc, 0x07d8, 0x07e4,
- 0x07f0, 0x07ff, 0x0808, 0x0811, 0x0820, 0x0829, 0x0835, 0x083e,
- 0x0847, 0x0853, 0x0859, 0x085f, 0x0868, 0x0871, 0x087d, 0x0889,
- 0x0895, 0x0895, 0x08a7, 0x08b0, 0x08bc, 0x08c8, 0x08c8, 0x08d4,
- // Entry C0 - FF
- 0x08d4, 0x08e3, 0x08ec, 0x08f5, 0x0901, 0x090d, 0x090d, 0x091c,
- 0x091c, 0x092b, 0x092b, 0x092b, 0x0934, 0x0934, 0x094c, 0x094c,
- 0x0958, 0x0964, 0x096d, 0x096d, 0x0976, 0x0982, 0x0982, 0x098e,
- 0x0997, 0x09a3, 0x09a3, 0x09ac, 0x09b8, 0x09b8, 0x09c7, 0x09d6,
- 0x09e2, 0x09eb, 0x09eb, 0x09f4, 0x0a03, 0x0a03, 0x0a03, 0x0a0f,
- 0x0a0f, 0x0a18, 0x0a24, 0x0a33, 0x0a3c, 0x0a45, 0x0a4e, 0x0a5a,
- 0x0a63, 0x0a6f, 0x0a7b, 0x0a84, 0x0a8d, 0x0a96, 0x0aa2, 0x0aab,
- 0x0ab7, 0x0ac0, 0x0acc, 0x0ad8, 0x0ae4, 0x0af0, 0x0af9, 0x0b0e,
- // Entry 100 - 13F
- 0x0b1a, 0x0b1a, 0x0b32, 0x0b3b, 0x0b47, 0x0b56, 0x0b5f, 0x0b6b,
- 0x0b77, 0x0b86, 0x0b8f, 0x0b9b, 0x0ba7, 0x0bb3, 0x0bb3, 0x0bbf,
- 0x0bce, 0x0bd7, 0x0be3, 0x0bef, 0x0bf8, 0x0c04, 0x0c04, 0x0c10,
- 0x0c1f, 0x0c2e, 0x0c3a, 0x0c3a, 0x0c43, 0x0c43, 0x0c4c, 0x0c58,
- 0x0c58, 0x0c5e, 0x0c5e, 0x0c6a, 0x0c73, 0x0c73, 0x0c85, 0x0c97,
- 0x0ca3, 0x0ca9, 0x0cb5, 0x0cb5, 0x0cbe, 0x0cca, 0x0cca, 0x0cd3,
- 0x0ce5, 0x0ce5, 0x0cf7, 0x0d06, 0x0d06, 0x0d0f, 0x0d21, 0x0d2a,
- 0x0d36, 0x0d42, 0x0d4e, 0x0d4e, 0x0d4e, 0x0d57, 0x0d66, 0x0d6f,
- // Entry 140 - 17F
- 0x0d6f, 0x0d7b, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9c, 0x0da8, 0x0da8,
- 0x0db1, 0x0dba, 0x0dc9, 0x0dd8, 0x0de4, 0x0de4, 0x0de4, 0x0ded,
- 0x0df6, 0x0e02, 0x0e11, 0x0e23, 0x0e23, 0x0e38, 0x0e44, 0x0e4d,
- 0x0e56, 0x0e62, 0x0e6b, 0x0e7a, 0x0e89, 0x0e95, 0x0ea1, 0x0eb3,
- 0x0eb3, 0x0ebc, 0x0ebc, 0x0ec5, 0x0ece, 0x0eda, 0x0eda, 0x0eda,
- 0x0ee3, 0x0eef, 0x0efb, 0x0f14, 0x0f20, 0x0f2f, 0x0f3b, 0x0f56,
- 0x0f56, 0x0f56, 0x0f65, 0x0f71, 0x0f7d, 0x0f89, 0x0f92, 0x0f9e,
- 0x0faa, 0x0fb6, 0x0fbf, 0x0fcb, 0x0fd4, 0x0fe3, 0x0fe3, 0x0fe3,
- // Entry 180 - 1BF
- 0x0fe3, 0x0fef, 0x0fef, 0x0ff8, 0x1001, 0x100d, 0x100d, 0x101c,
- 0x102b, 0x1034, 0x103d, 0x1046, 0x104f, 0x104f, 0x104f, 0x105b,
- 0x1064, 0x1070, 0x107c, 0x1088, 0x1094, 0x109d, 0x10a6, 0x10b2,
- 0x10be, 0x10c7, 0x10d0, 0x10eb, 0x10fd, 0x1106, 0x110c, 0x111b,
- 0x112a, 0x1130, 0x113f, 0x114b, 0x1154, 0x1154, 0x115d, 0x1169,
- 0x1175, 0x1184, 0x1193, 0x1193, 0x119f, 0x11ab, 0x11ba, 0x11ba,
- 0x11c6, 0x11cf, 0x11db, 0x11e7, 0x11f3, 0x11fc, 0x11fc, 0x1208,
- 0x1214, 0x121d, 0x122c, 0x122c, 0x123e, 0x124a, 0x1256, 0x1268,
- // Entry 1C0 - 1FF
- 0x127a, 0x1289, 0x1295, 0x12a1, 0x12ad, 0x12c2, 0x12d1, 0x12dd,
- 0x12e9, 0x12fb, 0x1304, 0x1304, 0x1304, 0x1304, 0x1313, 0x1313,
- 0x131f, 0x131f, 0x131f, 0x132b, 0x132b, 0x133a, 0x1343, 0x1343,
- 0x1352, 0x1361, 0x1370, 0x1370, 0x1370, 0x1379, 0x1385, 0x1385,
- 0x1385, 0x1385, 0x1397, 0x13a0, 0x13ac, 0x13b8, 0x13c7, 0x13d3,
- 0x13df, 0x13eb, 0x13eb, 0x13f4, 0x13fd, 0x1409, 0x1415, 0x1415,
- 0x1424, 0x1430, 0x1439, 0x1439, 0x1448, 0x1454, 0x1463, 0x1463,
- 0x146f, 0x1475, 0x1487, 0x1493, 0x1493, 0x1493, 0x149f, 0x14b1,
- // Entry 200 - 23F
- 0x14c3, 0x14d5, 0x14e1, 0x14ed, 0x14ff, 0x150b, 0x1514, 0x1514,
- 0x1520, 0x1529, 0x1532, 0x153e, 0x1553, 0x1565, 0x1571, 0x1571,
- 0x1571, 0x157a, 0x1583, 0x158f, 0x159b, 0x15a7, 0x15b0, 0x15bc,
- 0x15bc, 0x15c8, 0x15d7, 0x15d7, 0x15e6, 0x1604, 0x1613, 0x1613,
- 0x161f, 0x161f, 0x162e, 0x162e, 0x163a, 0x1646, 0x1652, 0x165b,
- 0x166d, 0x167f, 0x168e, 0x169a, 0x16a3, 0x16ac, 0x16ac, 0x16b8,
- 0x16b8, 0x16b8, 0x16c4, 0x16c4, 0x16cd, 0x16d9, 0x16e5, 0x16ee,
- 0x16f7, 0x1706, 0x1706, 0x1715, 0x1715, 0x171e, 0x1727, 0x1730,
- // Entry 240 - 27F
- 0x1739, 0x1745, 0x1745, 0x174b, 0x175a, 0x1769, 0x1769, 0x1775,
- 0x1793, 0x179c, 0x17ab, 0x17b4, 0x17cc, 0x17de, 0x17ed, 0x17ff,
- 0x1811, 0x1820, 0x182c, 0x1838, 0x1850, 0x1862, 0x1877, 0x1877,
- 0x1886, 0x1892, 0x1892, 0x189e, 0x18b0, 0x18c2, 0x18d1, 0x18ed,
- 0x18f9, 0x1905,
-} // Size: 1244 bytes
-
-var zhHantLangStr string = "" + // Size: 7582 bytes
- "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" +
- "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維" +
- "文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼" +
- "島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川彝文依奴皮維克文伊多文冰" +
- "島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米爾文庫爾德文科米文康瓦耳文吉爾吉" +
- "斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾" +
- "他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞" +
- "提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維" +
- "尼亞文薩摩亞文塞內加爾文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文" +
- "突尼西亞文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文" +
- "中文祖魯文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂" +
- "加文阿拉米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支" +
- "文峇里文巴伐利亞文巴薩文巴姆穆文巴塔克托巴文戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆" +
- "文錫克錫卡文比什奴普萊利亞文巴赫蒂亞里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧" +
- "文奇加文奇布查文查加文處奇斯文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞" +
- "半島的塔塔爾文卡舒布文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉" +
- "文達薩文恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古" +
- "法文古法文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基文中" +
- "古高地德文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷文斐濟印地文" +
- "希利蓋農文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯文恩格姆巴文馬恰美文猶太教-波斯文猶太" +
- "阿拉伯文日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文" +
- "西桑海文科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利" +
- "阿文庫魯科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛" +
- "齊文北盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文" +
- "莫克沙文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文米南卡堡文滿族文曼尼普裡文莫霍克文莫西文西馬裏文蒙當文多種語" +
- "言克里克文米蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎" +
- "文諾蓋文古諾爾斯文諾維亞文曼德文字 (N’Ko)北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文" +
- "巴列維文潘帕嘉文帕皮阿門托文帛琉文庇卡底文賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺" +
- "斯文基切文欽博拉索海蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅" +
- "瓦文桑達韋文雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納" +
- "文瑟里文瑟爾卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯科特" +
- "薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文史瓦希里文(剛果)古敘利亞文敘利亞文西利西亞文圖盧" +
- "文提姆文特索文泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克" +
- "尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-" +
- "法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特" +
- "克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞" +
- "克羅埃西亞文簡體中文繁體中文"
-
-var zhHantLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a,
- 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6,
- 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c,
- 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189,
- 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1,
- 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f,
- 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b,
- 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7,
- // Entry 40 - 7F
- 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352,
- 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6,
- 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400,
- 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457,
- 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba,
- 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517,
- 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586,
- 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6,
- // Entry 80 - BF
- 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640,
- 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d,
- 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706,
- 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766,
- 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3,
- 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a,
- 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868,
- 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7,
- // Entry C0 - FF
- 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946,
- 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, 0x09ca,
- 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, 0x0a2a,
- 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, 0x0a87,
- 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, 0x0af6,
- 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, 0x0b50,
- 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b83, 0x0b8c, 0x0b98, 0x0ba1,
- 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, 0x0bf5, 0x0c0a,
- // Entry 100 - 13F
- 0x0c16, 0x0c22, 0x0c67, 0x0c73, 0x0c7f, 0x0c8e, 0x0c97, 0x0ca3,
- 0x0cac, 0x0cbb, 0x0cc4, 0x0cd0, 0x0cdc, 0x0ce8, 0x0cf7, 0x0d03,
- 0x0d12, 0x0d1b, 0x0d27, 0x0d30, 0x0d39, 0x0d45, 0x0d54, 0x0d60,
- 0x0d6f, 0x0d78, 0x0d84, 0x0d93, 0x0d9f, 0x0db7, 0x0dc0, 0x0dcc,
- 0x0dde, 0x0de4, 0x0df0, 0x0dfc, 0x0e05, 0x0e1e, 0x0e30, 0x0e42,
- 0x0e4e, 0x0e57, 0x0e63, 0x0e69, 0x0e72, 0x0e7e, 0x0e99, 0x0ea2,
- 0x0eb7, 0x0ec3, 0x0ed5, 0x0eea, 0x0ef6, 0x0eff, 0x0f0e, 0x0f17,
- 0x0f23, 0x0f2f, 0x0f41, 0x0f4a, 0x0f59, 0x0f62, 0x0f6b, 0x0f74,
- // Entry 140 - 17F
- 0x0f7d, 0x0f89, 0x0f98, 0x0fa7, 0x0fb0, 0x0fb6, 0x0fc2, 0x0fc8,
- 0x0fd1, 0x0fda, 0x0fe9, 0x0ff5, 0x1001, 0x1010, 0x102b, 0x1034,
- 0x1043, 0x104f, 0x1062, 0x1074, 0x1080, 0x1095, 0x10a1, 0x10aa,
- 0x10b3, 0x10bf, 0x10c8, 0x10d7, 0x10e3, 0x10ef, 0x10fb, 0x110d,
- 0x1116, 0x111f, 0x1128, 0x1131, 0x113a, 0x1146, 0x114f, 0x115e,
- 0x1167, 0x1173, 0x117f, 0x1198, 0x11a1, 0x11b0, 0x11bc, 0x11d5,
- 0x11f0, 0x11ff, 0x120e, 0x121a, 0x1226, 0x1232, 0x123b, 0x1247,
- 0x1253, 0x125f, 0x1268, 0x1274, 0x127d, 0x1289, 0x1298, 0x12a7,
- // Entry 180 - 1BF
- 0x12b6, 0x12c2, 0x12ce, 0x12d7, 0x12e0, 0x12ec, 0x12fb, 0x130d,
- 0x131c, 0x1328, 0x1331, 0x133a, 0x1343, 0x134c, 0x1355, 0x1361,
- 0x136a, 0x1376, 0x1382, 0x138e, 0x139a, 0x13a3, 0x13ac, 0x13b8,
- 0x13c1, 0x13ca, 0x13d3, 0x13f1, 0x1403, 0x140c, 0x1415, 0x1424,
- 0x1433, 0x143c, 0x144b, 0x1457, 0x1460, 0x146c, 0x1475, 0x1481,
- 0x148d, 0x149c, 0x14ab, 0x14b7, 0x14c3, 0x14d2, 0x14e1, 0x14ea,
- 0x14f6, 0x14ff, 0x150b, 0x1517, 0x1523, 0x152c, 0x153b, 0x1547,
- 0x1553, 0x155c, 0x156b, 0x1577, 0x158c, 0x1598, 0x15a4, 0x15b3,
- // Entry 1C0 - 1FF
- 0x15c2, 0x15d1, 0x15dd, 0x15e9, 0x15f5, 0x160a, 0x1616, 0x1622,
- 0x162e, 0x1640, 0x1649, 0x1655, 0x166a, 0x167c, 0x1688, 0x169a,
- 0x16a6, 0x16b5, 0x16c4, 0x16d0, 0x16dc, 0x16ee, 0x16f7, 0x1715,
- 0x1727, 0x1733, 0x1742, 0x1754, 0x1763, 0x176c, 0x1778, 0x1787,
- 0x1796, 0x17a5, 0x17b7, 0x17c0, 0x17cc, 0x17d8, 0x17f0, 0x17fc,
- 0x1808, 0x1814, 0x1826, 0x182f, 0x1838, 0x1844, 0x1850, 0x1869,
- 0x1878, 0x1884, 0x188d, 0x1896, 0x18a5, 0x18b1, 0x18c0, 0x18d2,
- 0x18de, 0x18e4, 0x18fc, 0x1908, 0x191a, 0x1926, 0x1932, 0x1941,
- // Entry 200 - 23F
- 0x1953, 0x1965, 0x1971, 0x1983, 0x1995, 0x19a1, 0x19aa, 0x19bc,
- 0x19c8, 0x19d1, 0x19da, 0x19e3, 0x19fe, 0x1a0d, 0x1a19, 0x1a28,
- 0x1a31, 0x1a3a, 0x1a43, 0x1a4f, 0x1a58, 0x1a64, 0x1a6d, 0x1a79,
- 0x1a85, 0x1a91, 0x1aa0, 0x1aac, 0x1abb, 0x1ad3, 0x1adf, 0x1aeb,
- 0x1af7, 0x1b09, 0x1b15, 0x1b27, 0x1b36, 0x1b42, 0x1b4e, 0x1b57,
- 0x1b69, 0x1b78, 0x1b84, 0x1b90, 0x1b99, 0x1ba2, 0x1bae, 0x1bba,
- 0x1bc9, 0x1be2, 0x1bee, 0x1bf7, 0x1c00, 0x1c09, 0x1c15, 0x1c1e,
- 0x1c27, 0x1c33, 0x1c39, 0x1c48, 0x1c57, 0x1c60, 0x1c66, 0x1c6f,
- // Entry 240 - 27F
- 0x1c78, 0x1c84, 0x1c93, 0x1c99, 0x1ca8, 0x1cb7, 0x1cc0, 0x1ccc,
- 0x1cea, 0x1cf3, 0x1d02, 0x1d0b, 0x1d23, 0x1d23, 0x1d23, 0x1d3b,
- 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b,
- 0x1d3b, 0x1d3b, 0x1d4d, 0x1d59, 0x1d59, 0x1d59, 0x1d68, 0x1d86,
- 0x1d92, 0x1d9e,
-} // Size: 1244 bytes
-
-var zuLangStr string = "" + // Size: 3045 bytes
- "isi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Arabicisi-Assameseisi-Aym" +
- "araisi-Azerbaijaniisi-Bashkirisi-Belarusianisi-Bulgariisi-Bambaraisi-Ben" +
- "galiisi-Tibetanisi-Bretonisi-Bosnianisi-Catalanisi-Chechenisi-Corsicanis" +
- "i-Czechisi-Chuvashisi-Welshisi-Danishisi-Germanisi-Divehiisi-Dzongkhaisi" +
- "-Eweisi-Greeki-Englishisi-Esperantoisi-Spanishisi-Estoniaisi-Basqueisi-P" +
- "ersianisi-Finnishisi-Fijianisi-Faroeseisi-Frenchisi-Western Frisianisi-I" +
- "rishi-Scottish Gaelicisi-Galiciaisi-Guaraniisi-Gujaratiisi-Manxisi-Hausa" +
- "isi-Hebrewisi-Hindiisi-Croatianisi-Haitianisi-Hungarianisi-ArmeniaIzilim" +
- "i ezihlangeneisi-Indonesianisi-Igboisi-Sichuan Yiisi-Icelandicisi-Italia" +
- "nisi-Inuktitutisi-Japaneseisi-Javaneseisi-GeorgianIsi-Kongoisi-Kikuyuisi" +
- "-Kazakhisi-Kalaallisutisi-Khmerisi-Kannadaisi-Koreanisi-Kashmiriisi-Kurd" +
- "ishisi-Cornishisi-Kyrgyzisi-Latinisi-Luxembourgishisi-Gandaisi-Lingalai-" +
- "Laoisi-Lithuanianisi-Luba-Katangaisi-Latvianisi-Malagasyisi-Maoriisi-Mac" +
- "edonianisi-Malayalamisi-Mongolianisi-Marathiisi-Malayisi-Malteseisi-Burm" +
- "eseisi-North Ndebeleisi-Nepaliisi-Dutchi-Norwegian Nynorskisi-Norwegian " +
- "Bokmålisi-NyanjaIsi-Osithanii-Oromoisi-Oriyaisi-Osseticisi-Punjabiisi-Po" +
- "lishisi-Pashtoisi-Portugueseisi-Quechuaisi-Romanshisi-Rundiisi-Romaniani" +
- "si-Russianisi-Kinyarwandaisi-Sanskritisi-Sindhiisi-Northern Samiisi-Sang" +
- "oi-Sinhalaisi-Slovakisi-Slovenianisi-SamoanisiShonaisi-Somaliisi-Albania" +
- "isi-SerbianisiSwatiisiSuthuisi-Sundaneseisi-SwedishisiSwahiliisi-Tamilis" +
- "i-Teluguisi-Tajikisi-Thaiisi-Tigrinyaisi-Turkmenisi-Tswanaisi-Tonganisi-" +
- "Turkishisi-Tsongaisi-Tatarisi-Tahitianisi-Uighurisi-Ukrainianisi-Urduisi" +
- "-Uzbekisi-Vendaisi-Vietnameseisi-WolofisiXhosaIsi-Yidishisi-Yorubaisi-Ch" +
- "ineseisiZuluIsi-Acoliisi-Aghemisi-Mapucheisi-Asuisi-Bembaisi-Benaisi-Wes" +
- "tern Balochiisi-Bodoisi-Chigaisi-Cherokeeisi-Central Kurdishisi-Taitaisi" +
- "-Zarmaisi-Lower Sorbianisi-Dualaisi-Jola-Fonylisi-Embuisi-Efikisi-Filipi" +
- "noIsi-Gaisi-Gagauzisi-Swiss Germanisi-Gusliisi-Hawaiianisi-Upper Sorbian" +
- "isi-Ngombaisi-Machameisi-Kabyleisi-Kambaisi-Makondeisi-Kabuverdianuisi-K" +
- "oyra Chiiniisi-Kalenjinisi-Komi-Permyakisi-KonkaniisiShambalaisi-Bafiais" +
- "i-Langiisi-LakotaIsi-Loziisi-Northern LuriIsi-Luba-Luluaisi-Luoisi-Luyia" +
- "isi-Masaiisi-Meruisi-Morisyenisi-Makhuwa-Meettoisi-Meta’isi-Mohawkisi-Mu" +
- "ndangisi-Mazanderaniisi-Namandsisi-Kwasioisi-N’Koisi-Northern Sothoisi-N" +
- "uerisi-Nyankoleisi-Kʼicheʼisi-Romboisi-Rwaisi-Samburuisi-Sangui-Southern" +
- " Kurdishisi-Senaisi-Koyraboro Senniisi-Tachelhitisi-Southern Samiisi-Lul" +
- "e Samiisi-Inari Samiisi-Skolt Samiisi-Congo Swahiliisi-Tesoisi-TetumIsi-" +
- "Klingonisi-Tok PisinIsi-Tumbukaisi-Tasawaqisi-Central Atlas Tamazightuli" +
- "mi olungaziwaisi-VaiisiVunjoisi-Warlpiriisi-Sogaisi-Standard Moroccan Ta" +
- "mazightakukho okuqukethwe kolimiisi-Arabic esivamile sesimanjeisi-Austri" +
- "an Germani-Swiss High Germanisi-Austrillian Englishi-Canadian Englishi-B" +
- "ritish Englishi-American Englishisi-Latin American Spanishi-European Spa" +
- "nishi-Mexican Spanishi-Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Fle" +
- "mishisi-Brazillian Portugueseisi-European Portugueseisi-Moldavianisi-Chi" +
- "nese (Okosiko)"
-
-var zuLangIdx = []uint16{ // 610 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000d, 0x000d, 0x0018, 0x0020, 0x002b, 0x002b,
- 0x0035, 0x0041, 0x0041, 0x004b, 0x005a, 0x0065, 0x0073, 0x007e,
- 0x007e, 0x0089, 0x0094, 0x009f, 0x00a9, 0x00b4, 0x00bf, 0x00ca,
- 0x00ca, 0x00d6, 0x00d6, 0x00df, 0x00df, 0x00ea, 0x00f3, 0x00fd,
- 0x0107, 0x0111, 0x011d, 0x0124, 0x012d, 0x0136, 0x0143, 0x014e,
- 0x0159, 0x0163, 0x016e, 0x016e, 0x0179, 0x0183, 0x018e, 0x0198,
- 0x01ab, 0x01b4, 0x01c5, 0x01d0, 0x01db, 0x01e7, 0x01ef, 0x01f8,
- 0x0202, 0x020b, 0x020b, 0x0217, 0x0222, 0x022f, 0x023a, 0x023a,
- // Entry 40 - 7F
- 0x024d, 0x025b, 0x025b, 0x0263, 0x0271, 0x0271, 0x0271, 0x027e,
- 0x0289, 0x0296, 0x02a2, 0x02ae, 0x02ba, 0x02c3, 0x02cd, 0x02cd,
- 0x02d7, 0x02e6, 0x02ef, 0x02fa, 0x0304, 0x0304, 0x0310, 0x031b,
- 0x031b, 0x0326, 0x0330, 0x0339, 0x034a, 0x0353, 0x0353, 0x035e,
- 0x0363, 0x0371, 0x0381, 0x038c, 0x0398, 0x0398, 0x03a1, 0x03af,
- 0x03bc, 0x03c9, 0x03d4, 0x03dd, 0x03e8, 0x03f3, 0x03f3, 0x0404,
- 0x040e, 0x040e, 0x0417, 0x042a, 0x043f, 0x043f, 0x043f, 0x0449,
- 0x0455, 0x0455, 0x045c, 0x0465, 0x0470, 0x047b, 0x047b, 0x0485,
- // Entry 80 - BF
- 0x048f, 0x049d, 0x04a8, 0x04b3, 0x04bc, 0x04c8, 0x04d3, 0x04e2,
- 0x04ee, 0x04ee, 0x04f8, 0x0509, 0x0512, 0x051b, 0x0525, 0x0532,
- 0x053c, 0x0544, 0x054e, 0x0559, 0x0564, 0x056c, 0x0574, 0x0581,
- 0x058c, 0x0596, 0x059f, 0x05a9, 0x05b2, 0x05ba, 0x05c6, 0x05d1,
- 0x05db, 0x05e5, 0x05f0, 0x05fa, 0x0603, 0x060f, 0x0619, 0x0626,
- 0x062e, 0x0637, 0x0640, 0x064e, 0x064e, 0x064e, 0x0657, 0x065f,
- 0x0669, 0x0673, 0x0673, 0x067e, 0x0685, 0x0685, 0x068e, 0x068e,
- 0x068e, 0x068e, 0x068e, 0x0697, 0x0697, 0x0697, 0x0697, 0x0697,
- // Entry C0 - FF
- 0x0697, 0x0697, 0x0697, 0x0697, 0x0697, 0x06a2, 0x06a2, 0x06a2,
- 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a9, 0x06a9, 0x06a9, 0x06a9,
- 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9,
- 0x06a9, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06cd, 0x06cd,
- 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd,
- 0x06cd, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5,
- 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06de, 0x06de, 0x06de,
- 0x06de, 0x06de, 0x06de, 0x06de, 0x06de, 0x06ea, 0x06ea, 0x06fd,
- // Entry 100 - 13F
- 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x0706, 0x0706,
- 0x0706, 0x0706, 0x0706, 0x070f, 0x070f, 0x0720, 0x0720, 0x0729,
- 0x0729, 0x0737, 0x0737, 0x0737, 0x073f, 0x0747, 0x0747, 0x0747,
- 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0753,
- 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753,
- 0x0753, 0x0759, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763,
- 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763,
- 0x0763, 0x0763, 0x0773, 0x0773, 0x0773, 0x077c, 0x077c, 0x077c,
- // Entry 140 - 17F
- 0x077c, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x0799, 0x0799,
- 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799,
- 0x07a3, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07b8, 0x07b8,
- 0x07b8, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cc, 0x07dc,
- 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07ec, 0x07ec, 0x07ec,
- 0x07ec, 0x07f8, 0x07f8, 0x0808, 0x0813, 0x0813, 0x0813, 0x0813,
- 0x0813, 0x0813, 0x0813, 0x0813, 0x081e, 0x0827, 0x0827, 0x0827,
- 0x0827, 0x0827, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830,
- // Entry 180 - 1BF
- 0x0830, 0x083a, 0x083a, 0x083a, 0x0842, 0x0853, 0x0853, 0x0861,
- 0x0861, 0x0861, 0x0868, 0x0868, 0x0871, 0x0871, 0x0871, 0x0871,
- 0x0871, 0x0871, 0x0871, 0x0871, 0x0871, 0x087a, 0x087a, 0x087a,
- 0x087a, 0x087a, 0x0882, 0x088e, 0x088e, 0x08a0, 0x08ab, 0x08ab,
- 0x08ab, 0x08ab, 0x08ab, 0x08b5, 0x08b5, 0x08b5, 0x08c0, 0x08c0,
- 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08cf, 0x08cf,
- 0x08cf, 0x08d7, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08e4,
- 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08ee, 0x0900, 0x0908, 0x0908,
- // Entry 1C0 - 1FF
- 0x0908, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914,
- 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914,
- 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0921, 0x0921,
- 0x0921, 0x0921, 0x0921, 0x0921, 0x0921, 0x092a, 0x092a, 0x092a,
- 0x092a, 0x092a, 0x092a, 0x0931, 0x0931, 0x0931, 0x0931, 0x093c,
- 0x093c, 0x093c, 0x093c, 0x093c, 0x0945, 0x0945, 0x0945, 0x0945,
- 0x0957, 0x0957, 0x095f, 0x095f, 0x095f, 0x0972, 0x0972, 0x0972,
- 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x0990, 0x099d,
- // Entry 200 - 23F
- 0x09ab, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9,
- 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09ca, 0x09ca, 0x09ca, 0x09ca,
- 0x09ca, 0x09ca, 0x09d2, 0x09d2, 0x09db, 0x09db, 0x09db, 0x09db,
- 0x09db, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09f3, 0x09f3,
- 0x09f3, 0x09f3, 0x09f3, 0x09f3, 0x09fe, 0x09fe, 0x0a09, 0x0a09,
- 0x0a24, 0x0a24, 0x0a24, 0x0a24, 0x0a34, 0x0a3b, 0x0a3b, 0x0a3b,
- 0x0a3b, 0x0a3b, 0x0a3b, 0x0a3b, 0x0a43, 0x0a43, 0x0a43, 0x0a43,
- 0x0a43, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a57, 0x0a57, 0x0a57,
- // Entry 240 - 27F
- 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57,
- 0x0a76, 0x0a76, 0x0a8f, 0x0a8f, 0x0aad, 0x0aad, 0x0ac0, 0x0ad3,
- 0x0aea, 0x0afc, 0x0b0d, 0x0b1f, 0x0b39, 0x0b4b, 0x0b5c, 0x0b5c,
- 0x0b6d, 0x0b7b, 0x0b88, 0x0b93, 0x0bac, 0x0bc3, 0x0bd0, 0x0bd0,
- 0x0bd0, 0x0be5,
-} // Size: 1244 bytes
-
-// Total size for lang: 896067 bytes (896 KB)
-
-// Number of keys: 167
-var (
- scriptIndex = tagIndex{
- "",
- "",
- "AfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBlisBopoBrahBraiBugiBuhd" +
- "CakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyhEgypElba" +
- "EthiGeokGeorGlagGothGranGrekGujrGuruHangHaniHanoHansHantHatrHebrHira" +
- "HluwHmngHrktHungIndsItalJavaJpanJurcKaliKanaKharKhmrKhojKndaKoreKpel" +
- "KthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMandMani" +
- "MayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkooNshu" +
- "OgamOlckOrkhOryaOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiRjngRoro" +
- "RunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrj" +
- "SyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhUgar" +
- "VaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsymZxxxZyyyZzzz",
- }
-)
-
-var scriptHeaders = [218]header{
- { // af
- afScriptStr,
- afScriptIdx,
- },
- {}, // agq
- {}, // ak
- { // am
- amScriptStr,
- amScriptIdx,
- },
- { // ar
- arScriptStr,
- arScriptIdx,
- },
- {}, // ar-EG
- { // as
- "বঙালী",
- []uint16{ // 13 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000f,
- },
- },
- {}, // asa
- { // ast
- "afakacáucaso-albanésahomárabearamaicu imperialarmeniuavésticubalinésbamu" +
- "mbassa vahbatakbengalínsímbolos de Blissbopomofobrahmibraillelontara" +
- "buhidchakmasilábicu unificáu de los nativos canadiensescariuchamcher" +
- "okicirthcoptuxipriotacirílicueslavónicu cirílicu eclesiásticu antigu" +
- "udevanagarialfabetu Deserettaquigrafía Duployédemóticu exipcianuhier" +
- "áticu exipcianuxeroglíficos exipcianoselbasanetíopekhutsuri xeorxan" +
- "uxeorxanuglagolíticugóticugranthagrieguguyaratigurmukhihangulhanhanu" +
- "nó’ohan simplificáuhan tradicionalhatranuhebréuḥiraganaxeroglíficos " +
- "anatoliospahawh hmongsilabarios xaponeseshúngaru antiguuindusitálicu" +
- " antiguuxavanésxaponésjurchenkayah likatakanakharoshthiḥemerkhojkica" +
- "naréscoreanukpellekaithilannalaosianufraktur llatíngaélicu llatínlla" +
- "tínlepchalimbullinial Allinial Balfabetu de Fraserlomaliciulidiumaha" +
- "janimandéumaniquéuxeroglíficos mayesmendemeroíticu en cursivameroíti" +
- "cumalayalammodimongoltipos Moonmromeitei mayekmultanibirmanuárabe de" +
- "l norte antiguunabatéugeba del naxin’konüshuoghamol chikiorkhonoriya" +
- "osmanyapalmirenuPau Cin Haupérmicu antiguuescritura ‘Phags-papahlavi" +
- " d’inscripcionespahlavi de salteriupahlavi de llibrosfeniciufonéticu" +
- " de Pollardpartu d’inscripcionesrejangrongorongorunessamaritanusarat" +
- "iárabe del sur antiguusaurashtraescritura de signosshavianusharadasi" +
- "ddhamkhudabadicingaléssora sompengsondanéssyloti nagrisiriacusiriacu" +
- " estrangelosiriacu occidentalsiriacu orientaltagbanwatakritai letai " +
- "lue nuevutamiltanguttai viettelugutengwartifinaghtagalogthaanatailan" +
- "déstibetanutirhutaugaríticuvaifala visiblevarang kshitiwoleaipersa a" +
- "ntiguucuneiforme sumeriu acadiuyiheredáuescritura matemáticasímbolos" +
- "non escritucomúnescritura desconocida",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0016, 0x001a, 0x0020, 0x0031, 0x0038, 0x0041,
- 0x0049, 0x004e, 0x0057, 0x005c, 0x0065, 0x0077, 0x007f, 0x0085,
- 0x008c, 0x0093, 0x0098, 0x009e, 0x00cc, 0x00d1, 0x00d5, 0x00dc,
- 0x00e1, 0x00e6, 0x00ee, 0x00f7, 0x0122, 0x012c, 0x013c, 0x0151,
- 0x0164, 0x0178, 0x0190, 0x0197, 0x019e, 0x01af, 0x01b7, 0x01c3,
- 0x01ca, 0x01d1, 0x01d7, 0x01df, 0x01e7, 0x01ed, 0x01f0, 0x01fb,
- 0x020b, 0x021a, 0x0221, 0x0228, 0x0232, 0x0249, 0x0255, 0x0269,
- 0x0279, 0x027e, 0x028e, 0x0296, 0x029e, 0x02a5, 0x02ad, 0x02b5,
- // Entry 40 - 7F
- 0x02bf, 0x02c6, 0x02cc, 0x02d4, 0x02db, 0x02e1, 0x02e7, 0x02ec,
- 0x02f4, 0x0303, 0x0313, 0x031a, 0x0320, 0x0325, 0x032e, 0x0337,
- 0x0349, 0x034d, 0x0352, 0x0357, 0x035f, 0x0366, 0x036f, 0x0382,
- 0x0387, 0x039c, 0x03a6, 0x03af, 0x03b3, 0x03b9, 0x03c3, 0x03c6,
- 0x03d2, 0x03d9, 0x03e0, 0x03f8, 0x0400, 0x040d, 0x0413, 0x0419,
- 0x041e, 0x0426, 0x042c, 0x0431, 0x0438, 0x0441, 0x044c, 0x045c,
- 0x0471, 0x048a, 0x049d, 0x04af, 0x04b6, 0x04ca, 0x04e1, 0x04e7,
- 0x04f1, 0x04f6, 0x0500, 0x0506, 0x051c, 0x0526, 0x0539, 0x0541,
- // Entry 80 - BF
- 0x0548, 0x054f, 0x0558, 0x0561, 0x056d, 0x0576, 0x0582, 0x0589,
- 0x059b, 0x05ad, 0x05bd, 0x05c5, 0x05ca, 0x05d0, 0x05dd, 0x05e2,
- 0x05e8, 0x05f0, 0x05f6, 0x05fd, 0x0605, 0x060c, 0x0612, 0x061c,
- 0x0624, 0x062b, 0x0635, 0x0638, 0x0644, 0x0651, 0x0657, 0x0664,
- 0x067d, 0x067f, 0x0687, 0x069c, 0x06a5, 0x06b0, 0x06b6, 0x06cb,
- },
- },
- { // az
- azScriptStr,
- azScriptIdx,
- },
- { // az-Cyrl
- "Кирил",
- []uint16{ // 28 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x000a,
- },
- },
- {}, // bas
- { // be
- "арабскаеармянскаебенгальскаебапамофашрыфт Брайлякірыліцадэванагарыэфіопс" +
- "каегрузінскаегрэчаскаегуджараціГурмукхіхангыльханспрошчаны хантрады" +
- "цыйны ханяўрэйскаехіраганаяпонскаекатаканакхмерскаеканадакарэйскаел" +
- "аоскаелацінкамалаяламстарамангольскаем’янмарскаеорыясінгальскаетамі" +
- "льскаетэлугутанатайскаетыбецкаесімвалынепісьменнызвычайнаеневядомае" +
- " пісьмо",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0038, 0x0038, 0x0048, 0x0048,
- 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
- 0x005f, 0x005f, 0x005f, 0x006f, 0x006f, 0x0083, 0x0083, 0x0083,
- 0x0083, 0x0083, 0x0083, 0x0083, 0x0095, 0x0095, 0x00a9, 0x00a9,
- 0x00a9, 0x00a9, 0x00bb, 0x00cd, 0x00dd, 0x00eb, 0x00f1, 0x00f1,
- 0x010a, 0x0125, 0x0125, 0x0137, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0157, 0x0157, 0x0157, 0x0167,
- // Entry 40 - 7F
- 0x0167, 0x0179, 0x0179, 0x0185, 0x0197, 0x0197, 0x0197, 0x0197,
- 0x01a5, 0x01a5, 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
- 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
- 0x01b3, 0x01b3, 0x01b3, 0x01c3, 0x01c3, 0x01e3, 0x01e3, 0x01e3,
- 0x01e3, 0x01e3, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa,
- 0x01fa, 0x01fa, 0x01fa, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
- 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
- 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
- // Entry 80 - BF
- 0x0202, 0x0202, 0x0202, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218,
- 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x022c,
- 0x022c, 0x022c, 0x0238, 0x0238, 0x0238, 0x0238, 0x0240, 0x024e,
- 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
- 0x025e, 0x025e, 0x025e, 0x025e, 0x026c, 0x0282, 0x0294, 0x02b3,
- },
- },
- {}, // bem
- {}, // bez
- { // bg
- bgScriptStr,
- bgScriptIdx,
- },
- {}, // bm
- { // bn
- bnScriptStr,
- bnScriptIdx,
- },
- { // bo
- "རྒྱ་ཡིག་གསར་པ།རྒྱ་ཡིག་རྙིང་པ།བོད་ཡིག་སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་" +
- "ཟིན་ཐོ།",
- []uint16{ // 166 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x002a, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- // Entry 40 - 7F
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- // Entry 80 - BF
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00eb,
- },
- },
- {}, // bo-IN
- { // br
- "arabekarameek impalaerelarmenianekavestekbalinekbengalibopomofoBraillebo" +
- "ugiekkoptekkirillekkirillek henslavonekdevanagarihieroglifoù egiptek" +
- "etiopekjorjianekglagolitekgotekgresianekgujaratigurmukhihangeulhanha" +
- "n eeunaethan hengounelhebraekhiraganahieroglifoù Anatoliahenitalekja" +
- "vanekjapanekkatakanakhmerkannadakoreaneklaoseklatin gouezeleklatinhi" +
- "eroglifoù mayaekmalayalammongolekmyanmarogamoriyaruneksinghaleksunda" +
- "neksirieksiriek Estrangelāsiriek ar C’hornôgsiriek ar Retertamilekte" +
- "lougoutagalogthaanathaitibetanekougaritekvaipersek kozhnotadur jedon" +
- "ielarouezioùanskrivetboutinskritur dianav",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0018, 0x0022, 0x0029,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0037, 0x0037, 0x003f, 0x003f,
- 0x0046, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x0053, 0x0053, 0x005b, 0x006f, 0x0079, 0x0079, 0x0079,
- 0x0079, 0x0079, 0x008d, 0x008d, 0x0094, 0x0094, 0x009d, 0x00a7,
- 0x00ac, 0x00ac, 0x00b5, 0x00bd, 0x00c5, 0x00cc, 0x00cf, 0x00cf,
- 0x00da, 0x00e7, 0x00e7, 0x00ee, 0x00f6, 0x010b, 0x010b, 0x010b,
- 0x010b, 0x010b, 0x0114, 0x011b, 0x0122, 0x0122, 0x0122, 0x012a,
- // Entry 40 - 7F
- 0x012a, 0x012f, 0x012f, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e,
- 0x0144, 0x0144, 0x0153, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
- 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x016b,
- 0x016b, 0x016b, 0x016b, 0x0174, 0x0174, 0x017c, 0x017c, 0x017c,
- 0x017c, 0x017c, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
- 0x0187, 0x0187, 0x0187, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c,
- 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c,
- 0x018c, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191,
- // Entry 80 - BF
- 0x0191, 0x0191, 0x0191, 0x019a, 0x019a, 0x01a2, 0x01a2, 0x01a8,
- 0x01ba, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e5,
- 0x01e5, 0x01e5, 0x01ed, 0x01ed, 0x01ed, 0x01f4, 0x01fa, 0x01fe,
- 0x0207, 0x0207, 0x0210, 0x0213, 0x0213, 0x0213, 0x0213, 0x021e,
- 0x021e, 0x021e, 0x021e, 0x022e, 0x0238, 0x0241, 0x0247, 0x0255,
- },
- },
- { // brx
- "अरबीशहनशाही आरामाईकअर्मेनियाईअवस्तन्बालीबटकीबंगालीब्लीस चीन्हबोपोमोफोब्र" +
- "ह्मीब्रेलबुगीनीबुहीदयुनीफाईड कैनेडियन अबॉरीजीनल सीलैबीक्सकारियनकॅम" +
- "चिरूकीसिर्थकॉप्टसीप्रीओट्सिरिलिक्पुरानी चर्च सिरिलिक्देवनागरीदेसेर" +
- "ट्मीस्री डैमोटीक्मीस्री हैरैटीक्मीस्री हैरोग्लीफ़्ईथोपियाईजोर्जीयन" +
- " खुतसुरीजोर्जीयनग्लैगोलिटीकगौथीकग्रीकगुजरातीगुरमुखीहंगुलहानहानुनुसरल" +
- "ीकृत हानपारम्परिक हानहिब्रूहीरागानापाहवाह ह्मौंगकाताकाना या हीरागा" +
- "नापुरानी हंगैरीयनसिन्धुपुरानी इटैलियनजावानीसजापानीकायाह लीकाताकाना" +
- "खरोष्टीख्मेरकन्नड़कोरियाईलानालाओफ्रैक्तुर लैटिनगैलीक लैटिनलैटिनलेप" +
- "चालिम्बुलीनीयर एलीनीयर बीलीसीयनलीडीयनमांडेमानीकीमाया हीरोग्लीफ्मेर" +
- "ोईटीक्मलयालम्मंगोलियाईमुन्मेतेई मयेकम्यानमार्न्गकोओगहैमओल चीकीओरखो" +
- "नउड़ियाओस्मानियापुरानी पर्मीक्फाग्स पाबुक (सालटर) पहलवीफोनीशीयनपौल" +
- "ार्ड़ फोनेटीकरेजेंगरोंगोरोंगोरूनिकसमारतीसरातीसौराष्ट्रसांकेतिक लेख" +
- "शेवियनसिंहालीसूडानीसील्होटी नागरीसीरीआकएस्ट्रांगलो सीरीआकपश्चीमी स" +
- "ीरीआकपूर्वी सीरीआकतागबानवाताई लेनया ताई लुएतमीळतेलुगुतेंगवारतीफीना" +
- "ग़टागालॉगथानाथाईतिब्बतीऊगारीटीकवाईवीज़ीबल बोलीपुरानी फारसीसुमेरो अ" +
- "क्काड़ी कुनेईफॉर्मयीविरासतअलिखितआमअज्ञात या अवैध लिपि",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0037, 0x0055, 0x006a,
- 0x0076, 0x0076, 0x0076, 0x0082, 0x0094, 0x00b3, 0x00cb, 0x00e0,
- 0x00ef, 0x0101, 0x0110, 0x0110, 0x0179, 0x018b, 0x0194, 0x01a6,
- 0x01b5, 0x01c4, 0x01df, 0x01f7, 0x022f, 0x0247, 0x025c, 0x025c,
- 0x0287, 0x02b2, 0x02e6, 0x02e6, 0x02fe, 0x032c, 0x0344, 0x0365,
- 0x0374, 0x0374, 0x0383, 0x0398, 0x03ad, 0x03bc, 0x03c5, 0x03d7,
- 0x03f6, 0x041b, 0x041b, 0x042d, 0x0445, 0x0445, 0x046a, 0x04a2,
- 0x04cd, 0x04df, 0x0507, 0x051c, 0x052e, 0x052e, 0x0544, 0x055c,
- // Entry 40 - 7F
- 0x0571, 0x0580, 0x0580, 0x0592, 0x05a7, 0x05a7, 0x05a7, 0x05b3,
- 0x05bc, 0x05e7, 0x0606, 0x0615, 0x0624, 0x0636, 0x064c, 0x0665,
- 0x0665, 0x0665, 0x0677, 0x0689, 0x0689, 0x0698, 0x06aa, 0x06d5,
- 0x06d5, 0x06d5, 0x06f0, 0x0705, 0x0705, 0x0720, 0x072c, 0x072c,
- 0x0748, 0x0748, 0x0763, 0x0763, 0x0763, 0x0763, 0x0772, 0x0772,
- 0x0781, 0x0794, 0x07a3, 0x07b5, 0x07d0, 0x07d0, 0x07d0, 0x07f8,
- 0x080e, 0x080e, 0x080e, 0x0839, 0x0851, 0x087f, 0x087f, 0x0891,
- 0x08af, 0x08be, 0x08d0, 0x08df, 0x08df, 0x08fa, 0x091c, 0x092e,
- // Entry 80 - BF
- 0x092e, 0x092e, 0x092e, 0x0943, 0x0943, 0x0955, 0x097d, 0x098f,
- 0x09c3, 0x09eb, 0x0a10, 0x0a28, 0x0a28, 0x0a38, 0x0a55, 0x0a61,
- 0x0a61, 0x0a61, 0x0a73, 0x0a88, 0x0aa0, 0x0ab5, 0x0ac1, 0x0aca,
- 0x0adf, 0x0adf, 0x0af7, 0x0b00, 0x0b22, 0x0b22, 0x0b22, 0x0b44,
- 0x0b8e, 0x0b94, 0x0ba6, 0x0ba6, 0x0ba6, 0x0bb8, 0x0bbe, 0x0bf1,
- },
- },
- { // bs
- "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" +
- "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pi" +
- "smobramansko pismobrajevo pismobuginsko pismobuhidsko pismočakmansko" +
- " pismoUjedinjeni kanadski aboridžinski silabicikarijsko pismočamsko " +
- "pismočerokicirt pismokoptičko pismokiparsko pismoćirilicaStarosloven" +
- "ska crkvena ćirilicadevanagaridezeretegipatsko narodno pismoegipatsk" +
- "o hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khuts" +
- "uri pismogruzijsko pismoglagoljicagotikagrčko pismogudžarati pismogu" +
- "rmuki pismohangul pismohan pismohanuno pismopojednostavljeno hansko " +
- "pismotradicionalno hansko pismohebrejsko pismohiraganapahawh hmong p" +
- "ismoKatakana ili HiraganaStaromađarsko pismoinduško ismostaro italsk" +
- "o pismojavansko pismojapansko pismokajah li pismokatakanakarošti pis" +
- "mokmersko pismokanada pismokorejsko pismokaićansko pismolanna pismol" +
- "aosko pismolatinica (fraktur varijanta)galska latinicalatinicalepča " +
- "pismolimbu pismolinearno A pismolinearno B pismolisijsko pismolidijs" +
- "ko pismomandeansko pismomanihejsko pismomajanski hijeroglifimeroitik" +
- " pismomalajalam pismomongolsko pismomesečevo pismomeitei majek pismo" +
- "mijanmarsko pismon’ko pismoogham pismool čiki pismoorkhon pismoorija" +
- " pismoosmanja pismostaro permiksko pismophags-pa pismopisani pahlavi" +
- "psalter pahlavipahlavi pismofeničansko pismopolard fonetsko pismopis" +
- "ani partianrejang pismorongorongo pismorunsko pismosamaritansko pism" +
- "osarati pismosauraštra pismoznakovno pismošavian pismosinhala pismos" +
- "iloti nagri pismosirijsko pismosirijsko estrangelo pismozapadnosirij" +
- "sko pismopismo istočne Sirijetagbanva pismotai le pismonovo tai lue " +
- "pismotamilsko pismotai viet pismotelugu pismotengvar pismotifinag pi" +
- "smotagalogtana pismotajlandsko pismotibetansko pismougaritsko pismov" +
- "ai pismovidljivi govorstaropersijsko pismosumersko-akadsko kuneiform" +
- " pismoji pismonasledno pismomatematička notacijasimbolinepisani jezi" +
- "kzajedničko pismonepoznato pismo",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046,
- 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f,
- 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124,
- 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185,
- 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a,
- 0x0210, 0x0210, 0x021c, 0x022c, 0x0239, 0x0245, 0x024e, 0x025a,
- 0x0277, 0x0291, 0x0291, 0x02a0, 0x02a8, 0x02a8, 0x02ba, 0x02cf,
- 0x02e3, 0x02f0, 0x0303, 0x0311, 0x031f, 0x031f, 0x032d, 0x0335,
- // Entry 40 - 7F
- 0x0343, 0x0350, 0x0350, 0x035c, 0x036a, 0x036a, 0x037a, 0x0385,
- 0x0391, 0x03ad, 0x03bc, 0x03c4, 0x03d0, 0x03db, 0x03eb, 0x03fb,
- 0x03fb, 0x03fb, 0x0409, 0x0417, 0x0417, 0x0427, 0x0437, 0x044b,
- 0x044b, 0x044b, 0x0459, 0x0468, 0x0468, 0x0477, 0x0486, 0x0486,
- 0x0498, 0x0498, 0x04a9, 0x04a9, 0x04a9, 0x04a9, 0x04b5, 0x04b5,
- 0x04c0, 0x04ce, 0x04da, 0x04e5, 0x04f2, 0x04f2, 0x04f2, 0x0507,
- 0x0515, 0x0523, 0x0532, 0x053f, 0x0550, 0x0565, 0x0573, 0x057f,
- 0x058f, 0x059b, 0x05ad, 0x05b9, 0x05b9, 0x05c9, 0x05d7, 0x05e4,
- // Entry 80 - BF
- 0x05e4, 0x05e4, 0x05e4, 0x05f1, 0x05f1, 0x05f1, 0x0603, 0x0611,
- 0x062a, 0x063f, 0x0654, 0x0662, 0x0662, 0x066e, 0x0680, 0x068e,
- 0x068e, 0x069c, 0x06a8, 0x06b5, 0x06c2, 0x06c9, 0x06d3, 0x06e3,
- 0x06f3, 0x06f3, 0x0702, 0x070b, 0x0719, 0x0719, 0x0719, 0x072d,
- 0x074d, 0x0755, 0x0763, 0x0778, 0x077f, 0x078d, 0x079e, 0x07ad,
- },
- },
- { // bs-Cyrl
- "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" +
- "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо п" +
- "исмобраманско писмоБрајево писмобугинско писмобухидско писмочакманс" +
- "ко писмоуједињени канадски абориџински силабицикаријско писмочамско" +
- " писмоЧерокицирт писмокоптичко писмокипарско писмоЋирилицаСтарослове" +
- "нска црквена ћирилицаДеванагариДезеретегипатско народно писмоегипат" +
- "ско хијератско писмоегипатски хијероглифиетиопско писмогрузијско кх" +
- "утсури писмогрузијско писмоглагољицаГотикагрчко писмогујарати писмо" +
- "гурмуки писмохангулханханунопоједностављени хантрадиционални ханхеб" +
- "рејско писмоХираганапахав хмонг писмоКатакана или Хираганастаромађа" +
- "рско писмоиндушко писмостари италикјаванско писмојапанско писмокаја" +
- "х-ли писмоКатаканакарошти писмокмерско писмоканнада писмокорејско п" +
- "исмокаитиланна писмолаошко писмолатиница (фрактур варијанта)галска " +
- "латиницаЛатиницалепча писмолимбу писмолинеарно А писмолинеарно Б пи" +
- "смолисијско писмолидијско писмомандеанско писмоманихејско писмомаја" +
- "нски хијероглифимероитик писмомалајалам писмомонголско писмомесечев" +
- "о писмомеитеи мајек писмомијанмарско писмон’ко писмоогамско писмоол" +
- " чики писмоорконско писмооријанско писмоосмањанско писмостаро пермик" +
- "ско писмопагс-па писмописани пахлавипсалтер пахлавипахлави писмоФен" +
- "ичанско писмопоралд фонетско писмописани партианрејанг писморонгоро" +
- "нго писморунско писмосамаританско писмосарати писмосаураштра писмоз" +
- "наковно писмошавијанско писмосинхала писмосилоти нагри писмосиријск" +
- "о писмосиријско естрангело писмозападносиријско писмописмо источне " +
- "Сиријетагбанва писмотаи ле писмонови таи луетамилско писмотаи виет " +
- "писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмотајлан" +
- "дско писмотибетанско писмоугаритско писмоваи писмовидљиви говорстар" +
- "оперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно пи" +
- "смоматематичка нотацијасимболиНеписани језикзаједничко писмоНепозна" +
- "то или неважеће писмо",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087,
- 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131,
- 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226,
- 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd,
- 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc,
- 0x03e8, 0x03e8, 0x03fd, 0x0418, 0x0431, 0x043d, 0x0443, 0x044f,
- 0x0474, 0x0495, 0x0495, 0x04b2, 0x04c2, 0x04c2, 0x04e2, 0x050a,
- 0x052f, 0x0548, 0x055f, 0x057a, 0x0595, 0x0595, 0x05af, 0x05bf,
- // Entry 40 - 7F
- 0x05d8, 0x05f1, 0x05f1, 0x060a, 0x0625, 0x0625, 0x062f, 0x0644,
- 0x065b, 0x068f, 0x06ac, 0x06bc, 0x06d1, 0x06e6, 0x0704, 0x0722,
- 0x0722, 0x0722, 0x073d, 0x0758, 0x0758, 0x0777, 0x0796, 0x07bd,
- 0x07bd, 0x07bd, 0x07d8, 0x07f5, 0x07f5, 0x0812, 0x082d, 0x082d,
- 0x084f, 0x084f, 0x0870, 0x0870, 0x0870, 0x0870, 0x0884, 0x0884,
- 0x089d, 0x08b5, 0x08d0, 0x08ed, 0x090c, 0x090c, 0x090c, 0x0934,
- 0x094c, 0x0967, 0x0984, 0x099d, 0x09bc, 0x09e4, 0x09ff, 0x0a16,
- 0x0a35, 0x0a4c, 0x0a6f, 0x0a86, 0x0a86, 0x0aa3, 0x0abe, 0x0add,
- // Entry 80 - BF
- 0x0add, 0x0add, 0x0add, 0x0af6, 0x0af6, 0x0af6, 0x0b18, 0x0b33,
- 0x0b63, 0x0b8c, 0x0bb2, 0x0bcd, 0x0bcd, 0x0be3, 0x0bf9, 0x0c14,
- 0x0c14, 0x0c2e, 0x0c45, 0x0c5e, 0x0c77, 0x0c85, 0x0c9a, 0x0cb9,
- 0x0cd8, 0x0cd8, 0x0cf5, 0x0d06, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d46,
- 0x0d83, 0x0d92, 0x0dad, 0x0dd4, 0x0de2, 0x0dfd, 0x0e1c, 0x0e51,
- },
- },
- { // ca
- caScriptStr,
- caScriptIdx,
- },
- { // ce
- "Ӏаьрбийнэрмалойнбенгалхойнбопомофобрайлякириллицадеванагариэфиопингуьржи" +
- "йнгрекийнгуджаратигурмукхихангылькитайнатта китайнламастан китайнжу" +
- "гтийнхираганаяпонийнкатаканакхмерийнканнадакорейнлаоссийнлатинанмал" +
- "аялийнмонголийнмьянманийнорисингалхойнтамилхойнтелугутаанатайнтибет" +
- "хойнсимволашйоза доцумассара а тӀеэцнадоьвзуш доцу йоза",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044,
- 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
- 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x0076, 0x0076, 0x0076,
- 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0094, 0x0094,
- 0x0094, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d2, 0x00de, 0x00de,
- 0x00f3, 0x0110, 0x0110, 0x011e, 0x012e, 0x012e, 0x012e, 0x012e,
- 0x012e, 0x012e, 0x012e, 0x012e, 0x013c, 0x013c, 0x013c, 0x014c,
- // Entry 40 - 7F
- 0x014c, 0x015c, 0x015c, 0x016a, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0186, 0x0186, 0x0186, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
- 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
- 0x0194, 0x0194, 0x0194, 0x01a6, 0x01a6, 0x01b8, 0x01b8, 0x01b8,
- 0x01b8, 0x01b8, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
- 0x01cc, 0x01cc, 0x01cc, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
- 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
- 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
- // Entry 80 - BF
- 0x01d2, 0x01d2, 0x01d2, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f8,
- 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204, 0x020e, 0x0216,
- 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
- 0x0228, 0x0228, 0x0228, 0x0228, 0x0238, 0x0249, 0x0269, 0x0289,
- },
- },
- {}, // cgg
- { // chr
- "ᎡᎳᏈᎩᏣᎳᎩᏲᏂᎢ ᏗᎪᏪᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤᏦᏍᏗ ᏓᎶᏂᎨᎳᏗᎾᏄᏬᎵᏍᏛᎾ ᎠᏍᏓᏩᏛᏍᏙᏗ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x0044, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- // Entry 40 - 7F
- 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- 0x005d, 0x005d, 0x005d, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- // Entry 80 - BF
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0091,
- },
- },
- { // ckb
- "عەرەبیئەرمەنیبەنگالیبۆپۆمۆفۆبرەیلسریلیکدەڤەناگەریئەتیۆپیکگورجییۆنانیگوجە" +
- "راتیگورموکھیھانگولهیبرێھیراگاناژاپۆنیکاتاکاناخمێریکەنەداکۆریاییلاول" +
- "اتینیمالایالاممەنگۆلیمیانمارئۆریاسینھالاتامیلیتیلوگوتانەتایلەندی",
- []uint16{ // 152 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001a, 0x001a,
- 0x001a, 0x001a, 0x001a, 0x001a, 0x0028, 0x0028, 0x0038, 0x0038,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x004e, 0x004e, 0x0062, 0x0062, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0072, 0x0072, 0x007c, 0x007c,
- 0x007c, 0x007c, 0x0088, 0x0098, 0x00a8, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00be, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00da, 0x00da, 0x00da, 0x00ea,
- // Entry 40 - 7F
- 0x00ea, 0x00f4, 0x00f4, 0x0100, 0x010e, 0x010e, 0x010e, 0x010e,
- 0x0114, 0x0114, 0x0114, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
- 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
- 0x0120, 0x0120, 0x0120, 0x0132, 0x0132, 0x0140, 0x0140, 0x0140,
- 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
- 0x014e, 0x014e, 0x014e, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
- 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
- 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
- // Entry 80 - BF
- 0x0158, 0x0158, 0x0158, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
- 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0172,
- 0x0172, 0x0172, 0x017e, 0x017e, 0x017e, 0x017e, 0x0186, 0x0196,
- },
- },
- { // cs
- csScriptStr,
- csScriptIdx,
- },
- { // cy
- "ArabaiddArmenaiddBengalaiddBopomofoBrailleCyriligDevanagariEthiopigGeorg" +
- "aiddGroegaiddGwjarataiddGwrmwciHangulHanHan symledigHan traddodiadol" +
- "HebreigHiraganaJapaneaiddCatacanaChmeraiddCanaraiddCoreaiddLaoaiddLl" +
- "adinMalayalamaiddMongolaiddMyanmaraiddOgamOrïaiddSinhanaiddTamilaidd" +
- "TeluguThaanaTaiTibetaiddSymbolauAnysgrifenedigCyffredinSgript anhysb" +
- "ys",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x001b, 0x001b, 0x0023, 0x0023,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x0031, 0x0031, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x004c, 0x004c,
- 0x004c, 0x004c, 0x0055, 0x0060, 0x0067, 0x006d, 0x0070, 0x0070,
- 0x007c, 0x008c, 0x008c, 0x0093, 0x009b, 0x009b, 0x009b, 0x009b,
- 0x009b, 0x009b, 0x009b, 0x009b, 0x00a5, 0x00a5, 0x00a5, 0x00ad,
- // Entry 40 - 7F
- 0x00ad, 0x00b6, 0x00b6, 0x00bf, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
- 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
- 0x00d4, 0x00d4, 0x00d4, 0x00e1, 0x00e1, 0x00eb, 0x00eb, 0x00eb,
- 0x00eb, 0x00eb, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6,
- 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
- // Entry 80 - BF
- 0x0102, 0x0102, 0x0102, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
- 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0115,
- 0x0115, 0x0115, 0x011b, 0x011b, 0x011b, 0x011b, 0x0121, 0x0124,
- 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
- 0x012d, 0x012d, 0x012d, 0x012d, 0x0135, 0x0143, 0x014c, 0x015b,
- },
- },
- { // da
- daScriptStr,
- daScriptIdx,
- },
- {}, // dav
- { // de
- deScriptStr,
- deScriptIdx,
- },
- {}, // de-CH
- {}, // dje
- { // dsb
- "arabskiarmeńskibengalskibopomofobraillowe pismokyriliskidevanagarietiopi" +
- "skigeorgiskigrichiskigujaratigurmukhihangulhanzjadnorjone hantradici" +
- "onalne hanhebrejskihiraganajapańskikatakanakhmerkannadakorejskilaosk" +
- "iłatyńskimalayalamskimongolskiburmaskioriyasinghaleskitamilskitelugu" +
- "thaanathaiskitibetskisymbolebźez pismapowšyknenjeznate pismo",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0021, 0x0021,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, 0x004c, 0x0055, 0x0055,
- 0x0055, 0x0055, 0x005e, 0x0066, 0x006e, 0x0074, 0x0077, 0x0077,
- 0x0086, 0x0097, 0x0097, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
- 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b1, 0x00b1, 0x00b1, 0x00b9,
- // Entry 40 - 7F
- 0x00b9, 0x00be, 0x00be, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00d3, 0x00d3, 0x00d3, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00dd, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00f2,
- 0x00f2, 0x00f2, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
- 0x00fa, 0x00fa, 0x00fa, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- // Entry 80 - BF
- 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
- 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0112,
- 0x0112, 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011e, 0x0125,
- 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
- 0x012d, 0x012d, 0x012d, 0x012d, 0x0134, 0x013f, 0x0148, 0x0156,
- },
- },
- {}, // dua
- {}, // dyo
- { // dz
- "ཨེ་ར་བིཀ་ཡིག་གུཨར་མི་ནི་ཡཱན་ཡིག་གུབངྒ་ལ་ཡིག་གུབོ་པོ་མོ་ཕཱོ་ཡིག་གུའབུར་ཡི" +
- "གསིརིལ་ལིཀ་ཡིག་གུདེ་ཝ་ན་ག་རི་ཡིག་གུཨི་ཐི་ཡོ་པིཀ྄་ཡིག་གུཇཽ་ཇི་ཡཱན་ཡ" +
- "ིག་གུགྲིཀ་ཡིག་གུགུ་ཇ་ར་ཏི་ཡིག་གུགུ་རུ་མུ་ཁ་ཡིག་གུཧཱན་གུལ་ཡིག་གུརྒྱ" +
- "་ནག་ཡིག་གུརྒྱ་ཡིག་ ལུགས་གསར་ལུགས་རྙིང་ རྒྱ་ཡིགཧེ་བྲུ་ཡིག་གུཇ་པཱན་ག" +
- "ྱི་ཧི་ར་ག་ན་ཡིག་གུཇ་པཱན་ཡིག་གུཇ་པཱན་གྱི་ཀ་ཏ་ཀ་ན་ཡིག་གུཁེ་མེར་ཡིག་ག" +
- "ུཀ་ན་ཌ་ཡིག་གུཀོ་རི་ཡཱན་ཡིག་གུལའོ་ཡིག་གུལེ་ཊིན་ཡིག་གུམ་ལ་ཡ་ལམ་ཡིག་ག" +
- "ུསོག་པོའི་ཡིག་གུབར་མིས་ཡིག་གུཨོ་རི་ཡ་ཡིག་གུསིན་ཧ་ལ་རིག་གུཏ་མིལ་ཡིག" +
- "་གུཏེ་ལུ་གུ་ཡིག་གུཐཱ་ན་ཡིག་གུཐཱའི་ཡིག་གུང་བཅས་ཀྱི་ཡིག་གུམཚན་རྟགསཡི" +
- "ག་ཐོག་མ་བཀོདཔསྤྱིཡིགངོ་མ་ཤེས་པའི་ཡི་གུ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x002d, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x008a, 0x008a, 0x00c3, 0x00c3,
- 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00db, 0x010b, 0x010b, 0x0141, 0x0141, 0x0141,
- 0x0141, 0x0141, 0x0141, 0x0141, 0x017d, 0x017d, 0x01ad, 0x01ad,
- 0x01ad, 0x01ad, 0x01ce, 0x01fe, 0x0231, 0x025b, 0x0282, 0x0282,
- 0x02b6, 0x02ea, 0x02ea, 0x0311, 0x035c, 0x035c, 0x035c, 0x035c,
- 0x035c, 0x035c, 0x035c, 0x035c, 0x0380, 0x0380, 0x0380, 0x03c8,
- // Entry 40 - 7F
- 0x03c8, 0x03ef, 0x03ef, 0x0413, 0x0443, 0x0443, 0x0443, 0x0443,
- 0x0461, 0x0461, 0x0461, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488,
- 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488,
- 0x0488, 0x0488, 0x0488, 0x04b5, 0x04b5, 0x04e2, 0x04e2, 0x04e2,
- 0x04e2, 0x04e2, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
- 0x0509, 0x0509, 0x0509, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
- 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
- 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
- // Entry 80 - BF
- 0x0533, 0x0533, 0x0533, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
- 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0581,
- 0x0581, 0x0581, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05cf, 0x05f0,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0638, 0x0665, 0x067a, 0x06b0,
- },
- },
- {}, // ebu
- { // ee
- "Arabiagbeŋɔŋlɔarmeniagbeŋɔŋlɔbengaligbeŋɔŋlɔbopomfogbeŋɔŋlɔbraillegbeŋɔŋ" +
- "lɔCyrillicgbeŋɔŋlɔdevanagarigbeŋɔŋlɔethiopiagbeŋɔŋlɔgɔgiagbeŋɔŋlɔgri" +
- "sigbeŋɔŋlɔgudzaratigbeŋɔŋlɔgurmukhigbeŋɔŋlɔhangulgbeŋɔŋlɔhangbeŋɔŋlɔ" +
- "HansgbeŋɔŋlɔBlema HantgbeŋcŋlɔhebrigbeŋɔŋlɔhiraganagbeŋɔŋlɔJapaneseg" +
- "beŋɔŋlɔkatakanagbeŋɔŋlɔkhmergbeŋɔŋlɔkannadagbeŋɔŋlɔKoreagbeŋɔŋlɔlaog" +
- "beŋɔŋlɔLatingbeŋɔŋlɔmalayagbeŋɔŋlɔmongoliagbeŋɔŋlɔmyanmargbeŋɔŋlɔori" +
- "yagbeŋɔŋlɔsinhalagbeŋɔŋlɔtamilgbeŋɔŋlɔtelegugbeŋɔŋlɔthaanagbeŋɔŋlɔta" +
- "igbeŋɔŋlɔtibetgbeŋɔŋlɔŋɔŋlɔdzesiwogbemaŋlɔgbeŋɔŋlɔ bɔbɔgbeŋɔŋlɔ many" +
- "a",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0038, 0x0038, 0x004b, 0x004b,
- 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e,
- 0x005e, 0x005e, 0x005e, 0x0072, 0x0072, 0x0088, 0x0088, 0x0088,
- 0x0088, 0x0088, 0x0088, 0x0088, 0x009c, 0x009c, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00bf, 0x00d4, 0x00e8, 0x00fa, 0x0109, 0x0109,
- 0x0119, 0x012e, 0x012e, 0x013f, 0x0153, 0x0153, 0x0153, 0x0153,
- 0x0153, 0x0153, 0x0153, 0x0153, 0x0167, 0x0167, 0x0167, 0x017b,
- // Entry 40 - 7F
- 0x017b, 0x018c, 0x018c, 0x019f, 0x01b0, 0x01b0, 0x01b0, 0x01b0,
- 0x01bf, 0x01bf, 0x01bf, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01d0, 0x01e2, 0x01e2, 0x01f6, 0x01f6, 0x01f6,
- 0x01f6, 0x01f6, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209,
- 0x0209, 0x0209, 0x0209, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
- 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
- 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
- // Entry 80 - BF
- 0x021a, 0x021a, 0x021a, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d,
- 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x023e,
- 0x023e, 0x023e, 0x0250, 0x0250, 0x0250, 0x0250, 0x0262, 0x0271,
- 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282,
- 0x0282, 0x0282, 0x0282, 0x0282, 0x0292, 0x029c, 0x02af, 0x02c1,
- },
- },
- { // el
- elScriptStr,
- elScriptIdx,
- },
- { // en
- enScriptStr,
- enScriptIdx,
- },
- {}, // en-AU
- { // en-GB
- enGBScriptStr,
- enGBScriptIdx,
- },
- {}, // eo
- { // es
- esScriptStr,
- esScriptIdx,
- },
- { // es-419
- es419ScriptStr,
- es419ScriptIdx,
- },
- {}, // es-CL
- { // es-MX
- "telugú",
- []uint16{ // 147 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0007,
- },
- },
- { // et
- etScriptStr,
- etScriptIdx,
- },
- { // eu
- "arabiarraarmeniarrabengaliarrabopomofoabrailleazirilikoadevanagariaetiop" +
- "iarrageorgiarragreziarragujarateragurmukhiahangulaidazkera txinatarr" +
- "aidazkera txinatar sinplifikatuaidazkera txinatar tradizionalahebree" +
- "rahiraganajaponiarrakatakanakhemerarrakanadarrakorearralaosarralatin" +
- "amalayalameramongoliarrabirmaniarraoriyarrasinhalatamilarrateluguarr" +
- "athaanathailandiarratibetarraikurrakidatzi gabeaohikoaidazkera ezeza" +
- "guna",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x0013,
- 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x001e, 0x0027, 0x0027,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x004d, 0x004d, 0x0057, 0x0057,
- 0x0057, 0x0057, 0x0060, 0x006a, 0x0073, 0x007a, 0x008d, 0x008d,
- 0x00ac, 0x00ca, 0x00ca, 0x00d2, 0x00da, 0x00da, 0x00da, 0x00da,
- 0x00da, 0x00da, 0x00da, 0x00da, 0x00e4, 0x00e4, 0x00e4, 0x00ec,
- // Entry 40 - 7F
- 0x00ec, 0x00f6, 0x00f6, 0x00ff, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x010f, 0x010f, 0x010f, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x0115, 0x0115, 0x0115, 0x0121, 0x0121, 0x012c, 0x012c, 0x012c,
- 0x012c, 0x012c, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
- 0x0137, 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
- // Entry 80 - BF
- 0x013f, 0x013f, 0x013f, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
- 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x014f,
- 0x014f, 0x014f, 0x0159, 0x0159, 0x0159, 0x0159, 0x015f, 0x016c,
- 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175,
- 0x0175, 0x0175, 0x0175, 0x0175, 0x017c, 0x0188, 0x018e, 0x01a0,
- },
- },
- {}, // ewo
- { // fa
- faScriptStr,
- faScriptIdx,
- },
- { // fa-AF
- "مغلی",
- []uint16{ // 94 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
- },
- },
- {}, // ff
- { // fi
- fiScriptStr,
- fiScriptIdx,
- },
- { // fil
- filScriptStr,
- filScriptIdx,
- },
- { // fo
- "arabiskarmensktbengalibopomofoblindaskriftkyrillisktdevanagarietiopisktg" +
- "eorgiansktgriksktgujaratigurmukhihangulhaneinkult hanvanligt hanhebr" +
- "aiskthiraganajapansktkatakanakhmerkannadakoreansktlaolatínsktmalayal" +
- "ammongolskmyanmarsktoriyasinhalatamilsktteluguthaanatailendskttibets" +
- "kttekinóskrivavanligókend skrift",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x0016, 0x001e, 0x001e,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0059, 0x0061, 0x0069, 0x006f, 0x0072, 0x0072,
- 0x007d, 0x0088, 0x0088, 0x0091, 0x0099, 0x0099, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, 0x00a9,
- // Entry 40 - 7F
- 0x00a9, 0x00ae, 0x00ae, 0x00b5, 0x00be, 0x00be, 0x00be, 0x00be,
- 0x00c1, 0x00c1, 0x00c1, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
- 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
- 0x00ca, 0x00ca, 0x00ca, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db,
- 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5,
- 0x00e5, 0x00e5, 0x00e5, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- // Entry 80 - BF
- 0x00ea, 0x00ea, 0x00ea, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
- 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f9,
- 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0105, 0x010f,
- 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
- 0x0117, 0x0117, 0x0117, 0x0117, 0x011c, 0x0124, 0x012a, 0x0137,
- },
- },
- { // fr
- frScriptStr,
- frScriptIdx,
- },
- { // fr-CA
- frCAScriptStr,
- frCAScriptIdx,
- },
- {}, // fr-CH
- { // fur
- "araparmenbalinêsbengalêsBraillebuginêsSilabari unificât aborigjens canad" +
- "êscoptcipriotciriliccirilic dal vieri slavonic de glesiedevanagarid" +
- "emotic egjizianjeratic egjizianjeroglifics egjiziansetiopicgeorgjian" +
- "glagoliticgoticgrêcgujaratihanHan semplificâtHan tradizionâlebreukat" +
- "akana o hiraganavieri ongjarêsvieri italicgjavanêsgjaponêskhmerkanna" +
- "dacoreanlaolatin Frakturlatin gaeliclatinlineâr Alineâr Bjeroglifics" +
- " Mayamalayalammongulmyanmaroriyarunicsinhalasiriacsiriac Estrangelos" +
- "iriac ocidentâlsiriac orientâltamiltelegutagalogthaanathaitibetanuga" +
- "riticvieri persiancuneiform sumeric-acadiccodiç pes lenghis no scrit" +
- "iscomuncodiç par scrituris no codificadis",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, 0x001a,
- 0x0021, 0x0029, 0x0029, 0x0029, 0x004f, 0x004f, 0x004f, 0x004f,
- 0x004f, 0x0053, 0x005a, 0x0061, 0x0085, 0x008f, 0x008f, 0x008f,
- 0x009f, 0x00af, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00de,
- 0x00e3, 0x00e3, 0x00e8, 0x00f0, 0x00f0, 0x00f0, 0x00f3, 0x00f3,
- 0x0103, 0x0113, 0x0113, 0x0118, 0x0118, 0x0118, 0x0118, 0x012b,
- 0x013a, 0x013a, 0x0146, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158,
- // Entry 40 - 7F
- 0x0158, 0x015d, 0x015d, 0x0164, 0x016a, 0x016a, 0x016a, 0x016a,
- 0x016d, 0x017a, 0x0186, 0x018b, 0x018b, 0x018b, 0x0194, 0x019d,
- 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01ad,
- 0x01ad, 0x01ad, 0x01ad, 0x01b6, 0x01b6, 0x01bc, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3,
- 0x01c3, 0x01c3, 0x01c3, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
- 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
- 0x01c8, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd,
- // Entry 80 - BF
- 0x01cd, 0x01cd, 0x01cd, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01da,
- 0x01eb, 0x01fc, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0211,
- 0x0211, 0x0211, 0x0217, 0x0217, 0x0217, 0x021e, 0x0224, 0x0228,
- 0x022f, 0x022f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0244,
- 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x0279, 0x027e, 0x02a1,
- },
- },
- { // fy
- "DefakaArabyskKeizerlijk ArameesArmeensAvestaanskBalineeskBamounBassa Vah" +
- "BatakBengaleesBlissymbolenBopomofoBrahmiBrailleBugineeskBuhidChakmaV" +
- "erenigde Canadese Aboriginal-symbolenKaryskChamCherokeeCirthKoptyskS" +
- "ypryskSyrillyskAldkerkslavysk SyrillyskDevanagariDeseretDuployan sne" +
- "lschriftEgyptysk demotyskEgyptysk hiëratyskEgyptyske hiërogliefenEth" +
- "iopyskGeorgysk KhutsuriGeorgyskGlagolityskGothyskGranthaGrieksGujara" +
- "tiGurmukhiHangulHanHanunooFerienfâldigd SineeskTraditjoneel SineeskH" +
- "ebreeuwskHiraganaAnatolyske hiërogliefenPahawh HmongKatakana of Hira" +
- "ganaAldhongaarsIndusAld-italyskJavaanskJapansJurchenKayah LiKatakana" +
- "KharoshthiKhmerKhojkiKannadaKoreaanskKpelleKaithiLannaLaoGotysk Laty" +
- "nGaelysk LatynLatynLepchaLimbuLineair ALineair BFraserLomaLycyskLydy" +
- "skMandaeansManicheaanskMayahiërogliefenMendeMeroitysk cursiefMeroïty" +
- "skMalayalamMongoolsMoonMroMeiteiMyanmarAld Noard-ArabyskNabateaanskN" +
- "axi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensAldpermyskP" +
- "hags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicyskPol" +
- "lard-fonetyskInscriptioneel ParthyskRejangRongorongoRunicSamaritaans" +
- "kSaratiAld Sûd-ArabyskSaurashtraSignWritingShavianSharadaSindhiSinha" +
- "laSora SompengSoendaneeskSyloti NagriSyriacEstrangelo ArameeskWest-A" +
- "rameeskEast-ArameeskTagbanwaTakriTai LeNij Tai LueTamilTangutTai Vie" +
- "tTeluguTengwarTifinaghTagalogThaanaThaisTibetaanskTirhutaUgarityskVa" +
- "iSichtbere spraakVarang KshitiWoleaiAldperzyskSumero-Akkadian Cuneif" +
- "ormYiOergeërfdWiskundige notatieSymbolenOngeschrevenAlgemeenOnbekend" +
- " schriftsysteem",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0006, 0x0006, 0x0006, 0x000d, 0x001f, 0x0026, 0x0030,
- 0x0039, 0x003f, 0x0048, 0x004d, 0x0056, 0x0062, 0x006a, 0x0070,
- 0x0077, 0x0080, 0x0085, 0x008b, 0x00b1, 0x00b7, 0x00bb, 0x00c3,
- 0x00c8, 0x00cf, 0x00d6, 0x00df, 0x00f7, 0x0101, 0x0108, 0x011c,
- 0x012d, 0x0140, 0x0157, 0x0157, 0x0160, 0x0171, 0x0179, 0x0184,
- 0x018b, 0x0192, 0x0198, 0x01a0, 0x01a8, 0x01ae, 0x01b1, 0x01b8,
- 0x01ce, 0x01e2, 0x01e2, 0x01ec, 0x01f4, 0x020c, 0x0218, 0x022c,
- 0x0237, 0x023c, 0x0247, 0x024f, 0x0255, 0x025c, 0x0264, 0x026c,
- // Entry 40 - 7F
- 0x0276, 0x027b, 0x0281, 0x0288, 0x0291, 0x0297, 0x029d, 0x02a2,
- 0x02a5, 0x02b1, 0x02be, 0x02c3, 0x02c9, 0x02ce, 0x02d7, 0x02e0,
- 0x02e6, 0x02ea, 0x02f0, 0x02f6, 0x02f6, 0x02ff, 0x030b, 0x031c,
- 0x0321, 0x0332, 0x033c, 0x0345, 0x0345, 0x034d, 0x0351, 0x0354,
- 0x035a, 0x035a, 0x0361, 0x0372, 0x037d, 0x0386, 0x038c, 0x0392,
- 0x0397, 0x039f, 0x03a5, 0x03a9, 0x03b0, 0x03ba, 0x03ba, 0x03c4,
- 0x03cc, 0x03e2, 0x03f1, 0x03fd, 0x0406, 0x0416, 0x042d, 0x0433,
- 0x043d, 0x0442, 0x044e, 0x0454, 0x0464, 0x046e, 0x0479, 0x0480,
- // Entry 80 - BF
- 0x0487, 0x0487, 0x048d, 0x0494, 0x04a0, 0x04ab, 0x04b7, 0x04bd,
- 0x04d0, 0x04dd, 0x04ea, 0x04f2, 0x04f7, 0x04fd, 0x0508, 0x050d,
- 0x0513, 0x051b, 0x0521, 0x0528, 0x0530, 0x0537, 0x053d, 0x0542,
- 0x054c, 0x0553, 0x055c, 0x055f, 0x056f, 0x057c, 0x0582, 0x058c,
- 0x05a5, 0x05a7, 0x05b1, 0x05c3, 0x05cb, 0x05d7, 0x05df, 0x05f6,
- },
- },
- { // ga
- "ArabachAirméanachAivéisteachBailíochBatacachBeangálachBopomofoBrailleBui" +
- "gineachButhaideachSeiricíochCoptachCipireachCoireallachDéiveanágrach" +
- "Éigipteach coiteannÉigipteach cliarúilIairiglifí ÉigipteachaAetópac" +
- "hSeoirseachGlagalachGotachGréagachGúisearátachGurmúcachHangalachHanH" +
- "an SimplitheHan TraidisiúntaEabhrachHireagánachIairiglifí Anatólacha" +
- "Siollabraí SeapánachaSean-UngárachSean-IodáilicIávachSeapánachCatacá" +
- "nachCiméarachCannadachCóiréachLaosachCló GaelachLaidineachLiombúchLí" +
- "neach ALíneach BFraserLiciachLidiachMahasánachMainicéasachIairiglifí" +
- " MáigheachaMeindeachMailéalamachMongólachMaenmarachOghamOiríseachSea" +
- "n-PheirmeachFéiníceachRúnachSamárachShawachSiolónachSiriceachTamalac" +
- "hTeileagúchTifinaghTagálagachTánachTéalannachTibéadachSean-Pheirseac" +
- "hDingchruthach Suiméar-AcádachNodaireacht MhatamaiticiúilSiombailíGa" +
- "n ScríobhCoitiantaScript Anaithnid",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x001e,
- 0x0027, 0x0027, 0x0027, 0x002f, 0x003a, 0x003a, 0x0042, 0x0042,
- 0x0049, 0x0053, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069,
- 0x0069, 0x0070, 0x0079, 0x0084, 0x0084, 0x0093, 0x0093, 0x0093,
- 0x00a7, 0x00bc, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00e7, 0x00f0,
- 0x00f6, 0x00f6, 0x00ff, 0x010d, 0x0117, 0x0120, 0x0123, 0x0123,
- 0x0130, 0x0141, 0x0141, 0x0149, 0x0155, 0x016c, 0x016c, 0x0183,
- 0x0191, 0x0191, 0x019f, 0x01a6, 0x01b0, 0x01b0, 0x01b0, 0x01bb,
- // Entry 40 - 7F
- 0x01bb, 0x01c5, 0x01c5, 0x01ce, 0x01d8, 0x01d8, 0x01d8, 0x01d8,
- 0x01df, 0x01df, 0x01eb, 0x01f5, 0x01f5, 0x01fe, 0x0208, 0x0212,
- 0x0218, 0x0218, 0x021f, 0x0226, 0x0231, 0x0231, 0x023e, 0x0255,
- 0x025e, 0x025e, 0x025e, 0x026b, 0x026b, 0x0275, 0x0275, 0x0275,
- 0x0275, 0x0275, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f,
- 0x0284, 0x0284, 0x0284, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d,
- 0x029d, 0x029d, 0x029d, 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
- 0x02a9, 0x02b0, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c0,
- // Entry 80 - BF
- 0x02c0, 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02d3,
- 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02db,
- 0x02db, 0x02db, 0x02e6, 0x02e6, 0x02ee, 0x02f9, 0x0300, 0x030b,
- 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0324,
- 0x0343, 0x0343, 0x0343, 0x035f, 0x0369, 0x0375, 0x037e, 0x038e,
- },
- },
- { // gd
- "AfakaAlbàinis ChabhcasachAhomArabaisAramais impireilAirmeinisAvestanaisB" +
- "aliBamumBassa VahBatakBeangailisComharran BlissBopomofoBrahmiBraille" +
- "BuhidChakmaSgrìobhadh Lideach Aonaichte nan Tùsanach CanadachChamChe" +
- "rokeeCirthCoptaisCìoprasaisCirilisCirilis Seann-Slàbhais na h-Eaglai" +
- "seDevanagariDeseretSealbh-sgrìobhadh ÈipheiteachGe’ezCairtbheilisGot" +
- "aisGranthaGreugaisGujaratiGurmukhiHangulHanHanunooHan simplichteHan " +
- "tradaiseantaEabhraHiraganaDealbh-sgrìobhadh AnatolachPahawh HmongKat" +
- "akana no HiraganaSeann-UngaraisSeann-EadailtisDeàbhanaisSeapanaisJur" +
- "chenKayah LiKatakanaKharoshthiCmèarKhojkiKannadaCoirèanaisKpelleKait" +
- "hiLannaLàthoLaideann frakturLaideann GhàidhealachLaideannLepchaLimbu" +
- "Linear ALinear BLomaMahajaniDealbh-sgrìobhadh MayachMendeMalayalamMo" +
- "diMongolaisMroMeitei MayekMultaniMiànmarSeann-Arabach ThuathachNaxi " +
- "GebaN’koNüshuOgham-chraobhOl ChikiOrkhonOriyaOsmanyaPau Cin HauPhags" +
- "-paPartais snaidh-sgrìobhteRejangRongorongoRùn-sgrìobhadhSaratiSeann" +
- "-Arabais DheasachSaurashtraSharadaSiddhamKhudawadiSinhalaSora Sompen" +
- "gSundaSyloti NagriSuraidheacSuraidheac SiarachSuraidheac EarachTagba" +
- "nwaTakriTai LeTai Lue ÙrTaimilTangutTai VietTeluguTengwarTifinaghTag" +
- "alogThaanaTàidhTibeitisTirhutaVaiVarang KshitiWoleaiSeann-PheirsisYi" +
- "Gnìomhairean matamataigSamhlaidheanGun sgrìobhadhCoitcheannLitreadh " +
- "neo-aithnichte",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x001a, 0x001e, 0x0025, 0x0035, 0x003e, 0x0048,
- 0x004c, 0x0051, 0x005a, 0x005f, 0x0069, 0x0078, 0x0080, 0x0086,
- 0x008d, 0x008d, 0x0092, 0x0098, 0x00cc, 0x00cc, 0x00d0, 0x00d8,
- 0x00dd, 0x00e4, 0x00ef, 0x00f6, 0x011b, 0x0125, 0x012c, 0x012c,
- 0x012c, 0x012c, 0x014b, 0x014b, 0x0152, 0x0152, 0x015e, 0x015e,
- 0x0164, 0x016b, 0x0173, 0x017b, 0x0183, 0x0189, 0x018c, 0x0193,
- 0x01a1, 0x01b1, 0x01b1, 0x01b7, 0x01bf, 0x01db, 0x01e7, 0x01fb,
- 0x0209, 0x0209, 0x0218, 0x0223, 0x022c, 0x0233, 0x023b, 0x0243,
- // Entry 40 - 7F
- 0x024d, 0x0253, 0x0259, 0x0260, 0x026b, 0x0271, 0x0277, 0x027c,
- 0x0282, 0x0292, 0x02a8, 0x02b0, 0x02b6, 0x02bb, 0x02c3, 0x02cb,
- 0x02cb, 0x02cf, 0x02cf, 0x02cf, 0x02d7, 0x02d7, 0x02d7, 0x02f0,
- 0x02f5, 0x02f5, 0x02f5, 0x02fe, 0x0302, 0x030b, 0x030b, 0x030e,
- 0x031a, 0x0321, 0x0329, 0x0340, 0x0340, 0x0349, 0x034f, 0x0355,
- 0x0362, 0x036a, 0x0370, 0x0375, 0x037c, 0x037c, 0x0387, 0x0387,
- 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x03a8, 0x03ae,
- 0x03b8, 0x03c8, 0x03c8, 0x03ce, 0x03e4, 0x03ee, 0x03ee, 0x03ee,
- // Entry 80 - BF
- 0x03f5, 0x03fc, 0x0405, 0x040c, 0x0418, 0x041d, 0x0429, 0x0433,
- 0x0433, 0x0445, 0x0456, 0x045e, 0x0463, 0x0469, 0x0474, 0x047a,
- 0x0480, 0x0488, 0x048e, 0x0495, 0x049d, 0x04a4, 0x04aa, 0x04b0,
- 0x04b8, 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04cf, 0x04d5, 0x04e3,
- 0x04e3, 0x04e5, 0x04e5, 0x04fd, 0x0509, 0x0518, 0x0522, 0x0539,
- },
- },
- { // gl
- "ÁrabeArmenioBengalíBopomofoBrailleSilabario aborixe canadiano unificadoC" +
- "irílicoDevanagariEtíopeXeorxianoGregoguxaratíGurmukhiHangulHanHan si" +
- "mplificadoHan tradicionalHebreoHiraganaXaponésKatakanaCamboxanocanar" +
- "ésCoreanoLaosianoLatinoMalabarMongolBirmaniaOriyaCingalésTámilTelug" +
- "úThaanaTailandésTibetanoSímbolosNon escritaComúnEscritura descoñeci" +
- "da",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x001d, 0x001d,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0049, 0x0049, 0x0049, 0x0049,
- 0x0049, 0x0049, 0x0049, 0x0052, 0x0052, 0x005c, 0x005c, 0x005c,
- 0x005c, 0x005c, 0x005c, 0x005c, 0x0063, 0x0063, 0x006c, 0x006c,
- 0x006c, 0x006c, 0x0071, 0x007a, 0x0082, 0x0088, 0x008b, 0x008b,
- 0x009b, 0x00aa, 0x00aa, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
- 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c0, 0x00c8,
- // Entry 40 - 7F
- 0x00c8, 0x00d1, 0x00d1, 0x00d9, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
- 0x00e8, 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
- 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
- 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00fb, 0x00fb, 0x00fb,
- 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x0103, 0x0103, 0x0103, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
- 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
- 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
- // Entry 80 - BF
- 0x0108, 0x0108, 0x0108, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111,
- 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0117,
- 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x0124, 0x012e,
- 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
- 0x0136, 0x0136, 0x0136, 0x0136, 0x013f, 0x014a, 0x0150, 0x0166,
- },
- },
- { // gsw
- "ArabischArmiArmenischAveschtischBalinesischBattakischBengalischBliss-Sym" +
- "boolBopomofoBrahmiBlindäschriftBuginesischBuhidUCASKarischChamCherok" +
- "eeCirthKoptischZypriotischKyrillischAltchileslawischTövanagaariTeser" +
- "etTemozisch-ÄgüptischHiraazisch-ÄgüptischÄgüptischi HiroglüüfeÄzioop" +
- "ischGhutsuriGeorgischGlagolitischGotischGriechischGuscharatiGurmukhi" +
- "HangulChineesischHanunooVeräifachti Chineesischi SchriftTradizionell" +
- "i Chineesischi SchriftHebräischHiraganaPahawh HmongKatakana oder Hir" +
- "aganaAltungarischIndus-SchriftAltitalischJavanesischJapanischKayah L" +
- "iKatakanaKharoshthiKhmerKannadaKoreanischLannaLaotischLatiinisch - F" +
- "raktur-VarianteLatiinisch - Gäälischi VarianteLatiinischLepchaLimbuL" +
- "inear ALinear BLykischLydischMandäischManichäischMaya-HieroglyphäMer" +
- "oitischMalaysischMongolischMoonMeitei MayekBurmesischN’KoOghamOl Chi" +
- "kiOrchon-RunäOriyaOsmanischAltpermischPhags-paPahlaviPhönizischPolla" +
- "rd PhonetischRejangRongorongoRunäschriftSamaritanischSaratiSaurashtr" +
- "aGebäärdeschpraachShaw-AlphabetSinghalesischSundanesischSyloti Nagri" +
- "SyrischSyrisch - Eschtrangelo-VarianteWeschtsyrischOschtsyrischTagba" +
- "nwaTai LeTai LueTamilischTeluguTengwarTifinaghTagalogThaanaThaiTibee" +
- "tischUgaritischVaiSichtbari SchpraachAltpersischSumerisch-akkadischi" +
- " KeilschriftYiG’eerbtä SchriftwärtSchriftlosi SchpraachUnbeschtimmtU" +
- "ncodiirti Schrift",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x0020,
- 0x002b, 0x002b, 0x002b, 0x0035, 0x003f, 0x004c, 0x0054, 0x005a,
- 0x0068, 0x0073, 0x0078, 0x0078, 0x007c, 0x0083, 0x0087, 0x008f,
- 0x0094, 0x009c, 0x00a7, 0x00b1, 0x00c1, 0x00cd, 0x00d4, 0x00d4,
- 0x00e9, 0x00ff, 0x0118, 0x0118, 0x0123, 0x012b, 0x0134, 0x0140,
- 0x0147, 0x0147, 0x0151, 0x015b, 0x0163, 0x0169, 0x0174, 0x017b,
- 0x019c, 0x01be, 0x01be, 0x01c8, 0x01d0, 0x01d0, 0x01dc, 0x01f2,
- 0x01fe, 0x020b, 0x0216, 0x0221, 0x022a, 0x022a, 0x0232, 0x023a,
- // Entry 40 - 7F
- 0x0244, 0x0249, 0x0249, 0x0250, 0x025a, 0x025a, 0x025a, 0x025f,
- 0x0267, 0x0284, 0x02a5, 0x02af, 0x02b5, 0x02ba, 0x02c2, 0x02ca,
- 0x02ca, 0x02ca, 0x02d1, 0x02d8, 0x02d8, 0x02e2, 0x02ee, 0x02ff,
- 0x02ff, 0x02ff, 0x0309, 0x0313, 0x0313, 0x031d, 0x0321, 0x0321,
- 0x032d, 0x032d, 0x0337, 0x0337, 0x0337, 0x0337, 0x033d, 0x033d,
- 0x0342, 0x034a, 0x0356, 0x035b, 0x0364, 0x0364, 0x0364, 0x036f,
- 0x0377, 0x0377, 0x0377, 0x037e, 0x0389, 0x039b, 0x039b, 0x03a1,
- 0x03ab, 0x03b7, 0x03c4, 0x03ca, 0x03ca, 0x03d4, 0x03e7, 0x03f4,
- // Entry 80 - BF
- 0x03f4, 0x03f4, 0x03f4, 0x0401, 0x0401, 0x040d, 0x0419, 0x0420,
- 0x043f, 0x044c, 0x0458, 0x0460, 0x0460, 0x0466, 0x046d, 0x0476,
- 0x0476, 0x0476, 0x047c, 0x0483, 0x048b, 0x0492, 0x0498, 0x049c,
- 0x04a6, 0x04a6, 0x04b0, 0x04b3, 0x04c6, 0x04c6, 0x04c6, 0x04d1,
- 0x04f1, 0x04f3, 0x050b, 0x050b, 0x050b, 0x0520, 0x052c, 0x053e,
- },
- },
- { // gu
- guScriptStr,
- guScriptIdx,
- },
- {}, // guz
- {}, // gv
- {}, // ha
- {}, // haw
- { // he
- heScriptStr,
- heScriptIdx,
- },
- { // hi
- hiScriptStr,
- hiScriptIdx,
- },
- { // hr
- hrScriptStr,
- hrScriptIdx,
- },
- { // hsb
- "arabscearmenscebengalscebopomofoBraillowe pismokyriliscedevanagarietiopi" +
- "scegeorgiscegrjekscegujaratigurmukhihangulchinscezjednorjene chinske" +
- " pismotradicionalne chinske pismohebrejscehiraganajapanscekatakanakh" +
- "merscekannadscekorejscelaoscełaćonscemalayalamscemongolsceburmasceor" +
- "iyasinghalscetamilsceteluguthaanathailandscetibetscesymbolebjez pism" +
- "apowšitkownenjeznate pismo",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0020, 0x0020,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x005c, 0x0064, 0x006c, 0x0072, 0x0079, 0x0079,
- 0x0092, 0x00ad, 0x00ad, 0x00b6, 0x00be, 0x00be, 0x00be, 0x00be,
- 0x00be, 0x00be, 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00ce,
- // Entry 40 - 7F
- 0x00ce, 0x00d6, 0x00d6, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00ed, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x00f7, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c,
- 0x010c, 0x010c, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114,
- 0x0114, 0x0114, 0x0114, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
- // Entry 80 - BF
- 0x0119, 0x0119, 0x0119, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
- 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x012b,
- 0x012b, 0x012b, 0x0131, 0x0131, 0x0131, 0x0131, 0x0137, 0x0142,
- 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
- 0x014a, 0x014a, 0x014a, 0x014a, 0x0151, 0x015b, 0x0167, 0x0175,
- },
- },
- { // hu
- huScriptStr,
- huScriptIdx,
- },
- { // hy
- hyScriptStr,
- hyScriptIdx,
- },
- { // id
- idScriptStr,
- idScriptIdx,
- },
- {}, // ig
- { // ii
- "ꀊꇁꀨꁱꂷꀊꆨꌦꇁꃚꁱꂷꈝꐯꉌꈲꁱꂷꀎꋏꉌꈲꁱꂷꇁꄀꁱꂷꆈꌠꁱꂷꁱꀋꉆꌠꅉꀋꐚꌠꁱꂷ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0036, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- // Entry 40 - 7F
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- // Entry 80 - BF
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
- 0x0054, 0x0060, 0x0060, 0x0060, 0x0060, 0x006c, 0x006c, 0x007e,
- },
- },
- { // is
- isScriptStr,
- isScriptIdx,
- },
- { // it
- itScriptStr,
- itScriptIdx,
- },
- { // ja
- jaScriptStr,
- jaScriptIdx,
- },
- { // jgo
- "mík -ŋwaꞌnɛ yi ɛ́ líŋɛ́nɛ Latɛ̂ŋntúu yi pɛ́ ká ŋwaꞌnεntɛ-ŋwaꞌnɛ yí pɛ́ k" +
- "á kɛ́ jí",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- // Entry 80 - BF
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
- 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x004c, 0x004c, 0x0073,
- },
- },
- {}, // jmc
- { // ka
- kaScriptStr,
- kaScriptIdx,
- },
- {}, // kab
- {}, // kam
- {}, // kde
- { // kea
- "arábikuarméniubengalibopomofobraillesirílikudevanagarietiópikujorjianugr" +
- "egugujaratigurmukiangulhanhan simplifikaduhan tradisionalebraikuirag" +
- "anajaponeskatakanakmerkanareskorianulausianulatinumalaialammongolbir" +
- "manesoriyasingalestamiltelugutaanatailandestibetanusimbulusnãu skrit" +
- "ukomunskrita diskonxedu",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0017, 0x0017, 0x001f, 0x001f,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x0039, 0x0039, 0x0039,
- 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x004a, 0x004a,
- 0x004a, 0x004a, 0x004f, 0x0057, 0x005e, 0x0063, 0x0066, 0x0066,
- 0x0076, 0x0085, 0x0085, 0x008c, 0x0093, 0x0093, 0x0093, 0x0093,
- 0x0093, 0x0093, 0x0093, 0x0093, 0x009a, 0x009a, 0x009a, 0x00a2,
- // Entry 40 - 7F
- 0x00a2, 0x00a6, 0x00a6, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1,
- 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- // Entry 80 - BF
- 0x00de, 0x00de, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
- 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00eb,
- 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f6, 0x00ff,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
- 0x0107, 0x0107, 0x0107, 0x0107, 0x010f, 0x011a, 0x011f, 0x0130,
- },
- },
- {}, // khq
- {}, // ki
- { // kk
- kkScriptStr,
- kkScriptIdx,
- },
- {}, // kkj
- {}, // kl
- {}, // kln
- { // km
- kmScriptStr,
- kmScriptIdx,
- },
- { // kn
- knScriptStr,
- knScriptIdx,
- },
- { // ko
- koScriptStr,
- koScriptIdx,
- },
- {}, // kok
- { // ks
- "اَربیاَرمانیَناَویستَنبالَنیٖزباتَکبیٚنگٲلۍبِلِس سِمبلزبوپوموفوبرٛاہمیبر" +
- "یلبُگِنیٖزبُہِدیُنِفایِڑ کنیڑِیَن ایٚب آرجِنَل سِلیبِککاریَنچَمچیٚر" +
- "وکیکِرتھکاپٹِککِپرایِٹسَیرِلِکپرون چٔرچسلیوونِک سَیرِلِکدیوناگریڈیٚ" +
- "سٔریٚٹاِجپشِیَن ڈِماٹِکاِجِپشَن ہَیریٹِکاِجِپشَن ہَیروگلِپھساِتھیوپ" +
- "ِکجارجِیَن کھتسوریجارجِیَنگلیگولِٹِکگوتھِکگرَنتھاگریٖکگُجرٲتۍہانٛگُ" +
- "لہانہانُنوٗسِمپلِفایِڑ ہانٹریڑِشَنَلہِبرِوہیٖراگاناپَہاو مانٛگکَٹاک" +
- "انا یا ہِراگاناپرون ہَنگیریَناِنڈَساولڈ اِٹیلِکجاوَنیٖزجیٚپَنیٖزکای" +
- "ا لیکَتاکاناخَروشتھیکھٕمیرکَنَڑاکوریَنلانالاوفرٛکتُر لیٹِنگیلِک لیٹ" +
- "َنلیٹِنلیٚپکالِمبوٗلیٖنیَر اےلیٖنیَر بیلیسِیَنلیدِیَنمَندییَنمانیشی" +
- "یَنمایَن ہیٖروگلِپھمِرایٹِکمَلیالَممَنٛگولیَنموٗنمیتی مایَکمَیَنمار" +
- "ایٚن کواوگہاماول چِکیاورکھوناورِیااوسمانیااولڈ پٔرمِکپھاگس پابوٗک پ" +
- "َہَلویپھونِشِیَنپولاڑ پھونِٹِکریجَنٛگرونٛگو رونٛگورَنِکسَمارِٹَنسَر" +
- "اتیسوراشٹرااِشارٲتی لِکھٲےشاویَنسِنہالاسَنڈَنیٖزسیلوتی ناگریسیٖرِیَ" +
- "کایٚسٹرینجِلو سیٖرِیَکمغرِبی سیٖریَکمشرَقی سیٖریَکتَگبَنواتَیلیےنوٚ" +
- "و تیلوتَمِلتیلگوٗتیٚنگوارتِفِناگتَگَلوگتھاناتھاےتِبتیاُگارِٹِکواےوِ" +
- "زِبٕل سپیٖچپرون فارسیسُمیرو اکادیَن کوٗنِفامیٖیلیٚکھنَےعاماَن زٲنۍ " +
- "یا نا لَگہٕ ہار رَسمُل خظ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x001c, 0x002c,
- 0x003c, 0x003c, 0x003c, 0x0046, 0x0056, 0x006d, 0x007d, 0x008b,
- 0x0093, 0x00a3, 0x00ad, 0x00ad, 0x00f7, 0x0103, 0x0109, 0x0117,
- 0x0121, 0x012d, 0x013d, 0x014d, 0x017f, 0x018f, 0x01a1, 0x01a1,
- 0x01c2, 0x01e3, 0x020a, 0x020a, 0x021c, 0x023b, 0x024b, 0x025f,
- 0x026b, 0x026b, 0x0279, 0x0283, 0x0291, 0x029f, 0x02a5, 0x02b3,
- 0x02d0, 0x02e4, 0x02e4, 0x02f0, 0x0302, 0x0302, 0x0317, 0x033d,
- 0x0358, 0x0364, 0x037b, 0x038b, 0x039d, 0x039d, 0x03aa, 0x03ba,
- // Entry 40 - 7F
- 0x03ca, 0x03d6, 0x03d6, 0x03e2, 0x03ee, 0x03ee, 0x03ee, 0x03f6,
- 0x03fc, 0x0415, 0x042a, 0x0434, 0x0440, 0x044c, 0x045f, 0x0472,
- 0x0472, 0x0472, 0x0480, 0x048e, 0x048e, 0x049e, 0x04b0, 0x04cf,
- 0x04cf, 0x04cf, 0x04df, 0x04ef, 0x04ef, 0x0503, 0x050b, 0x050b,
- 0x051e, 0x051e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053b, 0x053b,
- 0x0547, 0x0556, 0x0564, 0x0570, 0x0580, 0x0580, 0x0580, 0x0595,
- 0x05a4, 0x05a4, 0x05a4, 0x05bb, 0x05cf, 0x05ea, 0x05ea, 0x05f8,
- 0x0611, 0x061b, 0x062d, 0x0639, 0x0639, 0x0649, 0x0666, 0x0672,
- // Entry 80 - BF
- 0x0672, 0x0672, 0x0672, 0x0680, 0x0680, 0x0692, 0x06a9, 0x06b9,
- 0x06e2, 0x06fd, 0x0718, 0x0728, 0x0728, 0x0734, 0x0745, 0x074f,
- 0x074f, 0x074f, 0x075b, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799,
- 0x07a3, 0x07a3, 0x07b5, 0x07bb, 0x07d4, 0x07d4, 0x07d4, 0x07e7,
- 0x0813, 0x0819, 0x0819, 0x0819, 0x0819, 0x0829, 0x082f, 0x086c,
- },
- },
- {}, // ksb
- {}, // ksf
- { // ksh
- "arraabesche Schreffarmeenesche Schreffbängjaalesche Schreffschineeseche " +
- "Ömschreff BopomofoBlindeschreffkürrellesche Schreffindesche Devanaj" +
- "ari-Schreffätejoopesche Schreffje’orrjesche Schreffjriischesche Schr" +
- "effjujaraatesche Schreffindesche Gurmukhi-Schreffkorrejaanesche Schr" +
- "effen schineesesche Schreffeijfacher schineesesche Schrefftradizjonä" +
- "ll schineesesche Schreffhebrääjesche Schreffjapaanesche Hiddajaana-S" +
- "chreffen japaanesche Schreffjapaanesche Kattakaana-SchreffKhmer-Schr" +
- "effindesche Kannada-Schreffkorrejaanesche Schreff udder en schineese" +
- "sche Schrefflahootesche Schrefflateinesche Schreffindesche Malajalam" +
- "-Schreffmongjoolesche Schreffbirmaanesche Schreffindesche Orija-Schr" +
- "effsingjaleesesche Schrefftamiilesche Schreffindesche Telugu-Schreff" +
- "malledivesche Taana-Schrefftailändesche Schrefftibeetesche Schreff-Z" +
- "eiche ävver kein Schreff--jaa keij Schreff--öhnß en Schreff--onbikan" +
- "nte Schreff-",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x003c, 0x003c, 0x005c, 0x005c,
- 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
- 0x0069, 0x0069, 0x0069, 0x007e, 0x007e, 0x0099, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x0099, 0x0099, 0x00ae, 0x00ae, 0x00c4, 0x00c4,
- 0x00c4, 0x00c4, 0x00d8, 0x00ed, 0x0106, 0x011c, 0x0134, 0x0134,
- 0x0153, 0x0176, 0x0176, 0x018c, 0x01aa, 0x01aa, 0x01aa, 0x01aa,
- 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01c0, 0x01c0, 0x01c0, 0x01de,
- // Entry 40 - 7F
- 0x01de, 0x01eb, 0x01eb, 0x0203, 0x0238, 0x0238, 0x0238, 0x0238,
- 0x024b, 0x024b, 0x024b, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
- 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
- 0x025e, 0x025e, 0x025e, 0x0278, 0x0278, 0x028d, 0x028d, 0x028d,
- 0x028d, 0x028d, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1,
- 0x02a1, 0x02a1, 0x02a1, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
- 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
- 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
- // Entry 80 - BF
- 0x02b7, 0x02b7, 0x02b7, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce,
- 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02e1,
- 0x02e1, 0x02e1, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0313, 0x0328,
- 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b,
- 0x033b, 0x033b, 0x033b, 0x033b, 0x0357, 0x0369, 0x037c, 0x0390,
- },
- },
- {}, // kw
- { // ky
- kyScriptStr,
- kyScriptIdx,
- },
- {}, // lag
- { // lb
- "ArabeschArmiArmeneschAvesteschBalineseschBattakeschBengaleschBliss-Symbo" +
- "lerBopomofoBrahmiBlanneschrëftBugineseschBuhidUCASKareschChamCheroke" +
- "eCirthKopteschZyprioteschKyrilleschAlkiercheslaweschDevanagariDesere" +
- "tEgyptesch-DemoteschEgyptesch-HierateschEgyptesch HieroglyphenEthiop" +
- "eschKhutsuriGeorgeschGlagoliteschGoteschGriicheschGujaratiGurmukhiHa" +
- "ngulChineseschHanunooVereinfacht ChineseschTraditionellt ChineseschH" +
- "ebräeschHiraganaPahawh HmongKatakana oder HiraganaAlungareschIndus-S" +
- "chrëftAlitaleschJavaneseschJapaneschKayah LiKatakanaKharoshthiKhmerK" +
- "annadaKoreaneschLannaLaoteschLaténgesch-Fraktur-VariantLaténgesch-Gä" +
- "llesch VariantLaténgeschLepchaLimbuLinear ALinear BLykeschLydeschMan" +
- "däeschManichäeschMaya-HieroglyphenMeroiteschMalayseschMongoleschMoon" +
- "Meitei MayekBirmaneschN’KoOghamOl ChikiOrchon-RunenOriyaOsmaneschAlp" +
- "ermeschPhags-paPahlaviPhönizeschPollard PhoneteschRejangRongorongoRu" +
- "neschrëftSamaritaneschSaratiSaurashtraZeechesproochShaw-AlphabetSing" +
- "haleseschSundaneseschSyloti NagriSyreschSyresch-Estrangelo-VariantWe" +
- "stsyreschOstsyreschTai LeTai LueTamileschTeluguTengwarTifinaghDagalo" +
- "gThaanaThaiTibeteschUgariteschVaiSiichtbar SproochAlperseschSumeresc" +
- "h-akkadesch KeilschrëftYiGeierfte SchrëftwäertSymbolerOuni SchrëftOn" +
- "bestëmmtOncodéiert Schrëft",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x001e,
- 0x0029, 0x0029, 0x0029, 0x0033, 0x003d, 0x004b, 0x0053, 0x0059,
- 0x0067, 0x0072, 0x0077, 0x0077, 0x007b, 0x0082, 0x0086, 0x008e,
- 0x0093, 0x009b, 0x00a6, 0x00b0, 0x00c1, 0x00cb, 0x00d2, 0x00d2,
- 0x00e5, 0x00f9, 0x010f, 0x010f, 0x0119, 0x0121, 0x012a, 0x0136,
- 0x013d, 0x013d, 0x0147, 0x014f, 0x0157, 0x015d, 0x0167, 0x016e,
- 0x0184, 0x019c, 0x019c, 0x01a6, 0x01ae, 0x01ae, 0x01ba, 0x01d0,
- 0x01db, 0x01e9, 0x01f3, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217,
- // Entry 40 - 7F
- 0x0221, 0x0226, 0x0226, 0x022d, 0x0237, 0x0237, 0x0237, 0x023c,
- 0x0244, 0x025f, 0x027c, 0x0287, 0x028d, 0x0292, 0x029a, 0x02a2,
- 0x02a2, 0x02a2, 0x02a9, 0x02b0, 0x02b0, 0x02ba, 0x02c6, 0x02d7,
- 0x02d7, 0x02d7, 0x02e1, 0x02eb, 0x02eb, 0x02f5, 0x02f9, 0x02f9,
- 0x0305, 0x0305, 0x030f, 0x030f, 0x030f, 0x030f, 0x0315, 0x0315,
- 0x031a, 0x0322, 0x032e, 0x0333, 0x033c, 0x033c, 0x033c, 0x0346,
- 0x034e, 0x034e, 0x034e, 0x0355, 0x0360, 0x0372, 0x0372, 0x0378,
- 0x0382, 0x038e, 0x039b, 0x03a1, 0x03a1, 0x03ab, 0x03b8, 0x03c5,
- // Entry 80 - BF
- 0x03c5, 0x03c5, 0x03c5, 0x03d2, 0x03d2, 0x03de, 0x03ea, 0x03f1,
- 0x040b, 0x0416, 0x0420, 0x0420, 0x0420, 0x0426, 0x042d, 0x0436,
- 0x0436, 0x0436, 0x043c, 0x0443, 0x044b, 0x0452, 0x0458, 0x045c,
- 0x0465, 0x0465, 0x046f, 0x0472, 0x0483, 0x0483, 0x0483, 0x048d,
- 0x04ad, 0x04af, 0x04c6, 0x04c6, 0x04ce, 0x04db, 0x04e6, 0x04fa,
- },
- },
- {}, // lg
- {}, // lkt
- {}, // ln
- { // lo
- loScriptStr,
- loScriptIdx,
- },
- { // lrc
- "عأرأڤیأرمأنیبأنگالیبوٙپوٙبئرئیلسیریلیکدیڤانگأریئتوٙیوٙپیاییگورجییوٙنانیگ" +
- "وجأراتیگوٙروٙمخیھانگوٙلھانیبیتار سادە بیەسونأتی بیتارعئبریھیراگاناج" +
- "اپوٙنیکاتانگاخئمئرکاناداکورئ ییلائولاتینمالایامموغولیمیانمارئوریاسی" +
- "ناھالاتامیلتئلئگوتاناتایلأندیتأبأتینئشوٙنە یانیسئسە نأبیەجائوفتاأنی" +
- "سئسە نادیار",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0026, 0x0026, 0x0032, 0x0032,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, 0x005e, 0x005e,
- 0x005e, 0x005e, 0x005e, 0x005e, 0x0076, 0x0076, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x008e, 0x009e, 0x00b0, 0x00be, 0x00c6, 0x00c6,
- 0x00e0, 0x00f7, 0x00f7, 0x0101, 0x0111, 0x0111, 0x0111, 0x0111,
- 0x0111, 0x0111, 0x0111, 0x0111, 0x011f, 0x011f, 0x011f, 0x012d,
- // Entry 40 - 7F
- 0x012d, 0x0137, 0x0137, 0x0143, 0x0150, 0x0150, 0x0150, 0x0150,
- 0x0158, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x0162, 0x0170, 0x0170, 0x017c, 0x017c, 0x017c,
- 0x017c, 0x017c, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a,
- 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
- 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
- 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
- // Entry 80 - BF
- 0x0194, 0x0194, 0x0194, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
- 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01ae,
- 0x01ae, 0x01ae, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, 0x01d2,
- 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de,
- 0x01de, 0x01de, 0x01de, 0x01de, 0x01f1, 0x0208, 0x0218, 0x0231,
- },
- },
- { // lt
- ltScriptStr,
- ltScriptIdx,
- },
- {}, // lu
- {}, // luo
- {}, // luy
- { // lv
- lvScriptStr,
- lvScriptIdx,
- },
- {}, // mas
- {}, // mer
- {}, // mfe
- {}, // mg
- {}, // mgh
- { // mgo
- "ngam ŋwaʼringam choʼabo ŋwaʼri tisɔʼ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- // Entry 80 - BF
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
- 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0017, 0x0017, 0x002b,
- },
- },
- { // mk
- mkScriptStr,
- mkScriptIdx,
- },
- { // ml
- mlScriptStr,
- mlScriptIdx,
- },
- { // mn
- mnScriptStr,
- mnScriptIdx,
- },
- { // mr
- mrScriptStr,
- mrScriptIdx,
- },
- { // ms
- msScriptStr,
- msScriptIdx,
- },
- { // mt
- "GħarbiĊirillikuGriegHan SimplifikatHan TradizzjonaliLatinPersjan AntikMh" +
- "ux MiktubKomuniKitba Mhux Magħrufa",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,
- 0x0025, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- // Entry 40 - 7F
- 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- // Entry 80 - BF
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0053, 0x0059, 0x006d,
- },
- },
- {}, // mua
- { // my
- myScriptStr,
- myScriptIdx,
- },
- { // mzn
- "عربیارمنیبنگالیبوپوموفوسیریلیکدیوانانگریاتیوپیاییگرجییونانیگجراتیگورموخی" +
- "هانگولهانساده\u200cبَیی هاناستاندارد ِسنتی هانتعبریهیراگاناجاپونیکا" +
- "تاکانا",
- []uint16{ // 64 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x003c, 0x003c, 0x0050, 0x0050, 0x0050,
- 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x006a, 0x006a,
- 0x006a, 0x006a, 0x0076, 0x0082, 0x0090, 0x009c, 0x00a2, 0x00a2,
- 0x00bc, 0x00e2, 0x00e2, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
- 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0106, 0x0106, 0x0106, 0x0116,
- },
- },
- {}, // naq
- {}, // nd
- { // ne
- neScriptStr,
- neScriptIdx,
- },
- { // nl
- nlScriptStr,
- nlScriptIdx,
- },
- {}, // nmg
- { // nn
- "arabiskarmiskarmenskavestiskbalinesiskbatakbengaliblissymbolbopomofobrah" +
- "mibraillebuginesiskbuhidchakmafelles kanadiske urspråksstavingarkari" +
- "skchamcherokeecirthkoptiskkypriotiskkyrilliskkyrillisk (kyrkjeslavis" +
- "k variant)devanagarideseretegyptisk demotiskegyptisk hieratiskegypti" +
- "ske hieroglyfaretiopiskkhutsuri (asomtavruli og nuskhuri)georgiskgla" +
- "golittiskgotiskgreskgujaratigurmukhihangulhanhanunooforenkla kinesis" +
- "ktradisjonell kinesiskhebraiskhiraganapahawk hmongkatakana eller hir" +
- "aganagammalungarskindusgammalitaliskjavanesiskjapanskkayah likatakan" +
- "akharoshthikhmerkannadakoreanskkaithisklannalaotisklatinsk (frakturv" +
- "ariant)latinsk (gælisk variant)latinsklepchalumbulineær Alineær Blyk" +
- "isklydiskmandaiskmanikeiskmaya-hieroglyfarmeroitiskmalayalammongolsk" +
- "moonmeitei-mayekmyanmarn’kooghamol-chikiorkhonoriyaosmanyagammalperm" +
- "iskphags-painskripsjonspahlavisalmepahlavipahlavifønikiskpollard-fon" +
- "etiskinskripsjonsparthiskrejangrongorongorunersamaritansksaratisaura" +
- "shtrateiknskriftshavisksinhalasundanesisksyloti nagrisyriakisksyriak" +
- "isk (estrangelo-variant)syriakisk (vestleg variant)syriakisk (austle" +
- "g variant)tagbanwatai leny tai luetamilsktai viettelugutengwartifina" +
- "ghtagalogthaanathaitibetanskugaritiskvaisynleg talegammalpersisksume" +
- "ro-akkadisk kileskriftyinedarvamatematisk notasjonsymbolkode for spr" +
- "åk utan skriftfellesukjend skrift",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000d, 0x0014, 0x001c,
- 0x0026, 0x0026, 0x0026, 0x002b, 0x0032, 0x003c, 0x0044, 0x004a,
- 0x0051, 0x005b, 0x0060, 0x0066, 0x0089, 0x008f, 0x0093, 0x009b,
- 0x00a0, 0x00a7, 0x00b1, 0x00ba, 0x00db, 0x00e5, 0x00ec, 0x00ec,
- 0x00fd, 0x010f, 0x0124, 0x0124, 0x012c, 0x014e, 0x0156, 0x0162,
- 0x0168, 0x0168, 0x016d, 0x0175, 0x017d, 0x0183, 0x0186, 0x018d,
- 0x019e, 0x01b3, 0x01b3, 0x01bb, 0x01c3, 0x01c3, 0x01cf, 0x01e6,
- 0x01f3, 0x01f8, 0x0205, 0x020f, 0x0216, 0x0216, 0x021e, 0x0226,
- // Entry 40 - 7F
- 0x0230, 0x0235, 0x0235, 0x023c, 0x0244, 0x0244, 0x024c, 0x0251,
- 0x0258, 0x0270, 0x0289, 0x0290, 0x0296, 0x029b, 0x02a4, 0x02ad,
- 0x02ad, 0x02ad, 0x02b3, 0x02b9, 0x02b9, 0x02c1, 0x02ca, 0x02da,
- 0x02da, 0x02da, 0x02e3, 0x02ec, 0x02ec, 0x02f4, 0x02f8, 0x02f8,
- 0x0304, 0x0304, 0x030b, 0x030b, 0x030b, 0x030b, 0x0311, 0x0311,
- 0x0316, 0x031e, 0x0324, 0x0329, 0x0330, 0x0330, 0x0330, 0x033d,
- 0x0345, 0x0358, 0x0364, 0x036b, 0x0374, 0x0384, 0x0398, 0x039e,
- 0x03a8, 0x03ad, 0x03b8, 0x03be, 0x03be, 0x03c8, 0x03d3, 0x03da,
- // Entry 80 - BF
- 0x03da, 0x03da, 0x03da, 0x03e1, 0x03e1, 0x03ec, 0x03f8, 0x0401,
- 0x041f, 0x043a, 0x0455, 0x045d, 0x045d, 0x0463, 0x046d, 0x0474,
- 0x0474, 0x047c, 0x0482, 0x0489, 0x0491, 0x0498, 0x049e, 0x04a2,
- 0x04ab, 0x04ab, 0x04b4, 0x04b7, 0x04c2, 0x04c2, 0x04c2, 0x04cf,
- 0x04e9, 0x04eb, 0x04f2, 0x0505, 0x050b, 0x0526, 0x052c, 0x0539,
- },
- },
- {}, // nnh
- { // no
- noScriptStr,
- noScriptIdx,
- },
- {}, // nus
- {}, // nyn
- { // om
- "Latin",
- []uint16{ // 76 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0005,
- },
- },
- { // or
- "ଆରବିକ୍ଇମ୍ପେରିଆଲ୍ ଆରମିକ୍ଆର୍ମେନିଆନ୍ଆବେସ୍ଥାନ୍ବାଲିନୀଜ୍ବାଟାକ୍ବଙ୍ଗାଳୀବ୍ଲିସିମ୍ବ" +
- "ଲସ୍ବୋପୋମୋଫୋବ୍ରାହ୍ମୀବ୍ରିଲ୍ବୁଗାନୀଜ୍ବୁହିଦ୍ଚକମାୟୁନିଫାଏଡ୍ କାନାଡିଆନ୍ ଆବ୍" +
- "ରୋଜିନାଲ୍ ସିଲାବିକସ୍କୈରନ୍ଛମ୍ଚିରୁକୀସିର୍ଥକପଟିକ୍ସିପ୍ରଅଟ୍ସିରିଲିକ୍ଓଲ୍ଡ ଚର" +
- "୍ଚ୍ଚ ସାଲଭୋନିକ୍ ସିରିଲିକ୍ଦେବାନଗିରିଡେସର୍ଟଇଜିପ୍ଟିଆନ୍ ଡେମୋଟିକ୍ଇଜିପ୍ଟିଆନ" +
- "୍ ହାଇଅରଟିକ୍ଇଜିପ୍ଟିଆନ୍ ହାଅରଗ୍ଲିପସ୍ଇଥୋପିକ୍ଜର୍ଜିଆନ୍ ଖୁଟସୁରୀଜର୍ଜିଆନ୍ଗ୍" +
- "ଲାଗ୍ଲୋଟିକ୍ଗୋଥିକ୍ଗ୍ରୀକ୍ଗୁଜୁରାଟୀଗୁରୁମୁଖୀହାଙ୍ଗୁଲ୍ହାନ୍ହାନୁନ୍ସରଳୀକୃତ ହା" +
- "ନ୍ପାରମ୍ପରିକ୍ ହାନ୍ହେବ୍ର୍ୟୁହିରାଗାନାପାହୋ ହୋଙ୍ଗକାଟାକାନ୍ କିମ୍ବା ହିରାଗାନ" +
- "୍ପୁରୁଣା ହଙ୍ଗେରିଆନ୍ସିନ୍ଧୁପୁରୁଣା ଇଟାଲୀଜାଭାନୀଜ୍ଜାପାନୀଜ୍କାୟାହା ଲୀକାଟକା" +
- "ନ୍ଖାରୋସ୍ଥିଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କୈଥିଲାନାଲାଓଫ୍ରାକଥୁର୍ ଲାଟିନ୍ଗାଏଲିକ୍ ଲାଟ" +
- "ିନ୍ଲାଟିନ୍ଲେପଚାଲିମ୍ବୁଲିନିୟର୍ଲିନିୟର୍ ବିଲିଶିୟନ୍ଲିଡିୟନ୍ମାନଡେନ୍ମନଶୀନ୍ମୟ" +
- "ାନ୍ ହାୟରଲଜିକସ୍ମେରୋଇଟିକ୍ମାଲୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ଚନ୍ଦ୍ରମାଏତି ମାୟେକ୍ମିଆମାର୍ଏ" +
- "ନ୍ କୋଓଘାମାଓଲ୍ ଚିକିଓରୋଖନ୍ଓଡିଆଓସୋମାନିୟାଓଲ୍ଡ ପରମିକ୍ଫାଗସ୍-ପାଇନସ୍କ୍ରୀପସ" +
- "ାନଲ୍ ପାହାଲାୱୀସ୍ଲାଟର୍ ପାହାଲାୱୀବୁକ୍ ପାହାଲାୱୀଫେନୋସିଆନ୍ପୋଲାର୍ଡ ଫୋନେଟିକ" +
- "୍ଇନସ୍କ୍ରୀପସାନଲ୍ ପାର୍ଥିଆନ୍ରେଜାଙ୍ଗରୋଙ୍ଗୋରୋଙ୍ଗୋରନିକ୍ସମୌରିଟନ୍ସାରାତିସୌର" +
- "ାଷ୍ଟ୍ରସାଙ୍କେତିକ ଲିଖସାବିୟାନ୍ସିଂହଳସୁଦାନୀଜ୍ସୀଲିତୋ ନଗରୀସିରିୟାକ୍ଏଷ୍ଟ୍ରା" +
- "ଙ୍ଗେଲୋ ସିରିକ୍ୱେଷ୍ଟର୍ନ ସିରିକ୍ଇଷ୍ଟର୍ନ ସିରିକ୍ତଗବାନ୍ୱାତାଇ ଲେନୂତନ ତାଇ ଲ" +
- "ୁଏତାମିଲ୍ତାଇ ଭିଏତ୍ତେଲୁଗୁତେଙ୍ଗୱାର୍ତିଫିଙ୍ଘାଟାଗାଲୋଗ୍ଥାନାଥାଇତିବେତାନ୍ୟୁଗ" +
- "ାରିଟିକ୍ୱାଇଭିଜିବଲ୍ ସ୍ପିଚ୍ପୁରୁଣା ଫରାସୀସୁମେରୋ-ଆକ୍କାଡିଆନ୍ ସୁନିଫର୍ମୟୀବଂ" +
- "ଶଗତଗାଣିତିକ ନୋଟେସନ୍ସିମ୍ବଲ୍ଅଲିଖିତସାଧାରଣଅଞ୍ଜାତ କିମ୍ବା ଅବୈଧ ସ୍କ୍ରୀପ୍ଟ",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c,
- 0x0094, 0x0094, 0x0094, 0x00a6, 0x00bb, 0x00df, 0x00f7, 0x010f,
- 0x0121, 0x0139, 0x014b, 0x0157, 0x01cc, 0x01db, 0x01e4, 0x01f6,
- 0x0205, 0x0217, 0x022f, 0x0247, 0x029b, 0x02b6, 0x02c8, 0x02c8,
- 0x02ff, 0x0339, 0x0379, 0x0379, 0x038e, 0x03bc, 0x03d4, 0x03f8,
- 0x040a, 0x040a, 0x041c, 0x0434, 0x044c, 0x0464, 0x0470, 0x0482,
- 0x04a4, 0x04cf, 0x04cf, 0x04e7, 0x04ff, 0x04ff, 0x051b, 0x055f,
- 0x0590, 0x05a2, 0x05c4, 0x05dc, 0x05f4, 0x05f4, 0x060d, 0x0622,
- // Entry 40 - 7F
- 0x063a, 0x064c, 0x064c, 0x065b, 0x0670, 0x0670, 0x067c, 0x0688,
- 0x0691, 0x06bf, 0x06e7, 0x06f9, 0x0708, 0x071a, 0x072f, 0x074b,
- 0x074b, 0x074b, 0x0760, 0x0775, 0x0775, 0x078a, 0x079c, 0x07ca,
- 0x07ca, 0x07ca, 0x07e5, 0x07fa, 0x07fa, 0x0818, 0x082a, 0x082a,
- 0x084c, 0x084c, 0x0861, 0x0861, 0x0861, 0x0861, 0x0871, 0x0871,
- 0x0880, 0x0896, 0x08a8, 0x08b4, 0x08cf, 0x08cf, 0x08cf, 0x08ee,
- 0x0904, 0x0947, 0x0975, 0x099a, 0x09b5, 0x09e3, 0x0a29, 0x0a3e,
- 0x0a62, 0x0a71, 0x0a89, 0x0a9b, 0x0a9b, 0x0ab6, 0x0adb, 0x0af3,
- // Entry 80 - BF
- 0x0af3, 0x0af3, 0x0af3, 0x0b02, 0x0b02, 0x0b1a, 0x0b39, 0x0b51,
- 0x0b8b, 0x0bb6, 0x0bde, 0x0bf6, 0x0bf6, 0x0c06, 0x0c26, 0x0c38,
- 0x0c38, 0x0c51, 0x0c63, 0x0c7e, 0x0c96, 0x0cae, 0x0cba, 0x0cc3,
- 0x0cdb, 0x0cdb, 0x0cf9, 0x0d02, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d4c,
- 0x0d96, 0x0d9c, 0x0dab, 0x0dd6, 0x0deb, 0x0dfd, 0x0e0f, 0x0e5d,
- },
- },
- { // os
- "АраббагКиррилицӕӔнцонгонд китайагТрадицион китайагЛатинагНӕфысгӕНӕзонгӕ " +
- "скрипт",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
- 0x0041, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
- // Entry 40 - 7F
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- // Entry 80 - BF
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x007e, 0x007e, 0x0099,
- },
- },
- { // pa
- paScriptStr,
- paScriptIdx,
- },
- { // pa-Arab
- "عربیگُرمُکھی",
- []uint16{ // 45 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
- },
- },
- { // pl
- plScriptStr,
- plScriptIdx,
- },
- {}, // prg
- { // ps
- "عربي",
- []uint16{ // 5 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
- },
- },
- { // pt
- ptScriptStr,
- ptScriptIdx,
- },
- { // pt-PT
- ptPTScriptStr,
- ptPTScriptIdx,
- },
- {}, // qu
- { // rm
- "arabarameic imperialarmenavesticbalinaisbatakbengalsimbols da Blissbopom" +
- "ofobrahmiscrittira da Braillebuginaisbuhidchakmasimbols autoctons ca" +
- "nadais unifitgadscarianchamcherokeecirthcopticcipriotcirillicslav da" +
- " baselgia vegldevanagarideseretegipzian demoticegipzian ieraticierog" +
- "lifas egipzianasetiopickutsurigeorgianglagoliticgoticgrecgujaratigur" +
- "mukhihangulhanhanunooscrittira chinaisa simplifitgadascrittira china" +
- "isa tradiziunalaebraichiraganapahawn hmongkatanaka u hiraganaungarai" +
- "s veglindusitalic vegljavanaisgiapunaiskayah likatakanakharoshthikhm" +
- "er/cambodschankannadacoreankaithilannalaotlatin (scrittira gotica)la" +
- "tin (scrittira gaelica)latinlepchalimbulinear Alinear Blichiclidicma" +
- "ndaicmanicheicieroglifas mayameroiticmalaisianmongolicmoonmeetei may" +
- "ekburmaisn’kooghamol chikiorkhonoriyaosmanpermic veglphags-papahlavi" +
- " dad inscripziunspahlavi da psalmspahlavi da cudeschsfenizianfonetic" +
- "a da Pollardpartic dad inscripziunsrejangrongorongorunicsamaritansar" +
- "atisaurashtralingua da segnsshaviansingalaissundanaissyloti nagrisir" +
- "icsiric estrangelosiric dal vestsiric da l’osttagbanwatai letai luet" +
- "amiltai viettelugutengwartifinaghtagalogthaanatailandaistibetanugari" +
- "ticvaiialfabet visibelpersian veglscrittira a cugn sumeric-accadicay" +
- "iertànotaziun matematicasimbolslinguas na scrittasbetg determinàscri" +
- "ttira nunenconuschenta u nunvalaivla",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x0019, 0x0020,
- 0x0028, 0x0028, 0x0028, 0x002d, 0x0033, 0x0043, 0x004b, 0x0051,
- 0x0065, 0x006d, 0x0072, 0x0078, 0x009d, 0x00a3, 0x00a7, 0x00af,
- 0x00b4, 0x00ba, 0x00c1, 0x00c9, 0x00de, 0x00e8, 0x00ef, 0x00ef,
- 0x00ff, 0x010f, 0x0124, 0x0124, 0x012b, 0x0132, 0x013a, 0x0144,
- 0x0149, 0x0149, 0x014d, 0x0155, 0x015d, 0x0163, 0x0166, 0x016d,
- 0x018d, 0x01ac, 0x01ac, 0x01b2, 0x01ba, 0x01ba, 0x01c6, 0x01d9,
- 0x01e6, 0x01eb, 0x01f6, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217,
- // Entry 40 - 7F
- 0x0221, 0x0232, 0x0232, 0x0239, 0x023f, 0x023f, 0x0245, 0x024a,
- 0x024e, 0x0266, 0x027f, 0x0284, 0x028a, 0x028f, 0x0297, 0x029f,
- 0x029f, 0x029f, 0x02a5, 0x02aa, 0x02aa, 0x02b1, 0x02ba, 0x02c9,
- 0x02c9, 0x02c9, 0x02d1, 0x02da, 0x02da, 0x02e2, 0x02e6, 0x02e6,
- 0x02f2, 0x02f2, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02ff, 0x02ff,
- 0x0304, 0x030c, 0x0312, 0x0317, 0x031c, 0x031c, 0x031c, 0x0327,
- 0x032f, 0x0347, 0x0358, 0x036b, 0x0373, 0x0386, 0x039d, 0x03a3,
- 0x03ad, 0x03b2, 0x03bb, 0x03c1, 0x03c1, 0x03cb, 0x03da, 0x03e1,
- // Entry 80 - BF
- 0x03e1, 0x03e1, 0x03e1, 0x03ea, 0x03ea, 0x03f3, 0x03ff, 0x0404,
- 0x0414, 0x0422, 0x0432, 0x043a, 0x043a, 0x0440, 0x0447, 0x044c,
- 0x044c, 0x0454, 0x045a, 0x0461, 0x0469, 0x0470, 0x0476, 0x0480,
- 0x0487, 0x0487, 0x048f, 0x0493, 0x04a2, 0x04a2, 0x04a2, 0x04ae,
- 0x04cf, 0x04d1, 0x04d6, 0x04e9, 0x04f0, 0x0503, 0x0512, 0x053a,
- },
- },
- {}, // rn
- { // ro
- roScriptStr,
- roScriptIdx,
- },
- {}, // rof
- { // ru
- ruScriptStr,
- ruScriptIdx,
- },
- {}, // rw
- {}, // rwk
- { // sah
- "АрааптыыЭрмээннииНууччалыыКириэктииДьоппуоннууКэриэйдииЛатыынныыТаайдыыС" +
- "урулла иликБиллибэт сурук",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x0046, 0x0046, 0x005c, 0x005c, 0x005c, 0x005c,
- // Entry 40 - 7F
- 0x005c, 0x005c, 0x005c, 0x005c, 0x006e, 0x006e, 0x006e, 0x006e,
- 0x006e, 0x006e, 0x006e, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- // Entry 80 - BF
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
- 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x00a5, 0x00a5, 0x00c0,
- },
- },
- {}, // saq
- {}, // sbp
- { // se
- "arábakyrillalašgreikkalašhangulkiinnašálkiárbevirolašhiraganakatakanaláh" +
- "tenašorrut chállojuvvotdovdameahttun chállin",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x001c, 0x001c, 0x001c, 0x0022, 0x002a, 0x002a,
- 0x002f, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c,
- // Entry 40 - 7F
- 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
- 0x004c, 0x004c, 0x004c, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- // Entry 80 - BF
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0069, 0x0069, 0x007f,
- },
- },
- { // se-FI
- "arábalaškiinnálašálkes kiinnálašárbevirolaš kiinnálašorrut čállojuvvotdo" +
- "vdameahttun čállin",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0015, 0x0015,
- 0x0027, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- // Entry 40 - 7F
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- // Entry 80 - BF
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0053, 0x0053, 0x0069,
- },
- },
- {}, // seh
- {}, // ses
- {}, // sg
- {}, // shi
- {}, // shi-Latn
- { // si
- siScriptStr,
- siScriptIdx,
- },
- { // sk
- skScriptStr,
- skScriptIdx,
- },
- { // sl
- slScriptStr,
- slScriptIdx,
- },
- {}, // smn
- {}, // sn
- { // so
- "Aan la qorinFar aan la aqoon amase aan saxnayn",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x002e,
- },
- },
- { // sq
- sqScriptStr,
- sqScriptIdx,
- },
- { // sr
- srScriptStr,
- srScriptIdx,
- },
- { // sr-Latn
- srLatnScriptStr,
- srLatnScriptIdx,
- },
- { // sv
- svScriptStr,
- svScriptIdx,
- },
- {}, // sv-FI
- { // sw
- swScriptStr,
- swScriptIdx,
- },
- {}, // sw-CD
- { // ta
- taScriptStr,
- taScriptIdx,
- },
- { // te
- teScriptStr,
- teScriptIdx,
- },
- {}, // teo
- { // th
- thScriptStr,
- thScriptIdx,
- },
- { // ti
- "ፊደልላቲን",
- []uint16{ // 76 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- // Entry 40 - 7F
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0012,
- },
- },
- { // to
- "tohinima fakaʻafakatohinima fakaʻalapēnia-kaukasiatohinima fakaʻalepeato" +
- "hinima fakaʻalāmiti-ʻemipaeatohinima fakaʻāmeniatohinima fakaʻavesit" +
- "anitohinima fakapalitohinima fakapamumitohinima fakapasa-vātohinima " +
- "fakapātakitohinima fakapengikalitohinima fakaʻilonga-pilisitohinima " +
- "fakapopomofotohinima fakapalāmītohinima laukonga ki he kuitohinima f" +
- "akapukisitohinima fakapuhititohinima fakasakimātohinima fakatupuʻi-k" +
- "ānata-fakatahatahatohinima fakakalitohinima fakasamitohinima fakase" +
- "lokītohinima fakakīlititohinima fakakopitikatohinima fakasaipalesito" +
- "hinima fakalūsiatohinima fakalūsia-lotu-motuʻatohinima fakaʻinitia-t" +
- "evanākalītohinima fakateseletitohinimanounou fakatupoloiētohinima te" +
- "motika-fakaʻisipitetohinima hielatika-fakaʻisipitetohinima tongitapu" +
- "-fakaʻisipitetohinima fakaʻelepasanitohinima fakaʻītiōpiatohinima fa" +
- "kakutusuli-seōsiatohinima fakaseōsiatohinima fakakalakolititohinima " +
- "fakakotikatohinima fakasilanitātohinima fakakalisitohinima fakaʻinit" +
- "ia-kutalatitohinima fakakūmukitohinima fakakōlea-hāngūlutohinima fak" +
- "asiainatohinima fakahanunōʻotohinima fakasiaina-fakafaingofuatohinim" +
- "a fakasiaina-tukufakaholotohinima fakahepelūtohinima fakasiapani-hil" +
- "akanatohinima tongitapu-fakaʻanatoliatohinima fakapahaumongitohinima" +
- " fakasilapa-siapanitohinima fakahungakalia-motuʻatohinima fakaʻinitu" +
- "sitohinima fakaʻītali-motuʻatohinima fakasavatohinima fakasiapanitoh" +
- "inima fakaiūkenitohinima fakakaialītohinima fakasiapani-katakanatohi" +
- "nima fakakalositītohinima fakakamipōtiatohinima fakakosikītohinima f" +
- "akaʻinitia-kanatatohinima fakakōleatohinima fakakepeletohinima fakak" +
- "aiatītohinima fakalanatohinima fakalautohinima fakalatina-falakituli" +
- "tohinima fakalatina-kaelikitohinima fakalatinatohinima fakalepasātoh" +
- "inima fakalimipūtohinima fakalinea-Atohinima fakalinea-Ptohinima fak" +
- "afalāsetohinima fakalomatohinima fakalīsiatohinima fakalītiatohinima" +
- " fakamahasanitohinima fakamanitaeatohinima fakamanikaeatohinima tong" +
- "itapu fakamaiatohinima fakamēnititohinima fakameloue-heiheitohinima " +
- "fakamelouetohinima fakaʻinitia-malāialamitohinima fakamotītohinima f" +
- "akamongokōliatohinima laukonga ki he kui-māhinatohinima fakamolōtohi" +
- "nima fakametei-maiekitohinima fakapematohinima fakaʻalepea-tokelau-m" +
- "otuʻatohinima fakanapateatohinima fakanati-sepatohinima fakanikōtohi" +
- "nima fakanasiūtohinima fakaʻokamitohinima fakaʻolisikitohinima fakaʻ" +
- "olikonitohinima fakaʻinitia-ʻolāeatohinima fakaʻosimāniatohinima fak" +
- "apalamilenetohinima fakapausinihautohinima fakapēmi-motuʻatohinima f" +
- "akapākisipātohinima fakapālavi-tongitohinima fakapālavi-saametohinim" +
- "a fakapālavi-tohitohinima fakafoinikiatohinima fakafonētiki-polātito" +
- "hinima fakapātia-tongitohinima fakalesiangitohinima fakalongolongoto" +
- "hinima fakalunikitohinima fakasamalitanetohinima fakasalatitohinima " +
- "fakaʻalepea-tonga-motuʻatohinima fakasaulasitātohinima fakaʻilonga-t" +
- "ohitohinima fakasiavitohinima fakasiālatātohinima fakasititamitohini" +
- "ma fakakutauātitohinima fakasingihalatohinima fakasolasomipengitohin" +
- "ima fakasunitātohinima fakasailoti-nakilitohinima fakasuliāiātohinim" +
- "a fakasuliāiā-ʻesitelangelotohinima fakasuliāiā-hihifotohinima fakas" +
- "uliāiā-hahaketohinima fakatakipaneuātohinima fakatakilitohinima faka" +
- "tai-luetohinima fakatai-lue-foʻoutohinima fakatamilitohinima fakatan" +
- "gutitohinima fakatai-vietitohinima fakaʻinitia-telukutohinima fakate" +
- "ngiualitohinima fakatifinākitohinima fakatakalokatohinima fakatānato" +
- "hinima fakatailanitohinima fakataipetitohinima fakatīhutatohinima fa" +
- "kaʻūkalititohinima fakavaitohinima fakafonētiki-hāmaitohinima fakava" +
- "langi-kisitītohinima fakauoleaitohinima fakapēsiamuʻatohinima fakama" +
- "taʻingahau-sumelo-akatiatohinima fakaīītohinima hokositohinima fakam" +
- "atematikatohinima fakaʻilongatohinima taʻetohitohiʻitohinima fakatat" +
- "autohinima taʻeʻiloa",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0014, 0x0035, 0x0035, 0x004a, 0x006b, 0x0081, 0x0099,
- 0x00aa, 0x00bd, 0x00d2, 0x00e6, 0x00fc, 0x0118, 0x012d, 0x0142,
- 0x015d, 0x0170, 0x0183, 0x0197, 0x01c0, 0x01d1, 0x01e2, 0x01f6,
- 0x020a, 0x021f, 0x0235, 0x0248, 0x0268, 0x028a, 0x029f, 0x02bb,
- 0x02da, 0x02fa, 0x031a, 0x0332, 0x034a, 0x0367, 0x037b, 0x0392,
- 0x03a5, 0x03bb, 0x03ce, 0x03ec, 0x0400, 0x041d, 0x0430, 0x0447,
- 0x0468, 0x0488, 0x0488, 0x049c, 0x04b9, 0x04da, 0x04f1, 0x050c,
- 0x052b, 0x0541, 0x055e, 0x056f, 0x0583, 0x0597, 0x05ab, 0x05c8,
- // Entry 40 - 7F
- 0x05de, 0x05f5, 0x0609, 0x0625, 0x0638, 0x064b, 0x065f, 0x0670,
- 0x0680, 0x069e, 0x06b9, 0x06cc, 0x06e0, 0x06f4, 0x0708, 0x071c,
- 0x0730, 0x0741, 0x0754, 0x0767, 0x077c, 0x0791, 0x07a6, 0x07c1,
- 0x07d5, 0x07ef, 0x0802, 0x0823, 0x0835, 0x084d, 0x0870, 0x0882,
- 0x089b, 0x089b, 0x08ac, 0x08d1, 0x08e5, 0x08fb, 0x090d, 0x0920,
- 0x0934, 0x094a, 0x0960, 0x097e, 0x0996, 0x09ad, 0x09c4, 0x09de,
- 0x09f5, 0x0a0f, 0x0a29, 0x0a42, 0x0a57, 0x0a75, 0x0a8e, 0x0aa3,
- 0x0aba, 0x0acd, 0x0ae4, 0x0af7, 0x0b1a, 0x0b31, 0x0b4b, 0x0b5d,
- // Entry 80 - BF
- 0x0b73, 0x0b88, 0x0b9e, 0x0bb4, 0x0bce, 0x0be2, 0x0bfd, 0x0c13,
- 0x0c38, 0x0c55, 0x0c72, 0x0c8a, 0x0c9d, 0x0cb1, 0x0ccc, 0x0cdf,
- 0x0cf3, 0x0d09, 0x0d25, 0x0d3b, 0x0d51, 0x0d66, 0x0d78, 0x0d8c,
- 0x0da0, 0x0db4, 0x0dcb, 0x0ddb, 0x0df8, 0x0e14, 0x0e27, 0x0e3f,
- 0x0e67, 0x0e78, 0x0e87, 0x0e9e, 0x0eb3, 0x0ecc, 0x0ede, 0x0ef2,
- },
- },
- { // tr
- trScriptStr,
- trScriptIdx,
- },
- {}, // twq
- {}, // tzm
- { // ug
- "ئافاكائەرەبخان جەمەتى ئارامۇئەرمەنئاۋېستابالىبامۇمباسساباتاكبېنگالبىلىس " +
- "بەلگىلىرىخەنچە پىنيىنبراخمىبرائىل ئەمالار يېزىقىبۇگىبۇخىتچاكمابىرلى" +
- "ككە كەلگەن كانادا يەرلىك بوغۇم جەدۋىلىكارىياچامچېروكىكىرسچەكوپتىكسى" +
- "پرۇسكىرىلقەدىمكى چىركاۋ سىلاۋيانچە كىرىلدېۋاناگارىدېزېرېتدۇپلويان ت" +
- "ېز خاتىرىلەشدېموتىكچە مىسىرخىيەراتىكچە مىسىرتەسۋىرىي يېزىق مىسىرئېف" +
- "ىيوپىيەچەخۇتسۇرى گىرۇزىنچەگىرۇزىنچەگىلاگوتچەگوتچەگىرانتاچەگىرېكچەگۇ" +
- "جاراتچەگۇرمۇكىچەخەنچەخانۇنۇچەئاددىي خەنچەمۇرەككەپ خەنچەئىبرانىچەخىر" +
- "اگانائاناتولىيە تەسۋىرىي يېزىقمۆڭچەياپونچە خىراگانا ياكى كاتاكاناقە" +
- "دىمكى ماجارچەئىندۇسچەقەدىمكى ئىتاليانچەياۋاچەياپونچەجۇرچېنچەكاياھچە" +
- "كاتاكاناكاروشتىچەكېخمېرچەخوجكىچەكانناداچەكورېيەچەكپېللېچەكاياتىچەلا" +
- "نناچەلائوسچەفىراكتۇر لاتىنچەسىكوت لاتىنچەلاتىنچەلەپچاچەلىمبۇچەسىزىق" +
- "لىق Aسىزىقلىق Bفراسېرچەلوماچەلىسىيانچەلىدىيەچەماندائىكچەمانەكېزەمچە" +
- "ماياچە تەسۋىرىي يېزىقمېندېچەمېتروئىت يازمىچەمېتروئىتمالايامچەموڭغۇل" +
- "چەكورىيەمروچەمانىپۇرىچەبىرماچەقەدىمكى شىمالىي ئەرەبچەئانباتچەناشىچە" +
- "نىكوچەنۈشۇچەئوگەمچەئول-چىكىچەئورخۇنچەئورىياچەئوسمانيەپالمىراچەقەدىم" +
- "كى پېرمىكچەپاسپاچەپەھلىۋىچە ئويما خەتپەھلىۋىچە شېئىرىي تىلپەھلىۋىچە" +
- " كىتابى تىلفىنىكچەپوللارد تاۋۇشلىرىپارتىئانچە ئويما خەترېجاڭچەروڭگور" +
- "وڭگورۇنىكچەسامارىچەساراتىچەقەدىمكى جەنۇبى ئەرەبچەسائۇراشتىراچەئىشار" +
- "ەت تىلىشاۋىيانچەشاراداچەكۇداۋادچەسىنخالاچەسورا سامپىڭسۇنداچەسىيولوت" +
- "ى-ناگرىچەسۈرىيەچەسۈرىيەچە ئەبجەتغەربىي سۈرىيەچەشەرقىي سۈرىيەچەتاگبا" +
- "نۋاچەتاكرىچەتاي-لەچەيېڭى تاي-لەچەتامىلچەتاڭغۇتچەتايلاندچە-ۋىيېتنامچ" +
- "ەتېلۇگۇچەتېڭۋارچەتىفىناغچەتاگالوگچەتاناچەتايلاندچەتىبەتچەتىرخۇتاچەئ" +
- "ۇگارىتىكچەۋايچەكۆرۈنۈشچان تاۋۇشۋاراڭ كىشىتىۋولىئايقەدىمكى پارىسچەسۇ" +
- "مېر-ئاككادىيان مىخ خەتيىچەئىرسىيەت ئاتالغۇماتېماتىكىلىق بەلگەبەلگەي" +
- "ېزىلمىغانئورتاقيوچۇن يېزىق",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x000c, 0x000c, 0x0016, 0x0036, 0x0042, 0x0050,
- 0x0058, 0x0062, 0x006c, 0x0076, 0x0082, 0x009f, 0x00b6, 0x00c2,
- 0x00ea, 0x00f2, 0x00fc, 0x0106, 0x0157, 0x0163, 0x0169, 0x0175,
- 0x0181, 0x018d, 0x0199, 0x01a3, 0x01de, 0x01f2, 0x0200, 0x022a,
- 0x0247, 0x0268, 0x028e, 0x028e, 0x02a6, 0x02c7, 0x02d9, 0x02eb,
- 0x02f5, 0x0307, 0x0315, 0x0327, 0x0339, 0x0339, 0x0343, 0x0353,
- 0x036a, 0x0385, 0x0385, 0x0397, 0x03a7, 0x03d7, 0x03e1, 0x041a,
- 0x0437, 0x0447, 0x046a, 0x0476, 0x0484, 0x0494, 0x04a2, 0x04b2,
- // Entry 40 - 7F
- 0x04c4, 0x04d4, 0x04e2, 0x04f4, 0x0504, 0x0514, 0x0524, 0x0532,
- 0x0540, 0x055f, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05b4, 0x05c6,
- 0x05d6, 0x05e2, 0x05f4, 0x0604, 0x0604, 0x0618, 0x062e, 0x0656,
- 0x0664, 0x0683, 0x0693, 0x06a5, 0x06a5, 0x06b5, 0x06c1, 0x06cb,
- 0x06df, 0x06df, 0x06ed, 0x0719, 0x0729, 0x0735, 0x0741, 0x074d,
- 0x075b, 0x076e, 0x077e, 0x078e, 0x079e, 0x07b0, 0x07b0, 0x07cf,
- 0x07dd, 0x0801, 0x0829, 0x084f, 0x085d, 0x087e, 0x08a4, 0x08b2,
- 0x08c6, 0x08d4, 0x08e4, 0x08f4, 0x091e, 0x0938, 0x094f, 0x0961,
- // Entry 80 - BF
- 0x0971, 0x0971, 0x0983, 0x0995, 0x09aa, 0x09b8, 0x09d7, 0x09e7,
- 0x0a04, 0x0a21, 0x0a3e, 0x0a52, 0x0a60, 0x0a6f, 0x0a87, 0x0a95,
- 0x0aa5, 0x0acc, 0x0adc, 0x0aec, 0x0afe, 0x0b10, 0x0b1c, 0x0b2e,
- 0x0b3c, 0x0b4e, 0x0b64, 0x0b6e, 0x0b8d, 0x0ba4, 0x0bb2, 0x0bcf,
- 0x0bfc, 0x0c04, 0x0c23, 0x0c48, 0x0c52, 0x0c66, 0x0c72, 0x0c87,
- },
- },
- { // uk
- ukScriptStr,
- ukScriptIdx,
- },
- { // ur
- urScriptStr,
- urScriptIdx,
- },
- {}, // ur-IN
- { // uz
- uzScriptStr,
- uzScriptIdx,
- },
- { // uz-Arab
- "عربی",
- []uint16{ // 5 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
- },
- },
- { // uz-Cyrl
- "АрабАрманБенгалиБопомофоБраиллеКирилДевангариҲабашГрузинЮнонГужаратиГурм" +
- "ухиХангулХанСоддалаштирилганАнъанавийИбронийХираганаЯпонКатаканаХме" +
- "рКаннадаКорейсЛаоЛотинМалайаламМўғулчаМьянмаОрияСинхалаТамилТелугуТ" +
- "аанаТайТибетРамзларЁзилмаганУмумийНомаълум шрифт",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x0030, 0x0030,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x0048, 0x0048, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, 0x0070, 0x0070,
- 0x0070, 0x0070, 0x0078, 0x0088, 0x0096, 0x00a2, 0x00a8, 0x00a8,
- 0x00c8, 0x00da, 0x00da, 0x00e8, 0x00f8, 0x00f8, 0x00f8, 0x00f8,
- 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0100, 0x0100, 0x0100, 0x0110,
- // Entry 40 - 7F
- 0x0110, 0x0118, 0x0118, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132,
- 0x0138, 0x0138, 0x0138, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142,
- 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142,
- 0x0142, 0x0142, 0x0142, 0x0154, 0x0154, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e,
- 0x016e, 0x016e, 0x016e, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- // Entry 80 - BF
- 0x0176, 0x0176, 0x0176, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184,
- 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x018e,
- 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a4, 0x01aa,
- 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
- 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01c2, 0x01d4, 0x01e0, 0x01fb,
- },
- },
- {}, // vai
- {}, // vai-Latn
- { // vi
- viScriptStr,
- viScriptIdx,
- },
- {}, // vun
- { // wae
- "ArabišArmenišBengališKirillišDevanagariEthiopišGeorgišGričišGujaratiVere" +
- "ifačtTraditionellHebräišJapanišKhmerKannadaKorianišLaotišLatinišMala" +
- "isišBurmesišOriyaSingalesišTamilišTeluguThánaThaiSchriftlosUnkodiert" +
- "i Schrift",
- []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x0018, 0x0021, 0x0021, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x0034, 0x0034, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x0044, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
- 0x0056, 0x0062, 0x0062, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073,
- // Entry 40 - 7F
- 0x0073, 0x0078, 0x0078, 0x007f, 0x0088, 0x0088, 0x0088, 0x0088,
- 0x008f, 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
- 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
- 0x0097, 0x0097, 0x0097, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
- 0x00a0, 0x00a0, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
- 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- // Entry 80 - BF
- 0x00ae, 0x00ae, 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9,
- 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c1,
- 0x00c1, 0x00c1, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cd, 0x00d1,
- 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1,
- 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00db, 0x00db, 0x00ed,
- },
- },
- {}, // xog
- {}, // yav
- { // yi
- "אַראַבישצירילישדעוואַנאַגאַריגריכישHebrגַלחיש",
- []uint16{ // 76 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x001e, 0x001e, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x0046, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
- 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
- // Entry 40 - 7F
- 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
- 0x004a, 0x004a, 0x004a, 0x0056,
- },
- },
- {}, // yo
- {}, // yo-BJ
- {}, // zgh
- { // zh
- zhScriptStr,
- zhScriptIdx,
- },
- { // zh-Hant
- zhHantScriptStr,
- zhHantScriptIdx,
- },
- { // zh-Hant-HK
- "西里爾文梵文埃塞俄比亞文格魯吉亞文古木基文韓文字母簡體字繁體字坎納達文老撾文拉丁字母馬拉雅拉姆文奧里雅文僧伽羅文泰米爾文它拿字母藏文",
- []uint16{ // 153 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0024, 0x0024, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x003f, 0x004b, 0x004b, 0x004b,
- 0x0054, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
- // Entry 40 - 7F
- 0x005d, 0x005d, 0x005d, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
- 0x0072, 0x0072, 0x0072, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x007e, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
- // Entry 80 - BF
- 0x009c, 0x009c, 0x009c, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
- 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c0, 0x00c0,
- 0x00c6,
- },
- },
- { // zu
- zuScriptStr,
- zuScriptIdx,
- },
-}
-
-var afScriptStr string = "" + // Size: 315 bytes
- "ArabiesArmeensBengaalsBopomofoBrailleSirilliesDevanagariEtiopiesGeorgies" +
- "GrieksGudjaratiGurmukhiHangulHanVereenvoudigde HanTradisionele HanHebree" +
- "usHiraganaJapanneesKatakanaKhmerKannadaKoreaansLaoLatynMalabaarsMongools" +
- "MianmarOriyaSinhalaTamilTeloegoeThaanaThaiTibettaansSimboleOngeskreweAlg" +
- "emeenOnbekende skryfstelsel"
-
-var afScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x001e, 0x001e,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x004e, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068,
- 0x007a, 0x008a, 0x008a, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a,
- 0x009a, 0x009a, 0x009a, 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00ab,
- // Entry 40 - 7F
- 0x00ab, 0x00b0, 0x00b0, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
- 0x00c2, 0x00c2, 0x00c2, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df,
- 0x00df, 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
- // Entry 80 - BF
- 0x00e4, 0x00e4, 0x00e4, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
- 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f0,
- 0x00f0, 0x00f0, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00fe, 0x0102,
- 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
- 0x010c, 0x010c, 0x010c, 0x010c, 0x0113, 0x011d, 0x0125, 0x013b,
-} // Size: 360 bytes
-
-var amScriptStr string = "" + // Size: 505 bytes
- "ዓረብኛአርሜንያዊቤንጋሊቦፖሞፎብሬይልሲይሪልክደቫንጋሪኢትዮፒክጆርጂያዊግሪክጉጃራቲጉርሙኪሐንጉልሃንቀለል ያለ ሃንባህላዊ" +
- " ሃንእብራይስጥሂራጋናጃፓንኛካታካናክህመርካንአዳኮሪያኛላኦላቲንማላያልምሞንጎሊያኛምያንማርኦሪያሲንሃላታሚልተሉጉታናታይቲ" +
- "ቤታንምልክቶችያልተጻፈየጋራያልታወቀ ስክሪፕት"
-
-var amScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x002a, 0x0036, 0x0036,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0051, 0x0051, 0x0060, 0x0060, 0x0060,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x006f, 0x006f, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b1, 0x00b1,
- 0x00c8, 0x00db, 0x00db, 0x00ed, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
- 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0105, 0x0105, 0x0105, 0x0111,
- // Entry 40 - 7F
- 0x0111, 0x011d, 0x011d, 0x0129, 0x0135, 0x0135, 0x0135, 0x0135,
- 0x013b, 0x013b, 0x013b, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144,
- 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144,
- 0x0144, 0x0144, 0x0144, 0x0153, 0x0153, 0x0165, 0x0165, 0x0165,
- 0x0165, 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
- 0x0174, 0x0174, 0x0174, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
- 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
- 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
- // Entry 80 - BF
- 0x017d, 0x017d, 0x017d, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0192,
- 0x0192, 0x0192, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a1, 0x01a7,
- 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
- 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c2, 0x01d1, 0x01da, 0x01f9,
-} // Size: 360 bytes
-
-var arScriptStr string = "" + // Size: 2430 bytes
- "العربيةالأرمينيةالباليةالباتاكالبنغاليةرموز بليسالبوبوموفوالهندوسيةالبرا" +
- "يلالبجينيزالبهيديةمقاطع كندية أصلية موحدةالكاريةالتشاميةالشيروكيالسيرثا" +
- "لقبطيةالقبرصيةالسيريليةالسيريلية السلافية الكنسية القديمةالديفاناجاريال" +
- "ديسيريتالديموطيقيةالهيراطيقيةالهيروغليفيةالأثيوبيةالأبجدية الجورجية - أ" +
- "سومتافرلي و نسخريالجورجيةالجلاجوليتيكالقوطيةاليونانيةالتاغجراتيةالجرمخي" +
- "الهانغولالهانالهانونوالهان المبسطةالهان التقليديةالعبريةالهيراجاناالباه" +
- "وه همونجالكتكانا أو الهيراجاناالمجرية القديمةاندس - هارابانالإيطالية ال" +
- "قديمةالجاويةاليابانيةالكياه لىالكتكاناالخاروشتىالخميريةالكاناداالكوريةا" +
- "لانااللاواللاتينية - متغير فراكتراللاتينية - متغير غيلىاللاتينيةالليبتش" +
- "ا - رونجالليمبوالخطية أالخطية بالليسيةالليديةالمانداينيةالمايا الهيروغل" +
- "يفيةالميرويتيكالماليالامالمغوليةمونالميانمارالعربية الشمالية القديمةأنك" +
- "والأوجهامالأورخونالأورياالأوسمانياالبيرميكية القديمةالفاجسباالفينيقيةال" +
- "صوتيات الجماءرنجورنجوالرونيالساراتيالعربية الجنوبية القديمةالشوانيالسين" +
- "هالاالسوندانيةالسيلوتي ناغريالسريانيةالسريانية الأسترنجيليةالسريانية ال" +
- "غربيةالسريانية الشرقيةالتاجبانواالتاي ليالتاى لى الجديدالتاميليةالتيلجو" +
- "التينجوارالتيفيناغالتغالوغيةالثعنةالتايلانديةالتبتيةالأجاريتيكيةالفايال" +
- "كلام المرئيالفارسية القديمةالكتابة المسمارية الأكدية السومريةالييالمورو" +
- "ثرموزغير مكتوبعامنظام كتابة غير معروف"
-
-var arScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020,
- 0x002e, 0x002e, 0x002e, 0x003c, 0x004e, 0x005f, 0x0073, 0x0085,
- 0x0093, 0x00a3, 0x00b3, 0x00b3, 0x00de, 0x00ec, 0x00fc, 0x010c,
- 0x0118, 0x0126, 0x0136, 0x0148, 0x0189, 0x01a1, 0x01b3, 0x01b3,
- 0x01c9, 0x01df, 0x01f7, 0x01f7, 0x0209, 0x024f, 0x025f, 0x0277,
- 0x0285, 0x0285, 0x0297, 0x02ad, 0x02bb, 0x02cb, 0x02d5, 0x02e5,
- 0x02fe, 0x031b, 0x031b, 0x0329, 0x033d, 0x033d, 0x0356, 0x0380,
- 0x039d, 0x03b6, 0x03d7, 0x03e5, 0x03f7, 0x03f7, 0x0408, 0x0418,
- // Entry 40 - 7F
- 0x042a, 0x043a, 0x043a, 0x044a, 0x0458, 0x0458, 0x0458, 0x0462,
- 0x046c, 0x0498, 0x04c0, 0x04d2, 0x04ed, 0x04fb, 0x050a, 0x0519,
- 0x0519, 0x0519, 0x0527, 0x0535, 0x0535, 0x054b, 0x054b, 0x0570,
- 0x0570, 0x0570, 0x0584, 0x0598, 0x0598, 0x05a8, 0x05ae, 0x05ae,
- 0x05ae, 0x05ae, 0x05c0, 0x05ee, 0x05ee, 0x05ee, 0x05f6, 0x05f6,
- 0x0606, 0x0606, 0x0616, 0x0624, 0x0638, 0x0638, 0x0638, 0x065b,
- 0x066b, 0x066b, 0x066b, 0x066b, 0x067d, 0x069a, 0x069a, 0x069a,
- 0x06aa, 0x06b6, 0x06b6, 0x06c6, 0x06f4, 0x06f4, 0x06f4, 0x0702,
- // Entry 80 - BF
- 0x0702, 0x0702, 0x0702, 0x0714, 0x0714, 0x0728, 0x0743, 0x0755,
- 0x0780, 0x07a1, 0x07c2, 0x07d6, 0x07d6, 0x07e5, 0x0801, 0x0813,
- 0x0813, 0x0813, 0x0821, 0x0833, 0x0845, 0x0859, 0x0865, 0x087b,
- 0x0889, 0x0889, 0x08a1, 0x08ab, 0x08c4, 0x08c4, 0x08c4, 0x08e3,
- 0x0924, 0x092c, 0x093a, 0x093a, 0x0942, 0x0953, 0x0959, 0x097e,
-} // Size: 360 bytes
-
-var azScriptStr string = "" + // Size: 1043 bytes
- "ərəbarmierməniavestanbalibatakbenqalblissymbolsbopomofobrahmibraylbuqinb" +
- "uhidkakmbirləşmiş kanada yerli yazısıkariyançamçirokisirtkoptikkiprkiril" +
- "qədimi kilsa kirilidevanaqarideseretmisir demotikmisir hiyeratikmisir hi" +
- "yeroqlifefiopgürcü xutsurigürcüqlaqolitikqotikyunanqucaratqurmuxihanqılh" +
- "anhanunuSadələşdirilmiş HanƏnənəvi Hanibraniiraqanapahav monqkatakana və" +
- "ya hiraqanaqədimi macarhindistanqədimi italyalıcavayaponkayax likatakana" +
- "xaroştikxmerkannadakoreyaktilannalaofraktur latınıgael latınılatınlepçəl" +
- "imbulusianludianmandayenmaniçayenmaya hiyeroqlifimeroytikmalayalammonqol" +
- "munmeytey mayekmyanmarnkooğamol çikiorxonoriyaosmanyaqədimi permikfaqs-p" +
- "afliflpkitab paxlavifoenikpolard fonetikprtirecəngronqoronqoruniksamarit" +
- "ansaratisaurastraişarət yazısışavyansinhalsundansiloti nəqrisiryakestran" +
- "gela süryanicetaqbanvatay letəzə tay lutamiltavtteluqutengvartifinaqtaqa" +
- "loqthanataytibetuqaritvaydanışma səsləriqədimi farssumer-akadyan kuneyfo" +
- "rmyizmthsimvollaryazısızümumi yazınaməlum skript"
-
-var azScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0011, 0x0018,
- 0x001c, 0x001c, 0x001c, 0x0021, 0x0027, 0x0032, 0x003a, 0x0040,
- 0x0045, 0x004a, 0x004f, 0x0053, 0x0075, 0x007c, 0x0080, 0x0087,
- 0x008b, 0x0091, 0x0095, 0x009a, 0x00ae, 0x00b8, 0x00bf, 0x00bf,
- 0x00cc, 0x00db, 0x00eb, 0x00eb, 0x00f0, 0x00ff, 0x0106, 0x0110,
- 0x0115, 0x0115, 0x011a, 0x0121, 0x0128, 0x012f, 0x0132, 0x0138,
- 0x014f, 0x015d, 0x015d, 0x0163, 0x016a, 0x016a, 0x0174, 0x018b,
- 0x0198, 0x01a1, 0x01b2, 0x01b6, 0x01bb, 0x01bb, 0x01c3, 0x01cb,
- // Entry 40 - 7F
- 0x01d3, 0x01d8, 0x01d8, 0x01df, 0x01e5, 0x01e5, 0x01e8, 0x01ed,
- 0x01f0, 0x0200, 0x020d, 0x0213, 0x021a, 0x021f, 0x021f, 0x021f,
- 0x021f, 0x021f, 0x0225, 0x022b, 0x022b, 0x0233, 0x023d, 0x024d,
- 0x024d, 0x024d, 0x0255, 0x025e, 0x025e, 0x0264, 0x0267, 0x0267,
- 0x0273, 0x0273, 0x027a, 0x027a, 0x027a, 0x027a, 0x027d, 0x027d,
- 0x0282, 0x028a, 0x028f, 0x0294, 0x029b, 0x029b, 0x029b, 0x02a9,
- 0x02b0, 0x02b3, 0x02b6, 0x02c3, 0x02c9, 0x02d7, 0x02db, 0x02e2,
- 0x02ec, 0x02f1, 0x02fa, 0x0300, 0x0300, 0x0309, 0x031a, 0x0321,
- // Entry 80 - BF
- 0x0321, 0x0321, 0x0321, 0x0327, 0x0327, 0x032d, 0x033a, 0x0340,
- 0x0355, 0x0355, 0x0355, 0x035d, 0x035d, 0x0363, 0x0370, 0x0375,
- 0x0375, 0x0379, 0x037f, 0x0386, 0x038d, 0x0394, 0x0399, 0x039c,
- 0x03a1, 0x03a1, 0x03a7, 0x03aa, 0x03bd, 0x03bd, 0x03bd, 0x03c9,
- 0x03e0, 0x03e2, 0x03e2, 0x03e6, 0x03ef, 0x03f8, 0x0404, 0x0413,
-} // Size: 360 bytes
-
-var bgScriptStr string = "" + // Size: 2324 bytes
- "арабскаАрамейскаарменскаАвестанскаБалийскиБатакскабенгалскаБлис символиб" +
- "опомофоБрахмиБрайловаБугинскаБухидЧакмаУнифицирани символи на канадски " +
- "аборигениКарийскаХамитскаЧерокиКиртКоптскаКипърскакирилицадеванагариДез" +
- "еретЕгипетско демотично писмоЕгипетско йератично писмоЕгипетски йерогли" +
- "фиетиопскаГрузинска хуцуригрузинскаГлаголическаГотическагръцкагуджарати" +
- "гурмукхихангълкитайскаХанунуопростен китайскитрадиционен китайскиивритх" +
- "ираганаПахау хмонгКатакана или ХираганаСтароунгарскаХарапскаДревно итал" +
- "ийскаЯванскаяпонскаКая ЛикатаканаКхароштхикхмерскаканнадакорейскаКайтхи" +
- "ЛанналаоскаЛатинска фрактураГалска латинскалатиницаЛепчаЛимбуЛинейна АЛ" +
- "инейна БЛицийскаЛидийскаМандаринскаМанихейскаЙероглифи на МаитеМероитск" +
- "амалаяламмонголскаМунМанипурибирманскаН’КоОгамическаОл ЧикиОрхоно-енисе" +
- "йскаорияОсманскаДревно пермскаФагс-паПахлавскаФиникийскаПисменост Полар" +
- "дРонго-ронгоРуническаСамаританскаСаратиСаураштрасинхалскаСунданскаСилот" +
- "и НагриСирийскаСирийска естрангелоЗападна сирийскаИзточна сирийскаТагба" +
- "нваТай ЛеНова Тай ЛетамилскателугуТагалогтаанатайскатибетскаУгаритскаВа" +
- "йскаВидима речСтароперсийскаШумеро-акадски клинописЙиМатематически симв" +
- "олисимволибез писменостобщанепозната писменост"
-
-var bgScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0020, 0x0030, 0x0044,
- 0x0054, 0x0054, 0x0054, 0x0064, 0x0076, 0x008d, 0x009d, 0x00a9,
- 0x00b9, 0x00c9, 0x00d3, 0x00dd, 0x012b, 0x013b, 0x014b, 0x0157,
- 0x015f, 0x016d, 0x017d, 0x018d, 0x018d, 0x01a1, 0x01af, 0x01af,
- 0x01df, 0x020f, 0x0234, 0x0234, 0x0244, 0x0263, 0x0275, 0x028d,
- 0x029f, 0x029f, 0x02ab, 0x02bd, 0x02cd, 0x02d9, 0x02e9, 0x02f5,
- 0x0316, 0x033d, 0x033d, 0x0347, 0x0357, 0x0357, 0x036c, 0x0394,
- 0x03ae, 0x03be, 0x03dd, 0x03eb, 0x03f9, 0x03f9, 0x0404, 0x0414,
- // Entry 40 - 7F
- 0x0426, 0x0436, 0x0436, 0x0444, 0x0454, 0x0454, 0x0460, 0x046a,
- 0x0476, 0x0497, 0x04b4, 0x04c4, 0x04ce, 0x04d8, 0x04e9, 0x04fa,
- 0x04fa, 0x04fa, 0x050a, 0x051a, 0x051a, 0x0530, 0x0544, 0x0566,
- 0x0566, 0x0566, 0x0578, 0x0588, 0x0588, 0x059a, 0x05a0, 0x05a0,
- 0x05b0, 0x05b0, 0x05c2, 0x05c2, 0x05c2, 0x05c2, 0x05cb, 0x05cb,
- 0x05df, 0x05ec, 0x060b, 0x0613, 0x0623, 0x0623, 0x0623, 0x063e,
- 0x064b, 0x064b, 0x064b, 0x065d, 0x0671, 0x0690, 0x0690, 0x0690,
- 0x06a5, 0x06b7, 0x06cf, 0x06db, 0x06db, 0x06ed, 0x06ed, 0x06ed,
- // Entry 80 - BF
- 0x06ed, 0x06ed, 0x06ed, 0x06ff, 0x06ff, 0x0711, 0x0728, 0x0738,
- 0x075d, 0x077c, 0x079b, 0x07ab, 0x07ab, 0x07b6, 0x07ca, 0x07da,
- 0x07da, 0x07da, 0x07e6, 0x07e6, 0x07e6, 0x07f4, 0x07fe, 0x080a,
- 0x081a, 0x081a, 0x082c, 0x0838, 0x084b, 0x084b, 0x084b, 0x0867,
- 0x0893, 0x0897, 0x0897, 0x08c0, 0x08ce, 0x08e7, 0x08ef, 0x0914,
-} // Size: 360 bytes
-
-var bnScriptStr string = "" + // Size: 3576 bytes
- "আরবিআরমিআর্মেনীয়আভেসতানবালীয়বাটাকবাংলাব্লিসপ্রতীকবোপোমোফোব্রাহ্মীব্রেই" +
- "লবুগিবুহিডচাকমাসংযুক্ত কানাডিয়ান অ্যাব্রোজিনিয়ান সিলেবিক্সক্যারিয়ান" +
- "চ্যামচেরোকিকির্টকোপ্টিকসাইপ্রোয়েটসিরিলিকপ্রাচীন চার্চ স্লাভোনিক সিরিল" +
- "িকদেবনাগরিদেসেরাতমিশরীয় ডেমোটিকমিশরীয় হায়রেটিকমিশরীয় হায়ারোগ্লিপই" +
- "থিওপিয়জর্জিয় খুৎসুরিজর্জিয়ানগ্লাগোলিটিকগোথিকগ্রিকগুজরাটিগুরুমুখিহাঙ" +
- "্গুলহ্যানহ্যানুনুসরলিকৃত হ্যানঐতিহ্যবাহী হ্যানহিব্রুহিরাগানাফাহাও মঙকা" +
- "টাকানা অথবা হিরাগানাপুরোনো হাঙ্গেরীয়সিন্ধুপ্রাচীন ইতালিজাভানিজজাপানীক" +
- "ায়াহ লিকাটাকানাখরোষ্ঠীখমেরকানাড়াকোরিয়ানকাইথিলান্নালাওফ্রাক্টুর ল্যা" +
- "টিনগ্যালিক ল্যাটিনল্যাটিনলেপ্চালিম্বুলিনিয়ার এলিনিয়ার বিলাইসিয়ানলাই" +
- "ডিয়ানম্যান্ডায়ীনম্যানিচাইনমায়ান হায়ারোগ্লিপমেরোইটিকমালায়ালামমোঙ্গ" +
- "োলীয়মুনমেইটেই মায়েকমায়ানমারএনকোওঘামওল চিকিঅর্খোনওড়িয়াওসমানিয়প্রা" +
- "চীন পার্মিকফাগ্স-পাখদিত পাহলভিসল্টার পাহলভিপুস্তক পাহলভিফিনিশিয়পোলার্" +
- "ড ধ্বনিকপার্থিয়নরেজ্যাঙ্গরোঙ্গোরোঙ্গোরুনিকসমেরিটনসারাতিসৌরাষ্ট্রচিহ্ন" +
- " লিখনসাভিয়ানসিংহলিসান্দানিজসিলেটি নাগরিসিরিয়াকএস্ট্রেঙ্গেলো সিরিয়াকপশ" +
- "্চিমাঞ্চলীয় সিরিয়াকপূর্বাঞ্চলীয় সিরিয়াকটাগোওয়ানাতাইলেনতুন তাই লুত" +
- "ামিলতাই ভিয়েৎতেলেগুতেঙ্গোয়ারতিফিনাগটাগালগথানাথাইতিব্বতিউগারিটিকভাইদৃ" +
- "শ্যমান ভাষাপ্রাচীন ফার্সিসুমের-আক্কাদীয় কীলকরূপউইকাইগানিতিক চিহ্নপ্রত" +
- "ীকসমুহঅলিখিতসাধারনঅজানা লিপি"
-
-var bnScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0018, 0x0033, 0x0048,
- 0x005a, 0x005a, 0x005a, 0x0069, 0x0078, 0x0099, 0x00b1, 0x00c9,
- 0x00db, 0x00e7, 0x00f6, 0x0105, 0x0186, 0x01a4, 0x01b3, 0x01c5,
- 0x01d4, 0x01e9, 0x020a, 0x021f, 0x0276, 0x028e, 0x02a3, 0x02a3,
- 0x02ce, 0x02ff, 0x0339, 0x0339, 0x0351, 0x037c, 0x0397, 0x03b8,
- 0x03c7, 0x03c7, 0x03d6, 0x03eb, 0x0403, 0x0418, 0x0427, 0x043f,
- 0x0464, 0x0492, 0x0492, 0x04a4, 0x04bc, 0x04bc, 0x04d2, 0x0510,
- 0x0541, 0x0553, 0x0578, 0x058d, 0x059f, 0x059f, 0x05b8, 0x05d0,
- // Entry 40 - 7F
- 0x05e5, 0x05f1, 0x05f1, 0x0606, 0x061e, 0x061e, 0x062d, 0x063f,
- 0x0648, 0x0679, 0x06a4, 0x06b9, 0x06cb, 0x06dd, 0x06f9, 0x0718,
- 0x0718, 0x0718, 0x0733, 0x074e, 0x074e, 0x0772, 0x0790, 0x07c7,
- 0x07c7, 0x07c7, 0x07df, 0x07fd, 0x07fd, 0x081b, 0x0824, 0x0824,
- 0x0849, 0x0849, 0x0864, 0x0864, 0x0864, 0x0864, 0x0870, 0x0870,
- 0x087c, 0x088f, 0x08a1, 0x08b6, 0x08ce, 0x08ce, 0x08ce, 0x08f9,
- 0x090f, 0x092e, 0x0953, 0x0978, 0x0990, 0x09b8, 0x09d3, 0x09ee,
- 0x0a12, 0x0a21, 0x0a36, 0x0a48, 0x0a48, 0x0a63, 0x0a7f, 0x0a97,
- // Entry 80 - BF
- 0x0a97, 0x0a97, 0x0a97, 0x0aa9, 0x0aa9, 0x0ac4, 0x0ae6, 0x0afe,
- 0x0b3e, 0x0b81, 0x0bc1, 0x0bdf, 0x0bdf, 0x0bee, 0x0c0b, 0x0c1a,
- 0x0c1a, 0x0c36, 0x0c48, 0x0c66, 0x0c7b, 0x0c8d, 0x0c99, 0x0ca2,
- 0x0cb7, 0x0cb7, 0x0ccf, 0x0cd8, 0x0cfd, 0x0cfd, 0x0cfd, 0x0d25,
- 0x0d66, 0x0d6c, 0x0d75, 0x0d9a, 0x0db8, 0x0dca, 0x0ddc, 0x0df8,
-} // Size: 360 bytes
-
-var caScriptStr string = "" + // Size: 1535 bytes
- "afakaàrabarameu imperialarmeniavèsticbalinèsbamumbassa vahbatakbengalísí" +
- "mbols Blissbopomofobrahmibraillebuginèsbuhidchakmasíl·labes dels aboríge" +
- "ns canadencs unificatscariàchamcherokeecirthcoptexipriotaciríl·licciríl·" +
- "lic de l’antic eslau eclesiàsticdevanagarideserettaquigrafia Duployédemò" +
- "tic egipcihieràtic egipcijeroglífic egipcietiòpicgeorgià hucurigeorgiàgl" +
- "agolíticgòticgranthagrecgujaratigurmukhihangulhanhanunoohan simplificath" +
- "an tradicionalhebreuhiraganajeroglífic anatolipahawh hmongkatakana o hir" +
- "aganahongarès anticescriptura de la vall de l’Induscursiva antigajavanès" +
- "japonèsjürchenkayah likatakanakharosthikhmerkhojakannadacoreàkpellekaith" +
- "ilannalaollatí frakturllatí gaèlicllatílepchalimbulineal Alineal Blisulo" +
- "malicilidimandaicmaniqueujeroglífics maiesmendecursiva meroíticameroític" +
- "malaiàlammongolmoonmromanipuríbirmàantic nord-aràbicnabateugeban’Konü sh" +
- "uoghamsantaliorkhonoriyaosmanyapalmirèantic pèrmicphagspapahlavi inscrip" +
- "cionalpsalter pahlavipahlavifenicipollard miaoparthià inscripcionalrejan" +
- "grongo-rongorúnicsamaritàsaratisud-aràbic anticsaurashtraescriptura de s" +
- "ignesshaviàshradadevangarisingalèssora sompengsundanèssyloti nagrisiríac" +
- "siríac estrangelosiríac occidentalsiríac orientaltagbanwatakritai lenou " +
- "tai luetàmiltanguttai viettelugutengwartifinaghtagàlogthaanatailandèstib" +
- "etàtirhutugaríticvaillenguatge visiblevarang kshitiwoleaipersa anticcune" +
- "ïforme sumeri-accadiyiheretatnotació matemàticasímbolssense escripturac" +
- "omúescriptura desconeguda"
-
-var caScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x0019, 0x001f, 0x0027,
- 0x002f, 0x0034, 0x003d, 0x0042, 0x004a, 0x0058, 0x0060, 0x0066,
- 0x006d, 0x0075, 0x007a, 0x0080, 0x00af, 0x00b5, 0x00b9, 0x00c1,
- 0x00c6, 0x00cb, 0x00d3, 0x00de, 0x0109, 0x0113, 0x011a, 0x012e,
- 0x013d, 0x014d, 0x015f, 0x015f, 0x0167, 0x0176, 0x017e, 0x0189,
- 0x018f, 0x0196, 0x019a, 0x01a2, 0x01aa, 0x01b0, 0x01b3, 0x01ba,
- 0x01c9, 0x01d8, 0x01d8, 0x01de, 0x01e6, 0x01f9, 0x0205, 0x0218,
- 0x0227, 0x0249, 0x0257, 0x025f, 0x0267, 0x026f, 0x0277, 0x027f,
- // Entry 40 - 7F
- 0x0288, 0x028d, 0x0292, 0x0299, 0x029f, 0x02a5, 0x02ab, 0x02b0,
- 0x02b3, 0x02c1, 0x02cf, 0x02d5, 0x02db, 0x02e0, 0x02e8, 0x02f0,
- 0x02f4, 0x02f8, 0x02fc, 0x0300, 0x0300, 0x0307, 0x030f, 0x0321,
- 0x0326, 0x0338, 0x0341, 0x034b, 0x034b, 0x0351, 0x0355, 0x0358,
- 0x0361, 0x0361, 0x0367, 0x0379, 0x0380, 0x0384, 0x038a, 0x0391,
- 0x0396, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b7, 0x03b7, 0x03c4,
- 0x03cb, 0x03e0, 0x03ef, 0x03f6, 0x03fc, 0x0408, 0x041e, 0x0424,
- 0x042f, 0x0435, 0x043e, 0x0444, 0x0455, 0x045f, 0x0473, 0x047a,
- // Entry 80 - BF
- 0x0480, 0x0480, 0x0489, 0x0492, 0x049e, 0x04a7, 0x04b3, 0x04ba,
- 0x04cc, 0x04de, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x050c, 0x0512,
- 0x0518, 0x0520, 0x0526, 0x052d, 0x0535, 0x053d, 0x0543, 0x054d,
- 0x0554, 0x055a, 0x0563, 0x0566, 0x0578, 0x0585, 0x058b, 0x0596,
- 0x05af, 0x05b1, 0x05b8, 0x05cc, 0x05d4, 0x05e4, 0x05e9, 0x05ff,
-} // Size: 360 bytes
-
-var csScriptStr string = "" + // Size: 1891 bytes
- "afakakavkazskoalbánskéarabskéaramejské (imperiální)arménskéavestánskébal" +
- "ijskébamumskébassa vahbatackébengálskéBlissovo písmobopomofobráhmíBraill" +
- "ovo písmobuginskébuhidskéčakmaslabičné písmo kanadských domorodcůkarijsk" +
- "éčamčerokíkirtkoptskékyperskécyrilicecyrilce - staroslověnskádévanágárí" +
- "deseretDuployého těsnopisegyptské démotickéegyptské hieratickéegyptské h" +
- "ieroglyfyelbasanskéetiopskégruzínské chutsurigruzínskéhlaholicegotickégr" +
- "anthařeckégudžarátígurmukhihangulhanhanunóohan (zjednodušené)han (tradič" +
- "ní)hebrejskéhiraganaanatolské hieroglyfyhmongskéjaponské slabičnéstaroma" +
- "ďarskéharappskéetruskéjavánskéjaponskédžürčenskékayah likatakanakháróšt" +
- "híkhmerskéchodžikikannadskékorejskékpellekaithilannalaoskélatinka - lome" +
- "nálatinka - galskálatinkalepčskélimbulineární Alineární BFraserovolomalý" +
- "kijskélýdskémahádžanímandejskémanichejskémayské hieroglyfymendskémeroiti" +
- "cké psacímeroitickémalajlámskémodímongolskéMoonovomromejtej majek (manip" +
- "urské)myanmarskéstaroseveroarabskénabatejskénaxi geban’konü-šuogamskésan" +
- "tálské (ol chiki)orchonskéurijskéosmansképalmýrsképau cin haustaropermsk" +
- "éphags-papahlavské klínovépahlavské žalmovépahlavské knižnífénickéPolla" +
- "rdova fonetická abecedaparthské klínovéredžanskérongorongorunovésamařské" +
- "saratistarojihoarabskésaurášterskéSignWritingShawova abecedašáradásiddha" +
- "mchudábádísinhálskésora sompengsundskésylhetskésyrskésyrské - estrangelo" +
- "syrské - západnísyrské - východnítagbanwatakrítai letai lü novétamilskét" +
- "anguttai viettelugskétengwarberberskétagalskéthaanathajskétibetskétirhut" +
- "augaritské klínovévaividitelná řečvarang kšitikarolínské (woleai)starope" +
- "rské klínové písmosumero-akkadské klínové písmoyimatematický zápissymbol" +
- "ybez zápisuobecnéneznámé písmo"
-
-var csScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0018, 0x0018, 0x0020, 0x0039, 0x0043, 0x004f,
- 0x0058, 0x0061, 0x006a, 0x0072, 0x007d, 0x008c, 0x0094, 0x009c,
- 0x00ac, 0x00b5, 0x00be, 0x00c4, 0x00ec, 0x00f5, 0x00f9, 0x0101,
- 0x0105, 0x010d, 0x0116, 0x011e, 0x0138, 0x0146, 0x014d, 0x0161,
- 0x0176, 0x018b, 0x019f, 0x01aa, 0x01b3, 0x01c7, 0x01d2, 0x01db,
- 0x01e3, 0x01ea, 0x01f1, 0x01fd, 0x0205, 0x020b, 0x020e, 0x0216,
- 0x022a, 0x023a, 0x023a, 0x0244, 0x024c, 0x0261, 0x026a, 0x027e,
- 0x028d, 0x0297, 0x029f, 0x02a9, 0x02b2, 0x02c0, 0x02c8, 0x02d0,
- // Entry 40 - 7F
- 0x02dd, 0x02e6, 0x02ef, 0x02f9, 0x0302, 0x0308, 0x030e, 0x0313,
- 0x031a, 0x032b, 0x033c, 0x0343, 0x034c, 0x0351, 0x035d, 0x0369,
- 0x0372, 0x0376, 0x0380, 0x0388, 0x0394, 0x039e, 0x03aa, 0x03bc,
- 0x03c4, 0x03d6, 0x03e1, 0x03ee, 0x03f3, 0x03fd, 0x0404, 0x0407,
- 0x0421, 0x0421, 0x042c, 0x043f, 0x044a, 0x0453, 0x0459, 0x0460,
- 0x0468, 0x047e, 0x0488, 0x0490, 0x0499, 0x04a4, 0x04af, 0x04bc,
- 0x04c4, 0x04d8, 0x04ec, 0x04ff, 0x0508, 0x0525, 0x0538, 0x0543,
- 0x054d, 0x0554, 0x055e, 0x0564, 0x0575, 0x0584, 0x058f, 0x059e,
- // Entry 80 - BF
- 0x05a7, 0x05ae, 0x05ba, 0x05c5, 0x05d1, 0x05d9, 0x05e3, 0x05ea,
- 0x05fe, 0x0611, 0x0625, 0x062d, 0x0633, 0x0639, 0x0646, 0x064f,
- 0x0655, 0x065d, 0x0666, 0x066d, 0x0677, 0x0680, 0x0686, 0x068e,
- 0x0697, 0x069e, 0x06b2, 0x06b5, 0x06c5, 0x06d2, 0x06e7, 0x0704,
- 0x0725, 0x0727, 0x0727, 0x073a, 0x0741, 0x074c, 0x0753, 0x0763,
-} // Size: 360 bytes
-
-var daScriptStr string = "" + // Size: 1443 bytes
- "afakaarabiskarmiarmenskavestanskbalinesiskbamumbassabatakbengaliblissymb" +
- "olerbopomofobramiskbrailleskriftbuginesiskbuhidcakmoprindelige canadiske" +
- " symbolerkarianskchamcherokeecirtkoptiskcypriotiskkyrilliskkyrillisk - o" +
- "ldkirkeslavisk variantdevanagarideseretDuploya-stenografiegyptisk demoti" +
- "skegyptisk hieratiskegyptiske hieroglyfferetiopiskgeorgisk kutsurigeorgi" +
- "skglagolitiskgotiskgranthagræskgujaratigurmukhihangulhanhanunooforenklet" +
- " hantraditionelt hanhebraiskhiraganaanatolske hieroglyfferpahawh hmongka" +
- "takana eller hiraganaoldungarskindusOlditaliskjavanesiskjapanskjurchenka" +
- "ya likatakanakharoshtikhmerkhojkikannadakoreanskkpellekthilannalaolatins" +
- "k - frakturvariantlatinsk - gælisk variantlatinsklepchalimbulineær Aline" +
- "ær Blisulomalykisklydiskmandaiskmanikæiskmayahieroglyffermendemetroitis" +
- "k sammenhængendemeroitiskmalayalammongolskmoonmroomeitei-mayekburmesiskg" +
- "ammelt nordarabisknabateisknakhi geban’konüshuoghamol-chikiorkhonoriyaos" +
- "manniskpalmyrenskoldpermiskphags-paphliphlppahlavifønikiskpollardtegnprt" +
- "irejangrongo-rongorunersamaritansksaratioldsørarabisksaurashtrategnskrif" +
- "tshavisksharadakhudawadisingalesisksorasundanesisksyloti nagrisyrisksyri" +
- "sk - estrangelovariantvestsyriskøstsyriakisktagbanwatakritai letai lueta" +
- "milsktanguttavttelugutengwartifinaghtagalogthaanathailandsktibetansktirh" +
- "utaugaritiskvaisynlig talevarang kshitiwoleaioldpersisksumero-akkadisk c" +
- "uneiformyiarvetzmthzsymuden skriftsprogfællesukendt skriftsprog"
-
-var daScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0005, 0x0005, 0x000c, 0x0010, 0x0017, 0x0020,
- 0x002a, 0x002f, 0x0034, 0x0039, 0x0040, 0x004c, 0x0054, 0x005b,
- 0x0068, 0x0072, 0x0077, 0x007b, 0x0099, 0x00a1, 0x00a5, 0x00ad,
- 0x00b1, 0x00b8, 0x00c2, 0x00cb, 0x00ee, 0x00f8, 0x00ff, 0x0111,
- 0x0122, 0x0134, 0x014a, 0x014a, 0x0152, 0x0162, 0x016a, 0x0175,
- 0x017b, 0x0182, 0x0188, 0x0190, 0x0198, 0x019e, 0x01a1, 0x01a8,
- 0x01b5, 0x01c5, 0x01c5, 0x01cd, 0x01d5, 0x01eb, 0x01f7, 0x020e,
- 0x0218, 0x021d, 0x0227, 0x0231, 0x0238, 0x023f, 0x0246, 0x024e,
- // Entry 40 - 7F
- 0x0257, 0x025c, 0x0262, 0x0269, 0x0271, 0x0277, 0x027b, 0x0280,
- 0x0283, 0x029b, 0x02b4, 0x02bb, 0x02c1, 0x02c6, 0x02cf, 0x02d8,
- 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02ec, 0x02f4, 0x02fe, 0x030e,
- 0x0313, 0x032d, 0x0336, 0x033f, 0x033f, 0x0347, 0x034b, 0x034f,
- 0x035b, 0x035b, 0x0364, 0x0377, 0x0380, 0x038a, 0x0390, 0x0396,
- 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b7, 0x03c1, 0x03c1, 0x03cb,
- 0x03d3, 0x03d7, 0x03db, 0x03e2, 0x03eb, 0x03f6, 0x03fa, 0x0400,
- 0x040b, 0x0410, 0x041b, 0x0421, 0x042f, 0x0439, 0x0443, 0x044a,
- // Entry 80 - BF
- 0x0451, 0x0451, 0x045a, 0x0465, 0x0469, 0x0474, 0x0480, 0x0486,
- 0x04a0, 0x04aa, 0x04b7, 0x04bf, 0x04c4, 0x04ca, 0x04d1, 0x04d8,
- 0x04de, 0x04e2, 0x04e8, 0x04ef, 0x04f7, 0x04fe, 0x0504, 0x050e,
- 0x0517, 0x051e, 0x0527, 0x052a, 0x0535, 0x0542, 0x0548, 0x0552,
- 0x056b, 0x056d, 0x0572, 0x0576, 0x057a, 0x058a, 0x0591, 0x05a3,
-} // Size: 360 bytes
-
-var deScriptStr string = "" + // Size: 1682 bytes
- "AfakaKaukasisch-AlbanischArabischArmiArmenischAvestischBalinesischBamunB" +
- "assaBattakischBengalischBliss-SymboleBopomofoBrahmiBlindenschriftBugines" +
- "ischBuhidChakmaUCASKarischChamCherokeeCirthKoptischZypriotischKyrillisch" +
- "AltkirchenslawischDevanagariDeseretDuployanischÄgyptisch - DemotischÄgyp" +
- "tisch - HieratischÄgyptische HieroglyphenElbasanischÄthiopischKhutsuriGe" +
- "orgischGlagolitischGotischGranthaGriechischGujaratiGurmukhiHangulChinesi" +
- "schHanunooVereinfachtes ChinesischTraditionelles ChinesischHebräischHira" +
- "ganaHieroglyphen-LuwischPahawh HmongKatakana oder HiraganaAltungarischIn" +
- "dus-SchriftAltitalischJavanesischJapanischJurchenKayah LiKatakanaKharosh" +
- "thiKhmerKhojkiKannadaKoreanischKpelleKaithiLannaLaotischLateinisch - Fra" +
- "ktur-VarianteLateinisch - Gälische VarianteLateinischLepchaLimbuLinear A" +
- "Linear BFraserLomaLykischLydischMahajaniMandäischManichäischMaya-Hierogl" +
- "yphenMendeMeroitisch kursivMeroitischMalayalamModiMongolischMoonMroMeite" +
- "i MayekBirmanischAltnordarabischNabatäischGebaN’KoFrauenschriftOghamOl C" +
- "hikiOrchon-RunenOriyaOsmanischPalmyrenischPau Cin HauAltpermischPhags-pa" +
- "Buch-PahlaviPsalter-PahlaviPahlaviPhönizischPollard PhonetischParthischR" +
- "ejangRongorongoRunenschriftSamaritanischSaratiAltsüdarabischSaurashtraGe" +
- "bärdenspracheShaw-AlphabetSharadaSiddhamKhudawadiSinghalesischSora Sompe" +
- "ngSundanesischSyloti NagriSyrischSyrisch - Estrangelo-VarianteWestsyrisc" +
- "hOstsyrischTagbanwaTakriTai LeTai LueTamilischXixiaTai-VietTeluguTengwar" +
- "TifinaghTagalogThaanaThaiTibetischTirhutaUgaritischVaiSichtbare SpracheV" +
- "arang KshitiWoleaianischAltpersischSumerisch-akkadische KeilschriftYiGee" +
- "rbter SchriftwertMathematische NotationSymboleSchriftlosUnbestimmtUnbeka" +
- "nnte Schrift"
-
-var deScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0019, 0x0019, 0x0021, 0x0025, 0x002e, 0x0037,
- 0x0042, 0x0047, 0x004c, 0x0056, 0x0060, 0x006d, 0x0075, 0x007b,
- 0x0089, 0x0094, 0x0099, 0x009f, 0x00a3, 0x00aa, 0x00ae, 0x00b6,
- 0x00bb, 0x00c3, 0x00ce, 0x00d8, 0x00ea, 0x00f4, 0x00fb, 0x0107,
- 0x011d, 0x0134, 0x014c, 0x0157, 0x0162, 0x016a, 0x0173, 0x017f,
- 0x0186, 0x018d, 0x0197, 0x019f, 0x01a7, 0x01ad, 0x01b7, 0x01be,
- 0x01d6, 0x01ef, 0x01ef, 0x01f9, 0x0201, 0x0215, 0x0221, 0x0237,
- 0x0243, 0x0250, 0x025b, 0x0266, 0x026f, 0x0276, 0x027e, 0x0286,
- // Entry 40 - 7F
- 0x0290, 0x0295, 0x029b, 0x02a2, 0x02ac, 0x02b2, 0x02b8, 0x02bd,
- 0x02c5, 0x02e2, 0x0301, 0x030b, 0x0311, 0x0316, 0x031e, 0x0326,
- 0x032c, 0x0330, 0x0337, 0x033e, 0x0346, 0x0350, 0x035c, 0x036d,
- 0x0372, 0x0383, 0x038d, 0x0396, 0x039a, 0x03a4, 0x03a8, 0x03ab,
- 0x03b7, 0x03b7, 0x03c1, 0x03d0, 0x03db, 0x03df, 0x03e5, 0x03f2,
- 0x03f7, 0x03ff, 0x040b, 0x0410, 0x0419, 0x0425, 0x0430, 0x043b,
- 0x0443, 0x044f, 0x045e, 0x0465, 0x0470, 0x0482, 0x048b, 0x0491,
- 0x049b, 0x04a7, 0x04b4, 0x04ba, 0x04c9, 0x04d3, 0x04e3, 0x04f0,
- // Entry 80 - BF
- 0x04f7, 0x04fe, 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x053f,
- 0x055c, 0x0567, 0x0571, 0x0579, 0x057e, 0x0584, 0x058b, 0x0594,
- 0x0599, 0x05a1, 0x05a7, 0x05ae, 0x05b6, 0x05bd, 0x05c3, 0x05c7,
- 0x05d0, 0x05d7, 0x05e1, 0x05e4, 0x05f5, 0x0602, 0x060e, 0x0619,
- 0x0639, 0x063b, 0x064f, 0x0665, 0x066c, 0x0676, 0x0680, 0x0692,
-} // Size: 360 bytes
-
-var elScriptStr string = "" + // Size: 2635 bytes
- "ΑραβικόΑυτοκρατορικό ΑραμαϊκόΑρμενικόΑβεστάνΜπαλινίζΜπατάκΜπενγκάλιΣύμβο" +
- "λα BlissΜποπομόφοΜπραχμίΜπράιγΜπούγκιςΜπουχίντΤσάκμαΕνοποιημένοι Καναδε" +
- "ζικοί Συλλαβισμοί ΙθαγενώνΚαριάνΤσαμΤσερόκιΣερθΚοπτικόΚυπριακόΚυριλλικό" +
- "Παλαιό Εκκλησιαστικό Σλαβικό ΚυριλλικόΝτεβαναγκάριΝτεσερέΛαϊκό Αιγυπτια" +
- "κόΙερατικό ΑιγυπτιακόΑιγυπτιακά ΙερογλυφικάΑιθιοπικόΓεωργιανό Κχουτσούρ" +
- "ιΓεωργιανόΓκλαγκολιτικόΓοτθικόΕλληνικόΓκουγιαράτιΓκουρμουκχίΧανγκούλΧαν" +
- "ΧανούνουΑπλοποιημένο ΧανΠαραδοσιακό ΧανΕβραϊκόΧιραγκάναΠαχάχ ΧμονγκΚατα" +
- "κάνα ή ΧιραγκάναΠαλαιό ΟυγγρικόΊνδουςΠαλαιό ΙταλικόΙαβανεζικόΙαπωνικόΚα" +
- "γιάχ ΛιΚατακάναΚαρόσθιΧμερΚανάνταΚορεατικόΚαϊθίΛάνναΛάοςΦράκτουρ Λατινι" +
- "κόΓαελικό ΛατινικόΛατινικόΛέπτσαΛιμπούΓραμμικό ΑΓραμμικό ΒΛυκιανικόΛυδι" +
- "ανικόΜανδαϊκόΜανιχαϊκόΙερογλυφικά ΜάγιαΜεροϊτικόΜαλαγιάλαμΜογγολικόΜουν" +
- "Μεϊτέι ΜάγεκΜιανμάρΝ’ΚοΌγκχαμΟλ ΤσίκιΌρκχονΟρίγιαΟσμάνγιαΠαλαιό Περμικό" +
- "Παγκς-παΕπιγραφικό ΠαχλάβιΨάλτερ ΠαχλάβιΜπουκ ΠαχλαβίΦοινικικόΦωνητικό " +
- "ΠόλαρντΕπιγραφικό ΠαρθιάνΡετζάνγκΡονγκορόνγκοΡουνίκΣαμαριτικόΣαράθιΣαου" +
- "ράστραΝοηματική γραφήΣαβιανόΣινχάλαΣουνδανικόΣυλότι ΝάγκριΣυριακόΕστραν" +
- "τζέλο ΣυριακόΔυτικό ΣυριακόΑνατολικό ΣυριακόΤαγκμάνγουαΤάι ΛεΝέο Τάι Λο" +
- "ύεΤαμίλΤάι ΒιέτΤελούγκουΤεγνγουάρΤιφινάγκΤαγκαλόγκΘαανάΤαϊλανδικόΘιβετι" +
- "ανόΟυγκαριτικόΒάιΟρατή ομιλίαΠαλαιό ΠερσικόΣούμερο-Ακάντιαν ΚουνεϊφόρμΓ" +
- "ιΚληρονομημένοΜαθηματική παράστασηΣύμβολαΆγραφοΚοινόΆγνωστη γραφή"
-
-var elScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0039, 0x0049, 0x0057,
- 0x0067, 0x0067, 0x0067, 0x0073, 0x0085, 0x0099, 0x00ab, 0x00b9,
- 0x00c5, 0x00d5, 0x00e5, 0x00f1, 0x0148, 0x0154, 0x015c, 0x016a,
- 0x0172, 0x0180, 0x0190, 0x01a2, 0x01eb, 0x0203, 0x0211, 0x0211,
- 0x0230, 0x0255, 0x0280, 0x0280, 0x0292, 0x02b9, 0x02cb, 0x02e5,
- 0x02f3, 0x02f3, 0x0303, 0x0319, 0x032f, 0x033f, 0x0345, 0x0355,
- 0x0374, 0x0391, 0x0391, 0x039f, 0x03b1, 0x03b1, 0x03c8, 0x03ee,
- 0x040b, 0x0417, 0x0432, 0x0446, 0x0456, 0x0456, 0x0467, 0x0477,
- // Entry 40 - 7F
- 0x0485, 0x048d, 0x048d, 0x049b, 0x04ad, 0x04ad, 0x04b7, 0x04c1,
- 0x04c9, 0x04ea, 0x0509, 0x0519, 0x0525, 0x0531, 0x0544, 0x0557,
- 0x0557, 0x0557, 0x0569, 0x057b, 0x057b, 0x058b, 0x059d, 0x05be,
- 0x05be, 0x05be, 0x05d0, 0x05e4, 0x05e4, 0x05f6, 0x05fe, 0x05fe,
- 0x0615, 0x0615, 0x0623, 0x0623, 0x0623, 0x0623, 0x062c, 0x062c,
- 0x0638, 0x0647, 0x0653, 0x065f, 0x066f, 0x066f, 0x066f, 0x068a,
- 0x0699, 0x06bc, 0x06d7, 0x06f0, 0x0702, 0x0721, 0x0744, 0x0754,
- 0x076c, 0x0778, 0x078c, 0x0798, 0x0798, 0x07ac, 0x07c9, 0x07d7,
- // Entry 80 - BF
- 0x07d7, 0x07d7, 0x07d7, 0x07e5, 0x07e5, 0x07f9, 0x0812, 0x0820,
- 0x0845, 0x0860, 0x0881, 0x0897, 0x0897, 0x08a2, 0x08b8, 0x08c2,
- 0x08c2, 0x08d1, 0x08e3, 0x08f5, 0x0905, 0x0917, 0x0921, 0x0935,
- 0x0947, 0x0947, 0x095d, 0x0963, 0x097a, 0x097a, 0x097a, 0x0995,
- 0x09c9, 0x09cd, 0x09e7, 0x0a0e, 0x0a1c, 0x0a28, 0x0a32, 0x0a4b,
-} // Size: 360 bytes
-
-var enScriptStr string = "" + // Size: 1531 bytes
- "AfakaCaucasian AlbanianAhomArabicImperial AramaicArmenianAvestanBalinese" +
- "BamumBassa VahBatakBengaliBlissymbolsBopomofoBrahmiBrailleBugineseBuhidC" +
- "hakmaUnified Canadian Aboriginal SyllabicsCarianChamCherokeeCirthCopticC" +
- "ypriotCyrillicOld Church Slavonic CyrillicDevanagariDeseretDuployan shor" +
- "thandEgyptian demoticEgyptian hieraticEgyptian hieroglyphsElbasanEthiopi" +
- "cGeorgian KhutsuriGeorgianGlagoliticGothicGranthaGreekGujaratiGurmukhiHa" +
- "ngulHanHanunooSimplified HanTraditional HanHatranHebrewHiraganaAnatolian" +
- " HieroglyphsPahawh HmongJapanese syllabariesOld HungarianIndusOld Italic" +
- "JavaneseJapaneseJurchenKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKorea" +
- "nKpelleKaithiLannaLaoFraktur LatinGaelic LatinLatinLepchaLimbuLinear ALi" +
- "near BFraserLomaLycianLydianMahajaniMandaeanManichaeanMayan hieroglyphsM" +
- "endeMeroitic CursiveMeroiticMalayalamModiMongolianMoonMroMeitei MayekMul" +
- "taniMyanmarOld North ArabianNabataeanNaxi GebaN’KoNüshuOghamOl ChikiOrkh" +
- "onOriyaOsmanyaPalmyrenePau Cin HauOld PermicPhags-paInscriptional Pahlav" +
- "iPsalter PahlaviBook PahlaviPhoenicianPollard PhoneticInscriptional Part" +
- "hianRejangRongorongoRunicSamaritanSaratiOld South ArabianSaurashtraSignW" +
- "ritingShavianSharadaSiddhamKhudawadiSinhalaSora SompengSundaneseSyloti N" +
- "agriSyriacEstrangelo SyriacWestern SyriacEastern SyriacTagbanwaTakriTai " +
- "LeNew Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTi" +
- "betanTirhutaUgariticVaiVisible SpeechVarang KshitiWoleaiOld PersianSumer" +
- "o-Akkadian CuneiformYiInheritedMathematical NotationSymbolsUnwrittenComm" +
- "onUnknown Script"
-
-var enScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0017, 0x001b, 0x0021, 0x0031, 0x0039, 0x0040,
- 0x0048, 0x004d, 0x0056, 0x005b, 0x0062, 0x006d, 0x0075, 0x007b,
- 0x0082, 0x008a, 0x008f, 0x0095, 0x00ba, 0x00c0, 0x00c4, 0x00cc,
- 0x00d1, 0x00d7, 0x00de, 0x00e6, 0x0102, 0x010c, 0x0113, 0x0125,
- 0x0135, 0x0146, 0x015a, 0x0161, 0x0169, 0x017a, 0x0182, 0x018c,
- 0x0192, 0x0199, 0x019e, 0x01a6, 0x01ae, 0x01b4, 0x01b7, 0x01be,
- 0x01cc, 0x01db, 0x01e1, 0x01e7, 0x01ef, 0x0204, 0x0210, 0x0224,
- 0x0231, 0x0236, 0x0240, 0x0248, 0x0250, 0x0257, 0x025f, 0x0267,
- // Entry 40 - 7F
- 0x0271, 0x0276, 0x027c, 0x0283, 0x0289, 0x028f, 0x0295, 0x029a,
- 0x029d, 0x02aa, 0x02b6, 0x02bb, 0x02c1, 0x02c6, 0x02ce, 0x02d6,
- 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02f4, 0x02fc, 0x0306, 0x0317,
- 0x031c, 0x032c, 0x0334, 0x033d, 0x0341, 0x034a, 0x034e, 0x0351,
- 0x035d, 0x0364, 0x036b, 0x037c, 0x0385, 0x038e, 0x0394, 0x039a,
- 0x039f, 0x03a7, 0x03ad, 0x03b2, 0x03b9, 0x03c2, 0x03cd, 0x03d7,
- 0x03df, 0x03f4, 0x0403, 0x040f, 0x0419, 0x0429, 0x043f, 0x0445,
- 0x044f, 0x0454, 0x045d, 0x0463, 0x0474, 0x047e, 0x0489, 0x0490,
- // Entry 80 - BF
- 0x0497, 0x049e, 0x04a7, 0x04ae, 0x04ba, 0x04c3, 0x04cf, 0x04d5,
- 0x04e6, 0x04f4, 0x0502, 0x050a, 0x050f, 0x0515, 0x0520, 0x0525,
- 0x052b, 0x0533, 0x0539, 0x0540, 0x0548, 0x054f, 0x0555, 0x0559,
- 0x0560, 0x0567, 0x056f, 0x0572, 0x0580, 0x058d, 0x0593, 0x059e,
- 0x05b7, 0x05b9, 0x05c2, 0x05d7, 0x05de, 0x05e7, 0x05ed, 0x05fb,
-} // Size: 360 bytes
-
-const enGBScriptStr string = ""
-
-var enGBScriptIdx = []uint16{ // 0 elements
-
-} // Size: 24 bytes
-
-var esScriptStr string = "" + // Size: 1165 bytes
- "árabearmenioavésticobalinésbatakbengalísímbolos blisbopomofobrahmibraill" +
- "ebuginésbuhidsímbolos aborígenes canadienses unificadoscariochamcherokee" +
- "cirthcoptochipriotacirílicocirílico del antiguo eslavo eclesiásticodevan" +
- "agarideseretegipcio demóticoegipcio hieráticojeroglíficos egipciosetiópi" +
- "cogeorgiano eclesiásticogeorgianoglagolíticogóticogriegogujaratigurmujih" +
- "angulhanhanunoohan simplificadohan tradicionalhebreohiraganapahawh hmong" +
- "katakana o hiraganahúngaro antiguoIndio (harappan)antigua bastardillajav" +
- "anésjaponéskayah likatakanakharosthijemercanaréscoreanolannalaolatino fr" +
- "akturlatino gaélicolatínlepchalimbulineal Alineal Bliciolidiomandeojerog" +
- "líficos mayasmeroíticomalayálammongolmoonmanipuribirmanon’kooghamol ciki" +
- "orkhonoriyaosmaniyapermiano antiguophags-pafenicioPollard Miaorejangrong" +
- "o-rongorúnicosaratisaurashtraSignWritingshavianocingaléssundanéssyloti n" +
- "agrisiriacosiriaco estrangelosiriaco occidentalsiriaco orientaltagbanúat" +
- "ai lenuevo tai luetamiltelugutengwartifinaghtagalothaanatailandéstibetan" +
- "ougaríticovailenguaje visiblepersa antiguocuneiforme sumerio-acadioyiher" +
- "edadosímbolosno escritocomúnalfabeto desconocido"
-
-var esScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x0016,
- 0x001e, 0x001e, 0x001e, 0x0023, 0x002b, 0x0039, 0x0041, 0x0047,
- 0x004e, 0x0056, 0x005b, 0x005b, 0x0087, 0x008c, 0x0090, 0x0098,
- 0x009d, 0x00a2, 0x00ab, 0x00b4, 0x00de, 0x00e8, 0x00ef, 0x00ef,
- 0x0100, 0x0112, 0x0128, 0x0128, 0x0131, 0x0148, 0x0151, 0x015d,
- 0x0164, 0x0164, 0x016a, 0x0172, 0x0179, 0x017f, 0x0182, 0x0189,
- 0x0199, 0x01a8, 0x01a8, 0x01ae, 0x01b6, 0x01b6, 0x01c2, 0x01d5,
- 0x01e5, 0x01f5, 0x0208, 0x0210, 0x0218, 0x0218, 0x0220, 0x0228,
- // Entry 40 - 7F
- 0x0231, 0x0236, 0x0236, 0x023e, 0x0245, 0x0245, 0x0245, 0x024a,
- 0x024d, 0x025b, 0x026a, 0x0270, 0x0276, 0x027b, 0x0283, 0x028b,
- 0x028b, 0x028b, 0x0290, 0x0295, 0x0295, 0x029b, 0x029b, 0x02ae,
- 0x02ae, 0x02ae, 0x02b8, 0x02c2, 0x02c2, 0x02c8, 0x02cc, 0x02cc,
- 0x02d4, 0x02d4, 0x02db, 0x02db, 0x02db, 0x02db, 0x02e1, 0x02e1,
- 0x02e6, 0x02ed, 0x02f3, 0x02f8, 0x0300, 0x0300, 0x0300, 0x0310,
- 0x0318, 0x0318, 0x0318, 0x0318, 0x031f, 0x032b, 0x032b, 0x0331,
- 0x033c, 0x0343, 0x0343, 0x0349, 0x0349, 0x0353, 0x035e, 0x0366,
- // Entry 80 - BF
- 0x0366, 0x0366, 0x0366, 0x036f, 0x036f, 0x0378, 0x0384, 0x038b,
- 0x039d, 0x03af, 0x03bf, 0x03c8, 0x03c8, 0x03ce, 0x03db, 0x03e0,
- 0x03e0, 0x03e0, 0x03e6, 0x03ed, 0x03f5, 0x03fb, 0x0401, 0x040b,
- 0x0413, 0x0413, 0x041d, 0x0420, 0x0430, 0x0430, 0x0430, 0x043d,
- 0x0456, 0x0458, 0x0460, 0x0460, 0x0469, 0x0473, 0x0479, 0x048d,
-} // Size: 360 bytes
-
-const es419ScriptStr string = ""
-
-var es419ScriptIdx = []uint16{ // 0 elements
-
-} // Size: 24 bytes
-
-var etScriptStr string = "" + // Size: 1541 bytes
- "afakaalbaaniahomiaraabiavanaarameaarmeeniaavestabalibamumibassabatakiben" +
- "galiBlissi sümbolidbopomofobraahmipunktkiribugibuhiditšaakmaKanada põlis" +
- "rahvaste ühtlustatud silpkirikaariatšaamitšerokiiCirthikoptiKüprose silp" +
- "kirikirillitsakürilliline kirikuslaavidevanaagarideseretiDuployé kiirkir" +
- "iegiptuse demootilineegiptuse hieraatilineegiptuse hieroglüüfkiriElbasan" +
- "ietioopiahutsurigruusiaglagoolitsagootigranthakreekagudžaratigurmukhikor" +
- "eahanihanunoolihtsustatud hanitraditsiooniline haniHatraheebreahiraganaA" +
- "natoolia hieroglüüfkiriphahau-hmongi kirijaapani silpkirjadvanaungariInd" +
- "usevanaitalijaavajaapanitšurtšenikaja-liikatakanakharoshthikhmeerihodžki" +
- "kannadakorea segakirikpellekaithitai-thamilaoladina fraktuurkiriladina g" +
- "aeliladinaleptšalimbulineaarkiri Alineaarkiri Blisulomalüükialüüdiamahaa" +
- "džanimandeamanimaaja hieroglüüfkirimendemeroe kursiivkirimeroemalajalami" +
- "modimongoliMoonimruumeiteiMultanibirmaPõhja-AraabiaNabateanasinkoonüšuog" +
- "amsantaliOrhonioriaosmaniPalmyravanapermiphakpapahlavi raidkiripahlavi p" +
- "salmikiripahlavi raamatukirifoiniikiaPollardi miaopartia raidkiriredžang" +
- "irongorongoruunikiriSamaariasaratiLõuna-AraabiasauraštraviipekiriShaw’ k" +
- "irišaaradasiddhamihudavadisingalisorasundasilotisüüriasüüria estrangelol" +
- "äänesüüriaidasüüriatagbanvataakritai-lööuus tai-lõõtamilitanguuditai-vi" +
- "etiteluguTengwaritifinagitagalogitaanataitiibetitirhutaugaritivainähtava" +
- " kõnehoovoleaivanapärsiasumeri-akadi kiilkirijiipäritudmatemaatiline täh" +
- "istussümbolidkirjakeeletaüldinemääramata kiri"
-
-var etScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x000c, 0x0011, 0x0018, 0x0022, 0x002a, 0x0030,
- 0x0034, 0x003a, 0x003f, 0x0045, 0x004c, 0x005c, 0x0064, 0x006b,
- 0x0074, 0x0078, 0x007e, 0x0086, 0x00b1, 0x00b7, 0x00be, 0x00c7,
- 0x00cd, 0x00d2, 0x00e3, 0x00ed, 0x0106, 0x0111, 0x0119, 0x012a,
- 0x013e, 0x0153, 0x016c, 0x0174, 0x017c, 0x0183, 0x018a, 0x0195,
- 0x019a, 0x01a1, 0x01a7, 0x01b1, 0x01b9, 0x01be, 0x01c2, 0x01c9,
- 0x01da, 0x01ef, 0x01f4, 0x01fb, 0x0203, 0x021d, 0x022f, 0x0241,
- 0x024b, 0x0251, 0x025a, 0x025f, 0x0266, 0x0271, 0x0279, 0x0281,
- // Entry 40 - 7F
- 0x028b, 0x0292, 0x0299, 0x02a0, 0x02ae, 0x02b4, 0x02ba, 0x02c3,
- 0x02c6, 0x02d9, 0x02e5, 0x02eb, 0x02f2, 0x02f7, 0x0304, 0x0311,
- 0x0315, 0x0319, 0x0321, 0x0329, 0x0334, 0x033a, 0x033e, 0x0354,
- 0x0359, 0x036a, 0x036f, 0x0379, 0x037d, 0x0384, 0x0389, 0x038d,
- 0x0393, 0x039a, 0x039f, 0x03ad, 0x03b4, 0x03b8, 0x03bc, 0x03c2,
- 0x03c6, 0x03cd, 0x03d3, 0x03d7, 0x03dd, 0x03e4, 0x03e4, 0x03ed,
- 0x03f3, 0x0403, 0x0415, 0x0428, 0x0431, 0x043e, 0x044d, 0x0456,
- 0x0460, 0x0469, 0x0471, 0x0477, 0x0485, 0x048f, 0x0498, 0x04a4,
- // Entry 80 - BF
- 0x04ac, 0x04b4, 0x04bc, 0x04c3, 0x04c7, 0x04cc, 0x04d2, 0x04da,
- 0x04ed, 0x04fc, 0x0507, 0x050f, 0x0515, 0x051e, 0x052b, 0x0531,
- 0x0539, 0x0542, 0x0548, 0x0550, 0x0558, 0x0560, 0x0565, 0x0568,
- 0x056f, 0x0576, 0x057d, 0x0580, 0x058e, 0x0591, 0x0597, 0x05a2,
- 0x05b7, 0x05ba, 0x05c2, 0x05d9, 0x05e2, 0x05ee, 0x05f5, 0x0605,
-} // Size: 360 bytes
-
-var faScriptStr string = "" + // Size: 1849 bytes
- "آلبانیایی قفقازیعربیآرامی هخامنشیارمنیاوستاییبالیاییباتاکیبنگالینمادهای " +
- "بلیسبوپوموفوبراهمیبریلبوگیاییبوهیدچاکماییکاریچمیچروکیاییکرتقبطیقبرسیسیر" +
- "یلیدوناگریدیسرتیکاهنی مصریهیروگلیف مصریاتیوپیاییگرجی خوتسوریگرجیگلاگولی" +
- "تیگوتییونانیگجراتیگورومخیهانگولهانهانونوییهان ساده\u200cشدههان سنتیعبری" +
- "هیراگاناهیروگلیف آناتولیسیلابی\u200cهای ژاپنیمجاری باستانایندوسایتالی ب" +
- "استانجاوه\u200cایژاپنیکایالیکاتاکاناخمریخواجکیکاناراکره\u200cایکثیلانای" +
- "یلائوسیلاتینی فراکتورلاتینی گیلیلاتینیلیمباییخطی الفخطی بلسیاییلدیاییمن" +
- "ده\u200cایمانویهیروگلیف مایاییمروییتیمالایالامیمغولیمونیمایک میتیمیانما" +
- "رعربی شمالی باستاننبطیاوگامیاورخونیاوریه\u200cایپالمیراییپرمی باستانپهل" +
- "وی کتیبه\u200cایپهلوی زبوریپهلوی کتابیفنیقیپارتی کتیبه\u200cایرجنگیرونی" +
- "سامریساراتیعربی جنوبی باستانسوراشتراییشاویسینهالیسیلوتی نگاریسریانیسریا" +
- "نی سطرنجیلیسریانی غربیسریانی شرقیتگبنواییتامیلیتلوگوییتنگوارتیفیناغیتاگ" +
- "الوگیتانه\u200cایتایلندیتبتیاوگاریتیویاییگفتار قابل مشاهدهفارسی باستانم" +
- "یخی سومری‐اکدیییموروثیعلائم ریاضیعلائمنانوشتهمشترکخط نامشخص"
-
-var faScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x001f, 0x001f, 0x0027, 0x0040, 0x004a, 0x0058,
- 0x0066, 0x0066, 0x0066, 0x0072, 0x007e, 0x0095, 0x00a5, 0x00b1,
- 0x00b9, 0x00c7, 0x00d1, 0x00df, 0x00df, 0x00e7, 0x00ed, 0x00fd,
- 0x0103, 0x010b, 0x0115, 0x0121, 0x0121, 0x012f, 0x013b, 0x013b,
- 0x013b, 0x014e, 0x0167, 0x0167, 0x0179, 0x0190, 0x0198, 0x01aa,
- 0x01b2, 0x01b2, 0x01be, 0x01ca, 0x01d8, 0x01e4, 0x01ea, 0x01fa,
- 0x0212, 0x0221, 0x0221, 0x0229, 0x0239, 0x0258, 0x0258, 0x0278,
- 0x028f, 0x029b, 0x02b4, 0x02c3, 0x02cd, 0x02cd, 0x02d9, 0x02e9,
- // Entry 40 - 7F
- 0x02e9, 0x02f1, 0x02fd, 0x0309, 0x0316, 0x0316, 0x031c, 0x0328,
- 0x0334, 0x034f, 0x0364, 0x0370, 0x0370, 0x037e, 0x038b, 0x0394,
- 0x0394, 0x0394, 0x03a0, 0x03ac, 0x03ac, 0x03bb, 0x03c5, 0x03e2,
- 0x03e2, 0x03e2, 0x03f0, 0x0404, 0x0404, 0x040e, 0x0416, 0x0416,
- 0x0427, 0x0427, 0x0435, 0x0455, 0x045d, 0x045d, 0x045d, 0x045d,
- 0x0469, 0x0469, 0x0477, 0x0488, 0x0488, 0x049a, 0x049a, 0x04af,
- 0x04af, 0x04cb, 0x04e0, 0x04f5, 0x04ff, 0x04ff, 0x051b, 0x0525,
- 0x0525, 0x052d, 0x0537, 0x0543, 0x0563, 0x0577, 0x0577, 0x057f,
- // Entry 80 - BF
- 0x057f, 0x057f, 0x057f, 0x058d, 0x058d, 0x058d, 0x05a4, 0x05b0,
- 0x05cd, 0x05e2, 0x05f7, 0x0607, 0x0607, 0x0607, 0x0607, 0x0613,
- 0x0613, 0x0613, 0x0621, 0x062d, 0x063d, 0x064d, 0x065c, 0x066a,
- 0x0672, 0x0672, 0x0682, 0x068c, 0x06ac, 0x06ac, 0x06ac, 0x06c3,
- 0x06e1, 0x06e5, 0x06f1, 0x0706, 0x0710, 0x071e, 0x0728, 0x0739,
-} // Size: 360 bytes
-
-var fiScriptStr string = "" + // Size: 2325 bytes
- "afakakaukasianalbanialainenahomarabialainenvaltakunnanaramealainenarmeni" +
- "alainenavestalainenbalilainenbamumbassabatakilainenbengalilainenbliss-sy" +
- "mbolitbopomofobrahmibraille-pistekirjoitusbugilainenbuhidilainenchakmala" +
- "inenkanadalaisten alkuperäiskansojen yhtenäistetty tavukirjoituskaariala" +
- "inentšamilainencherokeelainencirthkoptilainenmuinaiskyproslainenkyrillin" +
- "enkyrillinen muinaiskirkkoslaavimuunnelmadevanagarideseretDuployén pikak" +
- "irjoitusegyptiläinen demoottinenegyptiläinen hieraattinenegyptiläiset hi" +
- "eroglyfitelbasanilainenetiopialainenmuinaisgeorgialainengeorgialainengla" +
- "goliittinengoottilainengranthakreikkalainengudžaratilainengurmukhihangul" +
- "kiinalainen hanhanunoolainenkiinalainen yksinkertaistettu hankiinalainen" +
- " perinteinen hanhatralainenheprealainenhiraganaanatolialaiset hieroglyfi" +
- "tpahawh hmonghiragana tai katakanamuinaisunkarilaineninduslainenmuinaisi" +
- "talialainenjaavalainenjapanilainendžurtšenkayah likatakanakharosthikhmer" +
- "iläinenkhojkikannadalainenkorealainenkpellekaithilannalaolainenlatinalai" +
- "nen fraktuuramuunnelmalatinalainen gaelimuunnelmalatinalainenlepchalaine" +
- "nlimbulainenlineaari-Alineaari-BFraserin aakkosetlomalyykialainenlyydial" +
- "ainenmahajanilainenmandealainenmanikealainenmaya-hieroglyfitmendemeroiit" +
- "tinen kursiivikirjoitusmeroiittinenmalajalamilainenmodi-aakkosetmongolil" +
- "ainenmoon-kohokirjoitusmromeiteimultanilainenburmalainenmuinaispohjoisar" +
- "abialainennabatealainennaxi geban’konüshuogamol chikiorkhonorijalainenos" +
- "manjalainenpalmyralainenzotuallaimuinaispermiläinenphags-papiirtokirjoit" +
- "uspahlavilainenpsalttaripahlavilainenkirjapahlavilainenfoinikialainenPol" +
- "lardin foneettinenpiirtokirjoitusparthialainenrejangrongorongoriimukirjo" +
- "itussamarianaramealainensaratimuinaiseteläarabialainensaurashtraSignWrit" +
- "ingshaw’lainenšaradasiddham-tavukirjoituskhudabadisinhalilainensorang so" +
- "mpengsundalainensyloti nagrisyyrialainensyyrialainen estrangelo-muunnelm" +
- "asyyrialainen läntinen muunnelmasyyrialainen itäinen muunnelmatagbanwala" +
- "inentakritailelainenuusi tailuelainentamililainentanguttai viettelugulai" +
- "nentengwartifinaghtagalogilainenthaanathailainentiibetiläinentirhutaugar" +
- "itilainenvailainennäkyvä puhevarang kshitiwoleaimuinaispersialainensumer" +
- "ilais-akkadilainen nuolenpääkirjoitusyiläinenperittymatemaattinensymboli" +
- "tkirjoittamatonmäärittämätöntuntematon kirjoitusjärjestelmä"
-
-var fiScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x001b, 0x001f, 0x002b, 0x0042, 0x004f, 0x005b,
- 0x0065, 0x006a, 0x006f, 0x007b, 0x0088, 0x0096, 0x009e, 0x00a4,
- 0x00ba, 0x00c4, 0x00d0, 0x00dc, 0x011a, 0x0126, 0x0132, 0x0140,
- 0x0145, 0x0150, 0x0163, 0x016d, 0x0194, 0x019e, 0x01a5, 0x01bc,
- 0x01d5, 0x01ef, 0x0208, 0x0216, 0x0223, 0x0237, 0x0244, 0x0252,
- 0x025e, 0x0265, 0x0272, 0x0282, 0x028a, 0x0290, 0x029f, 0x02ac,
- 0x02cd, 0x02e8, 0x02f3, 0x02ff, 0x0307, 0x0321, 0x032d, 0x0342,
- 0x0355, 0x0360, 0x0373, 0x037e, 0x038a, 0x0394, 0x039c, 0x03a4,
- // Entry 40 - 7F
- 0x03ad, 0x03ba, 0x03c0, 0x03cd, 0x03d8, 0x03de, 0x03e4, 0x03e9,
- 0x03f2, 0x0411, 0x042c, 0x0438, 0x0444, 0x044f, 0x0459, 0x0463,
- 0x0474, 0x0478, 0x0484, 0x0490, 0x049e, 0x04aa, 0x04b7, 0x04c7,
- 0x04cc, 0x04ea, 0x04f6, 0x0506, 0x0513, 0x0520, 0x0532, 0x0535,
- 0x053b, 0x0548, 0x0553, 0x056d, 0x057a, 0x0583, 0x0589, 0x058f,
- 0x0593, 0x059b, 0x05a1, 0x05ac, 0x05b9, 0x05c6, 0x05cf, 0x05e2,
- 0x05ea, 0x0606, 0x061c, 0x062e, 0x063c, 0x0651, 0x066d, 0x0673,
- 0x067d, 0x068b, 0x069f, 0x06a5, 0x06be, 0x06c8, 0x06d3, 0x06e0,
- // Entry 80 - BF
- 0x06e7, 0x06fc, 0x0705, 0x0712, 0x0720, 0x072b, 0x0737, 0x0743,
- 0x0764, 0x0784, 0x07a3, 0x07b1, 0x07b6, 0x07c1, 0x07d2, 0x07de,
- 0x07e4, 0x07ec, 0x07f8, 0x07ff, 0x0807, 0x0815, 0x081b, 0x0825,
- 0x0833, 0x083a, 0x0847, 0x0850, 0x085d, 0x086a, 0x0870, 0x0883,
- 0x08af, 0x08b8, 0x08bf, 0x08cc, 0x08d4, 0x08e2, 0x08f4, 0x0915,
-} // Size: 360 bytes
-
-var filScriptStr string = "" + // Size: 311 bytes
- "ArabicArmenianBengaliBopomofoBrailleCyrillicDevanagariEthiopicGeorgianGr" +
- "eekGujaratiGurmukhiHangulHanPinasimpleng HanTradisyonal na HanHebrewHira" +
- "ganaJapaneseKatakanaKhmerKannadaKoreanLaoLatinMalayalamMongolianMyanmarO" +
- "riyaSinhalaTamilTeluguThaanaThaiTibetanMga SimboloHindi NakasulatKaraniw" +
- "anHindi Kilalang Script"
-
-var filScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x0015, 0x0015, 0x001d, 0x001d,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0024, 0x0024, 0x0024, 0x002c, 0x002c, 0x0036, 0x0036, 0x0036,
- 0x0036, 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x004b, 0x0053, 0x005b, 0x0061, 0x0064, 0x0064,
- 0x0074, 0x0086, 0x0086, 0x008c, 0x0094, 0x0094, 0x0094, 0x0094,
- 0x0094, 0x0094, 0x0094, 0x0094, 0x009c, 0x009c, 0x009c, 0x00a4,
- // Entry 40 - 7F
- 0x00a4, 0x00a9, 0x00a9, 0x00b0, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
- 0x00b9, 0x00b9, 0x00b9, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be,
- 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be,
- 0x00be, 0x00be, 0x00be, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d0,
- 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7,
- 0x00d7, 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
- // Entry 80 - BF
- 0x00dc, 0x00dc, 0x00dc, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
- 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e8,
- 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f4, 0x00f8,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
- 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x0119, 0x0122, 0x0137,
-} // Size: 360 bytes
-
-var frScriptStr string = "" + // Size: 1445 bytes
- "arabearaméen impérialarménienavestiquebalinaisbatakbengalisymboles Bliss" +
- "bopomofobrâhmîbraillebouguisbouhidechakmasyllabaire autochtone canadien " +
- "unifiécarienchamcherokeecirthcoptesyllabaire chypriotecyrilliquecyrilliq" +
- "ue (variante slavonne)dévanâgarîdéséretdémotique égyptienhiératique égyp" +
- "tienhiéroglyphes égyptienséthiopiquegéorgien khoutsourigéorgienglagoliti" +
- "quegotiquegrecgoudjarâtîgourmoukhîhangûlsinogrammeshanounóosinogrammes s" +
- "implifiéssinogrammes traditionnelshébreuhiraganapahawh hmongkatakana ou " +
- "hiraganaancien hongroisindusancien italiquejavanaisjaponaiskayah likatak" +
- "anakharochthîkhmerkannaracoréenkaithîlannalaolatin (variante brisée)lati" +
- "n (variante gaélique)latinlepchalimboulinéaire Alinéaire Blycienlydienma" +
- "ndéenmanichéenhiéroglyphes mayasméroïtiquemalayalammongolmoonmeitei maye" +
- "kbirmann’koogamol tchikiorkhonoriyaosmanaisancien permienphags papehlevi" +
- " des inscriptionspehlevi des psautierspehlevi des livresphénicienphonéti" +
- "que de Pollardparthe des inscriptionsrejangrongorongoruniquesamaritainsa" +
- "ratisaurashtraécriture des signesshaviencinghalaissundanaissylotî nâgrîs" +
- "yriaquesyriaque estranghélosyriaque occidentalsyriaque orientaltagbanoua" +
- "taï-lenouveau taï-luetamoultaï viêttélougoutengwartifinaghtagalthânathaï" +
- "tibétainougaritiquevaïparole visiblecunéiforme persépolitaincunéiforme s" +
- "uméro-akkadienyihériténotation mathématiquesymbolesnon écritcommunécritu" +
- "re inconnue"
-
-var frScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0017, 0x0020, 0x0029,
- 0x0031, 0x0031, 0x0031, 0x0036, 0x003d, 0x004b, 0x0053, 0x005b,
- 0x0062, 0x0069, 0x0070, 0x0076, 0x009c, 0x00a2, 0x00a6, 0x00ae,
- 0x00b3, 0x00b8, 0x00cc, 0x00d6, 0x00f4, 0x0101, 0x010a, 0x010a,
- 0x011e, 0x0133, 0x014b, 0x014b, 0x0156, 0x016a, 0x0173, 0x017f,
- 0x0186, 0x0186, 0x018a, 0x0196, 0x01a1, 0x01a8, 0x01b3, 0x01bc,
- 0x01d3, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0207, 0x021b,
- 0x022a, 0x022f, 0x023e, 0x0246, 0x024e, 0x024e, 0x0256, 0x025e,
- // Entry 40 - 7F
- 0x0269, 0x026e, 0x026e, 0x0275, 0x027c, 0x027c, 0x0283, 0x0288,
- 0x028b, 0x02a3, 0x02bd, 0x02c2, 0x02c8, 0x02ce, 0x02d9, 0x02e4,
- 0x02e4, 0x02e4, 0x02ea, 0x02f0, 0x02f0, 0x02f8, 0x0302, 0x0315,
- 0x0315, 0x0315, 0x0321, 0x032a, 0x032a, 0x0330, 0x0334, 0x0334,
- 0x0340, 0x0340, 0x0346, 0x0346, 0x0346, 0x0346, 0x034c, 0x034c,
- 0x0350, 0x0359, 0x035f, 0x0364, 0x036c, 0x036c, 0x036c, 0x037a,
- 0x0382, 0x039a, 0x03af, 0x03c1, 0x03cb, 0x03e1, 0x03f8, 0x03fe,
- 0x0408, 0x040f, 0x0419, 0x041f, 0x041f, 0x0429, 0x043d, 0x0444,
- // Entry 80 - BF
- 0x0444, 0x0444, 0x0444, 0x044e, 0x044e, 0x0457, 0x0466, 0x046e,
- 0x0483, 0x0496, 0x04a7, 0x04b0, 0x04b0, 0x04b7, 0x04c7, 0x04cd,
- 0x04cd, 0x04d7, 0x04e0, 0x04e7, 0x04ef, 0x04f4, 0x04fa, 0x04ff,
- 0x0508, 0x0508, 0x0513, 0x0517, 0x0525, 0x0525, 0x0525, 0x053f,
- 0x055b, 0x055d, 0x0565, 0x057b, 0x0583, 0x058d, 0x0593, 0x05a5,
-} // Size: 360 bytes
-
-var frCAScriptStr string = "devanagarigujarati"
-
-var frCAScriptIdx = []uint16{ // 44 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x0012,
-} // Size: 112 bytes
-
-var guScriptStr string = "" + // Size: 3319 bytes
- "અરબીઇમ્પિરિયલ આર્મનિકઅર્મેનિયનઅવેસ્તનબાલીનીઝબટાકબંગાળીબ્લિસિમ્બોલ્સબોપોમ" +
- "ોફોબ્રહ્મીબ્રેલબગિનીસબુહિદચકમાયુનાઇટેડ કેનેડિયન એબોરિજનલ સિલેબિક્સકરૈન" +
- "ચેરોકીસિર્થકોપ્ટિકસિપ્રાયટસિરિલિકઓલ્ડ ચર્ચ સ્લાવોનિક સિરિલિકદેવનાગરીડે" +
- "સરેટઇજિપ્શિયન ડેમોટિકઇજિપ્શિયન હાઇરેટિકઇજિપ્શિયન હાઇરોગ્લિફ્સઇથિયોપિકજ" +
- "્યોર્જિઅન ખુતસુરીજ્યોર્જિઅનગ્લેગોલિટિકગોથિકગ્રીકગુજરાતીગુરૂમુખીહંગુલહા" +
- "નહનુનૂસરળીકૃત હાનપરંપરાગત હાનહીબ્રુહિરાગાનાપહાઉ મોન્ગકતાકના અને હિરાગન" +
- "ાઓલ્ડ હંગેરિયનસિન્ધુજૂનુ ઇટાલિકજાવાનીસજાપાનીકાયાહ લીકટાકાનાખારોશ્થીખ્મ" +
- "ેરકન્નડાકોરિયનકૈથીલાનાલાઓફ્રેકતુર લેટિનગૈલિક લેટિનલેટિનલેપચાલિમ્બૂલીનિ" +
- "યર અલીનિયર બીલિશિયનલિડિયનમાન્ડાયીનમાનીચાયીનમયાન હાઇરોગ્લિફ્સમેરોઇટિકમલ" +
- "યાલમમોંગોલિયનમૂનમેઇતેઇ માયેકમ્યાંમારએન’ કોઓઘામઓલ ચિકીઓરખોનઉડિયાઓસ્માન્" +
- "યાઓલ્ડ પરમિકફાગ્સ-પાઇન્સ્ક્રિપ્શનલ પહલવીસાલટર પહલવીબુક પહલવીફોનિશિયનપો" +
- "લાર્ડ ફોનેટિકઇન્સ્ક્રિપ્શનલ પાર્થિયનરીજાંગરોંગોરોંગોરૂનિકસમરિટાનસરાતીસ" +
- "ૌરાષ્ટ્રસંકેત લિપીશાવિયાનસિંહલીસુદાનીઝસિલોતી નાગરીસિરિયેકએસ્ત્રેન્જેલો" +
- " સિરિયાકપશ્ચિમ સિરિયાકપૂર્વ સિરિયાકતગબન્વાતાઇ લીનવીન તાઇ લૂતમિલતાઇ વેઇતત" +
- "ેલુગુતેન્ગવારતિફિનાઘટેગાલોગથાનાથાઇટિબેટીયુગાતિટિકવાઇવિસિબલ સ્પીચજુની ફ" +
- "ારસીસુમેરો અક્કાદિયન સુનિફોર્મયીવંશાગતગણિતીય સંકેતલિપિપ્રતીકોઅલિખિતસામ" +
- "ાન્યઅજ્ઞાત લિપિ"
-
-var guScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x003d, 0x0058, 0x006d,
- 0x0082, 0x0082, 0x0082, 0x008e, 0x00a0, 0x00c7, 0x00df, 0x00f4,
- 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01a2, 0x01b4,
- 0x01c3, 0x01d8, 0x01f0, 0x0205, 0x0250, 0x0268, 0x027a, 0x027a,
- 0x02ab, 0x02df, 0x031f, 0x031f, 0x0337, 0x036b, 0x0389, 0x03aa,
- 0x03b9, 0x03b9, 0x03c8, 0x03dd, 0x03f5, 0x0404, 0x040d, 0x041c,
- 0x043b, 0x045d, 0x045d, 0x046f, 0x0487, 0x0487, 0x04a3, 0x04d5,
- 0x04fa, 0x050c, 0x052b, 0x0540, 0x0552, 0x0552, 0x0568, 0x057d,
- // Entry 40 - 7F
- 0x0595, 0x05a4, 0x05a4, 0x05b6, 0x05c8, 0x05c8, 0x05d4, 0x05e0,
- 0x05e9, 0x0611, 0x0630, 0x063f, 0x064e, 0x0660, 0x0676, 0x068f,
- 0x068f, 0x068f, 0x06a1, 0x06b3, 0x06b3, 0x06ce, 0x06e9, 0x071a,
- 0x071a, 0x071a, 0x0732, 0x0744, 0x0744, 0x075f, 0x0768, 0x0768,
- 0x078a, 0x078a, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07b2, 0x07b2,
- 0x07be, 0x07d1, 0x07e0, 0x07ef, 0x080a, 0x080a, 0x080a, 0x0826,
- 0x083c, 0x0876, 0x0895, 0x08ae, 0x08c6, 0x08f1, 0x0934, 0x0946,
- 0x0964, 0x0973, 0x0988, 0x0997, 0x0997, 0x09b2, 0x09ce, 0x09e3,
- // Entry 80 - BF
- 0x09e3, 0x09e3, 0x09e3, 0x09f5, 0x09f5, 0x0a0a, 0x0a2c, 0x0a41,
- 0x0a7e, 0x0aa6, 0x0acb, 0x0ae0, 0x0ae0, 0x0af0, 0x0b0d, 0x0b19,
- 0x0b19, 0x0b2f, 0x0b41, 0x0b59, 0x0b6e, 0x0b83, 0x0b8f, 0x0b98,
- 0x0baa, 0x0baa, 0x0bc5, 0x0bce, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0c,
- 0x0c56, 0x0c5c, 0x0c6e, 0x0c9c, 0x0cb1, 0x0cc3, 0x0cd8, 0x0cf7,
-} // Size: 360 bytes
-
-var heScriptStr string = "" + // Size: 849 bytes
- "ערביארמניבאלינזיבנגליבופומופובריילצ׳אםצ׳ירוקיקופטיקפריסאיקיריליקירילי סל" +
- "אבוני כנסייתי עתיקדוואנגריכתב חרטומיםאתיופיגאורגיגותייווניגוג׳רטיגורמוק" +
- "יהאנגולהאןכתב האן פשוטכתב האן מסורתיעבריהירגאנההונגרי עתיקאינדוסאיטלקי " +
- "עתיקג׳אוונזייפניקטקאנהקמריתקאנדהקוריאנילאיתלטיני גאלילטינימאיהמליאלאםמו" +
- "נגולימיאנמראורייהפיניקירוניסינהלהסוריסורי מערביסורי מזרחיטמילטלוגוטגלוג" +
- "כתב טאנהתאיטיבטיאוגריתיפרסי עתיקמורשסימון מתמטיסימניםלא כתוברגילכתב שאי" +
- "נו ידוע"
-
-var heScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x003a, 0x003a,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x005a,
- 0x005a, 0x0064, 0x0072, 0x007e, 0x00b1, 0x00c1, 0x00c1, 0x00c1,
- 0x00c1, 0x00c1, 0x00d6, 0x00d6, 0x00e2, 0x00e2, 0x00ee, 0x00ee,
- 0x00f6, 0x00f6, 0x0100, 0x010e, 0x011c, 0x0128, 0x012e, 0x012e,
- 0x0144, 0x015e, 0x015e, 0x0166, 0x0174, 0x0174, 0x0174, 0x0174,
- 0x0189, 0x0195, 0x01aa, 0x01ba, 0x01c2, 0x01c2, 0x01c2, 0x01ce,
- // Entry 40 - 7F
- 0x01ce, 0x01d8, 0x01d8, 0x01e2, 0x01f0, 0x01f0, 0x01f0, 0x01f0,
- 0x01f8, 0x01f8, 0x020b, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x021d,
- 0x021d, 0x021d, 0x021d, 0x022b, 0x022b, 0x0239, 0x0239, 0x0239,
- 0x0239, 0x0239, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245,
- 0x0245, 0x0245, 0x0245, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251,
- 0x0251, 0x0251, 0x0251, 0x0251, 0x025d, 0x025d, 0x025d, 0x025d,
- 0x025d, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265,
- // Entry 80 - BF
- 0x0265, 0x0265, 0x0265, 0x0271, 0x0271, 0x0271, 0x0271, 0x0279,
- 0x0279, 0x028c, 0x029f, 0x029f, 0x029f, 0x029f, 0x029f, 0x02a7,
- 0x02a7, 0x02a7, 0x02b1, 0x02b1, 0x02b1, 0x02bb, 0x02ca, 0x02d0,
- 0x02da, 0x02da, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02f9,
- 0x02f9, 0x02f9, 0x0301, 0x0316, 0x0322, 0x032f, 0x0337, 0x0351,
-} // Size: 360 bytes
-
-var hiScriptStr string = "" + // Size: 3328 bytes
- "अरबीइम्पिरियल आर्मेनिकआर्मेनियाईअवेस्तनबालीबटकीबंगालीब्लिसिम्बॉल्सबोपोमो" +
- "फ़ोब्रह्मीब्रेलबगिनीसबुहिदचकमायुनिफाइड कैनेडियन एबोरिजनल सिलेबिक्सकरैन" +
- "चामचेरोकीकिर्थकॉप्टिककाइप्रायटसिरिलिकओल्ड चर्च स्लावोनिक सिरिलिकदेवनाग" +
- "रीडेसरेटइजिप्शियन डेमोटिकइजिप्शियन हाइरेटिकइजिप्शियन हाइरोग्लिफ्सइथियो" +
- "पियाईजॉर्जियन खुतसुरीजॉर्जियनग्लेगोलिटिकगोथिकग्रन्थयूनानीगुजरातीगुरमुख" +
- "ीहंगुलहानहनुनूसरलीकृत हानपारंपरिक हानहिब्रूहिरागानापाहो ह्मोन्गकचाकना " +
- "और हिरागनाऑल्ड हंगेरियनसिन्धुपुरानी इटलीजावानीसजापानीकायाह लीकाताकानाख" +
- "ारोशथीखमेरकन्नड़कोरियाईकैथीलानालाओफ़्रैक्टुर लातिनीगेली लातिनीलैटिनलेप" +
- "चालिम्बूलीनियर Aलीनियर बीलिशियनलिडियनमनडेनमनीशीनमयान हाइरोग्लिफ्समेरोइ" +
- "टिकमलयालममंगोलियाईमूनमेइतेइ मायेकम्यांमारएन्‘कोओगमऑल चिकीओरखोनउड़ियाओस" +
- "्मान्याओल्ड परमिकफाग्स-पाइंस्क्रिपश्नल पाहलवीसॉल्टर पाहलवीबुक पाहलवीफो" +
- "निशियनपॉलार्ड फोनेटिकइंस्क्रिपश्नल पार्थियनरीजांगरोन्गोरोन्गोरूनिकसमरि" +
- "टनसरातीसौराष्ट्रसांकेतिक लेखशावियानसिंहलीसूडानीसिलोती नागरीसिरियेकएस्त" +
- "्रेन्जेलो सिरिएकपश्चिम सिरिएकपूर्व सिरिएकतगबन्वाताई लीनया ताई लुतमिलता" +
- "ई विएततेलुगूतेन्गवारतिफिनाघटैगालोगथानाथाईतिब्बतीयुगारिटिकवाईविसिबल स्प" +
- "ीचपुरानी फारसीसुमेरो अक्कादियन सुनिफॉर्मयीविरासतगणितीय संकेतनचिह्नअलिख" +
- "ितसामान्यअज्ञात लिपि"
-
-var hiScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005e, 0x0073,
- 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00df, 0x00f4,
- 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01ab, 0x01bd,
- 0x01cc, 0x01e1, 0x01fc, 0x0211, 0x025c, 0x0274, 0x0286, 0x0286,
- 0x02b7, 0x02eb, 0x032b, 0x032b, 0x0349, 0x0377, 0x038f, 0x03b0,
- 0x03bf, 0x03d1, 0x03e3, 0x03f8, 0x040d, 0x041c, 0x0425, 0x0434,
- 0x0453, 0x0475, 0x0475, 0x0487, 0x049f, 0x049f, 0x04c1, 0x04f0,
- 0x0515, 0x0527, 0x0546, 0x055b, 0x056d, 0x056d, 0x0583, 0x059b,
- // Entry 40 - 7F
- 0x05b0, 0x05bc, 0x05bc, 0x05ce, 0x05e3, 0x05e3, 0x05ef, 0x05fb,
- 0x0604, 0x0635, 0x0654, 0x0663, 0x0672, 0x0684, 0x0698, 0x06b1,
- 0x06b1, 0x06b1, 0x06c3, 0x06d5, 0x06d5, 0x06e4, 0x06f6, 0x0727,
- 0x0727, 0x0727, 0x073f, 0x0751, 0x0751, 0x076c, 0x0775, 0x0775,
- 0x0797, 0x0797, 0x07af, 0x07af, 0x07af, 0x07af, 0x07c1, 0x07c1,
- 0x07ca, 0x07dd, 0x07ec, 0x07fe, 0x0819, 0x0819, 0x0819, 0x0835,
- 0x084b, 0x0885, 0x08aa, 0x08c6, 0x08de, 0x0909, 0x0949, 0x095b,
- 0x097f, 0x098e, 0x09a0, 0x09af, 0x09af, 0x09ca, 0x09ec, 0x0a01,
- // Entry 80 - BF
- 0x0a01, 0x0a01, 0x0a01, 0x0a13, 0x0a13, 0x0a25, 0x0a47, 0x0a5c,
- 0x0a96, 0x0abb, 0x0add, 0x0af2, 0x0af2, 0x0b02, 0x0b1c, 0x0b28,
- 0x0b28, 0x0b3e, 0x0b50, 0x0b68, 0x0b7d, 0x0b92, 0x0b9e, 0x0ba7,
- 0x0bbc, 0x0bbc, 0x0bd7, 0x0be0, 0x0c02, 0x0c02, 0x0c02, 0x0c24,
- 0x0c6e, 0x0c74, 0x0c86, 0x0cab, 0x0cba, 0x0ccc, 0x0ce1, 0x0d00,
-} // Size: 360 bytes
-
-var hrScriptStr string = "" + // Size: 2371 bytes
- "afaka pismoarapsko pismoaramejsko pismoarmensko pismoavestansko pismobal" +
- "ijsko pismobamum pismobassa vah pismobatak pismobengalsko pismoblissymbo" +
- "lsbopomofo pismobrahmi pismobrajicabuginsko pismobuhid pismochakma pismo" +
- "unificirani kanadski aboriđinski slogovikarijsko pismočamsko pismočeroki" +
- " pismocirth pismokoptsko pismocypriot pismoćirilicastaroslavenska crkven" +
- "a čirilicadevangari pismodeseret pismoegipatsko narodno pismoegipatsko h" +
- "ijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khutsuri pis" +
- "mogruzijsko pismoglagoljicagotičko pismograntha pismogrčko pismogudžarat" +
- "sko pismogurmukhi pismohangul pismohan pismohanunoo pismopojednostavljen" +
- "o hansko pismotradicionalno hansko pismohebrejsko pismohiragana pismoana" +
- "tolijski hijeroglifipahawh hmong pismokatakana ili hiragana pismostaro m" +
- "ađarsko pismoindijsko pismostaro talijansko pismojavansko pismojapansko " +
- "pismojurchen pismokayah li pismokatakana pismokharoshthi pismokmersko pi" +
- "smokhojki pismokannada pismokorejsko pismokpelle pismokaithi pismolanna " +
- "pismolaosko pismofraktur latinicakeltska latinicalatinicalepcha pismolim" +
- "bu pismolinear A pismolinear B pismofraser pismoloma pismolikijsko pismo" +
- "lidijsko pismomandai pismomanihejsko pismomajanski hijeroglifimende pism" +
- "omeroitski kurzivmeroitic pismomalajalamsko pismomongolsko pismomoon pis" +
- "momro pismomeitei mayek pismomjanmarsko pismostaro sjevernoarapsko pismo" +
- "nabatejsko pismonaxi geba pismon’ko pismonushu pismoogham pismool chiki " +
- "pismoorkhon pismoorijsko pismoosmanya pismopalmyrene pismostaro permic p" +
- "ismophags-pa pismopisani pahlavipsalter pahlavipahlavi pismofeničko pism" +
- "opollard fonetsko pismopisani parthianrejang pismorongorongo pismorunsko" +
- " pismosamaritansko pismosarati pismostaro južnoarapsko pismosaurashtra p" +
- "ismoznakovno pismoshavian pismosharada pismokhudawadi pismosinhaleško pi" +
- "smosora sompeng pismosundansko pismosyloti nagri pismosirijsko pismosiri" +
- "jsko estrangelo pismopismo zapadne Sirijepismo istočne Sirijetagbanwa pi" +
- "smotakri pismotai le pismonovo tai lue pismotamilsko pismotangut pismota" +
- "i viet pismotelugu pismotengwar pismotifinartagalog pismothaana pismotaj" +
- "landsko pismotibetansko pismotirhuta pismougaritsko pismovai pismoVisibl" +
- "e Speechvarang kshiti pismowoleai pismostaro perzijsko pismosumersko-aka" +
- "dsko cuneiform pismoYi pismonasljedno pismomatematičko znakovljesimbolij" +
- "ezik bez pismenostizajedničko pismonepoznato pismo"
-
-var hrScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000b, 0x000b, 0x000b, 0x0018, 0x0027, 0x0035, 0x0045,
- 0x0053, 0x005e, 0x006d, 0x0078, 0x0087, 0x0092, 0x00a0, 0x00ac,
- 0x00b3, 0x00c1, 0x00cc, 0x00d8, 0x0101, 0x010f, 0x011c, 0x0129,
- 0x0134, 0x0141, 0x014e, 0x0157, 0x0177, 0x0186, 0x0193, 0x0193,
- 0x01aa, 0x01c4, 0x01d9, 0x01d9, 0x01e7, 0x01ff, 0x020e, 0x0218,
- 0x0226, 0x0233, 0x023f, 0x0251, 0x025f, 0x026b, 0x0274, 0x0281,
- 0x029e, 0x02b8, 0x02b8, 0x02c7, 0x02d5, 0x02ec, 0x02fe, 0x0319,
- 0x032e, 0x033c, 0x0352, 0x0360, 0x036e, 0x037b, 0x0389, 0x0397,
- // Entry 40 - 7F
- 0x03a7, 0x03b4, 0x03c0, 0x03cd, 0x03db, 0x03e7, 0x03f3, 0x03fe,
- 0x040a, 0x041a, 0x042a, 0x0432, 0x043e, 0x0449, 0x0457, 0x0465,
- 0x0471, 0x047b, 0x0489, 0x0497, 0x0497, 0x04a3, 0x04b3, 0x04c7,
- 0x04d2, 0x04e2, 0x04f0, 0x0502, 0x0502, 0x0511, 0x051b, 0x0524,
- 0x0536, 0x0536, 0x0546, 0x0561, 0x0571, 0x0580, 0x058c, 0x0597,
- 0x05a2, 0x05b0, 0x05bc, 0x05c9, 0x05d6, 0x05e5, 0x05e5, 0x05f7,
- 0x0605, 0x0613, 0x0622, 0x062f, 0x063d, 0x0653, 0x0662, 0x066e,
- 0x067e, 0x068a, 0x069c, 0x06a8, 0x06c1, 0x06d1, 0x06df, 0x06ec,
- // Entry 80 - BF
- 0x06f9, 0x06f9, 0x0708, 0x0719, 0x072b, 0x073a, 0x074c, 0x075a,
- 0x0773, 0x0787, 0x079c, 0x07aa, 0x07b5, 0x07c1, 0x07d3, 0x07e1,
- 0x07ed, 0x07fb, 0x0807, 0x0814, 0x081b, 0x0828, 0x0834, 0x0844,
- 0x0854, 0x0861, 0x0870, 0x0879, 0x0887, 0x089a, 0x08a6, 0x08bb,
- 0x08db, 0x08e3, 0x08f2, 0x0908, 0x090f, 0x0923, 0x0934, 0x0943,
-} // Size: 360 bytes
-
-var huScriptStr string = "" + // Size: 1273 bytes
- "ArabBirodalmi arámiÖrményAvesztánBalinézBatakBengáliBliss jelképrendszer" +
- "BopomofoBrámiVakírásBuginézBuhidCsakmaEgyesített kanadai őslakos jelekKa" +
- "riCsámCserokiKoptCiprusiCirillÓegyházi szláv cirillDevanagáriDeseretEgyi" +
- "ptomi demotikusEgyiptomi hieratikusEgyiptomi hieroglifákEtiópGrúz kucsur" +
- "iGrúzGlagolitikusGótGörögGudzsarátiGurmukiHangulHanHanunooEgyszerűsített" +
- " kínaiHagyományos kínaiHéberHiraganaPahawh hmongKatakana vagy hiraganaÓm" +
- "agyarIndusRégi olaszJávaiJapánKajah liKatakanaKharoshthiKhmerKannadaKore" +
- "aiKaithiLannaLaoFraktur latinGael latinLatinLepchaLimbuLineáris ALineári" +
- "s BLíciaiLídiaiMandaiManicheusMaja hieroglifákMeroitikusMalajálamMongolM" +
- "oonMeitei mayekBurmaiN’koOghamOl chikiOrhonOriyaOszmánÓpermikusPhags-paF" +
- "elriatos pahlaviPsalter pahlaviKönyv pahlaviFőniciaiPollard fonetikusFel" +
- "iratos parthianRedzsangRongorongoRunikusSzamaritánSzaratiSzaurastraJelír" +
- "ásShaw ábécéSzingalézSzundanézSylheti nagáriSzíriaiEstrangelo szíriaiNy" +
- "ugat-szíriaiKelet-szíriaiTagbanwaTai LeÚj tai lueTamilTai vietTeluguTeng" +
- "warBerberTagalogThaanaThaiTibetiUgariVaiLátható beszédÓperzsaÉkírásos su" +
- "méro-akkádJiSzármaztatottMatematikai jelrendszerSzimbólumÍratlan nyelvek" +
- " kódjaMeghatározatlanIsmeretlen írásrendszer"
-
-var huScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x001c, 0x0025,
- 0x002d, 0x002d, 0x002d, 0x0032, 0x003a, 0x004f, 0x0057, 0x005d,
- 0x0066, 0x006e, 0x0073, 0x0079, 0x009b, 0x009f, 0x00a4, 0x00ab,
- 0x00ab, 0x00af, 0x00b6, 0x00bc, 0x00d4, 0x00df, 0x00e6, 0x00e6,
- 0x00f9, 0x010d, 0x0123, 0x0123, 0x0129, 0x0136, 0x013b, 0x0147,
- 0x014b, 0x014b, 0x0152, 0x015d, 0x0164, 0x016a, 0x016d, 0x0174,
- 0x018b, 0x019e, 0x019e, 0x01a4, 0x01ac, 0x01ac, 0x01b8, 0x01ce,
- 0x01d6, 0x01db, 0x01e6, 0x01ec, 0x01f2, 0x01f2, 0x01fa, 0x0202,
- // Entry 40 - 7F
- 0x020c, 0x0211, 0x0211, 0x0218, 0x021e, 0x021e, 0x0224, 0x0229,
- 0x022c, 0x0239, 0x0243, 0x0248, 0x024e, 0x0253, 0x025e, 0x0269,
- 0x0269, 0x0269, 0x0270, 0x0277, 0x0277, 0x027d, 0x0286, 0x0297,
- 0x0297, 0x0297, 0x02a1, 0x02ab, 0x02ab, 0x02b1, 0x02b5, 0x02b5,
- 0x02c1, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02cd, 0x02cd,
- 0x02d2, 0x02da, 0x02df, 0x02e4, 0x02eb, 0x02eb, 0x02eb, 0x02f5,
- 0x02fd, 0x030e, 0x031d, 0x032b, 0x0334, 0x0345, 0x0357, 0x035f,
- 0x0369, 0x0370, 0x037b, 0x0382, 0x0382, 0x038c, 0x0395, 0x03a2,
- // Entry 80 - BF
- 0x03a2, 0x03a2, 0x03a2, 0x03ac, 0x03ac, 0x03b6, 0x03c5, 0x03cd,
- 0x03e0, 0x03ef, 0x03fd, 0x0405, 0x0405, 0x040b, 0x0416, 0x041b,
- 0x041b, 0x0423, 0x0429, 0x0430, 0x0436, 0x043d, 0x0443, 0x0447,
- 0x044d, 0x044d, 0x0452, 0x0455, 0x0466, 0x0466, 0x0466, 0x046e,
- 0x0488, 0x048a, 0x0498, 0x04af, 0x04b9, 0x04d0, 0x04e0, 0x04f9,
-} // Size: 360 bytes
-
-var hyScriptStr string = "" + // Size: 679 bytes
- "արաբականհայկականբենգալականբոպոմոֆոբրայլիկյուրեղագիրդեվանագարիեթովպականվր" +
- "ացականհունականգուջարաթիգուրմուխիհանգուլչինականպարզեցված չինականավանդակա" +
- "ն չինականեբրայականհիրագանաճապոնականկատականաքմերականկաննադակորեականլաոսա" +
- "կանլատինականմալայալամմոնղոլականմյանմարականօրիյասինհալականթամիլականթելու" +
- "գութաանաթայականտիբեթականնշաններչգրվածընդհանուրանհայտ գիր"
-
-var hyScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044,
- 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
- 0x0050, 0x0050, 0x0050, 0x0066, 0x0066, 0x007a, 0x007a, 0x007a,
- 0x007a, 0x007a, 0x007a, 0x007a, 0x008c, 0x008c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x00ac, 0x00be, 0x00d0, 0x00de, 0x00ec, 0x00ec,
- 0x010d, 0x012e, 0x012e, 0x0140, 0x0150, 0x0150, 0x0150, 0x0150,
- 0x0150, 0x0150, 0x0150, 0x0150, 0x0162, 0x0162, 0x0162, 0x0172,
- // Entry 40 - 7F
- 0x0172, 0x0182, 0x0182, 0x0190, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
- 0x01b0, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
- 0x01c2, 0x01c2, 0x01c2, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8,
- 0x01e8, 0x01e8, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe,
- 0x01fe, 0x01fe, 0x01fe, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
- 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
- 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
- // Entry 80 - BF
- 0x0208, 0x0208, 0x0208, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c,
- 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x022e,
- 0x022e, 0x022e, 0x023e, 0x023e, 0x023e, 0x023e, 0x0248, 0x0256,
- 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268,
- 0x0268, 0x0268, 0x0268, 0x0268, 0x0276, 0x0282, 0x0294, 0x02a7,
-} // Size: 360 bytes
-
-var idScriptStr string = "" + // Size: 1396 bytes
- "AfakaAlbania KaukasiaArabAram ImperialArmeniaAvestaBaliBamumBassa VahBat" +
- "akBengaliBlissymbolBopomofoBrahmiBrailleBugisBuhidChakmaSimbol Aborigin " +
- "Kanada KesatuanKariaChamCherokeeCirthKoptikSiprusSirilikGereja Slavonia " +
- "Sirilik LamaDevanagariDeseretStenografi DuployanDemotik MesirHieratik Me" +
- "sirHieroglip MesirEtiopiaGeorgian KhutsuriGeorgiaGlagoliticGothicGrantha" +
- "YunaniGujaratiGurmukhiHangulHanHanunooHan SederhanaHan TradisionalIbrani" +
- "HiraganaHieroglif AnatoliaPahawh HmongKatakana atau HiraganaHungaria Kun" +
- "oIndusItalia LamaJawaJepangJurchenKayah LiKatakanaKharoshthiKhmerKhojkiK" +
- "annadaKoreaKpelleKaithiLannaLaosLatin FrakturLatin GaelikLatinLepchaLimb" +
- "uLinear ALinear BLisuLomaLyciaLydiaMandaeManikheiHieroglip MayaMendeKurs" +
- "if MeroitikMeroitikMalayalamModiMongoliaMoonMroMeitei MayekMyanmarArab U" +
- "tara KunoNabataeaNaxi GebaN’KoNushuOghamChiki LamaOrkhonOriyaOsmanyaPalm" +
- "iraPermik KunoPhags-paPahleviMazmur PahleviKitab PahleviPhoenixFonetik P" +
- "ollardPrasasti ParthiaRejangRongorongoRunikSamariaSaratiArab Selatan Kun" +
- "oSaurashtraTulisan IsyaratShaviaSharadaSiddhamKhudawadiSinhalaSora Sompe" +
- "ngSundaSyloti NagriSuriahSuriah EstrangeloSuriah BaratSuriah TimurTagban" +
- "waTakriTai LeTai Lue BaruTamilTangutTai VietTeluguTenghwarTifinaghTagalo" +
- "gThaanaThaiTibetTirhutaUgaritikVaiUcapan TerlihatVarang KshitiWoleaiPers" +
- "ia KunoCuneiform Sumero-AkkadiaYiWarisanNotasi MatematikaSimbolTidak Ter" +
- "tulisUmumSkrip Tak Dikenal"
-
-var idScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0015, 0x0015, 0x0019, 0x0026, 0x002d, 0x0033,
- 0x0037, 0x003c, 0x0045, 0x004a, 0x0051, 0x005b, 0x0063, 0x0069,
- 0x0070, 0x0075, 0x007a, 0x0080, 0x009f, 0x00a4, 0x00a8, 0x00b0,
- 0x00b5, 0x00bb, 0x00c1, 0x00c8, 0x00e4, 0x00ee, 0x00f5, 0x0108,
- 0x0115, 0x0123, 0x0132, 0x0132, 0x0139, 0x014a, 0x0151, 0x015b,
- 0x0161, 0x0168, 0x016e, 0x0176, 0x017e, 0x0184, 0x0187, 0x018e,
- 0x019b, 0x01aa, 0x01aa, 0x01b0, 0x01b8, 0x01ca, 0x01d6, 0x01ec,
- 0x01f9, 0x01fe, 0x0209, 0x020d, 0x0213, 0x021a, 0x0222, 0x022a,
- // Entry 40 - 7F
- 0x0234, 0x0239, 0x023f, 0x0246, 0x024b, 0x0251, 0x0257, 0x025c,
- 0x0260, 0x026d, 0x0279, 0x027e, 0x0284, 0x0289, 0x0291, 0x0299,
- 0x029d, 0x02a1, 0x02a6, 0x02ab, 0x02ab, 0x02b1, 0x02b9, 0x02c7,
- 0x02cc, 0x02db, 0x02e3, 0x02ec, 0x02f0, 0x02f8, 0x02fc, 0x02ff,
- 0x030b, 0x030b, 0x0312, 0x0321, 0x0329, 0x0332, 0x0338, 0x033d,
- 0x0342, 0x034c, 0x0352, 0x0357, 0x035e, 0x0365, 0x0365, 0x0370,
- 0x0378, 0x037f, 0x038d, 0x039a, 0x03a1, 0x03b0, 0x03c0, 0x03c6,
- 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03f3, 0x03fd, 0x040c, 0x0412,
- // Entry 80 - BF
- 0x0419, 0x0420, 0x0429, 0x0430, 0x043c, 0x0441, 0x044d, 0x0453,
- 0x0464, 0x0470, 0x047c, 0x0484, 0x0489, 0x048f, 0x049b, 0x04a0,
- 0x04a6, 0x04ae, 0x04b4, 0x04bc, 0x04c4, 0x04cb, 0x04d1, 0x04d5,
- 0x04da, 0x04e1, 0x04e9, 0x04ec, 0x04fb, 0x0508, 0x050e, 0x0519,
- 0x0531, 0x0533, 0x053a, 0x054b, 0x0551, 0x055f, 0x0563, 0x0574,
-} // Size: 360 bytes
-
-var isScriptStr string = "" + // Size: 363 bytes
- "arabísktarmensktbengalsktbopomofoblindraleturkyrillísktdevanagarieþíópís" +
- "ktgeorgísktgrísktgújaratígurmukhihangulkínverskteinfaldað hanhefðbundið " +
- "hanhebreskthiraganakatakana eða hiraganajapansktkatakanakmerkannadakóres" +
- "ktlaolatnesktmalalajammongólsktmjanmarsktoriyasinhalatamílskttelúgúthaan" +
- "ataílenskttíbeskttáknóskrifaðalmenntóþekkt letur"
-
-var isScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x0022, 0x0022,
- 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0050, 0x0050, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x0061, 0x006b, 0x0073, 0x0079, 0x0083, 0x0083,
- 0x0091, 0x00a1, 0x00a1, 0x00a9, 0x00b1, 0x00b1, 0x00b1, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cf, 0x00cf, 0x00cf, 0x00d7,
- // Entry 40 - 7F
- 0x00d7, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
- 0x00ed, 0x00ed, 0x00ed, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
- 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
- 0x00f5, 0x00f5, 0x00f5, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0108,
- 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x0112, 0x0112, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
- 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
- 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
- // Entry 80 - BF
- 0x0117, 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e,
- 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0127,
- 0x0127, 0x0127, 0x012f, 0x012f, 0x012f, 0x012f, 0x0135, 0x013f,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
- 0x0147, 0x0147, 0x0147, 0x0147, 0x014c, 0x0156, 0x015d, 0x016b,
-} // Size: 360 bytes
-
-var itScriptStr string = "" + // Size: 1562 bytes
- "afakaaraboaramaico imperialearmenoavesticobalinesebamumBassa Vahbatakben" +
- "galesesimboli blissbopomofobrahmibraillebuginesebuhidchakmasimboli abori" +
- "geni canadesi unificaticarianchamcherokeecirthcoptocipriotacirillicociri" +
- "llico antica chiesa slavonicadevanagarideseretstenografia duployanegizia" +
- "no demoticoieratico egizianogeroglifici egizianietiopekutsurigeorgianogl" +
- "agoliticogoticogranthagrecogujaratigurmukhihangulhanhanunoohan semplific" +
- "atohan tradizionaleebraicohiraganageroglifici anatolicipahawn hmongkatan" +
- "aka o hiraganaantico unghereseinduitalico anticojavanesegiapponesejurche" +
- "nkayah likatakanakharoshthikhmerkhojkikannadacoreanoKpellekaithilannalao" +
- "variante fraktur del latinovariante gaelica del latinolatinolepchalimbul" +
- "ineare Alineare Blisulomalycilydimandaicomanicheogeroglifici mayamendeco" +
- "rsivo meroiticomeroiticomalayalammongolomoonmromeetei mayekbirmanoarabo " +
- "settentrionale anticonabateogeba naxin’konushuoghamol chikiorkhonoriyaos" +
- "manyapalmirenopermico anticophags-papahlavi delle iscrizionipahlavi psal" +
- "terpahlavi bookfeniciofonetica di pollardpartico delle iscrizionirejangr" +
- "ongorongorunicosamaritanosaratiarabo meridionale anticosaurashtralinguag" +
- "gio dei segnishavianosharadakhudawadisingalesesora sompengsundanesesylot" +
- "i nagrisirianosiriaco estrangelosiriaco occidentalesiriaco orientaletagb" +
- "anwatakritai letai luetamiltanguttai viettelugutengwartifinaghtagalogtha" +
- "anathailandesetibetanotirhutaugaritavaiialfabeto visivovarang kshitiwole" +
- "aipersiano anticosumero-accadiano cuneiformeyiereditatonotazione matemat" +
- "icasimbolinon scrittocomunescrittura sconosciuta"
-
-var itScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x001c, 0x0022, 0x002a,
- 0x0032, 0x0037, 0x0040, 0x0045, 0x004e, 0x005b, 0x0063, 0x0069,
- 0x0070, 0x0078, 0x007d, 0x0083, 0x00a7, 0x00ad, 0x00b1, 0x00b9,
- 0x00be, 0x00c3, 0x00cb, 0x00d4, 0x00f5, 0x00ff, 0x0106, 0x011a,
- 0x012b, 0x013c, 0x0150, 0x0150, 0x0156, 0x015d, 0x0166, 0x0171,
- 0x0177, 0x017e, 0x0183, 0x018b, 0x0193, 0x0199, 0x019c, 0x01a3,
- 0x01b3, 0x01c3, 0x01c3, 0x01ca, 0x01d2, 0x01e7, 0x01f3, 0x0206,
- 0x0216, 0x021a, 0x0228, 0x0230, 0x023a, 0x0241, 0x0249, 0x0251,
- // Entry 40 - 7F
- 0x025b, 0x0260, 0x0266, 0x026d, 0x0274, 0x027a, 0x0280, 0x0285,
- 0x0288, 0x02a3, 0x02be, 0x02c4, 0x02ca, 0x02cf, 0x02d8, 0x02e1,
- 0x02e5, 0x02e9, 0x02ed, 0x02f1, 0x02f1, 0x02f9, 0x0301, 0x0311,
- 0x0316, 0x0327, 0x0330, 0x0339, 0x0339, 0x0340, 0x0344, 0x0347,
- 0x0353, 0x0353, 0x035a, 0x0375, 0x037c, 0x0385, 0x038b, 0x0390,
- 0x0395, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b8, 0x03b8, 0x03c6,
- 0x03ce, 0x03e6, 0x03f5, 0x0401, 0x0408, 0x041b, 0x0433, 0x0439,
- 0x0443, 0x0449, 0x0453, 0x0459, 0x0471, 0x047b, 0x048f, 0x0497,
- // Entry 80 - BF
- 0x049e, 0x049e, 0x04a7, 0x04b0, 0x04bc, 0x04c5, 0x04d1, 0x04d8,
- 0x04ea, 0x04fd, 0x050e, 0x0516, 0x051b, 0x0521, 0x0528, 0x052d,
- 0x0533, 0x053b, 0x0541, 0x0548, 0x0550, 0x0557, 0x055d, 0x0568,
- 0x0570, 0x0577, 0x057e, 0x0582, 0x0591, 0x059e, 0x05a4, 0x05b3,
- 0x05ce, 0x05d0, 0x05d9, 0x05ed, 0x05f4, 0x05ff, 0x0605, 0x061a,
-} // Size: 360 bytes
-
-var jaScriptStr string = "" + // Size: 3253 bytes
- "アファカ文字カフカス・アルバニア文字アラビア文字帝国アラム文字アルメニア文字アヴェスター文字バリ文字バムン文字バサ文字バタク文字ベンガル文字ブリ" +
- "スシンボル注音字母ブラーフミー文字ブライユ点字ブギス文字ブヒッド文字チャクマ文字統合カナダ先住民音節文字カリア文字チャム文字チェロキー文字キ" +
- "アス文字コプト文字キプロス文字キリル文字古代教会スラブ語キリル文字デーバナーガリー文字デセレット文字デュプロワエ式速記エジプト民衆文字エジプ" +
- "ト神官文字エジプト聖刻文字エルバサン文字エチオピア文字ジョージア文字(フツリ)ジョージア文字グラゴル文字ゴート文字グランタ文字ギリシャ文字グ" +
- "ジャラート文字グルムキー文字ハングル漢字ハヌノオ文字漢字(簡体字)漢字(繁体字)ヘブライ文字ひらがなアナトリア象形文字パハウ・フモン文字仮名" +
- "古代ハンガリー文字インダス文字古イタリア文字ジャワ文字日本語の文字女真文字カヤー文字カタカナカローシュティー文字クメール文字ホジャ文字カンナ" +
- "ダ文字韓国語の文字クペレ文字カイティ文字ラーンナー文字ラオ文字ラテン文字(ドイツ文字)ラテン文字 (ゲール文字)ラテン文字レプチャ文字リンブ" +
- "文字線文字A線文字Bフレイザー文字ロマ文字リキア文字リディア文字マハージャニー文字マンダ文字マニ文字マヤ象形文字メンデ文字メロエ文字草書体メ" +
- "ロエ文字マラヤーラム文字モーディー文字モンゴル文字ムーン文字ムロ文字メイテイ文字ミャンマー文字古代北アラビア文字ナバテア文字ナシ族ゲバ文字ン" +
- "コ文字女書オガム文字オルチキ文字オルホン文字オリヤー文字オスマニア文字パルミラ文字パウ・チン・ハウ文字古ぺルム文字パスパ文字碑文パフラヴィー" +
- "文字詩編用パフラヴィー文字書物用パフラヴィー文字フェニキア文字ポラード音声記号碑文パルティア文字ルジャン文字ロンゴロンゴ文字ルーン文字サマリ" +
- "ア文字サラティ文字古代南アラビア文字サウラーシュトラ文字手話文字ショー文字シャーラダー文字梵字クダワディ文字シンハラ文字ソラング・ソンペング" +
- "文字スンダ文字シロティ・ナグリ文字シリア文字シリア文字(エストランゲロ文字)シリア文字(西方シリア文字)シリア文字(東方シリア文字)タグバン" +
- "ワ文字タークリー文字タイ・レ文字新タイ・ルー文字タミール文字西夏文字タイ・ヴェト文字テルグ文字テングワール文字ティフナグ文字タガログ文字ター" +
- "ナ文字タイ文字チベット文字ティルフータ文字ウガリット文字ヴァイ文字視話法バラン・クシティ文字ウォレアイ文字古代ペルシア文字シュメール=アッカ" +
- "ド語楔形文字イ文字基底文字の種別を継承する結合文字数学記号記号文字非表記共通文字未定義文字"
-
-var jaScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0036, 0x0036, 0x0048, 0x005d, 0x0072, 0x008a,
- 0x0096, 0x00a5, 0x00b1, 0x00c0, 0x00d2, 0x00e7, 0x00f3, 0x010b,
- 0x011d, 0x012c, 0x013e, 0x0150, 0x0174, 0x0183, 0x0192, 0x01a7,
- 0x01b6, 0x01c5, 0x01d7, 0x01e6, 0x020d, 0x022b, 0x0240, 0x025b,
- 0x0273, 0x028b, 0x02a3, 0x02b8, 0x02cd, 0x02ed, 0x0302, 0x0314,
- 0x0323, 0x0335, 0x0347, 0x035f, 0x0374, 0x0380, 0x0386, 0x0398,
- 0x03a9, 0x03ba, 0x03ba, 0x03cc, 0x03d8, 0x03f3, 0x040e, 0x0414,
- 0x042f, 0x0441, 0x0456, 0x0465, 0x0477, 0x0483, 0x0492, 0x049e,
- // Entry 40 - 7F
- 0x04bc, 0x04ce, 0x04dd, 0x04ef, 0x0501, 0x0510, 0x0522, 0x0537,
- 0x0543, 0x0563, 0x0584, 0x0593, 0x05a5, 0x05b4, 0x05be, 0x05c8,
- 0x05dd, 0x05e9, 0x05f8, 0x060a, 0x0625, 0x0634, 0x0640, 0x0652,
- 0x0661, 0x0679, 0x0688, 0x06a0, 0x06b5, 0x06c7, 0x06d6, 0x06e2,
- 0x06f4, 0x06f4, 0x0709, 0x0724, 0x0736, 0x074b, 0x0757, 0x075d,
- 0x076c, 0x077e, 0x0790, 0x07a2, 0x07b7, 0x07c9, 0x07e7, 0x07f9,
- 0x0808, 0x0826, 0x0847, 0x0868, 0x087d, 0x0895, 0x08b0, 0x08c2,
- 0x08da, 0x08e9, 0x08fb, 0x090d, 0x0928, 0x0946, 0x0952, 0x0961,
- // Entry 80 - BF
- 0x0979, 0x097f, 0x0994, 0x09a6, 0x09ca, 0x09d9, 0x09f7, 0x0a06,
- 0x0a32, 0x0a58, 0x0a7e, 0x0a93, 0x0aa8, 0x0aba, 0x0ad2, 0x0ae4,
- 0x0af0, 0x0b08, 0x0b17, 0x0b2f, 0x0b44, 0x0b56, 0x0b65, 0x0b71,
- 0x0b83, 0x0b9b, 0x0bb0, 0x0bbf, 0x0bc8, 0x0be6, 0x0bfb, 0x0c13,
- 0x0c40, 0x0c49, 0x0c79, 0x0c85, 0x0c91, 0x0c9a, 0x0ca6, 0x0cb5,
-} // Size: 360 bytes
-
-var kaScriptStr string = "" + // Size: 4008 bytes
- "აფაკაარაბულიიმპერიული არამეულისომხურიავესტურიბალიურიბამუმიბასა ვაჰიბატაკ" +
- "იბენგალურიბლისსიმბოლოებიბოპომოფობრაჰმიბრაილიბუჰიდიჩაკმაკარიულიჩამიჩერო" +
- "კიკირთიკოპტურიკვიპროსულიკირილიცაძველი სლავური კირილიცადევანაგარიდეზერე" +
- "ტისდუპლოის სტენოგრაფიაეგვიპტური დემოტიკურიეგვიპტური იერატიკულიეგვიპტურ" +
- "ი იეროგლიფურიეთიოპიურიხუცურიქართულიგლაგოლიცაგოთურიგრანთაბერძნულიგუჯარა" +
- "თულიგურმუხიჰანგულიჰანიჰანუნოოგამარტივებული ჰანიტრადიციული ჰანიებრაულიჰ" +
- "ირაგანაანატოლიური იეროგლიფურიფაჰაუ-მონიიაპონური კანაძველი უნგრულიიავურ" +
- "იიაპონურიჯურჯენულიკაიაჰ-ლიკატაკანაქაროშთიქმერულიქოჯკიკანადაკორეულიკპელ" +
- "ეკაითილაოსურიგელური ლათინურილათინურილიმბუA-ხაზოვანიB-ხაზოვანილომალიკიუ" +
- "რილიდიურიმანდეურიმანიქეურიმაიას იეროგლიფებიმენდემეროიტული კურსივიმეროი" +
- "ტულიმალაიალამურიმონღოლურიმრომიანმურიძველი ჩრდილოეთ-არაბულინაბატეურინკო" +
- "ნუშუოღამიოლ-ჩიკიორხონულიორიაოსმანიაპალმირულიძველი პერმულიფაგსპამონუმენ" +
- "ტური ფალაურიფსალმუნური ფალაურიწიგნური ფალაურიფინიკიურიმონუმენტური პართ" +
- "ულირეჯანგირონგორონგორუნულისამარიულისარატიძველი სამხრეთ-არაბულისაურაშტრ" +
- "აჟესტთაშარადაქუდავადისინჰალურისორან-სომპენისუნდანურისილოტი ნაგრისირიულ" +
- "ისირიული ესტრანგელოდასავლეთი სირიულიაღმოსავლეთი სირიულიტაგბანვატაკრიტა" +
- "ი ლეახალი ტაი ლიუტამილურიტანღუტურიტაი-ვიეტიტელუგუტენგვარიტიფინაღითაანა" +
- "ტაიტიბეტურიტირჰუტაუგარითულივაიხილული მეტყველებავარანგ-კშიტივოლეაიძველი" +
- " სპარსულიშუმერულ-აქადური ლურსმნულიგადაღებულიმათემატიკური ნოტაციასიმბოლოე" +
- "ბიუმწერლობოზოგადიუცნობი დამწერლობა"
-
-var kaScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x000f, 0x000f, 0x0024, 0x0058, 0x006d, 0x0085,
- 0x009a, 0x00ac, 0x00c5, 0x00d7, 0x00f2, 0x011c, 0x0134, 0x0146,
- 0x0158, 0x0158, 0x016a, 0x0179, 0x0179, 0x018e, 0x019a, 0x01ac,
- 0x01bb, 0x01d0, 0x01ee, 0x0206, 0x0244, 0x0262, 0x027d, 0x02b4,
- 0x02ee, 0x0328, 0x0365, 0x0365, 0x0380, 0x0392, 0x03a7, 0x03c2,
- 0x03d4, 0x03e6, 0x03fe, 0x041c, 0x0431, 0x0446, 0x0452, 0x0467,
- 0x049b, 0x04c6, 0x04c6, 0x04db, 0x04f3, 0x0533, 0x054f, 0x0574,
- 0x0599, 0x0599, 0x0599, 0x05ab, 0x05c3, 0x05de, 0x05f4, 0x060c,
- // Entry 40 - 7F
- 0x0621, 0x0636, 0x0645, 0x0657, 0x066c, 0x067b, 0x068a, 0x068a,
- 0x069f, 0x069f, 0x06ca, 0x06e2, 0x06e2, 0x06f1, 0x070b, 0x0725,
- 0x0725, 0x0731, 0x0746, 0x075b, 0x075b, 0x0773, 0x078e, 0x07bf,
- 0x07ce, 0x07ff, 0x081a, 0x083e, 0x083e, 0x0859, 0x0859, 0x0862,
- 0x0862, 0x0862, 0x087a, 0x08b8, 0x08d3, 0x08d3, 0x08dc, 0x08e8,
- 0x08f7, 0x090a, 0x0922, 0x092e, 0x0943, 0x095e, 0x095e, 0x0983,
- 0x0995, 0x09cc, 0x0a00, 0x0a2b, 0x0a46, 0x0a46, 0x0a7d, 0x0a92,
- 0x0ab0, 0x0ac2, 0x0add, 0x0aef, 0x0b2a, 0x0b45, 0x0b57, 0x0b57,
- // Entry 80 - BF
- 0x0b69, 0x0b69, 0x0b81, 0x0b9c, 0x0bc1, 0x0bdc, 0x0bfe, 0x0c13,
- 0x0c47, 0x0c78, 0x0caf, 0x0cc7, 0x0cd6, 0x0ce6, 0x0d09, 0x0d21,
- 0x0d3c, 0x0d55, 0x0d67, 0x0d7f, 0x0d97, 0x0d97, 0x0da6, 0x0daf,
- 0x0dc7, 0x0ddc, 0x0df7, 0x0e00, 0x0e31, 0x0e53, 0x0e65, 0x0e8d,
- 0x0ed4, 0x0ed4, 0x0ef2, 0x0f2c, 0x0f4a, 0x0f65, 0x0f77, 0x0fa8,
-} // Size: 360 bytes
-
-var kkScriptStr string = "" + // Size: 918 bytes
- "араб жазуыармян жазуыбенгал жазуыбопомофо жазуБрайль жазуыкирилл жазуыде" +
- "ванагари жазуыэфиоп жазугрузин жазуыгрек жазуыгуджарати жазуыгурмукхи ж" +
- "азуыхангул жазуықытай жазуыжеңілдетілген қытай иероглифыдәстүрлі қытай " +
- "иероглифыиврит жазуыхирагана жазуыжапон жазуыкатакана жазуыкхмер жазуык" +
- "аннада жазуыкорей жазуылаос жазуылатын жазуымалаялам жазуымоңғол жазуым" +
- "ьянма жазуыория жазуысингаль жазуытамиль жазуытелугу жазуытаана жазуыта" +
- "й жазуытибет жазуытаңбаларжазусызжалпыбелгісіз жазу"
-
-var kkScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x003f, 0x003f, 0x0058, 0x0058,
- 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
- 0x006f, 0x006f, 0x006f, 0x0086, 0x0086, 0x00a5, 0x00a5, 0x00a5,
- 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b8, 0x00b8, 0x00cf, 0x00cf,
- 0x00cf, 0x00cf, 0x00e2, 0x00ff, 0x011a, 0x0131, 0x0146, 0x0146,
- 0x017e, 0x01ac, 0x01ac, 0x01c1, 0x01dc, 0x01dc, 0x01dc, 0x01dc,
- 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01f1, 0x01f1, 0x01f1, 0x020c,
- // Entry 40 - 7F
- 0x020c, 0x0221, 0x0221, 0x023a, 0x024f, 0x024f, 0x024f, 0x024f,
- 0x0262, 0x0262, 0x0262, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
- 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
- 0x0277, 0x0277, 0x0277, 0x0292, 0x0292, 0x02a9, 0x02a9, 0x02a9,
- 0x02a9, 0x02a9, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0,
- 0x02c0, 0x02c0, 0x02c0, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
- 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
- 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
- // Entry 80 - BF
- 0x02d3, 0x02d3, 0x02d3, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec,
- 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x0303,
- 0x0303, 0x0303, 0x031a, 0x031a, 0x031a, 0x031a, 0x032f, 0x0340,
- 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355,
- 0x0355, 0x0355, 0x0355, 0x0355, 0x0365, 0x0373, 0x037d, 0x0396,
-} // Size: 360 bytes
-
-var kmScriptStr string = "" + // Size: 957 bytes
- "អារ៉ាប់អាម៉ានីបង់ក្លាដែសបូផូម៉ូហ្វូអក្សរ\u200bសម្រាប់មនុស្ស\u200bពិការ" +
- "\u200bភ្នែកស៊ីរីលីកដាវ៉ាន់ណាការិអេត្យូពីហ្សកហ្ស៊ីក្រិចគូចារ៉ាទីកុមុយឃីហា" +
- "ំងកុលហានអក្សរ\u200bហាន\u200bកាត់អក្សរ\u200bហាន\u200bពេញអ៊ីស្រាអែលហ៊ីរ៉" +
- "ាកាណាជប៉ុនកាតាកាណាខ្មែរកន្នដកូរ៉េឡាវឡាតាំងមលយាល័មម៉ុងហ្គោលីភូមាអូរីយ៉ា" +
- "ស៊ីនហាឡាតាមីលតេលុគុថាណាថៃទីបេនិមិត្តសញ្ញាគ្មានការសរសេរទូទៅអក្សរមិនស្គា" +
- "ល់"
-
-var kmScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x002a, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x0048, 0x0048, 0x0069, 0x0069,
- 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
- 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x0105, 0x0105, 0x0105,
- 0x0105, 0x0105, 0x0105, 0x0105, 0x011d, 0x011d, 0x0138, 0x0138,
- 0x0138, 0x0138, 0x0147, 0x0162, 0x0177, 0x018c, 0x0195, 0x0195,
- 0x01bf, 0x01e6, 0x01e6, 0x0204, 0x0222, 0x0222, 0x0222, 0x0222,
- 0x0222, 0x0222, 0x0222, 0x0222, 0x0231, 0x0231, 0x0231, 0x0249,
- // Entry 40 - 7F
- 0x0249, 0x0258, 0x0258, 0x0267, 0x0276, 0x0276, 0x0276, 0x0276,
- 0x027f, 0x027f, 0x027f, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291,
- 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291,
- 0x0291, 0x0291, 0x0291, 0x02a6, 0x02a6, 0x02c4, 0x02c4, 0x02c4,
- 0x02c4, 0x02c4, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0,
- 0x02d0, 0x02d0, 0x02d0, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
- 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
- 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
- // Entry 80 - BF
- 0x02e5, 0x02e5, 0x02e5, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd,
- 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x030c,
- 0x030c, 0x030c, 0x031e, 0x031e, 0x031e, 0x031e, 0x032a, 0x0330,
- 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c,
- 0x033c, 0x033c, 0x033c, 0x033c, 0x0360, 0x0387, 0x0393, 0x03bd,
-} // Size: 360 bytes
-
-var knScriptStr string = "" + // Size: 3788 bytes
- "ಅರೇಬಿಕ್ಇಂಪೀರಿಯಲ್ ಅರೆಮಾಯಿಕ್ಅರ್ಮೇನಿಯನ್ಅವೆಸ್ತಾನ್ಬಾಲಿನೀಸ್ಬಾಟಕ್ಬೆಂಗಾಲಿಬ್ಲಿಸ್" +
- "\u200cಸಿಂಬಲ್ಸ್ಬೋಪೊಮೋಫೋಬ್ರಾಹ್ಮಿಬ್ರೈಲ್ಬಗಿನೀಸ್ಬುಹಿದ್ಕಾಕಂಯುನಿಟೆಡ್ ಕೆನೆಡಿಯನ್ " +
- "ಅಬೊರಿಜಿನಲ್ ಸಿಲ್ಯಾಬಿಕ್ಸ್ಕರೇನ್ಚಾಮ್ಚೆರೋಕೀಸಿರ್ಥ್ಕಾಪ್ಟಿಕ್ಸಿಪ್ರಿಯಾಟ್ಸಿರಿಲಿಕ್" +
- "ಪ್ರಾಚೀನ ಚರ್ಚ್ ಸ್ಲೋವಾನಿಕ್ ಸಿರಿಲಿಕ್ದೇವನಾಗರಿಡಸರ್ಟ್ಈಜಿಪ್ಟಿಯನ್ ಡೆಮೋಟಿಕ್ಈಜಿಪ" +
- "್ಟಿಯನ್ ಹಯಾರಿಟಿಕ್ಈಜಿಪ್ಟಿಯನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಇಥಿಯೋಪಿಕ್ಜಾರ್ಜಿಯನ್ ಖುಸ್ತುರಿಜಾರ್" +
- "ಜಿಯನ್ಗ್ಲಾಗೋಲಿಟಿಕ್ಗೋತಿಕ್ಗ್ರೀಕ್ಗುಜರಾತಿಗುರ್ಮುಖಿಹ್ಯಾಂಗುಲ್ಹಾನ್ಹನೂನೂಸರಳೀಕೃತ " +
- "ಹಾನ್ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್ಹೀಬ್ರೂಹಿರಗಾನಾಪಹವ್ ಹ್ಮೋಂಗ್ಕಟಕಾನಾ ಅಥವಾ ಹಿರಗಾನಾಪ್ರಾಚೀ" +
- "ನ ಹಂಗೇರಿಯನ್ಸಿಂಧೂಪ್ರಾಚೀನ್ ಇಟಾಲಿಕ್ಜಾವನೀಸ್ಜಾಪನೀಸ್ಕೆಯಾ ಲಿಕಟಕಾನಾಖರೋಶ್ತಿಖಮೇಕ" +
- "ನ್ನಡಕೊರಿಯನ್ಕೈಥಿಲಾನಾಲಾವೋಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್ಲ್ಯಾಟಿನ್ಲೆಪ್ಚಾ" +
- "ಲಿಂಬುಲೀನಯರ್ ಎಲೀನಯರ್ ಬಿಲೈಸಿಯನ್ಲಿಡಿಯನ್ಮಂಡೇಯನ್ಮನಿಚೈಯನ್ಮಯಾನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಮ" +
- "ೆರೊಯಿಟಿಕ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮೂನ್ಮೈತಿ ಮಯೆಕ್ಮ್ಯಾನ್ಮಾರ್ಎನ್\u200dಕೋಓಘಮ್ಓಲ್ ಚಿಕ" +
- "ಿಓರ್ಖೋನ್ಒರಿಯಾಓಸ್ಮಾನ್ಯಾಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್ಫಾಗ್ಸ್-ಪಾಇನ್ಸ್\u200cಕ್ರಿಪ್ಶನಲ್ ಪ" +
- "ಾಹ್ಲವಿಸಾಲ್ಟರ್ ಪಾಹ್ಲವಿಬುಕ್ ಪಾಹ್ಲವಿಫೀನಿಶಿಯನ್ಪೊಲ್ಲಾರ್ಡ್ ಫೊನೆಟಿಕ್ಇನ್ಸ್" +
- "\u200cಕ್ರಿಪ್ಶನಲ್ ಪಾರ್ಥಿಯನ್ರೆಜಾಂಗ್ರೋಂಗೋರೋಂಗೋರೂನಿಕ್ಸಮಾರಿಟನ್ಸರಾಟಿಸೌರಾಷ್ಟ್ರಸ" +
- "ೈನ್\u200cರೈಟಿಂಗ್ಶಾವಿಯಾನ್ಸಿಂಹಳಸುಂಡಾನೀಸ್ಸೈಲೋಟಿ ನಗ್ರಿಸಿರಿಯಾಕ್ಎಸ್ಟ್ರಾಂಜಿಲೋ" +
- " ಸಿರಿಯಾಕ್ಪಶ್ಚಿಮ ಸಿರಿಯಾಕ್ಪೂರ್ವ ಸಿರಿಯಾಕ್ಟಾಗ್ಬಾನವಾಥಾಯ್ ಲಿನ್ಯೂ ಥಾಯ್ ಲುಇತಮಿಳು" +
- "ಥಾಯ್ ವಿಯೆಟ್ತೆಲುಗುತೆಂಗ್\u200cವಾರ್ಟಿಫಿನಾಘ್ಟ್ಯಾಗಲೋಗ್ಥಾನಾಥಾಯ್ಟಿಬೇಟನ್ಉಗಾರಿಟ" +
- "ಿಕ್ವಾಯ್ವಿಸಿಬಲ್ ಸ್ಪೀಚ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್ಮ್ಯಿಇ" +
- "ನ್\u200dಹೆರಿಟೆಡ್ಗಣೀತ ಸಂಕೇತಲಿಪಿಸಂಕೇತಗಳುಅಲಿಖಿತಸಾಮಾನ್ಯಗೊತ್ತಿಲ್ಲದ ಲಿಪಿ"
-
-var knScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x004c, 0x006a, 0x0085,
- 0x009d, 0x009d, 0x009d, 0x00ac, 0x00c1, 0x00ee, 0x0106, 0x011e,
- 0x0130, 0x0145, 0x0157, 0x0163, 0x01db, 0x01ea, 0x01f6, 0x0208,
- 0x021a, 0x0232, 0x0250, 0x0268, 0x02c5, 0x02dd, 0x02ef, 0x02ef,
- 0x0326, 0x0360, 0x03a3, 0x03a3, 0x03be, 0x03f2, 0x040d, 0x0431,
- 0x0443, 0x0443, 0x0455, 0x046a, 0x0482, 0x049d, 0x04a9, 0x04b8,
- 0x04da, 0x0508, 0x0508, 0x051a, 0x052f, 0x052f, 0x0551, 0x0586,
- 0x05b7, 0x05c6, 0x05f4, 0x0609, 0x061e, 0x061e, 0x0631, 0x0643,
- // Entry 40 - 7F
- 0x0658, 0x0661, 0x0661, 0x0670, 0x0685, 0x0685, 0x0691, 0x069d,
- 0x06a9, 0x06dd, 0x0708, 0x0720, 0x0732, 0x0741, 0x0757, 0x0770,
- 0x0770, 0x0770, 0x0785, 0x079a, 0x079a, 0x07af, 0x07c7, 0x07fb,
- 0x07fb, 0x07fb, 0x0819, 0x082b, 0x082b, 0x0846, 0x0852, 0x0852,
- 0x086e, 0x086e, 0x088c, 0x088c, 0x088c, 0x088c, 0x089e, 0x089e,
- 0x08aa, 0x08c0, 0x08d5, 0x08e4, 0x08ff, 0x08ff, 0x08ff, 0x092d,
- 0x0946, 0x098c, 0x09b7, 0x09d9, 0x09f4, 0x0a2b, 0x0a77, 0x0a8c,
- 0x0aaa, 0x0abc, 0x0ad4, 0x0ae3, 0x0ae3, 0x0afe, 0x0b22, 0x0b3a,
- // Entry 80 - BF
- 0x0b3a, 0x0b3a, 0x0b3a, 0x0b49, 0x0b49, 0x0b64, 0x0b86, 0x0b9e,
- 0x0bdb, 0x0c06, 0x0c2e, 0x0c49, 0x0c49, 0x0c5c, 0x0c7f, 0x0c8e,
- 0x0c8e, 0x0cad, 0x0cbf, 0x0cdd, 0x0cf5, 0x0d10, 0x0d1c, 0x0d28,
- 0x0d3d, 0x0d3d, 0x0d58, 0x0d64, 0x0d8c, 0x0d8c, 0x0d8c, 0x0dba,
- 0x0e10, 0x0e16, 0x0e3a, 0x0e62, 0x0e7a, 0x0e8c, 0x0ea1, 0x0ecc,
-} // Size: 360 bytes
-
-var koScriptStr string = "" + // Size: 2788 bytes
- "아파카 문자코카시안 알바니아 문자아랍 문자아랍제국 문자아르메니아 문자아베스타 문자발리 문자바뭄 문자바사바흐 문자바타크 문자벵골 문" +
- "자블리스기호 문자주음부호브라미브라유 점자부기 문자부히드 문자차크마 문자통합 캐나다 토착어카리 문자칸 고어체로키 문자키르쓰콥트 " +
- "문자키프로스 문자키릴 문자고대교회슬라브어 키릴문자데바나가리 문자디저렛 문자듀플로이안 문자고대 이집트 민중문자고대 이집트 신관문" +
- "자고대 이집트 신성문자엘바산 문자에티오피아 문자그루지야 쿠츠리 문자그루지야 문자글라골 문자고트 문자그란타 문자그리스 문자구쟈라" +
- "티 문자구르무키 문자한글한자하누누 문자한자 간체한자 번체히브리 문자히라가나아나톨리아 상형문자파하우 몽 문자가나고대 헝가리 문자" +
- "인더스 문자고대 이탈리아 문자자바 문자일본 문자줄첸 문자카야 리 문자가타카나카로슈티 문자크메르 문자코즈키 문자칸나다 문자한국어" +
- "크펠레 문자카이시 문자란나 문자라오 문자독일식 로마자아일랜드식 로마자로마자렙차 문자림부 문자선형 문자(A)선형 문자(B)프레이" +
- "저 문자로마 문자리키아 문자리디아 문자마하자니 문자만다이아 문자마니교 문자마야 상형 문자멘데 문자메로에 필기체메로에 문자말라얄" +
- "람 문자몽골 문자문 문자므로 문자메이테이 마옉 문자미얀마 문자옛 북부 아라비아 문자나바테아 문자나시 게바 문자응코 문자누슈 문" +
- "자오검 문자올 치키 문자오르혼어오리야 문자오스마니아 문자팔미라 문자고대 페름 문자파스파 문자명문 팔라비 문자솔터 팔라비 문자북" +
- " 팔라비 문자페니키아 문자폴라드 표음 문자명문 파라티아 문자레장 문자롱고롱고룬 문자사마리아 문자사라티옛 남부 아라비아 문자사우라슈" +
- "트라 문자수화 문자샤비안 문자사라다 문자실담자쿠다와디 문자신할라 문자소라 솜펭 문자순다 문자실헤티 나가리시리아 문자에스트랑겔로" +
- "식 시리아 문자서부 시리아 문자동부 시리아 문자타그반와 문자타크리 문자타이 레 문자신 타이 루에타밀 문자탕구트 문자태국 베트남" +
- " 문자텔루구 문자텡과르 문자티피나그 문자타갈로그 문자타나 문자타이 문자티베트 문자티르후타 문자우가리트 문자바이 문자시화법바랑 크시" +
- "티 문자울레아이고대 페르시아 문자수메르-아카드어 설형문자이 문자구전 문자수학 기호기호구전일반 문자기록되지 않은 문자(구전)"
-
-var koScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0030, 0x0030, 0x003d, 0x0050, 0x0066, 0x0079,
- 0x0086, 0x0093, 0x00a6, 0x00b6, 0x00c3, 0x00d9, 0x00e5, 0x00ee,
- 0x00fe, 0x010b, 0x011b, 0x012b, 0x0145, 0x0152, 0x015c, 0x016c,
- 0x0175, 0x0182, 0x0195, 0x01a2, 0x01c7, 0x01dd, 0x01ed, 0x0203,
- 0x0220, 0x023d, 0x025a, 0x026a, 0x0280, 0x029d, 0x02b0, 0x02c0,
- 0x02cd, 0x02dd, 0x02ed, 0x0300, 0x0313, 0x0319, 0x031f, 0x032f,
- 0x033c, 0x0349, 0x0349, 0x0359, 0x0365, 0x0381, 0x0395, 0x039b,
- 0x03b2, 0x03c2, 0x03dc, 0x03e9, 0x03f6, 0x0403, 0x0414, 0x0420,
- // Entry 40 - 7F
- 0x0433, 0x0443, 0x0453, 0x0463, 0x046c, 0x047c, 0x048c, 0x0499,
- 0x04a6, 0x04b9, 0x04d2, 0x04db, 0x04e8, 0x04f5, 0x0505, 0x0515,
- 0x0528, 0x0535, 0x0545, 0x0555, 0x0568, 0x057b, 0x058b, 0x059f,
- 0x05ac, 0x05bf, 0x05cf, 0x05e2, 0x05e2, 0x05ef, 0x05f9, 0x0606,
- 0x0620, 0x0620, 0x0630, 0x064e, 0x0661, 0x0675, 0x0682, 0x068f,
- 0x069c, 0x06ad, 0x06b9, 0x06c9, 0x06df, 0x06ef, 0x06ef, 0x0703,
- 0x0713, 0x072a, 0x0741, 0x0755, 0x0768, 0x077f, 0x0799, 0x07a6,
- 0x07b2, 0x07bc, 0x07cf, 0x07d8, 0x07f6, 0x080f, 0x081c, 0x082c,
- // Entry 80 - BF
- 0x083c, 0x0845, 0x0858, 0x0868, 0x087c, 0x0889, 0x089c, 0x08ac,
- 0x08d2, 0x08e9, 0x0900, 0x0913, 0x0923, 0x0934, 0x0945, 0x0952,
- 0x0962, 0x0979, 0x0989, 0x0999, 0x09ac, 0x09bf, 0x09cc, 0x09d9,
- 0x09e9, 0x09fc, 0x0a0f, 0x0a1c, 0x0a25, 0x0a3c, 0x0a48, 0x0a62,
- 0x0a85, 0x0a8f, 0x0a9c, 0x0aa9, 0x0aaf, 0x0ab5, 0x0ac2, 0x0ae4,
-} // Size: 360 bytes
-
-var kyScriptStr string = "" + // Size: 491 bytes
- "АрабАрмянБенгалБопомофоБрейлКириллДеванагариЭфиопГрузинГрекГужаратиГурму" +
- "хиХангулХаньЖөн. КытайСалт. КытайИвритХираганаЖапанКатаканаКмерКаннадаК" +
- "орейЛаоЛатынМалайаламМоңголМйанмарОрийаСингалаТамилТелуТаанаТайТибетБел" +
- "гилерЖазылбаганЖалпыБелгисиз жазуу"
-
-var kyScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0062, 0x0062, 0x006e, 0x006e,
- 0x006e, 0x006e, 0x0076, 0x0086, 0x0094, 0x00a0, 0x00a8, 0x00a8,
- 0x00ba, 0x00ce, 0x00ce, 0x00d8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
- 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f2, 0x00f2, 0x00f2, 0x0102,
- // Entry 40 - 7F
- 0x0102, 0x010a, 0x010a, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122,
- 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
- 0x0132, 0x0132, 0x0132, 0x0144, 0x0144, 0x0150, 0x0150, 0x0150,
- 0x0150, 0x0150, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
- 0x015e, 0x015e, 0x015e, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
- // Entry 80 - BF
- 0x0168, 0x0168, 0x0168, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
- 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0180,
- 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x0198,
- 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
- 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01b2, 0x01c6, 0x01d0, 0x01eb,
-} // Size: 360 bytes
-
-var loScriptStr string = "" + // Size: 3892 bytes
- "ອັບຟາກາອາລັບອິມພີຮຽນ ອາເມອິກອາເມນຽນອະເວສຕະບາລີບາມູມບັດຊາບາຕັກເບັງກາລິບລິ" +
- "ກຊິມໂບລສຈູ້ອິນພຮາຫມີເບຣວບູກິສບູຮິດຊາກມາສັນຍາລັກຊົນເຜົ່າພື້ນເມືອງແຄນນາດ" +
- "າຄາເຮຍຈາມເຊໂຮກີເຊີຮຄອບຕິກໄຊເປຍຊີຣິວລິກເຊຮັດສລາ ໂວນິກຊີຮິກລິກໂບຮານດີວານ" +
- "າກາຣີເດເຊເຮຊົວເລດັບໂລຍັນດີໂມຕິກອີຍິບເຮຍຮາຕິກອີຍິບເຮຍໂຮກລິຟອີຍິບອີທິໂອປ" +
- "ິກຄອດຊູຮີຈໍເຈຍຈໍຈຽນກລາໂກລິຕິກໂກຮິກເຄນທາກະເລັກຈູຈາຣາທີກົວມູຄີຮັນກູນຮານຮ" +
- "ານູໂນໂອຈີນ (ແບບງ່າຍ)ຈີນ (ດັ້ງເດີມ)ຮີບຣິວຣິຣະງະນະອັກລຮະອານາໂຕເລຍປາເຮາເມ" +
- "ັງຄະຕະກະນະຫຮືຮີຮະງະນະຮັງກາຮີໂບຮານອິນດັດອີຕາລີໂບຮານຈາວາຍີ່ປຸ່ນຈູຮເຊັນຄຍ" +
- "າຄະຕະກະນະຂໍໂຮກສີຂະໝຽນຄໍຈຄີຄັນນາດາເກົາຫຼີເປລເລກາຍຕິລ້ານນາລາວລາຕິນ-ຟຮັ່ງ" +
- "ເຕຣລາຕິນ-ແກລິກລາຕິນເລຊາລິມບູລີເນຍລີເນຍຣເຟຣເຊຮໂລມາໄລເຊຍລີເດຍແມນດຽນມານິແ" +
- "ຊນມາຍາໄຮໂຮກລິບເມນເດເຄເລີຊີເມໂຮອິຕິກເມໂຮຕິກມາລາຍັນມົງໂກນມູນເມໂຮເມເທມາເຍ" +
- "ກມຽນມາອາຮະເບຍເໜືອໂບຮານນາບາທາທຽນກີບາ-ນາຊີເອັນໂກນຸຊຸອອກຄອນໂອຊິກິອອກສມັນຍ" +
- "າໂອຣິຢາພາລໄມຮິນເພີມີໂບຮານຟາກສ-ປາປະຫລາວີອິນສຄິບຊັນແນລປະຫລາວີຊອດເຕຮ໌ປະຫລ" +
- "າວີບຸກຟີນິເຊຍສັດຕະສາດພໍຮລາພາຮ໌ເທຍອິນສຄຮິປຊັນແນລເຮຈັງຮອງໂກຮອງໂກຮູນິກຊາມ" +
- "າເລຍຊາຮາຕິອາລະເບຍໃຕ້ໂບຮານໂສຮັດຕຣະໄຊນ໌ໄຮຕີ້ງຊອວຽນຊາຮາດາດຸດາວາດີສິນຫາລາໂ" +
- "ສຮາສົມເປັງຊຸນດາຊີໂລຕິນາກຣີຊີເຮຍຊີເຮຍເອສທຮານຈີໂລຊີເຮຍຕາເວັນຕົກຊີເຮຍຕາເວ" +
- "ັນອອກຕັກບັນວາທາຄຮີໄທເລໄທລື້ໃໝ່ທາມິລຕັນກັນໄທຫວຽດເຕລູກູເທງກວາຮທີຟີນາກຕາກ" +
- "າລອກທານາໄທທິເບທັນເທຮຸທາຍູກາຮິດໄວຄຳເວົ້າທີ່ເບີ່ງເຫັນໄດ້ວາຮັງກສິຕິໂອລີເອ" +
- "ເປຮເຊຍໂບຮານອັກສອນຮູບປລີ່ມສຸເມເຮຍ-ອັດຄາເດຍຍີອິນເຮຮິດເຄື່ອງໝາຍທາງຄະນິດສາ" +
- "ດສັນຍາລັກບໍ່ມີພາສາຂຽນສາມັນການຂຽນທີ່ບໍ່ຮູ້ຈັກ"
-
-var loScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x0015, 0x0015, 0x0024, 0x0052, 0x0067, 0x007c,
- 0x0088, 0x0097, 0x00a6, 0x00b5, 0x00cd, 0x00ee, 0x0100, 0x0112,
- 0x011e, 0x012d, 0x013c, 0x014b, 0x01ab, 0x01ba, 0x01c3, 0x01d5,
- 0x01e1, 0x01f3, 0x0202, 0x021a, 0x0269, 0x0287, 0x0299, 0x02c0,
- 0x02e4, 0x030b, 0x0335, 0x0335, 0x0350, 0x0374, 0x0383, 0x03a1,
- 0x03b0, 0x03bf, 0x03d1, 0x03e9, 0x03fe, 0x0410, 0x0419, 0x0431,
- 0x0452, 0x0476, 0x0476, 0x0488, 0x04a0, 0x04cd, 0x04e8, 0x0521,
- 0x0545, 0x0557, 0x0578, 0x0584, 0x0599, 0x05ae, 0x05b7, 0x05cf,
- // Entry 40 - 7F
- 0x05e4, 0x05f3, 0x0602, 0x0617, 0x062c, 0x063b, 0x064a, 0x065c,
- 0x0665, 0x068d, 0x06ac, 0x06bb, 0x06c7, 0x06d6, 0x06e5, 0x06f7,
- 0x0709, 0x0715, 0x0724, 0x0733, 0x0733, 0x0745, 0x075a, 0x077e,
- 0x078d, 0x07bd, 0x07d2, 0x07e7, 0x07e7, 0x07f9, 0x0802, 0x080e,
- 0x0829, 0x0829, 0x0838, 0x0868, 0x0883, 0x089c, 0x08ae, 0x08ba,
- 0x08cc, 0x08de, 0x08f9, 0x090b, 0x090b, 0x0923, 0x0923, 0x0941,
- 0x0954, 0x0990, 0x09ba, 0x09d8, 0x09ed, 0x0a14, 0x0a53, 0x0a62,
- 0x0a80, 0x0a8f, 0x0aa4, 0x0ab6, 0x0ae3, 0x0afb, 0x0b19, 0x0b28,
- // Entry 80 - BF
- 0x0b3a, 0x0b3a, 0x0b52, 0x0b67, 0x0b88, 0x0b97, 0x0bb8, 0x0bc7,
- 0x0bf7, 0x0c21, 0x0c4b, 0x0c63, 0x0c72, 0x0c7e, 0x0c96, 0x0ca5,
- 0x0cb7, 0x0cc9, 0x0cdb, 0x0cf0, 0x0d05, 0x0d1a, 0x0d26, 0x0d2c,
- 0x0d41, 0x0d53, 0x0d68, 0x0d6e, 0x0db0, 0x0dce, 0x0de0, 0x0e01,
- 0x0e59, 0x0e5f, 0x0e77, 0x0eb3, 0x0ecb, 0x0eef, 0x0efe, 0x0f34,
-} // Size: 360 bytes
-
-var ltScriptStr string = "" + // Size: 1634 bytes
- "AfakaKaukazo Albanijosarabųimperinė aramaikųarmėnųavestanoBaliečiųBamumB" +
- "assa Vahbatakbengalų„Bliss“ simboliaibopomofobrahmibrailiobuginezųbuhidč" +
- "akmasuvienodinti Kanados aborigenų silabiniaikariųčamčerokiųkirtkoptųkip" +
- "rokirilicasenoji bažnytinė slavų kirilicadevanagarideseretasDuplojė sten" +
- "ografijaEgipto liaudiesEgipto žyniųegipto hieroglifaiElbasanoetiopųgruzi" +
- "nų kutsurigruzinųglagolitikgotųGrantagraikųgudžaratųgurmukihangulhanhanu" +
- "nosupaprastinti hantradiciniai hanhebrajųhiraganaAnatolijaus hieroglifai" +
- "pahav hmongkatakana / hiraganasenasis vengrųindussenasis italųjaviečiųja" +
- "ponųJurchenkajah likatakanakaroštikhmerųKhojkikanadųkorėjiečiųKpelųkaith" +
- "ilanalaosiečiųfraktur lotynųgėlų lotynųlotynųlepčalimbulinijiniai Alinij" +
- "iniai BFraserLomalicianlidianMahadžanimandėjųmaničųmalų hieroglifaiMende" +
- "Merojitų rankraštinismeroitikmalajaliųModimongolųmūnMromeitei majekbirmi" +
- "ečiųSenasis šiaurės arabųNabatėjųNaxi GebaenkoNüshuoghamol čikiorkonorij" +
- "ųosmanųPalmirosPau Cin Hausenieji permėspagsa parašytiniai pahlavipselt" +
- "er pahlavibuk pahvalifoenikųpolard fonetinėrašytiniai partųrejangrongoro" +
- "ngorunųsamariečiųsaratisenoji pietų Arabijossauraštraženklų raštasšaviųŠ" +
- "aradosSiddhamKhudawadisinhalųSora Sompengsundųsyloti nagrisirųestrangelo" +
- " siriečiųvakarų sirųrytų sirųtagbanvaTakritai lenaujasis Tailando luetam" +
- "ilųTanguttai vettelugųtengvartifinagtagalogųhanatajųtibetiečiųTirhutauga" +
- "ritikvaimatoma kalbaVarang KshitiWoleaisenieji persųŠumero Akado dantira" +
- "štisjipaveldėtasmatematiniai simboliaisimboliųneparašytabendrinežinomi " +
- "rašmenys"
-
-var ltScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0016, 0x0016, 0x001c, 0x002f, 0x0037, 0x003f,
- 0x0049, 0x004e, 0x0057, 0x005c, 0x0064, 0x0079, 0x0081, 0x0087,
- 0x008e, 0x0097, 0x009c, 0x00a2, 0x00cc, 0x00d2, 0x00d6, 0x00df,
- 0x00e3, 0x00e9, 0x00ee, 0x00f6, 0x0118, 0x0122, 0x012b, 0x0140,
- 0x014f, 0x015d, 0x016f, 0x0177, 0x017e, 0x018e, 0x0196, 0x01a0,
- 0x01a5, 0x01ab, 0x01b2, 0x01bd, 0x01c4, 0x01ca, 0x01cd, 0x01d3,
- 0x01e4, 0x01f3, 0x01f3, 0x01fb, 0x0203, 0x021a, 0x0225, 0x0238,
- 0x0247, 0x024c, 0x025a, 0x0264, 0x026b, 0x0272, 0x027a, 0x0282,
- // Entry 40 - 7F
- 0x028a, 0x0291, 0x0297, 0x029e, 0x02ab, 0x02b1, 0x02b7, 0x02bb,
- 0x02c6, 0x02d5, 0x02e3, 0x02ea, 0x02f0, 0x02f5, 0x0301, 0x030d,
- 0x0313, 0x0317, 0x031d, 0x0323, 0x032d, 0x0336, 0x033e, 0x034f,
- 0x0354, 0x036b, 0x0373, 0x037d, 0x0381, 0x0389, 0x038d, 0x0390,
- 0x039c, 0x039c, 0x03a7, 0x03bf, 0x03c9, 0x03d2, 0x03d6, 0x03dc,
- 0x03e1, 0x03e9, 0x03ee, 0x03f4, 0x03fb, 0x0403, 0x040e, 0x041d,
- 0x0425, 0x0438, 0x0447, 0x0452, 0x045a, 0x046a, 0x047c, 0x0482,
- 0x048c, 0x0491, 0x049d, 0x04a3, 0x04b9, 0x04c3, 0x04d3, 0x04da,
- // Entry 80 - BF
- 0x04e2, 0x04e9, 0x04f2, 0x04fa, 0x0506, 0x050c, 0x0518, 0x051d,
- 0x0532, 0x053f, 0x054a, 0x0552, 0x0557, 0x055d, 0x0572, 0x0579,
- 0x057f, 0x0586, 0x058d, 0x0594, 0x059b, 0x05a4, 0x05a8, 0x05ad,
- 0x05b9, 0x05c0, 0x05c8, 0x05cb, 0x05d7, 0x05e4, 0x05ea, 0x05f8,
- 0x0612, 0x0614, 0x061f, 0x0635, 0x063e, 0x0649, 0x064f, 0x0662,
-} // Size: 360 bytes
-
-var lvScriptStr string = "" + // Size: 761 bytes
- "arābuaramiešuarmēņubaliešubengāļubopomofobrahmiBraila rakstsirokēzukoptu" +
- "kirilicasenslāvudevānagāridemotiskais rakstshierātiskais rakstsēģiptiešu" +
- " hieroglifietiopiešugruzīnugotugrieķugudžaratupandžabuhangilaķīniešuhanu" +
- " vienkāršotāhanu tradicionālāivritshiraganakatakana vai hiraganasenungār" +
- "uvecitāļujaviešujapāņukatakanakhmerukannarukorejiešulaosiešulatīņulineār" +
- "ā Alineārā BlīdiešumaijumalajalumongoļuMūna rakstsbirmiešuogamiskais ra" +
- "kstsorijuosmaņu turkufeniķiešurongorongorūnu rakstssamariešusingāļuzundu" +
- "sīriešurietumsīriešuaustrumsīriešutamilutelugutagalutaanatajutibetiešuse" +
- "nperiešušumeru-akadiešu ķīļrakstsjimantotāmatemātiskais pierakstssimboli" +
- "bez rakstībasvispārējānezināma rakstība"
-
-var lvScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000f, 0x0017, 0x0017,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x0028, 0x0028, 0x0030, 0x0036,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004b,
- 0x004b, 0x0050, 0x0050, 0x0058, 0x0061, 0x006d, 0x006d, 0x006d,
- 0x007f, 0x0093, 0x00aa, 0x00aa, 0x00b4, 0x00b4, 0x00bc, 0x00bc,
- 0x00c0, 0x00c0, 0x00c7, 0x00d1, 0x00da, 0x00e1, 0x00eb, 0x00eb,
- 0x00fe, 0x0111, 0x0111, 0x0117, 0x011f, 0x011f, 0x011f, 0x0134,
- 0x013e, 0x013e, 0x0148, 0x0150, 0x0158, 0x0158, 0x0158, 0x0160,
- // Entry 40 - 7F
- 0x0160, 0x0166, 0x0166, 0x016d, 0x0177, 0x0177, 0x0177, 0x0177,
- 0x0180, 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0193, 0x019e,
- 0x019e, 0x019e, 0x019e, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ac,
- 0x01ac, 0x01ac, 0x01ac, 0x01b4, 0x01b4, 0x01bc, 0x01c8, 0x01c8,
- 0x01c8, 0x01c8, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1,
- 0x01e2, 0x01e2, 0x01e2, 0x01e7, 0x01f4, 0x01f4, 0x01f4, 0x01f4,
- 0x01f4, 0x01f4, 0x01f4, 0x01f4, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
- 0x0209, 0x0215, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f,
- // Entry 80 - BF
- 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x022d, 0x022d, 0x0236,
- 0x0236, 0x0245, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x025b,
- 0x025b, 0x025b, 0x0261, 0x0261, 0x0261, 0x0267, 0x026c, 0x0270,
- 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0285,
- 0x02a3, 0x02a5, 0x02ad, 0x02c5, 0x02cc, 0x02da, 0x02e6, 0x02f9,
-} // Size: 360 bytes
-
-var mkScriptStr string = "" + // Size: 3505 bytes
- "афакакавкаскоалбанскиарапско писмоцарскоарамејскиерменско писмоавестанск" +
- "обалискобамумскобасабатачкобенгалско писмоблиссимболибопомофобрамибрајо" +
- "во писмобугискобухидскочакманскоканадско слоговнокарискочамскочерокиско" +
- "кирткоптскокипарскокирилско писмостарословенска кирилицадеванагаридезер" +
- "етскоДиплојеево стенографскоегипетско демотскоегипетско хиератскоегипет" +
- "ски хиероглифиелбасанскоетиопско писмогрузиски хуцуригрузиско писмоглаг" +
- "олицаготскогрантагрчко писмогуџаратигурмукихангулханско писмохануноовск" +
- "опоедноставено ханско писмотрадиционално ханскохебрејско писмохираганаа" +
- "надолски хиероглифипахауанско хмоншкојапонско слоговностароунгарскохара" +
- "пскостароиталскојаванскојапонско писмоџурченскокаја ликатаканакароштикм" +
- "ерско писмохоџкиканнадакорејско писмокпелскокајтилансколаошко писмофрак" +
- "турна латиницагелска латиницалатинично писмолепчансколимбулинеарно Алин" +
- "еарно БФрејзероволомсколикисколидискомахаџанимандејскоманихејскомајанск" +
- "и хиероглифимендскомероитско ракописномероитскомалајаламско писмомодимо" +
- "нголско писмоМуновомромејтејскомјанмарско писмостаросеверноарапсконабат" +
- "ејсконасиска гебанконишуогамол чикистаротурскооријанско писмосомалископ" +
- "алмирскоПаучинхауовостаропермскопагспанатписно средноперсископсалтирско" +
- " средноперсискокнижевно староперсискофеникискоПолардовонатписно партиско" +
- "реџаншкоронгоронгорунскосамарјанскосаратистаројужноарапскосаураштранско" +
- "знаковно пишувањеШоовошарадасидамкудабадисинхалско писмосоранг сомпенгс" +
- "унданскосилхетско нагарисирискоестрангелско сирискозападносирискоисточн" +
- "осирискотагбанванскотакритај леново тај луетамилско писмотангутскотај в" +
- "јеттелугутенгвартифинагтагалошкотанатајландско писмотибетско писмотирху" +
- "таугаритсковајвидлив говорваранг кшитиволеајскостароперсискосумероакадс" +
- "ко клинестојинаследеноматематичка нотацијасимболибез писмоопштонепознат" +
- "о писмо"
-
-var mkScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x002a, 0x002a, 0x0043, 0x0061, 0x007c, 0x0090,
- 0x009e, 0x00ae, 0x00b6, 0x00c4, 0x00e1, 0x00f7, 0x0107, 0x0111,
- 0x012a, 0x0138, 0x0148, 0x015a, 0x017b, 0x0189, 0x0195, 0x01a7,
- 0x01af, 0x01bd, 0x01cd, 0x01e8, 0x0215, 0x0229, 0x023d, 0x026a,
- 0x028d, 0x02b2, 0x02d9, 0x02ed, 0x0308, 0x0325, 0x0340, 0x0352,
- 0x035e, 0x036a, 0x037f, 0x038f, 0x039d, 0x03a9, 0x03c0, 0x03d6,
- 0x0408, 0x042f, 0x042f, 0x044c, 0x045c, 0x0483, 0x04a6, 0x04c7,
- 0x04e1, 0x04f1, 0x0509, 0x0519, 0x0534, 0x0546, 0x0553, 0x0563,
- // Entry 40 - 7F
- 0x0571, 0x058a, 0x0594, 0x05a2, 0x05bd, 0x05cb, 0x05d5, 0x05e1,
- 0x05f8, 0x061b, 0x0638, 0x0655, 0x0667, 0x0671, 0x0684, 0x0697,
- 0x06ab, 0x06b7, 0x06c5, 0x06d3, 0x06e3, 0x06f5, 0x0709, 0x072e,
- 0x073c, 0x0761, 0x0773, 0x0796, 0x079e, 0x07bb, 0x07c7, 0x07cd,
- 0x07df, 0x07df, 0x07fe, 0x0824, 0x0838, 0x084f, 0x0855, 0x085d,
- 0x0865, 0x0872, 0x0888, 0x08a5, 0x08b7, 0x08c9, 0x08e1, 0x08f9,
- 0x0905, 0x0932, 0x0963, 0x098e, 0x09a0, 0x09b2, 0x09d3, 0x09e3,
- 0x09f7, 0x0a03, 0x0a19, 0x0a25, 0x0a47, 0x0a61, 0x0a82, 0x0a8c,
- // Entry 80 - BF
- 0x0a98, 0x0aa2, 0x0ab2, 0x0acf, 0x0aea, 0x0afc, 0x0b1b, 0x0b29,
- 0x0b50, 0x0b6c, 0x0b88, 0x0ba0, 0x0baa, 0x0bb5, 0x0bcb, 0x0be6,
- 0x0bf8, 0x0c07, 0x0c13, 0x0c21, 0x0c2f, 0x0c41, 0x0c49, 0x0c68,
- 0x0c83, 0x0c91, 0x0ca3, 0x0ca9, 0x0cc0, 0x0cd7, 0x0ce9, 0x0d03,
- 0x0d2e, 0x0d32, 0x0d44, 0x0d6b, 0x0d79, 0x0d8a, 0x0d94, 0x0db1,
-} // Size: 360 bytes
-
-var mlScriptStr string = "" + // Size: 3465 bytes
- "അറബിക്അർമിഅർമേനിയൻഅവെസ്ഥൻബാലിനീസ്ബട്ടക്ബംഗാളിബ്ലിസ് ചിത്ര ലിപിബോപ്പോമോഫോ" +
- "ബ്രാഹ്മിബ്രെയ്\u200cലിബുഗിനീസ്ബുഹിഡ്ചകംഏകീകൃത കനേഡിയൻ ഗോത്രലിപിചരിയൻഛം" +
- "ചെറോക്കിചിർത്ത്കോപ്റ്റിക്സൈപ്രിയോട്ട്സിറിലിക്പുരാതന ചർച്ച് സ്ലവോണിക് സ" +
- "ിറിലിക്ദേവനാഗരിഡെസെർട്ട്ഈജിപ്ഷ്യൻ ഡിമോട്ടിക്ഈജിപ്ഷ്യൻ ഹിരാറ്റിക്ഈജിപ്ഷ" +
- "്യൻ ചിത്രലിപിഎത്യോപിക്ജോർജ്ജിയൻ ഖുട്സുരിജോർജ്ജിയൻഗ്ലഗോലിറ്റിക്ഗോഥിക്ഗ്" +
- "രീക്ക്ഗുജറാത്തിഗുരുമുഖിഹാംഗുൽഹാൻഹനുനൂലളിതവൽക്കരിച്ച ഹാൻപരമ്പരാഗത ഹാൻഹീ" +
- "ബ്രുഹിരഗാനപഹ്വാ ഹമോംഗ്കടകാനയോ ഹിരാഗാനയോപുരാതന ഹംഗേറിയൻസിന്ധുപഴയ ഇറ്റാല" +
- "ിയൻജാവനീസ്ജാപ്പനീസ്കയാ ലികറ്റക്കാനഖരോഷ്ടിഖമെർകന്നഡകൊറിയൻക്തിലന്നലാവോഫ്" +
- "രാക്ടുർ ലാറ്റിൻഗെയ്\u200cലിക് ലാറ്റിൻലാറ്റിൻലെപ്ചലിംബുസമരേഖയിലുള്ള എലീ" +
- "നിയർ ബിലൈസിൻലൈഡിയൻമൻഡേയൻമണിചേയൻമായൻ ചിത്രലിപിമെറോയിറ്റിക്മലയാളംമംഗോളിയ" +
- "ൻമൂൺമേറ്റി മായക്മ്യാൻമാർഎൻകോഒഖാംഒൽ ചിക്കിഒർഖോൺഒഡിയഒസ്\u200cമാനിയപുരാതന" +
- " പെർമിക്ഫഗസ് പഎഴുത്തു പഹൽവിസാൾട്ടർ പഹൽവിപഹൽവി ലിപിഫിനീഷ്യൻപൊള്ളാർഡ് ശബ്ദ" +
- "ലിപിപൃതിറെജാംഗ്റൊംഗോറൊംഗോറുണിക്സമരിയസരതിസൗരാഷ്ട്രചിഹ്നലിപിഷാവിയൻസിംഹളസ" +
- "ന്താനീസ്സൈലോതി നാഗരിസിറിയക്ക്എസ്റ്റ്രാംഗ്ലോ സിറിയക്പശ്ചിമസുറിയാനികിഴക്" +
- "കൻ സിറിയക്തഗ്ബൻവാതായ് ലേപുതിയ തായ് ല്യൂതമിഴ്ത്വട്തെലുങ്ക്തെംഗ്വർതിഫിനാ" +
- "ഗ്തഗലോഗ്ഥാനതായ്ടിബറ്റൻഉഗ്രൈറ്റിക്വൈദൃശ്യഭാഷപഴയ പേർഷ്യൻസുമേറോ അക്കാഡിയൻ" +
- " ക്യുണിഫോംയിപാരമ്പര്യമായഗണിത രൂപംചിഹ്നങ്ങൾഎഴുതപ്പെടാത്തത്സാധാരണഅജ്ഞാത ലി" +
- "പി"
-
-var mlScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x001e, 0x0036, 0x004b,
- 0x0063, 0x0063, 0x0063, 0x0075, 0x0087, 0x00b6, 0x00d4, 0x00ec,
- 0x0107, 0x011f, 0x0131, 0x013a, 0x017e, 0x018d, 0x0193, 0x01ab,
- 0x01c0, 0x01de, 0x0202, 0x021a, 0x0274, 0x028c, 0x02a7, 0x02a7,
- 0x02e1, 0x031b, 0x0352, 0x0352, 0x036d, 0x03a1, 0x03bc, 0x03e3,
- 0x03f5, 0x03f5, 0x040d, 0x0428, 0x0440, 0x0452, 0x045b, 0x046a,
- 0x049e, 0x04c3, 0x04c3, 0x04d5, 0x04e7, 0x04e7, 0x0509, 0x053a,
- 0x0565, 0x0577, 0x059c, 0x05b1, 0x05cc, 0x05cc, 0x05dc, 0x05f7,
- // Entry 40 - 7F
- 0x060c, 0x0618, 0x0618, 0x0627, 0x0639, 0x0639, 0x0645, 0x0651,
- 0x065d, 0x068e, 0x06bf, 0x06d4, 0x06e3, 0x06f2, 0x071a, 0x0733,
- 0x0733, 0x0733, 0x0742, 0x0754, 0x0754, 0x0766, 0x077b, 0x07a3,
- 0x07a3, 0x07a3, 0x07c7, 0x07d9, 0x07d9, 0x07f1, 0x07fa, 0x07fa,
- 0x081c, 0x081c, 0x0834, 0x0834, 0x0834, 0x0834, 0x0840, 0x0840,
- 0x084c, 0x0865, 0x0874, 0x0880, 0x089b, 0x089b, 0x089b, 0x08c3,
- 0x08d3, 0x08f8, 0x091d, 0x0939, 0x0951, 0x0985, 0x0991, 0x09a6,
- 0x09c4, 0x09d6, 0x09e5, 0x09f1, 0x09f1, 0x0a0c, 0x0a27, 0x0a39,
- // Entry 80 - BF
- 0x0a39, 0x0a39, 0x0a39, 0x0a48, 0x0a48, 0x0a63, 0x0a85, 0x0aa0,
- 0x0ae0, 0x0b0a, 0x0b35, 0x0b4a, 0x0b4a, 0x0b5d, 0x0b86, 0x0b95,
- 0x0b95, 0x0ba4, 0x0bbc, 0x0bd1, 0x0be9, 0x0bfb, 0x0c04, 0x0c10,
- 0x0c25, 0x0c25, 0x0c46, 0x0c4c, 0x0c64, 0x0c64, 0x0c64, 0x0c83,
- 0x0ccd, 0x0cd3, 0x0cf7, 0x0d10, 0x0d2b, 0x0d58, 0x0d6a, 0x0d89,
-} // Size: 360 bytes
-
-var mnScriptStr string = "" + // Size: 532 bytes
- "арабарменбенгалвопомофобрайлкирилдеванагариэтиопгүржгрекгүжаратигурмукхи" +
- "хангулханхялбаршуулсан ханзуламжлалт ханзеврейхираганаяпонкатаканакхмер" +
- "каннадасолонгослаослатинмалаяламмонгол бичигмьянмарориясинхалатамилтэлү" +
- "гүтанатайтөвдтэмдэгбичигдээгүйнийтлэгтодорхойгүй бичиг"
-
-var mnScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
- 0x0038, 0x0038, 0x0038, 0x0042, 0x0042, 0x0056, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x0056, 0x0056, 0x0060, 0x0060, 0x0068, 0x0068,
- 0x0068, 0x0068, 0x0070, 0x0080, 0x0090, 0x009c, 0x00a2, 0x00a2,
- 0x00c5, 0x00e0, 0x00e0, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
- 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0112,
- // Entry 40 - 7F
- 0x0112, 0x011c, 0x011c, 0x012a, 0x013a, 0x013a, 0x013a, 0x013a,
- 0x0142, 0x0142, 0x0142, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
- 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
- 0x014c, 0x014c, 0x014c, 0x015c, 0x015c, 0x0173, 0x0173, 0x0173,
- 0x0173, 0x0173, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
- 0x0181, 0x0181, 0x0181, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- // Entry 80 - BF
- 0x0189, 0x0189, 0x0189, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197,
- 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x01a1,
- 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b5, 0x01bb,
- 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3,
- 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01cf, 0x01e5, 0x01f3, 0x0214,
-} // Size: 360 bytes
-
-var mrScriptStr string = "" + // Size: 3386 bytes
- "अरबीइम्पिरियल आर्मेनिकअर्मेनियनअवेस्तानबालीबटाकबंगालीब्लिसिम्बॉल्सबोपोमो" +
- "फोब्रह्मीब्रेलबूगीबुहिदचकमायूनिफाइड कॅनेडियन अ\u200dॅबोरिदनल सिलॅबिक्स" +
- "कॅरियनचामचेरोकीकिर्थकॉप्टिकसायप्रिऑटसीरिलिकपुरातन चर्च स्लाव्होनिक सिर" +
- "िलिकदेवनागरीडेसर्टइजिप्शियन डेमोटिकइजिप्शियन हायरेटिकइजिप्शियन हायरोग्" +
- "लिफ्सईथिओपिकजॉर्जियन खुत्सुरीजॉर्जियनग्लॅगोलिटिकगोथिकग्रीकगुजरातीगुरुम" +
- "ुखीहंगुलहानहनुनूसरलीकृत हानपारंपारिक हानहिब्रूहिरागानापहाउ मंगकॅटाकना " +
- "आणि हिरागानापुरातन हंगेरियनसिन्धुजुनी इटालिकजावानीसजपानीकायाह लीकॅटाका" +
- "नाखारोश्थीख्मेरकन्नडकोरियनकाइथीलानालाओफ्रॅक्तुर लॅटिनगाएलिक लेटिनलॅटिन" +
- "लेपचालिम्बूलीनियार अलीनियर बीलायशियानलायडियानमान्डायीनमानीचायीनमायान ह" +
- "ाइरोग्लिफ्समेरोइटिकमल्याळममंगोलियनमूनमेइतेइ मायेकम्यानमारएन्‘कोओघामओल " +
- "चिकिओर्खोनउडियाउस्मानियापुरातन पर्मिकफाग्स-पाइन्स्क्रिप्शनल पाहलवीसॉल्" +
- "टर पाहलवीबुक पाहलवीफोनिशियनपोलार्ड फोनेटिकइन्स्क्रिप्शनल पर्थियनरीजांग" +
- "रोन्गोरोन्गोरूनिकसमरिटानसरातीसौराष्ट्रसंकेत लिपीशॅव्हियनसिंहलासूदानीसि" +
- "लोती नागरीसिरीयाकएस्त्ट्रेन्जेलो सिरियाकपश्चिमी सिरियाकपूर्वी सिरियाकत" +
- "गोआन्वाताई लीनवीन ताई लूतामिळताई विएततेलगुतेन्गवारतिफिनाघटागालोगथानाथा" +
- "ईतिबेटीयुगारिटिकवाईदृश्य संवादपुरातन फारसीदृश्यमान भाषायीवंशपरंपरागतगण" +
- "िती संकेतलिपीप्रतीकअलिखितसामान्यअज्ञात लिपी"
-
-var mrScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005b, 0x0073,
- 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00dc, 0x00f1,
- 0x0100, 0x010c, 0x011b, 0x0127, 0x0193, 0x01a5, 0x01ae, 0x01c0,
- 0x01cf, 0x01e4, 0x01ff, 0x0214, 0x026b, 0x0283, 0x0295, 0x0295,
- 0x02c6, 0x02fa, 0x033a, 0x033a, 0x034f, 0x0380, 0x0398, 0x03b9,
- 0x03c8, 0x03c8, 0x03d7, 0x03ec, 0x0404, 0x0413, 0x041c, 0x042b,
- 0x044a, 0x046f, 0x046f, 0x0481, 0x0499, 0x0499, 0x04af, 0x04e7,
- 0x0512, 0x0524, 0x0543, 0x0558, 0x0567, 0x0567, 0x057d, 0x0595,
- // Entry 40 - 7F
- 0x05ad, 0x05bc, 0x05bc, 0x05cb, 0x05dd, 0x05dd, 0x05ec, 0x05f8,
- 0x0601, 0x062c, 0x064e, 0x065d, 0x066c, 0x067e, 0x0697, 0x06b0,
- 0x06b0, 0x06b0, 0x06c8, 0x06e0, 0x06e0, 0x06fb, 0x0716, 0x074a,
- 0x074a, 0x074a, 0x0762, 0x0777, 0x0777, 0x078f, 0x0798, 0x0798,
- 0x07ba, 0x07ba, 0x07d2, 0x07d2, 0x07d2, 0x07d2, 0x07e4, 0x07e4,
- 0x07f0, 0x0803, 0x0815, 0x0824, 0x083f, 0x083f, 0x083f, 0x0864,
- 0x087a, 0x08b7, 0x08dc, 0x08f8, 0x0910, 0x093b, 0x097b, 0x098d,
- 0x09b1, 0x09c0, 0x09d5, 0x09e4, 0x09e4, 0x09ff, 0x0a1b, 0x0a33,
- // Entry 80 - BF
- 0x0a33, 0x0a33, 0x0a33, 0x0a45, 0x0a45, 0x0a57, 0x0a79, 0x0a8e,
- 0x0ad1, 0x0afc, 0x0b24, 0x0b3c, 0x0b3c, 0x0b4c, 0x0b69, 0x0b78,
- 0x0b78, 0x0b8e, 0x0b9d, 0x0bb5, 0x0bca, 0x0bdf, 0x0beb, 0x0bf4,
- 0x0c06, 0x0c06, 0x0c21, 0x0c2a, 0x0c49, 0x0c49, 0x0c49, 0x0c6b,
- 0x0c90, 0x0c96, 0x0cb7, 0x0ce2, 0x0cf4, 0x0d06, 0x0d1b, 0x0d3a,
-} // Size: 360 bytes
-
-var msScriptStr string = "" + // Size: 289 bytes
- "ArabArmeniaBaliBamuBengaliBopomofoBrailleCansCyrilDevanagariEthiopiaGeor" +
- "giaGreekGujaratGurmukhiHangulHanHan RingkasHan TradisionalIbraniHiragana" +
- "JepunKatakanaKhmerKannadaKoreaLaoLatinMalayalamMongoliaMyammarOriyaSinha" +
- "laTamilTeluguThaanaThaiTibetSimbolTidak ditulisBiasaSkrip Tidak Diketahu" +
- "i"
-
-var msScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x000b, 0x000b,
- 0x000f, 0x0013, 0x0013, 0x0013, 0x001a, 0x001a, 0x0022, 0x0022,
- 0x0029, 0x0029, 0x0029, 0x0029, 0x002d, 0x002d, 0x002d, 0x002d,
- 0x002d, 0x002d, 0x002d, 0x0032, 0x0032, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x004b, 0x004b,
- 0x004b, 0x004b, 0x0050, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068,
- 0x0073, 0x0082, 0x0082, 0x0088, 0x0090, 0x0090, 0x0090, 0x0090,
- 0x0090, 0x0090, 0x0090, 0x0090, 0x0095, 0x0095, 0x0095, 0x009d,
- // Entry 40 - 7F
- 0x009d, 0x00a2, 0x00a2, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00b1, 0x00b1, 0x00b1, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
- 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
- 0x00b6, 0x00b6, 0x00b6, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- // Entry 80 - BF
- 0x00d3, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
- 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00df,
- 0x00df, 0x00df, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00eb, 0x00ef,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
- 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fa, 0x0107, 0x010c, 0x0121,
-} // Size: 360 bytes
-
-var myScriptStr string = "" + // Size: 1208 bytes
- "အာရေဗျအာမေးနီးယားဘင်္ဂါလီဘိုပိုဗြဟ္မမီဘရေစစ်ရိလစ်ဒီဗနာဂရီအီသီယိုးပီးယားဂ" +
- "ျော်ဂျီယန်ဂရိဂုဂျာရသီဂူရူဟန်ဂူးလ်ဟန်ရိုးရှင်းသော ဟန်ရှေးရိုးစဉ်လာဟန်ဟီ" +
- "ဗရူးဟိရဂဏခတခဏ သို့မဟုတ် ဟိရဂဏဂျာဗားနီးစ်ဂျပန်ကယားလီခတခဏခမာခန္နာဒါကိုးရ" +
- "ီးယားလာအိုလက်တင်မာလာရာလန်မွန်ဂိုလီးယားမြန်မာအိုရာဆင်ဟာလတိုင်လီတမီးလ်တီ" +
- "လုတဂလော့ဂ်သာအ်ထိုင်းတိဘက်မြင်နိုင်သော စကားပါရှန် အဟောင်းရီသင်္ကေတမရေးထ" +
- "ားသောအများနှင့်သက်ဆိုင်သောမသိ သို့မဟုတ် မရှိသော စကားလုံး"
-
-var myScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x004b, 0x004b, 0x005d, 0x0072,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab,
- 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00d5, 0x00d5, 0x00f6, 0x00f6,
- 0x00f6, 0x00f6, 0x00ff, 0x0117, 0x0123, 0x013b, 0x0144, 0x0144,
- 0x0172, 0x01a2, 0x01a2, 0x01b4, 0x01c3, 0x01c3, 0x01c3, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x021c, 0x022b, 0x022b, 0x023d, 0x0249,
- // Entry 40 - 7F
- 0x0249, 0x0252, 0x0252, 0x0267, 0x0285, 0x0285, 0x0285, 0x0285,
- 0x0294, 0x0294, 0x0294, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
- 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
- 0x02a6, 0x02a6, 0x02a6, 0x02c1, 0x02c1, 0x02e8, 0x02e8, 0x02e8,
- 0x02e8, 0x02e8, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa,
- 0x02fa, 0x02fa, 0x02fa, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
- 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
- 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
- // Entry 80 - BF
- 0x0309, 0x0309, 0x0309, 0x031b, 0x031b, 0x031b, 0x031b, 0x031b,
- 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x0330, 0x0330, 0x0342,
- 0x0342, 0x0342, 0x034e, 0x034e, 0x034e, 0x0366, 0x0372, 0x0384,
- 0x0393, 0x0393, 0x0393, 0x0393, 0x03c4, 0x03c4, 0x03c4, 0x03ec,
- 0x03ec, 0x03f2, 0x03f2, 0x03f2, 0x0407, 0x0425, 0x0464, 0x04b8,
-} // Size: 360 bytes
-
-var neScriptStr string = "" + // Size: 3010 bytes
- "अरबीआर्मीआर्मेनियालीआभेस्टानबालीबाटकबङ्गालीब्लिजसिम्बोल्सबोपोमोफोब्राह्म" +
- "ीब्रेलबुगिनिजबुहिदकाक्म्कारियनचामचेरोकीकिर्थकप्टिककप्रियटसिरिलिकदेवाना" +
- "गरीडेसेरेटइजिप्टियन डेमोटिकइजिप्टियन हाइरटिकइजिप्टियन हाइरोग्लिफ्सइथिय" +
- "ोपिकग्रुजियाली खुट्सुरीजोर्जियनग्लागोलिटिकगोथिकग्रीकगुजरातीगुरूमुखीहान" +
- "्गुलहानहानुनुसरलिकृत चिनीपरम्परागत चिनीहिब्रुहिरागनापहावह हमोङ्गकाताका" +
- "ना वा हिरागानापुरानो हङ्गेरियालीइन्दुसपुरानो इटालिकजाभानीजापानीकायाहली" +
- "काताकानाखारोस्थितिखमेरकान्नाडाकोरियनक्थीलान्नालाओफ्राक्टुर ल्याटिनग्या" +
- "लिक ल्याटिनल्याटिनलेप्चालिम्बुलाइसियनलाइडियनमान्डाएनमानिकाएनमाया हाइरो" +
- "ग्लिफ्समेरियोटिकमलायालममङ्गोलजूनमाइटेइ मायेकम्यान्मारएन्कोओघामओलचिकीओर" +
- "्खोनओडियाओस्मान्यापुरानो पर्मिकफाग्स-पाफ्लिफ्ल्पबुक पहल्भीफोनिसियनपोल्" +
- "लार्ड फोनेटिकपिआरटीरेजाङरोङ्गोरोङ्गोरूनिकसमारिटनसारतीसौराष्ट्रसाइनराइट" +
- "िङशाभियनसिन्हालास्ल्योटी नाग्रीसिरियाकइस्ट्रेनजेलो सिरियाकपश्चिमी सिरि" +
- "याकपूर्वी सिरियाकटाग्वान्वाटाइलेन्यू टाइ लुइतामिलटाभ्टतेलुगुटेङ्वारटिफ" +
- "िनाघटागालोगथानाथाईतिब्बतीयुगारिटिकभाइदृश्यमय वाणीपुरानो पर्सियनयीइन्हे" +
- "रिटेडजमथप्रतीकहरूनलेखिएकोसाझाअज्ञात लिपि"
-
-var neScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x001b, 0x003c, 0x0054,
- 0x0060, 0x0060, 0x0060, 0x006c, 0x0081, 0x00ab, 0x00c3, 0x00db,
- 0x00ea, 0x00ff, 0x010e, 0x0120, 0x0120, 0x0132, 0x013b, 0x014d,
- 0x015c, 0x016e, 0x0183, 0x0198, 0x0198, 0x01b3, 0x01c8, 0x01c8,
- 0x01f9, 0x022a, 0x026a, 0x026a, 0x0282, 0x02b9, 0x02d1, 0x02f2,
- 0x0301, 0x0301, 0x0310, 0x0325, 0x033d, 0x0352, 0x035b, 0x036d,
- 0x038f, 0x03b7, 0x03b7, 0x03c9, 0x03de, 0x03de, 0x0400, 0x0438,
- 0x046c, 0x047e, 0x04a3, 0x04b5, 0x04c7, 0x04c7, 0x04dc, 0x04f4,
- // Entry 40 - 7F
- 0x0512, 0x051e, 0x051e, 0x0536, 0x0548, 0x0548, 0x0554, 0x0566,
- 0x056f, 0x05a0, 0x05cb, 0x05e0, 0x05f2, 0x0604, 0x0604, 0x0604,
- 0x0604, 0x0604, 0x0619, 0x062e, 0x062e, 0x0646, 0x065e, 0x068f,
- 0x068f, 0x068f, 0x06aa, 0x06bf, 0x06bf, 0x06d1, 0x06da, 0x06da,
- 0x06fc, 0x06fc, 0x0717, 0x0717, 0x0717, 0x0717, 0x0726, 0x0726,
- 0x0732, 0x0744, 0x0756, 0x0765, 0x0780, 0x0780, 0x0780, 0x07a5,
- 0x07bb, 0x07c7, 0x07d6, 0x07f2, 0x080a, 0x083b, 0x084d, 0x085c,
- 0x0880, 0x088f, 0x08a4, 0x08b3, 0x08b3, 0x08ce, 0x08ec, 0x08fe,
- // Entry 80 - BF
- 0x08fe, 0x08fe, 0x08fe, 0x0916, 0x0916, 0x0916, 0x0941, 0x0956,
- 0x0990, 0x09bb, 0x09e3, 0x0a01, 0x0a01, 0x0a10, 0x0a30, 0x0a3f,
- 0x0a3f, 0x0a4e, 0x0a60, 0x0a75, 0x0a8a, 0x0a9f, 0x0aab, 0x0ab4,
- 0x0ac9, 0x0ac9, 0x0ae4, 0x0aed, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b37,
- 0x0b37, 0x0b3d, 0x0b5b, 0x0b64, 0x0b7f, 0x0b97, 0x0ba3, 0x0bc2,
-} // Size: 360 bytes
-
-var nlScriptStr string = "" + // Size: 1633 bytes
- "DefakaKaukasisch AlbaneesAhomArabischKeizerlijk ArameesArmeensAvestaansB" +
- "alineesBamounBassa VahBatakBengaalsBlissymbolenBopomofoBrahmiBrailleBugi" +
- "neesBuhidChakmaVerenigde Canadese Aboriginal-symbolenCarischChamCherokee" +
- "CirthKoptischCyprischCyrillischOudkerkslavisch CyrillischDevanagariDeser" +
- "etDuployan snelschriftEgyptisch demotischEgyptisch hiëratischEgyptische " +
- "hiërogliefenElbasanEthiopischGeorgisch KhutsuriGeorgischGlagolitischGoth" +
- "ischGranthaGrieksGujaratiGurmukhiHangulHanHanunoovereenvoudigd Chineestr" +
- "aditioneel ChineesHatranHebreeuwsHiraganaAnatolische hiërogliefenPahawh " +
- "HmongKatakana of HiraganaOudhongaarsIndusOud-italischJavaansJapansJurche" +
- "nKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKoreaansKpelleKaithiLannaLa" +
- "otiaansGotisch LatijnsGaelisch LatijnsLatijnsLepchaLimbuLineair ALineair" +
- " BFraserLomaLycischLydischMahajaniMandaeansManicheaansMayahiërogliefenMe" +
- "ndeMeroitisch cursiefMeroïtischMalayalamModiMongoolsMoonMroMeiteiMultani" +
- "BirmaansOud Noord-ArabischNabateaansNaxi GebaN’KoNüshuOghamOl ChikiOrkho" +
- "nOdiaOsmanyaPalmyreensPau Cin HauOudpermischPhags-paInscriptioneel Pahla" +
- "viPsalmen PahlaviBoek PahlaviFoenicischPollard-fonetischInscriptioneel P" +
- "arthischRejangRongorongoRunicSamaritaansSaratiOud Zuid-ArabischSaurashtr" +
- "aSignWritingShavianSharadaSiddhamSindhiSingaleesSora SompengSoendaneesSy" +
- "loti NagriSyriacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriT" +
- "ai LeNieuw Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaT" +
- "haiTibetaansTirhutaUgaritischVaiZichtbare spraakVarang KshitiWoleaiOudpe" +
- "rzischSumero-Akkadian CuneiformYiOvergeërfdWiskundige notatieSymbolenong" +
- "eschrevenalgemeenonbekend schriftsysteem"
-
-var nlScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0006, 0x0019, 0x001d, 0x0025, 0x0037, 0x003e, 0x0047,
- 0x004f, 0x0055, 0x005e, 0x0063, 0x006b, 0x0077, 0x007f, 0x0085,
- 0x008c, 0x0094, 0x0099, 0x009f, 0x00c5, 0x00cc, 0x00d0, 0x00d8,
- 0x00dd, 0x00e5, 0x00ed, 0x00f7, 0x0111, 0x011b, 0x0122, 0x0136,
- 0x0149, 0x015e, 0x0176, 0x017d, 0x0187, 0x0199, 0x01a2, 0x01ae,
- 0x01b6, 0x01bd, 0x01c3, 0x01cb, 0x01d3, 0x01d9, 0x01dc, 0x01e3,
- 0x01f8, 0x020c, 0x0212, 0x021b, 0x0223, 0x023c, 0x0248, 0x025c,
- 0x0267, 0x026c, 0x0278, 0x027f, 0x0285, 0x028c, 0x0294, 0x029c,
- // Entry 40 - 7F
- 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02c0, 0x02c6, 0x02cc, 0x02d1,
- 0x02da, 0x02e9, 0x02f9, 0x0300, 0x0306, 0x030b, 0x0314, 0x031d,
- 0x0323, 0x0327, 0x032e, 0x0335, 0x033d, 0x0346, 0x0351, 0x0362,
- 0x0367, 0x0379, 0x0384, 0x038d, 0x0391, 0x0399, 0x039d, 0x03a0,
- 0x03a6, 0x03ad, 0x03b5, 0x03c7, 0x03d1, 0x03da, 0x03e0, 0x03e6,
- 0x03eb, 0x03f3, 0x03f9, 0x03fd, 0x0404, 0x040e, 0x0419, 0x0424,
- 0x042c, 0x0442, 0x0451, 0x045d, 0x0467, 0x0478, 0x0490, 0x0496,
- 0x04a0, 0x04a5, 0x04b0, 0x04b6, 0x04c7, 0x04d1, 0x04dc, 0x04e3,
- // Entry 80 - BF
- 0x04ea, 0x04f1, 0x04f7, 0x0500, 0x050c, 0x0516, 0x0522, 0x0528,
- 0x053a, 0x0546, 0x0552, 0x055a, 0x055f, 0x0565, 0x0572, 0x0577,
- 0x057d, 0x0585, 0x058b, 0x0592, 0x059a, 0x05a1, 0x05a7, 0x05ab,
- 0x05b4, 0x05bb, 0x05c5, 0x05c8, 0x05d8, 0x05e5, 0x05eb, 0x05f6,
- 0x060f, 0x0611, 0x061c, 0x062e, 0x0636, 0x0642, 0x064a, 0x0661,
-} // Size: 360 bytes
-
-var noScriptStr string = "" + // Size: 1588 bytes
- "afakakaukasus-albanskahomarabiskarameiskarmenskavestiskbalinesiskbamumba" +
- "ssa vahbatakbengalskblissymbolbopomofobrahmibraillebuginesiskbuhidchakma" +
- "felles kanadiske urspråksstavelserkariskchamcherokeecirthkoptiskkyprioti" +
- "skkyrilliskkirkeslavisk kyrilliskdevanagarideseretduployan stenografiegy" +
- "ptisk demotiskegyptisk hieratiskegyptiske hieroglyferelbasisketiopiskgeo" +
- "rgisk khutsurigeorgiskglagolittiskgotiskgammeltamilskgreskgujaratigurmuk" +
- "hihangulhanhanunooforenklet hantradisjonell hanhatransk armenskhebraiskh" +
- "iraganaanatoliske hieroglyferpahawh hmongkatakana eller hiraganagammelun" +
- "garskindusgammelitaliskjavanesiskjapanskjurchenkayah likatakanakharoshth" +
- "ikhmerkhojkikannadakoreanskkpellekaithisklannalaotiskfrakturlatinskgælis" +
- "k latinsklatinsklepchalimbulineær Alineær Bfraserlomalykisklydiskmahajan" +
- "imandaiskmanikeiskmaya-hieroglyfermendemeroitisk kursivmeroitiskmalayala" +
- "mmodimongolskmoonmromeitei-mayekmultanimyanmargammelnordarabisknabataean" +
- "sknaxi geban’konüshuoghamol-chikiorkhonoriyaosmanyapalmyrenskpau cin hau" +
- "gammelpermiskphags-painskripsjonspahlavipsalter pahlavipahlavifønikiskpo" +
- "llard-fonetiskinskripsjonsparthiskrejangrongorongorunersamaritansksarati" +
- "gammelsørarabisksaurashtrategnskriftshavisksharadasiddhamkhudawadisinhal" +
- "asora sompengsundanesisksyloti nagrisyriskestrangelosyriakiskvestlig syr" +
- "iakiskøstlig syriakisktagbanwatakritai leny tai luetamilsktanguttai viet" +
- "telugutengwartifinaghtagalogthaanathaitibetansktirhutaugaritiskvaisynlig" +
- " talevarang kshitiwoleaigammelpersisksumersk-akkadisk kileskriftyinedarv" +
- "etmatematisk notasjonsymbolerspråk uten skriftfellesukjent skrift"
-
-var noScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0015, 0x0019, 0x0020, 0x0028, 0x002f, 0x0037,
- 0x0041, 0x0046, 0x004f, 0x0054, 0x005c, 0x0066, 0x006e, 0x0074,
- 0x007b, 0x0085, 0x008a, 0x0090, 0x00b3, 0x00b9, 0x00bd, 0x00c5,
- 0x00ca, 0x00d1, 0x00db, 0x00e4, 0x00fa, 0x0104, 0x010b, 0x011e,
- 0x012f, 0x0141, 0x0156, 0x015e, 0x0166, 0x0177, 0x017f, 0x018b,
- 0x0191, 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01b9, 0x01bc, 0x01c3,
- 0x01d0, 0x01e0, 0x01f0, 0x01f8, 0x0200, 0x0216, 0x0222, 0x0239,
- 0x0246, 0x024b, 0x0258, 0x0262, 0x0269, 0x0270, 0x0278, 0x0280,
- // Entry 40 - 7F
- 0x028a, 0x028f, 0x0295, 0x029c, 0x02a4, 0x02aa, 0x02b2, 0x02b7,
- 0x02be, 0x02cc, 0x02db, 0x02e2, 0x02e8, 0x02ed, 0x02f6, 0x02ff,
- 0x0305, 0x0309, 0x030f, 0x0315, 0x031d, 0x0325, 0x032e, 0x033e,
- 0x0343, 0x0353, 0x035c, 0x0365, 0x0369, 0x0371, 0x0375, 0x0378,
- 0x0384, 0x038b, 0x0392, 0x03a3, 0x03ae, 0x03b7, 0x03bd, 0x03c3,
- 0x03c8, 0x03d0, 0x03d6, 0x03db, 0x03e2, 0x03ec, 0x03f7, 0x0404,
- 0x040c, 0x041f, 0x042e, 0x0435, 0x043e, 0x044e, 0x0462, 0x0468,
- 0x0472, 0x0477, 0x0482, 0x0488, 0x0499, 0x04a3, 0x04ad, 0x04b4,
- // Entry 80 - BF
- 0x04bb, 0x04c2, 0x04cb, 0x04d2, 0x04de, 0x04e9, 0x04f5, 0x04fb,
- 0x050e, 0x051f, 0x0530, 0x0538, 0x053d, 0x0543, 0x054d, 0x0554,
- 0x055a, 0x0562, 0x0568, 0x056f, 0x0577, 0x057e, 0x0584, 0x0588,
- 0x0591, 0x0598, 0x05a1, 0x05a4, 0x05af, 0x05bc, 0x05c2, 0x05cf,
- 0x05ea, 0x05ec, 0x05f4, 0x0607, 0x060f, 0x0621, 0x0627, 0x0634,
-} // Size: 360 bytes
-
-var paScriptStr string = "" + // Size: 740 bytes
- "ਅਰਬੀਅਰਮੀਨੀਆਈਬੰਗਾਲੀਬੋਪੋਮੋਫੋਬਰੇਲਸਿਰੀਲਿਕਦੇਵਨਾਗਰੀਇਥੀਓਪਿਕਜਾਰਜੀਆਈਗ੍ਰੀਕਗੁਜਰਾਤੀਗ" +
- "ੁਰਮੁਖੀਹੰਗੁਲਹਾਨਸਰਲ ਹਾਨਰਵਾਇਤੀ ਹਾਨਹਿਬਰੂਹਿਰਾਗਾਨਾਜਪਾਨੀਕਾਟਾਕਾਨਾਖਮੇਰਕੰਨੜਕੋਰੀਆ" +
- "ਈਲਾਓਲਾਤੀਨੀਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਿਆਂਮਾਰਉੜੀਆਸਿੰਹਾਲਾਤਮਿਲਤੇਲਗੂਥਾਨਾਥਾਈਤਿੱਬਤੀਗਣਿਤ ਚ" +
- "ਿੰਨ੍ਹ-ਲਿਪੀਚਿੰਨ੍ਹਅਲਿਖਤਸਧਾਰਨਅਣਪਛਾਤੀ ਲਿਪੀ"
-
-var paScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0024, 0x0024,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0036, 0x004e, 0x004e,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x006f, 0x006f, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, 0x00b1, 0x00b1,
- 0x00b1, 0x00b1, 0x00c0, 0x00d5, 0x00ea, 0x00f9, 0x0102, 0x0102,
- 0x0115, 0x0131, 0x0131, 0x0140, 0x0158, 0x0158, 0x0158, 0x0158,
- 0x0158, 0x0158, 0x0158, 0x0158, 0x0167, 0x0167, 0x0167, 0x017f,
- // Entry 40 - 7F
- 0x017f, 0x018b, 0x018b, 0x0197, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
- 0x01b2, 0x01b2, 0x01b2, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4,
- 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4,
- 0x01c4, 0x01c4, 0x01c4, 0x01d6, 0x01d6, 0x01ee, 0x01ee, 0x01ee,
- 0x01ee, 0x01ee, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203,
- 0x0203, 0x0203, 0x0203, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
- 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
- 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
- // Entry 80 - BF
- 0x020f, 0x020f, 0x020f, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224,
- 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0230,
- 0x0230, 0x0230, 0x023f, 0x023f, 0x023f, 0x023f, 0x024b, 0x0254,
- 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
- 0x0266, 0x0266, 0x0266, 0x0292, 0x02a4, 0x02b3, 0x02c2, 0x02e4,
-} // Size: 360 bytes
-
-var plScriptStr string = "" + // Size: 1483 bytes
- "arabskiearmiormiańskieawestyjskiebalijskiebamunbatakbengalskiesymbole Bl" +
- "issabopomofobrahmiBraille’abugińskiebuhidchakmazunifikowane symbole kana" +
- "dyjskich autochtonówkaryjskieczamskieczirokeskicirthkoptyjskiecypryjskie" +
- "cyrylicacyrylica staro-cerkiewno-słowiańskadevanagarideseretegipskie dem" +
- "otyczneegipskie hieratycznehieroglify egipskieetiopskiegruzińskie chucur" +
- "igruzińskiegłagolicagotyckiegreckiegudźarackiegurmukhihangylhanhanunooup" +
- "roszczone hantradycyjne hanhebrajskiehiraganapahawh hmongkatakana lub hi" +
- "raganastarowęgierskieindusstarowłoskiejawajskiejapońskiekayah likatakana" +
- "charostikhmerskiekannadakoreańskiekaithilannalaotańskiełaciński - fraktu" +
- "rałaciński - odmiana gaelickałacińskielepchalimbulinearne Alinearne Blik" +
- "ijskielidyjskiemandejskiemanichejskiehieroglify Majówmeroickiemalajalamm" +
- "ongolskieMoon’ameitei mayekbirmańskien’kooghamol chikiorchońskieorijaosm" +
- "anyastaropermskiephags-painskrypcyjne pahlawipahlawi psałterzowypahlawi " +
- "książkowyfenickifonetyczny Pollard’apartyjski inskrypcyjnyrejangrongoron" +
- "gorunicznesamarytańskisaratisaurashtrapismo znakoweshawasyngaleskiesunda" +
- "jskiesyloti nagrisyryjskisyriacki estrangelosyryjski (odmiana zachodnia)" +
- "syryjski (odmiana wschodnia)tagbanwatai lenowy tai luetamilskietai viett" +
- "elugutengwartifinagh (berberski)tagalogthaanatajskietybetańskieugaryckie" +
- "vaiVisible Speechstaroperskieklinowe sumero-akadyjskieyidziedziczonenota" +
- "cja matematycznasymbolejęzyk bez systemu pismawspólnenieznane lub niepop" +
- "rawne"
-
-var plScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0017, 0x0022,
- 0x002b, 0x0030, 0x0030, 0x0035, 0x003f, 0x004d, 0x0055, 0x005b,
- 0x0066, 0x0070, 0x0075, 0x007b, 0x00a9, 0x00b2, 0x00ba, 0x00c4,
- 0x00c9, 0x00d3, 0x00dd, 0x00e5, 0x010a, 0x0114, 0x011b, 0x011b,
- 0x012e, 0x0142, 0x0155, 0x0155, 0x015e, 0x0171, 0x017c, 0x0186,
- 0x018e, 0x018e, 0x0195, 0x01a1, 0x01a9, 0x01af, 0x01b2, 0x01b9,
- 0x01c8, 0x01d6, 0x01d6, 0x01e0, 0x01e8, 0x01e8, 0x01f4, 0x0209,
- 0x0219, 0x021e, 0x022b, 0x0234, 0x023e, 0x023e, 0x0246, 0x024e,
- // Entry 40 - 7F
- 0x0256, 0x025f, 0x025f, 0x0266, 0x0271, 0x0271, 0x0277, 0x027c,
- 0x0287, 0x029c, 0x02b9, 0x02c4, 0x02ca, 0x02cf, 0x02d9, 0x02e3,
- 0x02e3, 0x02e3, 0x02ec, 0x02f5, 0x02f5, 0x02ff, 0x030b, 0x031c,
- 0x031c, 0x031c, 0x0325, 0x032e, 0x032e, 0x0338, 0x0340, 0x0340,
- 0x034c, 0x034c, 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, 0x035d,
- 0x0362, 0x036a, 0x0375, 0x037a, 0x0381, 0x0381, 0x0381, 0x038e,
- 0x0396, 0x03aa, 0x03be, 0x03d1, 0x03d8, 0x03ee, 0x0404, 0x040a,
- 0x0414, 0x041c, 0x0429, 0x042f, 0x042f, 0x0439, 0x0446, 0x044b,
- // Entry 80 - BF
- 0x044b, 0x044b, 0x044b, 0x0456, 0x0456, 0x0460, 0x046c, 0x0474,
- 0x0487, 0x04a3, 0x04bf, 0x04c7, 0x04c7, 0x04cd, 0x04d9, 0x04e2,
- 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x050b, 0x0512, 0x0518, 0x051f,
- 0x052b, 0x052b, 0x0534, 0x0537, 0x0545, 0x0545, 0x0545, 0x0551,
- 0x056a, 0x056c, 0x0578, 0x058c, 0x0593, 0x05ab, 0x05b3, 0x05cb,
-} // Size: 360 bytes
-
-var ptScriptStr string = "" + // Size: 1251 bytes
- "árabearmiarmênioavésticobalinêsbamumbataquebengalisímbolos blissbopomofo" +
- "brahmibraillebuginêsbuhidcakmescrita silábica unificada dos aborígenes c" +
- "anadensescarianochamcherokeecirthcópticocipriotacirílicocirílico eslavo " +
- "eclesiásticodevanágarideseretdemótico egípciohierático egípciohieróglifo" +
- "s egípciosetiópicokhutsuri georgianogeorgianoglagolíticogóticogregogujer" +
- "atigurmuquihangulhanhanunoohan simplificadohan tradicionalhebraicohiraga" +
- "napahawh hmongkatakana ou hiraganahúngaro antigoindoitálico antigojavanê" +
- "sjaponêskayah likatakanakharoshthikhmerkannadacoreanokthilannalaolatim f" +
- "rakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídiomandaic" +
- "omaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamongolmoon" +
- "meitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico antigop" +
- "hags-paphliphlppahlavi antigofeníciofonético pollardprtirejangrongorongo" +
- "rúnicosamaritanosaratisaurashtrasignwritingshavianocingalêssundanêssylot" +
- "i nagrisiríacosiríaco estrangelosiríaco ocidentalsiríaco orientaltagbanw" +
- "atai Lenovo tai luetâmiltavttélugotengwartifinaghtagalothaanatailandêsti" +
- "betanougaríticovaivisible speechpersa antigosumério-acadiano cuneiformey" +
- "iherdadozmthzsymágrafocomumescrita desconhecida"
-
-var ptScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0012, 0x001b,
- 0x0023, 0x0028, 0x0028, 0x002f, 0x0036, 0x0045, 0x004d, 0x0053,
- 0x005a, 0x0062, 0x0067, 0x006b, 0x00a1, 0x00a8, 0x00ac, 0x00b4,
- 0x00b9, 0x00c1, 0x00c9, 0x00d2, 0x00f0, 0x00fb, 0x0102, 0x0102,
- 0x0114, 0x0127, 0x013d, 0x013d, 0x0146, 0x0158, 0x0161, 0x016d,
- 0x0174, 0x0174, 0x0179, 0x0181, 0x0189, 0x018f, 0x0192, 0x0199,
- 0x01a9, 0x01b8, 0x01b8, 0x01c0, 0x01c8, 0x01c8, 0x01d4, 0x01e8,
- 0x01f7, 0x01fb, 0x020a, 0x0212, 0x021a, 0x021a, 0x0222, 0x022a,
- // Entry 40 - 7F
- 0x0234, 0x0239, 0x0239, 0x0240, 0x0247, 0x0247, 0x024b, 0x0250,
- 0x0253, 0x0260, 0x026e, 0x0273, 0x0279, 0x027e, 0x0286, 0x028e,
- 0x0292, 0x0292, 0x0298, 0x029e, 0x029e, 0x02a6, 0x02b0, 0x02c2,
- 0x02c2, 0x02d4, 0x02de, 0x02e6, 0x02e6, 0x02ec, 0x02f0, 0x02f0,
- 0x02fc, 0x02fc, 0x0305, 0x0305, 0x0305, 0x0305, 0x030b, 0x030b,
- 0x0313, 0x031b, 0x0321, 0x0326, 0x032d, 0x032d, 0x032d, 0x033c,
- 0x0344, 0x0348, 0x034c, 0x035a, 0x0362, 0x0373, 0x0377, 0x037d,
- 0x0387, 0x038e, 0x0398, 0x039e, 0x039e, 0x03a8, 0x03b3, 0x03bb,
- // Entry 80 - BF
- 0x03bb, 0x03bb, 0x03bb, 0x03c4, 0x03c4, 0x03cd, 0x03d9, 0x03e1,
- 0x03f4, 0x0406, 0x0417, 0x041f, 0x041f, 0x0425, 0x0431, 0x0437,
- 0x0437, 0x043b, 0x0442, 0x0449, 0x0451, 0x0457, 0x045d, 0x0467,
- 0x046f, 0x046f, 0x0479, 0x047c, 0x048a, 0x048a, 0x048a, 0x0496,
- 0x04b2, 0x04b4, 0x04bb, 0x04bf, 0x04c3, 0x04ca, 0x04cf, 0x04e3,
-} // Size: 360 bytes
-
-var ptPTScriptStr string = "" + // Size: 103 bytes
- "arménioegípcio demóticoegípcio hieráticoguzerateindussiloti nagritai let" +
- "elugusímbolosnão escrito"
-
-var ptPTScriptIdx = []uint16{ // 166 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
- 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d,
- 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- // Entry 40 - 7F
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
- // Entry 80 - BF
- 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046,
- 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x004c, 0x004c, 0x004c,
- 0x004c, 0x004c, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x005b, 0x0067,
-} // Size: 356 bytes
-
-var roScriptStr string = "" + // Size: 825 bytes
- "arabăarmeanăbalinezăbengalezăbopomofobraillesilabică aborigenă canadiană" +
- " unificatăcoptăcipriotăchirilicăchirilică slavonă bisericească vechedeva" +
- "nagarimormonădemotică egipteanăhieratică egipteanăhieroglife egipteneeti" +
- "opianăgeorgiană bisericeascăgeorgianăglagoliticăgoticăgreacăgujaratigurm" +
- "ukhihangulhanhan simplificatăhan tradiționalăebraicăhiraganakatakana sau" +
- " hiraganamaghiară vecheindusitalică vechejavanezăjaponezăkatakanakhmerăk" +
- "annadacoreeanălaoțianălatină Frakturlatină gaelicălatinălineară Alineară" +
- " Blidianăhieroglife mayamalayalammongolăbirmanăoriyafenicianărunicăsinga" +
- "lezăsiriacăsiriacă occidentalăsiriacă orientalătamilăteluguberberăthaana" +
- "thailandezătibetanăpersană vechecuneiformă sumero-akkadianămoștenităsimb" +
- "olurinescrisăcomunăscriere necunoscută"
-
-var roScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e,
- 0x0017, 0x0017, 0x0017, 0x0017, 0x0021, 0x0021, 0x0029, 0x0029,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x005a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x0060, 0x0069, 0x0073, 0x009a, 0x00a4, 0x00ac, 0x00ac,
- 0x00c0, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x010a, 0x0114, 0x0120,
- 0x0127, 0x0127, 0x012e, 0x0136, 0x013e, 0x0144, 0x0147, 0x0147,
- 0x0158, 0x016a, 0x016a, 0x0172, 0x017a, 0x017a, 0x017a, 0x018f,
- 0x019e, 0x01a3, 0x01b1, 0x01ba, 0x01c3, 0x01c3, 0x01c3, 0x01cb,
- // Entry 40 - 7F
- 0x01cb, 0x01d2, 0x01d2, 0x01d9, 0x01e2, 0x01e2, 0x01e2, 0x01e2,
- 0x01ec, 0x01fb, 0x020b, 0x0212, 0x0212, 0x0212, 0x021c, 0x0226,
- 0x0226, 0x0226, 0x0226, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d,
- 0x023d, 0x023d, 0x023d, 0x0246, 0x0246, 0x024e, 0x024e, 0x024e,
- 0x024e, 0x024e, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b,
- 0x025b, 0x025b, 0x025b, 0x025b, 0x0265, 0x0265, 0x0265, 0x0265,
- 0x0265, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c,
- // Entry 80 - BF
- 0x026c, 0x026c, 0x026c, 0x0276, 0x0276, 0x0276, 0x0276, 0x027e,
- 0x027e, 0x0293, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02ad,
- 0x02ad, 0x02ad, 0x02b3, 0x02b3, 0x02bb, 0x02bb, 0x02c1, 0x02cd,
- 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02e4,
- 0x0301, 0x0301, 0x030c, 0x030c, 0x0315, 0x031e, 0x0325, 0x0339,
-} // Size: 360 bytes
-
-var ruScriptStr string = "" + // Size: 3384 bytes
- "афакаарабицаарамейскаяармянскаяавестийскаябалийскаябамумбасса (вах)батак" +
- "скаябенгальскаяблиссимволикабопомофобрахмиБрайлябугинизийскаябухидчакми" +
- "йскаяканадское слоговое письмокарийскаячамскаячерокикирткоптскаякипрска" +
- "якириллицастарославянскаядеванагаридезеретдуплоянская скорописьегипетск" +
- "ая демотическаяегипетская иератическаяегипетская иероглифическаяэфиопск" +
- "аягрузинская хуцуригрузинскаяглаголицаготскаягрантхагреческаягуджаратиг" +
- "урмукхихангылькитайскаяханунуупрощенная китайскаятрадиционная китайская" +
- "ивритхираганалувийские иероглифыпахау хмонгкатакана или хираганастарове" +
- "нгерскаяхараппская (письменность долины Инда)староитальянскаяяванскаяяп" +
- "онскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикиканнадакорейска" +
- "якпеллекайтхиланналаосскаялатинская фрактурагэльская латинскаялатиницал" +
- "епхалимбулинейное письмо Алинейное письмо Блисуломалицианлидийскаяманде" +
- "йскаяманихейскаямайямендемероитская курсивнаямероитскаямалаяльскаямонго" +
- "льскаяазбука мунамроманипуримьянманскаясеверноаравийскоенабатейскаянаси" +
- " гебанконюй-шуогамическаяол чикиорхоно-енисейскаяорияосманскаяпальмирыдр" +
- "евнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахлави книжнаяфиникийс" +
- "каяполлардовская фонетикапарфянскаяреджангскаяронго-ронгоруническаясама" +
- "ритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит Шоушарадакх" +
- "удавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийскаясирийская " +
- "эстрангелозападносирийскаявосточно-сирийскаятагбанватакритайский леновы" +
- "й тайский летамильскаятангутское менятай-вьеттелугутенгварскаядревнелив" +
- "ийскаятагалогтаанатайскаятибетскаятирхутаугаритскаявайскаявидимая речьв" +
- "аранг-кшитиволеаистароперсидскаяшумеро-аккадская клинописьиунаследованн" +
- "аяматематические обозначениясимволыбесписьменныйобщепринятаянеизвестная" +
- " письменность"
-
-var ruScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x000a, 0x000a, 0x0018, 0x002c, 0x003e, 0x0054,
- 0x0066, 0x0070, 0x0083, 0x0095, 0x00ab, 0x00c5, 0x00d5, 0x00e1,
- 0x00ed, 0x0107, 0x0111, 0x0125, 0x0155, 0x0167, 0x0175, 0x0181,
- 0x0189, 0x0199, 0x01a9, 0x01bb, 0x01d9, 0x01ed, 0x01fb, 0x0224,
- 0x0251, 0x027e, 0x02b1, 0x02b1, 0x02c3, 0x02e4, 0x02f8, 0x030a,
- 0x0318, 0x0326, 0x0338, 0x034a, 0x035a, 0x0368, 0x037a, 0x0386,
- 0x03ad, 0x03d8, 0x03d8, 0x03e2, 0x03f2, 0x0417, 0x042c, 0x0454,
- 0x0472, 0x04b7, 0x04d7, 0x04e7, 0x04f7, 0x0511, 0x0519, 0x0529,
- // Entry 40 - 7F
- 0x053b, 0x054d, 0x055b, 0x0569, 0x057b, 0x0587, 0x0593, 0x059d,
- 0x05ad, 0x05d0, 0x05f3, 0x0603, 0x060d, 0x0617, 0x0637, 0x0657,
- 0x065f, 0x0667, 0x0673, 0x0685, 0x0685, 0x0699, 0x06af, 0x06b7,
- 0x06c1, 0x06e8, 0x06fc, 0x0712, 0x0712, 0x0728, 0x073d, 0x0743,
- 0x0753, 0x0753, 0x0769, 0x078b, 0x07a1, 0x07b2, 0x07b8, 0x07c3,
- 0x07d9, 0x07e6, 0x0807, 0x080f, 0x0821, 0x0831, 0x0831, 0x084d,
- 0x0859, 0x0871, 0x0894, 0x08b1, 0x08c7, 0x08f2, 0x0906, 0x091c,
- 0x0931, 0x0945, 0x095f, 0x096b, 0x098d, 0x099f, 0x09b4, 0x09c9,
- // Entry 80 - BF
- 0x09d5, 0x09d5, 0x09e7, 0x09fd, 0x0a14, 0x0a28, 0x0a3f, 0x0a51,
- 0x0a78, 0x0a98, 0x0abb, 0x0acb, 0x0ad5, 0x0ae8, 0x0b06, 0x0b1a,
- 0x0b37, 0x0b46, 0x0b52, 0x0b68, 0x0b86, 0x0b94, 0x0b9e, 0x0bac,
- 0x0bbe, 0x0bcc, 0x0be0, 0x0bee, 0x0c05, 0x0c1c, 0x0c28, 0x0c46,
- 0x0c78, 0x0c7a, 0x0c96, 0x0cc9, 0x0cd7, 0x0cf1, 0x0d09, 0x0d38,
-} // Size: 360 bytes
-
-var siScriptStr string = "" + // Size: 809 bytes
- "අරාබිආර්මේනියානුබෙංගාලිබොපොමොෆෝබ්\u200dරේල්සිරිලික්දේවනාගරීඉතියෝපියානුජෝ" +
- "ර්ජියානුග්\u200dරීකගුජරාටිගුර්මුඛිහැන්ගුල්හන්සුළුකළ හෑන්සම්ප්\u200dරදා" +
- "යික හෑන්හීබෲහිරඟනාජපන්කතකනාකමර්කණ්ණඩකොරියානුලාඕලතින්මලයාලම්මොන්ගෝලියාන" +
- "ුමියන්මාරඔරියාසිංහලදෙමළතෙළිඟුතානතායිටි\u200dබෙට්සංකේතඅලිඛිතපොදු.නොදත් " +
- "අක්ෂර මාලාව"
-
-var siScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0045, 0x0045, 0x005d, 0x005d,
- 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x008a, 0x008a, 0x00a2, 0x00a2, 0x00a2,
- 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00c3, 0x00c3, 0x00e1, 0x00e1,
- 0x00e1, 0x00e1, 0x00f3, 0x0108, 0x0120, 0x0138, 0x0141, 0x0141,
- 0x0160, 0x0191, 0x0191, 0x019d, 0x01af, 0x01af, 0x01af, 0x01af,
- 0x01af, 0x01af, 0x01af, 0x01af, 0x01bb, 0x01bb, 0x01bb, 0x01ca,
- // Entry 40 - 7F
- 0x01ca, 0x01d6, 0x01d6, 0x01e5, 0x01fd, 0x01fd, 0x01fd, 0x01fd,
- 0x0206, 0x0206, 0x0206, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x022a, 0x022a, 0x024e, 0x024e, 0x024e,
- 0x024e, 0x024e, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
- 0x0266, 0x0266, 0x0266, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
- 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
- 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
- // Entry 80 - BF
- 0x0275, 0x0275, 0x0275, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
- 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0290,
- 0x0290, 0x0290, 0x02a2, 0x02a2, 0x02a2, 0x02a2, 0x02ab, 0x02b7,
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02db, 0x02ed, 0x02fa, 0x0329,
-} // Size: 360 bytes
-
-var skScriptStr string = "" + // Size: 487 bytes
- "arabskéarménskebalijskýbengálskebopomofobraillovocyrilikadévanágaríegypt" +
- "ské hieroglyfyetiópskegruzínskehlaholikagotickýgréckegudžarátígurmukhiha" +
- "ngulčínskečínske zjednodušenéčínske tradičnéhebrejskéhiraganajaponskékat" +
- "akanakhmérskekannadskékórejskélaoskélatinkalineárna Alineárna Bmayské hi" +
- "eroglyfymalajálamskemongolskébarmskéuríjskeosmanskýRunové písmosinhálske" +
- "tamilskételugskétánathajskétibetskésymbolybez zápisuvšeobecnéneznáme pís" +
- "mo"
-
-var skScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011,
- 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x002c, 0x002c,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x004a, 0x004a, 0x004a,
- 0x004a, 0x004a, 0x005e, 0x005e, 0x0067, 0x0067, 0x0071, 0x007a,
- 0x0082, 0x0082, 0x0089, 0x0095, 0x009d, 0x00a3, 0x00ab, 0x00ab,
- 0x00c2, 0x00d5, 0x00d5, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
- 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f8,
- // Entry 40 - 7F
- 0x00f8, 0x0101, 0x0101, 0x010b, 0x0115, 0x0115, 0x0115, 0x0115,
- 0x011c, 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x012e, 0x0139,
- 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x014b,
- 0x014b, 0x014b, 0x014b, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162,
- 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
- 0x016a, 0x016a, 0x016a, 0x0172, 0x017b, 0x017b, 0x017b, 0x017b,
- 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b,
- 0x017b, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
- // Entry 80 - BF
- 0x0189, 0x0189, 0x0189, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193,
- 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x019c,
- 0x019c, 0x019c, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01aa, 0x01b2,
- 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb,
- 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d8, 0x01e7,
-} // Size: 360 bytes
-
-var slScriptStr string = "" + // Size: 1487 bytes
- "arabskiimperialno-aramejskiarmenskiavestanskibalijskibataškibengalskizna" +
- "kovna pisava Blissbopomofobramanskibraillova pisavabuginskibuhidskipoeno" +
- "tena zlogovna pisava kanadskih staroselcevChamčerokeškikirtkoptskiciprsk" +
- "icirilicastarocerkvenoslovanska cirilicadevanagarščicafonetska pisava de" +
- "seretdemotska egipčanska pisavahieratska egipčanska pisavaegipčanska sli" +
- "kovna pisavaetiopskicerkvenogruzijskigruzijskiglagoliškigotskigrškigudža" +
- "ratskigurmukihangulkanjihanunskipoenostavljena pisava hantradicionalna p" +
- "isava hanhebrejskihiraganapahavhmonska zlogovna pisavakatakana ali hirag" +
- "anastaroogrskiinduškistaroitalskijavanskijaponskikarenskikatakanagandars" +
- "kikmerskikanadskikorejskikajatskilaoškifrakturagelski latiničnilatinical" +
- "epškilimbuškilinearna pisava Alinearna pisava Blicijskilidijskimandanski" +
- "manihejskimajevska slikovna pisavameroitskimalajalamskimongolskaMoonova " +
- "pisava za slepemanipurskimjanmarskiogamskisantalskiorkonskiorijskiosmans" +
- "kistaropermijskipagpajskivrezani napisi pahlavipsalmski pahlaviknjižno p" +
- "alavanskifeničanskiPollardova fonetska pisavarongorongorunskisamaritansk" +
- "isaratskiznakovna pisavašojevskisinhalskisundanskisiletsko-nagarijskisir" +
- "ijskisirska abeceda estrangelozahodnosirijskivzhodnosirijskitagbanskitam" +
- "ilskitajsko-vietnamskiteluškitengvarskitifinajskitagaloškitanajskitajski" +
- "tibetanskiugaritskizlogovna pisava vaividni govorstaroperzijskisumersko-" +
- "akadski klinopispodedovanmatematična znamenjasimbolinenapisanosplošnonez" +
- "nan ali neveljaven zapis"
-
-var slScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001b, 0x0023, 0x002d,
- 0x0035, 0x0035, 0x0035, 0x003d, 0x0046, 0x005b, 0x0063, 0x006c,
- 0x007c, 0x0084, 0x008c, 0x008c, 0x00bb, 0x00bb, 0x00bf, 0x00ca,
- 0x00ce, 0x00d5, 0x00dc, 0x00e4, 0x0103, 0x0113, 0x012a, 0x012a,
- 0x0145, 0x0161, 0x017c, 0x017c, 0x0184, 0x0195, 0x019e, 0x01a9,
- 0x01af, 0x01af, 0x01b5, 0x01c1, 0x01c8, 0x01ce, 0x01d3, 0x01db,
- 0x01f4, 0x020c, 0x020c, 0x0215, 0x021d, 0x021d, 0x0239, 0x024e,
- 0x0259, 0x0261, 0x026d, 0x0275, 0x027d, 0x027d, 0x0285, 0x028d,
- // Entry 40 - 7F
- 0x0296, 0x029d, 0x029d, 0x02a5, 0x02ad, 0x02ad, 0x02b5, 0x02b5,
- 0x02bc, 0x02c4, 0x02d5, 0x02dd, 0x02e4, 0x02ed, 0x02fe, 0x030f,
- 0x030f, 0x030f, 0x0317, 0x031f, 0x031f, 0x0328, 0x0332, 0x034a,
- 0x034a, 0x034a, 0x0353, 0x035f, 0x035f, 0x0368, 0x037f, 0x037f,
- 0x0389, 0x0389, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393,
- 0x039a, 0x03a3, 0x03ab, 0x03b2, 0x03ba, 0x03ba, 0x03ba, 0x03c8,
- 0x03d1, 0x03e7, 0x03f7, 0x040a, 0x0415, 0x042f, 0x042f, 0x042f,
- 0x0439, 0x043f, 0x044b, 0x0453, 0x0453, 0x0453, 0x0462, 0x046b,
- // Entry 80 - BF
- 0x046b, 0x046b, 0x046b, 0x0474, 0x0474, 0x047d, 0x0490, 0x0498,
- 0x04b1, 0x04c0, 0x04cf, 0x04d8, 0x04d8, 0x04d8, 0x04d8, 0x04e0,
- 0x04e0, 0x04f1, 0x04f9, 0x0503, 0x050d, 0x0517, 0x051f, 0x0525,
- 0x052f, 0x052f, 0x0538, 0x054b, 0x0556, 0x0556, 0x0556, 0x0564,
- 0x057d, 0x057d, 0x0586, 0x059b, 0x05a2, 0x05ac, 0x05b4, 0x05cf,
-} // Size: 360 bytes
-
-var sqScriptStr string = "" + // Size: 290 bytes
- "arabikarmenbengalbopomofbrailishtcirilikdevanagaretiopikgjeorgjiangrekgu" +
- "xharatgurmukhangulhanhan i thjeshtuarhan tradicionalhebraikhiraganjapone" +
- "zkatakankmerkanadkoreanlaosishtlatinmalajalammongolbirmanorijasinhaltami" +
- "ltelugtanishttajlandeztibetishtme simbolei pashkruari zakonshëmi panjohu" +
- "r"
-
-var sqScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x0011, 0x0011, 0x0018, 0x0018,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0046, 0x004e, 0x0054, 0x005a, 0x005d, 0x005d,
- 0x006d, 0x007c, 0x007c, 0x0083, 0x008a, 0x008a, 0x008a, 0x008a,
- 0x008a, 0x008a, 0x008a, 0x008a, 0x0091, 0x0091, 0x0091, 0x0098,
- // Entry 40 - 7F
- 0x0098, 0x009c, 0x009c, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
- 0x00af, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
- 0x00b4, 0x00b4, 0x00b4, 0x00bd, 0x00bd, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
- 0x00c9, 0x00c9, 0x00c9, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- // Entry 80 - BF
- 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
- 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d9,
- 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e5, 0x00ee,
- 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0101, 0x010c, 0x0118, 0x0122,
-} // Size: 360 bytes
-
-var srScriptStr string = "" + // Size: 3698 bytes
- "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" +
- "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо писмо" +
- "браманско писмоБрајево писмобугинско писмобухидско писмочакманско писмо" +
- "уједињени канадски абориџински силабицикаријско писмочамско писмоЧероки" +
- "цирт писмокоптичко писмокипарско писмоћирилицаСтарословенска црквена ћи" +
- "рилицадеванагариДезеретегипатско народно писмоегипатско хијератско писм" +
- "оегипатски хијероглифиетиопско писмогрузијско кхутсури писмогрузијско п" +
- "исмоглагољицаГотикагрчко писмогуџаратско писмогурмуки писмохангулханхан" +
- "унопоједностављено хан писмотрадиционално хан писмохебрејско писмохираг" +
- "анапахав хмонг писмоКатакана или Хираганастаромађарско писмоиндушко пис" +
- "мостари италикјаванско писмојапанско писмокајах-ли писмокатаканакарошти" +
- " писмокмерско писмоканада писмокорејско писмокаитиланна писмолаошко писм" +
- "олатиница (фрактур варијанта)галска латиницалатиницалепча писмолимбу пи" +
- "смолинеарно А писмолинеарно Б писмолисијско писмолидијско писмомандеанс" +
- "ко писмоманихејско писмомајански хијероглифимероитик писмомалајалам пис" +
- "момонголско писмомесечево писмомеитеи мајек писмомијанмарско писмон’ко " +
- "писмоогамско писмоол чики писмоорконско писмооријанско писмоосмањанско " +
- "писмостаро пермикско писмопагс-па писмописани пахлавипсалтер пахлавипах" +
- "лави писмоФеничанско писмопоралд фонетско писмописани партианрејанг пис" +
- "моронгоронго писморунско писмосамаританско писмосарати писмосаураштра п" +
- "исмознаковно писмошавијанско писмосинхалско писмосунданско писмосилоти " +
- "нагри писмосиријско писмосиријско естрангело писмозападносиријско писмо" +
- "писмо источне Сиријетагбанва писмотаи ле писмонови таи луетамилско писм" +
- "отаи виет писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмо" +
- "тајландско писмотибетанско писмоугаритско писмоваи писмовидљиви говорст" +
- "ароперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно писм" +
- "оматематичка нотацијасимболинеписани језикзаједничко писмонепознато пис" +
- "мо"
-
-var srScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087,
- 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131,
- 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226,
- 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd,
- 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc,
- 0x03e8, 0x03e8, 0x03fd, 0x041c, 0x0435, 0x0441, 0x0447, 0x0453,
- 0x0483, 0x04af, 0x04af, 0x04cc, 0x04dc, 0x04dc, 0x04fc, 0x0524,
- 0x0549, 0x0562, 0x0579, 0x0594, 0x05af, 0x05af, 0x05c9, 0x05d9,
- // Entry 40 - 7F
- 0x05f2, 0x060b, 0x060b, 0x0622, 0x063d, 0x063d, 0x0647, 0x065c,
- 0x0673, 0x06a7, 0x06c4, 0x06d4, 0x06e9, 0x06fe, 0x071c, 0x073a,
- 0x073a, 0x073a, 0x0755, 0x0770, 0x0770, 0x078f, 0x07ae, 0x07d5,
- 0x07d5, 0x07d5, 0x07f0, 0x080d, 0x080d, 0x082a, 0x0845, 0x0845,
- 0x0867, 0x0867, 0x0888, 0x0888, 0x0888, 0x0888, 0x089c, 0x089c,
- 0x08b5, 0x08cd, 0x08e8, 0x0905, 0x0924, 0x0924, 0x0924, 0x094c,
- 0x0964, 0x097f, 0x099c, 0x09b5, 0x09d4, 0x09fc, 0x0a17, 0x0a2e,
- 0x0a4d, 0x0a64, 0x0a87, 0x0a9e, 0x0a9e, 0x0abb, 0x0ad6, 0x0af5,
- // Entry 80 - BF
- 0x0af5, 0x0af5, 0x0af5, 0x0b12, 0x0b12, 0x0b2f, 0x0b51, 0x0b6c,
- 0x0b9c, 0x0bc5, 0x0beb, 0x0c06, 0x0c06, 0x0c1c, 0x0c32, 0x0c4d,
- 0x0c4d, 0x0c67, 0x0c7e, 0x0c97, 0x0cb0, 0x0cbe, 0x0cd3, 0x0cf2,
- 0x0d11, 0x0d11, 0x0d2e, 0x0d3f, 0x0d58, 0x0d58, 0x0d58, 0x0d7f,
- 0x0dbc, 0x0dcb, 0x0de6, 0x0e0d, 0x0e1b, 0x0e36, 0x0e55, 0x0e72,
-} // Size: 360 bytes
-
-var srLatnScriptStr string = "" + // Size: 1953 bytes
- "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" +
- "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pismob" +
- "ramansko pismoBrajevo pismobuginsko pismobuhidsko pismočakmansko pismouj" +
- "edinjeni kanadski aboridžinski silabicikarijsko pismočamsko pismoČerokic" +
- "irt pismokoptičko pismokiparsko pismoćirilicaStaroslovenska crkvena ćiri" +
- "licadevanagariDezeretegipatsko narodno pismoegipatsko hijeratsko pismoeg" +
- "ipatski hijeroglifietiopsko pismogruzijsko khutsuri pismogruzijsko pismo" +
- "glagoljicaGotikagrčko pismogudžaratsko pismogurmuki pismohangulhanhanuno" +
- "pojednostavljeno han pismotradicionalno han pismohebrejsko pismohiragana" +
- "pahav hmong pismoKatakana ili Hiraganastaromađarsko pismoinduško pismost" +
- "ari italikjavansko pismojapansko pismokajah-li pismokatakanakarošti pism" +
- "okmersko pismokanada pismokorejsko pismokaitilanna pismolaoško pismolati" +
- "nica (fraktur varijanta)galska latinicalatinicalepča pismolimbu pismolin" +
- "earno A pismolinearno B pismolisijsko pismolidijsko pismomandeansko pism" +
- "omanihejsko pismomajanski hijeroglifimeroitik pismomalajalam pismomongol" +
- "sko pismomesečevo pismomeitei majek pismomijanmarsko pismon’ko pismoogam" +
- "sko pismool čiki pismoorkonsko pismoorijansko pismoosmanjansko pismostar" +
- "o permiksko pismopags-pa pismopisani pahlavipsalter pahlavipahlavi pismo" +
- "Feničansko pismoporald fonetsko pismopisani partianrejang pismorongorong" +
- "o pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakovno" +
- " pismošavijansko pismosinhalsko pismosundansko pismosiloti nagri pismosi" +
- "rijsko pismosirijsko estrangelo pismozapadnosirijsko pismopismo istočne " +
- "Sirijetagbanva pismotai le pismonovi tai luetamilsko pismotai viet pismo" +
- "telugu pismotengvar pismotifinag pismoTagalogthana pismotajlandsko pismo" +
- "tibetansko pismougaritsko pismovai pismovidljivi govorstaropersijsko pis" +
- "mosumersko-akadsko kuneiform pismoji pismonasledno pismomatematička nota" +
- "cijasimbolinepisani jezikzajedničko pismonepoznato pismo"
-
-var srLatnScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046,
- 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f,
- 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124,
- 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185,
- 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a,
- 0x0210, 0x0210, 0x021c, 0x022e, 0x023b, 0x0241, 0x0244, 0x024a,
- 0x0264, 0x027b, 0x027b, 0x028a, 0x0292, 0x0292, 0x02a3, 0x02b8,
- 0x02cc, 0x02da, 0x02e6, 0x02f4, 0x0302, 0x0302, 0x0310, 0x0318,
- // Entry 40 - 7F
- 0x0326, 0x0333, 0x0333, 0x033f, 0x034d, 0x034d, 0x0352, 0x035d,
- 0x036a, 0x0386, 0x0395, 0x039d, 0x03a9, 0x03b4, 0x03c4, 0x03d4,
- 0x03d4, 0x03d4, 0x03e2, 0x03f0, 0x03f0, 0x0400, 0x0410, 0x0424,
- 0x0424, 0x0424, 0x0432, 0x0441, 0x0441, 0x0450, 0x045f, 0x045f,
- 0x0471, 0x0471, 0x0482, 0x0482, 0x0482, 0x0482, 0x048e, 0x048e,
- 0x049b, 0x04a9, 0x04b7, 0x04c6, 0x04d7, 0x04d7, 0x04d7, 0x04ec,
- 0x04f9, 0x0507, 0x0516, 0x0523, 0x0534, 0x0549, 0x0557, 0x0563,
- 0x0573, 0x057f, 0x0591, 0x059d, 0x059d, 0x05ad, 0x05bb, 0x05cc,
- // Entry 80 - BF
- 0x05cc, 0x05cc, 0x05cc, 0x05db, 0x05db, 0x05ea, 0x05fc, 0x060a,
- 0x0623, 0x0638, 0x064d, 0x065b, 0x065b, 0x0667, 0x0673, 0x0681,
- 0x0681, 0x068f, 0x069b, 0x06a8, 0x06b5, 0x06bc, 0x06c7, 0x06d7,
- 0x06e7, 0x06e7, 0x06f6, 0x06ff, 0x070d, 0x070d, 0x070d, 0x0721,
- 0x0741, 0x0749, 0x0757, 0x076c, 0x0773, 0x0781, 0x0792, 0x07a1,
-} // Size: 360 bytes
-
-var svScriptStr string = "" + // Size: 1661 bytes
- "afakiskakaukasiska albanskaahomarabiskaimperisk arameiskaarmeniskaavesti" +
- "skabalinesiskabamunskabassaiska vahbatakbengaliskablissymbolerbopomofobr" +
- "amipunktskriftbuginesiskabuhidchakmakanadensiska stavelseteckenkariskach" +
- "amcherokeecirtkoptiskacypriotiskakyrilliskafornkyrkoslavisk kyrilliskade" +
- "vanagarideseretDuployéstenografiskademotiskahieratiskaegyptiska hierogly" +
- "ferelbasiskaetiopiskakutsurigeorgiskaglagolitiskagotiskagammaltamilskagr" +
- "ekiskagujaratigurmukhihangulhanhanunåförenklade han-teckentraditionella " +
- "han-teckenhatranhebreiskahiraganahittitiska hieroglyferpahaw mongkatakan" +
- "a/hiraganafornungerskaindusfornitaliskajavanskajapanskajurchenskakaya li" +
- "katakanakharoshtikhmeriskakhojkiskakanaresiskakoreanskakpellékaithiskala" +
- "nnalaotiskafrakturlatingaeliskt latinlatinskaronglimbulinjär Alinjär BFr" +
- "aserlomalykiskalydiskamahajaniskamandaéiskamanikeanskamayahieroglyfermen" +
- "dekursiv-meroitiskameroitiskamalayalammodiskamongoliskamoonmrumeitei-may" +
- "ekmultaniskaburmesiskafornnordarabiskanabatateiskanaxi geban-kånüshuogha" +
- "mol-chikiorkonoriyaosmanjapalmyreniskaPau Cin Hau-skriftfornpermiskaphag" +
- "s-patidig pahlavipsaltaren-pahlavibokpahlavifenikiskapollardteckentidig " +
- "parthianskarejangrongo-rongorunorsamaritiskasaratifornsydarabiskasaurash" +
- "trateckningsskriftshawiskasharadasiddhamskasindhiskasingalesiskasora som" +
- "pengsundanesiskasyloti nagrisyriskaestrangelosyriskavästsyriskaöstsyrisk" +
- "atagbanwatakritiskatai letai luetamilskatangutiskatai viettelugutengwart" +
- "ifinaghiskatagalogtaanathailändskatibetanskatirhutaugaritiskavajsynligt " +
- "talvarang kshitiwoleaifornpersiskasumeo-akkadisk kilskriftyiärvdamatemat" +
- "isk notationsymboleroskrivet språkgemensammaokänt skriftsystem"
-
-var svScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0008, 0x001b, 0x001f, 0x0027, 0x0039, 0x0042, 0x004b,
- 0x0056, 0x005e, 0x006b, 0x0070, 0x007a, 0x0086, 0x008e, 0x0093,
- 0x009e, 0x00a9, 0x00ae, 0x00b4, 0x00cf, 0x00d6, 0x00da, 0x00e2,
- 0x00e6, 0x00ee, 0x00f9, 0x0103, 0x011e, 0x0128, 0x012f, 0x0144,
- 0x014d, 0x0157, 0x016c, 0x0175, 0x017e, 0x0185, 0x018e, 0x019a,
- 0x01a1, 0x01af, 0x01b7, 0x01bf, 0x01c7, 0x01cd, 0x01d0, 0x01d7,
- 0x01ed, 0x0205, 0x020b, 0x0214, 0x021c, 0x0232, 0x023c, 0x024d,
- 0x0259, 0x025e, 0x026a, 0x0272, 0x027a, 0x0284, 0x028b, 0x0293,
- // Entry 40 - 7F
- 0x029c, 0x02a5, 0x02ae, 0x02b9, 0x02c2, 0x02c9, 0x02d2, 0x02d7,
- 0x02df, 0x02eb, 0x02f9, 0x0301, 0x0305, 0x030a, 0x0313, 0x031c,
- 0x0322, 0x0326, 0x032d, 0x0334, 0x033f, 0x034a, 0x0355, 0x0364,
- 0x0369, 0x037a, 0x0384, 0x038d, 0x0394, 0x039e, 0x03a2, 0x03a5,
- 0x03b1, 0x03bb, 0x03c5, 0x03d5, 0x03e1, 0x03ea, 0x03ef, 0x03f5,
- 0x03fa, 0x0402, 0x0407, 0x040c, 0x0413, 0x041f, 0x0431, 0x043d,
- 0x0445, 0x0452, 0x0463, 0x046d, 0x0476, 0x0483, 0x0494, 0x049a,
- 0x04a5, 0x04aa, 0x04b5, 0x04bb, 0x04ca, 0x04d4, 0x04e3, 0x04eb,
- // Entry 80 - BF
- 0x04f2, 0x04fc, 0x0505, 0x0511, 0x051d, 0x0529, 0x0535, 0x053c,
- 0x054d, 0x0559, 0x0564, 0x056c, 0x0576, 0x057c, 0x0583, 0x058b,
- 0x0595, 0x059d, 0x05a3, 0x05aa, 0x05b6, 0x05bd, 0x05c2, 0x05ce,
- 0x05d8, 0x05df, 0x05e9, 0x05ec, 0x05f7, 0x0604, 0x060a, 0x0616,
- 0x062e, 0x0630, 0x0636, 0x0649, 0x0651, 0x0660, 0x066a, 0x067d,
-} // Size: 360 bytes
-
-var swScriptStr string = "" + // Size: 346 bytes
- "KiarabuKiarmeniaKibengaliKibopomofoBrailleKisirilikiKidevanagariKiethiop" +
- "iaKijojiaKigirikiKigujaratiKigurmukhiKihangulKihanKihan RahisiKihan cha " +
- "JadiKiebraniaKihiraganaKijapaniKikatakanaKikambodiaKikannadaKikoreaKilao" +
- "siKilatiniKimalayalamKimongoliaMyamaKioriyaKisinhalaKitamilKiteluguKitha" +
- "anaKitaiKitibetiAlamaHaijaandikwaKawaidaHati isiyojulikana"
-
-var swScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023,
- 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
- 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, 0x0051, 0x0051,
- 0x0051, 0x0051, 0x0059, 0x0063, 0x006d, 0x0075, 0x007a, 0x007a,
- 0x0086, 0x0094, 0x0094, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
- 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00af, 0x00af, 0x00af, 0x00b9,
- // Entry 40 - 7F
- 0x00b9, 0x00c3, 0x00c3, 0x00cc, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00da, 0x00da, 0x00da, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2,
- 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2,
- 0x00e2, 0x00e2, 0x00e2, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7,
- 0x00f7, 0x00f7, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x00fc, 0x00fc, 0x00fc, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- // Entry 80 - BF
- 0x0103, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
- 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0113,
- 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x0123, 0x0128,
- 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
- 0x0130, 0x0130, 0x0130, 0x0130, 0x0135, 0x0141, 0x0148, 0x015a,
-} // Size: 360 bytes
-
-var taScriptStr string = "" + // Size: 3904 bytes
- "அரபிக்இம்பேரியல் அரமெய்க்அர்மேனியன்அவெஸ்தான்பாலினீஸ்பாடாக்வங்காளம்ப்லிஸ்" +
- "ஸிமிபால்ஸ்போபோமோஃபோபிரம்மிபிரெயில்புகினீஸ்புகித்சக்மாயுனிஃபைடு கனடியன்" +
- " அபொரிஜினல் சிலபிக்ஸ்கரியன்சாம்செரோக்கிகிர்த்காப்டிக்சைப்ரியாட்சிரிலிக்ப" +
- "ழைய சர்ச் ஸ்லவோனிக் சிரிலிக்தேவநாகரிடெசராட்எகிப்தியன் டெமோட்டிக்எகிப்த" +
- "ியன் ஹைரேட்டிக்எகிப்தியன் ஹைரோகிளிப்ஸ்எத்தியோபிக்ஜியார்ஜியன் குட்சுரிஜ" +
- "ார்ஜியன்க்லாகோலிடிக்கோதிக்கிரேக்கம்குஜராத்திகுர்முகிஹங்குல்ஹன்ஹனுனூஎளி" +
- "தாக்கப்பட்ட ஹன்பாரம்பரிய ஹன்ஹீப்ருஹிராகானாபஹாவ் மாங்க்கடாகானா அல்லது ஹ" +
- "ிராகானாபழைய ஹங்கேரியன்சிந்துபழைய இத்தாலிஜாவனீஸ்ஜப்பானியம்கயாஹ் லீகதகான" +
- "ாகரோஷ்டிகமெர்கன்னடம்கொரியன்காய்திலன்னாலாவோஃப்ரக்டூர் லெத்தின்கேலிக் லெ" +
- "த்தின்லத்தின்லெப்சாலிம்புலினியர் ஏலினியர் பிலிசியன்லிடியன்மேன்டியன்மனி" +
- "செய்ன்மயான் ஹைரோகிளிப்மெராய்டிக்மலையாளம்மங்கோலியன்மூன்மெய்தெய் மயக்மிய" +
- "ான்மர்என்‘கோஒகாம்ஒல் சிக்கிஆர்கான்ஒரியாஒஸ்மான்யாபழைய பெர்மிக்பக்ஸ்-பாஇ" +
- "ன்ஸ்கிரிப்ஷனல் பஹலவிசால்டர் பஹலவிபுக் பஹலவிஃபோனேஷியன்போலார்ட் ஃபொனெட்ட" +
- "ிக்இன்ஸ்கிரிப்ஷனல் பார்த்தியன்ரெஜெய்ன்ரொங்கோரொங்கோருனிக்சமாரிடன்சாராதி" +
- "சௌராஷ்ட்ராஸைன்எழுத்துஷவியான்சிங்களம்சுந்தானீஸ்சிலோடி நக்ரிசிரியாக்எஸ்ட" +
- "்ரெங்கெலோ சிரியாக்மேற்கு சிரியாக்கிழக்கு சிரியாக்தகோவானாதாய் லேபுதிய த" +
- "ை லூதமிழ்தை வியத்தெலுங்குதெங்வார்டிஃபினாக்தகலாக்தானாதாய்திபெத்தியன்உகா" +
- "ரதிக்வைவிசிபிள் ஸ்பீச்பழைய பெர்ஷியன்சுமெரோ-அக்கடியன் க்யூனிஃபார்ம்யீபா" +
- "ரம்பரியமானகணிதக்குறியீடுசின்னங்கள்எழுதப்படாததுபொதுஅறியப்படாத எழுத்து"
-
-var taScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0049, 0x0067, 0x0082,
- 0x009a, 0x009a, 0x009a, 0x00ac, 0x00c4, 0x00f4, 0x010f, 0x0124,
- 0x013c, 0x0154, 0x0166, 0x0175, 0x01e1, 0x01f3, 0x01ff, 0x0217,
- 0x0229, 0x0241, 0x025f, 0x0277, 0x02c8, 0x02e0, 0x02f5, 0x02f5,
- 0x0332, 0x036f, 0x03b2, 0x03b2, 0x03d3, 0x040d, 0x0428, 0x044c,
- 0x045e, 0x045e, 0x0479, 0x0494, 0x04ac, 0x04c1, 0x04ca, 0x04d9,
- 0x050d, 0x0532, 0x0532, 0x0544, 0x055c, 0x055c, 0x057e, 0x05bf,
- 0x05ea, 0x05fc, 0x061e, 0x0633, 0x0651, 0x0651, 0x0667, 0x0679,
- // Entry 40 - 7F
- 0x068e, 0x069d, 0x069d, 0x06b2, 0x06c7, 0x06c7, 0x06d9, 0x06e8,
- 0x06f4, 0x072b, 0x0756, 0x076b, 0x077d, 0x078f, 0x07a8, 0x07c4,
- 0x07c4, 0x07c4, 0x07d9, 0x07ee, 0x07ee, 0x0809, 0x0824, 0x0852,
- 0x0852, 0x0852, 0x0870, 0x0888, 0x0888, 0x08a6, 0x08b2, 0x08b2,
- 0x08d7, 0x08d7, 0x08f2, 0x08f2, 0x08f2, 0x08f2, 0x0904, 0x0904,
- 0x0913, 0x092f, 0x0944, 0x0953, 0x096e, 0x096e, 0x096e, 0x0993,
- 0x09a9, 0x09e6, 0x0a0b, 0x0a27, 0x0a45, 0x0a7f, 0x0ace, 0x0ae6,
- 0x0b0a, 0x0b1c, 0x0b34, 0x0b46, 0x0b46, 0x0b64, 0x0b85, 0x0b9a,
- // Entry 80 - BF
- 0x0b9a, 0x0b9a, 0x0b9a, 0x0bb2, 0x0bb2, 0x0bd0, 0x0bf2, 0x0c0a,
- 0x0c4a, 0x0c75, 0x0ca3, 0x0cb8, 0x0cb8, 0x0ccb, 0x0ce8, 0x0cf7,
- 0x0cf7, 0x0d0d, 0x0d25, 0x0d3d, 0x0d58, 0x0d6a, 0x0d76, 0x0d82,
- 0x0da3, 0x0da3, 0x0dbb, 0x0dc1, 0x0dec, 0x0dec, 0x0dec, 0x0e14,
- 0x0e6a, 0x0e70, 0x0e94, 0x0ebe, 0x0edc, 0x0f00, 0x0f0c, 0x0f40,
-} // Size: 360 bytes
-
-var teScriptStr string = "" + // Size: 3721 bytes
- "అరబిక్ఇంపీరియల్ అరామాక్అర్మేనియన్అవేస్టాన్బాలినీస్బాటక్బెంగాలిబ్లిస్సింబ" +
- "ల్స్బోపోమోఫోబ్రాహ్మిబ్రెయిల్బ్యుగినీస్బుహిడ్చక్మాయునిఫైడ్ కెనెడియన్ అబ" +
- "ొరిజినల్ సిలబిక్స్కారియన్చామ్చిరోకిసిర్థ్కోప్టిక్సైప్రోట్సిరిలిక్ప్రాచ" +
- "ీన చర్చ స్లావోనిక్ సిరిలిక్దేవనాగరిడేసెరెట్ఇజిప్షియన్ డెమోటిక్ఇజిప్షియ" +
- "న్ హైరాటిక్ఇజిప్షియన్ హైరోగ్లైఫ్స్ఇథియోపిక్జార్జియన్ ఖట్సూరిజార్జియన్గ" +
- "్లాగో లిటిక్గోతిక్గ్రీక్గుజరాతీగుర్ముఖిహంగుల్హాన్హనునూసరళీకృత హాన్సాంప" +
- "్రదాయక హాన్హీబ్రుహిరాగానపాహవా హ్మోంగ్కాటాకాన లేదా హిరాగనప్రాచీన హంగేరి" +
- "యన్సింధుప్రాచిన ఐటాలిక్జావనీస్జాపనీస్కాయాహ్ లికాటాకానఖరోషథిఖ్మేర్కన్నడ" +
- "కొరియన్కైథిలన్నాలావోఫ్రాక్టూర్ లాటిన్గేలిక్ లాటిన్లాటిన్లేప్చాలింబులిన" +
- "ియర్ ఎలినియర్ బిలిసియన్లిడియన్మాన్డియన్మానిచేన్మాయన్ హైరోగ్లైఫ్స్మెరోఇ" +
- "టిక్మలయాళంమంగోలియన్మూన్మీటి మయెక్మయాన్మార్న్కోఒఘమ్ఓల్ చికిఓర్ఖోన్ఒరియా" +
- "ఓసమాన్యప్రాచీన పెర్మిక్ఫాగ్స్-పాఇంస్క్రిప్షనాల్ పహ్లావిసల్టార్ పహ్లావి" +
- "పుస్తక పహ్లావిఫోనిశియన్పోల్లర్డ్ ఫోనెటిక్ఇంస్క్రిప్షనాల్ పార్థియన్రేజా" +
- "ంగ్రోంగో రోంగోరూనిక్సమారిటన్సరాటిసౌరాష్ట్రసంజ్ఞ లిపిషవియాన్సింహళంసుడాన" +
- "ీస్స్లోటి నాగ్రిసిరియాక్ఎస్ట్రానజీలో సిరియాక్పశ్చిమ సిరియాక్తూర్పు సిర" +
- "ియాక్టాగ్బానవాతై లీక్రొత్త టై లుఇతమిళముటై వియట్తెలుగుటేంగ్వార్టిఫీనాఘ్" +
- "టగలాగ్థానాథాయ్టిబెటన్యుగారిటిక్వాయికనిపించే భాషప్రాచీన పర్షియన్సుమేరో-" +
- " అక్కడియన్ క్యునిఫార్మ్యివారసత్వంగణిత సంకేతలిపిచిహ్నాలులిపి లేనిసామాన్యత" +
- "ెలియని లిపి"
-
-var teScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c,
- 0x0094, 0x0094, 0x0094, 0x00a3, 0x00b8, 0x00e2, 0x00fa, 0x0112,
- 0x012a, 0x0148, 0x015a, 0x0169, 0x01d8, 0x01ed, 0x01f9, 0x020b,
- 0x021d, 0x0235, 0x024d, 0x0265, 0x02bf, 0x02d7, 0x02ef, 0x02ef,
- 0x0326, 0x035d, 0x03a0, 0x03a0, 0x03bb, 0x03ec, 0x0407, 0x042c,
- 0x043e, 0x043e, 0x0450, 0x0465, 0x047d, 0x048f, 0x049b, 0x04aa,
- 0x04cc, 0x04f7, 0x04f7, 0x0509, 0x051e, 0x051e, 0x0543, 0x0578,
- 0x05a9, 0x05b8, 0x05e3, 0x05f8, 0x060d, 0x060d, 0x0626, 0x063b,
- // Entry 40 - 7F
- 0x064d, 0x065f, 0x065f, 0x066e, 0x0683, 0x0683, 0x068f, 0x069e,
- 0x06aa, 0x06db, 0x0700, 0x0712, 0x0724, 0x0733, 0x074c, 0x0768,
- 0x0768, 0x0768, 0x077d, 0x0792, 0x0792, 0x07ad, 0x07c5, 0x07f9,
- 0x07f9, 0x07f9, 0x0814, 0x0826, 0x0826, 0x0841, 0x084d, 0x084d,
- 0x0869, 0x0869, 0x0884, 0x0884, 0x0884, 0x0884, 0x0890, 0x0890,
- 0x089c, 0x08b2, 0x08c7, 0x08d6, 0x08eb, 0x08eb, 0x08eb, 0x0919,
- 0x0932, 0x0975, 0x09a0, 0x09c8, 0x09e3, 0x0a17, 0x0a60, 0x0a75,
- 0x0a94, 0x0aa6, 0x0abe, 0x0acd, 0x0acd, 0x0ae8, 0x0b04, 0x0b19,
- // Entry 80 - BF
- 0x0b19, 0x0b19, 0x0b19, 0x0b2b, 0x0b2b, 0x0b43, 0x0b68, 0x0b80,
- 0x0bbd, 0x0be8, 0x0c13, 0x0c2e, 0x0c2e, 0x0c3b, 0x0c61, 0x0c73,
- 0x0c73, 0x0c89, 0x0c9b, 0x0cb6, 0x0cce, 0x0ce0, 0x0cec, 0x0cf8,
- 0x0d0d, 0x0d0d, 0x0d2b, 0x0d37, 0x0d59, 0x0d59, 0x0d59, 0x0d87,
- 0x0ddb, 0x0de1, 0x0df9, 0x0e21, 0x0e39, 0x0e52, 0x0e67, 0x0e89,
-} // Size: 360 bytes
-
-var thScriptStr string = "" + // Size: 4317 bytes
- "อะฟาคาแอลเบเนีย คอเคเซียอาหรับอิมพีเรียล อราเมอิกอาร์เมเนียอเวสตะบาหลีบา" +
- "มุมบัสซาบาตักเบงกาลีบลิสซิมโบลส์ปอพอมอฟอพราหมีเบรลล์บูกิสบูฮิดชากมาสัญ" +
- "ลักษณ์ชนเผ่าพื้นเมืองแคนาดาคาเรียจามเชอโรกีเซิร์ทคอปติกไซเปรียทซีริลลิ" +
- "กเชอร์ชสลาโวนิกซีริลลิกโบราณเทวนาครีเดเซเรทชวเลขดัปโลยันดีโมติกอียิปต์" +
- "เฮียราติกอียิปต์เฮียโรกลิฟส์อียิปต์เอลบ์ซานเอทิโอปิกคัตซูรีจอร์เจียจอร" +
- "์เจียกลาโกลิติกโกธิกคฤณห์กรีกคุชราตกูร์มูคีฮันกูลฮั่นฮานูโนโอฮั่นตัวย่" +
- "อฮั่นตัวเต็มฮีบรูฮิระงะนะอักขระอานาโตเลียปาเฮาห์ม้งคะตะกะนะหรือฮิระงะน" +
- "ะฮังการีโบราณอินดัสอิตาลีโบราณชวาญี่ปุ่นจูร์เชนคยาห์คะตะกะนะขโรษฐีเขมร" +
- "คอจคีกันนาดาเกาหลีเปลเลกายติล้านนาลาวลาติน - ฟรังเตอร์ลาติน - แกลิกละต" +
- "ินเลปชาลิมบูลีเนียร์เอลีเนียร์บีเฟรเซอร์โลมาไลเซียลีเดียมหาชนีแมนเดียน" +
- "มานิแชนมายาไฮโรกลิฟส์เมนเดเคอร์ซีฟ-เมโรอิติกเมโรติกมาลายาลัมโมฑีมองโกเ" +
- "ลียมูนมโรเมเทมาเยกพม่าอาระเบียเหนือโบราณนาบาทาเอียนกีบา-นาซีเอ็นโกนุซุ" +
- "โอคัมโอลชิกิออร์คอนโอริยาออสมันยาพาลไมรีนป่อจิ้งฮอเปอร์มิกโบราณฟากส์-ป" +
- "าปะห์ลาวีอินสคริปชันแนลปะห์ลาวีซอลเตอร์ปะห์ลาวีบุ๊กฟินิเชียสัทศาสตร์พอ" +
- "ลลาร์ดพาร์เทียอินสคริปชันแนลเรจังรองโกรองโกรูนิกซามาเรียซาราติอาระเบีย" +
- "ใต้โบราณโสวรัสตระไซน์ไรติ้งซอเวียนชาราดาสิทธัมคุดาวาดีสิงหลโสราสมเป็งซ" +
- "ุนดาซิโลตินากรีซีเรียซีเรียเอสทรานจีโลซีเรียตะวันตกซีเรียตะวันออกตักบั" +
- "นวาทาครีไทเลไทลื้อใหม่ทมิฬตันกัทไทเวียตเทลูกูเทงกวาร์ทิฟินากตากาล็อกทา" +
- "นาไทยทิเบตเทอฮุทายูการิตไวคำพูดที่มองเห็นได้วารังกสิติโอลีเอเปอร์เซียโ" +
- "บราณอักษรรูปลิ่มสุเมเรีย-อัคคาเดียยิอินเฮอริตเครื่องหมายทางคณิตศาสตร์ซ" +
- "ิมโบลส์ไม่มีภาษาเขียนสามัญสคริปต์ที่ไม่รู้จัก"
-
-var thScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0046, 0x0046, 0x0058, 0x008f, 0x00ad, 0x00bf,
- 0x00ce, 0x00dd, 0x00ec, 0x00fb, 0x0110, 0x0134, 0x014c, 0x015e,
- 0x0170, 0x017f, 0x018e, 0x019d, 0x01f7, 0x0209, 0x0212, 0x0227,
- 0x0239, 0x024b, 0x0263, 0x027b, 0x02cc, 0x02e4, 0x02f9, 0x0320,
- 0x034a, 0x037a, 0x03b3, 0x03cb, 0x03e6, 0x0413, 0x042b, 0x0449,
- 0x0458, 0x0467, 0x0473, 0x0485, 0x049d, 0x04af, 0x04bb, 0x04d3,
- 0x04f1, 0x0512, 0x0512, 0x0521, 0x0539, 0x0569, 0x0587, 0x05c3,
- 0x05e7, 0x05f9, 0x061a, 0x0623, 0x0638, 0x064d, 0x065c, 0x0674,
- // Entry 40 - 7F
- 0x0686, 0x0692, 0x06a1, 0x06b6, 0x06c8, 0x06d7, 0x06e6, 0x06f8,
- 0x0701, 0x072e, 0x074f, 0x075e, 0x076d, 0x077c, 0x079a, 0x07b8,
- 0x07d0, 0x07dc, 0x07ee, 0x0800, 0x0812, 0x082a, 0x083f, 0x0869,
- 0x0878, 0x08ac, 0x08c1, 0x08dc, 0x08e8, 0x0903, 0x090c, 0x0915,
- 0x0930, 0x0930, 0x093c, 0x0972, 0x0993, 0x09ac, 0x09be, 0x09ca,
- 0x09d9, 0x09ee, 0x0a03, 0x0a15, 0x0a2d, 0x0a45, 0x0a60, 0x0a87,
- 0x0a9d, 0x0adf, 0x0b0f, 0x0b33, 0x0b4b, 0x0b7e, 0x0bc0, 0x0bcf,
- 0x0bed, 0x0bfc, 0x0c14, 0x0c26, 0x0c56, 0x0c71, 0x0c8f, 0x0ca4,
- // Entry 80 - BF
- 0x0cb6, 0x0cc8, 0x0ce0, 0x0cef, 0x0d0d, 0x0d1c, 0x0d3d, 0x0d4f,
- 0x0d82, 0x0da9, 0x0dd3, 0x0deb, 0x0dfa, 0x0e06, 0x0e24, 0x0e30,
- 0x0e42, 0x0e57, 0x0e69, 0x0e81, 0x0e96, 0x0eae, 0x0eba, 0x0ec3,
- 0x0ed2, 0x0ee7, 0x0efc, 0x0f02, 0x0f38, 0x0f56, 0x0f68, 0x0f92,
- 0x0fea, 0x0ff0, 0x100b, 0x1053, 0x106b, 0x1095, 0x10a4, 0x10dd,
-} // Size: 360 bytes
-
-var trScriptStr string = "" + // Size: 1491 bytes
- "AfakaKafkas AlbanyasıArapİmparatorluk AramicesiErmeniAvestaBali DiliBamu" +
- "mBassa VahBatakBengalBlis SembolleriBopomofoBrahmiBrailleBugisBuhidChakm" +
- "aUCASKaryaChamÇerokiCirthKıptiKıbrısKirilEski Kilise Slavcası KirilDevan" +
- "agariDeseretDuployé StenografiDemotik MısırHiyeratik MısırMısır Hiyerogl" +
- "ifleriElbasanEtiyopyaHutsuri GürcüGürcüGlagolitGotikGranthaYunanGüceratG" +
- "urmukhiHangılHanHanunooBasitleştirilmiş HanGeleneksel HanİbraniHiraganaA" +
- "nadolu HiyeroglifleriPahavh HmongKatakana veya HiraganaEski MacarIndusEs" +
- "ki İtalyanCava DiliJaponJurchenKayah LiKatakanaKharoshthiKmerKhojkiKanna" +
- "daKoreKpelleKaithiLannaLaoFraktur LatinGael LatinLatinLepchaLimbuLineer " +
- "ALineer BFraserLomaLikyaLidyaMahajaniMandenManiMaya HiyeroglifleriMendeM" +
- "eroitik El YazısıMeroitikMalayalamModiMoğolMoonMroMeitei MayekBurmaEski " +
- "Kuzey ArapNebatiNaksi GebaN’KoNüshuOghamOl ChikiOrhunOriyaOsmanyaPalmira" +
- "Pau Cin HauEski PermikPhags-paPehlevi Kitabe DiliPsalter PehleviKitap Pe" +
- "hlevi DiliFenikePollard FonetikPartça Kitabe DiliRejangRongorongoRunikSa" +
- "maritSaratiEski Güney ArapSaurashtraİşaret DiliShavianSharadaSiddhamKhud" +
- "abadiSeylanSora SompengSundaSyloti NagriSüryaniEstrangela SüryaniBatı Sü" +
- "ryaniDoğu SüryaniTagbanvaTakriTai LeNew Tai LueTamilTangutTai VietTelugu" +
- "TengvarTifinaghTakalotThaanaTayTibetTirhutaUgarit Çivi YazısıVaiKonuşma " +
- "Sesleri ÇizimlemesiVarang KshitiWoleaiEski FarsSümer-Akad Çivi YazısıYiK" +
- "alıtsalMatematiksel GösterimSembolYazılı OlmayanOrtakBilinmeyen Alfabe"
-
-var trScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0005, 0x0016, 0x0016, 0x001a, 0x0031, 0x0037, 0x003d,
- 0x0046, 0x004b, 0x0054, 0x0059, 0x005f, 0x006e, 0x0076, 0x007c,
- 0x0083, 0x0088, 0x008d, 0x0093, 0x0097, 0x009c, 0x00a0, 0x00a7,
- 0x00ac, 0x00b2, 0x00ba, 0x00bf, 0x00da, 0x00e4, 0x00eb, 0x00fe,
- 0x010d, 0x011e, 0x0134, 0x013b, 0x0143, 0x0152, 0x0159, 0x0161,
- 0x0166, 0x016d, 0x0172, 0x017a, 0x0182, 0x0189, 0x018c, 0x0193,
- 0x01a9, 0x01b7, 0x01b7, 0x01be, 0x01c6, 0x01dc, 0x01e8, 0x01fe,
- 0x0208, 0x020d, 0x021a, 0x0223, 0x0228, 0x022f, 0x0237, 0x023f,
- // Entry 40 - 7F
- 0x0249, 0x024d, 0x0253, 0x025a, 0x025e, 0x0264, 0x026a, 0x026f,
- 0x0272, 0x027f, 0x0289, 0x028e, 0x0294, 0x0299, 0x02a1, 0x02a9,
- 0x02af, 0x02b3, 0x02b8, 0x02bd, 0x02c5, 0x02cb, 0x02cf, 0x02e2,
- 0x02e7, 0x02fb, 0x0303, 0x030c, 0x0310, 0x0316, 0x031a, 0x031d,
- 0x0329, 0x0329, 0x032e, 0x033d, 0x0343, 0x034d, 0x0353, 0x0359,
- 0x035e, 0x0366, 0x036b, 0x0370, 0x0377, 0x037e, 0x0389, 0x0394,
- 0x039c, 0x03af, 0x03be, 0x03d0, 0x03d6, 0x03e5, 0x03f8, 0x03fe,
- 0x0408, 0x040d, 0x0414, 0x041a, 0x042a, 0x0434, 0x0441, 0x0448,
- // Entry 80 - BF
- 0x044f, 0x0456, 0x045f, 0x0465, 0x0471, 0x0476, 0x0482, 0x048a,
- 0x049d, 0x04ab, 0x04b9, 0x04c1, 0x04c6, 0x04cc, 0x04d7, 0x04dc,
- 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x04ff, 0x0506, 0x050c, 0x050f,
- 0x0514, 0x051b, 0x0530, 0x0533, 0x0550, 0x055d, 0x0563, 0x056c,
- 0x0586, 0x0588, 0x0591, 0x05a7, 0x05ad, 0x05bd, 0x05c2, 0x05d3,
-} // Size: 360 bytes
-
-var ukScriptStr string = "" + // Size: 2925 bytes
- "афакакавказька албанськаахомарабицяАрмівірменськаАвестійськийБалійськийБ" +
- "амумбассаБатакбенгальськасимволи БліссабопомофоБрахмішрифт БрайляБугійс" +
- "ькийБухідЧакмауніфіковані символи канадських тубільцівКаріанськийХамітс" +
- "ькийЧерокіКиртКоптськийКіпрськийкирилицяДавньоцерковнословʼянськийдеван" +
- "агаріДезеретЄгипетський демотичнийЄгипетський ієратичнийЄгипетський ієр" +
- "огліфічнийефіопськаКхутсурігрузинськаГлаголичнийГотичнийгрецькагуджарат" +
- "ігурмухіхангилькитайськаХанунукитайська спрощенакитайська традиційнаівр" +
- "итхіраганаПахау хмонгКатакана чи хіраганаДавньоугорськийХарапськийДавнь" +
- "оіталійськийЯванськийяпонськаКая ЛікатаканаКхароштхікхмерськаканнадакор" +
- "ейськаКаїтіЛанналаоськаЛатинський фрактурнийЛатинський гельськийлатиниц" +
- "яЛепчаЛімбуЛінійний АЛінійний Вабетка ФрейзераломаЛікійськийЛідійськийМ" +
- "андейськийМаніхейськийМайя ієрогліфічнийМероїтськиймалаяламськамонгольс" +
- "ькаМунМейтей майєкмʼянмськаНкоОгамічнийСантальськийОрхонськийоріяОсманс" +
- "ькийДавньопермськийПхагс-паПехлеві написівПехлеві релігійнийПехлеві літ" +
- "ературнийФінікійськийписемність ПоллардаПарфянськийРеджангРонго-ронгоРу" +
- "нічнийСамаритянськийСаратіСаураштраЗнаковийШоусингальськаСунданськийСіл" +
- "оті нагріСирійськийДавньосирійський естрангелоДавньосирійський західний" +
- "Давньосирійський східнийТагбанваТай-ліНовий тайський луетамільськатангу" +
- "тТай-вʼєттелугуТенгварТифінагТагальськийтаанатайськатибетськаУгаритськи" +
- "йВаївидиме мовленняДавньоперськийШумеро-аккадський клінописЙїуспадкован" +
- "аматематичнасимвольнабезписемназвичайнаневідома система письма"
-
-var ukScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x002f, 0x0037, 0x0045, 0x004d, 0x0061, 0x0079,
- 0x008d, 0x0097, 0x00a1, 0x00ab, 0x00c1, 0x00dc, 0x00ec, 0x00f8,
- 0x010f, 0x0123, 0x012d, 0x0137, 0x0184, 0x019a, 0x01ae, 0x01ba,
- 0x01c2, 0x01d4, 0x01e6, 0x01f6, 0x022a, 0x023e, 0x024c, 0x024c,
- 0x0277, 0x02a2, 0x02d3, 0x02d3, 0x02e5, 0x02f5, 0x0309, 0x031f,
- 0x032f, 0x032f, 0x033d, 0x034f, 0x035d, 0x036b, 0x037d, 0x0389,
- 0x03ac, 0x03d3, 0x03d3, 0x03dd, 0x03ed, 0x03ed, 0x0402, 0x0428,
- 0x0446, 0x045a, 0x047c, 0x048e, 0x049e, 0x049e, 0x04a9, 0x04b9,
- // Entry 40 - 7F
- 0x04cb, 0x04dd, 0x04dd, 0x04eb, 0x04fd, 0x04fd, 0x0507, 0x0511,
- 0x051f, 0x0548, 0x056f, 0x057f, 0x0589, 0x0593, 0x05a6, 0x05b9,
- 0x05d6, 0x05de, 0x05f2, 0x0606, 0x0606, 0x061c, 0x0634, 0x0657,
- 0x0657, 0x0657, 0x066d, 0x0685, 0x0685, 0x069b, 0x06a1, 0x06a1,
- 0x06b8, 0x06b8, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d0, 0x06d0,
- 0x06e2, 0x06fa, 0x070e, 0x0716, 0x072a, 0x072a, 0x072a, 0x0748,
- 0x0757, 0x0774, 0x0797, 0x07be, 0x07d6, 0x07fb, 0x0811, 0x081f,
- 0x0834, 0x0844, 0x0860, 0x086c, 0x086c, 0x087e, 0x088e, 0x0894,
- // Entry 80 - BF
- 0x0894, 0x0894, 0x0894, 0x08aa, 0x08aa, 0x08c0, 0x08d7, 0x08eb,
- 0x0920, 0x0951, 0x0980, 0x0990, 0x0990, 0x099b, 0x09bd, 0x09d1,
- 0x09dd, 0x09ec, 0x09f8, 0x0a06, 0x0a14, 0x0a2a, 0x0a34, 0x0a42,
- 0x0a54, 0x0a54, 0x0a6a, 0x0a70, 0x0a8d, 0x0a8d, 0x0a8d, 0x0aa9,
- 0x0adb, 0x0adf, 0x0af5, 0x0b0b, 0x0b1d, 0x0b31, 0x0b41, 0x0b6d,
-} // Size: 360 bytes
-
-var urScriptStr string = "" + // Size: 492 bytes
- "عربیآرمینیائیبنگالیبوپوموفوبریلسیریلکدیوناگریایتھوپیائیجارجیائییونانیگجر" +
- "اتیگرمکھیہنگولہانآسان ہانروایتی ہانعبرانیہیراگیناجاپانیکٹاکاناخمیرکنڑکو" +
- "ریائیلاؤلاطینیملیالممنگولیائیمیانماراڑیہسنہالاتملتیلگوتھاناتھائیتبتیعلا" +
- "ماتغیر تحریر شدہعامنامعلوم رسم الخط"
-
-var urScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, 0x001a,
- 0x001a, 0x001a, 0x001a, 0x001a, 0x0026, 0x0026, 0x0036, 0x0036,
- 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
- 0x003e, 0x003e, 0x003e, 0x004a, 0x004a, 0x005a, 0x005a, 0x005a,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x006e, 0x006e, 0x007e, 0x007e,
- 0x007e, 0x007e, 0x008a, 0x0096, 0x00a2, 0x00ac, 0x00b2, 0x00b2,
- 0x00c1, 0x00d4, 0x00d4, 0x00e0, 0x00f0, 0x00f0, 0x00f0, 0x00f0,
- 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00fc, 0x00fc, 0x00fc, 0x010a,
- // Entry 40 - 7F
- 0x010a, 0x0112, 0x0112, 0x0118, 0x0126, 0x0126, 0x0126, 0x0126,
- 0x012c, 0x012c, 0x012c, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
- 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
- 0x0138, 0x0138, 0x0138, 0x0144, 0x0144, 0x0156, 0x0156, 0x0156,
- 0x0156, 0x0156, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
- 0x0164, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
- // Entry 80 - BF
- 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
- 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x017e,
- 0x017e, 0x017e, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x019c,
- 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
- 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b0, 0x01c8, 0x01ce, 0x01ec,
-} // Size: 360 bytes
-
-var uzScriptStr string = "" + // Size: 273 bytes
- "arabarmanbengalbopomofoBraylkirilldevanagarhabashgruzingrekgujarotgurmuk" +
- "xihangulxitoysoddalashgan xitoyan’anaviy xitoyibroniyhiraganayaponkataka" +
- "naxmerkannadakoreyslaoslotinmalayalammo‘g‘ulmyanmaoriyasingaltamiltelugu" +
- "taanataytibetbelgilaryozuvsizumumiynoma’lum yozuv"
-
-var uzScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x000f, 0x000f, 0x0017, 0x0017,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x0022, 0x0022, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x0031, 0x0031, 0x0037, 0x0037,
- 0x0037, 0x0037, 0x003b, 0x0042, 0x004a, 0x0050, 0x0055, 0x0055,
- 0x0067, 0x0078, 0x0078, 0x007f, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x008c, 0x008c, 0x008c, 0x0094,
- // Entry 40 - 7F
- 0x0094, 0x0098, 0x0098, 0x009f, 0x00a5, 0x00a5, 0x00a5, 0x00a5,
- 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00c2,
- 0x00c2, 0x00c2, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
- 0x00c8, 0x00c8, 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
- // Entry 80 - BF
- 0x00cd, 0x00cd, 0x00cd, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
- 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d8,
- 0x00d8, 0x00d8, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e3, 0x00e6,
- 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
- 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f3, 0x00fb, 0x0101, 0x0111,
-} // Size: 360 bytes
-
-var viScriptStr string = "" + // Size: 2484 bytes
- "Chữ AfakaChữ Ả RậpChữ Imperial AramaicChữ ArmeniaChữ AvestanChữ BaliChữ " +
- "BamumChữ Bassa VahChữ BatakChữ BengaliChữ BlissymbolsChữ BopomofoChữ Bra" +
- "hmiChữ nổi BrailleChữ BuginChữ BuhidChữ ChakmaÂm tiết Thổ dân Canada Hợp" +
- " nhấtChữ CariaChữ ChămChữ CherokeeChữ CirthChữ CopticChứ SípChữ KirinChữ" +
- " Kirin Slavơ Nhà thờ cổChữ DevanagariChữ DeseretChữ tốc ký DuployanChữ A" +
- "i Cập bình dânChữ Ai Cập thày tuChữ tượng hình Ai CậpChữ EthiopiaChữ Khu" +
- "tsuri GeorgiaChữ GruziaChữ GlagoliticChữ Gô-tíchChữ GranthaChữ Hy LạpChữ" +
- " GujaratiChữ GurmukhiChữ HangulChữ HánChữ HanunooChữ Hán giản thểChữ Hán" +
- " phồn thểChữ Do TháiChữ HiraganaChữ tượng hình AnatoliaChữ Pahawh HmongB" +
- "ảng ký hiệu âm tiết Tiếng NhậtChữ Hungary cổChữ IndusChữ Italic cổChữ " +
- "JavaChữ Nhật BảnChữ JurchenChữ Kayah LiChữ KatakanaChữ KharoshthiChữ Khơ" +
- "-meChữ KhojkiChữ KannadaChữ Hàn QuốcChữ KpelleChữ KaithiChữ LannaChữ Lào" +
- "Chữ La-tinh FrakturChữ La-tinh Xcốt-lenChữ La tinhChữ LepchaChữ LimbuChữ" +
- " Linear AChữ Linear BChữ FraserChữ LomaChữ LyciaChữ LydiaChữ MandaeanChữ" +
- " ManichaeanChữ tượng hình MayaChữ MendeChữ Meroitic Nét thảoChữ Meroitic" +
- "Chữ MalayalamChữ Mông CổChữ nổi MoonChữ MroChữ Meitei MayekMyanmaChữ Bắc" +
- " Ả Rập cổChữ NabataeanChữ Naxi GebaChữ N’KoChữ NüshuChữ OghamChữ Ol Chik" +
- "iChữ OrkhonChữ OriyaChữ OsmanyaChữ PalmyreneChữ Permic cổChữ Phags-paChữ" +
- " Pahlavi Văn biaChữ Pahlavi Thánh caChữ Pahlavi SáchChữ PhoeniciaNgữ âm " +
- "PollardChữ Parthia Văn biaChữ RejangChữ RongorongoChữ RunicChữ Samaritan" +
- "Chữ SaratiChữ Nam Ả Rập cổChữ SaurashtraChữ viết Ký hiệuChữ ShavianChữ S" +
- "haradaChữ KhudawadiChữ SinhalaChữ Sora SompengChữ Xu-đăngChữ Syloti Nagr" +
- "iChữ SyriaChữ Estrangelo SyriacChữ Tây SyriaChữ Đông SyriaChữ TagbanwaCh" +
- "ữ TakriChữ Thái NaChữ Thái Lặc mớiChữ TamilChữ TangutChữ Thái ViệtChữ " +
- "TeluguChữ TengwarChữ TifinaghChữ TagalogChữ ThaanaChữ TháiChữ Tây TạngCh" +
- "ữ TirhutaChữ UgaritChữ VaiTiếng nói Nhìn thấy đượcChữ Varang KshitiChữ" +
- " WoleaiChữ Ba Tư cổChữ hình nêm Sumero-AkkadianChữ DiChữ Kế thừaKý hiệu " +
- "Toán họcKý hiệuChưa có chữ viếtChungChữ viết không xác định"
-
-var viScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000b, 0x000b, 0x000b, 0x001a, 0x0030, 0x003d, 0x004a,
- 0x0054, 0x005f, 0x006e, 0x0079, 0x0086, 0x0097, 0x00a5, 0x00b1,
- 0x00c4, 0x00cf, 0x00da, 0x00e6, 0x010f, 0x011a, 0x0125, 0x0133,
- 0x013e, 0x014a, 0x0154, 0x015f, 0x0181, 0x0191, 0x019e, 0x01b6,
- 0x01cf, 0x01e6, 0x0203, 0x0203, 0x0211, 0x0227, 0x0233, 0x0243,
- 0x0252, 0x025f, 0x026d, 0x027b, 0x0289, 0x0295, 0x029f, 0x02ac,
- 0x02c3, 0x02da, 0x02da, 0x02e8, 0x02f6, 0x0313, 0x0325, 0x0350,
- 0x0362, 0x036d, 0x037e, 0x0388, 0x039a, 0x03a7, 0x03b5, 0x03c3,
- // Entry 40 - 7F
- 0x03d3, 0x03e0, 0x03ec, 0x03f9, 0x040a, 0x0416, 0x0422, 0x042d,
- 0x0437, 0x044c, 0x0464, 0x0471, 0x047d, 0x0488, 0x0496, 0x04a4,
- 0x04b0, 0x04ba, 0x04c5, 0x04d0, 0x04d0, 0x04de, 0x04ee, 0x0507,
- 0x0512, 0x052c, 0x053a, 0x0549, 0x0549, 0x0559, 0x0569, 0x0572,
- 0x0584, 0x0584, 0x058a, 0x05a4, 0x05b3, 0x05c2, 0x05ce, 0x05da,
- 0x05e5, 0x05f3, 0x05ff, 0x060a, 0x0617, 0x0626, 0x0626, 0x0637,
- 0x0645, 0x065b, 0x0672, 0x0685, 0x0694, 0x06a5, 0x06bb, 0x06c7,
- 0x06d7, 0x06e2, 0x06f1, 0x06fd, 0x0715, 0x0725, 0x073c, 0x0749,
- // Entry 80 - BF
- 0x0756, 0x0756, 0x0765, 0x0772, 0x0784, 0x0793, 0x07a5, 0x07b0,
- 0x07c7, 0x07d7, 0x07e9, 0x07f7, 0x0802, 0x0810, 0x0827, 0x0832,
- 0x083e, 0x0850, 0x085c, 0x0869, 0x0877, 0x0884, 0x0890, 0x089b,
- 0x08ac, 0x08b9, 0x08c5, 0x08ce, 0x08f0, 0x0903, 0x090f, 0x0920,
- 0x0940, 0x0948, 0x0959, 0x096f, 0x0979, 0x098f, 0x0994, 0x09b4,
-} // Size: 360 bytes
-
-var zhScriptStr string = "" + // Size: 2184 bytes
- "阿法卡文阿拉伯文皇室亚拉姆文亚美尼亚文阿维斯陀文巴厘文巴姆穆文巴萨文巴塔克文孟加拉文布列斯符号汉语拼音婆罗米文字布莱叶盲文布吉文布希德文查克马文" +
- "加拿大土著统一音节卡里亚文占文切罗基文色斯文克普特文塞浦路斯文西里尔文西里尔文字(古教会斯拉夫文的变体)天城文德塞莱特文杜普洛伊速记后期埃及" +
- "文古埃及僧侣书写体古埃及象形文埃塞俄比亚文格鲁吉亚文(教堂体)格鲁吉亚文格拉哥里文哥特文格兰塔文希腊文古吉拉特文果鲁穆奇文韩文字汉字汉奴罗文" +
- "简体中文繁体中文希伯来文平假名安那托利亚象形文字杨松录苗文片假名或平假名古匈牙利文古希腊哈拉潘古意大利文爪哇文日文女真文克耶李文字片假名卡罗" +
- "须提文高棉文克吉奇文字卡纳达文韩文克佩列文凯提文兰拿文老挝文拉丁文(哥特式字体变体)拉丁文(盖尔文变体)拉丁文雷布查文林布文线形文字(A)线" +
- "形文字(B)傈僳文洛马文利西亚文吕底亚文阿拉米文摩尼教文玛雅圣符文门迪文麦罗埃草书麦若提克文马拉雅拉姆文蒙古文韩文语系谬文曼尼普尔文缅甸文古" +
- "北方阿拉伯文纳巴泰文纳西格巴文西非书面文字(N’Ko)女书欧甘文桑塔利文鄂尔浑文奥里亚文奥斯曼亚文帕尔迈拉文古彼尔姆文八思巴文巴列维文碑铭体" +
- "巴列维文(圣诗体)巴列维文(书体)腓尼基文波拉德音标文字帕提亚文碑铭体拉让文朗格朗格文古代北欧文撒马利亚文沙拉堤文古南阿拉伯文索拉什特拉文书" +
- "写符号萧伯纳式文夏拉达文信德文僧伽罗文索朗桑朋文巽他文锡尔赫特文叙利亚文福音体叙利亚文西叙利亚文东叙利亚文塔格班瓦文泰克里文泰乐文新傣文泰米" +
- "尔文唐古特文越南傣文泰卢固文腾格瓦文字提非纳文塔加路文塔安那文泰文藏文迈蒂利文乌加里特文瓦依文可见语言瓦郎奇蒂文字沃莱艾文古波斯文苏美尔-阿" +
- "卡德楔形文字彝文遗传学术语数学符号符号非书面文字通用未知文字"
-
-var zhScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x000c, 0x000c, 0x0018, 0x002a, 0x0039, 0x0048,
- 0x0051, 0x005d, 0x0066, 0x0072, 0x007e, 0x008d, 0x0099, 0x00a8,
- 0x00b7, 0x00c0, 0x00cc, 0x00d8, 0x00f3, 0x00ff, 0x0105, 0x0111,
- 0x011a, 0x0126, 0x0135, 0x0141, 0x0174, 0x017d, 0x018c, 0x019e,
- 0x01ad, 0x01c5, 0x01d7, 0x01d7, 0x01e9, 0x0207, 0x0216, 0x0225,
- 0x022e, 0x023a, 0x0243, 0x0252, 0x0261, 0x026a, 0x0270, 0x027c,
- 0x0288, 0x0294, 0x0294, 0x02a0, 0x02a9, 0x02c4, 0x02d3, 0x02e8,
- 0x02f7, 0x0309, 0x0318, 0x0321, 0x0327, 0x0330, 0x033f, 0x0348,
- // Entry 40 - 7F
- 0x0357, 0x0360, 0x036f, 0x037b, 0x0381, 0x038d, 0x0396, 0x039f,
- 0x03a8, 0x03cc, 0x03ea, 0x03f3, 0x03ff, 0x0408, 0x041b, 0x042e,
- 0x0437, 0x0440, 0x044c, 0x0458, 0x0458, 0x0464, 0x0470, 0x047f,
- 0x0488, 0x0497, 0x04a6, 0x04b8, 0x04b8, 0x04c1, 0x04cd, 0x04d3,
- 0x04e2, 0x04e2, 0x04eb, 0x0500, 0x050c, 0x051b, 0x0539, 0x053f,
- 0x0548, 0x0554, 0x0560, 0x056c, 0x057b, 0x058a, 0x058a, 0x0599,
- 0x05a5, 0x05ba, 0x05d5, 0x05ed, 0x05f9, 0x060e, 0x0623, 0x062c,
- 0x063b, 0x064a, 0x0659, 0x0665, 0x0677, 0x0689, 0x0695, 0x06a4,
- // Entry 80 - BF
- 0x06b0, 0x06b0, 0x06b9, 0x06c5, 0x06d4, 0x06dd, 0x06ec, 0x06f8,
- 0x070d, 0x071c, 0x072b, 0x073a, 0x0746, 0x074f, 0x0758, 0x0764,
- 0x0770, 0x077c, 0x0788, 0x0797, 0x07a3, 0x07af, 0x07bb, 0x07c1,
- 0x07c7, 0x07d3, 0x07e2, 0x07eb, 0x07f7, 0x0809, 0x0815, 0x0821,
- 0x0840, 0x0846, 0x0855, 0x0861, 0x0867, 0x0876, 0x087c, 0x0888,
-} // Size: 360 bytes
-
-var zhHantScriptStr string = "" + // Size: 2409 bytes
- "阿法卡文字高加索阿爾巴尼亞文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文布列斯文注音符號婆羅米文盲人用點字布吉" +
- "斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)天城文德瑟雷特文杜" +
- "普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里文歌德文格蘭他文字" +
- "希臘文古吉拉特文古魯穆奇文韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名或平假名古匈牙利文印度河流域(哈" +
- "拉帕文)古意大利文爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉" +
- "丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞語里底亞語曼底安文摩尼教文瑪雅象形文字門德文麥羅埃文(曲" +
- "線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納巴泰文字納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利" +
- "文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文" +
- "(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋" +
- "文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣" +
- "文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯" +
- "亞甲文楔形文字彞文繼承文字(Unicode)數學符號符號非書寫語言一般文字未知文字"
-
-var zhHantScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, 0x0069,
- 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b7, 0x00c3,
- 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, 0x0126, 0x0132,
- 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, 0x01a7, 0x01b9,
- 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, 0x0255, 0x0264,
- 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02ac, 0x02b2, 0x02be,
- 0x02ca, 0x02d6, 0x02d6, 0x02e2, 0x02eb, 0x0306, 0x0315, 0x032a,
- 0x0339, 0x035a, 0x0369, 0x0372, 0x0378, 0x0384, 0x0390, 0x0399,
- // Entry 40 - 7F
- 0x03a8, 0x03b1, 0x03c0, 0x03cc, 0x03d2, 0x03de, 0x03e7, 0x03f0,
- 0x03f9, 0x041d, 0x043b, 0x0444, 0x0450, 0x0459, 0x046c, 0x047f,
- 0x0488, 0x0491, 0x049d, 0x04a9, 0x04a9, 0x04b5, 0x04c1, 0x04d3,
- 0x04dc, 0x04fa, 0x0506, 0x0518, 0x0518, 0x0521, 0x052d, 0x0533,
- 0x0542, 0x0542, 0x054b, 0x055d, 0x056c, 0x057b, 0x0596, 0x05a2,
- 0x05ab, 0x05b7, 0x05c3, 0x05cf, 0x05de, 0x05f0, 0x05f0, 0x0602,
- 0x060e, 0x0629, 0x0644, 0x065c, 0x0668, 0x067a, 0x0695, 0x069e,
- 0x06b3, 0x06c2, 0x06d1, 0x06dd, 0x06ef, 0x0701, 0x0713, 0x0722,
- // Entry 80 - BF
- 0x072e, 0x073a, 0x0743, 0x074c, 0x075e, 0x0767, 0x077c, 0x0788,
- 0x07af, 0x07d3, 0x07f7, 0x0800, 0x080f, 0x0818, 0x082d, 0x0839,
- 0x0842, 0x084b, 0x0857, 0x0863, 0x086f, 0x087b, 0x0887, 0x088d,
- 0x0896, 0x08a2, 0x08ae, 0x08b7, 0x08c9, 0x08db, 0x08e7, 0x08f3,
- 0x0911, 0x0917, 0x0930, 0x093c, 0x0942, 0x0951, 0x095d, 0x0969,
-} // Size: 360 bytes
-
-var zuScriptStr string = "" + // Size: 371 bytes
- "i-Arabi-Armeniani-Bengalii-Bopomofoi-Braillei-Cyrillici-Devanagarii-Ethi" +
- "opici-Georgiani-Greeki-Gujaratii-Gurmukhii-Hanguli-Hani-Simplified Hani-" +
- "Traditional Hani-Hebrewi-Hiraganai-Japanesei-Katakanai-Khmeri-Kannadai-K" +
- "oreani-Laoi-Latini-Malayami-Mongoliani-Myanmari-Oriyai-Sinhalai-Tamili-T" +
- "elegui-Thaanai-Thaii-Tibetanamasimbuliokungabhaliweejwayelekileiskripthi" +
- " esingaziwa"
-
-var zuScriptIdx = []uint16{ // 168 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x0036, 0x0036, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x004c, 0x004c, 0x0056, 0x0056,
- 0x0056, 0x0056, 0x005d, 0x0067, 0x0071, 0x0079, 0x007e, 0x007e,
- 0x008e, 0x009f, 0x009f, 0x00a7, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
- 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00bb, 0x00c5,
- // Entry 40 - 7F
- 0x00c5, 0x00cc, 0x00cc, 0x00d5, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
- 0x00e2, 0x00e2, 0x00e2, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
- 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
- 0x00e9, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00fd, 0x00fd, 0x00fd,
- 0x00fd, 0x00fd, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
- 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
- 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
- 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
- // Entry 80 - BF
- 0x010d, 0x010d, 0x010d, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
- 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x011d,
- 0x011d, 0x011d, 0x0125, 0x0125, 0x0125, 0x0125, 0x012d, 0x0133,
- 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
- 0x013c, 0x013c, 0x013c, 0x013c, 0x0146, 0x0153, 0x015f, 0x0173,
-} // Size: 360 bytes
-
-// Total size for script: 230112 bytes (230 KB)
-
-// Number of keys: 290
-var (
- regionIndex = tagIndex{
- "ACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBV" +
- "BWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEG" +
- "EHERESETEUFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHR" +
- "HTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLR" +
- "LSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNI" +
- "NLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQAQORERORSRURWSASBSCSDSESG" +
- "SHSISJSKSLSMSNSOSRSSSTSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUG" +
- "UMUSUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWZZ",
- "001002003005009011013014015017018019021029030034035039053054057061142143" +
- "145150151154155419",
- "",
- }
-)
-
-var regionHeaders = [218]header{
- { // af
- afRegionStr,
- afRegionIdx,
- },
- { // agq
- "ÀndolàYùnaetɛ Alab ɛmelɛ̀Àfɨ̀ganìsɨ̀tânÀntigwà à BàbudàÀŋgwilàÀabɛnìaÀmɛ" +
- "nyìaNedàlân AntàeÀŋgolàÀdzɛ̀ntinàÀmɛlekan SamwàUsɨtɨ̀làÙsɨ̀tɛ̀lɛlìaÀ" +
- "lubàÀzɨbɛ̀dzânBosɨnyìa à Hɛ̀zɛ̀gòvinàBàbadòsBaŋgɨ̀làdɛ̂BɛɛdzwùmBùkin" +
- "à FasòBùugɛlìaBàlaenBùlundìBɛ̀nɨ̂ŋBɛ̀mudàBɨ̀lunèBòlevàBɨ̀làzîiBàham" +
- "àsMbutànBòtɨ̀swǎnàBɛlàlûsBɛ̀lezɨ̀KanadàDɛ̀mùkàlatì Lèkpubèlè è Kuŋg" +
- "ùSɛnta Afɨlekan LèkpobèlèKuŋgùSuezàlânKu Dɨ̀vûaChwɨla ŋ̀ KûʔChilèKà" +
- "màlûŋChaenàKòlombìaKòsɨ̀tà LekàKuuwbàChwɨla ŋ̀ Kɛ̀b Vɛ̂ɛSaekpùlùChɛ̂" +
- " LèkpubèlèDzamanèDzìbuwtìDɛnɨmàDòmenekàDòmenekà LèkpubèlèÀadzɛlìaEkw" +
- "adòÈsɨ̀tonyìaEdzìÈletɨ̀làSɨ̀kpɛ̂nÈtyǒpìaFɨnlànFidziChwɨlà fɨ Fakɨlàn" +
- "MaekòlòneshìaFàlâŋnsìGàbûnYùnaetɛ Kiŋdɔ̀mGɨ̀lɛnadàDzɔɔdzìaGàyanà è F" +
- "àlâŋnsìGaanàDzibɨ̀latàGɨ̀lenlânGambìaGinèGwadalukpɛ̀Èkwɛ̀tolia Ginè" +
- "Gɨ̀lêsGwàtɨ̀malàGwamGinè BìsawùGùyanàHɔndulàsKòwɛshìaHǎetìHɔŋgàlèÈnd" +
- "òneshìaAelɨ̀lânEzɨ̀lɛ̂EndìaDɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì " +
- "kòÈlâkɨ̀ÈlânAesɨ̀lânEtalèDzàmɛkàDzodànDzàkpânKɨnyàKìdzisɨ̀tânKàmbodì" +
- "aKèlèbatiKomolòsSɛ̀n Kî à NevìKùulîa, EkùwKùulîa, EmàmKùwɛ̂Chwɨlà ŋ̀" +
- " KaemànKàzasɨ̀tânLàwosLɛbanèSɛ̀n LushìaLetɨnshɨ̀nSɨ̀le LaŋkàLàebɛlìa" +
- "Lɛ̀sotùLètwǎnyìaLuzɨmbùʔLàtɨvaLebìaMòlokòMùnakuMòodovàMàdàgasɨkàChwɨ" +
- "là fɨ MashàMɨ̀sɨ̀donyìaMalèMǐanmàMùŋgolìaChwɨlà m̀ Màlǐanà mɨ̀ Ekùw " +
- "mòMàtìnekìMùlètanyìaMùŋtselàMaatàMùleshwɨ̀sMàdivèMàlawìMɛkɨzikùMàlɛs" +
- "hìaMùzàmbîNàmibìaKàlèdonyìa È fūghūNaedzàChwɨlà fɨ NufòʔGɨ̀anyɨNikàl" +
- "agwàNedàlânNoowɛ̂ɛNɛkpâaNàwulùNiyuZìlân È fūghūUmànKpanàmaKpɛlûKpole" +
- "neshìa è FàlâŋnsìKpakpua Ginè È fūghūFelèkpîKpakìsɨ̀tânKpulànSɛ̀n Kp" +
- "iyɛ̀ à MikelɔŋKpitɨ̀kalèKpǒto LekoAdzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à k" +
- "ɨ Gazà kòKputuwgàKpàlawùKpalàgwɛ̂KatàLèyunyɔ̀ŋLùmanyìaLoshìaLùwandà" +
- "Sawudi AlabiChwɨlà fɨ Solomwɨ̀nSɛchɛ̀lɛ̀sSùdânSuedɨ̀nSiŋgàkpôoSɛ̀n È" +
- "lenàSɨ̀lòvɨnyìaSɨ̀lòvɨkɨ̀aSilìa lûŋSàn MàlenùSɛ̀nɛ̀gâaSòmalìaSulènam" +
- "èSawo Tɔ̀me à Kpèlènsikpɛ̀EsàvadòSilîaShǔazìlânChwɨla n Tɨtê à Kaek" +
- "ùsChâTugùTaelànTàdzikìsɨ̀tânTuwkelawùÊs TaemòTekɨmènèsɨ̀tânTùneshìa" +
- "TuŋgàTeekìTèlenedà à TòbagùTuwvalùwTaewànTàanzanyìaYùkɛ̀lɛ̂YùgandàUS" +
- "AYulùgwɛ̂Yùzɨ̀bɛkìsɨ̀tânVatikàn Sɨ̀tɛ̂Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tēVɛ" +
- "̀nɛ̀zǔɛɛlàChwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mòU. S. Chwɨlà fɨ MbuʔmbuV" +
- "ìyɛnàmVànǔatùwWales à FùwtuwnàSàmowàYɛmɛ̀nMàyotìAfɨlekà ghɨ Emàm gh" +
- "òZambìaZìmbagbɛ̀",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x0020, 0x0035, 0x004a, 0x0054, 0x005e,
- 0x0068, 0x0078, 0x0081, 0x0081, 0x008f, 0x00a0, 0x00ac, 0x00bf,
- 0x00c6, 0x00c6, 0x00d5, 0x00f5, 0x00fe, 0x010f, 0x011a, 0x0128,
- 0x0133, 0x013a, 0x0143, 0x014f, 0x014f, 0x0159, 0x0163, 0x016b,
- 0x016b, 0x0177, 0x0180, 0x0187, 0x0187, 0x0196, 0x01a0, 0x01ac,
- 0x01b3, 0x01b3, 0x01db, 0x01f8, 0x01ff, 0x0209, 0x0215, 0x0227,
- 0x022d, 0x0238, 0x023f, 0x0249, 0x0249, 0x025a, 0x0261, 0x027c,
- 0x027c, 0x027c, 0x0286, 0x0299, 0x02a1, 0x02a1, 0x02ab, 0x02b4,
- // Entry 40 - 7F
- 0x02be, 0x02d5, 0x02e0, 0x02e0, 0x02e7, 0x02f5, 0x02fa, 0x02fa,
- 0x0306, 0x0312, 0x031c, 0x031c, 0x0324, 0x0329, 0x033f, 0x034f,
- 0x034f, 0x035b, 0x0362, 0x0376, 0x0383, 0x038e, 0x03a6, 0x03a6,
- 0x03ac, 0x03b9, 0x03c5, 0x03cc, 0x03d1, 0x03de, 0x03f1, 0x03fa,
- 0x03fa, 0x0408, 0x040c, 0x041a, 0x0422, 0x0422, 0x0422, 0x042c,
- 0x0437, 0x043e, 0x0449, 0x0449, 0x0456, 0x0461, 0x046c, 0x046c,
- 0x0472, 0x04aa, 0x04b4, 0x04ba, 0x04c5, 0x04cb, 0x04cb, 0x04d5,
- 0x04dc, 0x04e5, 0x04ec, 0x04fb, 0x0505, 0x050f, 0x0517, 0x052a,
- // Entry 80 - BF
- 0x0539, 0x0548, 0x0550, 0x0565, 0x0573, 0x0579, 0x0581, 0x058f,
- 0x059c, 0x05ab, 0x05b6, 0x05c0, 0x05cc, 0x05d7, 0x05df, 0x05e5,
- 0x05ed, 0x05f4, 0x05fd, 0x05fd, 0x05fd, 0x060b, 0x061e, 0x062f,
- 0x0634, 0x063c, 0x0647, 0x0647, 0x066e, 0x0679, 0x0686, 0x0691,
- 0x0697, 0x06a4, 0x06ac, 0x06b4, 0x06bf, 0x06ca, 0x06d4, 0x06dd,
- 0x06f5, 0x06fc, 0x0710, 0x071a, 0x0725, 0x072e, 0x0738, 0x0740,
- 0x0748, 0x074c, 0x075e, 0x0763, 0x076b, 0x0772, 0x078e, 0x07a6,
- 0x07af, 0x07be, 0x07c5, 0x07e1, 0x07ee, 0x07f9, 0x0832, 0x083b,
- // Entry C0 - FF
- 0x0844, 0x0850, 0x0855, 0x0855, 0x0862, 0x086c, 0x086c, 0x0873,
- 0x087c, 0x0888, 0x08a0, 0x08af, 0x08b6, 0x08bf, 0x08cb, 0x08d9,
- 0x08e9, 0x08e9, 0x08fa, 0x0906, 0x0913, 0x0921, 0x092a, 0x0934,
- 0x0934, 0x0954, 0x095d, 0x095d, 0x0963, 0x096f, 0x096f, 0x098a,
- 0x098e, 0x098e, 0x0993, 0x099a, 0x09ac, 0x09b6, 0x09c0, 0x09d4,
- 0x09de, 0x09e5, 0x09eb, 0x0a01, 0x0a0a, 0x0a11, 0x0a1d, 0x0a2a,
- 0x0a33, 0x0a33, 0x0a36, 0x0a41, 0x0a58, 0x0a6b, 0x0a8f, 0x0aa3,
- 0x0acd, 0x0ae8, 0x0af2, 0x0afd, 0x0b10, 0x0b18, 0x0b18, 0x0b21,
- // Entry 100 - 13F
- 0x0b29, 0x0b42, 0x0b49, 0x0b55,
- },
- },
- { // ak
- "AndoraUnited Arab EmiratesAfganistanAntigua ne BaabudaAnguilaAlbeniaAame" +
- "niaNɛdɛland AntelezAngolaAgyɛntinaAmɛrika SamoaƆstriaƆstreliaArubaAz" +
- "ebaegyanBosnia ne HɛzegovinaBaabadosBangladɛhyeBɛlgyiumBɔkina FasoBɔ" +
- "lgeriaBarenBurundiBɛninBɛmudaBrunaeBoliviaBrazilBahamaButanBɔtswanaB" +
- "ɛlarusBelizKanadaKongo (Zair)Afrika Finimfin ManKongoSwetzalandLa C" +
- "ôte d’IvoireKook NsupɔwKyiliKamɛrunKyaenaKolombiaKɔsta RikaKubaKepv" +
- "ɛdfo IslandsSaeprɔsKyɛk KurokɛseGyaamanGyibutiDɛnmakDɔmenekaDɔmenek" +
- "a KurokɛseƆlgyeriaIkuwadɔƐstoniaNisrimƐritreaSpainIthiopiaFinlandFig" +
- "yiFɔlkman AelandMaekronehyiaFrɛnkyemanGabɔnAhendiman NkabomGrenadaGy" +
- "ɔgyeaFrɛnkye GayanaGaanaGyebraltaGreenmanGambiaGiniGuwadelupGini Ik" +
- "uwetaGreekmanGuwatemalaGuamGini BisawGayanaHɔndurasKrowehyiaHeitiHan" +
- "gariIndɔnehyiaAerelandIsraelIndiaBritenfo Hɔn Man Wɔ India Po No MuI" +
- "rakIranAeslandItaliGyamekaGyɔdanGyapanKɛnyaKɛɛgestanKambodiaKiribati" +
- "KɔmɔrɔsSaint Kitts ne NɛvesEtifi KoriaAnaafo KoriaKuweteKemanfo Isla" +
- "ndsKazakstanLaosLɛbanɔnSaint LuciaLektenstaenSri LankaLaeberiaLɛsutu" +
- "LituweniaLaksembɛgLatviaLibyaMorokoMɔnakoMɔldovaMadagaskaMarshall Is" +
- "landsMasedoniaMaliMiyanmaMɔngoliaNorthern Mariana IslandsMatinikMɔre" +
- "teniaMantseratMɔltaMɔrehyeɔsMaldivesMalawiMɛksikoMalehyiaMozambikNam" +
- "ibiaKaledonia FoforoNigyɛNɔfolk AelandNaegyeriaNekaraguwaNɛdɛlandNɔɔ" +
- "weNɛpɔlNaworuNiyuZiland FoforoOmanPanamaPeruFrɛnkye PɔlenehyiaPapua " +
- "Guinea FoforoPhilippinesPakistanPolandSaint Pierre ne MiquelonPitcai" +
- "rnPuɛto RikoPalestaen West Bank ne GazaPɔtugalPalauParaguayKataReyun" +
- "iɔnRomeniaRɔhyeaRwandaSaudi ArabiaSolomon IslandsSeyhyɛlSudanSwedenS" +
- "ingapɔSaint HelenaSloviniaSlovakiaSierra LeoneSan MarinoSenegalSomal" +
- "iaSurinameSão Tomé and PríncipeƐl SalvadɔSiriaSwazilandTurks ne Caic" +
- "os IslandsKyadTogoTaelandTajikistanTokelauTimɔ BokaTɛkmɛnistanTunihy" +
- "iaTongaTɛɛkiTrinidad ne TobagoTuvaluTaiwanTanzaniaUkrenUgandaAmɛrika" +
- "YurugwaeUzbɛkistanVatican ManSaint Vincent ne GrenadinesVenezuelaBri" +
- "tainfo Virgin IslandsAmɛrika Virgin IslandsViɛtnamVanuatuWallis ne F" +
- "utunaSamoaYɛmenMayɔteAfrika AnaafoZambiaZembabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x001a, 0x0024, 0x0036, 0x003d, 0x0044,
- 0x004b, 0x005d, 0x0063, 0x0063, 0x006d, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x009a, 0x00af, 0x00b7, 0x00c3, 0x00cc, 0x00d8,
- 0x00e1, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00fa, 0x0100, 0x0107,
- 0x0107, 0x010d, 0x0113, 0x0118, 0x0118, 0x0121, 0x0129, 0x012e,
- 0x0134, 0x0134, 0x0140, 0x0153, 0x0158, 0x0162, 0x0175, 0x0181,
- 0x0186, 0x018e, 0x0194, 0x019c, 0x019c, 0x01a7, 0x01ab, 0x01bc,
- 0x01bc, 0x01bc, 0x01c4, 0x01d3, 0x01da, 0x01da, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f1, 0x0204, 0x020d, 0x020d, 0x0215, 0x021d, 0x0223, 0x0223,
- 0x022b, 0x0230, 0x0238, 0x0238, 0x023f, 0x0244, 0x0253, 0x025f,
- 0x025f, 0x026a, 0x0270, 0x0280, 0x0287, 0x028f, 0x029e, 0x029e,
- 0x02a3, 0x02ac, 0x02b4, 0x02ba, 0x02be, 0x02c7, 0x02d3, 0x02db,
- 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02f9, 0x02f9, 0x02f9, 0x0302,
- 0x030b, 0x0310, 0x0317, 0x0317, 0x0322, 0x032a, 0x0330, 0x0330,
- 0x0335, 0x0359, 0x035d, 0x0361, 0x0368, 0x036d, 0x036d, 0x0374,
- 0x037b, 0x0381, 0x0387, 0x0392, 0x039a, 0x03a2, 0x03ac, 0x03c1,
- // Entry 80 - BF
- 0x03cc, 0x03d8, 0x03de, 0x03ed, 0x03f6, 0x03fa, 0x0403, 0x040e,
- 0x0419, 0x0422, 0x042a, 0x0431, 0x043a, 0x0444, 0x044a, 0x044f,
- 0x0455, 0x045c, 0x0464, 0x0464, 0x0464, 0x046d, 0x047d, 0x0486,
- 0x048a, 0x0491, 0x049a, 0x049a, 0x04b2, 0x04b9, 0x04c3, 0x04cc,
- 0x04d2, 0x04dd, 0x04e5, 0x04eb, 0x04f3, 0x04fb, 0x0503, 0x050a,
- 0x051a, 0x0520, 0x052e, 0x0537, 0x0541, 0x054b, 0x0552, 0x0559,
- 0x055f, 0x0563, 0x0570, 0x0574, 0x057a, 0x057e, 0x0592, 0x05a5,
- 0x05b0, 0x05b8, 0x05be, 0x05d6, 0x05de, 0x05e9, 0x0604, 0x060c,
- // Entry C0 - FF
- 0x0611, 0x0619, 0x061d, 0x061d, 0x0626, 0x062d, 0x062d, 0x0634,
- 0x063a, 0x0646, 0x0655, 0x065d, 0x0662, 0x0668, 0x0670, 0x067c,
- 0x0684, 0x0684, 0x068c, 0x0698, 0x06a2, 0x06a9, 0x06b0, 0x06b8,
- 0x06b8, 0x06d0, 0x06dc, 0x06dc, 0x06e1, 0x06ea, 0x06ea, 0x0701,
- 0x0705, 0x0705, 0x0709, 0x0710, 0x071a, 0x0721, 0x072b, 0x0738,
- 0x0740, 0x0745, 0x074c, 0x075e, 0x0764, 0x076a, 0x0772, 0x0777,
- 0x077d, 0x077d, 0x0785, 0x078d, 0x0798, 0x07a3, 0x07be, 0x07c7,
- 0x07df, 0x07f6, 0x07fe, 0x0805, 0x0815, 0x081a, 0x081a, 0x0820,
- // Entry 100 - 13F
- 0x0827, 0x0834, 0x083a, 0x0842,
- },
- },
- { // am
- amRegionStr,
- amRegionIdx,
- },
- { // ar
- arRegionStr,
- arRegionIdx,
- },
- {}, // ar-EG
- { // as
- "এন্টাৰ্টিকাব্ৰাজিলবভেট দ্বীপচীনজাৰ্মানিফ্ৰান্সসংযুক্ত ৰাজ্যদক্ষিণ জৰ্জিয" +
- "়া আৰু দক্ষিণ চেণ্ডৱিচ্\u200c দ্বীপহাৰ্ড দ্বীপ আৰু মেক্\u200cডোনাল" +
- "্ড দ্বীপভাৰতব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চলইটালিজাপানৰুচদক্ষিণ " +
- "ফ্ৰান্সৰ অঞ্চলযুক্তৰাষ্ট্ৰঅজ্ঞাত বা অবৈধ অঞ্চল",
- []uint16{ // 261 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0036, 0x0036, 0x0036, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
- 0x0052, 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x0073, 0x0073, 0x0073, 0x0073,
- // Entry 40 - 7F
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
- 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
- 0x0073, 0x0088, 0x0088, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0182, 0x0182,
- 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182,
- 0x018e, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01fd, 0x01fd, 0x01fd,
- 0x01fd, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- // Entry 80 - BF
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
- // Entry C0 - FF
- 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
- 0x0215, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
- 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
- 0x0250, 0x0250, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
- 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
- // Entry 100 - 13F
- 0x0274, 0x0274, 0x0274, 0x0274, 0x02aa,
- },
- },
- { // asa
- "AndoraFalme dha KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArme" +
- "niaAntili za UholandhiAngolaAjentinaThamoa ya MarekaniAuthtriaAuthtr" +
- "aliaArubaAdhabajaniBothnia na HedhegovinaBabadothiBangladeshiUbelgij" +
- "iBukinafathoBulgariaBahareniBurundiBeniniBermudaBruneiBraziliBahamaB" +
- "utaniBotthwanaBelaruthiBelidheKanadaJamhuri ya Kidemokrathia ya Kong" +
- "oJamhuri ya Afrika ya KatiKongoUthwithiKodivaaVithiwa vya CookChileK" +
- "ameruniChinaKolombiaKothtarikaKubaKepuvedeKuprothiJamhuri ya ChekiUj" +
- "erumaniJibutiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEthtonia" +
- "MithriEritreaHithpaniaUhabeshiUfiniFijiVithiwa vya FalklandMikroneth" +
- "iaUfaranthaGaboniUingeredhaGrenadaJojiaGwiyana ya UfaranthaGhanaJibr" +
- "altaGrinlandiGambiaGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebis" +
- "auGuyanaHondurathiKorathiaHaitiHungariaIndonethiaAyalandiIthraeliInd" +
- "iaIeneo la Uingeredha katika Bahari HindiIrakiUajemiAithlandiItaliaJ" +
- "amaikaYordaniJapaniKenyaKirigizithtaniKambodiaKiribatiKomoroThantaki" +
- "tdhi na NevithKorea KathkaziniKorea KuthiniKuwaitiVithiwa vya Kayman" +
- "KazakithtaniLaothiLebanoniThantaluthiaLishenteniThirilankaLiberiaLet" +
- "hotoLitwaniaLathembagiLativiaLibyaMorokoMonakoMoldovaBukiniVithiwa v" +
- "ya MarshalMathedoniaMaliMyamaMongoliaVithiwa vya Mariana vya Kathkaz" +
- "iniMartinikiMoritaniaMonttherratiMaltaMorithiModivuMalawiMekthikoMal" +
- "ethiaMthumbijiNamibiaNyukaledoniaNijeriKithiwa cha NorfokNijeriaNika" +
- "ragwaUholandhiNorweNepaliNauruNiueNyudhilandiOmaniPanamaPeruPolinesi" +
- "a ya UfaranthaPapuaFilipinoPakithtaniPolandiThantapieri na MikeloniP" +
- "itkairniPwetorikoPalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUr" +
- "uthiRwandaThaudiVithiwa vya TholomonShelisheliThudaniUthwidiThingapo" +
- "oThantahelenaThloveniaTholvakiaThiera LeoniThamarinoThenegaliThomali" +
- "aThurinamuThao Tome na PrincipeElsavadoThiriaUthwadhiVithiwa vya Tur" +
- "ki na KaikoChadiTogoTailandiTajikithtaniTokelauTimori ya MasharikiTu" +
- "rukimenithtaniTunithiaTongaUturukiTrinidad na TobagoTuvaluTaiwaniTad" +
- "haniaUgandaMarekaniUrugwaiUdhibekithtaniVatikaniThantavithenti na Gr" +
- "enadiniVenezuelaVithiwa vya Virgin vya UingeredhaVithiwa vya Virgin " +
- "vya MarekaniVietinamuVanuatuWalith na FutunaThamoaYemeniMayotteAfrik" +
- "a KuthiniDhambiaDhimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0044,
- 0x004b, 0x005e, 0x0064, 0x0064, 0x006c, 0x007e, 0x0086, 0x0090,
- 0x0095, 0x0095, 0x009f, 0x00b5, 0x00be, 0x00c9, 0x00d1, 0x00dc,
- 0x00e4, 0x00ec, 0x00f3, 0x00f9, 0x00f9, 0x0100, 0x0106, 0x0106,
- 0x0106, 0x010d, 0x0113, 0x0119, 0x0119, 0x0122, 0x012b, 0x0132,
- 0x0138, 0x0138, 0x0159, 0x0172, 0x0177, 0x017f, 0x0186, 0x0196,
- 0x019b, 0x01a3, 0x01a8, 0x01b0, 0x01b0, 0x01ba, 0x01be, 0x01c6,
- 0x01c6, 0x01c6, 0x01ce, 0x01de, 0x01e7, 0x01e7, 0x01ed, 0x01f4,
- // Entry 40 - 7F
- 0x01fc, 0x020f, 0x0216, 0x0216, 0x021c, 0x0224, 0x022a, 0x022a,
- 0x0231, 0x023a, 0x0242, 0x0242, 0x0247, 0x024b, 0x025f, 0x026a,
- 0x026a, 0x0273, 0x0279, 0x0283, 0x028a, 0x028f, 0x02a3, 0x02a3,
- 0x02a8, 0x02b0, 0x02b9, 0x02bf, 0x02c3, 0x02cc, 0x02d5, 0x02dc,
- 0x02dc, 0x02e5, 0x02e9, 0x02f2, 0x02f8, 0x02f8, 0x02f8, 0x0302,
- 0x030a, 0x030f, 0x0317, 0x0317, 0x0321, 0x0329, 0x0331, 0x0331,
- 0x0336, 0x035d, 0x0362, 0x0368, 0x0371, 0x0377, 0x0377, 0x037e,
- 0x0385, 0x038b, 0x0390, 0x039e, 0x03a6, 0x03ae, 0x03b4, 0x03ca,
- // Entry 80 - BF
- 0x03da, 0x03e7, 0x03ee, 0x0400, 0x040c, 0x0412, 0x041a, 0x0426,
- 0x0430, 0x043a, 0x0441, 0x0448, 0x0450, 0x045a, 0x0461, 0x0466,
- 0x046c, 0x0472, 0x0479, 0x0479, 0x0479, 0x047f, 0x0492, 0x049c,
- 0x04a0, 0x04a5, 0x04ad, 0x04ad, 0x04cf, 0x04d8, 0x04e1, 0x04ed,
- 0x04f2, 0x04f9, 0x04ff, 0x0505, 0x050d, 0x0515, 0x051e, 0x0525,
- 0x0531, 0x0537, 0x0549, 0x0550, 0x0559, 0x0562, 0x0567, 0x056d,
- 0x0572, 0x0576, 0x0581, 0x0586, 0x058c, 0x0590, 0x05a6, 0x05ab,
- 0x05b3, 0x05bd, 0x05c4, 0x05db, 0x05e4, 0x05ed, 0x05f6, 0x05fb,
- // Entry C0 - FF
- 0x0600, 0x0608, 0x060e, 0x060e, 0x0617, 0x061e, 0x061e, 0x0624,
- 0x062a, 0x0630, 0x0644, 0x064e, 0x0655, 0x065c, 0x0665, 0x0671,
- 0x067a, 0x067a, 0x0683, 0x068f, 0x0698, 0x06a1, 0x06a9, 0x06b2,
- 0x06b2, 0x06c7, 0x06cf, 0x06cf, 0x06d5, 0x06dd, 0x06dd, 0x06f7,
- 0x06fc, 0x06fc, 0x0700, 0x0708, 0x0714, 0x071b, 0x072e, 0x073e,
- 0x0746, 0x074b, 0x0752, 0x0764, 0x076a, 0x0771, 0x0779, 0x0779,
- 0x077f, 0x077f, 0x0787, 0x078e, 0x079c, 0x07a4, 0x07bf, 0x07c8,
- 0x07e9, 0x0808, 0x0811, 0x0818, 0x0828, 0x082e, 0x082e, 0x0834,
- // Entry 100 - 13F
- 0x083b, 0x0849, 0x0850, 0x0859,
- },
- },
- { // ast
- "Islla AscensiónAndorraEmiratos Árabes XuníosAfganistánAntigua y BarbudaA" +
- "nguilaAlbaniaArmeniaAngolaL’AntártidaArxentinaSamoa AmericanaAustria" +
- "AustraliaArubaIslles AlandAzerbaixánBosnia y HerzegovinaBarbadosBang" +
- "ladexBélxicaBurkina FasuBulgariaBaḥréinBurundiBenínSan BartoloméLes " +
- "BermudesBrunéiBoliviaCaribe neerlandésBrasilLes BahamesButánIslla Bo" +
- "uvetBotsuanaBielorrusiaBelizeCanadáIslles Cocos (Keeling)Congu - Kin" +
- "xasaRepública CentroafricanaCongu - BrazzavilleSuizaCosta de MarfilI" +
- "slles CookChileCamerúnChinaColombiaIslla ClippertonCosta RicaCubaCab" +
- "u VerdeCuraçaoIslla ChristmasXipreChequiaAlemañaDiego GarciaXibutiDi" +
- "namarcaDominicaRepública DominicanaArxeliaCeuta y MelillaEcuadorEsto" +
- "niaExiptuSáḥara OccidentalEritreaEspañaEtiopíaXunión EuropeaFinlandi" +
- "aIslles FixiFalkland IslandsMicronesiaIslles FeroeFranciaGabónReinu " +
- "XuníuGranadaXeorxaGuyana FrancesaGuernseyGhanaXibraltarGroenlandiaGa" +
- "mbiaGuineaGuadalupeGuinea EcuatorialGreciaIslles Xeorxa del Sur y Sa" +
- "ndwich del SurGuatemalaGuamGuinea-BisáuGuyanaARE China de Ḥong KongI" +
- "slles Heard y McDonaldHonduresCroaciaHaitíHungríaIslles CanariesIndo" +
- "nesiaIrlandaIsraelIslla de ManIndiaTerritoriu Británicu del Océanu Í" +
- "ndicuIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKeniaKirguistán" +
- "CamboyaKiribatiLes ComoresSaint Kitts y NevisCorea del NorteCorea de" +
- "l SurKuwaitIslles CaimánKazakstánLaosLíbanuSanta LlucíaLiechtenstein" +
- "Sri LankaLiberiaLesothuLituaniaLuxemburguLetoniaLibiaMarruecosMónacu" +
- "MoldaviaMontenegruSaint MartinMadagascarIslles MarshallMacedoniaMalí" +
- "Myanmar (Birmania)MongoliaARE China de MacáuIslles Marianes del Nort" +
- "eLa MartinicaMauritaniaMontserratMaltaMauriciuLes MaldivesMalauiMéxi" +
- "cuMalasiaMozambiqueNamibiaNueva CaledoniaEl NíxerIslla NorfolkNixeri" +
- "aNicaraguaPaíses BaxosNoruegaNepalNauruNiueNueva ZelandaOmánPanamáPe" +
- "rúPolinesia FrancesaPapúa Nueva GuineaFilipinesPaquistánPoloniaSaint" +
- " Pierre y MiquelonIslles PitcairnPuertu RicuTerritorios PalestinosPo" +
- "rtugalPaláuParaguáiQatarOceanía esteriorReuniónRumaníaSerbiaRusiaRua" +
- "ndaArabia SauditaIslles SalomónLes SeixelesSudánSueciaSingapurSanta " +
- "HelenaEsloveniaSvalbard ya Islla Jan MayenEslovaquiaSierra LleonaSan" +
- " MarínSenegalSomaliaSurinamSudán del SurSantu Tomé y PríncipeEl Salv" +
- "adorSint MaartenSiriaSuazilandiaTristán da CunhaIslles Turques y Cai" +
- "cosChadTierres Australes FrancesesToguTailandiaTaxiquistánTokeláuTim" +
- "or OrientalTurkmenistánTuniciaTongaTurquíaTrinidá y TobaguTuvaluTaiw" +
- "ánTanzaniaUcraínaUgandaIslles Perifériques Menores de los EE.XX.Est" +
- "aos XuníosUruguáiUzbequistánCiudá del VaticanuSan Vicente y Granadin" +
- "esVenezuelaIslles Vírxenes BritániquesIslles Vírxenes AmericanesViet" +
- "namVanuatuWallis y FutunaSamoaKosovuYemenMayotteSudáfricaZambiaZimba" +
- "bueRexón desconocidaMunduÁfricaNorteaméricaAmérica del SurOceaníaÁfr" +
- "ica OccidentalAmérica CentralÁfrica OrientalÁfrica del NorteÁfrica C" +
- "entralÁfrica del SurAméricaAmérica del NorteCaribeAsia OrientalAsia " +
- "del SurSureste AsiáticuEuropa del SurAustralasiaMelanesiaRexón de Mi" +
- "cronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa Orienta" +
- "lEuropa del NorteEuropa OccidentalAmérica Llatina",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x002f, 0x003a, 0x004b, 0x0052, 0x0059,
- 0x0060, 0x0060, 0x0066, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c,
- 0x00a1, 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00dd, 0x00e5, 0x00f1,
- 0x00f9, 0x0103, 0x010a, 0x0110, 0x011e, 0x012a, 0x0131, 0x0138,
- 0x014a, 0x0150, 0x015b, 0x0161, 0x016d, 0x0175, 0x0180, 0x0186,
- 0x018d, 0x01a3, 0x01b2, 0x01cb, 0x01de, 0x01e3, 0x01f2, 0x01fd,
- 0x0202, 0x020a, 0x020f, 0x0217, 0x0227, 0x0231, 0x0235, 0x023f,
- 0x0247, 0x0256, 0x025b, 0x0262, 0x026a, 0x0276, 0x027c, 0x0285,
- // Entry 40 - 7F
- 0x028d, 0x02a2, 0x02a9, 0x02b8, 0x02bf, 0x02c6, 0x02cc, 0x02e0,
- 0x02e7, 0x02ee, 0x02f6, 0x0305, 0x030e, 0x0319, 0x0329, 0x0333,
- 0x033f, 0x0346, 0x034c, 0x0358, 0x035f, 0x0365, 0x0374, 0x037c,
- 0x0381, 0x038a, 0x0395, 0x039b, 0x03a1, 0x03aa, 0x03bb, 0x03c1,
- 0x03e9, 0x03f2, 0x03f6, 0x0403, 0x0409, 0x0421, 0x0438, 0x0440,
- 0x0447, 0x044d, 0x0455, 0x0464, 0x046d, 0x0474, 0x047a, 0x0486,
- 0x048b, 0x04b4, 0x04b8, 0x04bd, 0x04c5, 0x04cb, 0x04d1, 0x04d8,
- 0x04e0, 0x04e6, 0x04eb, 0x04f6, 0x04fd, 0x0505, 0x0510, 0x0523,
- // Entry 80 - BF
- 0x0532, 0x053f, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0575,
- 0x0582, 0x058b, 0x0592, 0x0599, 0x05a1, 0x05ab, 0x05b2, 0x05b7,
- 0x05c0, 0x05c7, 0x05cf, 0x05d9, 0x05e5, 0x05ef, 0x05fe, 0x0607,
- 0x060c, 0x061e, 0x0626, 0x0639, 0x0652, 0x065e, 0x0668, 0x0672,
- 0x0677, 0x067f, 0x068b, 0x0691, 0x0698, 0x069f, 0x06a9, 0x06b0,
- 0x06bf, 0x06c8, 0x06d5, 0x06dc, 0x06e5, 0x06f2, 0x06f9, 0x06fe,
- 0x0703, 0x0707, 0x0714, 0x0719, 0x0720, 0x0725, 0x0737, 0x074a,
- 0x0753, 0x075d, 0x0764, 0x077b, 0x078a, 0x0795, 0x07ab, 0x07b3,
- // Entry C0 - FF
- 0x07b9, 0x07c2, 0x07c7, 0x07d8, 0x07e0, 0x07e8, 0x07ee, 0x07f3,
- 0x07f9, 0x0807, 0x0816, 0x0822, 0x0828, 0x082e, 0x0836, 0x0842,
- 0x084b, 0x0866, 0x0870, 0x087d, 0x0887, 0x088e, 0x0895, 0x089c,
- 0x08aa, 0x08c1, 0x08cc, 0x08d8, 0x08dd, 0x08e8, 0x08f9, 0x0910,
- 0x0914, 0x092f, 0x0933, 0x093c, 0x0948, 0x0950, 0x095e, 0x096b,
- 0x0972, 0x0977, 0x097f, 0x0990, 0x0996, 0x099d, 0x09a5, 0x09ad,
- 0x09b3, 0x09dd, 0x09eb, 0x09f3, 0x09ff, 0x0a12, 0x0a2a, 0x0a33,
- 0x0a50, 0x0a6b, 0x0a72, 0x0a79, 0x0a88, 0x0a8d, 0x0a93, 0x0a98,
- // Entry 100 - 13F
- 0x0a9f, 0x0aa9, 0x0aaf, 0x0ab7, 0x0ac9, 0x0ace, 0x0ad5, 0x0ae2,
- 0x0af2, 0x0afa, 0x0b0c, 0x0b1c, 0x0b2c, 0x0b3d, 0x0b4c, 0x0b5b,
- 0x0b63, 0x0b75, 0x0b7b, 0x0b88, 0x0b94, 0x0ba5, 0x0bb3, 0x0bbe,
- 0x0bc7, 0x0bdb, 0x0be4, 0x0be8, 0x0bf4, 0x0c03, 0x0c09, 0x0c18,
- 0x0c28, 0x0c39, 0x0c49,
- },
- },
- { // az
- azRegionStr,
- azRegionIdx,
- },
- { // az-Cyrl
- "АзәрбајҹанБразилијаЧинАлманијаФрансаҺиндистанИталијаЈапонијаРусијаАмерик" +
- "а Бирләшмиш Штатлары",
- []uint16{ // 243 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
- 0x0014, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x003c, 0x003c, 0x003c, 0x003c,
- // Entry 40 - 7F
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
- 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0068, 0x0068, 0x0068,
- 0x0068, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- // Entry 80 - BF
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
- // Entry C0 - FF
- 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
- 0x0084, 0x0084, 0x00b6,
- },
- },
- { // bas
- "Àŋdɔ̂rÀdnà i Bilɔ̀ŋ bi ArābìàÀfgànìstâŋÀŋtigà ɓɔ BàrbudàÀŋgiyàÀlbanìàÀrm" +
- "enìàÀŋtîy ǹlɛ̀ndiÀŋgolàÀrgàŋtinàÒstrǐkÒstralìàÀrubàÀzɛ̀rbajàŋBòhnià " +
- "ƐrzègòvinàBàrbadòBàŋglàdɛ̂sBɛlgyùmBùrkìnà FasòBùlgarìàBàraìnBùrundì" +
- "Bènɛ̂ŋBɛ̀rmudàBruneiBòlivìàBràsîlBàhamàsBùtânBòdsùanàBèlarùsBèlîsKàn" +
- "adàKòŋgo ìkɛŋiŊ̀ɛm AfrīkàKòŋgoSùwîsMàŋ mi Njɔ̂kBìòn bi KookKìlîKàmɛ̀" +
- "rûnKinàKɔ̀lɔmbìàKòstà RikàKubàKabwɛ᷆rKipròJamânJìbutìDànmârkDòmnîkDò" +
- "mnikàÀlgerìàÈkwàtorìàÈstonìàÈgîptòÈrìtrěàPànyaÈtìopìàFìnlândFijiBìòn" +
- " bi FalklandMìkrònesìàPùlàsi / Fɛ̀lɛ̀nsi /Gàbɔ̂ŋÀdnà i Lɔ̂ŋGrènadàGè" +
- "ɔrgìàGùyanà PùlàsiGanàGìlbràtârGrǐnlàndGàmbiàGìnêGwàdèlûpGìne Èkwàt" +
- "orìàGrǐkyàGwàtèmalàGùâmGìne BìsàôGùyanàƆ̀ŋduràsKròasìàÀitìƆ̀ŋgriìInd" +
- "ònèsiàÌrlândIsràɛ̂lIndìàBìtèk bi Ŋgisì i Tūyɛ ĪndìàÌrâkÌrâŋÌslandìà" +
- "ÌtalìàJàmàikàYɔ̀rdaniàKenìàKìrgìzìstàŋKàmbodìàKìrìbatìKɔ̀mɔ̂rNûmpub" +
- "i Kîts nì NevìsKɔ̀re ì Ŋ̀ɔmbɔkKɔ̀re ì Ŋ̀wɛ̀lmbɔkKòwêtBìòn bi KaymànK" +
- "àzàkstâŋLàôsLèbanònNûmpubi LusìLigstɛntànSrìlaŋkàLìberìàLesòtòLìtùa" +
- "nìàLùgsàmbûrLàdviàLibìàMàrokòMònakòMoldavìàMàdàgàskârBìòn bi MarcàlM" +
- "àsèdonìàMàliMyànmârMòŋgolìàBìòn bi Marìanà ŋ̀ɔmbɔkMàrtìnîkMòrìtanìà" +
- "Mɔ̀ŋseràtMaltàMòrîsMàldîfMàlàwiMɛ̀gsîkMàlɛ̀sìàMòsàmbîkNàmibìàKàlèdon" +
- "ìà Yɔ̀ndɔNìjɛ̂rÒn i Nɔrfɔ̂kNìgerìàNìkàragwàǸlɛndiNɔ̀rvegìàNèpâlNerù" +
- "Nìuɛ̀Sìlând Yɔ̀ndɔÒmânPànàmaPèrûPòlìnesìà PùlàsiGìne ì PàpuFìlìpînPà" +
- "kìstânPòlàndNûmpubi Petrò nì MikèlônPìdkaìrnPɔ̀rtò RikòPàlɛ̀htinà Hy" +
- "ɔ̀ŋg nì GazàPɔ̀tɔkìPàlaùPàràgwêKàtârRèunyɔ̂ŋRùmanìàRuslàndRùandàSàu" +
- "di ÀrabìàBìòn bi SalōmòSèsɛ̂lSùdâŋSwedɛ̀nSìŋgàpûrNûmpubi ƐlēnàSlòvan" +
- "ìàSlòvakìàSièra Lèɔ̂nNûmpubi MāatìnSènègâlSòmalìàSùrinâmSào Tòme ɓɔ" +
- " Prɛ̀ŋcipèSàlvàdɔ̂rSirìàSwàzìlândBìòn bi Tûrks nì KalkòsCâdTògoTaylà" +
- "ndTàjìkìstaŋTòkèlaòTìmɔ̂r lìkòlTùrgmènìstânTùnisìàTɔŋgàTùrkâyTrìnidà" +
- "d ɓɔ TòbagòTùvàlùTàywânTànzàniàÙkrɛ̌nÙgandàÀdnà i Bilɔ̀ŋ bi AmerkàÙr" +
- "ùgwêyÙzbèkìstânVàtìkâŋNûmpubi Vɛ̂ŋsâŋ nì grènàdînVènèzùelàBìòn bi k" +
- "ɔnji bi ŊgisìBìòn bi kɔnji bi U.S.Vìɛ̀dnâmVànùatùWàlîs nì FùtunàSàm" +
- "oàYèmɛ̂nMàyɔ̂tÀfrǐkà Sɔ̀ZàmbiàZìmbàbwê",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000a, 0x0029, 0x0038, 0x0050, 0x0059, 0x0063,
- 0x006d, 0x0080, 0x0089, 0x0089, 0x0096, 0x0096, 0x009e, 0x00a9,
- 0x00b0, 0x00b0, 0x00bf, 0x00d6, 0x00df, 0x00ee, 0x00f7, 0x0107,
- 0x0112, 0x011a, 0x0123, 0x012d, 0x012d, 0x0138, 0x013e, 0x0148,
- 0x0148, 0x0150, 0x0159, 0x0160, 0x0160, 0x016b, 0x0174, 0x017b,
- 0x0183, 0x0183, 0x0193, 0x01a3, 0x01aa, 0x01b1, 0x01c1, 0x01cf,
- 0x01d5, 0x01e1, 0x01e6, 0x01f4, 0x01f4, 0x0201, 0x0206, 0x0210,
- 0x0210, 0x0210, 0x0216, 0x0216, 0x021c, 0x021c, 0x0224, 0x022d,
- // Entry 40 - 7F
- 0x0235, 0x023e, 0x0248, 0x0248, 0x0255, 0x025f, 0x0268, 0x0268,
- 0x0273, 0x0279, 0x0284, 0x0284, 0x028d, 0x0291, 0x02a3, 0x02b1,
- 0x02b1, 0x02cb, 0x02d5, 0x02e5, 0x02ee, 0x02f9, 0x030a, 0x030a,
- 0x030f, 0x031b, 0x0325, 0x032d, 0x0333, 0x033e, 0x0351, 0x0359,
- 0x0359, 0x0365, 0x036b, 0x0379, 0x0381, 0x0381, 0x0381, 0x038d,
- 0x0397, 0x039d, 0x03a8, 0x03a8, 0x03b4, 0x03bc, 0x03c6, 0x03c6,
- 0x03cd, 0x03f1, 0x03f7, 0x03fe, 0x0409, 0x0412, 0x0412, 0x041c,
- 0x0428, 0x0428, 0x042f, 0x043f, 0x044a, 0x0455, 0x0460, 0x0479,
- // Entry 80 - BF
- 0x048f, 0x04a9, 0x04b0, 0x04c1, 0x04ce, 0x04d4, 0x04dd, 0x04eb,
- 0x04f7, 0x0502, 0x050c, 0x0514, 0x0520, 0x052c, 0x0534, 0x053b,
- 0x0543, 0x054b, 0x0555, 0x0555, 0x0555, 0x0563, 0x0574, 0x0581,
- 0x0586, 0x058f, 0x059b, 0x059b, 0x05ba, 0x05c5, 0x05d2, 0x05df,
- 0x05e5, 0x05ec, 0x05f4, 0x05fc, 0x0606, 0x0613, 0x061e, 0x0628,
- 0x063f, 0x0648, 0x0658, 0x0662, 0x066e, 0x0676, 0x0683, 0x068a,
- 0x068f, 0x0697, 0x06a9, 0x06af, 0x06b7, 0x06bd, 0x06d3, 0x06e1,
- 0x06eb, 0x06f6, 0x06fe, 0x071b, 0x0725, 0x0734, 0x0756, 0x0761,
- // Entry C0 - FF
- 0x0768, 0x0772, 0x0779, 0x0779, 0x0785, 0x078f, 0x078f, 0x0797,
- 0x079f, 0x07af, 0x07c1, 0x07ca, 0x07d2, 0x07db, 0x07e7, 0x07f8,
- 0x0803, 0x0803, 0x080e, 0x081d, 0x082e, 0x0838, 0x0842, 0x084b,
- 0x084b, 0x0868, 0x0875, 0x0875, 0x087c, 0x0888, 0x0888, 0x08a4,
- 0x08a8, 0x08a8, 0x08ad, 0x08b5, 0x08c3, 0x08cd, 0x08de, 0x08ee,
- 0x08f8, 0x0900, 0x0908, 0x0920, 0x0929, 0x0931, 0x093c, 0x0945,
- 0x094d, 0x094d, 0x096a, 0x0974, 0x0982, 0x098d, 0x09b2, 0x09bf,
- 0x09da, 0x09f2, 0x09fe, 0x0a08, 0x0a1c, 0x0a23, 0x0a23, 0x0a2c,
- // Entry 100 - 13F
- 0x0a35, 0x0a44, 0x0a4c, 0x0a57,
- },
- },
- { // be
- "Востраў УшэсцяАндораАб’яднаныя Арабскія ЭміратыАфганістанАнтыгуа і Барбу" +
- "даАнгільяАлбаніяАрменіяНідэрландскія АнтылыАнголаАнтарктыкаАргенцін" +
- "аАмерыканскае СамоаАўстрыяАўстраліяАрубаАландскія астравыАзербайджа" +
- "нБоснія і ГерцагавінаБарбадасБангладэшБельгіяБуркіна-ФасоБалгарыяБа" +
- "хрэйнБурундзіБенінСен-БартэльміБермудскія астравыБрунейБалівіяКарыб" +
- "скія НідэрландыБразіліяБагамыБутанВостраў БувэБатсванаБеларусьБеліз" +
- "КанадаКакосавыя астравыКонга (Кіншаса)Цэнтральна-Афрыканская Рэспуб" +
- "лікаКонга (Бразавіль)ШвейцарыяКот-д’ІвуарАстравы КукаЧыліКамерунКіт" +
- "айКалумбіяВостраў КліпертонКоста-РыкаКубаКаба-ВердэВостраў КюрасааВ" +
- "остраў РастваКіпрЧэхіяГерманіяВостраў Дыега-ГарсіяДжыбуціДаніяДамін" +
- "ікаДамініканская РэспублікаАлжырСеўта і МелільяЭквадорЭстоніяЕгіпет" +
- "Заходняя СахараЭрытрэяІспаніяЭфіопіяЕўрапейскі саюзФінляндыяФіджыФа" +
- "лклендскія астравыМікранезіяФарэрскія астравыФранцыяГабонВялікабрыт" +
- "аніяГрэнадаГрузіяФранцузская ГвіянаВостраў ГернсіГанаГібралтарГрэнл" +
- "андыяГамбіяГвінеяГвадэлупаЭкватарыяльная ГвінеяГрэцыяПаўднёвая Джор" +
- "джыя і Паўднёвыя Сандвічавы астравыГватэмалаГуамГвінея-БісауГаянаГа" +
- "нконг, САР (Кітай)Востраў Херд і астравы МакдональдГандурасХарватыя" +
- "ГаіціВенгрыяКанарскія астравыІнданезіяІрландыяІзраільВостраў МэнІнд" +
- "ыяБрытанская тэрыторыя ў Індыйскім акіянеІракІранІсландыяІталіяВост" +
- "раў ДжэрсіЯмайкаІарданіяЯпоніяКеніяКыргызстанКамбоджаКірыбаціКаморс" +
- "кія АстравыСент-Кітс і НевісПаўночная КарэяПаўднёвая КарэяКувейтКай" +
- "манавы астравыКазахстанЛаосЛіванСент-ЛюсіяЛіхтэнштэйнШры-ЛанкаЛібер" +
- "ыяЛесотаЛітваЛюксембургЛатвіяЛівіяМарокаМанакаМалдоваЧарнагорыяСен-" +
- "МартэнМадагаскарМаршалавы АстравыМакедоніяМаліМ’янма (Бірма)Манголі" +
- "яМакаа, САР (Кітай)Паўночныя Марыянскія астравыМарцінікаМаўрытаніяМ" +
- "антсератМальтаМаўрыкійМальдывыМалавіМексікаМалайзіяМазамбікНамібіяН" +
- "овая КаледоніяНігерВостраў НорфалкНігерыяНікарагуаНідэрландыНарвегі" +
- "яНепалНауруНіуэНовая ЗеландыяАманПанамаПеруФранцузская ПалінезіяПап" +
- "уа — Новая ГвінеяФіліпіныПакістанПольшчаСен-П’ер і МікелонАстравы П" +
- "іткэрнПуэрта-РыкаПалестынскія тэрыторыіПартугаліяПалауПарагвайКатар" +
- "Вонкавая АкіяніяРэюньёнРумыніяСербіяРасіяРуандаСаудаўская АравіяСал" +
- "амонавы АстравыСейшэльскія АстравыСуданШвецыяСінгапурВостраў Святой" +
- " АленыСлавеніяСвальбард (Паўночна-Усходняя Зямля) і Ян-МаенСлавакіяС" +
- "ьера-ЛеонэСан-МарынаСенегалСамаліСурынамПаўднёвы СуданСан-Тамэ і Пр" +
- "ынсіпіСальвадорСінт-МартэнСірыяСвазілендТрыстан-да-КуньяЦёркс і Кай" +
- "касЧадФранцузскія Паўднёвыя тэрыторыіТогаТайландТаджыкістанТакелауУ" +
- "сходні ТыморТуркменістанТунісТонгаТурцыяТрынідад і ТабагаТувалуТайв" +
- "аньТанзаніяУкраінаУгандаЗнешнія малыя астравы ЗШАЗлучаныя Штаты Аме" +
- "рыкіУругвайУзбекістанВатыканСент-Вінсент і ГрэнадзіныВенесуэлаБрыта" +
- "нскія Віргінскія астравыАмерыканскія Віргінскія астравыВ’етнамВануа" +
- "туУоліс і ФутунаСамоаКосаваЕменВостраў МаётаПаўднёва-Афрыканская Рэ" +
- "спублікаЗамбіяЗімбабвэНевядомы рэгіёнСветАфрыкаПаўночная АмерыкаПаў" +
- "днёвая АмерыкаАкіяніяЗаходняя АфрыкаЦэнтральная АмерыкаУсходняя Афр" +
- "ыкаПаўночная АфрыкаЦэнтральная АфрыкаПаўднёвая АфрыкаПаўночная і Па" +
- "ўднёвая АмерыкіПаўночнаамерыканскі рэгіёнКарыбскія астравыУсходняя " +
- "АзіяПаўднёвая АзіяПаўднёва-Усходняя АзіяПаўднёвая ЕўропаАўстралазія" +
- "МеланезіяМікранезійскі рэгіёнПалінезіяАзіяЦэнтральная АзіяЗаходняя " +
- "АзіяЕўропаУсходняя ЕўропаПаўночная ЕўропаЗаходняя ЕўропаЛацінская А" +
- "мерыка",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0027, 0x005c, 0x0070, 0x0090, 0x009e, 0x00ac,
- 0x00ba, 0x00e1, 0x00ed, 0x0101, 0x0113, 0x0136, 0x0144, 0x0156,
- 0x0160, 0x0181, 0x0197, 0x01bd, 0x01cd, 0x01df, 0x01ed, 0x0204,
- 0x0214, 0x0222, 0x0232, 0x023c, 0x0255, 0x0278, 0x0284, 0x0292,
- 0x02b9, 0x02c9, 0x02d5, 0x02df, 0x02f6, 0x0306, 0x0316, 0x0320,
- 0x032c, 0x034d, 0x0368, 0x03a8, 0x03c7, 0x03d9, 0x03ef, 0x0406,
- 0x040e, 0x041c, 0x0426, 0x0436, 0x0457, 0x046a, 0x0472, 0x0485,
- 0x04a2, 0x04bd, 0x04c5, 0x04cf, 0x04df, 0x0505, 0x0513, 0x051d,
- // Entry 40 - 7F
- 0x052d, 0x055c, 0x0566, 0x0582, 0x0590, 0x059e, 0x05aa, 0x05c7,
- 0x05d5, 0x05e3, 0x05f1, 0x060e, 0x0620, 0x062a, 0x0651, 0x0665,
- 0x0686, 0x0694, 0x069e, 0x06ba, 0x06c8, 0x06d4, 0x06f7, 0x0712,
- 0x071a, 0x072c, 0x0740, 0x074c, 0x0758, 0x076a, 0x0793, 0x079f,
- 0x07fc, 0x080e, 0x0816, 0x082d, 0x0837, 0x085a, 0x0898, 0x08a8,
- 0x08b8, 0x08c2, 0x08d0, 0x08f1, 0x0903, 0x0913, 0x0921, 0x0936,
- 0x0940, 0x098a, 0x0992, 0x099a, 0x09aa, 0x09b6, 0x09d1, 0x09dd,
- 0x09ed, 0x09f9, 0x0a03, 0x0a17, 0x0a27, 0x0a37, 0x0a58, 0x0a77,
- // Entry 80 - BF
- 0x0a94, 0x0ab1, 0x0abd, 0x0ade, 0x0af0, 0x0af8, 0x0b02, 0x0b15,
- 0x0b2b, 0x0b3c, 0x0b4a, 0x0b56, 0x0b60, 0x0b74, 0x0b80, 0x0b8a,
- 0x0b96, 0x0ba2, 0x0bb0, 0x0bc4, 0x0bd7, 0x0beb, 0x0c0c, 0x0c1e,
- 0x0c26, 0x0c40, 0x0c50, 0x0c6f, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cdd,
- 0x0ce9, 0x0cf9, 0x0d09, 0x0d15, 0x0d23, 0x0d33, 0x0d43, 0x0d51,
- 0x0d6e, 0x0d78, 0x0d95, 0x0da3, 0x0db5, 0x0dc9, 0x0dd9, 0x0de3,
- 0x0ded, 0x0df5, 0x0e10, 0x0e18, 0x0e24, 0x0e2c, 0x0e55, 0x0e7b,
- 0x0e8b, 0x0e9b, 0x0ea9, 0x0ecb, 0x0ee8, 0x0efd, 0x0f28, 0x0f3c,
- // Entry C0 - FF
- 0x0f46, 0x0f56, 0x0f60, 0x0f7f, 0x0f8d, 0x0f9b, 0x0fa7, 0x0fb1,
- 0x0fbd, 0x0fde, 0x1001, 0x1026, 0x1030, 0x103c, 0x104c, 0x1072,
- 0x1082, 0x10d4, 0x10e4, 0x10f9, 0x110c, 0x111a, 0x1126, 0x1134,
- 0x114f, 0x1172, 0x1184, 0x1199, 0x11a3, 0x11b5, 0x11d3, 0x11ed,
- 0x11f3, 0x122f, 0x1237, 0x1245, 0x125b, 0x1269, 0x1282, 0x129a,
- 0x12a4, 0x12ae, 0x12ba, 0x12da, 0x12e6, 0x12f4, 0x1304, 0x1312,
- 0x131e, 0x134d, 0x1377, 0x1385, 0x1399, 0x13a7, 0x13d6, 0x13e8,
- 0x1420, 0x145c, 0x146b, 0x1479, 0x1493, 0x149d, 0x14a9, 0x14b1,
- // Entry 100 - 13F
- 0x14ca, 0x1506, 0x1512, 0x1522, 0x153f, 0x1547, 0x1553, 0x1574,
- 0x1595, 0x15a3, 0x15c0, 0x15e5, 0x1602, 0x1621, 0x1644, 0x1663,
- 0x169a, 0x16cd, 0x16ee, 0x1707, 0x1722, 0x174c, 0x176b, 0x1781,
- 0x1793, 0x17ba, 0x17cc, 0x17d4, 0x17f3, 0x180c, 0x1818, 0x1835,
- 0x1854, 0x1871, 0x1892,
- },
- },
- { // bem
- "Zambia",
- []uint16{ // 259 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0006,
- },
- },
- { // bez
- "HuandolaHufalme dza HihalabuHuafuganistaniHuantigua na HubarubudaHuangui" +
- "laHualbaniaHuameniaHuantili dza HuuholanziHuangolaHuajendinaHusamoa " +
- "ya HumalekaniHuastliaHuaustlaliaHualubaHuazabajaniHubosinia na Huhez" +
- "egovinaHubabadosiHubangaladeshiHuubelgijiHubukinafasoHubulgariaHubah" +
- "aleniHuburundiHubeniniHubelmudaHubruneiHuboliviaHublaziliHubahamaHub" +
- "utaniHubotiswanaHubelalusiHubelizeHukanadaIjamhuri ya Hidemokrasi ya" +
- " HukongoIjamhuri ya Afrika ya PagatiHukongoHuuswisiHukodivaaIfisima " +
- "fya KookHuchileHukameruniHuchinaHukolombiaHukostarikaHukubaHukepuved" +
- "eHukuprosiIjamhuri ya ChekiHuujerumaniHujibutiHudenmakiHudominikaIja" +
- "mhuri ya HudominikaHualjeliaHuekwadoHuestoniaHumisriHueritreaHuhispa" +
- "niaHuuhabeshiHuufiniHufijiIfisima fya FalklandHumikronesiaHuufaransa" +
- "HugaboniHuuingerezaHugrenadaHujojiaHugwiyana ya HuufaransaHughanaHuj" +
- "iblaltaHujinlandiHugambiaHujineHugwadelupeHuginekwetaHuugilikiHugwat" +
- "emalaHugwamHuginebisauHuguyanaHuhondulasiHukorasiaHuhaitiHuhungaliaH" +
- "uindonesiaHuayalandiHuislaheliHuindiaUlubali lwa Hubahari ya Hindi l" +
- "wa HuingerezaHuilakiHuuajemiHuaislandiHuitaliaHujamaikaHuyolodaniHuj" +
- "apaniHukenyaHukiligizistaniHukambodiaHukilibatiHukomoroHusantakitzi " +
- "na HunevisHukolea KaskaziniHukolea KusiniHukuwaitiIfisima fya Kayman" +
- "HukazakistaniHulaosiHulebanoniHusantalusiaHulishenteniHusirilankaHul" +
- "ibeliaHulesotoHulitwaniaHulasembagiHulativiaHulibiyaHumolokoHumonako" +
- "HumoldovaHubukiniIfisima fya MarshalHumasedoniaHumaliHumyamaHumongol" +
- "iaIfisima fya Mariana fya HukaskaziniHumartinikiHumolitaniaHumontser" +
- "ratiHumaltaHumolisiHumodivuHumalawiHumeksikoHumalesiaHumusumbijiHuna" +
- "mibiaHunyukaledoniaHunijeliIhisima sha NorfokHunijeliaHunikaragwaHuu" +
- "holanziHunolweHunepaliHunauruHuniueHunyuzilandiHuomaniHupanamaHupelu" +
- "Hupolinesia ya HuufaransaHupapuaHufilipinoHupakistaniHupolandiHusant" +
- "apieri na HumikeloniHupitkainiHupwetorikoUlubali lwa Magharibi nu Ga" +
- "za wa HupalestinaHuulenoHupalauHupalagwaiHukataliHuliyunioniHulomani" +
- "aHuulusiHulwandaHusaudiIfisima fya SolomonHushelisheliHusudaniHuuswi" +
- "diHusingapooHusantahelenaHusloveniaHuslovakiaHusiela LioniHusamalino" +
- "HusenegaliHusomaliaHusurinamuHusaotome na HuprinsipeHuelsavadoHusili" +
- "aHuuswaziIfisima fya Turki na KaikoHuchadiHutogoHutailandiHutajikist" +
- "aniHutokelauHutimori ya MasharikiHuuturukimenistaniHutunisiaHutongaH" +
- "uuturukiHutrinad na HutobagoHutuvaluHutaiwaniHutanzaniaHuukrainiHuug" +
- "andaHumalekaniHuulugwaiHuuzibekistaniHuvatikaniHusantavisenti na Hug" +
- "renadiniHuvenezuelaIfisima fya Virgin fya HuingerezaIfisima fya Virg" +
- "in fya HumelekaniHuvietinamuHuvanuatuHuwalis na HufutunaHusamoaHuyem" +
- "eniHumayotteHuafrika iya HukusiniHuzambiaHuzimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x001c, 0x002a, 0x0041, 0x004a, 0x0053,
- 0x005b, 0x0072, 0x007a, 0x007a, 0x0084, 0x0099, 0x00a1, 0x00ac,
- 0x00b3, 0x00b3, 0x00be, 0x00d7, 0x00e1, 0x00ef, 0x00f9, 0x0105,
- 0x010f, 0x0119, 0x0122, 0x012a, 0x012a, 0x0133, 0x013b, 0x0144,
- 0x0144, 0x014d, 0x0155, 0x015d, 0x015d, 0x0168, 0x0172, 0x017a,
- 0x0182, 0x0182, 0x01a4, 0x01c0, 0x01c7, 0x01cf, 0x01d8, 0x01e8,
- 0x01ef, 0x01f9, 0x0200, 0x020a, 0x020a, 0x0215, 0x021b, 0x0225,
- 0x0225, 0x0225, 0x022e, 0x023f, 0x024a, 0x024a, 0x0252, 0x025b,
- // Entry 40 - 7F
- 0x0265, 0x027b, 0x0284, 0x0284, 0x028c, 0x0295, 0x029c, 0x029c,
- 0x02a5, 0x02af, 0x02b9, 0x02b9, 0x02c0, 0x02c6, 0x02da, 0x02e6,
- 0x02e6, 0x02f0, 0x02f8, 0x0303, 0x030c, 0x0313, 0x032a, 0x032a,
- 0x0331, 0x033b, 0x0345, 0x034d, 0x0353, 0x035e, 0x0369, 0x0372,
- 0x0372, 0x037d, 0x0383, 0x038e, 0x0396, 0x0396, 0x0396, 0x03a1,
- 0x03aa, 0x03b1, 0x03bb, 0x03bb, 0x03c6, 0x03d0, 0x03da, 0x03da,
- 0x03e1, 0x040d, 0x0414, 0x041c, 0x0426, 0x042e, 0x042e, 0x0437,
- 0x0441, 0x0449, 0x0450, 0x045f, 0x0469, 0x0473, 0x047b, 0x0492,
- // Entry 80 - BF
- 0x04a3, 0x04b1, 0x04ba, 0x04cc, 0x04d9, 0x04e0, 0x04ea, 0x04f6,
- 0x0502, 0x050d, 0x0516, 0x051e, 0x0528, 0x0533, 0x053c, 0x0544,
- 0x054c, 0x0554, 0x055d, 0x055d, 0x055d, 0x0565, 0x0578, 0x0583,
- 0x0589, 0x0590, 0x059a, 0x059a, 0x05bd, 0x05c8, 0x05d3, 0x05e0,
- 0x05e7, 0x05ef, 0x05f7, 0x05ff, 0x0608, 0x0611, 0x061c, 0x0625,
- 0x0633, 0x063b, 0x064d, 0x0656, 0x0661, 0x066b, 0x0672, 0x067a,
- 0x0681, 0x0687, 0x0693, 0x069a, 0x06a2, 0x06a8, 0x06c1, 0x06c8,
- 0x06d2, 0x06dd, 0x06e6, 0x0700, 0x070a, 0x0715, 0x0741, 0x0748,
- // Entry C0 - FF
- 0x074f, 0x0759, 0x0761, 0x0761, 0x076c, 0x0775, 0x0775, 0x077c,
- 0x0784, 0x078b, 0x079e, 0x07aa, 0x07b2, 0x07ba, 0x07c4, 0x07d1,
- 0x07db, 0x07db, 0x07e5, 0x07f2, 0x07fc, 0x0806, 0x080f, 0x0819,
- 0x0819, 0x0830, 0x083a, 0x083a, 0x0841, 0x0849, 0x0849, 0x0863,
- 0x086a, 0x086a, 0x0870, 0x087a, 0x0887, 0x0890, 0x08a5, 0x08b7,
- 0x08c0, 0x08c7, 0x08d0, 0x08e4, 0x08ec, 0x08f5, 0x08ff, 0x0908,
- 0x0910, 0x0910, 0x091a, 0x0923, 0x0931, 0x093b, 0x0958, 0x0963,
- 0x0984, 0x09a5, 0x09b0, 0x09b9, 0x09cc, 0x09d3, 0x09d3, 0x09db,
- // Entry 100 - 13F
- 0x09e4, 0x09f9, 0x0a01, 0x0a0b,
- },
- },
- { // bg
- bgRegionStr,
- bgRegionIdx,
- },
- { // bm
- "AndɔrArabu mara kafoliAfiganistaŋAntiga-ni-BarbudaAngiyaAlibaniArimeniPe" +
- "yiba ka AntiyiAngolaArizantinSamowa amerikaniOtirisiOsitiraliArubaAz" +
- "ɛrbayjaŋBozni-ƐrizigoviniBarbadiBɛngiladɛsiBɛlizikiBurukina FasoBul" +
- "igariBareyiniBurundiBenɛnBermudiBurinɛyiBoliviBereziliBahamasiButaŋB" +
- "ɔtisiwanaBelarusiBeliziKanadaKongo ka republiki demɔkratikiSantaraf" +
- "irikiKongoSuwisiKodiwariKuki GunSiliKameruniSiniwajamanaKolombiKɔsit" +
- "arikaKubaCapivɛrdiCipriCeki republikiAlimaɲiJibutiDanemarkiDɔminikiD" +
- "ɔmimiki republikiAlizeriEkwatɔrEsetoniEziputiEritereEsipaɲiEtiopiFi" +
- "nilandiFijiMaluwini GunMikironesiFaransiGabɔŋAngilɛtɛriGranadiZeyɔrz" +
- "iFaransi ka gwiyaniGanaZibralitariGɔrɔhenelandiGanbiGineGwadelupGine" +
- " ekwatɔriGɛrɛsiGwatemalaGwamGine BisawoGwiyanaHɔndirasiKroasiAyitiHɔ" +
- "ngriƐndoneziIrilandiIsirayeliƐndujamanaAngilɛ ka ɛndu dugukoloIrakiI" +
- "raŋIsilandiItaliZamayikiZɔrdaniZapɔnKeniyaKirigizisitaŋKambojiKiriba" +
- "tiKomɔriKristɔfo-Senu-ni-ƝevɛsKɛɲɛka KoreWorodugu KoreKowɛtiBama Gun" +
- "KazakistaŋLayosiLibaŋLusi-SenuLisɛnsitayiniSirilankaLiberiyaLesotoLi" +
- "tuyaniLikisanburuLetoniLibiMarɔkuMonakoMolidaviMadagasikariMarisali " +
- "GunMacedɔniMaliMyanimariMoŋoliKɛɲɛka Mariyani GunMaritinikiMɔritaniM" +
- "oŋseraMaltiMorisiMaldiviMalawiMeksikiMalɛziMozanbikiNamibiKaledoni K" +
- "ouraNizɛriNɔrofoliki GunNizeriyaNikaragwaPeyibaNɔriwɛziNepaliNawuruN" +
- "yuweZelandi KouraOmaŋPanamaPeruFaransi ka polineziPapuwasi-Gine-Kour" +
- "aFilipiniPakisitaŋPoloɲiPiyɛri-Senu-ni-MikelɔŋPitikariniPɔrotorikoPa" +
- "lesitiniPɔritigaliPalawuParaguwayiKatariReyuɲɔŋRumaniIrisiRuwandaAra" +
- "biya SawudiyaSalomo GunSesɛliSudaŋSuwɛdiSɛngapuriƐlɛni SenuSloveniSl" +
- "owakiSiyera LewɔniMarini-SenuSenegaliSomaliSurinamiSawo Tome-ni-Prin" +
- "icipeSalivadɔrSiriSwazilandiTuriki Gun ni KayikiCadiTogoTayilandiTaj" +
- "ikisitaniTokeloKɔrɔn TimɔrTurikimenisitaniTuniziTongaTurikiTrinite-n" +
- "i-TobagoTuvaluTayiwaniTanzaniUkɛrɛniUgandaAmerikiUrugwayiUzebekisita" +
- "niVatikaŋVinisɛn-Senu-ni-GrenadiniVenezuwelaAngilɛ ka Sungurunnin Gu" +
- "nAmeriki ka Sungurunnin GunWiyɛtinamuVanuwatuWalisi-ni-FutunaSamowaY" +
- "emɛniMayotiWorodugu AfrikiZanbiZimbabuwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0034, 0x003a, 0x0041,
- 0x0048, 0x0058, 0x005e, 0x005e, 0x0067, 0x0077, 0x007e, 0x0087,
- 0x008c, 0x008c, 0x0098, 0x00aa, 0x00b1, 0x00be, 0x00c7, 0x00d4,
- 0x00dc, 0x00e4, 0x00eb, 0x00f1, 0x00f1, 0x00f8, 0x0101, 0x0107,
- 0x0107, 0x010f, 0x0117, 0x011d, 0x011d, 0x0128, 0x0130, 0x0136,
- 0x013c, 0x013c, 0x015b, 0x0168, 0x016d, 0x0173, 0x017b, 0x0183,
- 0x0187, 0x018f, 0x019b, 0x01a2, 0x01a2, 0x01ad, 0x01b1, 0x01bb,
- 0x01bb, 0x01bb, 0x01c0, 0x01ce, 0x01d6, 0x01d6, 0x01dc, 0x01e5,
- // Entry 40 - 7F
- 0x01ee, 0x0201, 0x0208, 0x0208, 0x0210, 0x0217, 0x021e, 0x021e,
- 0x0225, 0x022d, 0x0233, 0x0233, 0x023c, 0x0240, 0x024c, 0x0256,
- 0x0256, 0x025d, 0x0264, 0x0270, 0x0277, 0x027f, 0x0291, 0x0291,
- 0x0295, 0x02a0, 0x02af, 0x02b4, 0x02b8, 0x02c0, 0x02ce, 0x02d6,
- 0x02d6, 0x02df, 0x02e3, 0x02ee, 0x02f5, 0x02f5, 0x02f5, 0x02ff,
- 0x0305, 0x030a, 0x0311, 0x0311, 0x031a, 0x0322, 0x032b, 0x032b,
- 0x0336, 0x034f, 0x0354, 0x0359, 0x0361, 0x0366, 0x0366, 0x036e,
- 0x0376, 0x037c, 0x0382, 0x0390, 0x0397, 0x039f, 0x03a6, 0x03bf,
- // Entry 80 - BF
- 0x03cd, 0x03da, 0x03e1, 0x03e9, 0x03f4, 0x03fa, 0x0400, 0x0409,
- 0x0417, 0x0420, 0x0428, 0x042e, 0x0436, 0x0441, 0x0447, 0x044b,
- 0x0452, 0x0458, 0x0460, 0x0460, 0x0460, 0x046c, 0x0478, 0x0481,
- 0x0485, 0x048e, 0x0495, 0x0495, 0x04ab, 0x04b5, 0x04be, 0x04c6,
- 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5, 0x04ec, 0x04f5, 0x04fb,
- 0x0509, 0x0510, 0x051f, 0x0527, 0x0530, 0x0536, 0x0540, 0x0546,
- 0x054c, 0x0551, 0x055e, 0x0563, 0x0569, 0x056d, 0x0580, 0x0593,
- 0x059b, 0x05a5, 0x05ac, 0x05c5, 0x05cf, 0x05da, 0x05e4, 0x05ef,
- // Entry C0 - FF
- 0x05f5, 0x05ff, 0x0605, 0x0605, 0x060f, 0x0615, 0x0615, 0x061a,
- 0x0621, 0x0631, 0x063b, 0x0642, 0x0648, 0x064f, 0x0659, 0x0665,
- 0x066c, 0x066c, 0x0673, 0x0681, 0x068c, 0x0694, 0x069a, 0x06a2,
- 0x06a2, 0x06b8, 0x06c2, 0x06c2, 0x06c6, 0x06d0, 0x06d0, 0x06e4,
- 0x06e8, 0x06e8, 0x06ec, 0x06f5, 0x0701, 0x0707, 0x0715, 0x0725,
- 0x072b, 0x0730, 0x0736, 0x0747, 0x074d, 0x0755, 0x075c, 0x0765,
- 0x076b, 0x076b, 0x0772, 0x077a, 0x0787, 0x078f, 0x07a9, 0x07b3,
- 0x07cd, 0x07e7, 0x07f2, 0x07fa, 0x080a, 0x0810, 0x0810, 0x0817,
- // Entry 100 - 13F
- 0x081d, 0x082c, 0x0831, 0x083a,
- },
- },
- { // bn
- bnRegionStr,
- bnRegionIdx,
- },
- { // bo
- "རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་ཉི་ཧོང་ལྷོ་ཀོ་རི་ཡ།བལ་ཡུལ་ཨུ་རུ་ས" +
- "ུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།",
- []uint16{ // 262 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x0027, 0x0027,
- // Entry 40 - 7F
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
- // Entry 80 - BF
- 0x008a, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
- // Entry C0 - FF
- 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
- // Entry 100 - 13F
- 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x015f, 0x017d,
- },
- },
- { // bo-IN
- "ཨོཤི་ཡཱན་ན།",
- []uint16{ // 266 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0021,
- },
- },
- { // br
- "Enez AscensionAndorraEmirelezhioù Arab UnanetAfghanistanAntigua ha Barbu" +
- "daAnguillaAlbaniaArmeniaAntilhez NederlandatAngolaAntarktikaArcʼhant" +
- "inaSamoa AmerikanAostriaAostraliaArubaInizi ÅlandAzerbaidjanBosnia h" +
- "a HerzegovinaBarbadosBangladeshBelgiaBurkina FasoBulgariaBahreinBuru" +
- "ndiBeninSaint BarthélemyBermudaBruneiBoliviaKarib NederlandatBrazilB" +
- "ahamasBhoutanEnez BouvetBotswanaBelarusBelizeKanadaInizi KokozKongo " +
- "- KinshasaRepublik KreizafrikanKongo - BrazzavilleSuisAod an Olifant" +
- "Inizi CookChileKamerounSinaKolombiaEnez ClippertonCosta RicaKubaKab-" +
- "GlasCuraçaoEnez ChristmasKiprenezRepublik TchekAlamagnDiego GarciaDj" +
- "iboutiDanmarkDominicaRepublik DominikanAljeriaCeuta ha MelillaEcuado" +
- "rEstoniaEgiptSahara ar CʼhornôgEritreaSpagnEtiopiaUnaniezh EuropaFin" +
- "landFidjiInizi FalklandMikroneziaInizi FaeroFrañsGabonRouantelezh-Un" +
- "anetGrenadaJorjiaGwiana cʼhallGwernenezGhanaJibraltarGreunlandGambia" +
- "GineaGwadeloupGinea ar CʼhehederGresInizi Georgia ar Su hag Inizi Sa" +
- "ndwich ar SuGuatemalaGuamGinea-BissauGuyanaHong Kong RMD SinaInizi H" +
- "eard ha McDonaldHondurasKroatiaHaitiHungariaInizi KanariezIndoneziaI" +
- "werzhonIsraelEnez VanavIndiaTiriad breizhveurat Meurvor IndezIraqIra" +
- "nIslandItaliaJerzenezJamaikaJordaniaJapanKenyaKyrgyzstanKambodjaKiri" +
- "batiKomorezSaint Kitts ha NevisKorea an NorzhKorea ar SuKoweitInizi " +
- "CaymanKazakstanLaosLibanSaint LuciaLiechtensteinSri LankaLiberiaLeso" +
- "thoLituaniaLuksembourgLatviaLibiaMarokoMonacoMoldovaMontenegroSaint " +
- "MartinMadagaskarInizi MarshallMakedoniaMaliMyanmar (Birmania)Mongoli" +
- "aMacau RMD SinaInizi Mariana an NorzhMartinikMaouritaniaMontserratMa" +
- "ltaMorisMaldivezMalawiMecʼhikoMalaysiaMozambikNamibiaKaledonia Nevez" +
- "NigerEnez NorfolkNigeriaNicaraguaIzelvroioùNorvegiaNepalNauruNiueZel" +
- "and-NevezOmanPanamáPerouPolinezia CʼhallPapoua Ginea-NevezFilipinezP" +
- "akistanPoloniaSant-Pêr-ha-MikelonEnez PitcairnPuerto RicoTiriadoù Pa" +
- "lestinaPortugalPalauParaguayQatarOseania diabellAr ReünionRoumaniaSe" +
- "rbiaRusiaRwandaArabia SaoudatInizi SalomonSechelezSoudanSvedenSingap" +
- "ourSaint-HelenaSloveniaSvalbardSlovakiaSierra LeoneSan MarinoSenegal" +
- "SomaliaSurinamSusoudanSão Tomé ha PríncipeSalvadorSint MaartenSiriaS" +
- "wazilandTristan da CunhaInizi Turks ha CaicosTchadDouaroù aostral Fr" +
- "añsTogoThailandTadjikistanTokelauTimor-LesteTurkmenistanTuniziaTonga" +
- "TurkiaTrinidad ha TobagoTuvaluTaiwanTanzaniaUkrainaOugandaInizi diab" +
- "ell ar Stadoù-UnanetStadoù-UnanetUruguayOuzbekistanVatikanSant Visan" +
- "t hag ar GrenadinezVenezuelaInizi Gwercʼh Breizh-VeurInizi Gwercʼh a" +
- "r Stadoù-UnanetViêt NamVanuatuWallis ha FutunaSamoaKosovoYemenMayott" +
- "eSuafrikaZambiaZimbabweRannved dianavBedAfrikaNorzhamerikaSuamerikaO" +
- "seaniaAfrika ar CʼhornôgKreizamerikaAfrika ar ReterAfrika an NorzhAf" +
- "rika ar CʼhreizAfrika ar SuAmerikaoùAmerika an NorzhKaribAzia ar Ret" +
- "erAzia ar SuAzia ar GevredEuropa ar SuAostralaziaMelaneziaRannved Mi" +
- "kroneziaPolineziaAziaAzia ar CʼhreizAzia ar CʼhornôgEuropaEuropa ar " +
- "ReterEuropa an NorzhEuropa ar CʼhornôgAmerika Latin",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0015, 0x002e, 0x0039, 0x004b, 0x0053, 0x005a,
- 0x0061, 0x0075, 0x007b, 0x0085, 0x0091, 0x009f, 0x00a6, 0x00af,
- 0x00b4, 0x00c0, 0x00cb, 0x00e0, 0x00e8, 0x00f2, 0x00f8, 0x0104,
- 0x010c, 0x0113, 0x011a, 0x011f, 0x0130, 0x0137, 0x013d, 0x0144,
- 0x0155, 0x015b, 0x0162, 0x0169, 0x0174, 0x017c, 0x0183, 0x0189,
- 0x018f, 0x019a, 0x01aa, 0x01bf, 0x01d2, 0x01d6, 0x01e4, 0x01ee,
- 0x01f3, 0x01fb, 0x01ff, 0x0207, 0x0216, 0x0220, 0x0224, 0x022c,
- 0x0234, 0x0242, 0x024a, 0x0258, 0x025f, 0x026b, 0x0273, 0x027a,
- // Entry 40 - 7F
- 0x0282, 0x0294, 0x029b, 0x02ab, 0x02b2, 0x02b9, 0x02be, 0x02d2,
- 0x02d9, 0x02de, 0x02e5, 0x02f4, 0x02fb, 0x0300, 0x030e, 0x0318,
- 0x0323, 0x0329, 0x032e, 0x0340, 0x0347, 0x034d, 0x035b, 0x0364,
- 0x0369, 0x0372, 0x037b, 0x0381, 0x0386, 0x038f, 0x03a2, 0x03a6,
- 0x03d2, 0x03db, 0x03df, 0x03eb, 0x03f1, 0x0403, 0x041a, 0x0422,
- 0x0429, 0x042e, 0x0436, 0x0444, 0x044d, 0x0455, 0x045b, 0x0465,
- 0x046a, 0x048b, 0x048f, 0x0493, 0x0499, 0x049f, 0x04a7, 0x04ae,
- 0x04b6, 0x04bb, 0x04c0, 0x04ca, 0x04d2, 0x04da, 0x04e1, 0x04f5,
- // Entry 80 - BF
- 0x0503, 0x050e, 0x0514, 0x0520, 0x0529, 0x052d, 0x0532, 0x053d,
- 0x054a, 0x0553, 0x055a, 0x0561, 0x0569, 0x0574, 0x057a, 0x057f,
- 0x0585, 0x058b, 0x0592, 0x059c, 0x05a8, 0x05b2, 0x05c0, 0x05c9,
- 0x05cd, 0x05df, 0x05e7, 0x05f5, 0x060b, 0x0613, 0x061e, 0x0628,
- 0x062d, 0x0632, 0x063a, 0x0640, 0x0649, 0x0651, 0x0659, 0x0660,
- 0x066f, 0x0674, 0x0680, 0x0687, 0x0690, 0x069b, 0x06a3, 0x06a8,
- 0x06ad, 0x06b1, 0x06bd, 0x06c1, 0x06c8, 0x06cd, 0x06de, 0x06f0,
- 0x06f9, 0x0701, 0x0708, 0x071c, 0x0729, 0x0734, 0x0747, 0x074f,
- // Entry C0 - FF
- 0x0754, 0x075c, 0x0761, 0x0770, 0x077b, 0x0783, 0x0789, 0x078e,
- 0x0794, 0x07a2, 0x07af, 0x07b7, 0x07bd, 0x07c3, 0x07cc, 0x07d8,
- 0x07e0, 0x07e8, 0x07f0, 0x07fc, 0x0806, 0x080d, 0x0814, 0x081b,
- 0x0823, 0x083a, 0x0842, 0x084e, 0x0853, 0x085c, 0x086c, 0x0881,
- 0x0886, 0x089d, 0x08a1, 0x08a9, 0x08b4, 0x08bb, 0x08c6, 0x08d2,
- 0x08d9, 0x08de, 0x08e4, 0x08f6, 0x08fc, 0x0902, 0x090a, 0x0911,
- 0x0918, 0x0937, 0x0945, 0x094c, 0x0957, 0x095e, 0x097b, 0x0984,
- 0x099e, 0x09be, 0x09c7, 0x09ce, 0x09de, 0x09e3, 0x09e9, 0x09ee,
- // Entry 100 - 13F
- 0x09f5, 0x09fd, 0x0a03, 0x0a0b, 0x0a19, 0x0a1c, 0x0a22, 0x0a2e,
- 0x0a37, 0x0a3e, 0x0a52, 0x0a5e, 0x0a6d, 0x0a7c, 0x0a8e, 0x0a9a,
- 0x0aa4, 0x0ab4, 0x0ab9, 0x0ac6, 0x0ad0, 0x0ade, 0x0aea, 0x0af5,
- 0x0afe, 0x0b10, 0x0b19, 0x0b1d, 0x0b2d, 0x0b3f, 0x0b45, 0x0b54,
- 0x0b63, 0x0b77, 0x0b84,
- },
- },
- { // brx
- "ऍन्डोरासंयुक्त अरब अमीरातअफ़ग़ानिस्तानएन्टिगुआ एवं बारबूडाएंगीलाअल्बानिय" +
- "ाआर्मेनियानीदरलैंड्स एंटिलीज़अंगोलाअंटार्कटिकाअर्जेण्टिनाअमरिकी सम" +
- "ोआऑस्ट्रियाऑस्ट्रेलियाअरूबाआलाँड द्वीपअज़रबैजानबोसनिया हर्ज़ेगोविन" +
- "ाबारबाडोसबंगलादेशबेल्जियमबुर्किना फासोबल्गैरियाबहरैनबुरुंडीबेनेँसे" +
- "ँ बार्थेलेमीबरमूडाब्रूनइबोलीवियाब्राज़ीलबहामाभूटानबुवे द्वीपबोत्स्" +
- "वानाबेलारूसबेलिज़कैनाडाकोकोस द्वीपकॉंगो किनशासासेंट्रल अफ्रीकन रिप" +
- "ब्लिककॉंगो ब्राज़्ज़ावीलस्वित्ज़रलैंडआईवरी कोस्टकुक द्वीपचिलीकोमेर" +
- "ानचीनकोलम्बियाकोस्टारीकाक्यूबाकैप वेर्देक्रिस्मस द्वीपसाइप्रसचेक ग" +
- "णराज्यजर्मनीद्जिबूतीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियाएक्वा" +
- "डोरएस्टोनियामिस्रपश्चिमी सहाराएरिट्रियास्पेनइथिओपियायूरोपीय संघफिन" +
- "लैंडफिजीफ़ॉल्कलैंड द्वीपमाइक्रोनेशियाफरो द्वीपफ्राँसगैबॉनब्रितनग्र" +
- "ेनडाजॉर्जियाफ्राँसीसी गिआनागेर्नसेघानाजिब्राल्टरग्रीनलैण्डगाम्बिया" +
- "गिनीग्वादलुपइक्वेटोरियल गिनीग्रीसदक्षिण जोर्जिया एवं दक्षिण सैंडवी" +
- "च द्वीपगोतेदालागुआमगीनी-बिसाउगुयानाहाँगकाँग विशेष प्रशासनिक क्षेत्" +
- "र चीनहर्ड द्वीप एवं मैकडोनॉल्ड द्वीपहौण्डूरासक्रोएशियाहाइतीहंगरीइं" +
- "डोनेशियाआयरलैंडइस्राइलआईल ऑफ़ मैनभारतब्रिटिश हिंद महासागरिय क्षेत्" +
- "रईराक़ईरानआइसलैंडइटलीजर्सीजमाइकाजॉर्डनजापानकेन्याकिर्गिज़कम्बोडिया" +
- "किरिबातीकोमोरोज़सेंट किट्स एवं नेविसउत्तर कोरियादक्षिण कोरियाकुवैत" +
- "केमैन द्वीपकज़ाखस्तानलाओसलेबनोनसेंट लूसियालिक्टैनस्टाईनश्री लँकाला" +
- "इबेरियालसोथोलिथुआनियालक्समबर्गलाट्वीयालीबियामोरोक्कोमोनाकोमोल्डेवि" +
- "यामोंटेनेग्रोसेँ मार्टेँमदागास्करमार्शल द्वीपमैसेडोनियामालीम्यानमा" +
- "रमंगोलियामकाओ विशेष प्रशासनिक क्षेत्र (चीन)उत्तरी मारियाना द्वीपमा" +
- "र्टीनिकमॉरिटेनियामॉंसेरामाल्टामॉरिसमालदीवमलावीमैक्सिकोमलेशियामोज़ा" +
- "म्बिकनामीबियान्यू कैलेडोनियानाइजेरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआन" +
- "ेदरलैण्डनॉर्वेनेपालनाउरूनीयूएन्यूज़ीलैंडओमानपनामापेरूफ्राँसीसी पॉल" +
- "िनीशियापापुआ न्यू गिनीफिलीपिन्सपाकिस्तानपोलैण्डसेँ पीएर एवं मि" +
- "\u200dकेलॉंपिटकेर्नपुएर्टो रीकोफ़िलिस्तीनपुर्तगालपलाऊपारागुएक़तारबाह" +
- "रिय ओशेआनियारेयूनियॉंरोमानियासर्बियारूसरूआण्डासऊदी अरबसॉलोमन द्वीप" +
- "सेशेल्ससूदानस्वीडनसिंगापुरसेण्\u200dट हेलेनास्लोवेनियास्वाल्बार्ड " +
- "एवं यान मायेनस्लोवाकियासियेरा लेओनसैन मरीनोसेनेगालसोमालियासुरिनामस" +
- "ाउँ-तोमे एवं प्रिंसिपऍल साल्वाडोरसीरियास्वाज़ीलैंडतुर्की एवं कैकोज" +
- "़ द्वीपचाडफ्राँसीसी उत्तरी क्षेत्रोंटोगोथाइलैण्डताजिकिस्तानटोकेलौप" +
- "ूर्वी तिमोरतुर्कमेनीस्तानत्युनिशियाटॉंगातुर्कीट्रिनिडाड एवं टोबैगो" +
- "तुवालुताइवानतंज़ानियायूक्रेनयुगाँडायुनाइटेड स्टेट्स के छोटे बाहरिय" +
- " द्वीपसंयुक्त राज्य अमरिकायुरूगुएउज़बेकिस्तानवैटिकनसेंट विंसंट एवं द" +
- "ी ग्रनाडीन्स्वेनेज़ुएलाब्रिटिश वर्जीन आईलंड्सयु.एस. वर्जीन आईलंड्स" +
- "वियतनामवानाऊटुवॉलेस एवं फ़्यूचूनासमोआयमनमैयौटदक्षिण अफ्रीकाज़ाम्बि" +
- "याज़ीम्बाब्वेअज्ञात या अवैध प्रदेशदुनियाअफ्रीकाउत्तर अमरिकादक्षिण " +
- "अमरिकाओशेआनियापश्चिमी अफ्रीकामध्य अमरिकापूर्वी अफ्रीकाउत्तरी अफ्री" +
- "कामध्य अफ्रीकादक्षिणी अफ्रीकाअमरिकाज़्उत्तरी अमरिकाकैरिबियनपूर्वी " +
- "एशियादक्षिणी एशियादक्षिण-पूर्वी एशियादक्षिणी यूरोपऑस्ट्रेलिया एवं " +
- "न्यूजीलैंडमेलीनेशियामाईक्रोनेशियापोलीनेशियाएशियामध्य एशियापश्चिमी " +
- "ऐशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यूरोप्लैटिन अमरिका एवं क" +
- "रीबी",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0015, 0x0047, 0x006e, 0x00a6, 0x00b8, 0x00d3,
- 0x00ee, 0x0125, 0x0137, 0x0158, 0x0179, 0x0198, 0x01b3, 0x01d4,
- 0x01e3, 0x0202, 0x021d, 0x0257, 0x026f, 0x0287, 0x029f, 0x02c4,
- 0x02df, 0x02ee, 0x0303, 0x0312, 0x033a, 0x034c, 0x035e, 0x0376,
- 0x0376, 0x038e, 0x039d, 0x03ac, 0x03c8, 0x03e6, 0x03fb, 0x040d,
- 0x041f, 0x043e, 0x0463, 0x04a7, 0x04de, 0x0505, 0x0524, 0x053d,
- 0x0549, 0x055e, 0x0567, 0x0582, 0x0582, 0x05a0, 0x05b2, 0x05ce,
- 0x05ce, 0x05f6, 0x060b, 0x062a, 0x063c, 0x063c, 0x0654, 0x066c,
- // Entry 40 - 7F
- 0x0684, 0x06b2, 0x06cd, 0x06cd, 0x06e5, 0x0700, 0x070f, 0x0734,
- 0x074f, 0x075e, 0x0776, 0x0795, 0x07aa, 0x07b6, 0x07e4, 0x080b,
- 0x0824, 0x0836, 0x0845, 0x0857, 0x086c, 0x0884, 0x08af, 0x08c4,
- 0x08d0, 0x08ee, 0x090c, 0x0924, 0x0930, 0x0948, 0x0976, 0x0985,
- 0x09f3, 0x0a0b, 0x0a17, 0x0a33, 0x0a45, 0x0aa9, 0x0afe, 0x0b19,
- 0x0b34, 0x0b43, 0x0b52, 0x0b52, 0x0b70, 0x0b85, 0x0b9a, 0x0bb7,
- 0x0bc3, 0x0c17, 0x0c26, 0x0c32, 0x0c47, 0x0c53, 0x0c62, 0x0c74,
- 0x0c86, 0x0c95, 0x0ca7, 0x0cbf, 0x0cda, 0x0cf2, 0x0d0a, 0x0d40,
- // Entry 80 - BF
- 0x0d62, 0x0d87, 0x0d96, 0x0db5, 0x0dd3, 0x0ddf, 0x0df1, 0x0e10,
- 0x0e37, 0x0e50, 0x0e6b, 0x0e7a, 0x0e95, 0x0eb0, 0x0ec8, 0x0eda,
- 0x0ef2, 0x0f04, 0x0f22, 0x0f43, 0x0f62, 0x0f7d, 0x0f9f, 0x0fbd,
- 0x0fc9, 0x0fe1, 0x0ff9, 0x1053, 0x108e, 0x10a9, 0x10c7, 0x10dc,
- 0x10ee, 0x10fd, 0x110f, 0x111e, 0x1136, 0x114b, 0x1169, 0x1181,
- 0x11ac, 0x11be, 0x11e3, 0x11fe, 0x1219, 0x1234, 0x1246, 0x1255,
- 0x1264, 0x1273, 0x1294, 0x12a0, 0x12af, 0x12bb, 0x12f5, 0x131e,
- 0x1339, 0x1354, 0x1369, 0x13a2, 0x13ba, 0x13dc, 0x13fa, 0x1412,
- // Entry C0 - FF
- 0x141e, 0x1433, 0x1442, 0x146d, 0x1488, 0x14a0, 0x14b5, 0x14be,
- 0x14d3, 0x14e9, 0x150b, 0x1520, 0x152f, 0x1541, 0x1559, 0x157e,
- 0x159c, 0x15e1, 0x15ff, 0x161e, 0x1637, 0x164c, 0x1664, 0x1679,
- 0x1679, 0x16b5, 0x16d7, 0x16d7, 0x16e9, 0x170a, 0x170a, 0x1749,
- 0x1752, 0x179c, 0x17a8, 0x17c0, 0x17e1, 0x17f3, 0x1815, 0x183f,
- 0x185d, 0x186c, 0x187e, 0x18b6, 0x18c8, 0x18da, 0x18f5, 0x190a,
- 0x191f, 0x1984, 0x19bc, 0x19d1, 0x19f5, 0x1a07, 0x1a59, 0x1a77,
- 0x1ab5, 0x1aec, 0x1b01, 0x1b16, 0x1b4b, 0x1b57, 0x1b57, 0x1b60,
- // Entry 100 - 13F
- 0x1b6f, 0x1b97, 0x1bb2, 0x1bd3, 0x1c0c, 0x1c1e, 0x1c33, 0x1c55,
- 0x1c7a, 0x1c92, 0x1cbd, 0x1cdc, 0x1d04, 0x1d2c, 0x1d4e, 0x1d79,
- 0x1d94, 0x1db9, 0x1dd1, 0x1df3, 0x1e18, 0x1e4d, 0x1e72, 0x1ebc,
- 0x1eda, 0x1f01, 0x1f1f, 0x1f2e, 0x1f4a, 0x1f6f, 0x1f7e, 0x1fa0,
- 0x1fc2, 0x1fea, 0x2026,
- },
- },
- { // bs
- "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbu" +
- "daAngvilaAlbanijaJermenijaHolandski AntiliAngolaAntarktikaArgentinaA" +
- "merička SamoaAustrijaAustralijaArubaAlandska OstrvaAzerbejdžanBosna " +
- "i HercegovinaBarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBuru" +
- "ndiBeninSveti BartolomejBermudaBrunejBolivijaKaripska HolandijaBrazi" +
- "lBahamiButanBuve OstrvaBocvanaBjelorusijaBelizeKanadaKokosova (Kilin" +
- "gova) ostrvaDemokratska Republika KongoCentralnoafrička RepublikaKon" +
- "goŠvicarskaObala SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrv" +
- "o KlipertonKostarikaKubaKape VerdeKurasaoBožićna OstrvaKiparČeškaNje" +
- "mačkaDijego GarsijaDžibutiDanskaDominikaDominikanska RepublikaAlžirS" +
- "euta i MeliljaEkvadorEstonijaEgipatZapadna SaharaEritrejaŠpanijaEtio" +
- "pijaEvropska UnijaFinskaFidžiFolklandska OstrvaMikronezijaFarska Ost" +
- "rvaFrancuskaGabonVelika BritanijaGrenadaGruzijaFrancuska GvajanaGern" +
- "ziGanaGibraltarGrenlandGambijaGvinejaGvadelupeEkvatorijalna GvinejaG" +
- "rčkaJužna Džordžija i Južna Sendvič OstrvaGvatemalaGuamGvineja-Bisao" +
- "GvajanaHong Kong (S. A. R. Kina)Heard i arhipelag McDonaldHondurasHr" +
- "vatskaHaitiMađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo ManInd" +
- "ijaBritanska Territorija u Indijskom OkeanuIrakIranIslandItalijaDžer" +
- "siJamajkaJordanJapanKenijaKirgizstanKambodžaKiribatiKomorska OstrvaS" +
- "ent Kits i NevisSjeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKaz" +
- "ahstanLaosLibanSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvani" +
- "jaLuksemburgLetonijaLibijaMarokoMonakoMoldavijaCrna GoraSv. MartinMa" +
- "dagaskarMaršalska OstrvaMakedonijaMaliMijanmarMongolijaMakao (S. A. " +
- "R. Kina)Sjeverna Marijanska OstrvaMartinikMauritanijaMonseratMaltaMa" +
- "uriciusMaldiviMalaviMeksikoMalezijaMozambikNamibijaNova KaledonijaNi" +
- "gerNorfolk OstrvoNigerijaNikaragvaHolandijaNorveškaNepalNauruNiueNov" +
- "i ZelandOmanPanamaPeruFrancuska PolinezijaPapua Nova GvinejaFilipini" +
- "PakistanPoljskaSveti Petar i MikelonPitkernPorto RikoPalestinska Ter" +
- "itorijaPortugalPalauParagvajKatarOstala OkeanijaRejunionRumunijaSrbi" +
- "jaRusijaRuandaSaudijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaS" +
- "ingapurSveta HelenaSlovenijaSvalbard i Jan MajenSlovačkaSijera Leone" +
- "San MarinoSenegalSomalijaSurinamJužni SudanSao Tome i PrincipeSalvad" +
- "orSint MartenSirijaSvazilendTristan da KunjaOstrva Turks i CaicosČad" +
- "Francuske Južne TeritorijeTogoTajlandTadžikistanTokelauTimor LesteTu" +
- "rkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkra" +
- "jinaUgandaUdaljena ostrva SADSjedinjene Američke DržaveUrugvajUzbeki" +
- "stanVatikanSveti Vincent i GrenadiniVenecuelaBritanska Djevičanska O" +
- "strvaDjevičanska Ostrva SADVijetnamVanuatuWallis i FutunaSamoaKosovo" +
- "JemenMajoteJužnoafrička RepublikaZambijaZimbabveNepoznata oblastSvij" +
- "etAfrikaSjevernoamerički kontinentJužna AmerikaOkeanijaZapadna Afrik" +
- "aCentralna AmerikaIstočna AfrikaSjeverna AfrikaCentralna AfrikaJužna" +
- " AfrikaAmerikaSjeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoisto" +
- "čna AzijaJužna EvropaAustralazijaMelanezijaMikronezijski RegionPoli" +
- "nezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSjeverna " +
- "EvropaZapadna EvropaLatinska Amerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059,
- 0x0062, 0x0072, 0x0078, 0x0082, 0x008b, 0x009a, 0x00a2, 0x00ac,
- 0x00b1, 0x00c0, 0x00cc, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
- 0x010c, 0x0113, 0x011a, 0x011f, 0x012f, 0x0136, 0x013c, 0x0144,
- 0x0156, 0x015c, 0x0162, 0x0167, 0x0172, 0x0179, 0x0184, 0x018a,
- 0x0190, 0x01ab, 0x01c6, 0x01e1, 0x01e6, 0x01f0, 0x0200, 0x020d,
- 0x0212, 0x0219, 0x021d, 0x0226, 0x0236, 0x023f, 0x0243, 0x024d,
- 0x0254, 0x0264, 0x0269, 0x0270, 0x0279, 0x0287, 0x028f, 0x0295,
- // Entry 40 - 7F
- 0x029d, 0x02b3, 0x02b9, 0x02c8, 0x02cf, 0x02d7, 0x02dd, 0x02eb,
- 0x02f3, 0x02fb, 0x0303, 0x0311, 0x0317, 0x031d, 0x032f, 0x033a,
- 0x0347, 0x0350, 0x0355, 0x0365, 0x036c, 0x0373, 0x0384, 0x038a,
- 0x038e, 0x0397, 0x039f, 0x03a6, 0x03ad, 0x03b6, 0x03cb, 0x03d1,
- 0x03fc, 0x0405, 0x0409, 0x0416, 0x041d, 0x0436, 0x0450, 0x0458,
- 0x0460, 0x0465, 0x046e, 0x047d, 0x0487, 0x048c, 0x0492, 0x049c,
- 0x04a2, 0x04ca, 0x04ce, 0x04d2, 0x04d8, 0x04df, 0x04e6, 0x04ed,
- 0x04f3, 0x04f8, 0x04fe, 0x0508, 0x0511, 0x0519, 0x0528, 0x0539,
- // Entry 80 - BF
- 0x0548, 0x0555, 0x055b, 0x056b, 0x0574, 0x0578, 0x057d, 0x0589,
- 0x0595, 0x059f, 0x05a7, 0x05ad, 0x05b6, 0x05c0, 0x05c8, 0x05ce,
- 0x05d4, 0x05da, 0x05e3, 0x05ec, 0x05f6, 0x0600, 0x0611, 0x061b,
- 0x061f, 0x0627, 0x0630, 0x0645, 0x065f, 0x0667, 0x0672, 0x067a,
- 0x067f, 0x0688, 0x068f, 0x0695, 0x069c, 0x06a4, 0x06ac, 0x06b4,
- 0x06c3, 0x06c8, 0x06d6, 0x06de, 0x06e7, 0x06f0, 0x06f9, 0x06fe,
- 0x0703, 0x0707, 0x0712, 0x0716, 0x071c, 0x0720, 0x0734, 0x0746,
- 0x074e, 0x0756, 0x075d, 0x0772, 0x0779, 0x0783, 0x0799, 0x07a1,
- // Entry C0 - FF
- 0x07a6, 0x07ae, 0x07b3, 0x07c2, 0x07ca, 0x07d2, 0x07d8, 0x07de,
- 0x07e4, 0x07f5, 0x0806, 0x080e, 0x0813, 0x081b, 0x0823, 0x082f,
- 0x0838, 0x084c, 0x0855, 0x0861, 0x086b, 0x0872, 0x087a, 0x0881,
- 0x088d, 0x08a0, 0x08a8, 0x08b3, 0x08b9, 0x08c2, 0x08d2, 0x08e7,
- 0x08eb, 0x0906, 0x090a, 0x0911, 0x091d, 0x0924, 0x092f, 0x093b,
- 0x0940, 0x0945, 0x094b, 0x095c, 0x0962, 0x0968, 0x0971, 0x0979,
- 0x097f, 0x0992, 0x09ae, 0x09b5, 0x09bf, 0x09c6, 0x09df, 0x09e8,
- 0x0a05, 0x0a1c, 0x0a24, 0x0a2b, 0x0a3a, 0x0a3f, 0x0a45, 0x0a4a,
- // Entry 100 - 13F
- 0x0a50, 0x0a68, 0x0a6f, 0x0a77, 0x0a87, 0x0a8d, 0x0a93, 0x0aae,
- 0x0abc, 0x0ac4, 0x0ad2, 0x0ae3, 0x0af2, 0x0b01, 0x0b11, 0x0b1e,
- 0x0b25, 0x0b35, 0x0b3b, 0x0b49, 0x0b55, 0x0b67, 0x0b74, 0x0b80,
- 0x0b8a, 0x0b9e, 0x0ba8, 0x0bad, 0x0bbc, 0x0bc9, 0x0bcf, 0x0bde,
- 0x0bed, 0x0bfb, 0x0c0b,
- },
- },
- { // bs-Cyrl
- "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
- "аАнгвилаАлбанијаАрменијаХоландски АнтилиАнголаАнтарктикАргентинаАме" +
- "ричка СамоаАустријаАустралијаАрубаАландска острваАзербејџанБосна и " +
- "ХерцеговинаБарбадосБангладешБелгијаБуркина ФасоБугарскаБахреинБурун" +
- "диБенинСвети БартоломејБермудаБрунејБоливијаБразилБахамиБутанБуве О" +
- "стрваБоцванаБелорусијаБелизеКанадаКокос (Келинг) ОстрваКонго - Кинш" +
- "асаЦентрално Афричка РепубликаКонго - БразавилШвајцарскаОбала Слоно" +
- "вачеКукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаК" +
- "убаКапе ВердеБожићна острваКипарЧешкаНемачкаДијего ГарсијаЏибутиДан" +
- "скаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонија" +
- "ЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџи" +
- "Фокландска острваМикронезијаФарска ОстрваФранцускаГабонВелика Брита" +
- "нијаГренадаГрузијаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамби" +
- "јаГвинејаГваделупеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна С" +
- "ендвич ОстрваГватемалаГуамГвинеја-БисаоГвајанаХонг Конг С. А. Р. Ки" +
- "наХерд и Мекдоналд ОстрваХондурасХрватскаХаитиМађарскаКанарска остр" +
- "ваИндонезијаИрскаИзраелОстрво МанИндијаБританска територија у Индиј" +
- "ском океануИракИранИсландИталијаЏерсиЈамајкаЈорданЈапанКенијаКиргиз" +
- "станКамбоџаКирибатиКоморска ОстрваСент Китс и НевисСеверна КорејаЈу" +
- "жна КорејаКувајтКајманска ОстрваКазахстанЛаосЛибанСент ЛуцијаЛихтен" +
- "штајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛетонијаЛибијаМароко" +
- "МонакоМолдавијаЦрна ГораСент МартинМадагаскарМаршалска ОстрваМакедо" +
- "нијаМалиМијанмар (Бурма)МонголијаМакао С. А. Р. КинаСеверна Маријан" +
- "ска ОстрваМартиникМауританијаМонсератМалтаМаурицијусМалдивиМалавиМе" +
- "ксикоМалезијаМозамбикНамибијаНова КаледонијаНигерНорфолк ОстрвоНиге" +
- "ријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаПе" +
- "руФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен П" +
- "јер и МикелонПиткернПорто РикоПалестинске територијеПортугалијаПала" +
- "уПарагвајКатарОстала океанијаРеинионРумунијаСрбијаРусијаРуандаСауди" +
- "јска АрабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета Јелен" +
- "аСловенијаСвалбард и Јанмајен ОстрваСловачкаСијера ЛеонеСан МариноС" +
- "енегалСомалијаСуринамСао Томе и ПринципеСалвадорСиријаСвазилендТрис" +
- "тан да КуњаТуркс и Кајкос ОстрваЧадФранцуске Јужне ТериторијеТогоТа" +
- "јландТаџикистанТокелауИсточни ТиморТуркменистанТунисТонгаТурскаТрин" +
- "идад и ТобагоТувалуТајванТанзанијаУкрајинаУгандаМања удаљена острва" +
- " САДСједињене Америчке ДржавеУругвајУзбекистанВатиканСент Винсент и " +
- "ГренадиниВенецуелаБританска Девичанска ОстрваС.А.Д. Девичанска Остр" +
- "ваВијетнамВануатуВалис и Футуна ОстрваСамоаЈеменМајотеЈужноафричка " +
- "РепубликаЗамбијаЗимбабвеНепозната или неважећа областСветАфрикаСеве" +
- "рноамерички континентЈужна АмерикаОкеанијаЗападна АфрикаЦентрална А" +
- "мерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈужна АфрикаАмери" +
- "кеСеверна АмерикаКарибиИсточна АзијаЈужна АзијаЈугоисточна АзијаЈуж" +
- "на ЕвропаАустралија и Нови ЗеландМеланезијаМикронезијски регионПоли" +
- "незијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна " +
- "ЕвропаЗападна ЕвропаЛатинска Америка",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
- 0x00bb, 0x00da, 0x00e6, 0x00f8, 0x010a, 0x0125, 0x0135, 0x0149,
- 0x0153, 0x0170, 0x0184, 0x01a8, 0x01b8, 0x01ca, 0x01d8, 0x01ef,
- 0x01ff, 0x020d, 0x021b, 0x0225, 0x0244, 0x0252, 0x025e, 0x026e,
- 0x026e, 0x027a, 0x0286, 0x0290, 0x02a5, 0x02b3, 0x02c7, 0x02d3,
- 0x02df, 0x0305, 0x0320, 0x0354, 0x0371, 0x0385, 0x03a2, 0x03bb,
- 0x03c3, 0x03d1, 0x03d9, 0x03eb, 0x040a, 0x041c, 0x0424, 0x0437,
- 0x0437, 0x0452, 0x045c, 0x0466, 0x0474, 0x048f, 0x049b, 0x04a7,
- // Entry 40 - 7F
- 0x04b7, 0x04e2, 0x04ec, 0x0506, 0x0514, 0x0524, 0x0530, 0x054b,
- 0x055b, 0x0569, 0x0579, 0x0594, 0x05a0, 0x05a8, 0x05c9, 0x05df,
- 0x05f8, 0x060a, 0x0614, 0x0633, 0x0641, 0x064f, 0x0670, 0x067c,
- 0x0684, 0x0696, 0x06a6, 0x06b4, 0x06c2, 0x06d4, 0x06fd, 0x0707,
- 0x074a, 0x075c, 0x0764, 0x077d, 0x078b, 0x07b1, 0x07dc, 0x07ec,
- 0x07fc, 0x0806, 0x0816, 0x0833, 0x0847, 0x0851, 0x085d, 0x0870,
- 0x087c, 0x08c6, 0x08ce, 0x08d6, 0x08e2, 0x08f0, 0x08fa, 0x0908,
- 0x0914, 0x091e, 0x092a, 0x093e, 0x094c, 0x095c, 0x0979, 0x0998,
- // Entry 80 - BF
- 0x09b3, 0x09ca, 0x09d6, 0x09f5, 0x0a07, 0x0a0f, 0x0a19, 0x0a2e,
- 0x0a44, 0x0a55, 0x0a65, 0x0a71, 0x0a83, 0x0a97, 0x0aa7, 0x0ab3,
- 0x0abf, 0x0acb, 0x0add, 0x0aee, 0x0b03, 0x0b17, 0x0b36, 0x0b4a,
- 0x0b52, 0x0b6f, 0x0b81, 0x0ba0, 0x0bd0, 0x0be0, 0x0bf6, 0x0c06,
- 0x0c10, 0x0c24, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5c, 0x0c6c, 0x0c7c,
- 0x0c99, 0x0ca3, 0x0cbe, 0x0cce, 0x0ce0, 0x0cf2, 0x0d02, 0x0d0c,
- 0x0d16, 0x0d1e, 0x0d33, 0x0d3b, 0x0d47, 0x0d4f, 0x0d76, 0x0d98,
- 0x0da8, 0x0db8, 0x0dc4, 0x0de5, 0x0df3, 0x0e06, 0x0e31, 0x0e47,
- // Entry C0 - FF
- 0x0e51, 0x0e61, 0x0e6b, 0x0e88, 0x0e96, 0x0ea6, 0x0eb2, 0x0ebe,
- 0x0eca, 0x0eeb, 0x0f0c, 0x0f1a, 0x0f24, 0x0f32, 0x0f42, 0x0f59,
- 0x0f6b, 0x0f9c, 0x0fac, 0x0fc3, 0x0fd6, 0x0fe4, 0x0ff4, 0x1002,
- 0x1002, 0x1025, 0x1035, 0x1035, 0x1041, 0x1053, 0x106f, 0x1096,
- 0x109c, 0x10ce, 0x10d6, 0x10e4, 0x10f8, 0x1106, 0x111f, 0x1137,
- 0x1141, 0x114b, 0x1157, 0x1177, 0x1183, 0x118f, 0x11a1, 0x11b1,
- 0x11bd, 0x11e8, 0x1218, 0x1226, 0x123a, 0x1248, 0x1275, 0x1287,
- 0x12bb, 0x12e6, 0x12f6, 0x1304, 0x132b, 0x1335, 0x1335, 0x133f,
- // Entry 100 - 13F
- 0x134b, 0x1376, 0x1384, 0x1394, 0x13cb, 0x13d3, 0x13df, 0x1410,
- 0x1429, 0x1439, 0x1454, 0x1475, 0x1490, 0x14ab, 0x14ca, 0x14e1,
- 0x14ef, 0x150c, 0x1518, 0x1531, 0x1546, 0x1567, 0x157e, 0x15ab,
- 0x15bf, 0x15e6, 0x15fa, 0x1604, 0x1621, 0x163a, 0x1646, 0x1661,
- 0x167c, 0x1697, 0x16b6,
- },
- },
- { // ca
- caRegionStr,
- caRegionIdx,
- },
- { // ce
- "Айъадаларан гӀайреАндорраӀарбийн Цхьанатоьхна ЭмираташОвхӀан-пачхьалкхАн" +
- "тигуа а, Барбуда аАнгильяАлбаниЭрмалойчоьАнголаАнтарктидаАргентинаА" +
- "мерикан СамоаАвстриАвстралиАрубаАландан гӀайренашАзербайджанБосни а" +
- ", Герцеговина аБарбадосБангладешБельгиБуркина- ФасоБолгариБахрейнБур" +
- "ундиБенинСен-БартельмиБермудан гӀайренашБруней-ДаруссаламБоливиБонэ" +
- "йр, Синт-Эстатиус а, Саба аБразилиБагаман гӀайренашБутанБувен гӀайр" +
- "еБотсванаБелоруссиБелизКанадаКокосийн гӀайренашДемократин Республик" +
- "а КонгоЮккъерчу Африкин РеспубликаРеспублика КонгоШвейцариКот-Д’иву" +
- "арКукан гӀайренашЧилиКамерунКитайКолумбиКлиппертонКоста-РикаКубаКаб" +
- "о-ВердеКюрасаоГӀайре ӏиса пайхӏамар вина деКипрЧехиГерманиДиего-Гар" +
- "сиДжибутиДаниДоминикаДоминикан РеспубликаАлжирСеута а, Мелилья аЭкв" +
- "адорЭстониМисарМалхбузен СаьхьараЭритрейИспаниЭфиопиЕвробартФинлянд" +
- "иФиджиФолклендан гӀайренашМикронезин Федеративни штаташФарерийн гӀа" +
- "йренашФранциГабонЙоккха БританиГренадаГуьржийчоьФранцузийн ГвианаГе" +
- "рнсиГанаГибралтарГренландиГамбиГвинейГваделупаЭкваторан ГвинейГреци" +
- "Къилба Джорджи а, Къилба Гавайн гӀайренаш аГватемалаГуамГвиней-Биса" +
- "уГайанаГонконг (ша-къаьстина кӀошт)Херд гӀайре а, Макдональд гӀайре" +
- "наш аГондурасХорватиГаитиВенгриКанаран гӀайренашИндонезиИрландиИзра" +
- "ильМэн гӀайреИндиБританин латта Индин океанехьӀиракъГӀажарийчоьИсла" +
- "ндиИталиДжерсиЯмайкаУрданЯпониКениКиргизиКамбоджаКирибатиКоморашСен" +
- "т-Китс а, Невис аКъилбаседа КорейКъилба КорейКувейтКайман гӀайренаш" +
- "КазахстанЛаосЛиванСент-ЛюсиЛихтенштейнШри-ЛанкаЛибериЛесотоЛитваЛюк" +
- "сембургЛатвиЛивиМароккоМонакоМолдавиӀаьржаламанхойчоьСен-МартенМада" +
- "гаскарМаршаллан гӀайренашМакедониМалиМьянма (Бирма)МонголиМакао (ша" +
- "-къаьстина кӀошт)Къилбаседа Марианан гӀайренашМартиникаМавританиМонт" +
- "серратМальтаМаврикиМальдивашМалавиМексикаМалайзиМозамбикНамибиКерла" +
- " КаледониНигерНорфолк гӀайреНигериНикарагуаНидерландашНорвегиНепалНа" +
- "уруНиуэКерла ЗеландиОманПанамаПеруФранцузийн ПолинезиПапуа — Керла " +
- "ГвинейФилиппинашПакистанПольшаСен-Пьер а, Микелон аПиткэрн гӀайрена" +
- "шПуэрто-РикоПалестинан латтанашПортугалиПалауПарагвайКатарАрахьара " +
- "ОкеаниРеюньонРумыниСербиРоссиРуандаСаӀудийн АравиСоломонан гӀайрена" +
- "шСейшелан гӀайренашСуданШвециСингапурСийлахьчу Еленин гӀайреСловени" +
- "Шпицберген а, Ян-Майен аСловакиСьерра- ЛеонеСан-МариноСенегалСомали" +
- "СуринамКъилба СуданСан-Томе а, Принсипи аСальвадорСинт-МартенШемаСв" +
- "азилендТристан-да- КуньяТёркс а, Кайкос а гӀайренашЧадФранцузийн къ" +
- "илба латтанашТогоТаиландТаджикистанТокелауМалхбален ТиморТуркмениТу" +
- "нисТонгаТуркойчоьТринидад а, Тобаго аТувалуТайваньТанзаниУкраинаУга" +
- "ндаАЦШн арахьара кегийн гӀайренашЦхьанатоьхна ШтаташУругвайУзбекист" +
- "анВатиканСент-Винсент а, Гренадинаш аВенесуэлаВиргинийн гӀайренаш (" +
- "Британи)Виргинийн гӀайренаш (АЦШ)ВьетнамВануатуУоллис а, Футуна аСа" +
- "моаКосовоЙеменМайоттаКъилба-Африкин РеспубликаЗамбиЗимбабвеЙоьвзуш " +
- "йоцу регионДерригдуьненанАфрикаКъилбаседа АмерикаКъилба АмерикаОкеа" +
- "ниМалхбузен АфрикаЮккъера АмерикаМалхбален АфрикаКъилбаседа АфрикаЮ" +
- "ккъера АфрикаКъилба АфрикаКъилбаседа а, къилба а АмерикаКъилбаседа " +
- "Америка – АЦШ а, Канада аКарибашЮккъера АзиКъилба АзиКъилба-малхбал" +
- "ен АзиКъилба ЕвропаАвстралазиМеланезиМикронезиПолинезиАзиЮккъера Ма" +
- "лхбалеЮккъера а, Гергара а МалхбалеЕвропаМалхбален ЕвропаКъилбаседа" +
- " ЕвропаМалхбузен ЕвропаЛатинан Америка",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0023, 0x0031, 0x0069, 0x0088, 0x00ac, 0x00ba, 0x00c6,
- 0x00da, 0x00da, 0x00e6, 0x00fa, 0x010c, 0x0127, 0x0133, 0x0143,
- 0x014d, 0x016e, 0x0184, 0x01ac, 0x01bc, 0x01ce, 0x01da, 0x01f2,
- 0x0200, 0x020e, 0x021c, 0x0226, 0x023f, 0x0262, 0x0283, 0x028f,
- 0x02c6, 0x02d4, 0x02f5, 0x02ff, 0x0316, 0x0326, 0x0338, 0x0342,
- 0x034e, 0x0371, 0x03a5, 0x03d9, 0x03f8, 0x0408, 0x041e, 0x043b,
- 0x0443, 0x0451, 0x045b, 0x0469, 0x047d, 0x0490, 0x0498, 0x04ab,
- 0x04b9, 0x04ef, 0x04f7, 0x04ff, 0x050d, 0x0522, 0x0530, 0x0538,
- // Entry 40 - 7F
- 0x0548, 0x056f, 0x0579, 0x0599, 0x05a7, 0x05b3, 0x05bd, 0x05e0,
- 0x05ee, 0x05fa, 0x0606, 0x0616, 0x0626, 0x0630, 0x0657, 0x068f,
- 0x06b2, 0x06be, 0x06c8, 0x06e3, 0x06f1, 0x0705, 0x0726, 0x0732,
- 0x073a, 0x074c, 0x075e, 0x0768, 0x0774, 0x0786, 0x07a5, 0x07af,
- 0x07fe, 0x0810, 0x0818, 0x082f, 0x083b, 0x086e, 0x08b2, 0x08c2,
- 0x08d0, 0x08da, 0x08e6, 0x0907, 0x0917, 0x0925, 0x0933, 0x0946,
- 0x094e, 0x0985, 0x0991, 0x09a7, 0x09b5, 0x09bf, 0x09cb, 0x09d7,
- 0x09e1, 0x09eb, 0x09f3, 0x0a01, 0x0a11, 0x0a21, 0x0a2f, 0x0a52,
- // Entry 80 - BF
- 0x0a71, 0x0a88, 0x0a94, 0x0ab3, 0x0ac5, 0x0acd, 0x0ad7, 0x0ae8,
- 0x0afe, 0x0b0f, 0x0b1b, 0x0b27, 0x0b31, 0x0b45, 0x0b4f, 0x0b57,
- 0x0b65, 0x0b71, 0x0b7f, 0x0ba1, 0x0bb4, 0x0bc8, 0x0bed, 0x0bfd,
- 0x0c05, 0x0c1e, 0x0c2c, 0x0c5b, 0x0c93, 0x0ca5, 0x0cb7, 0x0ccb,
- 0x0cd7, 0x0ce5, 0x0cf7, 0x0d03, 0x0d11, 0x0d1f, 0x0d2f, 0x0d3b,
- 0x0d56, 0x0d60, 0x0d7b, 0x0d87, 0x0d99, 0x0daf, 0x0dbd, 0x0dc7,
- 0x0dd1, 0x0dd9, 0x0df2, 0x0dfa, 0x0e06, 0x0e0e, 0x0e33, 0x0e59,
- 0x0e6d, 0x0e7d, 0x0e89, 0x0eae, 0x0ecf, 0x0ee4, 0x0f09, 0x0f1b,
- // Entry C0 - FF
- 0x0f25, 0x0f35, 0x0f3f, 0x0f5c, 0x0f6a, 0x0f76, 0x0f80, 0x0f8a,
- 0x0f96, 0x0fb1, 0x0fd6, 0x0ff9, 0x1003, 0x100d, 0x101d, 0x1049,
- 0x1057, 0x1082, 0x1090, 0x10a8, 0x10bb, 0x10c9, 0x10d5, 0x10e3,
- 0x10fa, 0x1121, 0x1133, 0x1148, 0x1150, 0x1162, 0x1181, 0x11b2,
- 0x11b8, 0x11ea, 0x11f2, 0x1200, 0x1216, 0x1224, 0x1241, 0x1251,
- 0x125b, 0x1265, 0x1277, 0x129b, 0x12a7, 0x12b5, 0x12c3, 0x12d1,
- 0x12dd, 0x1316, 0x133b, 0x1349, 0x135d, 0x136b, 0x139e, 0x13b0,
- 0x13e6, 0x1414, 0x1422, 0x1430, 0x1450, 0x145a, 0x1466, 0x1470,
- // Entry 100 - 13F
- 0x147e, 0x14ae, 0x14b8, 0x14c8, 0x14ec, 0x1508, 0x1514, 0x1537,
- 0x1552, 0x155e, 0x157d, 0x159a, 0x15b9, 0x15da, 0x15f5, 0x160e,
- 0x1645, 0x1687, 0x1695, 0x16aa, 0x16bd, 0x16e3, 0x16fc, 0x1710,
- 0x1720, 0x1732, 0x1742, 0x1748, 0x1767, 0x179c, 0x17a8, 0x17c7,
- 0x17e8, 0x1807, 0x1824,
- },
- },
- { // cgg
- "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" +
- "wiraArubaniaArimeniyaAntiri za HoorandiAngoraArigentinaSamowa ya Ame" +
- "erikaOsituriaOsitureeriyaArubaAzabagyaniBoziniya na HezegovinaBabado" +
- "siBangaradeshiBubirigiBokina FasoBurugariyaBahareniBurundiBeniniBeri" +
- "mudaBuruneiBoriiviyaBuraziiriBahamaButaniBotswanaBararusiBerizeKanad" +
- "aDemokoratika Ripaaburika ya KongoEihanga rya Rwagati ya AfirikaKong" +
- "oSwisiAivore KositiEbizinga bya KuukuChileKameruuniChinaKorombiyaKos" +
- "itarikaCubaEbizinga bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirim" +
- "aaniGyibutiDeenimaakaDominikaRipaaburika ya DominicaArigyeriyaIkweda" +
- "EsitoniyaMisiriEriteriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya Fa" +
- "akilandaMikironesiyaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana " +
- "ya BufaransaGanaGiburaataGuriinirandiGambiyaGineGwaderupeGuniGuriisi" +
- "GwatemaraGwamuGinebisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziy" +
- "aIrerandiIsirairiIndiyaIraakaIraaniAisilandiItareGyamaikaYorudaaniGy" +
- "apaaniKenyaKirigizistaniKambodiyaKiribatiKoromoSenti Kittis na Nevis" +
- "iKoreya AmatembaKoreya AmashuumaKuweitiEbizinga bya KayimaniKazakisi" +
- "taniLayosiLebanoniSenti RusiyaLishenteniSirirankaLiberiyaLesothoLith" +
- "uaniaLakizembaagaLatviyaLibyaMoroccoMonacoMoridovaMadagasikaEbizinga" +
- " bya MarshaaMasedooniaMariMyanamarMongoriaEbizinga by’amatemba ga Ma" +
- "rianaMartiniqueMauriteeniyaMontserratiMaritaMaurishiasiMaridivesMara" +
- "wiMexicomarayiziaMozambiqueNamibiyaNiukaredoniaNaigyaEkizinga Norifo" +
- "koNaigyeriyaNikaragwaHoorandiNoorweNepoNauruNiueNiuzirandiOmaaniPana" +
- "maPeruPolinesia ya BufaransaPapuaFiripinoPakisitaaniPoorandiSenti Pi" +
- "yerre na MikweronPitkainiPwetorikoPocugoPalaawuParagwaiKataRiyuniyon" +
- "iRomaniyaRrashaRwandaSaudi AreebiyaEbizinga bya SurimaaniShesheresiS" +
- "udaniSwideniSingapoSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSa" +
- "marinoSenegoSomaariyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiri" +
- "yaSwazirandiEbizinga bya Buturuki na KaikoChadiTogoTairandiTajikisit" +
- "aniTokerawuBurugweizooba bwa TimoriTurukimenisitaniTuniziaTongaButur" +
- "uki /TakeTurinidad na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAme" +
- "rikaUrugwaiUzibekisitaniVatikaniSenti Vinsent na GurenadiniVenezuwer" +
- "aEbizinga bya Virigini ebya BungyerezaEbizinga bya Virigini ebya Ame" +
- "rikaViyetinaamuVanuatuWarris na FutunaSamowaYemeniMayoteSausi Afirik" +
- "aZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054,
- 0x005d, 0x006f, 0x0075, 0x0075, 0x007f, 0x0091, 0x0099, 0x00a5,
- 0x00aa, 0x00aa, 0x00b4, 0x00ca, 0x00d2, 0x00de, 0x00e6, 0x00f1,
- 0x00fb, 0x0103, 0x010a, 0x0110, 0x0110, 0x0118, 0x011f, 0x0128,
- 0x0128, 0x0131, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0153,
- 0x0159, 0x0159, 0x017a, 0x0198, 0x019d, 0x01a2, 0x01af, 0x01c1,
- 0x01c6, 0x01cf, 0x01d4, 0x01dd, 0x01dd, 0x01e7, 0x01eb, 0x0200,
- 0x0200, 0x0200, 0x0209, 0x021d, 0x0228, 0x0228, 0x022f, 0x0239,
- // Entry 40 - 7F
- 0x0241, 0x0258, 0x0262, 0x0262, 0x0268, 0x0271, 0x0277, 0x0277,
- 0x0280, 0x0288, 0x0292, 0x0292, 0x0298, 0x029d, 0x02b4, 0x02c0,
- 0x02c0, 0x02c9, 0x02d0, 0x02da, 0x02e2, 0x02e9, 0x02fc, 0x02fc,
- 0x0300, 0x0309, 0x0315, 0x031c, 0x0320, 0x0329, 0x032d, 0x0334,
- 0x0334, 0x033d, 0x0342, 0x034b, 0x0351, 0x0351, 0x0351, 0x035a,
- 0x0362, 0x0367, 0x036e, 0x036e, 0x0379, 0x0381, 0x0389, 0x0389,
- 0x038f, 0x038f, 0x0395, 0x039b, 0x03a4, 0x03a9, 0x03a9, 0x03b1,
- 0x03ba, 0x03c2, 0x03c7, 0x03d4, 0x03dd, 0x03e5, 0x03eb, 0x0401,
- // Entry 80 - BF
- 0x0410, 0x0420, 0x0427, 0x043c, 0x0448, 0x044e, 0x0456, 0x0462,
- 0x046c, 0x0475, 0x047d, 0x0484, 0x048d, 0x0499, 0x04a0, 0x04a5,
- 0x04ac, 0x04b2, 0x04ba, 0x04ba, 0x04ba, 0x04c4, 0x04d8, 0x04e2,
- 0x04e6, 0x04ee, 0x04f6, 0x04f6, 0x0517, 0x0521, 0x052d, 0x0538,
- 0x053e, 0x0549, 0x0552, 0x0558, 0x055e, 0x0567, 0x0571, 0x0579,
- 0x0585, 0x058b, 0x059c, 0x05a6, 0x05af, 0x05b7, 0x05bd, 0x05c1,
- 0x05c6, 0x05ca, 0x05d4, 0x05da, 0x05e0, 0x05e4, 0x05fa, 0x05ff,
- 0x0607, 0x0612, 0x061a, 0x0633, 0x063b, 0x0644, 0x0644, 0x064a,
- // Entry C0 - FF
- 0x0651, 0x0659, 0x065d, 0x065d, 0x0667, 0x066f, 0x066f, 0x0675,
- 0x067b, 0x0689, 0x069f, 0x06a9, 0x06af, 0x06b6, 0x06bd, 0x06c9,
- 0x06d4, 0x06d4, 0x06df, 0x06ec, 0x06f4, 0x06fa, 0x0703, 0x070c,
- 0x070c, 0x0722, 0x072e, 0x072e, 0x0734, 0x073e, 0x073e, 0x075c,
- 0x0761, 0x0761, 0x0765, 0x076d, 0x0779, 0x0781, 0x0799, 0x07a9,
- 0x07b0, 0x07b5, 0x07c3, 0x07d6, 0x07dc, 0x07e5, 0x07ed, 0x07f5,
- 0x07fb, 0x07fb, 0x0802, 0x0809, 0x0816, 0x081e, 0x0839, 0x0843,
- 0x0868, 0x088a, 0x0895, 0x089c, 0x08ac, 0x08b2, 0x08b2, 0x08b8,
- // Entry 100 - 13F
- 0x08be, 0x08cb, 0x08d1, 0x08d9,
- },
- },
- { // chr
- "ᎠᏂᏙᎳᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏᎠᏫᎨᏂᏍᏖᏂᎤᏪᏘ ᎠᎴ ᏆᏊᏓᎠᏂᎩᎳᎠᎵᏇᏂᏯᎠᎵᎻᏂᎠᎠᏂᎪᎳᏧᏁᏍᏓᎸᎠᏥᏂᏘᏂᎠᎠᎺ" +
- "ᎵᎧ ᏌᎼᎠᎠᏍᏟᏯᎡᎳᏗᏜᎠᎷᏆᎣᎴᏅᏓ ᏚᎦᏚᏛᎢᎠᏏᎵᏆᏌᏂᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫᏆᏇᏙᏍᏆᏂᎦᎵᏕᏍᏇᎵᏥᎥᎻᏋᎩᎾ ᏩᏐ" +
- "ᏊᎵᎨᎵᎠᏆᎭᎴᎢᏂᏋᎷᏂᏗᏆᏂᎢᏂᎠᏥᎸᏉᏗ ᏆᏕᎳᎻᏆᏊᏓᏊᎾᎢᏉᎵᏫᎠᏆᏏᎵᎢᎾᏍᎩ ᏆᎭᎹᏍᏊᏔᏂᏊᏪ ᎤᎦᏚᏛᎢᏆᏣᏩᎾᏇ" +
- "ᎳᎷᏍᏇᎵᏍᎨᎾᏓᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛᎧᏂᎪᎬᎿᎨᏍᏛ ᎠᏰᏟ ᏍᎦᏚᎩᎧᏂᎪ (ᏍᎦᏚᎩ)ᏍᏫᏍᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗᎠ" +
- "ᏓᏍᏓᏴᎲᏍᎩ ᎤᎦᏚᏛᏥᎵᎧᎹᎷᏂᏓᎶᏂᎨᏍᏛᎪᎸᎻᏈᎢᎠᎪᏍᏓ ᎵᎧᎫᏆᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗᏂᎦᏓ ᎤᏂᎲ ᎾᎿ ᎫᎳᎨᎣᏓᏂ" +
- "ᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢᏌᎢᏆᏍᏤᎩ ᏍᎦᏚᎩᎠᏂᏛᏥᏥᏊᏗᏗᏂᎹᎦᏙᎻᏂᎧᏙᎻᏂᎧᏂ ᏍᎦᏚᎩᎠᎵᏥᎵᏯᎡᏆᏙᎵᎡᏍᏙᏂᏯᎢᏥᏈᎢᎡ" +
- "ᎵᏟᏯᎠᏂᏍᏆᏂᏱᏫᏂᎦᏙᎯᏫᏥᏩᎩ ᏚᎦᏚᏛᎢᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯᏪᎶ ᏚᎦᏚᏛᎢᎦᎸᏥᏱᎦᏉᏂᎩᎵᏏᏲᏋᎾᏓᏣ" +
- "ᎠᏥᎢᎠᏂᎦᎸᏥ ᎩᎠᎬᏂᏏᎦᎠᎾᏥᏆᎵᏓᎢᏤᏍᏛᏱᎦᎹᏈᎢᎠᎫᏇᏩᏓᎷᏇᎡᏆᏙᎵᎠᎵ ᎩᎢᏂᎪᎢᎯᏧᎦᏃᏮ ᏣᏥᏱ ᎠᎴ ᎾᏍᎩ " +
- "ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛᏩᏔᎹᎳᏆᎻᎫᏇ-ᏈᏌᎤᏫᎦᏯᎾᎰᏂᎩ ᎪᏂᎩᎲᏗ ᎤᎦᏚᏛᎢ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛᎢᎧᎶᎡᏏ" +
- "ᎠᎮᎢᏘᎲᏂᎦᎵᎢᏂᏙᏂᏍᏯᎠᎢᎴᏂᏗᎢᏏᎵᏱᎤᏍᏗ ᎤᎦᏚᏛᎢ ᎾᎿ ᎠᏍᎦᏯᎢᏅᏗᎾᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅᎢᎳᎩᎢᎴ" +
- "ᏂᏧᏁᏍᏓᎸᎯᏲᎶᏨᎵᏏᏣᎺᎢᎧᏦᏓᏂᏣᏩᏂᏏᎨᏂᏯᎩᎵᏣᎢᏍᎧᎹᏉᏗᎠᏂᎧᎵᏆᏘᎪᎼᎳᏍᎠᏰᏟ ᎾᎿ ᎨᏥᎸᏉᏗ ᎠᏂᏪᏌ ᎠᎴ " +
- "ᎠᏂᏁᏫᏍᏧᏴᏢ ᎪᎵᎠᏧᎦᏃᏮ ᎪᎵᎠᎫᏪᎢᏘᎨᎢᎹᏂ ᏚᎦᏚᏛᎢᎧᏎᎧᏍᏕᏂᎴᎣᏍᎴᏆᎾᏂᎵᎦᏗᏂᏍᏓᏂᏍᎵ ᎳᏂᎧᎳᏈᎵᏯᎴᏐ" +
- "ᏙᎵᏗᏪᏂᎠᎸᎧᏎᏋᎩᎳᏘᏫᎠᎵᏈᏯᎼᎶᎪᎹᎾᎪᎹᎵᏙᏫᎠᎼᏂᏔᏁᎦᎶᎠᏥᎸᏉᏗ ᏡᏡᎹᏓᎦᏍᎧᎵᎹᏌᎵ ᏚᎪᏚᏛᎹᏏᏙᏂᎢᎠᎹᎵᎹ" +
- "ᏯᎹᎵᎹᏂᎪᎵᎠᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢᎾᏍᎩ ᎤᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛᎹᏘᏂᎨᎹᏘᎢᏯᎹ" +
- "ᏂᏘᏌᎳᏗᎹᎵᏔᎼᎵᏏᎥᏍᎹᎵᏗᏫᏍᎹᎳᏫᏍᏆᏂᏱᎹᎴᏏᎢᎠᎼᏎᎻᏇᎩᎾᎻᏈᎢᏯᎢᏤ ᎧᎵᏙᏂᎠᏂᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢᏂᏥᎵᏯᏂᎧ" +
- "ᎳᏆᏁᏛᎳᏂᏃᏪᏁᏆᎵᏃᎤᎷᏂᏳᎢᏤ ᏏᎢᎴᏂᏗᎣᎺᏂᏆᎾᎹᏇᎷᎠᏂᎦᎸᏣ ᏆᎵᏂᏏᎠᏆᏇ ᎢᏤ ᎩᏂᎠᏂᏈᎵᎩᏃᏆᎩᏍᏖᏂᏉᎳᏂᏎ" +
- "ᏂᏘ ᏈᏓ ᎠᎴ ᎻᏇᎶᏂᏈᎧᎵᏂ ᎤᎦᏚᏛᎢᏇᎡᏙ ᎵᎢᎪᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩᏉᏥᎦᎳᏆᎴᎠᏫᏆᎳᏇᎢᏯᎧᏔᎵᎶᎹᏂᏯᏒ" +
- "ᏈᏯᏲᏂᎢᎶᏩᏂᏓᏌᎤᏗ ᎡᎴᏈᎠᏐᎶᎹᏂ ᏚᎦᏚᏛᎢᏏᎡᏥᎵᏍᏑᏕᏂᏍᏫᏕᏂᏏᏂᎦᏉᎵᎠᏥᎸᏉᏗ ᎮᎵᎾᏍᎶᏫᏂᎠᏍᎶᏩᎩᎠᏏᎡᎳ" +
- " ᎴᎣᏂᎠᎹᏰᏟᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯᎡᎶᎯᏧᏴᏢ ᎠᎺᎵᎦᏧᎦᏃᏮ ᎠᎺᎵᎦᎠᎺᎵᎦᎢ",
- []uint16{ // 273 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000c, 0x0042, 0x0057, 0x0071, 0x007d, 0x008c,
- 0x009b, 0x009b, 0x00a7, 0x00b6, 0x00c8, 0x00de, 0x00ea, 0x00f6,
- 0x00ff, 0x011b, 0x012d, 0x014d, 0x0159, 0x016b, 0x017a, 0x018a,
- 0x0199, 0x01a8, 0x01b4, 0x01c0, 0x01dc, 0x01e5, 0x01ee, 0x01fa,
- 0x01fa, 0x0206, 0x021c, 0x0225, 0x023b, 0x0247, 0x0253, 0x025c,
- 0x0265, 0x0287, 0x0290, 0x02b6, 0x02ce, 0x02d7, 0x02f7, 0x031c,
- 0x0322, 0x032e, 0x0340, 0x0352, 0x0352, 0x0362, 0x0368, 0x0387,
- 0x03ae, 0x03d3, 0x03df, 0x03f2, 0x03fe, 0x03fe, 0x0407, 0x0413,
- // Entry 40 - 7F
- 0x041f, 0x043b, 0x044a, 0x044a, 0x0456, 0x0465, 0x0471, 0x0471,
- 0x047d, 0x048f, 0x048f, 0x048f, 0x049e, 0x04a4, 0x04ba, 0x04ed,
- 0x0503, 0x050f, 0x0518, 0x0524, 0x052d, 0x0539, 0x054f, 0x0558,
- 0x0561, 0x056d, 0x057c, 0x058b, 0x0591, 0x059d, 0x05b9, 0x05c2,
- 0x0613, 0x061f, 0x0625, 0x0638, 0x0641, 0x0654, 0x0694, 0x0694,
- 0x06a3, 0x06ac, 0x06b8, 0x06b8, 0x06ca, 0x06d9, 0x06e5, 0x0712,
- 0x071e, 0x074b, 0x0754, 0x075d, 0x076f, 0x0775, 0x077e, 0x078a,
- 0x0793, 0x079f, 0x07a8, 0x07b7, 0x07c9, 0x07d5, 0x07e1, 0x0825,
- // Entry 80 - BF
- 0x0838, 0x084e, 0x085a, 0x0876, 0x0888, 0x0891, 0x089d, 0x089d,
- 0x08b2, 0x08c2, 0x08ce, 0x08d7, 0x08e6, 0x08f5, 0x0901, 0x090a,
- 0x0913, 0x091c, 0x092b, 0x093d, 0x0953, 0x0965, 0x097b, 0x098d,
- 0x0993, 0x099f, 0x09ae, 0x09f9, 0x0a2d, 0x0a39, 0x0a45, 0x0a57,
- 0x0a60, 0x0a6f, 0x0a7e, 0x0a87, 0x0a93, 0x0aa2, 0x0ab1, 0x0ac0,
- 0x0ad9, 0x0ad9, 0x0af8, 0x0b04, 0x0b10, 0x0b1c, 0x0b22, 0x0b2b,
- 0x0b34, 0x0b3a, 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b87, 0x0b9b,
- 0x0bad, 0x0bbc, 0x0bc5, 0x0be9, 0x0c05, 0x0c18, 0x0c43, 0x0c4f,
- // Entry C0 - FF
- 0x0c5b, 0x0c6a, 0x0c73, 0x0c73, 0x0c73, 0x0c7f, 0x0c88, 0x0c91,
- 0x0c9d, 0x0cb3, 0x0ccf, 0x0cde, 0x0ce7, 0x0cf3, 0x0d02, 0x0d1b,
- 0x0d2a, 0x0d2a, 0x0d39, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
- 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
- 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
- 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
- 0x0d4c, 0x0d4c, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58,
- 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58,
- // Entry 100 - 13F
- 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d80, 0x0d89, 0x0d89, 0x0d9f,
- 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8,
- 0x0dc7,
- },
- },
- { // ckb
- "ئەورووپای باشووریئاسیای ناوەندیئاسیای ڕۆژاوا",
- []uint16{ // 286 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 100 - 13F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x003c, 0x0055,
- },
- },
- { // cs
- csRegionStr,
- csRegionIdx,
- },
- { // cy
- "Ynys AscensionAndorraEmiradau Arabaidd UnedigAfghanistanAntigua a Barbud" +
- "aAnguillaAlbaniaArmeniaYnysoedd Caribî yr IseldiroeddAngolaAntarctic" +
- "aYr ArianninSamoa AmericaAwstriaAwstraliaArubaYnysoedd ÅlandAzerbaij" +
- "anBosnia a HercegovinaBarbadosBangladeshGwlad BelgBurkina FasoBwlgar" +
- "iaBahrainBurundiBeninSaint BarthélemyBermudaBruneiBolifiaAntilles yr" +
- " IseldiroeddBrasilY BahamasBhutanYnys BouvetBotswanaBelarwsBelizeCan" +
- "adaYnysoedd Cocos (Keeling)Y Congo - KinshasaGweriniaeth Canolbarth " +
- "AffricaY Congo - BrazzavilleY SwistirCôte d’IvoireYnysoedd CookChile" +
- "CamerŵnTsieinaColombiaYnys ClippertonCosta RicaCiwbaCabo VerdeCuraça" +
- "oYnys y NadoligCyprusGweriniaeth TsiecYr AlmaenDiego GarciaDjiboutiD" +
- "enmarcDominicaGweriniaeth DominicaAlgeriaCeuta a MelillaEcuadorEston" +
- "iaYr AifftGorllewin SaharaEritreaSbaenEthiopiaYr Undeb EwropeaiddY F" +
- "findirFijiYnysoedd y Falkland/MalvinasMicronesiaYnysoedd FfaroFfrain" +
- "cGabonY Deyrnas UnedigGrenadaGeorgiaGuyane FfrengigYnys y GarnGhanaG" +
- "ibraltarYr Ynys LasGambiaGuinéeGuadeloupeGuinea GyhydeddolGwlad Groe" +
- "gDe Georgia ac Ynysoedd Sandwich y DeGuatemalaGuamGuiné-BissauGuyana" +
- "Hong Kong RhGA TsieinaYnys Heard ac Ynysoedd McDonaldHondurasCroatia" +
- "HaitiHwngariYr Ynysoedd DedwyddIndonesiaIwerddonIsraelYnys ManawIndi" +
- "aTiriogaeth Brydeinig Cefnfor IndiaIracIranGwlad yr IâYr EidalJersey" +
- "JamaicaGwlad IorddonenJapanKenyaKyrgyzstanCambodiaKiribatiComorosSai" +
- "nt Kitts a NevisGogledd KoreaDe KoreaKuwaitYnysoedd CaymanKazakstanL" +
- "aosLibanusSaint LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLw" +
- "csembwrgLatfiaLibyaMorocoMonacoMoldofaMontenegroSaint MartinMadagasc" +
- "arYnysoedd MarshallMacedoniaMaliMyanmar (Burma)MongoliaMacau RhGA Ts" +
- "ieinaYnysoedd Gogledd MarianaMartiniqueMauritaniaMontserratMaltaMaur" +
- "itiusY MaldivesMalawiMecsicoMalaysiaMozambiqueNamibiaCaledonia Newyd" +
- "dNigerYnys NorfolkNigeriaNicaraguaYr IseldiroeddNorwyNepalNauruNiueS" +
- "eland NewyddOmanPanamaPeriwPolynesia FfrengigPapua Guinea NewyddY Ph" +
- "ilipinauPakistanGwlad PwylSaint-Pierre-et-MiquelonYnysoedd PitcairnP" +
- "uerto RicoTiriogaethau PalesteinaiddPortiwgalPalauParaguayQatarOcean" +
- "ia BellennigRéunionRwmaniaSerbiaRwsiaRwandaSaudi ArabiaYnysoedd Solo" +
- "monSeychellesSwdanSwedenSingaporeSaint HelenaSlofeniaSvalbard a Jan " +
- "MayenSlofaciaSierra LeoneSan MarinoSenegalSomaliaSurinameDe SwdanSão" +
- " Tomé a PríncipeEl SalvadorSint MaartenSyriaGwlad SwaziTristan da Cu" +
- "nhaYnysoedd Turks a CaicosTchadTiroedd Deheuol ac Antarctig FfraincT" +
- "ogoGwlad ThaiTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTwr" +
- "ciTrinidad a TobagoTuvaluTaiwanTanzaniaWcráinUgandaYnysoedd Pellenni" +
- "g UDAYr Unol DaleithiauUruguayUzbekistanY FaticanSaint Vincent a’r G" +
- "renadinesVenezuelaYnysoedd Gwyryf PrydainYnysoedd Gwyryf yr Unol Dal" +
- "eithiauFietnamVanuatuWallis a FutunaSamoaKosovoYemenMayotteDe Affric" +
- "aZambiaZimbabweRhanbarth AnhysbysY BydAffricaGogledd AmericaDe Ameri" +
- "caOceaniaGorllewin AffricaCanolbarth AmericaDwyrain AffricaGogledd A" +
- "ffricaCanol AffricaDeheudir AffricaYr AmerigAmerica i’r Gogledd o Fe" +
- "csicoY CaribîDwyrain AsiaDe AsiaDe-Ddwyrain AsiaDe EwropAwstralasiaM" +
- "elanesiaRhanbarth MicronesiaPolynesiaAsiaCanol AsiaGorllewin AsiaEwr" +
- "opDwyrain EwropGogledd EwropGorllewin EwropAmerica Ladin",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0015, 0x002d, 0x0038, 0x0049, 0x0051, 0x0058,
- 0x005f, 0x007e, 0x0084, 0x008e, 0x0099, 0x00a6, 0x00ad, 0x00b6,
- 0x00bb, 0x00ca, 0x00d4, 0x00e8, 0x00f0, 0x00fa, 0x0104, 0x0110,
- 0x0118, 0x011f, 0x0126, 0x012b, 0x013c, 0x0143, 0x0149, 0x0150,
- 0x0167, 0x016d, 0x0176, 0x017c, 0x0187, 0x018f, 0x0196, 0x019c,
- 0x01a2, 0x01ba, 0x01cc, 0x01ea, 0x01ff, 0x0208, 0x0218, 0x0225,
- 0x022a, 0x0232, 0x0239, 0x0241, 0x0250, 0x025a, 0x025f, 0x0269,
- 0x0271, 0x027f, 0x0285, 0x0296, 0x029f, 0x02ab, 0x02b3, 0x02ba,
- // Entry 40 - 7F
- 0x02c2, 0x02d6, 0x02dd, 0x02ec, 0x02f3, 0x02fa, 0x0302, 0x0312,
- 0x0319, 0x031e, 0x0326, 0x0339, 0x0342, 0x0346, 0x0362, 0x036c,
- 0x037a, 0x0381, 0x0386, 0x0396, 0x039d, 0x03a4, 0x03b3, 0x03be,
- 0x03c3, 0x03cc, 0x03d7, 0x03dd, 0x03e4, 0x03ee, 0x03ff, 0x040a,
- 0x042e, 0x0437, 0x043b, 0x0448, 0x044e, 0x0464, 0x0483, 0x048b,
- 0x0492, 0x0497, 0x049e, 0x04b1, 0x04ba, 0x04c2, 0x04c8, 0x04d2,
- 0x04d7, 0x04f9, 0x04fd, 0x0501, 0x050d, 0x0515, 0x051b, 0x0522,
- 0x0531, 0x0536, 0x053b, 0x0545, 0x054d, 0x0555, 0x055c, 0x056f,
- // Entry 80 - BF
- 0x057c, 0x0584, 0x058a, 0x0599, 0x05a2, 0x05a6, 0x05ad, 0x05b8,
- 0x05c5, 0x05ce, 0x05d5, 0x05dc, 0x05e5, 0x05ef, 0x05f5, 0x05fa,
- 0x0600, 0x0606, 0x060d, 0x0617, 0x0623, 0x062d, 0x063e, 0x0647,
- 0x064b, 0x065a, 0x0662, 0x0674, 0x068c, 0x0696, 0x06a0, 0x06aa,
- 0x06af, 0x06b8, 0x06c2, 0x06c8, 0x06cf, 0x06d7, 0x06e1, 0x06e8,
- 0x06f8, 0x06fd, 0x0709, 0x0710, 0x0719, 0x0727, 0x072c, 0x0731,
- 0x0736, 0x073a, 0x0747, 0x074b, 0x0751, 0x0756, 0x0768, 0x077b,
- 0x0787, 0x078f, 0x0799, 0x07b1, 0x07c2, 0x07cd, 0x07e7, 0x07f0,
- // Entry C0 - FF
- 0x07f5, 0x07fd, 0x0802, 0x0813, 0x081b, 0x0822, 0x0828, 0x082d,
- 0x0833, 0x083f, 0x084f, 0x0859, 0x085e, 0x0864, 0x086d, 0x0879,
- 0x0881, 0x0895, 0x089d, 0x08a9, 0x08b3, 0x08ba, 0x08c1, 0x08c9,
- 0x08d1, 0x08e7, 0x08f2, 0x08fe, 0x0903, 0x090e, 0x091e, 0x0935,
- 0x093a, 0x095e, 0x0962, 0x096c, 0x0976, 0x097d, 0x0988, 0x0994,
- 0x099b, 0x09a0, 0x09a5, 0x09b6, 0x09bc, 0x09c2, 0x09ca, 0x09d1,
- 0x09d7, 0x09ed, 0x09ff, 0x0a06, 0x0a10, 0x0a19, 0x0a37, 0x0a40,
- 0x0a57, 0x0a79, 0x0a80, 0x0a87, 0x0a96, 0x0a9b, 0x0aa1, 0x0aa6,
- // Entry 100 - 13F
- 0x0aad, 0x0ab7, 0x0abd, 0x0ac5, 0x0ad7, 0x0adc, 0x0ae3, 0x0af2,
- 0x0afc, 0x0b03, 0x0b14, 0x0b26, 0x0b35, 0x0b44, 0x0b51, 0x0b61,
- 0x0b6a, 0x0b89, 0x0b92, 0x0b9e, 0x0ba5, 0x0bb5, 0x0bbd, 0x0bc8,
- 0x0bd1, 0x0be5, 0x0bee, 0x0bf2, 0x0bfc, 0x0c0a, 0x0c0f, 0x0c1c,
- 0x0c29, 0x0c38, 0x0c45,
- },
- },
- { // da
- daRegionStr,
- daRegionIdx,
- },
- { // dav
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // de
- deRegionStr,
- deRegionIdx,
- },
- { // de-CH
- "BangladeshBruneiBotswanaWeissrusslandGrossbritannienMarshall-InselnÄusse" +
- "res OzeanienSalomon-InselnZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0010, 0x0010,
- 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- // Entry 40 - 7F
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- // Entry 80 - BF
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
- 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
- // Entry C0 - FF
- 0x0043, 0x0043, 0x0043, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
- 0x0055, 0x0055, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
- // Entry 100 - 13F
- 0x0063, 0x0063, 0x0063, 0x006b,
- },
- },
- { // dje
- "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
- "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
- "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
- "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
- "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
- "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
- "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
- "tiDanemarkDoominiki labooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEc" +
- "ioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasalaama Mar" +
- "gantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambiGineGwade" +
- "luupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHondurasKrw" +
- "aasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši Indu teeko" +
- "o laamaIraakIraanAyselandItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstank" +
- "amboogiKiribaatiKomoorSeŋ Kitts nda NevisGurma KooreeHawsa KooreeKuw" +
- "eetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechtensteinSrilan" +
- "kaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonakoMoldoviMad" +
- "agascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMariana Gurma Gun" +
- "geyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldiivuMalaawiMe" +
- "xikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk GungooNaajir" +
- "iiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaOmaanPanamaP" +
- "eeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piy" +
- "er nda MikelonPitikarinPorto RikoPalestine Dangay nda GaazaPortugaal" +
- "PaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiyaSolomon Gun" +
- "geySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan" +
- " MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvador labooSuur" +
- "iaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaažikistanTokel" +
- "auTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda TobaagoTuvalu" +
- "TaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguweyUzbeekist" +
- "anVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gu" +
- "ngeyAmeerik Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanM" +
- "ayootiHawsa Afriki LabooZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
- 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
- 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
- 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
- 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
- 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
- 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
- 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
- // Entry 40 - 7F
- 0x01f4, 0x0203, 0x020b, 0x020b, 0x0213, 0x021a, 0x021f, 0x021f,
- 0x0226, 0x022e, 0x0235, 0x0235, 0x023d, 0x0241, 0x024e, 0x0257,
- 0x0257, 0x025e, 0x0264, 0x0279, 0x0281, 0x0286, 0x0294, 0x0294,
- 0x0299, 0x02a2, 0x02aa, 0x02af, 0x02b3, 0x02bc, 0x02cc, 0x02d2,
- 0x02d2, 0x02dc, 0x02e0, 0x02ea, 0x02f1, 0x02f1, 0x02f1, 0x02f9,
- 0x0300, 0x0305, 0x030d, 0x030d, 0x0316, 0x031d, 0x0324, 0x0324,
- 0x032e, 0x0348, 0x034d, 0x0352, 0x035a, 0x0360, 0x0360, 0x0368,
- 0x036d, 0x0374, 0x037b, 0x0385, 0x038d, 0x0396, 0x039c, 0x03b0,
- // Entry 80 - BF
- 0x03bc, 0x03c8, 0x03ce, 0x03db, 0x03e5, 0x03eb, 0x03f2, 0x03fd,
- 0x040a, 0x0412, 0x0419, 0x0420, 0x0428, 0x0432, 0x0439, 0x043e,
- 0x0444, 0x044a, 0x0451, 0x0451, 0x0451, 0x045b, 0x0469, 0x0473,
- 0x0478, 0x0480, 0x0488, 0x0488, 0x049c, 0x04a6, 0x04b0, 0x04ba,
- 0x04bf, 0x04cc, 0x04d4, 0x04db, 0x04e1, 0x04e8, 0x04f0, 0x04f7,
- 0x0508, 0x050e, 0x051c, 0x0525, 0x052e, 0x0536, 0x053d, 0x0543,
- 0x0548, 0x054c, 0x055a, 0x055f, 0x0565, 0x056a, 0x057b, 0x058c,
- 0x0594, 0x059d, 0x05a4, 0x05ba, 0x05c3, 0x05cd, 0x05e7, 0x05f0,
- // Entry C0 - FF
- 0x05f4, 0x05fd, 0x0603, 0x0603, 0x060b, 0x0612, 0x0612, 0x061e,
- 0x0624, 0x062b, 0x0639, 0x0640, 0x0647, 0x064d, 0x0655, 0x0660,
- 0x0668, 0x0668, 0x0670, 0x067a, 0x0684, 0x068b, 0x0692, 0x069a,
- 0x069a, 0x06af, 0x06bd, 0x06bd, 0x06c3, 0x06cc, 0x06cc, 0x06e3,
- 0x06e8, 0x06e8, 0x06ec, 0x06f5, 0x0701, 0x0708, 0x0714, 0x0721,
- 0x0727, 0x072c, 0x0731, 0x0745, 0x074b, 0x0753, 0x075b, 0x0761,
- 0x0767, 0x0767, 0x077e, 0x0786, 0x0791, 0x079f, 0x07b8, 0x07c4,
- 0x07da, 0x07ef, 0x07f7, 0x07fe, 0x080f, 0x0814, 0x0814, 0x0819,
- // Entry 100 - 13F
- 0x0820, 0x0832, 0x0837, 0x083f,
- },
- },
- { // dsb
- "AscensionAndorraZjadnośone arabiske emiratyAfghanistanAntigua a BarbudaA" +
- "nguillaAlbańskaArmeńskaAngolaAntarktisArgentinskaAmeriska SamoaAwstr" +
- "iskaAwstralskaArubaÅlandAzerbajdžanBosniska a HercegowinaBarbadosBan" +
- "gladešBelgiskaBurkina FasoBulgarskaBahrainBurundiBeninSt. Barthélemy" +
- "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" +
- "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" +
- "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" +
- "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" +
- "ap VerdeCuraçaoGódowne kupyCypriskaČeska republikaNimskaDiego Garcia" +
- "DžibutiDańskaDominikaDominikańska republikaAlgeriskaCeuta a MelillaE" +
- "kwadorEstniskaEgyptojskaPódwjacorna SaharaEritrejaŠpańskaEtiopiskaEu" +
- "ropska unijaFinskaFidžiFalklandske kupyMikroneziskaFäröjeFrancojskaG" +
- "abunZjadnośone kralejstwoGrenadaGeorgiskaFrancojska GuyanaGuernseyGh" +
- "anaGibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGri" +
- "chiskaPódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupyGuatemal" +
- "aGuamGineja-BissauGuyanaWósebna zastojnstwowa cona HongkongHeardowa " +
- "kupa a McDonaldowe kupyHondurasChorwatskaHaitiHungorskaKanariske kup" +
- "yIndoneziskaIrskaIsraelManIndiskaBritiski indiskooceaniski teritoriu" +
- "mIrakIranIslandskaItalskaJerseyJamaikaJordaniskaJapańskaKeniaKirgizi" +
- "stanKambodžaKiribatiKomorySt. Kitts a NevisPódpołnocna KorejaPódpołd" +
- "njowa KorejaKuwaitKajmaniske kupyKazachstanLaosLibanonSt. LuciaLiech" +
- "tensteinSri LankaLiberijaLesothoLitawskaLuxemburgskaLetiskaLibyskaMa" +
- "rokkoMonacoMoldawskaCarna GóraSt. MartinMadagaskarMarshallowe kupyMa" +
- "kedońskaMaliMyanmarMongolskaWósebna zastojnstwowa cona MacaoPódpołno" +
- "cne MarianyMartiniqueMawretańskaMontserratMaltaMauritiusMalediwyMala" +
- "wiMexikoMalajzijaMosambikNamibijaNowa KaledoniskaNigerNorfolkowa kup" +
- "aNigerijaNikaraguaNižozemskaNorwegskaNepalNauruNiueNowoseelandskaOma" +
- "nPanamaPeruFrancojska PolyneziskaPapua-NeuguineaFilipinyPakistanPóls" +
- "kaSt. Pierre a MiquelonPitcairnowe kupyPuerto RicoPalestinski awtono" +
- "mny teritoriumPortugalskaPalauParaguayKatarwenkowna OceaniskaRéunion" +
- "RumuńskaSerbiskaRuskaRuandaSaudi-ArabiskaSalomonySeychelleSudanŠweds" +
- "kaSingapurSt. HelenaSłowjeńskaSvalbard a Jan MayenSłowakskaSierra Le" +
- "oneSan MarinoSenegalSomalijaSurinamskaPódpołdnjowy SudanSão Tomé a P" +
- "ríncipeEl SalvadorSint MaartenSyriskaSwasiskaTristan da CunhaTurks a" +
- " Caicos kupyČadFrancojski pódpołdnjowy a antarktiski teritoriumTogoT" +
- "hailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTuneziskaTongaTurk" +
- "ojskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUgandaAmeriska Oce" +
- "aniskaZjadnośone staty AmerikiUruguayUzbekistanVatikańske městoSt. V" +
- "incent a GrenadinyVenezuelaBritiske kněžniske kupyAmeriske kněžniske" +
- " kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenMayottePódpołdnjow" +
- "a Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfrikaPódpołno" +
- "cna AmerikaPódpołdnjowa AmerikaOceaniskaPódwjacorna AfrikaSrjejźna A" +
- "merikapódzajtšna Afrikapódpołnocna Afrikasrjejźna Afrikapódpołdnjowa" +
- " AfrikaAmerikapódpołnocny ameriski kontinentKaribiskapódzajtšna Azij" +
- "apódpołdnjowa Azijakrotkozajtšna Azijapódpołdnjowa EuropaAwstralazij" +
- "aMelaneziskaMikroneziska (kupowy region)PolyneziskaAzijacentralna Az" +
- "ijapódwjacorna AzijaEuropapódzajtšna Europapódpołnocna Europapódwjac" +
- "orna EuropaŁatyńska Amerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0048, 0x0050, 0x0059,
- 0x0062, 0x0062, 0x0068, 0x0071, 0x007c, 0x008a, 0x0093, 0x009d,
- 0x00a2, 0x00a8, 0x00b4, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0,
- 0x00f9, 0x0100, 0x0107, 0x010c, 0x011b, 0x0122, 0x0128, 0x0131,
- 0x0146, 0x014f, 0x0155, 0x015b, 0x0169, 0x0171, 0x017c, 0x0182,
- 0x0188, 0x0195, 0x01a3, 0x01bd, 0x01ce, 0x01d8, 0x01e8, 0x01f4,
- 0x01fb, 0x0202, 0x0207, 0x0211, 0x0223, 0x022d, 0x0231, 0x023a,
- 0x0242, 0x024f, 0x0257, 0x0267, 0x026d, 0x0279, 0x0281, 0x0288,
- // Entry 40 - 7F
- 0x0290, 0x02a7, 0x02b0, 0x02bf, 0x02c6, 0x02ce, 0x02d8, 0x02eb,
- 0x02f3, 0x02fc, 0x0305, 0x0313, 0x0319, 0x031f, 0x032f, 0x033b,
- 0x0343, 0x034d, 0x0352, 0x0368, 0x036f, 0x0378, 0x0389, 0x0391,
- 0x0396, 0x039f, 0x03ab, 0x03b2, 0x03b8, 0x03c2, 0x03d5, 0x03de,
- 0x0418, 0x0421, 0x0425, 0x0432, 0x0438, 0x045c, 0x047c, 0x0484,
- 0x048e, 0x0493, 0x049c, 0x04aa, 0x04b5, 0x04ba, 0x04c0, 0x04c3,
- 0x04ca, 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513,
- 0x051d, 0x0526, 0x052b, 0x0536, 0x053f, 0x0547, 0x054d, 0x055e,
- // Entry 80 - BF
- 0x0572, 0x0587, 0x058d, 0x059c, 0x05a6, 0x05aa, 0x05b1, 0x05ba,
- 0x05c7, 0x05d0, 0x05d8, 0x05df, 0x05e7, 0x05f3, 0x05fa, 0x0601,
- 0x0608, 0x060e, 0x0617, 0x0622, 0x062c, 0x0636, 0x0646, 0x0651,
- 0x0655, 0x065c, 0x0665, 0x0686, 0x069b, 0x06a5, 0x06b1, 0x06bb,
- 0x06c0, 0x06c9, 0x06d1, 0x06d7, 0x06dd, 0x06e6, 0x06ee, 0x06f6,
- 0x0706, 0x070b, 0x071a, 0x0722, 0x072b, 0x0736, 0x073f, 0x0744,
- 0x0749, 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077f, 0x078e,
- 0x0796, 0x079e, 0x07a5, 0x07ba, 0x07ca, 0x07d5, 0x07f5, 0x0800,
- // Entry C0 - FF
- 0x0805, 0x080d, 0x0812, 0x0824, 0x082c, 0x0835, 0x083d, 0x0842,
- 0x0848, 0x0856, 0x085e, 0x0867, 0x086c, 0x0874, 0x087c, 0x0886,
- 0x0892, 0x08a6, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08df,
- 0x08f3, 0x0909, 0x0914, 0x0920, 0x0927, 0x092f, 0x093f, 0x0952,
- 0x0956, 0x0988, 0x098c, 0x0997, 0x09a3, 0x09aa, 0x09b5, 0x09c0,
- 0x09c9, 0x09ce, 0x09d7, 0x09e8, 0x09ee, 0x09f4, 0x09fd, 0x0a04,
- 0x0a0a, 0x0a1c, 0x0a35, 0x0a3c, 0x0a46, 0x0a58, 0x0a6f, 0x0a78,
- 0x0a91, 0x0aaa, 0x0ab1, 0x0ab8, 0x0ac7, 0x0acc, 0x0ad2, 0x0ad7,
- // Entry 100 - 13F
- 0x0ade, 0x0aff, 0x0b06, 0x0b0e, 0x0b1d, 0x0b22, 0x0b28, 0x0b3d,
- 0x0b53, 0x0b5c, 0x0b6f, 0x0b80, 0x0b93, 0x0ba7, 0x0bb7, 0x0bcc,
- 0x0bd3, 0x0bf3, 0x0bfc, 0x0c0e, 0x0c22, 0x0c36, 0x0c4b, 0x0c57,
- 0x0c62, 0x0c7e, 0x0c89, 0x0c8e, 0x0c9d, 0x0caf, 0x0cb5, 0x0cc8,
- 0x0cdc, 0x0cef, 0x0d01,
- },
- },
- { // dua
- "Cameroun",
- []uint16{ // 50 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0008,
- },
- },
- { // dyo
- "AndorraAfganistanAntigua di BarbudaAngiiyaAlbaniArmeniAngolaArsantinSamo" +
- "a yati AmerikOtrisOstraaliaArubaAserbaysanBosni di HersegovinBarbadB" +
- "angladesBelsikBurukiina FasoBulgariBahraynBurundiBeneBermudBuruneyBo" +
- "liiviBresilBahamaButanBoswanaBelarusBeliisKanadaMofam demokratik mat" +
- "i KongoKongoKoddiwarCiliKamerunSiinKolombiKosta RikaKubaKap VerSiipr" +
- "Mofam mati CekAlmaañJibutiDanmarkDominikaMofam mati DominikAlseriEku" +
- "adorEstoniEsíptEritreeEspaañEcoopiFinlandFijiFransGabonGrenadaSeorsi" +
- "GaanaSipraltaarGreenlandGambiGinéGuwadalupGresGuatemalaGuamGiné Bisa" +
- "auGiyanOndurasKroasiAytiOŋriEndonesiIrlandIsraelEndIrakIranIislandIt" +
- "aliSamaikSapoŋKeniyaKambojKomorSaŋ LusiaSiri LankaLiberiaMadagaskaar" +
- "MaliEcinkey yati NoorfokAbari SaudiSudanSingapurSloveniSlovakiSerra " +
- "LeonSenegalSomaliSalvadoorCadTogoTailand",
- []uint16{ // 228 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0023, 0x002a, 0x0030,
- 0x0036, 0x0036, 0x003c, 0x003c, 0x0044, 0x0055, 0x005a, 0x0063,
- 0x0068, 0x0068, 0x0072, 0x0085, 0x008b, 0x0094, 0x009a, 0x00a8,
- 0x00af, 0x00b6, 0x00bd, 0x00c1, 0x00c1, 0x00c7, 0x00ce, 0x00d5,
- 0x00d5, 0x00db, 0x00e1, 0x00e6, 0x00e6, 0x00ed, 0x00f4, 0x00fa,
- 0x0100, 0x0100, 0x011b, 0x011b, 0x0120, 0x0120, 0x0128, 0x0128,
- 0x012c, 0x0133, 0x0137, 0x013e, 0x013e, 0x0148, 0x014c, 0x0153,
- 0x0153, 0x0153, 0x0158, 0x0166, 0x016d, 0x016d, 0x0173, 0x017a,
- // Entry 40 - 7F
- 0x0182, 0x0194, 0x019a, 0x019a, 0x01a1, 0x01a7, 0x01ad, 0x01ad,
- 0x01b4, 0x01bb, 0x01c1, 0x01c1, 0x01c8, 0x01cc, 0x01cc, 0x01cc,
- 0x01cc, 0x01d1, 0x01d6, 0x01d6, 0x01dd, 0x01e3, 0x01e3, 0x01e3,
- 0x01e8, 0x01f2, 0x01fb, 0x0200, 0x0205, 0x020e, 0x020e, 0x0212,
- 0x0212, 0x021b, 0x021f, 0x022b, 0x0230, 0x0230, 0x0230, 0x0237,
- 0x023d, 0x0241, 0x0246, 0x0246, 0x024e, 0x0254, 0x025a, 0x025a,
- 0x025d, 0x025d, 0x0261, 0x0265, 0x026c, 0x0271, 0x0271, 0x0277,
- 0x0277, 0x027d, 0x0283, 0x0283, 0x0289, 0x0289, 0x028e, 0x028e,
- // Entry 80 - BF
- 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0298,
- 0x0298, 0x02a2, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
- 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02b4, 0x02b4, 0x02b4,
- 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8,
- 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8,
- 0x02b8, 0x02b8, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
- // Entry C0 - FF
- 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
- 0x02cc, 0x02d7, 0x02d7, 0x02d7, 0x02dc, 0x02dc, 0x02e4, 0x02e4,
- 0x02eb, 0x02eb, 0x02f2, 0x02fc, 0x02fc, 0x0303, 0x0309, 0x0309,
- 0x0309, 0x0309, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312,
- 0x0315, 0x0315, 0x0319, 0x0320,
- },
- },
- { // dz
- "ཨེ་སེན་ཤུན་ཚོ་གླིང༌ཨཱན་དོ་རཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊསཨཕ་གྷ་ནི་སཏཱནཨན་" +
- "ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌཨང་གི་ལཨཱལ་བེ་ནི་ཡཨར་མི་ནི་ཡཨང་གྷོ་ལའཛམ་གླ" +
- "ིང་ལྷོ་མཐའི་ཁྱགས་གླིངཨར་ཇེན་ཊི་ནས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངསཨཱོས་ཊྲི་" +
- "ཡཨཱོས་ཊྲེལ་ལི་ཡཨ་རུ་བཱཨ་ལནཌ་གླིང་ཚོམཨ་ཛར་བྷའི་ཇཱནབྷོས་ནི་ཡ་ ཨེནཌ་ " +
- "ཧར་ཛི་གྷོ་བི་ནབྷར་བེ་ཌོསབངྒ་ལ་དེཤབྷེལ་ཇམབྷར་ཀི་ན་ ཕེ་སོབུལ་ག་རི་ཡབ" +
- "ྷ་རེནབྷུ་རུན་ཌིབྷེ་ནིནསེནཊ་ བར་ཐོ་ལོམ་མིའུབར་མུ་ཌབྷྲུ་ནའིབྷེ་ལི་བི" +
- "་ཡཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄བྲ་ཛིལབྷ་ཧ་མས྄འབྲུགབོའུ་ཝེཊ་མཚོ་གླིངབྷོཙ" +
- "་ཝ་ནབེལ་ཨ་རུ་སུབྷེ་ལིཛཀེ་ན་ཌཀོ་ཀོས་གླིང་ཚོམཀོང་གྷོ ཀིན་ཤ་སསེན་ཊལ་ " +
- "ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀཀོང་གྷོ བྷྲ་ཛ་བིལསུ་ཝིཊ་ཛར་ལེནཌཀོ་ཊེ་ ཌི་ཨི་ཝོ" +
- "་རེཀུག་གླིང་ཚོམཅི་ལིཀེ་མ་རུནརྒྱ་ནགཀོ་ལོམ་བྷི་ཡཀི་ལི་པེར་ཊོན་མཚོ་གླ" +
- "ིང་ཀོས་ཊ་རི་ཀཀིའུ་བྷཀེཔ་བཱཌཀྱཱུར་ར་ཀོཁི་རིསྟ་མེས་མཚོ་གླིངསཱའི་པྲསཅ" +
- "ེཀ་ རི་པབ་ལིཀཇཱར་མ་ནིཌི་ཡེ་གོ་གར་སིའོཇི་བྷུ་ཊིཌེན་མཱཀཌོ་མི་ནི་ཀཌོ་" +
- "མི་ནི་ཀཱན་ རི་པབ་ལིཀཨཱལ་ཇི་རི་ཡསེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལཨེ་ཁྭ་ཌོརཨེས" +
- "་ཊོ་ནི་ཡཨི་ཇིབཊནུབ་ཕྱོགས་ ས་ཧཱ་རཨེ་རི་ཊྲེ་ཡཨིས་པེནཨི་ཐི་ཡོ་པི་ཡཡུ་" +
- "རོབ་གཅིག་བསྡོམས་ཚོགས་པཕིན་ལེནཌཕི་ཇིཕལྐ་ལནྜ་གླིང་ཚོམམའི་ཀྲོ་ནི་ཤི་ཡ" +
- "ཕཱའེ་རོ་གླིང་ཚོམཕྲཱནསགྷ་བྷོནཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམགྲྀ་ན་ཌཇཽར་ཇཱགུའི་ཡ" +
- "་ན་ ཕྲནས྄་མངའ་ཁོངསགུ་ཨེརྣ་སིགྷ་ནཇིབ་རཱལ་ཊརགིརཱིན་ལནཌ྄གྷེམ་བི་ཡགྷི་" +
- "ནིགོ་ཌེ་ལུ་པེཨེ་ཀུ་ཊོ་རེལ་ གི་ནིགིརིས྄སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ" +
- "྄་ཝིཅ་གླིང་ཚོམགྷོ་ཊ་མ་ལགུ་འམ་ མཚོ་གླིངགྷི་ནི་ བྷི་སཱའུགྷ་ཡ་ནཧོང་ཀོ" +
- "ང་ཅཱའི་ནཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམཧཱན་ཌུ་རཱས྄ཀྲོ་ཨེ་ཤ" +
- "ཧེ་ཊིཧཱང་གྷ་རིཀ་ནེ་རི་གླིང་ཚོམཨིན་ཌོ་ནེ་ཤི་ཡཨཱ་ཡ་ལེནཌཨིས་ར་ཡེལཨ་ཡུ" +
- "ལ་ ཨོཕ་ མཱནརྒྱ་གརབྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངསཨི་རཱཀཨི་རཱནཨཱའི" +
- "ས་ལེནཌཨི་ཊ་ལིཇེར་སིཇཱ་མཻ་ཀཇོར་ཌནཇ་པཱནཀེན་ཡཀིར་གིས་སཏཱནཀམ་བྷོ་ཌི་ཡཀ" +
- "ི་རི་བ་ཏི་མཚོ་གླིངཀོ་མོ་རོསསེནཊ་ ཀིཊས་ དང་ ནེ་བིསབྱང་ ཀོ་རི་ཡལྷོ་ " +
- "ཀོ་རི་ཡཀུ་ཝེཊཁེ་མེན་གླིང་ཚོམཀ་ཛགས་སཏཱནལཱ་ཝོསལེ་བ་ནོནསེནཊ་ ལུ་སི་ཡལ" +
- "ིཀ་ཏནས་ཏ་ཡིནཤྲཱི་ལང་ཀལཱའི་བེ་རི་ཡལཻ་སོ་ཐོལི་ཐུ་ཝེ་ནི་ཡལག་ཛམ་བོརྒལཊ" +
- "་བི་ཡལི་བི་ཡམོ་རོ་ཀོམོ་ན་ཀོམོལ་དོ་བཱམོན་ཊི་ནེག་རོསེནཊ་ མཱར་ཊིནམ་དཱ" +
- "་གེས་ཀརམར་ཤེལ་གླིང་ཚོམམ་སེ་ཌོ་ནི་ཡམཱ་ལིམི་ཡཱན་མར་ (བྷར་མ)སོག་པོ་ཡུ" +
- "ལམཀ་ཨའུ་ཅཱའི་ནབྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམམཱར་ཊི་ནིཀམོ་རི་ཊེ་ནི་" +
- "ཡམོན་ས་རཊམཱལ་ཊམོ་རི་ཤཱསམཱལ་དིབསམ་ལ་ཝིམེཀ་སི་ཀོམ་ལེ་ཤི་ཡམོ་ཛམ་བྷིཀན" +
- "་མི་བི་ཡནིའུ་ཀ་ལི་དོ་ནི་ཡནཱའི་ཇཱནོར་ཕོལཀ་མཚོ་གླིང༌ནཱའི་ཇི་རི་ཡནི་ཀ" +
- "ྲ་ཝ་གནེ་དར་ལནཌས྄ནོར་ཝེབལ་ཡུལནའུ་རུ་ནི་ཨུ་ཨཻནིའུ་ཛི་ལེནཌཨོ་མཱནཔ་ན་མ" +
- "པེ་རུཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡཔ་པུ་ ནིའུ་གི་ནིཕི་ལི་པིནསཔ་ཀི་སཏཱནཔོ" +
- "་ལེནཌསིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེནཔིཊ་ཀེ་ཡེརན་གླིང་ཚོམཔུ་འེར་ཊོ་རི་ཁ" +
- "ོཔེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རིཔོར་ཅུ་གཱལཔ་ལའུཔ་ར་གུ་ཝའིཀ་ཊརཨོཤི་ཡཱན" +
- "་ན་གྱི་མཐའ་མཚམསརེ་ཡུ་ནི་ཡོནརོ་མེ་ནི་ཡསཱར་བྷི་ཡཨུ་རུ་སུརུ་ཝན་ཌསཱཝ་ད" +
- "ི་ ཨ་རེ་བྷི་ཡསོ་ལོ་མོན་ གླིང་ཚོམསེ་ཤཱལསསུ་ཌཱནསུའི་ཌེནསིང་ག་པོརསེནཊ" +
- "་ ཧེ་ལི་ནསུ་ལོ་བི་ནི་ཡསྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེནསུ་ལོ་བཱ་ཀི་ཡསི་ར་" +
- " ལི་འོནསཱན་མ་རི་ནོསེ་ནི་གྷལསོ་མ་ལི་ཡསུ་རི་ནཱམསཱའུཐ་ སུ་ཌཱནསཝ་ ཊོ་མེ་" +
- " ཨེནཌ་ པྲྀན་སི་པེཨེལ་སལ་བ་ཌོརསིནཊ་ མཱར་ཊེནསི་རི་ཡསུ་ཝ་ཛི་ལེནཌཏྲིས་ཏན" +
- "་ད་ཀུན་ཧཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམཅཱཌཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངསཊ" +
- "ོ་གྷོཐཱའི་ལེནཌཏ་ཇིག་གི་སཏཱནཏོ་ཀེ་ལའུ་ མཚོ་གླིངཏི་་མོར་ལེ་ཨེསཊཊཱརཀ་" +
- "མེནའི་སཏཱནཊུ་ནི་ཤི་ཡཊོང་གྷཊཱར་ཀིཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོཏུ་ཝ་ལུ" +
- "ཊཱའི་ཝཱནཊཱན་ཛཱ་ནི་ཡཡུ་ཀརེནཡུ་གྷན་ཌཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ཡུ་" +
- "ཨེས་ཨེཡུ་རུ་གུ་ཝའིཨུས་བེག་གི་སཏཱནབ་ཊི་ཀཱན་ སི་ཊིསེནཊ་ཝིན་སེནཌ྄ ཨེན" +
- "ཌ་ གི་རེ་ན་དིནས྄བེ་ནི་ཛུ་ཝེ་ལཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངསཝརཇི" +
- "ན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངསབེཊ་ནཱམཝ་ནུ་ཨ་ཏུཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ" +
- "་ན་ས་མོ་ཨཡེ་མེནམེ་ཡོཊསཱའུཐ་ ཨཕ་རི་ཀཛམ་བྷི་ཡཛིམ་བྷབ་ཝེངོ་མ་ཤེས་པའི་" +
- "ལུང་ཕྱོགསའཛམ་གླིང༌ཨཕ་རི་ཀབྱང་ཨ་མི་རི་ཀལྷོ་ཨ་མི་རི་ཀཨོཤི་ཡཱན་ནནུབ་ཕ" +
- "ྱོགས་ཀྱི་ཨཕ་རི་ཀབར་ཕྱོགས་ཨ་མི་རི་ཀཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀབྱང་ཕྱོགས་ཀྱ" +
- "ི་ཨཕ་རི་ཀསྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀལྷོའི་ཨཕ་རི་ཀཨ་མི་རི་ཀ་ཚུབྱང་ཕྱོགས་" +
- "ཀྱི་ཨ་མི་རི་ཀཀེ་རི་བི་ཡེནཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཨེ་ཤི་ཡལྷོ་ཤར་ཕ" +
- "ྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཡུ་རོབཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡམེ་ལ་ནི་ཤི་ཡལུང་ཕྱོགས" +
- "་མའི་ཀྲོ་ནི་ཤི་ཡཔོ་ལི་ནི་ཤི་ཡཨེ་ཤི་ཡསྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡནུབ་ཕྱོག" +
- "ས་ཀྱི་ཨེ་ཤི་ཡཡུ་རོབཤར་ཕྱོགས་ཀྱི་ཡུ་རོབབྱང་ཕྱོགས་ཀྱི་ཡུ་རོབནུབ་ཕྱོག" +
- "ས་ཀྱི་ཡུ་རོབལེ་ཊིནཨ་མི་རི་ཀ",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0039, 0x0051, 0x00a4, 0x00cb, 0x0118, 0x012d, 0x014e,
- 0x016c, 0x016c, 0x0184, 0x01d5, 0x01f6, 0x0241, 0x025f, 0x0289,
- 0x029e, 0x02c8, 0x02ef, 0x0348, 0x0366, 0x0381, 0x0396, 0x03c1,
- 0x03df, 0x03f1, 0x040f, 0x0424, 0x045e, 0x0473, 0x048b, 0x04ac,
- 0x04f4, 0x0506, 0x051e, 0x052d, 0x0560, 0x0578, 0x0599, 0x05ae,
- 0x05c0, 0x05ed, 0x0618, 0x0668, 0x0699, 0x06c3, 0x06f7, 0x071b,
- 0x072a, 0x0742, 0x0754, 0x0778, 0x07bd, 0x07db, 0x07f0, 0x0805,
- 0x0823, 0x085f, 0x0877, 0x089f, 0x08b7, 0x08e7, 0x0902, 0x0917,
- // Entry 40 - 7F
- 0x0935, 0x0978, 0x0999, 0x09da, 0x09f5, 0x0a16, 0x0a2b, 0x0a5c,
- 0x0a7d, 0x0a92, 0x0ab9, 0x0b04, 0x0b1c, 0x0b2b, 0x0b5b, 0x0b88,
- 0x0bb8, 0x0bc7, 0x0bdc, 0x0c13, 0x0c28, 0x0c3a, 0x0c80, 0x0c9e,
- 0x0caa, 0x0cc8, 0x0ce9, 0x0d04, 0x0d16, 0x0d37, 0x0d6e, 0x0d80,
- 0x0dfa, 0x0e15, 0x0e40, 0x0e6e, 0x0e80, 0x0eaa, 0x0f1b, 0x0f3c,
- 0x0f54, 0x0f63, 0x0f7e, 0x0fae, 0x0fd8, 0x0ff3, 0x100e, 0x1037,
- 0x1049, 0x10ac, 0x10be, 0x10d0, 0x10ee, 0x1103, 0x1115, 0x112a,
- 0x113c, 0x114b, 0x115a, 0x117e, 0x119f, 0x11d8, 0x11f3, 0x122f,
- // Entry 80 - BF
- 0x1251, 0x1273, 0x1285, 0x12b2, 0x12d0, 0x12e2, 0x12fa, 0x131f,
- 0x1346, 0x1361, 0x1385, 0x139d, 0x13c4, 0x13e2, 0x13f7, 0x140c,
- 0x1424, 0x1439, 0x1454, 0x147b, 0x14a0, 0x14c1, 0x14ee, 0x1512,
- 0x1521, 0x1551, 0x156f, 0x1596, 0x15f0, 0x160e, 0x1635, 0x164d,
- 0x165c, 0x1677, 0x168f, 0x16a1, 0x16bc, 0x16d7, 0x16f5, 0x1710,
- 0x1743, 0x1758, 0x178e, 0x17b2, 0x17cd, 0x17ee, 0x1800, 0x1812,
- 0x1827, 0x183f, 0x1863, 0x1875, 0x1884, 0x1893, 0x18db, 0x1909,
- 0x1927, 0x1942, 0x1957, 0x19a4, 0x19e0, 0x1a0d, 0x1a61, 0x1a7f,
- // Entry C0 - FF
- 0x1a8e, 0x1aac, 0x1ab8, 0x1afd, 0x1b21, 0x1b3f, 0x1b5a, 0x1b72,
- 0x1b87, 0x1bbb, 0x1bf2, 0x1c07, 0x1c19, 0x1c31, 0x1c4c, 0x1c71,
- 0x1c98, 0x1ce2, 0x1d09, 0x1d2b, 0x1d4c, 0x1d67, 0x1d82, 0x1d9d,
- 0x1dc2, 0x1e0d, 0x1e31, 0x1e56, 0x1e6b, 0x1e8f, 0x1ebc, 0x1f0c,
- 0x1f15, 0x1f63, 0x1f75, 0x1f90, 0x1fb7, 0x1fee, 0x201b, 0x2048,
- 0x2066, 0x2078, 0x208a, 0x20d7, 0x20ec, 0x2104, 0x2125, 0x213a,
- 0x2152, 0x21a9, 0x21c4, 0x21e8, 0x2215, 0x2240, 0x22a2, 0x22c9,
- 0x232a, 0x238e, 0x23a3, 0x23be, 0x23ff, 0x2411, 0x2411, 0x2423,
- // Entry 100 - 13F
- 0x2435, 0x245d, 0x2475, 0x2493, 0x24d5, 0x24f0, 0x2505, 0x252c,
- 0x2553, 0x2571, 0x25b0, 0x25e6, 0x2622, 0x2661, 0x26a3, 0x26ca,
- 0x26ee, 0x2733, 0x2757, 0x2793, 0x27ba, 0x2802, 0x2826, 0x2859,
- 0x287d, 0x28c8, 0x28ef, 0x2904, 0x2946, 0x2985, 0x2997, 0x29d0,
- 0x2a0c, 0x2a48, 0x2a75,
- },
- },
- { // ebu
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // ee
- "Ascension ƒudomekpo nutomeAndorra nutomeUnited Arab Emirates nutomeAfgha" +
- "nistan nutoméAntigua kple Barbuda nutomeAnguilla nutomeAlbania nuto" +
- "meArmenia nutomeNedalands Antilis nutomeAngola nutomeAntartica nutom" +
- "eArgentina nutomeAmerika Samoa nutomeAustria nutomeAustralia nutomeA" +
- "ruba nutomeÅland ƒudomekpo nutomeAzerbaijan nutomeBosnia kple Herzer" +
- "govina nutomeBarbados nutomeBangladesh nutomeBelgium nutomeBurkina F" +
- "aso nutomeBulgaria nutomeBahrain nutomeBurundi nutomeBenin nutomeSai" +
- "nt Barthélemy nutomeBermuda nutomeBrunei nutomeBolivia nutomeBrazil " +
- "nutomeBahamas nutomeBhutan nutomeBouvet ƒudomekpo nutomeBotswana nut" +
- "omeBelarus nutomeBelize nutomeCanada nutomeKokos (Kiling) fudomekpo " +
- "nutomeKongo Kinshasa nutomeTitina Afrika repɔblik nutomeKongo Brazza" +
- "ville nutomeSwitzerland nutomeKote d’Ivoire nutomeKook ƒudomekpo nut" +
- "omeTsile nutomeKamerun nutomeTsaina nutomeKolombia nutomeKlipaton ƒu" +
- "domekpo nutomeKosta Rika nutomeKuba nutomeKape Verde nutomeKristmas " +
- "ƒudomekpo nutomeSaiprus nutomeTsɛk repɔblik nutomeGermania nutomeDi" +
- "ego Garsia nutomeDzibuti nutomeDenmark nutomeDominika nutomeDominika" +
- " repɔblik nutomeAlgeria nutomeKeuta and Melilla nutomeEkuadɔ nutomeE" +
- "stonia nutomeEgypte nutomeƔetoɖoƒe Sahara nutomeEritrea nutomeSpain " +
- "nutomeEtiopia nutomeEuropa Wɔɖeka nutomeFinland nutomeFidzi nutomeFa" +
- "lkland ƒudomekpowo nutomeMikronesia nutomeFaroe ƒudomekpowo nutomeFr" +
- "ance nutomeGabɔn nutomeUnited Kingdom nutomeGrenada nutomeGeorgia nu" +
- "tomeFrentsi Gayana nutomeGuernse nutomeGhana nutomeGibraltar nutomeG" +
- "rinland nutomeGambia nutomeGuini nutomeGuadelupe nutomeEkuatorial Gu" +
- "ini nutomeGreece nutomeAnyiehe Georgia kple Anyiehe Sandwich ƒudomek" +
- "powo nutomeGuatemala nutomeGuam nutomeGini-Bisao nutomeGuyanaduHɔng " +
- "Kɔng SAR Tsaina nutomeHeard kple Mcdonald ƒudomekpowo nutomeHonduras" +
- "duKroatsia nutomeHaiti nutomeHungari nutomeKanari ƒudomekpowo nutome" +
- "Indonesia nutomeIreland nutomeIsrael nutomeAisle of Man nutomeIndia " +
- "nutomeBritaintɔwo ƒe india ƒudome nutomeiraqdukɔIran nutomeAiseland " +
- "nutomeItalia nutomeDzɛse nutomeDzamaika nutomeYordan nutomeDzapan nu" +
- "tomeKenya nutomeKirgizstan nutomeKambodia nutomeKiribati nutomeKomor" +
- "os nutomeSaint Kitis kple Nevis nutomeDziehe Korea nutomeAnyiehe Kor" +
- "ea nutomeKuwait nutomeKayman ƒudomekpowo nutomeKazakstan nutomeLaos " +
- "nutomeLebanɔn nutomeSaint Lusia nutomeLitsenstein nutomeSri Lanka nu" +
- "tomeLiberia nutomeLɛsoto nutomeLituania nutomeLazembɔg nutomeLatvia " +
- "nutomeLibya nutomeMoroko nutomeMonako nutomeMoldova nutomeMontenegro" +
- " nutomeSaint Martin nutomeMadagaska nutomeMarshal ƒudomekpowo nutome" +
- "Makedonia nutomeMali nutomeMyanmar (Burma) nutomeMongolia nutomeMaca" +
- "u SAR Tsaina nutomeDziehe Marina ƒudomekpowo nutomeMartiniki nutomeM" +
- "auritania nutomeMontserrat nutomeMalta nutomemauritiusdukɔmaldivesdu" +
- "kɔMalawi nutomeMexico nutomeMalaysia nutomeMozambiki nutomeNamibia n" +
- "utomeNew Kaledonia nutomeNiger nutomeNorfolk ƒudomekpo nutomeNigeria" +
- " nutomeNicaraguadukɔNetherlands nutomeNorway nutomeNepal nutomeNauru" +
- " nutomeNiue nutomeNew Zealand nutomeOman nutomePanama nutomePeru nut" +
- "omeFrentsi Pɔlinesia nutomePapua New Gini nutomeFilipini nutomePakis" +
- "tan nutomePoland nutomeSaint Pierre kple Mikelɔn nutomePitkairn ƒudo" +
- "mekpo nutomePuerto Riko nutomePalestinia nutomePortugal nutomePalau " +
- "nutomeParagua nutomeKatar nutomeOutlaying Oceania nutomeRéunion nuto" +
- "meRomania nutomeRussia nutomeRwanda nutomeSaudi Arabia nutomeSolomon" +
- " ƒudomekpowo nutomeSeshɛls nutomeSudan nutomeSweden nutomeSingapɔr n" +
- "utomeSaint Helena nutomeSlovenia nutomeSvalbard kple Yan Mayen nutom" +
- "eSlovakia nutomeSierra Leone nutomeSan Marino nutomeSenegal nutomeSo" +
- "malia nutomeSuriname nutomeSão Tomé kple Príncipe nutomeEl Salvadɔ n" +
- "utomeSiria nutomeSwaziland nutomeTristan da Kunha nutomeTɛks kple Ka" +
- "ikos ƒudomekpowo nutomeTsad nutomeAnyiehe Franseme nutomeTogo nutome" +
- "Thailand nutomeTajikistan nutomeTokelau nutomeTimor-Leste nutomeTɛkm" +
- "enistan nutomeTunisia nutomeTonga nutomeTɛki nutomeTrinidad kple Tob" +
- "ago nutomeTuvalu nutomeTaiwan nutomeTanzania nutomeUkraine nutomeUga" +
- "nda nutomeU.S. Minor Outlaying ƒudomekpowo nutomeUSA nutomeuruguaydu" +
- "kɔUzbekistan nutomeVatikandu nutomeSaint Vincent kple Grenadine nuto" +
- "meVenezuela nutomeBritaintɔwo ƒe Virgin ƒudomekpowo nutomeU.S. Vɛrgi" +
- "n ƒudomekpowo nutomeVietnam nutomeVanuatu nutomeWallis kple Futuna n" +
- "utomeSamoa nutomeYemen nutomeMayotte nutomeAnyiehe Africa nutomeZamb" +
- "ia nutomeZimbabwe nutomenutome manyaxexemeAfrika nutomeDziehe Amerik" +
- "a nutomeAnyiehe Amerika nutomeOceania nutomeƔetoɖoƒelɔƒo Afrika nuto" +
- "meTitina Amerika nutomeƔedzeƒe Afrika nutomeDziehe Afrika nutomeTiti" +
- "na Afrika nutomeAnyiehelɔƒo Afrika nutomeAmerika nutomeDziehelɔƒo Am" +
- "erika nutomeKaribbea nutomeƔedzeƒe Asia nutomeAnyiehelɔƒo Asia nutom" +
- "eAnyiehe Ɣedzeƒe Afrika nutomeAnyiehelɔƒo Europa nutomeAustralia kpl" +
- "e New Zealand nutomeMelanesia nutomeMikronesiaPɔlinesia nutomeAsia n" +
- "utomeTitina Asia nutomeƔetoɖoƒelɔƒo Asia nutomeEuropa nutomeƔedzeƒe " +
- "Europa nutomeDziehelɔƒo Europa nutomeƔetoɖoƒelɔƒo Europa nutomeLatin" +
- " Amerika nutome",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0029, 0x0044, 0x0056, 0x0073, 0x0082, 0x0090,
- 0x009e, 0x00b6, 0x00c3, 0x00d3, 0x00e3, 0x00f7, 0x0105, 0x0115,
- 0x0121, 0x0139, 0x014a, 0x0169, 0x0178, 0x0189, 0x0197, 0x01aa,
- 0x01b9, 0x01c7, 0x01d5, 0x01e1, 0x01f9, 0x0207, 0x0214, 0x0222,
- 0x0222, 0x022f, 0x023d, 0x024a, 0x0262, 0x0271, 0x027f, 0x028c,
- 0x0299, 0x02b8, 0x02cd, 0x02eb, 0x0303, 0x0315, 0x032b, 0x0341,
- 0x034d, 0x035b, 0x0368, 0x0377, 0x0391, 0x03a2, 0x03ad, 0x03be,
- 0x03be, 0x03d8, 0x03e6, 0x03fc, 0x040b, 0x041e, 0x042c, 0x043a,
- // Entry 40 - 7F
- 0x0449, 0x0462, 0x0470, 0x0488, 0x0496, 0x04a4, 0x04b1, 0x04ca,
- 0x04d8, 0x04e4, 0x04f2, 0x0508, 0x0516, 0x0522, 0x053e, 0x054f,
- 0x0568, 0x0575, 0x0582, 0x0597, 0x05a5, 0x05b3, 0x05c8, 0x05d6,
- 0x05e2, 0x05f2, 0x0601, 0x060e, 0x061a, 0x062a, 0x0641, 0x064e,
- 0x0687, 0x0697, 0x06a2, 0x06b3, 0x06bb, 0x06d8, 0x06ff, 0x0709,
- 0x0718, 0x0724, 0x0732, 0x074c, 0x075c, 0x076a, 0x0777, 0x078a,
- 0x0796, 0x07bb, 0x07c4, 0x07cf, 0x07de, 0x07eb, 0x07f8, 0x0807,
- 0x0814, 0x0821, 0x082d, 0x083e, 0x084d, 0x085c, 0x086a, 0x0887,
- // Entry 80 - BF
- 0x089a, 0x08ae, 0x08bb, 0x08d5, 0x08e5, 0x08f0, 0x08ff, 0x0911,
- 0x0923, 0x0933, 0x0941, 0x094f, 0x095e, 0x096e, 0x097b, 0x0987,
- 0x0994, 0x09a1, 0x09af, 0x09c0, 0x09d3, 0x09e3, 0x09fe, 0x0a0e,
- 0x0a19, 0x0a2f, 0x0a3e, 0x0a55, 0x0a76, 0x0a86, 0x0a97, 0x0aa8,
- 0x0ab4, 0x0ac2, 0x0acf, 0x0adc, 0x0ae9, 0x0af8, 0x0b08, 0x0b16,
- 0x0b2a, 0x0b36, 0x0b4f, 0x0b5d, 0x0b6b, 0x0b7d, 0x0b8a, 0x0b96,
- 0x0ba2, 0x0bad, 0x0bbf, 0x0bca, 0x0bd7, 0x0be2, 0x0bfb, 0x0c10,
- 0x0c1f, 0x0c2e, 0x0c3b, 0x0c5c, 0x0c76, 0x0c88, 0x0c99, 0x0ca8,
- // Entry C0 - FF
- 0x0cb4, 0x0cc2, 0x0cce, 0x0ce6, 0x0cf5, 0x0d03, 0x0d03, 0x0d10,
- 0x0d1d, 0x0d30, 0x0d4b, 0x0d5a, 0x0d66, 0x0d73, 0x0d83, 0x0d96,
- 0x0da5, 0x0dc3, 0x0dd2, 0x0de5, 0x0df6, 0x0e04, 0x0e12, 0x0e21,
- 0x0e21, 0x0e41, 0x0e53, 0x0e53, 0x0e5f, 0x0e6f, 0x0e86, 0x0eab,
- 0x0eb6, 0x0ecd, 0x0ed8, 0x0ee7, 0x0ef8, 0x0f06, 0x0f18, 0x0f2b,
- 0x0f39, 0x0f45, 0x0f51, 0x0f6c, 0x0f79, 0x0f86, 0x0f95, 0x0fa3,
- 0x0fb0, 0x0fd8, 0x0fe2, 0x0fee, 0x0fff, 0x100f, 0x1032, 0x1042,
- 0x106d, 0x108d, 0x109b, 0x10a9, 0x10c2, 0x10ce, 0x10ce, 0x10da,
- // Entry 100 - 13F
- 0x10e8, 0x10fd, 0x110a, 0x1119, 0x1125, 0x112b, 0x1138, 0x114d,
- 0x1163, 0x1171, 0x1190, 0x11a5, 0x11bc, 0x11d0, 0x11e4, 0x11ff,
- 0x120d, 0x1228, 0x1237, 0x124c, 0x1265, 0x1284, 0x129f, 0x12c0,
- 0x12d0, 0x12da, 0x12eb, 0x12f6, 0x1308, 0x1325, 0x1332, 0x1349,
- 0x1363, 0x1382, 0x1396,
- },
- },
- { // el
- elRegionStr,
- elRegionIdx,
- },
- { // en
- enRegionStr,
- enRegionIdx,
- },
- {}, // en-AU
- { // en-GB
- enGBRegionStr,
- enGBRegionIdx,
- },
- { // eo
- "AndoroUnuiĝintaj Arabaj EmirlandosAfganujoAntigvo-BarbudoAngviloAlbanujo" +
- "ArmenujoNederlandaj AntilojAngoloAntarktoArgentinoAŭstrujoAŭstralioA" +
- "ruboAzerbajĝanoBosnio-HercegovinoBarbadoBangladeŝoBelgujoBurkinoBulg" +
- "arujoBarejnoBurundoBeninoBermudojBrunejoBolivioBraziloBahamojButanoB" +
- "ocvanoBelorusujoBelizoKanadoCentr-Afrika RespublikoKongoloSvisujoEbu" +
- "r-BordoKukinsulojĈilioKamerunoĈinujoKolombioKostarikoKuboKabo-VerdoK" +
- "iproĈeĥujoGermanujoĜibutioDanujoDominikoDomingoAlĝerioEkvadoroEstonu" +
- "joEgiptoOkcidenta SaharoEritreoHispanujoEtiopujoFinnlandoFiĝojMikron" +
- "ezioFeroojFrancujoGabonoUnuiĝinta ReĝlandoGrenadoKartvelujoFranca Gv" +
- "ianoGanaoĜibraltaroGronlandoGambioGvineoGvadelupoEkvatora GvineoGrek" +
- "ujoSud-Georgio kaj Sud-SandviĉinsulojGvatemaloGvamoGvineo-BisaŭoGuja" +
- "noHerda kaj Makdonaldaj InsulojHonduroKroatujoHaitioHungarujoIndonez" +
- "ioIrlandoIsraeloHindujoBrita Hindoceana TeritorioIrakoIranoIslandoIt" +
- "alujoJamajkoJordanioJapanujoKenjoKirgizistanoKamboĝoKiribatoKomorojS" +
- "ent-Kristofo kaj NevisoNord-KoreoSud-KoreoKuvajtoKejmanojKazaĥstanoL" +
- "aosoLibanoSent-LucioLiĥtenŝtejnoSri-LankoLiberioLesotoLitovujoLuksem" +
- "burgoLatvujoLibioMarokoMonakoMoldavujoMadagaskaroMarŝalojMakedonujoM" +
- "alioMjanmaoMongolujoNord-MarianojMartinikoMaŭritanujoMaltoMaŭricioMa" +
- "ldivojMalavioMeksikoMalajzioMozambikoNamibioNov-KaledonioNiĝeroNorfo" +
- "lkinsuloNiĝerioNikaragvoNederlandoNorvegujoNepaloNauroNiuoNov-Zeland" +
- "oOmanoPanamoPeruoFranca PolinezioPapuo-Nov-GvineoFilipinojPakistanoP" +
- "ollandoSent-Piero kaj MikelonoPitkarna InsuloPuerto-RikoPortugalujoB" +
- "elaŭoParagvajoKataroReunioRumanujoRusujoRuandoSaŭda ArabujoSalomonoj" +
- "SejŝelojSudanoSvedujoSingapuroSent-HelenoSlovenujoSvalbardo kaj Jan-" +
- "Majen-insuloSlovakujoSiera-LeonoSan-MarinoSenegaloSomalujoSurinamoSa" +
- "o-Tomeo kaj PrincipeoSalvadoroSirioSvazilandoĈadoTogoloTajlandoTaĝik" +
- "ujoTurkmenujoTunizioTongoTurkujoTrinidado kaj TobagoTuvaloTajvanoTan" +
- "zanioUkrajnoUgandoUsonaj malgrandaj insulojUsonoUrugvajoUzbekujoVati" +
- "kanoSent-Vincento kaj la GrenadinojVenezueloBritaj VirgulininsulojUs" +
- "onaj VirgulininsulojVjetnamoVanuatuoValiso kaj FutunoSamooJemenoMajo" +
- "toSud-AfrikoZambioZimbabvo",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0023, 0x002b, 0x003a, 0x0041, 0x0049,
- 0x0051, 0x0064, 0x006a, 0x0072, 0x007b, 0x007b, 0x0084, 0x008e,
- 0x0093, 0x0093, 0x009f, 0x00b1, 0x00b8, 0x00c3, 0x00ca, 0x00d1,
- 0x00da, 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f6, 0x00fd, 0x0104,
- 0x0104, 0x010b, 0x0112, 0x0118, 0x0118, 0x011f, 0x0129, 0x012f,
- 0x0135, 0x0135, 0x0135, 0x014c, 0x0153, 0x015a, 0x0164, 0x016e,
- 0x0174, 0x017c, 0x0183, 0x018b, 0x018b, 0x0194, 0x0198, 0x01a2,
- 0x01a2, 0x01a2, 0x01a7, 0x01af, 0x01b8, 0x01b8, 0x01c0, 0x01c6,
- // Entry 40 - 7F
- 0x01ce, 0x01d5, 0x01dd, 0x01dd, 0x01e5, 0x01ed, 0x01f3, 0x0203,
- 0x020a, 0x0213, 0x021b, 0x021b, 0x0224, 0x022a, 0x022a, 0x0234,
- 0x023a, 0x0242, 0x0248, 0x025c, 0x0263, 0x026d, 0x027a, 0x027a,
- 0x027f, 0x028a, 0x0293, 0x0299, 0x029f, 0x02a8, 0x02b7, 0x02be,
- 0x02e1, 0x02ea, 0x02ef, 0x02fd, 0x0303, 0x0303, 0x0320, 0x0327,
- 0x032f, 0x0335, 0x033e, 0x033e, 0x0347, 0x034e, 0x0355, 0x0355,
- 0x035c, 0x0376, 0x037b, 0x0380, 0x0387, 0x038e, 0x038e, 0x0395,
- 0x039d, 0x03a5, 0x03aa, 0x03b6, 0x03be, 0x03c6, 0x03cd, 0x03e5,
- // Entry 80 - BF
- 0x03ef, 0x03f8, 0x03ff, 0x0407, 0x0412, 0x0417, 0x041d, 0x0427,
- 0x0435, 0x043e, 0x0445, 0x044b, 0x0453, 0x045e, 0x0465, 0x046a,
- 0x0470, 0x0476, 0x047f, 0x047f, 0x047f, 0x048a, 0x0493, 0x049d,
- 0x04a2, 0x04a9, 0x04b2, 0x04b2, 0x04bf, 0x04c8, 0x04d4, 0x04d4,
- 0x04d9, 0x04e2, 0x04ea, 0x04f1, 0x04f8, 0x0500, 0x0509, 0x0510,
- 0x051d, 0x0524, 0x0531, 0x0539, 0x0542, 0x054c, 0x0555, 0x055b,
- 0x0560, 0x0564, 0x056f, 0x0574, 0x057a, 0x057f, 0x058f, 0x059f,
- 0x05a8, 0x05b1, 0x05b9, 0x05d0, 0x05df, 0x05ea, 0x05ea, 0x05f5,
- // Entry C0 - FF
- 0x05fc, 0x0605, 0x060b, 0x060b, 0x0611, 0x0619, 0x0619, 0x061f,
- 0x0625, 0x0633, 0x063c, 0x0645, 0x064b, 0x0652, 0x065b, 0x0666,
- 0x066f, 0x068d, 0x0696, 0x06a1, 0x06ab, 0x06b3, 0x06bb, 0x06c3,
- 0x06c3, 0x06da, 0x06e3, 0x06e3, 0x06e8, 0x06f2, 0x06f2, 0x06f2,
- 0x06f7, 0x06f7, 0x06fd, 0x0705, 0x070e, 0x070e, 0x070e, 0x0718,
- 0x071f, 0x0724, 0x072b, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
- 0x0761, 0x077a, 0x077f, 0x0787, 0x078f, 0x0797, 0x07b6, 0x07bf,
- 0x07d5, 0x07eb, 0x07f3, 0x07fb, 0x080c, 0x0811, 0x0811, 0x0817,
- // Entry 100 - 13F
- 0x081d, 0x0827, 0x082d, 0x0835,
- },
- },
- { // es
- esRegionStr,
- esRegionIdx,
- },
- { // es-419
- es419RegionStr,
- es419RegionIdx,
- },
- { // es-CL
- "Sahara Occidental",
- []uint16{ // 72 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0011,
- },
- },
- { // es-MX
- "BangladeshIslas Cocos (Keeling)GuernseyRegión Administrativa Especial de" +
- " Hong Kong de la República Popular ChinaIslas CanariasRegión Adminis" +
- "trativa Especial de Macao de la República Popular ChinaTristán de Ac" +
- "uñaIslas Ultramarinas Menores de Estados UnidosIslas Vírgenes de los" +
- " Estados UnidosÁfrica OccidentalÁfrica OrientalÁfrica del NorteÁfric" +
- "a CentralÁfrica del SurAméricasAsia OrientalAsia del SurSudeste Asiá" +
- "ticoEuropa del SurAsia CentralAsia OccidentalEuropa OrientalEuropa d" +
- "el NorteEuropa Occidental",
- []uint16{ // 290 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- // Entry 40 - 7F
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
- 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0072, 0x0072, 0x0072,
- 0x0072, 0x0072, 0x0072, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- // Entry 80 - BF
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
- 0x0080, 0x0080, 0x0080, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- // Entry C0 - FF
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
- 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105,
- 0x0105, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
- // Entry 100 - 13F
- 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
- 0x012a, 0x012a, 0x013c, 0x013c, 0x014c, 0x015d, 0x016c, 0x017b,
- 0x0184, 0x0184, 0x0184, 0x0191, 0x019d, 0x01ae, 0x01bc, 0x01bc,
- 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c8, 0x01d7, 0x01d7, 0x01e6,
- 0x01f6, 0x0207,
- },
- },
- { // et
- etRegionStr,
- etRegionIdx,
- },
- { // eu
- "Ascension uharteaAndorraArabiar Emirerri BatuakAfganistanAntigua eta Bar" +
- "budaAngilaAlbaniaArmeniaHolandarren AntillakAngolaAntartikaArgentina" +
- "Amerikar SamoaAustriaAustraliaArubaAland uharteakAzerbaijanBosnia-He" +
- "rzegovinaBarbadosBangladeshBelgikaBurkina FasoBulgariaBahrainBurundi" +
- "BeninSaint BarthélemyBermudaBruneiBoliviaKaribeko HerbehereakBrasilB" +
- "ahamakBhutanBouvet uharteaBotswanaBielorrusiaBelizeKanadaCocos uhart" +
- "eakKongoko Errepublika DemokratikoaAfrika Erdiko ErrepublikaKongo (B" +
- "razzaville)SuitzaBoli KostaCook uharteakTxileKamerunTxinaKolonbiaCli" +
- "pperton uharteaCosta RicaKubaCabo VerdeCuraçaoChristmas uharteaZipre" +
- "Txekiar ErrepublikaAlemaniaDiego GarciaDjibutiDanimarkaDominikaDomin" +
- "ikar ErrepublikaAljeriaCeuta eta MelillaEkuadorEstoniaEgiptoMendebal" +
- "deko SaharaEritreaEspainiaEtiopiaEuropar BatasunaFinlandiaFijiMalvin" +
- "akMikronesiaFaroe uharteakFrantziaGabonErresuma BatuaGrenadaGeorgiaG" +
- "uyana FrantsesaGuerneseyGhanaGibraltarGroenlandiaGambiaGineaGuadalup" +
- "eEkuatore GineaGreziaHegoaldeko Georgia eta Hegoaldeko Sandwich uhar" +
- "teakGuatemalaGuamGinea-BissauGuyanaHong Kong AEB TxinaHeard eta McDo" +
- "nald uharteakHondurasKroaziaHaitiHungariaKanariakIndonesiaIrlandaIsr" +
- "aelMan uharteaIndiaIndiako Ozeanoko lurralde britainiarraIrakIranIsl" +
- "andiaItaliaJerseyJamaikaJordaniaJaponiaKenyaKirgizistanKanbodiaKirib" +
- "atiKomoreakSaint Kitts eta NevisIpar KoreaHego KoreaKuwaitKaiman uha" +
- "rteakKazakhstanLaosLibanoSanta LuziaLiechtensteinSri LankaLiberiaLes" +
- "othoLituaniaLuxenburgoLetoniaLibiaMarokoMonakoMoldaviaMontenegroSain" +
- "t MartinMadagaskarMarshall uharteakMazedoniaMaliMyanmarMongoliaMacau" +
- " AEB TxinaIparraldeko Mariana uharteakMartinikaMauritaniaMontserratM" +
- "altaMaurizioMaldivakMalawiMexikoMalaysiaMozambikeNamibiaKaledonia Be" +
- "rriaNigerNorfolk uharteaNigeriaNikaraguaHerbehereakNorvegiaNepalNaur" +
- "uNiueZeelanda BerriaOmanPanamaPeruPolinesia FrantsesaPapua Ginea Ber" +
- "riaFilipinakPakistanPoloniaSaint-Pierre eta MikelunePitcairn uhartea" +
- "kPuerto RicoPalestinako LurraldeakPortugalPalauParaguaiQatarMugaz ka" +
- "npoko OzeaniaReunionErrumaniaSerbiaErrusiaRuandaSaudi ArabiaSalomon " +
- "uharteakSeychelleakSudanSuediaSingapurSaint HelenaEsloveniaSvalbard " +
- "eta Jan Mayen uharteakEslovakiaSierra LeonaSan MarinoSenegalSomaliaS" +
- "urinamHego SudanSao Tome eta PrincipeEl SalvadorSint MaartenSiriaSwa" +
- "zilandiaTristan da CunhaTurk eta Caicos uharteakTxadHegoaldeko lurra" +
- "lde frantsesakTogoThailandiaTajikistanTokelauEkialdeko TimorTurkmeni" +
- "stanTunisiaTongaTurkiaTrinidad eta TobagoTuvaluTaiwanTanzaniaUkraina" +
- "UgandaAmeriketako Estatu Batuetako Kanpoaldeko Uharte TxikiakAmerike" +
- "tako Estatu BatuakUruguaiUzbekistanVatikano HiriaSaint Vincent eta G" +
- "renadinakVenezuelaBirjina uharte britainiarrakBirjina uharte amerika" +
- "rrakVietnamVanuatuWallis eta FutunaSamoaKosovoYemenMayotteHegoafrika" +
- "ZambiaZimbabweEskualde ezezagunaMunduaAfrikaIpar AmerikaHego Amerika" +
- "OzeaniaAfrika mendebaldeaErdialdeko AmerikaAfrika ekialdeaAfrika ipa" +
- "rraldeaErdialdeko AfrikaAfrika hegoaldeaAmerikaAmerika iparraldeaKar" +
- "ibeaAsia ekialdeaAsia hegoaldeaAsia hego-ekialdeaEuropa hegoaldeaAus" +
- "tralasiaMelanesiaMikronesia eskualdeaPolinesiaAsiaAsia erdialdeaAsia" +
- " mendebaldeaEuropaEuropa ekialdeaEuropa iparraldeaEuropa mendebaldea" +
- "Latinoamerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0011, 0x0018, 0x002f, 0x0039, 0x004c, 0x0052, 0x0059,
- 0x0060, 0x0074, 0x007a, 0x0083, 0x008c, 0x009a, 0x00a1, 0x00aa,
- 0x00af, 0x00bd, 0x00c7, 0x00d9, 0x00e1, 0x00eb, 0x00f2, 0x00fe,
- 0x0106, 0x010d, 0x0114, 0x0119, 0x012a, 0x0131, 0x0137, 0x013e,
- 0x0152, 0x0158, 0x015f, 0x0165, 0x0173, 0x017b, 0x0186, 0x018c,
- 0x0192, 0x01a0, 0x01c0, 0x01d9, 0x01ec, 0x01f2, 0x01fc, 0x0209,
- 0x020e, 0x0215, 0x021a, 0x0222, 0x0234, 0x023e, 0x0242, 0x024c,
- 0x0254, 0x0265, 0x026a, 0x027d, 0x0285, 0x0291, 0x0298, 0x02a1,
- // Entry 40 - 7F
- 0x02a9, 0x02be, 0x02c5, 0x02d6, 0x02dd, 0x02e4, 0x02ea, 0x02fd,
- 0x0304, 0x030c, 0x0313, 0x0323, 0x032c, 0x0330, 0x0338, 0x0342,
- 0x0350, 0x0358, 0x035d, 0x036b, 0x0372, 0x0379, 0x0389, 0x0392,
- 0x0397, 0x03a0, 0x03ab, 0x03b1, 0x03b6, 0x03bf, 0x03cd, 0x03d3,
- 0x0406, 0x040f, 0x0413, 0x041f, 0x0425, 0x0438, 0x0453, 0x045b,
- 0x0462, 0x0467, 0x046f, 0x0477, 0x0480, 0x0487, 0x048d, 0x0498,
- 0x049d, 0x04c3, 0x04c7, 0x04cb, 0x04d3, 0x04d9, 0x04df, 0x04e6,
- 0x04ee, 0x04f5, 0x04fa, 0x0505, 0x050d, 0x0515, 0x051d, 0x0532,
- // Entry 80 - BF
- 0x053c, 0x0546, 0x054c, 0x055b, 0x0565, 0x0569, 0x056f, 0x057a,
- 0x0587, 0x0590, 0x0597, 0x059e, 0x05a6, 0x05b0, 0x05b7, 0x05bc,
- 0x05c2, 0x05c8, 0x05d0, 0x05da, 0x05e6, 0x05f0, 0x0601, 0x060a,
- 0x060e, 0x0615, 0x061d, 0x062c, 0x0648, 0x0651, 0x065b, 0x0665,
- 0x066a, 0x0672, 0x067a, 0x0680, 0x0686, 0x068e, 0x0697, 0x069e,
- 0x06ae, 0x06b3, 0x06c2, 0x06c9, 0x06d2, 0x06dd, 0x06e5, 0x06ea,
- 0x06ef, 0x06f3, 0x0702, 0x0706, 0x070c, 0x0710, 0x0723, 0x0735,
- 0x073e, 0x0746, 0x074d, 0x0766, 0x0777, 0x0782, 0x0798, 0x07a0,
- // Entry C0 - FF
- 0x07a5, 0x07ad, 0x07b2, 0x07c7, 0x07ce, 0x07d7, 0x07dd, 0x07e4,
- 0x07ea, 0x07f6, 0x0806, 0x0811, 0x0816, 0x081c, 0x0824, 0x0830,
- 0x0839, 0x0858, 0x0861, 0x086d, 0x0877, 0x087e, 0x0885, 0x088c,
- 0x0896, 0x08ab, 0x08b6, 0x08c2, 0x08c7, 0x08d2, 0x08e2, 0x08fa,
- 0x08fe, 0x091c, 0x0920, 0x092a, 0x0934, 0x093b, 0x094a, 0x0956,
- 0x095d, 0x0962, 0x0968, 0x097b, 0x0981, 0x0987, 0x098f, 0x0996,
- 0x099c, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0b, 0x0a27, 0x0a30,
- 0x0a4c, 0x0a66, 0x0a6d, 0x0a74, 0x0a85, 0x0a8a, 0x0a90, 0x0a95,
- // Entry 100 - 13F
- 0x0a9c, 0x0aa6, 0x0aac, 0x0ab4, 0x0ac6, 0x0acc, 0x0ad2, 0x0ade,
- 0x0aea, 0x0af1, 0x0b03, 0x0b15, 0x0b24, 0x0b35, 0x0b46, 0x0b56,
- 0x0b5d, 0x0b6f, 0x0b76, 0x0b83, 0x0b91, 0x0ba3, 0x0bb3, 0x0bbe,
- 0x0bc7, 0x0bdb, 0x0be4, 0x0be8, 0x0bf6, 0x0c06, 0x0c0c, 0x0c1b,
- 0x0c2c, 0x0c3e, 0x0c4b,
- },
- },
- { // ewo
- "AndórBemirá yá Arábə uníAfəganisətánAntígwa ai BarəbúdaAngíyəAləbániaArə" +
- "méniaAnətíyə NɛdəlániaAngoláArəhenətínaBəsamóa yá Amə́rəkaOsətəlíaOs" +
- "ətəlalíArúbaAzɛrəbaidzáŋBosəní ai ɛrəzegovínBarəbádBangaladɛ́sBɛləh" +
- "ígBuləkiná FasóBuləgaríBahərɛ́nBurundíBəníŋBɛrəmúdBulunéBolíviaBəla" +
- "zílBahámasButáŋBotswanáBəlarúsBəlískanadáǹnam Kongó Demokəlatígǹnam " +
- "Zǎŋ AfirikáKongóSuísKód Divɔ́rMinlán Mí kúgTsilíKamərúnTsáinaKolɔmbí" +
- "Kosta RíkaKubáMinlán Mí Káb VɛrSipəlúsǸnam Tsɛ́gNdzámanDzibutíDanəmá" +
- "rəgDómənikaRépublique dominicaineAləyériaEkwatórEsetoníEhíbətɛnElitə" +
- "léKpənyáEtiopíFinəlánFidzíMinlán Mi FóləkəlanMikoronésiaFulɛnsíGabóŋ" +
- "Ǹnam EngəlisGələnádəHorə́yiaGuyán yá FulɛnsíGanáYiləbalatárGoelánGa" +
- "mbíGinéGuadəlúbGiné EkwatóGəlɛ́sGuatemaláGuámGiné BisaóGuyánOndurásK" +
- "əlowásiaAitíOngiríɛndonésiaIrəlándəIsəraɛ́lɛ́ndəǹnam ɛngəlís yá Máŋ" +
- " mə́ ɛ́ndəIrágIránIsəlándəItáliɛnHamaíkaHorədaníHapɔ́nKeniáKirigisət" +
- "ánkambodíaKiribatíKomɔ́rǸfúfúb-Kilisətóv-ai-NevisKoré yá NórKoré yá" +
- " SúdKowɛ́dMinlán Mí KalimáŋKazakətáŋLaósLibáŋǸfúfúb-LúsiaLísə́sə́tái" +
- "nSəri LaŋkáLibériaLəsotóLituaníLukəzambúdLətoníLibíMarɔ́gMɔnakóMoləd" +
- "avíMadagasəkárəMinlán Mí MaresálMasedóniaMalíMianəmárMɔngɔ́liaMinlán" +
- " Mi Marián yá NórMarətinígMoritaníMɔ́ntserádMálətəMorísMalədívəMalaw" +
- "íMɛkəsígMalɛ́ziaMozambígNamibíǸkpámɛn KaledóniaNihɛ́rMinlán Nɔrəfɔ́" +
- "ləkəNihériaNikaráguaPɛíbáNɔrəvɛ́sNepálNaurúNiuéǸkpámɛn ZeláŋOmánPana" +
- "máPerúPolinesí yá FulɛnsíPapwazi yá Ǹkpámɛ́n GinéFilipínPakisətánfól" +
- "isǸfúfúb-Píɛr-ai-Mikəlɔ́ŋPítə́kɛ́rɛnəPwɛrəto RíkoǸnam Palɛsətínfɔrət" +
- "ugɛ́sPalauParaguéKatárReuniɔ́ŋRumaníRúsianRuwandáArabí SaudíMinlán M" +
- "í Solomɔ́nSɛsɛ́lSudáŋSuwɛ́dSingapúrǸfúfúb-Ɛlɛ́naSəlovéniaSəlovakíSi" +
- "erá-leónəǸfúfúb MarínoSenegálSomáliaSurinámSaó Tomé ai PəlinəsípeSal" +
- "əvadórSiríSwazilándəMinlán Mí túrə́g-ai-KaígTsádTogóTailánTadzikisə" +
- "táŋTokelóTimôrTurəkəmənisətáŋTunisíTɔngáTurəkíTəlinité-ai-TobágoTuva" +
- "lúTaiwánTaŋəzaníUkərɛ́nUgandáǸnam AmɛrəkəUruguéUzubekisətánǸnam Vati" +
- "kánǸfúfúb-Vɛngəsáŋ-ai-Bə GələnadínVenezuélańnam Minlán ɛ́ngəlísMinlá" +
- "n Mi AmɛrəkəViɛdənámVanuátuWalís-ai-FutúnaSamoáYemɛ́nMayɔ́dAfiríka y" +
- "á SúdZambíZimbabwé",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x001e, 0x002d, 0x0043, 0x004b, 0x0055,
- 0x005f, 0x0076, 0x007d, 0x007d, 0x008b, 0x00a4, 0x00af, 0x00bb,
- 0x00c1, 0x00c1, 0x00d1, 0x00ea, 0x00f3, 0x0100, 0x010a, 0x011a,
- 0x0124, 0x012f, 0x0137, 0x013f, 0x013f, 0x0149, 0x0150, 0x0158,
- 0x0158, 0x0161, 0x0169, 0x0170, 0x0170, 0x0179, 0x0182, 0x0189,
- 0x0190, 0x0190, 0x01aa, 0x01be, 0x01c4, 0x01c9, 0x01d6, 0x01e6,
- 0x01ec, 0x01f5, 0x01fc, 0x0205, 0x0205, 0x0210, 0x0215, 0x022a,
- 0x022a, 0x022a, 0x0233, 0x0240, 0x0248, 0x0248, 0x0250, 0x025c,
- // Entry 40 - 7F
- 0x0266, 0x027d, 0x0287, 0x0287, 0x028f, 0x0297, 0x02a2, 0x02a2,
- 0x02ab, 0x02b3, 0x02ba, 0x02ba, 0x02c3, 0x02c9, 0x02e0, 0x02ec,
- 0x02ec, 0x02f5, 0x02fc, 0x030a, 0x0316, 0x0320, 0x0334, 0x0334,
- 0x0339, 0x0346, 0x034d, 0x0353, 0x0358, 0x0362, 0x036f, 0x0378,
- 0x0378, 0x0382, 0x0387, 0x0393, 0x0399, 0x0399, 0x0399, 0x03a1,
- 0x03ac, 0x03b1, 0x03b8, 0x03b8, 0x03c3, 0x03ce, 0x03d9, 0x03d9,
- 0x03e1, 0x040a, 0x040f, 0x0414, 0x041f, 0x0428, 0x0428, 0x0430,
- 0x043a, 0x0442, 0x0448, 0x0455, 0x045e, 0x0467, 0x046f, 0x048d,
- // Entry 80 - BF
- 0x049b, 0x04a9, 0x04b1, 0x04c6, 0x04d2, 0x04d7, 0x04de, 0x04ee,
- 0x0500, 0x050d, 0x0515, 0x051d, 0x0525, 0x0531, 0x0539, 0x053e,
- 0x0546, 0x054e, 0x0558, 0x0558, 0x0558, 0x0567, 0x057b, 0x0585,
- 0x058a, 0x0594, 0x05a0, 0x05a0, 0x05bb, 0x05c6, 0x05cf, 0x05dc,
- 0x05e5, 0x05eb, 0x05f6, 0x05fd, 0x0607, 0x0611, 0x061a, 0x0621,
- 0x0636, 0x063e, 0x0657, 0x065f, 0x0669, 0x0671, 0x067d, 0x0683,
- 0x0689, 0x068e, 0x06a0, 0x06a5, 0x06ac, 0x06b1, 0x06c8, 0x06e6,
- 0x06ee, 0x06f9, 0x06ff, 0x071f, 0x0732, 0x0741, 0x0753, 0x0761,
- // Entry C0 - FF
- 0x0766, 0x076e, 0x0774, 0x0774, 0x077f, 0x0786, 0x0786, 0x078d,
- 0x0795, 0x07a2, 0x07b8, 0x07c1, 0x07c8, 0x07d0, 0x07d9, 0x07ec,
- 0x07f7, 0x07f7, 0x0801, 0x080f, 0x0820, 0x0828, 0x0830, 0x0838,
- 0x0838, 0x0853, 0x085e, 0x085e, 0x0863, 0x086f, 0x086f, 0x088d,
- 0x0892, 0x0892, 0x0897, 0x089e, 0x08ad, 0x08b4, 0x08ba, 0x08cf,
- 0x08d6, 0x08dd, 0x08e5, 0x08fa, 0x0901, 0x0908, 0x0913, 0x091d,
- 0x0924, 0x0924, 0x0934, 0x093b, 0x0949, 0x0957, 0x0981, 0x098b,
- 0x09a5, 0x09ba, 0x09c5, 0x09cd, 0x09de, 0x09e4, 0x09e4, 0x09ec,
- // Entry 100 - 13F
- 0x09f4, 0x0a05, 0x0a0b, 0x0a14,
- },
- },
- { // fa
- faRegionStr,
- faRegionIdx,
- },
- { // fa-AF
- "اندوراانتیگوا و باربوداالبانیاانگولاارجنتاینآسترالیابوسنیا و هرزه\u200cگ" +
- "وینابنگله\u200cدیشبلجیمبلغاریابرونیبولیویابرازیلبهاماسروسیهٔ سفیدکا" +
- "نگو - کینشاساکانگو - برازویلسویسچلیکولمبیاکاستریکاکیوبادنمارکاستونی" +
- "ااریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگینیاگینیا استواییگواتیم" +
- "الاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلندآیسلندجاپانکی" +
- "نیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسوتولتوانیالاتو" +
- "یالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقنیجریانیکار" +
- "اگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولندپرتگالپ" +
- "اراگوایرومانیاروآنداسویدنسینگاپورسلونیاسلواکیاسیرالیونسینیگالسومالی" +
- "هالسلوادورتاجکستاناکراینیوروگوایونزویلازیمبابوی",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x002c, 0x002c, 0x003a,
- 0x003a, 0x003a, 0x0046, 0x0046, 0x0056, 0x0056, 0x0056, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x008b, 0x008b, 0x009e, 0x00a8, 0x00a8,
- 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c0, 0x00ce,
- 0x00ce, 0x00da, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00fb, 0x00fb,
- 0x00fb, 0x00fb, 0x0116, 0x0116, 0x0131, 0x0139, 0x0139, 0x0139,
- 0x013f, 0x013f, 0x013f, 0x014d, 0x014d, 0x015d, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0173,
- // Entry 40 - 7F
- 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0181, 0x0181, 0x0181,
- 0x018f, 0x019d, 0x01ab, 0x01ab, 0x01b5, 0x01b5, 0x01b5, 0x01c7,
- 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01d5, 0x01d5, 0x01d5, 0x01d5,
- 0x01d5, 0x01d5, 0x01d5, 0x01d5, 0x01df, 0x01df, 0x01f8, 0x01f8,
- 0x01f8, 0x020a, 0x020a, 0x0221, 0x022b, 0x022b, 0x022b, 0x023b,
- 0x0247, 0x0251, 0x0251, 0x0251, 0x0263, 0x026f, 0x026f, 0x026f,
- 0x026f, 0x026f, 0x026f, 0x026f, 0x027b, 0x027b, 0x027b, 0x027b,
- 0x027b, 0x0285, 0x028f, 0x029f, 0x02ad, 0x02ad, 0x02ad, 0x02ad,
- // Entry 80 - BF
- 0x02c4, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db,
- 0x02db, 0x02eb, 0x02eb, 0x02f7, 0x0305, 0x0305, 0x0311, 0x031b,
- 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x032b, 0x032b, 0x032b,
- 0x032b, 0x032b, 0x0339, 0x0339, 0x0339, 0x0339, 0x034b, 0x034b,
- 0x0355, 0x0355, 0x0355, 0x0355, 0x0361, 0x036f, 0x037d, 0x037d,
- 0x037d, 0x037d, 0x037d, 0x0389, 0x039b, 0x03a5, 0x03af, 0x03b9,
- 0x03b9, 0x03b9, 0x03ce, 0x03ce, 0x03da, 0x03e2, 0x03e2, 0x03fe,
- 0x03fe, 0x03fe, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0414,
- // Entry C0 - FF
- 0x0414, 0x0424, 0x0424, 0x0424, 0x0424, 0x0432, 0x0432, 0x0432,
- 0x043e, 0x043e, 0x043e, 0x043e, 0x043e, 0x0448, 0x0458, 0x0458,
- 0x0464, 0x0464, 0x0472, 0x0482, 0x0482, 0x0490, 0x049e, 0x049e,
- 0x049e, 0x049e, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0,
- 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04c0, 0x04c0, 0x04c0, 0x04c0,
- 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04cc,
- 0x04cc, 0x04cc, 0x04cc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04ea,
- 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea,
- // Entry 100 - 13F
- 0x04ea, 0x04ea, 0x04ea, 0x04fa,
- },
- },
- { // ff
- "AnndooraEmiraat Araab DenntuɗeAfganistaanAntiguwaa e BarbudaaAnngiyaaAlb" +
- "aniiArmeniiAntiiye NederlanndeejeAnngolaaArjantiinSamowa AmerikOtiri" +
- "isOstaraaliiAruubaAjerbayjaanBosnii HersegowiinBarbadoosBanglaadeesB" +
- "eljikBurkibaa FaasoBulgariiBahreynBurunndiBeneeBermudaaBurnaayBoliwi" +
- "iBeresiilBahamaasButaanBotswaanaBelaruusBeliiseKanadaaNdenndaandi De" +
- "mokaraasiire KonngoNdenndaandi SantarafrikKonngoSuwiisKodduwaarDuuɗe" +
- " KuukCiliiKameruunSiinKolombiyaKosta RikaaKubaaDuuɗe Kap WeerSiiparN" +
- "denndaandi CekAlmaañJibutiiDanmarkDominikaNdenndanndi DominikaAlaser" +
- "iEkuwatoorEstoniEjiptEritereeEspaañEcoppiFenlandFijjiDuuɗe FalklandM" +
- "ikoronesiiFarayseGabooLaamateeri RentundiGarnaadJeorgiiGiyaan Farays" +
- "eGanaaJibraltaarGorwendlandGammbiGineGwaadalupGinee EkuwaatoriyaalGe" +
- "reesGwaatemalaaGuwamGine-BisaawoGiyaanOnnduraasKorwasiiHaytiiOnngiri" +
- "EnndonesiiIrlanndaIsraa’iilaEnndoKeeriindi britaani to maayo enndoIr" +
- "aakIraanIslanndaItaliJamaykaJordaniSapooKeñaaKirgistaanKambodsoKirib" +
- "ariKomoorSent Kits e NewisKoree RewoKoree WorgoKuweytiDuuɗe KaymaaKa" +
- "sakstaanLawoosLibaaSent LusiyaaLincenstaynSiri LankaLiberiyaaLesotoL" +
- "ituaaniiLiksembuurLetoniiLibiMarukMonaakooMoldawiiMadagaskaarDuuɗe M" +
- "arsaalMeceduwaanMaaliMiyamaarMonngoliiDuuɗe Mariyaana RewoMartinikMu" +
- "ritaniMonseraatMalteMoriisMaldiiweMalaawiMeksikMalesiiMosammbikNamib" +
- "iiNuwel KaledoniiNijeerDuuɗe NorfolkNijeriyaaNikaraguwaaNederlanndaN" +
- "orweesNepaalNawuruNiuweNuwel SelanndaOmaanPanamaaPeruPolinesii Faray" +
- "sePapuwaa Nuwel GineFilipiinPakistaanPoloñSee Piyeer e MikelooPitker" +
- "nPorto RikooPalestiin Sisjordani e GaasaaPurtugaalPalawuParaguwaayKa" +
- "taarRewiñooRumaniiRiisiiRuwanndaaArabii SawditDuuɗe SolomonSeyselSud" +
- "aanSuweedSinngapuurSent HelenSloweniiSlowakiiSeraa liyonSee MareeSen" +
- "egaalSomaliiSurinaamSawo Tome e PerensipeEl SalwadorSiriiSwaasilannd" +
- "aDuuɗe Turke e KeikoosCaadTogooTaylanndaTajikistaanTokelaawTimoor Fu" +
- "ɗnaangeTurkmenistaanTunisiiTonngaaTurkiiTirnidaad e TobaagoTuwaluuT" +
- "aywaanTansaniiUkereenUnganndaaDowlaaji Dentuɗi AmerikUruguwaayUsbeki" +
- "staanDowla WaticaanSee Weesaa e GarnadiinWenesuwelaaduuɗe kecce brit" +
- "aniiDuuɗe Kecce AmerikWiyetnaamWanuwaatuuWalis e FutunaSamowaaYemenM" +
- "ayootAfrik bŋ WorgoSammbiSimbaabuwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x001f, 0x002a, 0x003e, 0x0046, 0x004d,
- 0x0054, 0x006a, 0x0072, 0x0072, 0x007b, 0x0088, 0x008f, 0x0099,
- 0x009f, 0x009f, 0x00aa, 0x00bc, 0x00c5, 0x00d0, 0x00d6, 0x00e4,
- 0x00ec, 0x00f3, 0x00fb, 0x0100, 0x0100, 0x0108, 0x010f, 0x0116,
- 0x0116, 0x011e, 0x0126, 0x012c, 0x012c, 0x0135, 0x013d, 0x0144,
- 0x014b, 0x014b, 0x016c, 0x0183, 0x0189, 0x018f, 0x0198, 0x01a3,
- 0x01a8, 0x01b0, 0x01b4, 0x01bd, 0x01bd, 0x01c8, 0x01cd, 0x01dc,
- 0x01dc, 0x01dc, 0x01e2, 0x01f1, 0x01f8, 0x01f8, 0x01ff, 0x0206,
- // Entry 40 - 7F
- 0x020e, 0x0222, 0x0229, 0x0229, 0x0232, 0x0238, 0x023d, 0x023d,
- 0x0245, 0x024c, 0x0252, 0x0252, 0x0259, 0x025e, 0x026d, 0x0278,
- 0x0278, 0x027f, 0x0284, 0x0297, 0x029e, 0x02a5, 0x02b3, 0x02b3,
- 0x02b8, 0x02c2, 0x02cd, 0x02d3, 0x02d7, 0x02e0, 0x02f4, 0x02fa,
- 0x02fa, 0x0305, 0x030a, 0x0316, 0x031c, 0x031c, 0x031c, 0x0325,
- 0x032d, 0x0333, 0x033a, 0x033a, 0x0344, 0x034c, 0x0358, 0x0358,
- 0x035d, 0x037e, 0x0383, 0x0388, 0x0390, 0x0395, 0x0395, 0x039c,
- 0x03a3, 0x03a8, 0x03ae, 0x03b8, 0x03c0, 0x03c8, 0x03ce, 0x03df,
- // Entry 80 - BF
- 0x03e9, 0x03f4, 0x03fb, 0x0408, 0x0412, 0x0418, 0x041d, 0x0429,
- 0x0434, 0x043e, 0x0447, 0x044d, 0x0456, 0x0460, 0x0467, 0x046b,
- 0x0470, 0x0478, 0x0480, 0x0480, 0x0480, 0x048b, 0x0499, 0x04a3,
- 0x04a8, 0x04b0, 0x04b9, 0x04b9, 0x04ce, 0x04d6, 0x04de, 0x04e7,
- 0x04ec, 0x04f2, 0x04fa, 0x0501, 0x0507, 0x050e, 0x0517, 0x051e,
- 0x052d, 0x0533, 0x0541, 0x054a, 0x0555, 0x0560, 0x0567, 0x056d,
- 0x0573, 0x0578, 0x0586, 0x058b, 0x0592, 0x0596, 0x05a7, 0x05b9,
- 0x05c1, 0x05ca, 0x05d0, 0x05e4, 0x05eb, 0x05f6, 0x0613, 0x061c,
- // Entry C0 - FF
- 0x0622, 0x062c, 0x0632, 0x0632, 0x063a, 0x0641, 0x0641, 0x0647,
- 0x0650, 0x065d, 0x066b, 0x0671, 0x0677, 0x067d, 0x0687, 0x0691,
- 0x0699, 0x0699, 0x06a1, 0x06ac, 0x06b5, 0x06bd, 0x06c4, 0x06cc,
- 0x06cc, 0x06e1, 0x06ec, 0x06ec, 0x06f1, 0x06fd, 0x06fd, 0x0713,
- 0x0717, 0x0717, 0x071c, 0x0725, 0x0730, 0x0738, 0x0749, 0x0756,
- 0x075d, 0x0764, 0x076a, 0x077d, 0x0784, 0x078b, 0x0793, 0x079a,
- 0x07a3, 0x07a3, 0x07bb, 0x07c4, 0x07cf, 0x07dd, 0x07f3, 0x07fe,
- 0x0813, 0x0826, 0x082f, 0x0839, 0x0847, 0x084e, 0x084e, 0x0853,
- // Entry 100 - 13F
- 0x0859, 0x0868, 0x086e, 0x0878,
- },
- },
- { // fi
- fiRegionStr,
- fiRegionIdx,
- },
- { // fil
- filRegionStr,
- filRegionIdx,
- },
- { // fo
- "AscensionAndorraSameindu EmirríkiniAfganistanAntigua & BarbudaAnguillaAl" +
- "baniaArmeniaNiðurlendsku AntilloyggjarnarAngolaAntarktisArgentinaAme" +
- "rikanska SamoaEysturríkiAvstraliaArubaÁlandAserbadjanBosnia-Hersegov" +
- "inaBarbadosBangladesjBelgiaBurkina FasoBulgariaBareinBurundiBeninSt-" +
- "BarthélemyBermudaBruneiBoliviaNiðurlonds KaribiaBrasilBahamaoyggjarB" +
- "utanBouvetoyggjBotsvanaHvítarusslandBelisKanadaKokosoyggjarKongo, De" +
- "m. LýðveldiðMiðafrikalýðveldiðKongoSveisFílabeinsstrondinCooksoyggja" +
- "rKiliKamerunKinaKolombiaClippertonKosta RikaKubaGrønhøvdaoyggjarCura" +
- "çaoJólaoyggjinKýprosKekkiaTýsklandDiego GarciaDjibutiDanmarkDominik" +
- "aDominikalýðveldiðAlgeriaCeuta og MelillaEkvadorEstlandEgyptalandVes" +
- "tursaharaEritreaSpaniaEtiopiaEvropasamveldiðFinnlandFijiFalklandsoyg" +
- "gjarMikronesiasamveldiðFøroyarFraklandGabonStórabretlandGrenadaGeorg" +
- "iaFranska GujanaGuernseyGanaGibraltarGrønlandGambiaGuineaGuadeloupeE" +
- "kvatorguineaGrikkalandSuðurgeorgia og SuðursandwichoyggjarGuatemalaG" +
- "uamGuinea-BissauGujanaHong Kong SAR KinaHeard og McDonaldoyggjarHond" +
- "urasKroatiaHaitiUngarnKanariuoyggjarIndonesiaÍrlandÍsraelIsle of Man" +
- "IndiaStóra Bretlands IndiahavoyggjarIrakIranÍslandItaliaJerseyJamaik" +
- "aJordanJapanKenjaKirgisiaKambodjaKiribatiKomoroyggjarSt. Kitts & Nev" +
- "isNorðurkoreaSuðurkoreaKuvaitCaymanoyggjarKasakstanLaosLibanonSt. Lu" +
- "siaLiktinsteinSri LankaLiberiaLesotoLitavaLuksemborgLettlandLibyaMar" +
- "okkoMonakoMoldovaMontenegroSt-MartinMadagaskarMarshalloyggjarMakedón" +
- "iaMaliMyanmar (Burma)MongoliaMakao SAR KinaNorðaru MariuoyggjarMarti" +
- "niqueMóritaniaMontserratMaltaMóritiusMaldivoyggjarMalaviMeksikoMalai" +
- "siaMosambikNamibiaNýkaledóniaNigerNorfolksoyggjNigeriaNikaraguaNiður" +
- "londNoregNepalNauruNiueNýsælandOmanPanamaPeruFranska PolynesiaPapua " +
- "NýguineaFilipsoyggjarPakistanPóllandSaint Pierre og MiquelonPitcairn" +
- "oyggjarPuerto RikoPalestinskt landøkiPortugalPalauParaguaiKatarfjars" +
- "koti OsianiaRéunionRumeniaSerbiaRusslandRuandaSaudiarabiaSalomonoygg" +
- "jarSeyskelloyggjarSudanSvøríkiSingaporSt. HelenaSloveniaSvalbard & J" +
- "an MayenSlovakiaSierra LeonaSan MarinoSenegalSomaliaSurinamSuðursuda" +
- "nSao Tome & PrinsipiEl SalvadorSint MaartenSýriaSvasilandTristan da " +
- "CunhaTurks- og CaicosoyggjarKjadFronsku sunnaru landaøkiTogoTailandT" +
- "adsjikistanTokelauEysturtimorTurkmenistanTunesiaTongaTurkalandTrinid" +
- "ad & TobagoTuvaluTaivanTansaniaUkrainaUgandaSambandsríki Amerikas fj" +
- "arskotnu oyggjarSambandsríki AmerikaUruguaiUsbekistanVatikanbýurSt. " +
- "Vinsent & GrenadinoyggjarVenesuelaStóra Bretlands JomfrúoyggjarSamba" +
- "ndsríki Amerikas JomfrúoyggjarVjetnamVanuatuWallis- og Futunaoyggjar" +
- "SamoaKosovoJemenMayotteSuðurafrikaSambiaSimbabviókent økiheimurAfrik" +
- "aNorðuramerikaSuðuramerikaOsianiaVesturafrikaMiðamerikaEysturafrikaN" +
- "orðurafrikaMiðafrikasunnari partur av AfrikaAmerikaAmerika norðanfyr" +
- "i MeksikoKaribiaEysturasiaSuðurasiaÚtsynningsasiaSuðurevropaAvstrala" +
- "siaMelanesiaMikronesi økiPolynesiaAsiaMiðasiaVesturasiaEvropaEysture" +
- "vropaNorðurevropaVesturevropaLatínamerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x0024, 0x002e, 0x003f, 0x0047, 0x004e,
- 0x0055, 0x0073, 0x0079, 0x0082, 0x008b, 0x009c, 0x00a7, 0x00b0,
- 0x00b5, 0x00bb, 0x00c5, 0x00d7, 0x00df, 0x00e9, 0x00ef, 0x00fb,
- 0x0103, 0x0109, 0x0110, 0x0115, 0x0123, 0x012a, 0x0130, 0x0137,
- 0x014a, 0x0150, 0x015d, 0x0162, 0x016d, 0x0175, 0x0183, 0x0188,
- 0x018e, 0x019a, 0x01b2, 0x01c8, 0x01cd, 0x01d2, 0x01e4, 0x01f0,
- 0x01f4, 0x01fb, 0x01ff, 0x0207, 0x0211, 0x021b, 0x021f, 0x0231,
- 0x0239, 0x0245, 0x024c, 0x0252, 0x025b, 0x0267, 0x026e, 0x0275,
- // Entry 40 - 7F
- 0x027d, 0x0291, 0x0298, 0x02a8, 0x02af, 0x02b6, 0x02c0, 0x02cc,
- 0x02d3, 0x02d9, 0x02e0, 0x02f0, 0x02f8, 0x02fc, 0x030c, 0x0320,
- 0x0328, 0x0330, 0x0335, 0x0343, 0x034a, 0x0351, 0x035f, 0x0367,
- 0x036b, 0x0374, 0x037d, 0x0383, 0x0389, 0x0393, 0x03a0, 0x03aa,
- 0x03d0, 0x03d9, 0x03dd, 0x03ea, 0x03f0, 0x0402, 0x041a, 0x0422,
- 0x0429, 0x042e, 0x0434, 0x0442, 0x044b, 0x0452, 0x0459, 0x0464,
- 0x0469, 0x0489, 0x048d, 0x0491, 0x0498, 0x049e, 0x04a4, 0x04ab,
- 0x04b1, 0x04b6, 0x04bb, 0x04c3, 0x04cb, 0x04d3, 0x04df, 0x04f0,
- // Entry 80 - BF
- 0x04fc, 0x0507, 0x050d, 0x051a, 0x0523, 0x0527, 0x052e, 0x0537,
- 0x0542, 0x054b, 0x0552, 0x0558, 0x055e, 0x0568, 0x0570, 0x0575,
- 0x057c, 0x0582, 0x0589, 0x0593, 0x059c, 0x05a6, 0x05b5, 0x05bf,
- 0x05c3, 0x05d2, 0x05da, 0x05e8, 0x05fd, 0x0607, 0x0611, 0x061b,
- 0x0620, 0x0629, 0x0636, 0x063c, 0x0643, 0x064b, 0x0653, 0x065a,
- 0x0667, 0x066c, 0x0679, 0x0680, 0x0689, 0x0693, 0x0698, 0x069d,
- 0x06a2, 0x06a6, 0x06b0, 0x06b4, 0x06ba, 0x06be, 0x06cf, 0x06de,
- 0x06eb, 0x06f3, 0x06fb, 0x0713, 0x0722, 0x072d, 0x0741, 0x0749,
- // Entry C0 - FF
- 0x074e, 0x0756, 0x075b, 0x076c, 0x0774, 0x077b, 0x0781, 0x0789,
- 0x078f, 0x079a, 0x07a8, 0x07b7, 0x07bc, 0x07c5, 0x07cd, 0x07d7,
- 0x07df, 0x07f3, 0x07fb, 0x0807, 0x0811, 0x0818, 0x081f, 0x0826,
- 0x0831, 0x0844, 0x084f, 0x085b, 0x0861, 0x086a, 0x087a, 0x0891,
- 0x0895, 0x08ae, 0x08b2, 0x08b9, 0x08c5, 0x08cc, 0x08d7, 0x08e3,
- 0x08ea, 0x08ef, 0x08f8, 0x0909, 0x090f, 0x0915, 0x091d, 0x0924,
- 0x092a, 0x0953, 0x0968, 0x096f, 0x0979, 0x0985, 0x09a2, 0x09ab,
- 0x09ca, 0x09ef, 0x09f6, 0x09fd, 0x0a15, 0x0a1a, 0x0a20, 0x0a25,
- // Entry 100 - 13F
- 0x0a2c, 0x0a38, 0x0a3e, 0x0a46, 0x0a51, 0x0a57, 0x0a5d, 0x0a6b,
- 0x0a78, 0x0a7f, 0x0a8b, 0x0a96, 0x0aa2, 0x0aaf, 0x0ab9, 0x0ad1,
- 0x0ad8, 0x0af3, 0x0afa, 0x0b04, 0x0b0e, 0x0b1d, 0x0b29, 0x0b34,
- 0x0b3d, 0x0b4b, 0x0b54, 0x0b58, 0x0b60, 0x0b6a, 0x0b70, 0x0b7c,
- 0x0b89, 0x0b95, 0x0ba2,
- },
- },
- { // fr
- frRegionStr,
- frRegionIdx,
- },
- { // fr-CA
- frCARegionStr,
- frCARegionIdx,
- },
- {}, // fr-CH
- { // fur
- "AndorraEmirâts araps unîtsAfghanistanAntigua e BarbudaAnguillaAlbanieArm" +
- "enieAntilis olandesisAngolaAntarticArgjentineSamoa merecanisAustrieA" +
- "ustralieArubaIsulis AlandAzerbaigianBosnie e ErcegovineBarbadosBangl" +
- "adeshBelgjicheBurkina FasoBulgarieBahrainBurundiBeninSant Barthélemy" +
- "BermudaBruneiBolivieBrasîlBahamasBhutanIsule BouvetBotswanaBieloruss" +
- "ieBelizeCanadeIsulis CocosRepubliche Democratiche dal CongoRepublich" +
- "e centri africaneCongo - BrazzavilleSvuizareCueste di AvoliIsulis Co" +
- "okCileCamerunCineColombieIsule ClippertonCosta RicaCubaCjâf vertIsul" +
- "e ChristmasCipriRepubliche cecheGjermanieDiego GarciaGibutiDanimarcj" +
- "eDominicheRepubliche dominicaneAlzerieCeuta e MelillaEcuadorEstonieE" +
- "gjitSahara ocidentâlEritreeSpagneEtiopieUnion europeaneFinlandieFizi" +
- "Isulis FalklandMicronesieIsulis FaroeFranceGabonReam unîtGrenadaGjeo" +
- "rgjieGuiana francêsGuernseyGhanaGjibraltarGroenlandeGambiaGuineeGuad" +
- "alupeGuinee ecuatoriâlGrecieGeorgia dal Sud e Isulis Sandwich dal Su" +
- "dGuatemalaGuamGuinea-BissauGuyanaRegjon aministrative speciâl de Cin" +
- "e di Hong KongIsule Heard e Isulis McDonaldHondurasCravuazieHaitiOng" +
- "jarieIsulis CanariisIndonesieIrlandeIsraêlIsule di ManIndiaTeritori " +
- "britanic dal Ocean IndianIraqIranIslandeItalieJerseyGjamaicheJordani" +
- "eGjaponKenyaKirghizstanCambozeKiribatiComorisSan Kitts e NevisCoree " +
- "dal nordCoree dal sudKuwaitIsulis CaymanKazachistanLaosLibanSante Lu" +
- "sieLiechtensteinSri LankaLiberieLesothoLituanieLussemburcLetonieLibi" +
- "eMarocMonacoMoldavieMontenegroSant MartinMadagascarIsulis MarshallMa" +
- "cedonieMaliBirmanieMongolieRegjon aministrative speciâl de Cine di M" +
- "acaoIsulis Mariana dal NordMartinicheMauritanieMontserratMaltaMauriz" +
- "iMaldivisMalawiMessicMalaysiaMozambicNamibieGnove CaledonieNigerIsol" +
- "e NorfolkNigerieNicaraguaPaîs basNorvegjeNepalNauruNiueGnove Zelande" +
- "OmanPanamàPerùPolinesie francêsPapue Gnove GuineeFilipinisPakistanPo" +
- "lonieSan Pierre e MiquelonPitcairnPorto RicoTeritoris palestinêsPort" +
- "ugalPalauParaguayQatarOceanie perifericheReunionRomanieSerbieRussieR" +
- "uandeArabie SaudideIsulis SalomonSeychellesSudanSvezieSingaporeSante" +
- " ElineSlovenieSvalbard e Jan MayenSlovachieSierra LeoneSan MarinSene" +
- "galSomalieSurinameSao Tomè e PrincipeEl SalvadorSirieSwazilandTrista" +
- "n da CunhaIsulis Turks e CaicosÇadTeritoris meridionâi francêsTogoTa" +
- "ilandieTazikistanTokelauTimor orientâlTurkmenistanTunisieTongaTurchi" +
- "eTrinidad e TobagoTuvaluTaiwanTanzanieUcraineUgandaIsulis periferich" +
- "is minôrs dai Stâts UnîtsStâts UnîtsUruguayUzbechistanVaticanSan Vin" +
- "cent e lis GrenadinisVenezuelaIsulis vergjinis britanichisIsulis ver" +
- "gjinis americanisVietnamVanuatuWallis e FutunaSamoaYemenMayotteSud A" +
- "fricheZambiaZimbabweRegjon no cognossude o no valideMontAfricheAmeri" +
- "che dal NordAmeriche meridionâlOceanieAfriche ocidentâlAmeriche cent" +
- "râlAfriche orientâlAfriche setentrionâlAfriche di mieçAfriche meridi" +
- "onâlAmerichisAmeriche setentrionâlcaraibicAsie orientâlAsie meridion" +
- "âlAsie sud orientâlEurope meridionâlAustralie e Gnove ZelandeMelane" +
- "sieRegjon de MicronesiePolinesieAsieAsie centrâlAsie ocidentâlEurope" +
- "Europe orientâlEurope setentrionâlEurope ocidentâlAmeriche latine",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001c, 0x0027, 0x0038, 0x0040, 0x0047,
- 0x004e, 0x005f, 0x0065, 0x006d, 0x0077, 0x0086, 0x008d, 0x0096,
- 0x009b, 0x00a7, 0x00b2, 0x00c5, 0x00cd, 0x00d7, 0x00e0, 0x00ec,
- 0x00f4, 0x00fb, 0x0102, 0x0107, 0x0117, 0x011e, 0x0124, 0x012b,
- 0x012b, 0x0132, 0x0139, 0x013f, 0x014b, 0x0153, 0x015e, 0x0164,
- 0x016a, 0x0176, 0x0197, 0x01b1, 0x01c4, 0x01cc, 0x01db, 0x01e6,
- 0x01ea, 0x01f1, 0x01f5, 0x01fd, 0x020d, 0x0217, 0x021b, 0x0225,
- 0x0225, 0x0234, 0x0239, 0x0249, 0x0252, 0x025e, 0x0264, 0x026e,
- // Entry 40 - 7F
- 0x0277, 0x028c, 0x0293, 0x02a2, 0x02a9, 0x02b0, 0x02b5, 0x02c6,
- 0x02cd, 0x02d3, 0x02da, 0x02e9, 0x02f2, 0x02f6, 0x0305, 0x030f,
- 0x031b, 0x0321, 0x0326, 0x0330, 0x0337, 0x0340, 0x034f, 0x0357,
- 0x035c, 0x0366, 0x0370, 0x0376, 0x037c, 0x0385, 0x0397, 0x039d,
- 0x03c6, 0x03cf, 0x03d3, 0x03e0, 0x03e6, 0x0418, 0x0435, 0x043d,
- 0x0446, 0x044b, 0x0453, 0x0462, 0x046b, 0x0472, 0x0479, 0x0485,
- 0x048a, 0x04ac, 0x04b0, 0x04b4, 0x04bb, 0x04c1, 0x04c7, 0x04d0,
- 0x04d8, 0x04de, 0x04e3, 0x04ee, 0x04f5, 0x04fd, 0x0504, 0x0515,
- // Entry 80 - BF
- 0x0523, 0x0530, 0x0536, 0x0543, 0x054e, 0x0552, 0x0557, 0x0562,
- 0x056f, 0x0578, 0x057f, 0x0586, 0x058e, 0x0598, 0x059f, 0x05a4,
- 0x05a9, 0x05af, 0x05b7, 0x05c1, 0x05cc, 0x05d6, 0x05e5, 0x05ee,
- 0x05f2, 0x05fa, 0x0602, 0x0630, 0x0647, 0x0651, 0x065b, 0x0665,
- 0x066a, 0x0671, 0x0679, 0x067f, 0x0685, 0x068d, 0x0695, 0x069c,
- 0x06ab, 0x06b0, 0x06bd, 0x06c4, 0x06cd, 0x06d6, 0x06de, 0x06e3,
- 0x06e8, 0x06ec, 0x06f9, 0x06fd, 0x0704, 0x0709, 0x071b, 0x072d,
- 0x0736, 0x073e, 0x0745, 0x075a, 0x0762, 0x076c, 0x0781, 0x0789,
- // Entry C0 - FF
- 0x078e, 0x0796, 0x079b, 0x07ae, 0x07b5, 0x07bc, 0x07c2, 0x07c8,
- 0x07ce, 0x07dc, 0x07ea, 0x07f4, 0x07f9, 0x07ff, 0x0808, 0x0813,
- 0x081b, 0x082f, 0x0838, 0x0844, 0x084d, 0x0854, 0x085b, 0x0863,
- 0x0863, 0x0877, 0x0882, 0x0882, 0x0887, 0x0890, 0x08a0, 0x08b5,
- 0x08b9, 0x08d7, 0x08db, 0x08e4, 0x08ee, 0x08f5, 0x0904, 0x0910,
- 0x0917, 0x091c, 0x0923, 0x0934, 0x093a, 0x0940, 0x0948, 0x094f,
- 0x0955, 0x0982, 0x098f, 0x0996, 0x09a1, 0x09a8, 0x09c4, 0x09cd,
- 0x09e9, 0x0a04, 0x0a0b, 0x0a12, 0x0a21, 0x0a26, 0x0a26, 0x0a2b,
- // Entry 100 - 13F
- 0x0a32, 0x0a3d, 0x0a43, 0x0a4b, 0x0a6b, 0x0a6f, 0x0a76, 0x0a87,
- 0x0a9b, 0x0aa2, 0x0ab4, 0x0ac5, 0x0ad6, 0x0aeb, 0x0afb, 0x0b0e,
- 0x0b17, 0x0b2d, 0x0b35, 0x0b43, 0x0b53, 0x0b65, 0x0b77, 0x0b90,
- 0x0b99, 0x0bad, 0x0bb6, 0x0bba, 0x0bc7, 0x0bd6, 0x0bdc, 0x0bec,
- 0x0c00, 0x0c11, 0x0c20,
- },
- },
- { // fy
- "AscensionAndorraVerenigde Arabyske EmiratenAfghanistanAntigua en Barbuda" +
- "AnguillaAlbaniëArmeniëNederlânske AntillenAngolaAntarcticaArgentinië" +
- "Amerikaansk SamoaEastenrykAustraliëArubaÅlânAzerbeidzjanBosnië en He" +
- "rzegovinaBarbadosBangladeshBelgiëBurkina FasoBulgarijeBahreinBurundi" +
- "BeninSaint BarthélemyBermudaBruneiBoliviaKaribysk NederlânBraziliëBa" +
- "hama’sBhutanBouveteilânBotswanaWit-RuslânBelizeCanadaKokosilanenCong" +
- "o-KinshasaSintraal-Afrikaanske RepublykCongo-BrazzavilleSwitserlânIv" +
- "oorkustCookeilannenChiliKameroenSinaKolombiaClippertonCosta RicaKuba" +
- "KaapverdiëCuraçaoKrysteilanSyprusTsjechjeDútslânDiego GarciaDjibouti" +
- "DenemarkenDominikaDominikaanske RepublykAlgerijeCeuta en MelillaEcua" +
- "dorEstlânEgypteWestelijke SaharaEritreaSpanjeEthiopiëEuropeeske Unie" +
- "FinlânFijiFalklâneilannenMicronesiëFaeröerFrankrijkGabonVerenigd Kon" +
- "inkrijkGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGrienlânGambi" +
- "aGuineeGuadeloupeEquatoriaal-GuineaGrikelânSûd-Georgia en Sûdlike Sa" +
- "ndwicheilannenGuatemalaGuamGuinee-BissauGuyanaHongkong SAR van SinaH" +
- "eard- en McDonaldeilannenHondurasKroatiëHaïtiHongarijeKanaryske Eilâ" +
- "nnenYndonesiëIerlânIsraëlIsle of ManIndiaBritse Gebieden yn de Indys" +
- "ke OseaanIrakIranYslânItaliëJerseyJamaicaJordaniëJapanKeniaKirgiziëC" +
- "ambodjaKiribatiComorenSaint Kitts en NevisNoard-KoreaSûd-KoreaKoewei" +
- "tCaymaneilannenKazachstanLaosLibanonSaint LuciaLiechtensteinSri Lank" +
- "aLiberiaLesothoLitouwenLuxemburgLetlânLibiëMarokkoMonacoMoldaviëMont" +
- "enegroSaint-MartinMadeiaskarMarshalleilannenMacedoniëMaliMyanmar (Bi" +
- "rma)MongoliëMacao SAR van SinaNoardlike MarianeneilannenMartiniqueMa" +
- "uritaniëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMozambiq" +
- "ueNamibiëNij-CaledoniëNigerNorfolkeilânNigeriaNicaraguaNederlânNoarw" +
- "egenNepalNauruNiueNij-SeelânOmanPanamaPeruFrans-PolynesiëPapoea-Nij-" +
- "GuineaFilipijnenPakistanPolenSaint-Pierre en MiquelonPitcairneilanne" +
- "nPuerto RicoPalestynske gebietenPortugalPalauParaguayQatarOerig Ocea" +
- "niëRéunionRoemeniëServiëRuslânRwandaSaoedi-ArabiëSalomonseilannenSey" +
- "chellenSoedanZwedenSingaporeSint-HelenaSloveniëSpitsbergen en Jan Ma" +
- "yenSlowakijeSierra LeoneSan MarinoSenegalSomaliëSurinameSûd-SoedanSa" +
- "o Tomé en PrincipeEl SalvadorSint-MaartenSyriëSwazilânTristan da Cun" +
- "haTurks- en CaicoseilannenTsjaadFranse Gebieden in de zuidelijke Ind" +
- "yske OseaanTogoThailânTadzjikistanTokelauEast-TimorTurkmenistanTunes" +
- "iëTongaTurkijeTrinidad en TobagoTuvaluTaiwanTanzaniaOekraïneOegandaL" +
- "yts ôflizzen eilannen fan de Ferienigde StatenFerienigde StatenUrugu" +
- "ayOezbekistanVaticaanstêdSaint Vincent en de GrenadinesVenezuelaBrit" +
- "se MaagdeneilannenAmerikaanske MaagdeneilannenVietnamVanuatuWallis e" +
- "n FutunaSamoaKosovoJemenMayotteSûd-AfrikaZambiaZimbabweUnbekend gebi" +
- "etWrâldAfrikaNoard-AmerikaSûd-AmerikaOceaniëWest-AfrikaMidden-Amerik" +
- "aEast-AfrikaNoard-AfrikaSintraal-AfrikaSûdelijk AfrikaAmerikaNoardli" +
- "k AmerikaKaribysk gebietEast-AziëSûd-AziëSûdoost-AziëSûd-EuropaAustr" +
- "alaziëMelanesiëMicronesyske regioPolynesiëAziëSintraal-AziëWest-Azië" +
- "EuropaEast-EuropaNoard-EuropaWest-EuropaLatynsk-Amearika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0048, 0x0050, 0x0058,
- 0x0060, 0x0075, 0x007b, 0x0085, 0x0090, 0x00a1, 0x00aa, 0x00b4,
- 0x00b9, 0x00bf, 0x00cb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x0106,
- 0x010f, 0x0116, 0x011d, 0x0122, 0x0133, 0x013a, 0x0140, 0x0147,
- 0x0159, 0x0162, 0x016c, 0x0172, 0x017e, 0x0186, 0x0191, 0x0197,
- 0x019d, 0x01a8, 0x01b6, 0x01d3, 0x01e4, 0x01ef, 0x01f8, 0x0204,
- 0x0209, 0x0211, 0x0215, 0x021d, 0x0227, 0x0231, 0x0235, 0x0240,
- 0x0248, 0x0252, 0x0258, 0x0260, 0x0269, 0x0275, 0x027d, 0x0287,
- // Entry 40 - 7F
- 0x028f, 0x02a5, 0x02ad, 0x02bd, 0x02c4, 0x02cb, 0x02d1, 0x02e2,
- 0x02e9, 0x02ef, 0x02f8, 0x0307, 0x030e, 0x0312, 0x0322, 0x032d,
- 0x0335, 0x033e, 0x0343, 0x0356, 0x035d, 0x0365, 0x0371, 0x0379,
- 0x037e, 0x0387, 0x0390, 0x0396, 0x039c, 0x03a6, 0x03b8, 0x03c1,
- 0x03ea, 0x03f3, 0x03f7, 0x0404, 0x040a, 0x041f, 0x0439, 0x0441,
- 0x0449, 0x044f, 0x0458, 0x046b, 0x0475, 0x047c, 0x0483, 0x048e,
- 0x0493, 0x04b7, 0x04bb, 0x04bf, 0x04c5, 0x04cc, 0x04d2, 0x04d9,
- 0x04e2, 0x04e7, 0x04ec, 0x04f5, 0x04fd, 0x0505, 0x050c, 0x0520,
- // Entry 80 - BF
- 0x052b, 0x0535, 0x053c, 0x054a, 0x0554, 0x0558, 0x055f, 0x056a,
- 0x0577, 0x0580, 0x0587, 0x058e, 0x0596, 0x059f, 0x05a6, 0x05ac,
- 0x05b3, 0x05b9, 0x05c2, 0x05cc, 0x05d8, 0x05e2, 0x05f2, 0x05fc,
- 0x0600, 0x060f, 0x0618, 0x062a, 0x0644, 0x064e, 0x0659, 0x0663,
- 0x0668, 0x0671, 0x0679, 0x067f, 0x0685, 0x068e, 0x0698, 0x06a0,
- 0x06ae, 0x06b3, 0x06c0, 0x06c7, 0x06d0, 0x06d9, 0x06e2, 0x06e7,
- 0x06ec, 0x06f0, 0x06fb, 0x06ff, 0x0705, 0x0709, 0x0719, 0x072a,
- 0x0734, 0x073c, 0x0741, 0x0759, 0x0769, 0x0774, 0x0788, 0x0790,
- // Entry C0 - FF
- 0x0795, 0x079d, 0x07a2, 0x07b0, 0x07b8, 0x07c1, 0x07c8, 0x07cf,
- 0x07d5, 0x07e3, 0x07f3, 0x07fd, 0x0803, 0x0809, 0x0812, 0x081d,
- 0x0826, 0x083e, 0x0847, 0x0853, 0x085d, 0x0864, 0x086c, 0x0874,
- 0x087f, 0x0894, 0x089f, 0x08ab, 0x08b1, 0x08ba, 0x08ca, 0x08e2,
- 0x08e8, 0x0917, 0x091b, 0x0923, 0x092f, 0x0936, 0x0940, 0x094c,
- 0x0954, 0x0959, 0x0960, 0x0972, 0x0978, 0x097e, 0x0986, 0x098f,
- 0x0996, 0x09c6, 0x09d7, 0x09de, 0x09e9, 0x09f6, 0x0a14, 0x0a1d,
- 0x0a33, 0x0a4f, 0x0a56, 0x0a5d, 0x0a6d, 0x0a72, 0x0a78, 0x0a7d,
- // Entry 100 - 13F
- 0x0a84, 0x0a8f, 0x0a95, 0x0a9d, 0x0aac, 0x0ab2, 0x0ab8, 0x0ac5,
- 0x0ad1, 0x0ad9, 0x0ae4, 0x0af2, 0x0afd, 0x0b09, 0x0b18, 0x0b28,
- 0x0b2f, 0x0b3f, 0x0b4e, 0x0b58, 0x0b62, 0x0b70, 0x0b7b, 0x0b87,
- 0x0b91, 0x0ba3, 0x0bad, 0x0bb2, 0x0bc0, 0x0bca, 0x0bd0, 0x0bdb,
- 0x0be7, 0x0bf2, 0x0c02,
- },
- },
- { // ga
- "Oileán na DeascabhálaAndóraAontas na nÉimíríochtaí ArabachaAn Afganastái" +
- "nAntigua agus BarbúdaAngaíleAn AlbáinAn AirméinAintillí na hÍsiltíre" +
- "AngólaAn AntartaiceAn AirgintínSamó MeiriceánachAn OstairAn AstráilA" +
- "rúbaOileáin ÅlandAn AsarbaiseáinAn Bhoisnia agus An HeirseagaivéinBa" +
- "rbadósAn BhanglaidéisAn BheilgBuircíne FasóAn BhulgáirBairéinAn Bhur" +
- "úinBeininSaint BarthélemyBeirmiúdaBrúinéAn BholaivAn Ísiltír Chairi" +
- "beachAn BhrasaílNa BahámaíAn BhútáinOileán BouvetAn BhotsuáinAn Bhea" +
- "larúisAn BheilísCeanadaOileáin Cocos (Keeling)Poblacht Dhaonlathach " +
- "an ChongóPoblacht na hAfraice LáirAn CongóAn EilvéisAn Cósta Eabhair" +
- "Oileáin CookAn tSileCamarúnAn tSínAn CholóimOileán ClippertonCósta R" +
- "íceCúbaRinn VerdeCuraçaoOileán na NollagAn ChipirPoblacht na SeiceA" +
- "n GhearmáinDiego GarciaDjiboutiAn DanmhairgDoiminiceAn Phoblacht Dho" +
- "iminiceachAn AilgéirCeuta agus MelillaEacuadórAn EastóinAn ÉigiptAn " +
- "Sahára ThiarAn EiritréAn SpáinnAn AetóipAn tAontas EorpachAn Fhionla" +
- "innFidsíOileáin FháclainneAn MhicrinéisOileáin FharóAn FhraincAn Gha" +
- "búinAn Ríocht AontaitheGreanádaAn tSeoirsiaGuáin na FrainceGeansaíGá" +
- "naGiobráltarAn GhraonlainnAn GhaimbiaAn GhuineGuadalúipAn Ghuine Mhe" +
- "ánchriosachAn GhréigAn tSeoirsia Theas agus Oileáin Sandwich TheasG" +
- "uatamalaGuamGuine BissauAn GhuáinS.R.R. na Síne Hong CongOileán Hear" +
- "d agus Oileáin McDonaldHondúrasAn ChróitHáítíAn UngáirNa hOileáin Ch" +
- "anárachaAn IndinéisÉireIosraelOileán MhanannAn IndiaCríoch Aigéan In" +
- "diach na BreataineAn IaráicAn IaráinAn ÍoslainnAn IodáilGeirsíIamáic" +
- "eAn IordáinAn tSeapáinAn ChéiniaAn ChirgeastáinAn ChambóidCireabaití" +
- "Oileáin ChomóraSan Críostóir-NimheasAn Chóiré ThuaidhAn Chóiré Theas" +
- "CuáitOileáin CaymanAn ChasacstáinLaosAn LiobáinSaint LuciaLichtinsté" +
- "inSrí LancaAn LibéirLeosótaAn LiotuáinLucsamburgAn LaitviaAn LibiaMa" +
- "racóMonacóAn MholdóivMontainéagróSaint-MartinMadagascarOileáin Marsh" +
- "allAn MhacadóinMailíMaenmar (Burma)An MhongóilS.R.R. na Síne MacaoNa" +
- " hOileáin Mháirianacha ThuaidhMartiniqueAn MháratáinMontsaratMáltaOi" +
- "leán MhuirísOileáin MhaildíveAn MhaláivMeicsiceoAn MhalaeisiaMósaimb" +
- "ícAn NamaibAn Nua-ChaladóinAn NígirOileán NorfolkAn NigéirNicearagu" +
- "aAn ÍsiltírAn IoruaNeipealNárúNiueAn Nua-ShéalainnÓmanPanamaPeiriúPo" +
- "lainéis na FrainceNua-Ghuine PhapuaNa hOileáin FhilipíneachaAn Phaca" +
- "stáinAn PholainnSaint-Pierre-et-MiquelonOileáin PitcairnPortó RíceNa" +
- " Críocha PalaistíneachaAn PhortaingéilPalauParaguaCatarAn Aigéine Im" +
- "eallachRéunionAn RómáinAn tSeirbiaAn RúisRuandaAn Araib ShádachOileá" +
- "in SholomónNa SéiséilAn tSúdáinAn tSualainnSingeapórSan HéilinAn tSl" +
- "óivéinSvalbard agus Jan MayenAn tSlóvaicSiarra LeonSan MairíneAn tS" +
- "eineagáilAn tSomáilSuranamAn tSúdáin TheasSão Tomé agus PríncipeAn t" +
- "SalvadóirSint MaartenAn tSiriaAn tSuasalainnTristan da CunhaOileáin " +
- "na dTurcach agus CaicosSeadCríocha Francacha Dheisceart an DomhainTó" +
- "gaAn TéalainnAn TáidsíceastáinTócaláTíomór ThoirAn TuircméanastáinAn" +
- " TúinéisTongaAn TuircOileán na Tríonóide agus TobágaTuvaluAn Téaváin" +
- "An TansáinAn ÚcráinUgandaOileáin Imeallacha S.A.M.Stáit Aontaithe Mh" +
- "eiriceáUruguaAn ÚisbéiceastáinAn VatacáinSan Uinseann agus na Greaná" +
- "idíníVeiniséalaOileáin Bhriotanacha na MaighdeanOileáin Mheiriceánac" +
- "ha na MaighdeanVítneamVanuatúVailís agus FutúnaSamóAn ChosaivÉiminMa" +
- "yotteAn Afraic TheasAn tSaimbiaAn tSiombáibRéigiún AnaithnidAn Domha" +
- "nAn AfraicMeiriceá ThuaidhMeiriceá TheasAn AigéineIarthar na hAfraic" +
- "eMeiriceá LáirOirthear na hAfraiceTuaisceart na hAfraiceAn Afraic Lá" +
- "irDeisceart na hAfraiceCríocha MheiriceáTuaisceart MheiriceáAn Mhuir" +
- " ChairibOirthear na hÁiseDeisceart na hÁiseOirdheisceart na hÁiseDei" +
- "sceart na hEorpaAn AstraláiseAn MheilinéisAn Réigiún MicrinéiseachAn" +
- " PholainéisAn ÁiseAn Áise LáirIarthar na hÁiseAn EoraipOirthear na h" +
- "EorpaTuaisceart na hEorpaIarthar na hEorpaMeiriceá Laidineach",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0017, 0x001e, 0x0042, 0x0051, 0x0066, 0x006e, 0x0078,
- 0x0083, 0x009b, 0x00a2, 0x00af, 0x00bc, 0x00cf, 0x00d8, 0x00e3,
- 0x00e9, 0x00f8, 0x0108, 0x012b, 0x0134, 0x0144, 0x014d, 0x015c,
- 0x0168, 0x0170, 0x017b, 0x0181, 0x0192, 0x019c, 0x01a4, 0x01ae,
- 0x01c6, 0x01d2, 0x01de, 0x01ea, 0x01f8, 0x0205, 0x0213, 0x021e,
- 0x0225, 0x023d, 0x025d, 0x0277, 0x0280, 0x028b, 0x029c, 0x02a9,
- 0x02b1, 0x02b9, 0x02c1, 0x02cc, 0x02de, 0x02ea, 0x02ef, 0x02f9,
- 0x0301, 0x0312, 0x031b, 0x032c, 0x0339, 0x0345, 0x034d, 0x0359,
- // Entry 40 - 7F
- 0x0362, 0x037c, 0x0387, 0x0399, 0x03a2, 0x03ad, 0x03b7, 0x03c7,
- 0x03d2, 0x03dc, 0x03e6, 0x03f8, 0x0405, 0x040b, 0x041f, 0x042d,
- 0x043c, 0x0446, 0x0451, 0x0465, 0x046e, 0x047a, 0x048b, 0x0493,
- 0x0498, 0x04a3, 0x04b1, 0x04bc, 0x04c5, 0x04cf, 0x04e8, 0x04f2,
- 0x0521, 0x052a, 0x052e, 0x053a, 0x0544, 0x055d, 0x0581, 0x058a,
- 0x0594, 0x059c, 0x05a6, 0x05be, 0x05ca, 0x05cf, 0x05d6, 0x05e5,
- 0x05ed, 0x0611, 0x061b, 0x0625, 0x0631, 0x063b, 0x0642, 0x064a,
- 0x0655, 0x0661, 0x066c, 0x067c, 0x0688, 0x0693, 0x06a4, 0x06bb,
- // Entry 80 - BF
- 0x06ce, 0x06df, 0x06e5, 0x06f4, 0x0703, 0x0707, 0x0712, 0x071d,
- 0x072a, 0x0734, 0x073e, 0x0746, 0x0752, 0x075c, 0x0766, 0x076e,
- 0x0775, 0x077c, 0x0788, 0x0796, 0x07a2, 0x07ac, 0x07bd, 0x07ca,
- 0x07d0, 0x07df, 0x07eb, 0x0800, 0x0822, 0x082c, 0x083a, 0x0843,
- 0x0849, 0x0859, 0x086c, 0x0877, 0x0880, 0x088d, 0x0898, 0x08a1,
- 0x08b2, 0x08bb, 0x08ca, 0x08d4, 0x08de, 0x08ea, 0x08f2, 0x08f9,
- 0x08ff, 0x0903, 0x0914, 0x0919, 0x091f, 0x0926, 0x093b, 0x094c,
- 0x0967, 0x0975, 0x0980, 0x0998, 0x09a9, 0x09b5, 0x09d0, 0x09e0,
- // Entry C0 - FF
- 0x09e5, 0x09ec, 0x09f1, 0x0a06, 0x0a0e, 0x0a19, 0x0a24, 0x0a2c,
- 0x0a32, 0x0a43, 0x0a55, 0x0a61, 0x0a6d, 0x0a79, 0x0a83, 0x0a8e,
- 0x0a9c, 0x0ab3, 0x0abf, 0x0aca, 0x0ad6, 0x0ae5, 0x0af0, 0x0af7,
- 0x0b09, 0x0b22, 0x0b30, 0x0b3c, 0x0b45, 0x0b53, 0x0b63, 0x0b83,
- 0x0b87, 0x0baf, 0x0bb4, 0x0bc0, 0x0bd4, 0x0bdc, 0x0bea, 0x0bfe,
- 0x0c0a, 0x0c0f, 0x0c17, 0x0c3a, 0x0c40, 0x0c4c, 0x0c57, 0x0c62,
- 0x0c68, 0x0c82, 0x0c9d, 0x0ca3, 0x0cb7, 0x0cc3, 0x0ce6, 0x0cf1,
- 0x0d13, 0x0d38, 0x0d40, 0x0d48, 0x0d5c, 0x0d61, 0x0d6b, 0x0d71,
- // Entry 100 - 13F
- 0x0d78, 0x0d87, 0x0d92, 0x0d9f, 0x0db2, 0x0dbb, 0x0dc4, 0x0dd5,
- 0x0de4, 0x0def, 0x0e02, 0x0e11, 0x0e25, 0x0e3b, 0x0e4a, 0x0e5f,
- 0x0e72, 0x0e87, 0x0e97, 0x0ea9, 0x0ebc, 0x0ed3, 0x0ee6, 0x0ef4,
- 0x0f02, 0x0f1d, 0x0f2b, 0x0f33, 0x0f41, 0x0f52, 0x0f5b, 0x0f6d,
- 0x0f81, 0x0f92, 0x0fa6,
- },
- },
- { // gd
- "Eilean na DeasgabhalachAndorraNa h-Iomaratan Arabach AonaichteAfghanastà" +
- "nAintìoga is BarbudaAnguillaAlbàiniaAirmeiniaEileanan Aintilia nan T" +
- "ìrean ÌsleAngòlaAn AntartaigAn ArgantainSamotha na h-AimeireagaAn O" +
- "stairAstràiliaArùbaNa h-Eileanan ÅlandAsarbaideànBosna agus Hearsago" +
- "bhanaBarbadosBangladaisA’ BheilgBuirciona FasoA’ BhulgairBachrainBur" +
- "undaidhBeininSaint BarthélemyBearmùdaBrùnaighBoilibhiaNa Tìrean Ìsle" +
- " CaraibeachBraisilNa h-Eileanan BhathamaButànEilean BouvetBotsuanaA’" +
- " BhealaruisA’ BheilìsCanadaNa h-Eileanan Cocos (Keeling)Congo - Kins" +
- "hasaPoblachd Meadhan AfragaA’ Chongo - BrazzavilleAn EilbheisCôte d’" +
- "IvoireEileanan CookAn t-SileCamarunAn t-SìnColoimbiaEilean Clipperto" +
- "nCosta RìceaCùbaAn Ceap UaineCuraçaoEilean na NollaigCìoprasPoblachd" +
- " na SeiceA’ GhearmailtDiego GarciaDiobùtaidhAn DanmhairgDoiminiceaA’" +
- " Phoblachd DhoiminiceachAildiriaCeuta agus MelillaEacuadorAn Eastoin" +
- "An ÈiphitSathara an IarEartraAn SpàinnAn ItiopAn t-Aonadh EòrpachAn " +
- "FhionnlannFìdiNa h-Eileanan FàclannachNa Meanbh-EileananNa h-Eileana" +
- "n FàroAn FhraingGabonAn Rìoghachd AonaichteGreanàdaA’ ChairtbheilGui" +
- "dheàna na FraingeGeàrnsaidhGànaDiobraltarA’ GhraonlannA’ GhaimbiaGin" +
- "iGuadalupGini Mheadhan-ChriosachA’ GhreugSeòrsea a Deas is na h-Eile" +
- "anan Sandwich a DeasGuatamalaGuamGini-BiosoGuidheànaHong Kong SAR na" +
- " SìneEilean Heard is MhicDhòmhnaillHondùrasA’ ChròthaisHaidhtiAn Ung" +
- "airNa h-Eileanan CanàrachNa h-Innd InnseÈirinnIosraelEilean Mhanainn" +
- "Na h-InnseachanRanntair Breatannach Cuan nan InnseachanIoràcIorànInn" +
- "is TìleAn EadailtDeàrsaidhDiameugaIòrdanAn t-SeapanCeiniaCìorgastanC" +
- "ambuideaCiribeasComorosNaomh Crìstean is NibheisCoirèa a TuathCoirèa" +
- " a DeasCuibhèitNa h-Eileanan CaimeanCasachstànLàthosLeabanonNaomh Lù" +
- "iseaLichtensteinSri LancaLibèirLeasotoAn LiotuainLugsamburgAn Laitbh" +
- "eLibiaMorocoMonacoA’ MholdobhaAm Monadh NeagrachNaomh MàrtainnMadaga" +
- "sgarEileanan MharshallA’ MhasadonMàiliMiànmarDùthaich nam MongolMacà" +
- "thu SAR na SìneNa h-Eileanan Mairianach a TuathMairtinicMoratàineaMo" +
- "ntsaratMaltaNa h-Eileanan MhoiriseasNa h-Eileanan MhaladaibhMalabhai" +
- "dhMeagsagoMalaidhseaMòsaimbicAn NamaibCailleann NuadhNìgeirEilean No" +
- "rfolkNigèiriaNiocaraguaNa Tìrean ÌsleAn NirribhidhNeapàlNabhruNiueSe" +
- "alainn NuadhOmànPanamaPearùPoilinèis na FraingeGini Nuadh Phaputhach" +
- "Na h-Eileanan FilipineachPagastànA’ PhòlainnSaint Pierre agus Miquel" +
- "onEilean Peit a’ ChàirnPorto RìceoNa Ranntairean PalastaineachA’ Pho" +
- "rtagailPalabhParaguaidhCatarRoinn Iomallach a’ Chuain SèimhRéunionRo" +
- "màiniaAn t-SèirbAn RuisRubhandaAràibia nan SabhdEileanan SholaimhNa " +
- "h-Eileanan SheiseallSudànAn t-SuainSingeapòrEilean Naomh EilidhAn t-" +
- "SlòbhainSvalbard agus Jan MayenAn t-SlòbhacSiarra LeòmhannSan Marino" +
- "SeanagalSomàiliaSuranamSudàn a DeasSão Tomé agus PríncipeAn Salbhado" +
- "rSint MaartenSiridheaDùthaich nan SuasaidhTristan da CunhaNa h-Eilea" +
- "nan Turcach is CaiceoAn t-SeàdRanntairean a Deas na FraingeTogoDùtha" +
- "ich nan TàidhTaidigeastànTokelauTimor-LesteTurcmanastànTuiniseaTonga" +
- "An TuircTrianaid agus TobagoTubhaluTaidh-BhànAn TansanAn UcràinUgand" +
- "aMeanbh-Eileanan Iomallach nan SANa Stàitean AonaichteUruguaidhUsbag" +
- "astànCathair na BhatacainNaomh Bhionsant agus Eileanan GreanadachA’ " +
- "BheinisealaEileanan Breatannach na MaighdinnEileanan Aimeireagach na" +
- " MaighdinnBhiet-NamVanuatuUallas agus FutunaSamothaA’ ChosobhoAn Eam" +
- "anMayotteAfraga a DeasSàimbiaAn t-SìombabRoinn-dùthcha neo-aithnicht" +
- "eAn SaoghalAfragaAimeireaga a TuathAimeireaga a DeasRoinn a’ Chuain " +
- "SèimhAfraga an IarMeadhan AimeireagaAfraga an EarAfraga a TuathMeadh" +
- "an AfragaCeann a Deas AfragaAn Dà AimeireagaCeann a Tuath Aimeireaga" +
- "Am Muir CaraibeachÀisia an EarÀisia a DeasÀisia an Ear-dheasAn Roinn" +
- "-Eòrpa a DeasAstràilia is Sealainn NuadhNa h-Eileanan DubhaRoinn nam" +
- " Meanbh-EileananPoilinèisÀisiaMeadhan ÀisiaÀisia an IarAn Roinn-Eòrp" +
- "aAn Roinn-Eòrpa an EarAn Roinn-Eòrpa a TuathAn Roinn-Eòrpa an IarAim" +
- "eireaga Laidinneach",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0017, 0x001e, 0x003e, 0x004a, 0x005e, 0x0066, 0x006f,
- 0x0078, 0x009b, 0x00a2, 0x00ae, 0x00ba, 0x00d1, 0x00da, 0x00e4,
- 0x00ea, 0x00fe, 0x010a, 0x0122, 0x012a, 0x0134, 0x013f, 0x014d,
- 0x015a, 0x0162, 0x016c, 0x0172, 0x0183, 0x018c, 0x0195, 0x019e,
- 0x01b9, 0x01c0, 0x01d6, 0x01dc, 0x01e9, 0x01f1, 0x0200, 0x020d,
- 0x0213, 0x0230, 0x0240, 0x0257, 0x0270, 0x027b, 0x028b, 0x0298,
- 0x02a1, 0x02a8, 0x02b1, 0x02ba, 0x02cb, 0x02d7, 0x02dc, 0x02e9,
- 0x02f1, 0x0302, 0x030a, 0x031b, 0x032a, 0x0336, 0x0341, 0x034d,
- // Entry 40 - 7F
- 0x0357, 0x0373, 0x037b, 0x038d, 0x0395, 0x039f, 0x03a9, 0x03b7,
- 0x03bd, 0x03c7, 0x03cf, 0x03e3, 0x03f0, 0x03f5, 0x040e, 0x0420,
- 0x0433, 0x043d, 0x0442, 0x0459, 0x0462, 0x0472, 0x0487, 0x0492,
- 0x0497, 0x04a1, 0x04b0, 0x04bd, 0x04c1, 0x04c9, 0x04e0, 0x04eb,
- 0x051b, 0x0524, 0x0528, 0x0532, 0x053c, 0x0552, 0x0571, 0x057a,
- 0x0589, 0x0590, 0x0599, 0x05b0, 0x05bf, 0x05c6, 0x05cd, 0x05dc,
- 0x05eb, 0x0613, 0x0619, 0x061f, 0x062a, 0x0634, 0x063e, 0x0646,
- 0x064d, 0x0658, 0x065e, 0x0669, 0x0672, 0x067a, 0x0681, 0x069b,
- // Entry 80 - BF
- 0x06aa, 0x06b8, 0x06c1, 0x06d6, 0x06e1, 0x06e8, 0x06f0, 0x06fd,
- 0x0709, 0x0712, 0x0719, 0x0720, 0x072b, 0x0735, 0x073f, 0x0744,
- 0x074a, 0x0750, 0x075e, 0x0770, 0x077f, 0x0789, 0x079b, 0x07a8,
- 0x07ae, 0x07b6, 0x07ca, 0x07df, 0x07ff, 0x0808, 0x0813, 0x081c,
- 0x0821, 0x0839, 0x0851, 0x085b, 0x0863, 0x086d, 0x0877, 0x0880,
- 0x088f, 0x0896, 0x08a4, 0x08ad, 0x08b7, 0x08c7, 0x08d4, 0x08db,
- 0x08e1, 0x08e5, 0x08f3, 0x08f8, 0x08fe, 0x0904, 0x0919, 0x092e,
- 0x0947, 0x0950, 0x095e, 0x0978, 0x0990, 0x099c, 0x09b8, 0x09c7,
- // Entry C0 - FF
- 0x09cd, 0x09d7, 0x09dc, 0x09fe, 0x0a06, 0x0a0f, 0x0a1a, 0x0a21,
- 0x0a29, 0x0a3b, 0x0a4c, 0x0a63, 0x0a69, 0x0a73, 0x0a7d, 0x0a90,
- 0x0a9e, 0x0ab5, 0x0ac2, 0x0ad2, 0x0adc, 0x0ae4, 0x0aed, 0x0af4,
- 0x0b01, 0x0b1a, 0x0b26, 0x0b32, 0x0b3a, 0x0b50, 0x0b60, 0x0b7f,
- 0x0b89, 0x0ba6, 0x0baa, 0x0bbe, 0x0bcb, 0x0bd2, 0x0bdd, 0x0bea,
- 0x0bf2, 0x0bf7, 0x0bff, 0x0c13, 0x0c1a, 0x0c25, 0x0c2e, 0x0c38,
- 0x0c3e, 0x0c5e, 0x0c74, 0x0c7d, 0x0c88, 0x0c9c, 0x0cc4, 0x0cd4,
- 0x0cf5, 0x0d17, 0x0d20, 0x0d27, 0x0d39, 0x0d40, 0x0d4d, 0x0d55,
- // Entry 100 - 13F
- 0x0d5c, 0x0d69, 0x0d71, 0x0d7e, 0x0d9b, 0x0da5, 0x0dab, 0x0dbd,
- 0x0dce, 0x0de6, 0x0df3, 0x0e05, 0x0e12, 0x0e20, 0x0e2e, 0x0e41,
- 0x0e52, 0x0e6a, 0x0e7c, 0x0e89, 0x0e96, 0x0ea9, 0x0ebf, 0x0edb,
- 0x0eee, 0x0f07, 0x0f11, 0x0f17, 0x0f25, 0x0f32, 0x0f41, 0x0f57,
- 0x0f6e, 0x0f84, 0x0f9a,
- },
- },
- { // gl
- "Illa de AscensiónAndorraEmiratos Árabes UnidosAfganistánAntiga e Barbuda" +
- "AnguilaAlbaniaArmeniaAntillas HolandesasAngolaAntártidaArxentinaSamo" +
- "a AmericanaAustriaAustraliaArubaIllas AlandAcerbaixánBosnia e Herceg" +
- "ovinaBarbadosBangladeshBélxicaBurkina FasoBulgariaBahreinBurundiBeni" +
- "nSan BartoloméBermudasBruneiBoliviaCaribe neerlandésBrasilBahamasBut" +
- "ánIlla BouvetBotsuanaBielorrusiaBeliceCanadáIllas Cocos (Keeling)Re" +
- "pública Democrática do CongoRepública CentroafricanaCongoSuízaCosta " +
- "de MarfilIllas CookChileCamerúnChinaColombiaIlla ClippertonCosta Ric" +
- "aCubaCabo VerdeCuraçaoIlla ChristmasChipreRepública ChecaAlemañaDieg" +
- "o GarcíaDjibutiDinamarcaDominicaRepública DominicanaArxeliaCeuta e M" +
- "elillaEcuadorEstoniaExiptoSáhara OccidentalEritreaEspañaEtiopíaUnión" +
- " EuropeaFinlandiaFixiIllas MalvinasMicronesiaIllas FeroeFranciaGabón" +
- "Reino UnidoGranadaXeorxiaGüiana FrancesaGuernseyGanaXibraltarGrenlan" +
- "diaGambiaGuineaGuadalupeGuinea EcuatorialGreciaXeorxia do Sur e Illa" +
- "s SandwichGuatemalaGuamGuinea-BissauGüianaHong Kong RAE de ChinaIlla" +
- " Heard e Illas McDonaldHondurasCroaciaHaitíHungríaIllas CanariasIndo" +
- "nesiaIrlandaIsraelIlla de ManIndiaTerritorio Británico do Océano Índ" +
- "icoIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKenyaQuirguicistá" +
- "nCambodiaKiribatiComoresSan Cristovo e NevisCorea do NorteCorea do S" +
- "urKuwaitIllas CaimánKazakhstanLaosLíbanoSanta LucíaLiechtensteinSri " +
- "LankaLiberiaLesothoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldo" +
- "vaMontenegroSan MartiñoMadagascarIllas MarshallMacedoniaMaliMyanmar " +
- "(Birmania)MongoliaMacau RAE de ChinaIllas Marianas do norteMartinica" +
- "MauritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalaisiaMozambi" +
- "queNamibiaNova CaledoniaNíxerIlla NorfolkNixeriaNicaraguaPaíses Baix" +
- "osNoruegaNepalNauruNiueNova CelandiaOmánPanamáPerúPolinesia Francesa" +
- "Papúa Nova GuineaFilipinasPaquistánPoloniaSan Pedro e MiguelónIllas " +
- "PitcairnPorto RicoTerritorios palestinosPortugalPalauParaguaiQatarOc" +
- "eanía DistanteReuniónRomaníaSerbiaRusiaRuandaArabia SauditaIllas Sal" +
- "omónSeixelesSudánSueciaSingapurSanta HelenaEsloveniaSvalbard e Jan M" +
- "ayenEslovaquiaSerra LeoaSan MarinoSenegalSomaliaSurinamSudán do surS" +
- "an Tomé e PríncipeEl SalvadorSint MaartenSiriaSuacilandiaTristán da " +
- "CunhaIllas Turks e CaicosChadTerritorios Franceses do SulTogoTailand" +
- "iaTaxiquistánTokelauTimor LesteTurkmenistánTunisiaTongaTurquíaTrinda" +
- "de e TobagoTuvaluTaiwánTanzaniaUcraínaUgandaIllas Menores Distantes " +
- "dos EUA.Estados Unidos de AméricaUruguaiUzbekistánCidade do Vaticano" +
- "San Vicente e GranadinasVenezuelaIllas Virxes BritánicasIllas Virxes" +
- " EstadounidensesVietnamVanuatuWallis e FutunaSamoaKosovoIemenMayotte" +
- "SudáfricaZambiaCimbabueRexión descoñecidaMundoÁfricaNorteaméricaSuda" +
- "méricaOceaníaÁfrica OccidentalAmérica CentralÁfrica OrientalÁfrica S" +
- "eptentrionalÁfrica CentralÁfrica MeridionalAméricaAmérica do NorteCa" +
- "ribeAsia OrientalSul de AsiaSureste AsiáticoEuropa MeridionalAustral" +
- "asiaMelanesiaRexión da MicronesiaPolinesiaAsiaAsia CentralAsia Occid" +
- "entalEuropaEuropa do LesteEuropa SeptentrionalEuropa OccidentalAméri" +
- "ca Latina",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0019, 0x0030, 0x003b, 0x004b, 0x0052, 0x0059,
- 0x0060, 0x0073, 0x0079, 0x0083, 0x008c, 0x009b, 0x00a2, 0x00ab,
- 0x00b0, 0x00bb, 0x00c6, 0x00da, 0x00e2, 0x00ec, 0x00f4, 0x0100,
- 0x0108, 0x010f, 0x0116, 0x011b, 0x0129, 0x0131, 0x0137, 0x013e,
- 0x0150, 0x0156, 0x015d, 0x0163, 0x016e, 0x0176, 0x0181, 0x0187,
- 0x018e, 0x01a3, 0x01c3, 0x01dc, 0x01e1, 0x01e7, 0x01f6, 0x0200,
- 0x0205, 0x020d, 0x0212, 0x021a, 0x0229, 0x0233, 0x0237, 0x0241,
- 0x0249, 0x0257, 0x025d, 0x026d, 0x0275, 0x0282, 0x0289, 0x0292,
- // Entry 40 - 7F
- 0x029a, 0x02af, 0x02b6, 0x02c5, 0x02cc, 0x02d3, 0x02d9, 0x02eb,
- 0x02f2, 0x02f9, 0x0301, 0x030f, 0x0318, 0x031c, 0x032a, 0x0334,
- 0x033f, 0x0346, 0x034c, 0x0357, 0x035e, 0x0365, 0x0375, 0x037d,
- 0x0381, 0x038a, 0x0394, 0x039a, 0x03a0, 0x03a9, 0x03ba, 0x03c0,
- 0x03df, 0x03e8, 0x03ec, 0x03f9, 0x0400, 0x0416, 0x0431, 0x0439,
- 0x0440, 0x0446, 0x044e, 0x045c, 0x0465, 0x046c, 0x0472, 0x047d,
- 0x0482, 0x04aa, 0x04ae, 0x04b3, 0x04bb, 0x04c1, 0x04c7, 0x04ce,
- 0x04d6, 0x04dc, 0x04e1, 0x04ef, 0x04f7, 0x04ff, 0x0506, 0x051a,
- // Entry 80 - BF
- 0x0528, 0x0534, 0x053a, 0x0547, 0x0551, 0x0555, 0x055c, 0x0568,
- 0x0575, 0x057e, 0x0585, 0x058c, 0x0594, 0x059e, 0x05a5, 0x05aa,
- 0x05b2, 0x05b9, 0x05c0, 0x05ca, 0x05d6, 0x05e0, 0x05ee, 0x05f7,
- 0x05fb, 0x060d, 0x0615, 0x0627, 0x063e, 0x0647, 0x0651, 0x065b,
- 0x0660, 0x0668, 0x0670, 0x0676, 0x067d, 0x0685, 0x068f, 0x0696,
- 0x06a4, 0x06aa, 0x06b6, 0x06bd, 0x06c6, 0x06d4, 0x06db, 0x06e0,
- 0x06e5, 0x06e9, 0x06f6, 0x06fb, 0x0702, 0x0707, 0x0719, 0x072b,
- 0x0734, 0x073e, 0x0745, 0x075a, 0x0768, 0x0772, 0x0788, 0x0790,
- // Entry C0 - FF
- 0x0795, 0x079d, 0x07a2, 0x07b3, 0x07bb, 0x07c3, 0x07c9, 0x07ce,
- 0x07d4, 0x07e2, 0x07f0, 0x07f8, 0x07fe, 0x0804, 0x080c, 0x0818,
- 0x0821, 0x0835, 0x083f, 0x0849, 0x0853, 0x085a, 0x0861, 0x0868,
- 0x0875, 0x088a, 0x0895, 0x08a1, 0x08a6, 0x08b1, 0x08c2, 0x08d6,
- 0x08da, 0x08f6, 0x08fa, 0x0903, 0x090f, 0x0916, 0x0921, 0x092e,
- 0x0935, 0x093a, 0x0942, 0x0953, 0x0959, 0x0960, 0x0968, 0x0970,
- 0x0976, 0x0996, 0x09b0, 0x09b7, 0x09c2, 0x09d4, 0x09ec, 0x09f5,
- 0x0a0d, 0x0a29, 0x0a30, 0x0a37, 0x0a46, 0x0a4b, 0x0a51, 0x0a56,
- // Entry 100 - 13F
- 0x0a5d, 0x0a67, 0x0a6d, 0x0a75, 0x0a89, 0x0a8e, 0x0a95, 0x0aa2,
- 0x0aad, 0x0ab5, 0x0ac7, 0x0ad7, 0x0ae7, 0x0afc, 0x0b0b, 0x0b1d,
- 0x0b25, 0x0b36, 0x0b3c, 0x0b49, 0x0b54, 0x0b65, 0x0b76, 0x0b81,
- 0x0b8a, 0x0b9f, 0x0ba8, 0x0bac, 0x0bb8, 0x0bc7, 0x0bcd, 0x0bdc,
- 0x0bf0, 0x0c01, 0x0c10,
- },
- },
- { // gsw
- "AndorraVeräinigti Arabischi EmirateAfganischtanAntigua und BarbudaAnguil" +
- "laAlbaanieArmeenieNiderländischi AntilleAngoolaAntarktisArgentiinieA" +
- "merikaanisch-SamoaÖöschtriichAuschtraalieArubaAaland-InsleAserbäidsc" +
- "hanBosnie und HerzegowinaBarbadosBangladeschBelgieBurkina FaasoBulga" +
- "arieBachräinBurundiBeninSt. BarthelemiBermuudaBrunäi TarussalamBolii" +
- "vieBrasilieBahaamasBhutanBouvet-InsleBotswanaWiissrusslandBelizeKana" +
- "daKokos-InsleTemokraatischi Republik KongoZentraalafrikaanischi Repu" +
- "blikKongoSchwiizElfebäiküschteCook-InsleTschileKamerunChiinaKolumbie" +
- "Coschta RicaKubaKap VerdeWienachts-InsleZypereTschechischi RepublikT" +
- "üütschlandTschibuutiTänemarkTominicaTominikaanischi RepublikAlgeeri" +
- "eEcuadorEestlandÄgüpteWeschtsaharaÄritreeaSchpanieÄthiopieEuropääisc" +
- "hi UnioonFinnlandFitschiFalkland-InsleMikroneesieFäröerFrankriichGab" +
- "unVeräinigts ChönigriichGrenadaGeoorgieFranzösisch-GuäjaanaGäärnsiGa" +
- "anaGibraltarGröönlandGambiaGineeaGuadälupÄquatoriaalgineeaGriechelan" +
- "dSüüdgeorgie und d’süüdlichi Sändwitsch-InsleGuatemaalaGuamGineea-Bi" +
- "ssauGuäjaanaSonderverwaltigszone HongkongHöörd- und MäcDonald-InsleH" +
- "ondurasKroaazieHaitiUngarnIndoneesieIrlandIsraelInsle vo MänIndieBri" +
- "tischs Territoorium im Indische OozeanIraakIraanIislandItaalieDschör" +
- "siDschamäikaJordaanieJapanKeeniaKirgiisischtanKambodschaKiribaatiKom" +
- "ooreSt. Kitts und NiuwisDemokraatischi Volksrepublik KoreeaRepublik " +
- "KoreeaKuwäitKäimän-InsleKasachschtanLaaosLibanonSt. LutschiiaLiächte" +
- "schtäiSchri LankaLibeeriaLesootoLittaueLuxemburgLettlandLüübieMarokk" +
- "oMonacoRepublik MoldauMonteneegroSt. MartinMadagaschkarMarshallinsle" +
- "MazedoonieMaaliMyanmar (Burma)MongoleiSonderverwaltigszone MacaoNörd" +
- "lichi MariaaneMartiniggMauretaanieMoosörratMaltaMauriiziusMalediiweM" +
- "alaawiMexikoMaläisiaMosambikNamiibiaNöikaledoonieNigerNorfolk-InsleN" +
- "igeeriaNicaraaguaHollandNorweegeNeepalNauruNiueNöiseelandOmaanPanama" +
- "PeruFranzösisch-PolineesiePapua-NeuguineaPhilippiinePakischtanPooleS" +
- "t. Pierr und MiggeloPitggäärnPuerto RiggoPaläschtinänsischi GebietPo" +
- "rtugalPalauParaguaiGgatarÜssers OzeaanieReünioonRumäänieSärbieRussla" +
- "ndRuandaSaudi-AraabieSalomooneSeischälleSudanSchweedeSingapuurSt. He" +
- "lenaSloweenieSvalbard und Jaan MääieSlowakäiSierra LeooneSan Mariino" +
- "SenegalSomaalieSurinamSao Tome und PrinssipeEl SalvadorSüürieSwasila" +
- "ndTörks- und Gaiggos-InsleTschadFranzösischi Süüd- und Antarktisgebi" +
- "etToogoThailandTadschikischtanTokelauOschttimorTurkmeenischtanTunees" +
- "ieTongaTürggeiTrinidad und TobaagoTuvaluTaiwanTansaniiaUkraiineUgand" +
- "aAmerikanisch-OzeaanieVeräinigti SchtaateUruguayUschbeekischtanVatik" +
- "anstadtSt. Vincent und d’GrönadiineVenezueelaBritischi Jungfere-Insl" +
- "eAmerikaanischi Jungfere-InsleWietnamWanuatuWallis und FutuunaSamooa" +
- "JeemeMajottSüüdafrikaSambiaSimbabweUnbekannti oder ungültigi Regioon" +
- "WältAfrikaNordameerikaSüüdameerikaOzeaanieWeschtafrikaMittelameerika" +
- "OschtafrikaNordafrikaZentraalafrikaSüüdlichs AfrikaNord-, Mittel- un" +
- "d SüüdameerikaNördlichs AmeerikaKaribikOschtaasieSüüdaasieSüüdoschta" +
- "asieSüüdeuropaAuschtraalie und NöiseelandMelaneesieMikroneesischs In" +
- "selgebietPolineesieAasieZentraalaasieWeschtaasieEuroopaOschteuroopaN" +
- "ordeuroopaWeschteuroopaLatiinameerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0024, 0x0030, 0x0043, 0x004b, 0x0053,
- 0x005b, 0x0072, 0x0079, 0x0082, 0x008d, 0x00a0, 0x00ad, 0x00b9,
- 0x00be, 0x00ca, 0x00d8, 0x00ee, 0x00f6, 0x0101, 0x0107, 0x0114,
- 0x011d, 0x0126, 0x012d, 0x0132, 0x0140, 0x0148, 0x015a, 0x0162,
- 0x0162, 0x016a, 0x0172, 0x0178, 0x0184, 0x018c, 0x0199, 0x019f,
- 0x01a5, 0x01b0, 0x01cd, 0x01eb, 0x01f0, 0x01f7, 0x0207, 0x0211,
- 0x0218, 0x021f, 0x0225, 0x022d, 0x022d, 0x0239, 0x023d, 0x0246,
- 0x0246, 0x0255, 0x025b, 0x0270, 0x027d, 0x027d, 0x0287, 0x0290,
- // Entry 40 - 7F
- 0x0298, 0x02b0, 0x02b8, 0x02b8, 0x02bf, 0x02c7, 0x02cf, 0x02db,
- 0x02e4, 0x02ec, 0x02f5, 0x030a, 0x0312, 0x0319, 0x0327, 0x0332,
- 0x033a, 0x0344, 0x0349, 0x0361, 0x0368, 0x0370, 0x0386, 0x038f,
- 0x0394, 0x039d, 0x03a8, 0x03ae, 0x03b4, 0x03bd, 0x03cf, 0x03da,
- 0x040d, 0x0417, 0x041b, 0x0428, 0x0431, 0x044e, 0x046b, 0x0473,
- 0x047b, 0x0480, 0x0486, 0x0486, 0x0490, 0x0496, 0x049c, 0x04a9,
- 0x04ae, 0x04d7, 0x04dc, 0x04e1, 0x04e8, 0x04ef, 0x04f8, 0x0503,
- 0x050c, 0x0511, 0x0517, 0x0525, 0x052f, 0x0538, 0x053f, 0x0553,
- // Entry 80 - BF
- 0x0576, 0x0585, 0x058c, 0x059a, 0x05a6, 0x05ab, 0x05b2, 0x05bf,
- 0x05ce, 0x05d9, 0x05e1, 0x05e8, 0x05ef, 0x05f8, 0x0600, 0x0608,
- 0x060f, 0x0615, 0x0624, 0x062f, 0x0639, 0x0645, 0x0652, 0x065c,
- 0x0661, 0x0670, 0x0678, 0x0692, 0x06a5, 0x06ae, 0x06b9, 0x06c3,
- 0x06c8, 0x06d2, 0x06db, 0x06e2, 0x06e8, 0x06f1, 0x06f9, 0x0701,
- 0x070f, 0x0714, 0x0721, 0x0729, 0x0733, 0x073a, 0x0742, 0x0748,
- 0x074d, 0x0751, 0x075c, 0x0761, 0x0767, 0x076b, 0x0782, 0x0791,
- 0x079c, 0x07a6, 0x07ab, 0x07c0, 0x07cb, 0x07d7, 0x07f2, 0x07fa,
- // Entry C0 - FF
- 0x07ff, 0x0807, 0x080d, 0x081d, 0x0826, 0x0830, 0x0837, 0x083f,
- 0x0845, 0x0852, 0x085b, 0x0866, 0x086b, 0x0873, 0x087c, 0x0886,
- 0x088f, 0x08a8, 0x08b1, 0x08be, 0x08c9, 0x08d0, 0x08d8, 0x08df,
- 0x08df, 0x08f5, 0x0900, 0x0900, 0x0908, 0x0911, 0x0911, 0x092a,
- 0x0930, 0x0959, 0x095e, 0x0966, 0x0975, 0x097c, 0x0986, 0x0995,
- 0x099d, 0x09a2, 0x09aa, 0x09be, 0x09c4, 0x09ca, 0x09d3, 0x09db,
- 0x09e1, 0x09f6, 0x0a0a, 0x0a11, 0x0a20, 0x0a2c, 0x0a4b, 0x0a55,
- 0x0a6d, 0x0a8a, 0x0a91, 0x0a98, 0x0aaa, 0x0ab0, 0x0ab0, 0x0ab5,
- // Entry 100 - 13F
- 0x0abb, 0x0ac7, 0x0acd, 0x0ad5, 0x0af7, 0x0afc, 0x0b02, 0x0b0e,
- 0x0b1c, 0x0b24, 0x0b30, 0x0b3e, 0x0b49, 0x0b53, 0x0b61, 0x0b73,
- 0x0b94, 0x0ba7, 0x0bae, 0x0bb8, 0x0bc3, 0x0bd3, 0x0bdf, 0x0bfb,
- 0x0c05, 0x0c1f, 0x0c29, 0x0c2e, 0x0c3b, 0x0c46, 0x0c4d, 0x0c59,
- 0x0c64, 0x0c71, 0x0c7f,
- },
- },
- { // gu
- guRegionStr,
- guRegionIdx,
- },
- { // guz
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // gv
- "Rywvaneth UnysEllan Vannin",
- []uint16{ // 112 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001a,
- },
- },
- { // ha
- "AndoraHaɗaɗɗiyar Daular LarabawaAfaganistanAntigwa da BarbubaAngilaAlban" +
- "iyaArmeniyaAntiya Na HolanAngolaArjantiniyaSamowa Ta AmurkaOstiriyaO" +
- "stareliyaArubaAzarbaijanBosniya HarzagobinaBarbadasBangiladasBelgiyo" +
- "mBurkina FasoBulgariyaBaharanBurundiBininBarmudaBuruneBolibiyaBirazi" +
- "lBahamasButanBaswanaBelarusBelizKanadaJamhuriyar Dimokuraɗiyyar Kong" +
- "oJamhuriyar Afirka Ta TsakiyaKongoSuwizalanAibari KwasTsibiran KukuC" +
- "ayileKamaruCaina, SinKolambiyaKwasta RikaKyubaTsibiran Kap BardeSifu" +
- "rusJamhuriyar CakJamusJibutiDanmarkDominikaJamhuriyar DominikaAljeri" +
- "yaEkwadorEstoniyaMasar, MisiraEritireyaSipenHabashaFinlanFijiTsibira" +
- "n FalkilanMikuronesiyaFaransaGabonBirtaniyaGirnadaJiwarjiyaGini Ta F" +
- "aransaGanaJibaraltarGrinlanGambiyaGiniGwadalufGini Ta IkwaitaGirkaGw" +
- "atamalaGwamGini BisauGuyanaHondurasKurowaishiyaHaitiHungariIndunusiy" +
- "aAyalanIziraʼilaIndiyaYankin Birtaniya Na Tekun IndiyaIraƙiIranAisal" +
- "anItaliyaJamaikaJordanJapanKenyaKirgizistanKambodiyaKiribatiKwamoras" +
- "San Kiti Da NebisKoreya Ta ArewaKoreya Ta KuduKwiyatTsibiran KaimanK" +
- "azakistanLawasLabananSan LusiyaLicansitanSiri LankaLaberiyaLesotoLit" +
- "uweniyaLukusamburlatibiyaLibiyaMarokoMonakoMaldobaMadagaskarTsibiran" +
- " MarshalMasedoniyaMaliBurma, MiyamarMangoliyaTsibiran Mariyana Na Ar" +
- "ewaMartinikMoritaniyaManseratiMaltaMoritusMaldibiMalawiMakasikoMalai" +
- "siyaMozambikNamibiyaKaledoniya SabuwaNijarTsibirin NarfalkNajeriyaNi" +
- "karaguwaHolanNorweNefalNauruNiyuNuzilanOmanPanamaPeruFolinesiya Ta F" +
- "aransaPapuwa NuginiFilipinPakistanPolanSan Piyar Da MikelanPitakarin" +
- "Porto RikoPalasɗinuPortugalPalauParagaiKwatarRawuniyanRomaniyaRashaR" +
- "uwandaƘasar MakkaTsibiran SalamanSaishalSudanSuwedanSingapurSan Hele" +
- "naSulobeniyaSulobakiyaSalewoSan MarinoSinigalSomaliyaSurinameSawo To" +
- "me Da ParansipEl SalbadorSham, SiriyaSuwazilanTurkis Da Tsibiran Kai" +
- "kwasCadiTogoTailanTajikistanTakelauTimor Ta GabasTurkumenistanTunisi" +
- "yaTangaTurkiyyaTirinidad Da TobagoTubaluTaiwanTanzaniyaYukaranYugand" +
- "aAmurkaYurugaiUzubekistanBatikanSan Binsan Da GirnadinBenezuwelaTsib" +
- "irin Birjin Na BirtaniyaTsibiran Birjin Ta AmurkaBiyetinamBanuwatuWa" +
- "lis Da FutunaSamowaYamalMayotiAfirka Ta KuduZambiyaZimbabuwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0023, 0x002e, 0x0040, 0x0046, 0x004e,
- 0x0056, 0x0065, 0x006b, 0x006b, 0x0076, 0x0086, 0x008e, 0x0098,
- 0x009d, 0x009d, 0x00a7, 0x00ba, 0x00c2, 0x00cc, 0x00d4, 0x00e0,
- 0x00e9, 0x00f0, 0x00f7, 0x00fc, 0x00fc, 0x0103, 0x0109, 0x0111,
- 0x0111, 0x0118, 0x011f, 0x0124, 0x0124, 0x012b, 0x0132, 0x0137,
- 0x013d, 0x013d, 0x015d, 0x0179, 0x017e, 0x0187, 0x0192, 0x019f,
- 0x01a5, 0x01ab, 0x01b5, 0x01be, 0x01be, 0x01c9, 0x01ce, 0x01e0,
- 0x01e0, 0x01e0, 0x01e7, 0x01f5, 0x01fa, 0x01fa, 0x0200, 0x0207,
- // Entry 40 - 7F
- 0x020f, 0x0222, 0x022a, 0x022a, 0x0231, 0x0239, 0x0246, 0x0246,
- 0x024f, 0x0254, 0x025b, 0x025b, 0x0261, 0x0265, 0x0276, 0x0282,
- 0x0282, 0x0289, 0x028e, 0x0297, 0x029e, 0x02a7, 0x02b6, 0x02b6,
- 0x02ba, 0x02c4, 0x02cb, 0x02d2, 0x02d6, 0x02de, 0x02ed, 0x02f2,
- 0x02f2, 0x02fb, 0x02ff, 0x0309, 0x030f, 0x030f, 0x030f, 0x0317,
- 0x0323, 0x0328, 0x032f, 0x032f, 0x0339, 0x033f, 0x0349, 0x0349,
- 0x034f, 0x036f, 0x0375, 0x0379, 0x0380, 0x0387, 0x0387, 0x038e,
- 0x0394, 0x0399, 0x039e, 0x03a9, 0x03b2, 0x03ba, 0x03c2, 0x03d3,
- // Entry 80 - BF
- 0x03e2, 0x03f0, 0x03f6, 0x0405, 0x040f, 0x0414, 0x041b, 0x0425,
- 0x042f, 0x0439, 0x0441, 0x0447, 0x0451, 0x045b, 0x0463, 0x0469,
- 0x046f, 0x0475, 0x047c, 0x047c, 0x047c, 0x0486, 0x0496, 0x04a0,
- 0x04a4, 0x04b2, 0x04bb, 0x04bb, 0x04d5, 0x04dd, 0x04e7, 0x04f0,
- 0x04f5, 0x04fc, 0x0503, 0x0509, 0x0511, 0x051a, 0x0522, 0x052a,
- 0x053b, 0x0540, 0x0550, 0x0558, 0x0562, 0x0567, 0x056c, 0x0571,
- 0x0576, 0x057a, 0x0581, 0x0585, 0x058b, 0x058f, 0x05a4, 0x05b1,
- 0x05b8, 0x05c0, 0x05c5, 0x05d9, 0x05e2, 0x05ec, 0x05f6, 0x05fe,
- // Entry C0 - FF
- 0x0603, 0x060a, 0x0610, 0x0610, 0x0619, 0x0621, 0x0621, 0x0626,
- 0x062d, 0x0639, 0x0649, 0x0650, 0x0655, 0x065c, 0x0664, 0x066e,
- 0x0678, 0x0678, 0x0682, 0x0688, 0x0692, 0x0699, 0x06a1, 0x06a9,
- 0x06a9, 0x06be, 0x06c9, 0x06c9, 0x06d5, 0x06de, 0x06de, 0x06f8,
- 0x06fc, 0x06fc, 0x0700, 0x0706, 0x0710, 0x0717, 0x0725, 0x0732,
- 0x073a, 0x073f, 0x0747, 0x075a, 0x0760, 0x0766, 0x076f, 0x0776,
- 0x077d, 0x077d, 0x0783, 0x078a, 0x0795, 0x079c, 0x07b2, 0x07bc,
- 0x07d8, 0x07f1, 0x07fa, 0x0802, 0x0811, 0x0817, 0x0817, 0x081c,
- // Entry 100 - 13F
- 0x0822, 0x0830, 0x0837, 0x0840,
- },
- },
- { // haw
- "NūhōlaniKanakāKinaKelemāniaKenemakaKepaniaPalaniAupuni Mōʻī Hui Pū ʻIaHe" +
- "leneʻIlelaniʻIseraʻelaʻĪniaʻĪkāliaIāpanaMekikoHōlaniAotearoaʻĀina Pi" +
- "lipinoLūkiaʻAmelika Hui Pū ʻIa",
- []uint16{ // 243 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x001f, 0x001f, 0x0027,
- // Entry 40 - 7F
- 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
- 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
- 0x002e, 0x0034, 0x0034, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
- 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x0055,
- 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
- 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x006a, 0x006a,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
- // Entry 80 - BF
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
- 0x0082, 0x0082, 0x0082, 0x0082, 0x0088, 0x0088, 0x0088, 0x0088,
- 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
- 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
- // Entry C0 - FF
- 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
- 0x00ad, 0x00ad, 0x00c3,
- },
- },
- { // he
- heRegionStr,
- heRegionIdx,
- },
- { // hi
- hiRegionStr,
- hiRegionIdx,
- },
- { // hr
- hrRegionStr,
- hrRegionIdx,
- },
- { // hsb
- "AscensionAndorraZjednoćene arabske emiratyAfghanistanAntigua a BarbudaAn" +
- "guillaAlbanskaArmenskaAngolaAntarktikaArgentinskaAmeriska SamoaAwstr" +
- "iskaAwstralskaArubaÅlandAzerbajdźanBosniska a HercegowinaBarbadosBan" +
- "gladešBelgiskaBurkina FasoBołharskaBahrainBurundiBeninSt. Barthélemy" +
- "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" +
- "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" +
- "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" +
- "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" +
- "ap VerdeCuraçaoHodowna kupaCypernČěska republikaNěmskaDiego GarciaDź" +
- "ibutiDanskaDominikaDominikanska republikaAlgeriskaCeuta a MelillaEkw" +
- "adorEstiskaEgyptowskaZapadna SaharaEritrejaŠpaniskaEtiopiskaEuropska" +
- " unijaFinskaFidźiFalklandske kupyMikroneziskaFäröske kupyFrancoskaGa" +
- "bunZjednoćene kralestwoGrenadaGeorgiskaFrancoska GuyanaGuernseyGhana" +
- "GibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGrjeks" +
- "kaJužna Georgiska a Južne Sandwichowe kupyGuatemalaGuamGineja-Bissau" +
- "GuyanaWosebita zarjadniska cona HongkongHeardowa kupa a McDonaldowe " +
- "kupyHondurasChorwatskaHaitiMadźarskaKanariske kupyIndoneskaIrskaIsra" +
- "elManIndiskaBritiski teritorij w Indiskim oceanjeIrakIranIslandskaIt" +
- "alskaJerseyJamaikaJordaniskaJapanskaKenijaKirgizistanKambodźaKiribat" +
- "iKomorySt. Kitts a NevisSewjerna KorejaJužna KorejaKuwaitKajmanske k" +
- "upyKazachstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberijaLesot" +
- "hoLitawskaLuxemburgskaLetiskaLibyskaMarokkoMonacoMoldawskaMontenegro" +
- "St. MartinMadagaskarMarshallowe kupyMakedonskaMaliMyanmarMongolskaWo" +
- "sebita zarjadniska cona MacaoSewjerne MarianyMartiniqueMawretanskaMo" +
- "ntserratMaltaMauritiusMalediwyMalawiMexikoMalajzijaMosambikNamibijaN" +
- "owa KaledoniskaNigerNorfolkowa kupaNigerijaNikaraguaNižozemskaNorweg" +
- "skaNepalNauruNiueNowoseelandskaOmanPanamaPeruFrancoska PolyneziskaPa" +
- "puwa-Nowa GinejaFilipinyPakistanPólskaSt. Pierre a MiquelonPitcairno" +
- "we kupyPuerto RicoPalestinski awtonomny teritorijPortugalskaPalauPar" +
- "aguayKatarWonkowna OceaniskaRéunionRumunskaSerbiskaRuskaRuandaSawdi-" +
- "ArabskaSalomonySeychelleSudanŠwedskaSingapurSt. HelenaSłowjenskaSval" +
- "bard a Jan MayenSłowakskaSierra LeoneSan MarinoSenegalSomalijaSurina" +
- "mJužny SudanSão Tomé a PríncipeEl SalvadorSint MaartenSyriskaSwazisk" +
- "aTristan da Cunhakupy Turks a CaicosČadFrancoski južny a antarktiski" +
- " teritorijTogoThailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTun" +
- "eziskaTongaTurkowskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUga" +
- "ndaAmeriska OceaniskaZjednoćene staty AmerikiUruguayUzbekistanVatika" +
- "nske městoSt. Vincent a GrenadinyVenezuelaBritiske knježniske kupyAm" +
- "eriske knježniske kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenM" +
- "ayotteJužna Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfri" +
- "kaSewjerna AmerikaJužna AmerikaOceaniskazapadna AfrikaSrjedźna Ameri" +
- "kawuchodna Afrikasewjerna Afrikasrjedźna Afrikajužna AfrikaAmerikase" +
- "wjerny ameriski kontinentKaribikawuchodna Azijajužna Azijajuhowuchod" +
- "na Azijajužna EuropaAwstralazijaMelaneziskaMikroneziska (kupowy regi" +
- "on)PolyneziskaAzijacentralna Azijazapadna AzijaEuropawuchodna Europa" +
- "sewjerna Europazapadna EuropaŁaćonska Amerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057,
- 0x005f, 0x005f, 0x0065, 0x006f, 0x007a, 0x0088, 0x0091, 0x009b,
- 0x00a0, 0x00a6, 0x00b2, 0x00c8, 0x00d0, 0x00da, 0x00e2, 0x00ee,
- 0x00f8, 0x00ff, 0x0106, 0x010b, 0x011a, 0x0121, 0x0127, 0x0130,
- 0x0145, 0x014e, 0x0154, 0x015a, 0x0168, 0x0170, 0x017b, 0x0181,
- 0x0187, 0x0194, 0x01a2, 0x01bc, 0x01cd, 0x01d7, 0x01e7, 0x01f3,
- 0x01fa, 0x0201, 0x0206, 0x0210, 0x0222, 0x022c, 0x0230, 0x0239,
- 0x0241, 0x024d, 0x0253, 0x0264, 0x026b, 0x0277, 0x027f, 0x0285,
- // Entry 40 - 7F
- 0x028d, 0x02a3, 0x02ac, 0x02bb, 0x02c2, 0x02c9, 0x02d3, 0x02e1,
- 0x02e9, 0x02f2, 0x02fb, 0x0309, 0x030f, 0x0315, 0x0325, 0x0331,
- 0x033f, 0x0348, 0x034d, 0x0362, 0x0369, 0x0372, 0x0382, 0x038a,
- 0x038f, 0x0398, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03ce, 0x03d6,
- 0x0400, 0x0409, 0x040d, 0x041a, 0x0420, 0x0442, 0x0462, 0x046a,
- 0x0474, 0x0479, 0x0483, 0x0491, 0x049a, 0x049f, 0x04a5, 0x04a8,
- 0x04af, 0x04d4, 0x04d8, 0x04dc, 0x04e5, 0x04ec, 0x04f2, 0x04f9,
- 0x0503, 0x050b, 0x0511, 0x051c, 0x0525, 0x052d, 0x0533, 0x0544,
- // Entry 80 - BF
- 0x0553, 0x0560, 0x0566, 0x0574, 0x057e, 0x0582, 0x0589, 0x0592,
- 0x059f, 0x05a8, 0x05b0, 0x05b7, 0x05bf, 0x05cb, 0x05d2, 0x05d9,
- 0x05e0, 0x05e6, 0x05ef, 0x05f9, 0x0603, 0x060d, 0x061d, 0x0627,
- 0x062b, 0x0632, 0x063b, 0x065a, 0x066a, 0x0674, 0x067f, 0x0689,
- 0x068e, 0x0697, 0x069f, 0x06a5, 0x06ab, 0x06b4, 0x06bc, 0x06c4,
- 0x06d4, 0x06d9, 0x06e8, 0x06f0, 0x06f9, 0x0704, 0x070d, 0x0712,
- 0x0717, 0x071b, 0x0729, 0x072d, 0x0733, 0x0737, 0x074c, 0x075e,
- 0x0766, 0x076e, 0x0775, 0x078a, 0x079a, 0x07a5, 0x07c4, 0x07cf,
- // Entry C0 - FF
- 0x07d4, 0x07dc, 0x07e1, 0x07f3, 0x07fb, 0x0803, 0x080b, 0x0810,
- 0x0816, 0x0823, 0x082b, 0x0834, 0x0839, 0x0841, 0x0849, 0x0853,
- 0x085e, 0x0872, 0x087c, 0x0888, 0x0892, 0x0899, 0x08a1, 0x08a8,
- 0x08b4, 0x08ca, 0x08d5, 0x08e1, 0x08e8, 0x08f0, 0x0900, 0x0913,
- 0x0917, 0x093f, 0x0943, 0x094e, 0x095a, 0x0961, 0x096c, 0x0977,
- 0x0980, 0x0985, 0x098e, 0x099f, 0x09a5, 0x09ab, 0x09b4, 0x09bb,
- 0x09c1, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0e, 0x0a25, 0x0a2e,
- 0x0a47, 0x0a60, 0x0a67, 0x0a6e, 0x0a7d, 0x0a82, 0x0a88, 0x0a8d,
- // Entry 100 - 13F
- 0x0a94, 0x0aad, 0x0ab4, 0x0abc, 0x0acb, 0x0ad0, 0x0ad6, 0x0ae6,
- 0x0af4, 0x0afd, 0x0b0b, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b4a, 0x0b57,
- 0x0b5e, 0x0b79, 0x0b81, 0x0b8f, 0x0b9b, 0x0bad, 0x0bba, 0x0bc6,
- 0x0bd1, 0x0bed, 0x0bf8, 0x0bfd, 0x0c0c, 0x0c19, 0x0c1f, 0x0c2e,
- 0x0c3d, 0x0c4b, 0x0c5d,
- },
- },
- { // hu
- huRegionStr,
- huRegionIdx,
- },
- { // hy
- hyRegionStr,
- hyRegionIdx,
- },
- { // id
- idRegionStr,
- idRegionIdx,
- },
- { // ig
- "BininBemudaChainaHatiComorosuLibyiaMaldivesaNigeria",
- []uint16{ // 172 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- // Entry 40 - 7F
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d,
- // Entry 80 - BF
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0023,
- 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
- 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
- 0x0023, 0x0023, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x0033,
- },
- },
- { // ii
- "ꀠꑭꍏꇩꄓꇩꃔꇩꑱꇩꑴꄗꑴꄊꆺꏝꀪꊉꇆꌦꂰꇩꃅꄷꅉꀋꐚꌠ",
- []uint16{ // 261 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012,
- // Entry 40 - 7F
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0018, 0x0018, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d,
- 0x002d, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- // Entry 80 - BF
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
- // Entry C0 - FF
- 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
- 0x003c, 0x003c, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
- // Entry 100 - 13F
- 0x0042, 0x0042, 0x0042, 0x0042, 0x0054,
- },
- },
- { // is
- isRegionStr,
- isRegionIdx,
- },
- { // it
- itRegionStr,
- itRegionIdx,
- },
- { // ja
- jaRegionStr,
- jaRegionIdx,
- },
- { // jgo
- "Aŋgɔ́laAjɛntînMbulukína FásɔMbulundíMbɛnɛ̂ŋMbɔlivîMbɛlazîlMbɔtswánaKanad" +
- "âKɔ́ŋgɔ-KinshásaKɔ́ŋgɔ-MbɛlazavîlSẅísɛKɔ́t NdivwâCíllɛKamɛlûnShînKɔ" +
- "llɔmbîKúbaNjámanNjimbútiAljɛlîƐkwandɔ̂ƐjíptɛƐlitɛlɛ́yaƐspániyaƐtiyɔp" +
- "îFɛlánciŊgabɔ̂ŋŊgánaŊgambîŊginɛ̂Ŋginɛ̂ ƐkwatɔliyâlŊgɛlɛ̂kŊginɛ̂ Mbi" +
- "sáwuIslayɛ̂lÁndɛIlâkItalîJapɔ̂nKɛ́nyaKɔmɔ́lɔshiLibɛrîLɛsɔ́tɔLibîMɔlɔ" +
- "̂kMándaŋgasɛkâMalîMɔlitanîMaláwiMɛksîkMɔzambîkNamimbîNijɛ̂Ninjɛliyâ" +
- "Nɔlɛvɛ́jɛPɛlûLɛ́uniyɔ̂nSɛlɛbîLusîLuwándaPɛsɛ́shɛlSundânSiyɛ́la Lɛɔ̂n" +
- "SɛnɛgâlSɔmalîSáwɔŋ Tɔmɛ́ nɛ́ PɛlínsipɛSwazilânCâtTɔ́ŋgɔTunizîTanzanî" +
- "UŋgándaVɛnɛzwɛ́laMayɔ̂tZambîZimbámbwɛŋgɔŋ yi pɛ́ ká kɛ́ jʉɔMbíAfɛlîk" +
- "AmɛlîkAzîɄlôp",
- []uint16{ // 287 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0013, 0x0013, 0x0013,
- 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0024,
- 0x0024, 0x0024, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0041,
- 0x0041, 0x004b, 0x004b, 0x004b, 0x004b, 0x0056, 0x0056, 0x0056,
- 0x005d, 0x005d, 0x0071, 0x0071, 0x0088, 0x0091, 0x009f, 0x009f,
- 0x00a6, 0x00af, 0x00b4, 0x00bf, 0x00bf, 0x00bf, 0x00c4, 0x00c4,
- 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00d4,
- // Entry 40 - 7F
- 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00e7, 0x00e7, 0x00f0, 0x00f0,
- 0x00fe, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
- 0x0112, 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
- 0x012d, 0x012d, 0x012d, 0x0135, 0x013e, 0x013e, 0x0156, 0x0161,
- 0x0161, 0x0161, 0x0161, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173,
- 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x017d, 0x017d,
- 0x0183, 0x0183, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, 0x018e,
- 0x018e, 0x0196, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ac, 0x01ac,
- // Entry 80 - BF
- 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac,
- 0x01ac, 0x01ac, 0x01b4, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01c4,
- 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01dd, 0x01dd, 0x01dd,
- 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01ec, 0x01ec,
- 0x01ec, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0205, 0x020d,
- 0x020d, 0x0214, 0x0214, 0x021f, 0x021f, 0x021f, 0x022d, 0x022d,
- 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x0233, 0x0233, 0x0233,
- 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233,
- // Entry C0 - FF
- 0x0233, 0x0233, 0x0233, 0x0233, 0x0241, 0x0241, 0x024a, 0x024f,
- 0x0257, 0x0257, 0x0257, 0x0264, 0x026b, 0x026b, 0x026b, 0x026b,
- 0x026b, 0x026b, 0x026b, 0x027d, 0x027d, 0x0287, 0x028f, 0x028f,
- 0x028f, 0x02b3, 0x02b3, 0x02b3, 0x02b3, 0x02bc, 0x02bc, 0x02bc,
- 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca,
- 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d9, 0x02d9,
- 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02f0,
- 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0,
- // Entry 100 - 13F
- 0x02f8, 0x02f8, 0x02fe, 0x0309, 0x0329, 0x032d, 0x0335, 0x0335,
- 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335,
- 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d,
- 0x033d, 0x033d, 0x033d, 0x0341, 0x0341, 0x0341, 0x0347,
- },
- },
- { // jmc
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // ka
- kaRegionStr,
- kaRegionIdx,
- },
- { // kab
- "UnduraTigeldunin Yedduklen TaɛrabinAfɣanistanUntiga d BarbudaUngiyaLalba" +
- "niArminyaAntilles n Tmura-YessakesrenUngulaArjuntinSamwa Tamarikanit" +
- "UstriyaUstraliArubaAzrabijanBusna d HersekBarbadusBangladacBelǧikBur" +
- "kina FasuBulgariBaḥrinBurandiBininBermudaBruneyBuliviBrizilBahamasBh" +
- "utanBustwanaBilarusBilizKanadaTigduda Tagdudant n KunguTigduda n Tef" +
- "riqt TalemmastKunguSwisKuṭ DivwarTigzirin n KukCiliKamirunLacinKulum" +
- "biKusta RikaKubaTigzirin n yixef azegzawCiprČčekLalmanǦibutiDenmarkD" +
- "uminikTigduda TaduminikitLezzayerIkwaṭurIstunyaMaṣrIritiriaSpanyaUty" +
- "upiFinlundFijiTigzirin n FalklandMikrunizyaFransaGabunTagelda Yedduk" +
- "lenGrunadJiyurjiƔana tafransistƔanaJibraltarGrunlandGambyaƔinyaGwada" +
- "lupiƔinya TasebgastLagrisGwatimalaGwamƔinya-BisawGuwanaHundurasKerwa" +
- "syaHaytiHungriInduniziLirlundIzrayilLhendAkal Aglizi deg Ugaraw Ahen" +
- "diLɛiraqIranIslandṬelyanJamyikaLajurdaniJappuKinyaKirigistanCambudya" +
- "KiribatiKumurSan Kits d NivisKurya, UfellaKurya, WaddaKuwaytTigzirin" +
- " n KamyanKazaxistanLawsLubnanSan LučyaLayctenstanSri LankaLibiryaLiz" +
- "uṭuLiṭwanyaLuksamburgLatviaLibyaLmerrukMunakuMuldabiMadaɣecqerTigzir" +
- "in n MarcalMasidwanMaliMyanmarMungulyaTigzirin n Maryan UfellaMartin" +
- "ikMuriṭanyaMunsiratMalṭMurisMaldibMalawiMeksikMalizyaMuzembiqNamibya" +
- "Kalidunya TamaynutNijerTigzirin TinawfukinNijiryaNikaragwaTimura-Yes" +
- "sakesrenNurvijNipalNuruNiwiZiland TamaynutƐumanPanamPiruPulunizi taf" +
- "ransistƔinya Tamaynut TapaputFilipinPakistanPulundSan Pyar d MiklunP" +
- "itkarinPurtu RikuFalisṭin d ƔezzaPurtugalPaluParagwayQaṭarTimlilitRu" +
- "maniRrusRuwandaSuɛudiya TaɛrabtTigzirin n SulumunSeycelSudanSwidSing" +
- "afurSant IlinaSluvinyaSluvakyaSira LyunSan MarinuSinigalṢumalSurinam" +
- "Saw Tumi d PransipSalvadurSuryaSwazilundṬurk d Tegzirin n KaykusČadṬ" +
- "uguṬaylandTajikistanṬukluTumur AsamarṬurkmanistanTunesṬungaṬurkṬrind" +
- "ad d ṬubaguṬuvaluṬaywanṬanzanyaUkranUɣandaWDMUrugwayUzbaxistanAwanek" +
- " n VatikanSan Vansu d GrunadinVenzwilaTigzirin Tiverjiniyin Tigliziy" +
- "inW.D. Tigzirin n VirginyaVyeṭnamVanwatuWallis d FutunaSamwaLyamenMa" +
- "yuṭTafriqt WaddaZambyaZimbabwi",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0024, 0x002f, 0x003f, 0x0045, 0x004c,
- 0x0053, 0x006f, 0x0075, 0x0075, 0x007d, 0x008e, 0x0095, 0x009c,
- 0x00a1, 0x00a1, 0x00aa, 0x00b8, 0x00c0, 0x00c9, 0x00d0, 0x00dc,
- 0x00e3, 0x00eb, 0x00f2, 0x00f7, 0x00f7, 0x00fe, 0x0104, 0x010a,
- 0x010a, 0x0110, 0x0117, 0x011d, 0x011d, 0x0125, 0x012c, 0x0131,
- 0x0137, 0x0137, 0x0150, 0x016b, 0x0170, 0x0174, 0x0180, 0x018e,
- 0x0192, 0x0199, 0x019e, 0x01a5, 0x01a5, 0x01af, 0x01b3, 0x01cb,
- 0x01cb, 0x01cb, 0x01cf, 0x01d5, 0x01db, 0x01db, 0x01e2, 0x01e9,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020b, 0x020b, 0x0214, 0x021b, 0x0221, 0x0221,
- 0x0229, 0x022f, 0x0235, 0x0235, 0x023c, 0x0240, 0x0253, 0x025d,
- 0x025d, 0x0263, 0x0268, 0x0279, 0x027f, 0x0286, 0x0296, 0x0296,
- 0x029b, 0x02a4, 0x02ac, 0x02b2, 0x02b8, 0x02c1, 0x02d1, 0x02d7,
- 0x02d7, 0x02e0, 0x02e4, 0x02f0, 0x02f6, 0x02f6, 0x02f6, 0x02fe,
- 0x0306, 0x030b, 0x0311, 0x0311, 0x0319, 0x0320, 0x0327, 0x0327,
- 0x032c, 0x0349, 0x0350, 0x0354, 0x035a, 0x0362, 0x0362, 0x0369,
- 0x0372, 0x0377, 0x037c, 0x0386, 0x038e, 0x0396, 0x039b, 0x03ab,
- // Entry 80 - BF
- 0x03b8, 0x03c4, 0x03ca, 0x03db, 0x03e5, 0x03e9, 0x03ef, 0x03f9,
- 0x0404, 0x040d, 0x0414, 0x041c, 0x0426, 0x0430, 0x0436, 0x043b,
- 0x0442, 0x0448, 0x044f, 0x044f, 0x044f, 0x045a, 0x046b, 0x0473,
- 0x0477, 0x047e, 0x0486, 0x0486, 0x049e, 0x04a6, 0x04b1, 0x04b9,
- 0x04bf, 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e5, 0x04ec,
- 0x04fe, 0x0503, 0x0516, 0x051d, 0x0526, 0x0538, 0x053e, 0x0543,
- 0x0547, 0x054b, 0x055a, 0x0560, 0x0565, 0x0569, 0x057c, 0x0593,
- 0x059a, 0x05a2, 0x05a8, 0x05b9, 0x05c1, 0x05cb, 0x05de, 0x05e6,
- // Entry C0 - FF
- 0x05ea, 0x05f2, 0x05f9, 0x05f9, 0x0601, 0x0607, 0x0607, 0x060b,
- 0x0612, 0x0624, 0x0636, 0x063c, 0x0641, 0x0645, 0x064d, 0x0657,
- 0x065f, 0x065f, 0x0667, 0x0670, 0x067a, 0x0681, 0x0688, 0x068f,
- 0x068f, 0x06a1, 0x06a9, 0x06a9, 0x06ae, 0x06b7, 0x06b7, 0x06d1,
- 0x06d5, 0x06d5, 0x06db, 0x06e4, 0x06ee, 0x06f5, 0x0701, 0x070f,
- 0x0714, 0x071b, 0x0721, 0x0735, 0x073d, 0x0745, 0x074f, 0x0754,
- 0x075b, 0x075b, 0x075e, 0x0765, 0x076f, 0x077f, 0x0793, 0x079b,
- 0x07bb, 0x07d3, 0x07dc, 0x07e3, 0x07f2, 0x07f7, 0x07f7, 0x07fd,
- // Entry 100 - 13F
- 0x0804, 0x0811, 0x0817, 0x081f,
- },
- },
- { // kam
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniMbulundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
- "aniBotswanaBelarusiBelizeKanandaJamhuri ya Kidemokrasia ya KongoJamh" +
- "uri ya Afrika ya KatiKongoUswisiKodivaaIsiwa sya CookChileKameluniKy" +
- "ainaKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJib" +
- "utiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisiliEritr" +
- "eaHispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUvalanzaGabo" +
- "niUingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGamb" +
- "iaGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasi" +
- "KorasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza k" +
- "atika Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenya" +
- "KirigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea Kaskazin" +
- "iKorea KusiniKuwaitiIsiwa sya KaymanKazakistaniLaosiLebanoniSantalus" +
- "iaLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorok" +
- "oMonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisi" +
- "wa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisi" +
- "ModivuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa ch" +
- "a NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniP" +
- "anamaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapier" +
- "i na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza" +
- " wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiLwandaSaud" +
- "iIsiwa sya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaS" +
- "lovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Princip" +
- "eElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajiki" +
- "staniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTri" +
- "nidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUkandaMarekaniUrugwaiUzib" +
- "ekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin " +
- "vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na " +
- "FutunaSamoaYemeniMayotteAfrika KusiniNzambiaNzimbambwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
- 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
- 0x0134, 0x0134, 0x0154, 0x016d, 0x0172, 0x0178, 0x017f, 0x018d,
- 0x0192, 0x019a, 0x01a0, 0x01a8, 0x01a8, 0x01b1, 0x01b5, 0x01bd,
- 0x01bd, 0x01bd, 0x01c4, 0x01d4, 0x01dd, 0x01dd, 0x01e3, 0x01ea,
- // Entry 40 - 7F
- 0x01f2, 0x0205, 0x020c, 0x020c, 0x0212, 0x0219, 0x021f, 0x021f,
- 0x0226, 0x022e, 0x0236, 0x0236, 0x023b, 0x023f, 0x0252, 0x025c,
- 0x025c, 0x0264, 0x026a, 0x0273, 0x027a, 0x027f, 0x0292, 0x0292,
- 0x0297, 0x029f, 0x02a8, 0x02ae, 0x02b2, 0x02bb, 0x02c4, 0x02cb,
- 0x02cb, 0x02d4, 0x02d8, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02f0,
- 0x02f7, 0x02fc, 0x0304, 0x0304, 0x030d, 0x0315, 0x031c, 0x031c,
- 0x0321, 0x0346, 0x034b, 0x0351, 0x0359, 0x035f, 0x035f, 0x0366,
- 0x036d, 0x0373, 0x0378, 0x0385, 0x038d, 0x0395, 0x039b, 0x03ae,
- // Entry 80 - BF
- 0x03bd, 0x03c9, 0x03d0, 0x03e0, 0x03eb, 0x03f0, 0x03f8, 0x0402,
- 0x040c, 0x0415, 0x041c, 0x0422, 0x042a, 0x0433, 0x043a, 0x043f,
- 0x0445, 0x044b, 0x0452, 0x0452, 0x0452, 0x0458, 0x046a, 0x0473,
- 0x0477, 0x047c, 0x0484, 0x0484, 0x04a4, 0x04ad, 0x04b6, 0x04c1,
- 0x04c6, 0x04cc, 0x04d2, 0x04d8, 0x04df, 0x04e6, 0x04ee, 0x04f5,
- 0x0501, 0x0507, 0x0518, 0x051f, 0x0528, 0x0530, 0x0535, 0x053b,
- 0x0540, 0x0544, 0x054e, 0x0553, 0x0559, 0x055d, 0x0572, 0x0577,
- 0x057f, 0x0588, 0x058f, 0x05a5, 0x05ae, 0x05b7, 0x05e9, 0x05ee,
- // Entry C0 - FF
- 0x05f3, 0x05fb, 0x0601, 0x0601, 0x060a, 0x0611, 0x0611, 0x0616,
- 0x061c, 0x0621, 0x0632, 0x063c, 0x0642, 0x0648, 0x0650, 0x065b,
- 0x0663, 0x0663, 0x066b, 0x0676, 0x067e, 0x0686, 0x068d, 0x0695,
- 0x0695, 0x06a9, 0x06b1, 0x06b1, 0x06b6, 0x06bc, 0x06bc, 0x06d5,
- 0x06da, 0x06da, 0x06de, 0x06e6, 0x06f1, 0x06f8, 0x070b, 0x071a,
- 0x0721, 0x0726, 0x072d, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
- 0x0761, 0x0761, 0x0769, 0x0770, 0x077c, 0x0784, 0x079d, 0x07a6,
- 0x07c5, 0x07e3, 0x07ec, 0x07f3, 0x0802, 0x0807, 0x0807, 0x080d,
- // Entry 100 - 13F
- 0x0814, 0x0821, 0x0828, 0x0832,
- },
- },
- { // kde
- "AndolaDimiliki dya Vakulungwa va ChalabuAfuganistaniAntigua na BalbudaAn" +
- "gwilaAlbaniaAlmeniaAntili za UholanziAngolaAdyentinaSamoa ya Malekan" +
- "iAustliaAustlaliaAlubaAzabadyaniBosnia na HezegovinaBabadosiBanglade" +
- "shiUbelgidiBuchinafasoBulgaliaBahaleniBulundiBeniniBelmudaBluneiBoli" +
- "viaBlaziliBahamaButaniBotswanaBelalusiBelizeKanadaJamuhuli ya Chidem" +
- "oklasia ya kuKongoJamuhuli ya Afilika ya Paching’atiKongoUswisiKodiv" +
- "aaChisiwa cha CookChileKameluniChinaKolombiaKostalikaKubaKepuvedeKup" +
- "losiJamuhuli ya ChechiUdyerumaniDyibutiDenmakiDominikaJamuhuli ya Do" +
- "minikaAljeliaEkwadoEstoniaMisliElitileaHispaniaUhabeshiUfiniFijiChis" +
- "iwa cha FalklandMikilonesiaUfalansaGaboniNngalesaGlenadaDyodyaGwiyan" +
- "a ya UfalansaGhanaDiblaltaGlinlandiGambiaGineGwadelupeGinekwetaUgili" +
- "chiGwatemalaGwamGinebisauGuyanaHondulasiKolasiaHaitiHungaliaIndonesi" +
- "aAyalandiIslaeliIndiaLieneo lyaki Nngalesa Nbahali ya HindiIlakiUady" +
- "emiAislandiItaliaDyamaikaYordaniDyapaniKenyaKiligizistaniKambodiaKil" +
- "ibatiKomoloSantakitzi na NevisKolea KasikaziniKolea KusiniKuwaitiChi" +
- "siwa cha KemenKazachistaniLaosiLebanoniSantalusiaLishenteniSililanka" +
- "LibeliaLesotoLitwaniaLasembagiLativiaLibyaMolokoMonakoMoldovaBukiniC" +
- "hisiwa cha MalushalMasedoniaMaliMyamaMongoliaChisiwa cha Marian cha " +
- "KasikaziniMalitinikiMolitaniaMonselatiMaltaMolisiModivuMalawiMeksiko" +
- "MalesiaMsumbijiNamibiaNyukaledoniaNidyeliChisiwa cha NolufokNidyelia" +
- "NikalagwaUholanziNorweNepaliNauluNiueNyuzilandiOmaniPanamaPeluPoline" +
- "sia ya UfalansaPapuaFilipinoPakistaniPolandiSantapieli na MikeloniPi" +
- "tikeluniPwetolikoNchingu wa Magalibi wa Mpanda wa kuGaza wa kuPalesU" +
- "lenoPalauPalagwaiKataliLiyunioniLomaniaUlusiLwandaSaudiaChisiwa cha " +
- "SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiel" +
- "a LeoniSamalinoSenegaliSomaliaSulinamuSaotome na PrinsipeElsavadoSil" +
- "iaUswaziChisiwa cha Tuluchi na KaikoChadiTogoTailandiTadikistaniToke" +
- "lauTimoli ya MashalikiTuluchimenistaniTunisiaTongaUtuluchiTilinidad " +
- "na TobagoTuvaluTaiwaniTanzaniaUklainiUgandaMalekaniUlugwaiUzibechist" +
- "aniVatikaniSantavisenti na GlenadiniVenezuelaChisiwa Chivihi cha Win" +
- "galesaChisiwa Chivihi cha MalekaniVietinamuVanuatuWalis na FutunaSam" +
- "oaYemeniMaoleAfilika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0028, 0x0034, 0x0046, 0x004d, 0x0054,
- 0x005b, 0x006d, 0x0073, 0x0073, 0x007c, 0x008d, 0x0094, 0x009d,
- 0x00a2, 0x00a2, 0x00ac, 0x00c0, 0x00c8, 0x00d3, 0x00db, 0x00e6,
- 0x00ee, 0x00f6, 0x00fd, 0x0103, 0x0103, 0x010a, 0x0110, 0x0117,
- 0x0117, 0x011e, 0x0124, 0x012a, 0x012a, 0x0132, 0x013a, 0x0140,
- 0x0146, 0x0146, 0x016a, 0x018e, 0x0193, 0x0199, 0x01a0, 0x01b0,
- 0x01b5, 0x01bd, 0x01c2, 0x01ca, 0x01ca, 0x01d3, 0x01d7, 0x01df,
- 0x01df, 0x01df, 0x01e6, 0x01f8, 0x0202, 0x0202, 0x0209, 0x0210,
- // Entry 40 - 7F
- 0x0218, 0x022c, 0x0233, 0x0233, 0x0239, 0x0240, 0x0245, 0x0245,
- 0x024d, 0x0255, 0x025d, 0x025d, 0x0262, 0x0266, 0x027a, 0x0285,
- 0x0285, 0x028d, 0x0293, 0x029b, 0x02a2, 0x02a8, 0x02bb, 0x02bb,
- 0x02c0, 0x02c8, 0x02d1, 0x02d7, 0x02db, 0x02e4, 0x02ed, 0x02f5,
- 0x02f5, 0x02fe, 0x0302, 0x030b, 0x0311, 0x0311, 0x0311, 0x031a,
- 0x0321, 0x0326, 0x032e, 0x032e, 0x0337, 0x033f, 0x0346, 0x0346,
- 0x034b, 0x0371, 0x0376, 0x037d, 0x0385, 0x038b, 0x038b, 0x0393,
- 0x039a, 0x03a1, 0x03a6, 0x03b3, 0x03bb, 0x03c3, 0x03c9, 0x03dc,
- // Entry 80 - BF
- 0x03ec, 0x03f8, 0x03ff, 0x0410, 0x041c, 0x0421, 0x0429, 0x0433,
- 0x043d, 0x0446, 0x044d, 0x0453, 0x045b, 0x0464, 0x046b, 0x0470,
- 0x0476, 0x047c, 0x0483, 0x0483, 0x0483, 0x0489, 0x049d, 0x04a6,
- 0x04aa, 0x04af, 0x04b7, 0x04b7, 0x04d8, 0x04e2, 0x04eb, 0x04f4,
- 0x04f9, 0x04ff, 0x0505, 0x050b, 0x0512, 0x0519, 0x0521, 0x0528,
- 0x0534, 0x053b, 0x054e, 0x0556, 0x055f, 0x0567, 0x056c, 0x0572,
- 0x0577, 0x057b, 0x0585, 0x058a, 0x0590, 0x0594, 0x05a9, 0x05ae,
- 0x05b6, 0x05bf, 0x05c6, 0x05dc, 0x05e6, 0x05ef, 0x0621, 0x0626,
- // Entry C0 - FF
- 0x062b, 0x0633, 0x0639, 0x0639, 0x0642, 0x0649, 0x0649, 0x064e,
- 0x0654, 0x065a, 0x066d, 0x0677, 0x067d, 0x0683, 0x068b, 0x0696,
- 0x069e, 0x069e, 0x06a6, 0x06b1, 0x06b9, 0x06c1, 0x06c8, 0x06d0,
- 0x06d0, 0x06e3, 0x06eb, 0x06eb, 0x06f0, 0x06f6, 0x06f6, 0x0712,
- 0x0717, 0x0717, 0x071b, 0x0723, 0x072e, 0x0735, 0x0748, 0x0758,
- 0x075f, 0x0764, 0x076c, 0x077f, 0x0785, 0x078c, 0x0794, 0x079b,
- 0x07a1, 0x07a1, 0x07a9, 0x07b0, 0x07bd, 0x07c5, 0x07de, 0x07e7,
- 0x0804, 0x0820, 0x0829, 0x0830, 0x083f, 0x0844, 0x0844, 0x084a,
- // Entry 100 - 13F
- 0x084f, 0x085d, 0x0863, 0x086b,
- },
- },
- { // kea
- "Ilha di AsensãuAndoraEmiradus Arabi UniduAfeganistãuAntigua i BarbudaAng" +
- "ilaAlbaniaArmeniaAntilhas OlandezaAngolaAntartikaArjentinaSamoa Merk" +
- "anuAustriaAustraliaArubaIlhas ÅlandAzerbaijãuBosnia-ErzegovinaBarbad" +
- "usBangladexiBéljikaBurkina FasuBulgariaBarainBurundiBeninSãu Bartolo" +
- "meuBermudasBruneiBolíviaKaraibas OlandezasBrazilBaamasButãuIlha Buve" +
- "BotsuanaBelarusBeliziKanadáIlhas KokusKongu - KinxasaRepublika Sentr" +
- "u-AfrikanuKongu - BrazaviliSuisaKosta di MarfinIlhas KukXiliKamarõis" +
- "XinaKolômbiaIlha KlipertonKosta RikaKubaKabu VerdiKurasauIlha di Nat" +
- "alXipriRepublika TxekaAlimanhaDiegu GarsiaDjibutiDinamarkaDominikaRe" +
- "públika DominikanaArjeliaSeuta i MelilaEkuadorStoniaEjituSara Osiden" +
- "talIritreiaSpanhaItiopiaUniãu EuropeiaFinlandiaFidjiIlhas MalvinasMi" +
- "kroneziaIlhas FaroeFransaGabãuReinu UniduGranadaJiorjiaGiana Fransez" +
- "aGernziGanaJibraltarGronelándiaGambiaGineGuadalupiGine EkuatorialGre" +
- "siaJeórjia di Sul i Ilhas di Sanduixi di SulGuatimalaGuamGine-BisauG" +
- "ianaRejiãu Administrativu Special di Hong KongIlha Heard i Ilhas McD" +
- "onaldOndurasKroasiaAitíUngriaKanáriasIndoneziaIrlandaIsraelIlha di M" +
- "anIndiaIlhas Britanika di IndikuIrakiIronIslandiaItaliaJersiJamaikaJ" +
- "ordaniaJapãuKeniaKirgistonKambodjaKiribatiKamorisSãu Kristovãu i Nev" +
- "isKoreia di NortiKoreia di SulKueitiIlhas KaimãuKazakistãuLausLibanu" +
- "Santa LúsiaLixenstainSri LankaLiberiaLezotuLituaniaLuxemburguLetonia" +
- "LibiaMarokusMonakuMoldaviaMontenegruSãu Martinhu di FransaMadagaskar" +
- "Ilhas MarxalMasidoniaMaliMianmarMongoliaRejiãu Administrativu Specia" +
- "l di MakauIlhas Marianas di NortiMartinikaMauritaniaMonseratMaltaIlh" +
- "as MaurisiaMaldivasMalauiMéxikuMalaziaMusambikiNamibiaNova Kalidonia" +
- "NijerIlhas NorfolkNijeriaNikaráguaOlandaNoruegaNepalNauruNiueNova Zi" +
- "landiaOmanPanamáPeruPolinezia FransezaPapua-Nova GineFilipinasPakist" +
- "ãuPuloniaSan Piere i MikelonPirkairnPortu RikuPalistinaPurtugalPala" +
- "uParaguaiKatarIlhas di OseaniaRunionRomeniaServiaRúsiaRuandaArabia S" +
- "auditaIlhas SalumonSeixelisSudãuSuesiaSingapuraSanta IlenaSloveniaSv" +
- "albard i Jan MaienSlovakiaSera LioaSan MarinuSenegalSumaliaSurinamiS" +
- "udãu di SulSãu Tume i PrinsipiEl SalvadorSãu Martinhu di OlandaSiria" +
- "SuazilándiaTristan da KunhaIlhas Turkas i KaikusTxadiTerras Franses " +
- "di SulToguTailandiaTadjikistãuTokelauTimor LestiTurkumenistãuTunizia" +
- "TongaTurkiaTrinidad i TobaguTuvaluTaiuanTanzaniaUkraniaUgandaIlhas M" +
- "inoris Distantis de Stadus UnidusStadus Unidos di MerkaUruguaiUzbeki" +
- "stãuVatikanuSãu Bisenti i GranadinasVinizuelaIlhas Virjens Britanika" +
- "sIlhas Virjens MerkanasVietnamVanuatuUalis i FutunaSamoaKozovuIemenM" +
- "aioteAfrika di SulZambiaZimbabuiRejiãu DiskonxeduMunduÁfrikaMerka di" +
- " NortiMerka di SulOseaniaÁfrika OsidentalMerka SentralÁfrika Orienta" +
- "lNorti di ÁfrikaÁfrika SentralSul di ÁfrikaMerkasNorti di MerkaKarai" +
- "basÁzia OrientalSul di ÁziaSudesti AziátikuEuropa di SulAustraláziaM" +
- "elanéziaRejiãu di MikronéziaPolinéziaÁziaÁzia SentralÁzia OsidentalE" +
- "uropaEuropa OrientalEuropa di NortiEuropa OsidentalMerka Latinu",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0016, 0x002a, 0x0036, 0x0047, 0x004d, 0x0054,
- 0x005b, 0x006c, 0x0072, 0x007b, 0x0084, 0x0091, 0x0098, 0x00a1,
- 0x00a6, 0x00b2, 0x00bd, 0x00ce, 0x00d6, 0x00e0, 0x00e8, 0x00f4,
- 0x00fc, 0x0102, 0x0109, 0x010e, 0x011d, 0x0125, 0x012b, 0x0133,
- 0x0145, 0x014b, 0x0151, 0x0157, 0x0160, 0x0168, 0x016f, 0x0175,
- 0x017c, 0x0187, 0x0196, 0x01af, 0x01c0, 0x01c5, 0x01d4, 0x01dd,
- 0x01e1, 0x01ea, 0x01ee, 0x01f7, 0x0205, 0x020f, 0x0213, 0x021d,
- 0x0224, 0x0231, 0x0236, 0x0245, 0x024d, 0x0259, 0x0260, 0x0269,
- // Entry 40 - 7F
- 0x0271, 0x0286, 0x028d, 0x029b, 0x02a2, 0x02a8, 0x02ad, 0x02bb,
- 0x02c3, 0x02c9, 0x02d0, 0x02df, 0x02e8, 0x02ed, 0x02fb, 0x0305,
- 0x0310, 0x0316, 0x031c, 0x0327, 0x032e, 0x0335, 0x0343, 0x0349,
- 0x034d, 0x0356, 0x0362, 0x0368, 0x036c, 0x0375, 0x0384, 0x038a,
- 0x03b4, 0x03bd, 0x03c1, 0x03cb, 0x03d0, 0x03fb, 0x0416, 0x041d,
- 0x0424, 0x0429, 0x042f, 0x0438, 0x0441, 0x0448, 0x044e, 0x0459,
- 0x045e, 0x0477, 0x047c, 0x0480, 0x0488, 0x048e, 0x0493, 0x049a,
- 0x04a2, 0x04a8, 0x04ad, 0x04b6, 0x04be, 0x04c6, 0x04cd, 0x04e4,
- // Entry 80 - BF
- 0x04f3, 0x0500, 0x0506, 0x0513, 0x051e, 0x0522, 0x0528, 0x0534,
- 0x053e, 0x0547, 0x054e, 0x0554, 0x055c, 0x0566, 0x056d, 0x0572,
- 0x0579, 0x057f, 0x0587, 0x0591, 0x05a8, 0x05b2, 0x05be, 0x05c7,
- 0x05cb, 0x05d2, 0x05da, 0x0601, 0x0618, 0x0621, 0x062b, 0x0633,
- 0x0638, 0x0646, 0x064e, 0x0654, 0x065b, 0x0662, 0x066b, 0x0672,
- 0x0680, 0x0685, 0x0692, 0x0699, 0x06a3, 0x06a9, 0x06b0, 0x06b5,
- 0x06ba, 0x06be, 0x06cb, 0x06cf, 0x06d6, 0x06da, 0x06ec, 0x06fb,
- 0x0704, 0x070d, 0x0714, 0x0727, 0x072f, 0x0739, 0x0742, 0x074a,
- // Entry C0 - FF
- 0x074f, 0x0757, 0x075c, 0x076c, 0x0772, 0x0779, 0x077f, 0x0785,
- 0x078b, 0x0799, 0x07a6, 0x07ae, 0x07b4, 0x07ba, 0x07c3, 0x07ce,
- 0x07d6, 0x07ea, 0x07f2, 0x07fb, 0x0805, 0x080c, 0x0813, 0x081b,
- 0x0828, 0x083c, 0x0847, 0x085e, 0x0863, 0x086f, 0x087f, 0x0894,
- 0x0899, 0x08ae, 0x08b2, 0x08bb, 0x08c7, 0x08ce, 0x08d9, 0x08e7,
- 0x08ee, 0x08f3, 0x08f9, 0x090a, 0x0910, 0x0916, 0x091e, 0x0925,
- 0x092b, 0x0953, 0x0969, 0x0970, 0x097b, 0x0983, 0x099c, 0x09a5,
- 0x09bd, 0x09d3, 0x09da, 0x09e1, 0x09ef, 0x09f4, 0x09fa, 0x09ff,
- // Entry 100 - 13F
- 0x0a05, 0x0a12, 0x0a18, 0x0a20, 0x0a32, 0x0a37, 0x0a3e, 0x0a4c,
- 0x0a58, 0x0a5f, 0x0a70, 0x0a7d, 0x0a8d, 0x0a9d, 0x0aac, 0x0aba,
- 0x0ac0, 0x0ace, 0x0ad6, 0x0ae4, 0x0af0, 0x0b01, 0x0b0e, 0x0b1a,
- 0x0b24, 0x0b3a, 0x0b44, 0x0b49, 0x0b56, 0x0b65, 0x0b6b, 0x0b7a,
- 0x0b89, 0x0b99, 0x0ba5,
- },
- },
- { // khq
- "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
- "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
- "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
- "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
- "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
- "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
- "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
- "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
- "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
- "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
- "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
- "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
- "ndu teekoo laamaIraakIraanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
- "rgyzstanKamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
- "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
- "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
- "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
- "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
- "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
- "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
- "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
- "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
- "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
- "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
- "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
- "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
- "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
- "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
- "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
- "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
- "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
- 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
- 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
- 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
- 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
- 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
- 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
- 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
- // Entry 40 - 7F
- 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
- 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
- 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
- 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
- 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
- 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
- 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
- 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
- // Entry 80 - BF
- 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
- 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
- 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
- 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
- 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
- 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
- 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
- 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
- // Entry C0 - FF
- 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
- 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
- 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
- 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
- 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
- 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
- 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
- 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
- // Entry 100 - 13F
- 0x082b, 0x083d, 0x0842, 0x084a,
- },
- },
- { // ki
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniMburundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
- "aniBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhu" +
- "ri ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniCa" +
- "inaKolombiaKostarikaKiumbaKepuvedeKuprosiJamhuri ya ChekiNjeremaniJi" +
- "butiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritr" +
- "eaHispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUbaranjaGabo" +
- "niNgerethaGrenadaJojiaGwiyana ya UfaransaNganaJibraltaGrinlandiGambi" +
- "aGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiK" +
- "orasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza ka" +
- "tika Bahari HindiIrakiUajemiAislandiItaliaJamaikaNjorondaniNjabaniKe" +
- "nyaKirigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea Kaska" +
- "ziniKorea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSant" +
- "alusiaLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaM" +
- "orokoMonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongolia" +
- "Visiwa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMo" +
- "risiModivuMalawiMeksikoMalesiaMsumbijiNamimbiaNyukaledoniaNijeriKisi" +
- "wa cha NorfokNainjeriaNikaragwaUholanziNorweNepaliNauruNiueNyuziland" +
- "iOmaniPanamaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSa" +
- "ntapieri na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda " +
- "wa Gaza wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwa" +
- "ndaSaudiVisiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaS" +
- "loveniaSlovakiaSiera LeoniSamarinoSenegaliSomariaSurinamuSao Tome na" +
- " PrincipeElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailan" +
- "diTajikistaniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUt" +
- "urukiTrinidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaAmerikaUrug" +
- "waiUzibekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya " +
- "Virgin vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWa" +
- "lis na FutunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
- 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
- 0x0133, 0x0133, 0x0153, 0x016c, 0x0171, 0x0177, 0x017e, 0x018d,
- 0x0192, 0x019a, 0x019f, 0x01a7, 0x01a7, 0x01b0, 0x01b6, 0x01be,
- 0x01be, 0x01be, 0x01c5, 0x01d5, 0x01de, 0x01de, 0x01e4, 0x01eb,
- // Entry 40 - 7F
- 0x01f3, 0x0206, 0x020d, 0x020d, 0x0213, 0x021a, 0x021f, 0x021f,
- 0x0226, 0x022e, 0x0236, 0x0236, 0x023b, 0x023f, 0x0252, 0x025c,
- 0x025c, 0x0264, 0x026a, 0x0272, 0x0279, 0x027e, 0x0291, 0x0291,
- 0x0296, 0x029e, 0x02a7, 0x02ad, 0x02b1, 0x02ba, 0x02c3, 0x02ca,
- 0x02ca, 0x02d3, 0x02d7, 0x02e0, 0x02e6, 0x02e6, 0x02e6, 0x02ef,
- 0x02f6, 0x02fb, 0x0303, 0x0303, 0x030c, 0x0314, 0x031b, 0x031b,
- 0x0320, 0x0345, 0x034a, 0x0350, 0x0358, 0x035e, 0x035e, 0x0365,
- 0x036f, 0x0376, 0x037b, 0x0388, 0x0390, 0x0398, 0x039e, 0x03b1,
- // Entry 80 - BF
- 0x03c0, 0x03cc, 0x03d3, 0x03e4, 0x03ef, 0x03f4, 0x03fc, 0x0406,
- 0x0410, 0x0419, 0x0420, 0x0426, 0x042e, 0x0437, 0x043e, 0x0443,
- 0x0449, 0x044f, 0x0456, 0x0456, 0x0456, 0x045c, 0x046e, 0x0477,
- 0x047b, 0x0480, 0x0488, 0x0488, 0x04a8, 0x04b1, 0x04ba, 0x04c5,
- 0x04ca, 0x04d0, 0x04d6, 0x04dc, 0x04e3, 0x04ea, 0x04f2, 0x04fa,
- 0x0506, 0x050c, 0x051d, 0x0526, 0x052f, 0x0537, 0x053c, 0x0542,
- 0x0547, 0x054b, 0x0555, 0x055a, 0x0560, 0x0564, 0x0579, 0x057e,
- 0x0586, 0x058f, 0x0596, 0x05ac, 0x05b5, 0x05be, 0x05f0, 0x05f5,
- // Entry C0 - FF
- 0x05fa, 0x0602, 0x0608, 0x0608, 0x0611, 0x0618, 0x0618, 0x061d,
- 0x0623, 0x0628, 0x063a, 0x0644, 0x064a, 0x0650, 0x0658, 0x0663,
- 0x066b, 0x066b, 0x0673, 0x067e, 0x0686, 0x068e, 0x0695, 0x069d,
- 0x069d, 0x06b1, 0x06b9, 0x06b9, 0x06be, 0x06c4, 0x06c4, 0x06dd,
- 0x06e2, 0x06e2, 0x06e6, 0x06ee, 0x06f9, 0x0700, 0x0713, 0x0722,
- 0x0729, 0x072e, 0x0735, 0x0747, 0x074d, 0x0754, 0x075c, 0x0763,
- 0x0769, 0x0769, 0x0770, 0x0777, 0x0783, 0x078b, 0x07a4, 0x07ad,
- 0x07cc, 0x07ea, 0x07f3, 0x07fa, 0x0809, 0x080e, 0x080e, 0x0814,
- // Entry 100 - 13F
- 0x081b, 0x0828, 0x082e, 0x0836,
- },
- },
- { // kk
- kkRegionStr,
- kkRegionIdx,
- },
- { // kkj
- "Kamɛrun",
- []uint16{ // 50 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0008,
- },
- },
- { // kl
- "Kalaallit Nunaat",
- []uint16{ // 91 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0010,
- },
- },
- { // kln
- "Emetab AndorraEmetab kibagenge nebo arabukEmetab AfghanistanEmetab Antig" +
- "ua ak BarbudaEmetab AnguillaEmetab AlbaniaEmetab ArmeniaEmetab Antil" +
- "e nebo HolandEmetab AngolaEmetab ArgentinaEmetab American SamoaEmeta" +
- "b AustriaEmetab AustraliaEmetab ArubaEmetab AzerbaijanEmetab Bosnia " +
- "ak HerzegovinaEmetab BarbadosEmetab BangladeshEmetab BelgiumEmetab B" +
- "urkina FasoEmetab BulgariaEmetab BahrainEmetab BurundiEmetab BeninEm" +
- "etab BermudaEmetab BruneiEmetab BoliviaEmetab BrazilEmetab BahamasEm" +
- "etab BhutanEmetab BotswanaEmetab BelarusEmetab BelizeEmetab CanadaEm" +
- "etab Congo - KinshasaEmetab Afrika nebo KwenEmetab Congo - Brazzavil" +
- "leEmetab SwitzerlandEmetab Côte d’IvoireIkwembeyotab CookEmetab Chil" +
- "eEmetab CameroonEmetab ChinaEmetab ColombiaEmetab Costa RicaEmetab C" +
- "ubaIkwembeyotab Cape VerdeEmetab CyprusEmetab Czech RepublicEmetab G" +
- "erumanEmetab DjiboutiEmetab DenmarkEmetab DominicaEmetab Dominican R" +
- "epublicEmetab AlgeriaEmetab EcuadorEmetab EstoniaEmetab MisiriEmetab" +
- " EritreaEmetab SpainEmetab EthiopiaEmetab FinlandEmetab FijiIkwembey" +
- "otab FalklandEmetab MicronesiaEmetab FranceEmetab GabonEmetab Kibage" +
- "nge nebo UingerezaEmetab GrenadaEmetab GeorgiaEmetab Guiana nebo Ufa" +
- "ransaEmetab GhanaEmetab GibraltarEmetab GreenlandEmetab GambiaEmetab" +
- " GuineaEmetab GuadeloupeEmetab Equatorial GuineaEmetab GreeceEmetab " +
- "GuatemalaEmetab GuamEmetab Guinea-BissauEmetab GuyanaEmetab Honduras" +
- "Emetab CroatiaEmetab HaitiEmetab HungaryEmetab IndonesiaEmetab Irela" +
- "ndEmetab IsraelEmetab IndiaKebebertab araraitab indian Ocean nebo Ui" +
- "ngeresaEmetab IraqEmetab IranEmetab IcelandEmetab ItalyEmetab Jamaic" +
- "aEmetab JordanEmetab JapanEmetab KenyaEmetab KyrgyzstanEmetab Cambod" +
- "iaEmetab KiribatiEmetab ComorosEmetab Saint Kitts ak NevisEmetab Kor" +
- "ea nebo murot katamEmetab korea nebo murot taiEmetab KuwaitIkwembeyo" +
- "tab CaymanEmetab KazakhstanEmetab LaosEmetab LebanonEmetab Lucia NeE" +
- "metab LiechtensteinEmetab Sri LankaEmetab LiberiaEmetab LesothoEmeta" +
- "b LithuaniaEmetab LuxembourgEmetab LatviaEmetab LibyaEmetab MoroccoE" +
- "metab MonacoEmetab MoldovaEmetab MadagascarIkwembeiyotab MarshallEme" +
- "tab MacedoniaEmetab MaliEmetab MyanmarEmetab MongoliaIkwembeiyotab M" +
- "ariana nebo murot katamEmetab MartiniqueEmetab MauritaniaEmetab Mont" +
- "serratEmetab MaltaEmetab MauritiusEmetab MaldivesEmetab MalawiEmetab" +
- " MexicoEmetab MalaysiaEmetab MozambiqueEmetab NamibiaEmetab New Cale" +
- "doniaEmetab nigerIkwembeiyotab NorforkEmetab NigeriaEmetab Nicaragua" +
- "Emetab HolandEmetab NorwayEmetab NepalEmetab NauruEmetab NiueEmetab " +
- "New ZealandEmetab OmanEmetab PanamaEmetab PeruEmetab Polynesia nebo " +
- "ufaransaEmetab Papua New GuineaEmetab PhilippinesEmetab PakistanEmet" +
- "ab PolandEmetab Peter Ne titil ak MiquelonEmetab PitcairnEmetab Puer" +
- "to RicoEmetab PalestineEmetab PortugalEmetab PalauEmetab ParaguayEme" +
- "tab QatarEmetab RéunionEmetab RomaniaEmetab RussiaEmetab RwandaEmeta" +
- "b Saudi ArabiaIkwembeiyotab SolomonEmetab SeychellesEmetab SudanEmet" +
- "ab SwedenEmetab SingaporeEmetab Helena Ne tililEmetab SloveniaEmetab" +
- " SlovakiaEmetab Sierra LeoneEmetab San MarinoEmetab SenegalEmetab So" +
- "maliaEmetab SurinameEmetab São Tomé and PríncipeEmetab El SalvadorEm" +
- "etab SyriaEmetab SwazilandIkwembeiyotab Turks ak CaicosEmetab ChadEm" +
- "etab TogoEmetab ThailandEmetab TajikistanEmetab TokelauEmetab Timor " +
- "nebo Murot taiEmetab TurkmenistanEmetab TunisiaEmetab TongaEmetab Tu" +
- "rkeyEmetab Trinidad ak TobagoEmetab TuvaluEmetab TaiwanEmetab Tanzan" +
- "iaEmetab UkrainieEmetab UgandaEmetab amerikaEmetab UruguayEmetab Uzi" +
- "bekistaniEmetab VaticanEmetab Vincent netilil ak GrenadinesEmetab Ve" +
- "nezuelaIkwembeyotab British VirginIkwemweiyotab AmerikaEmetab Vietna" +
- "mEmetab VanuatuEmetab Walis ak FutunaEmetab SamoaEmetab YemenEmetab " +
- "MayotteEmetab Afrika nebo Murot taiEmetab ZambiaEmetab Zimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000e, 0x002a, 0x003c, 0x0055, 0x0064, 0x0072,
- 0x0080, 0x0099, 0x00a6, 0x00a6, 0x00b6, 0x00cb, 0x00d9, 0x00e9,
- 0x00f5, 0x00f5, 0x0106, 0x0122, 0x0131, 0x0142, 0x0150, 0x0163,
- 0x0172, 0x0180, 0x018e, 0x019a, 0x019a, 0x01a8, 0x01b5, 0x01c3,
- 0x01c3, 0x01d0, 0x01de, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0215,
- 0x0222, 0x0222, 0x0239, 0x0250, 0x026a, 0x027c, 0x0293, 0x02a4,
- 0x02b0, 0x02bf, 0x02cb, 0x02da, 0x02da, 0x02eb, 0x02f6, 0x030d,
- 0x030d, 0x030d, 0x031a, 0x032f, 0x033d, 0x033d, 0x034c, 0x035a,
- // Entry 40 - 7F
- 0x0369, 0x0382, 0x0390, 0x0390, 0x039e, 0x03ac, 0x03b9, 0x03b9,
- 0x03c7, 0x03d3, 0x03e2, 0x03e2, 0x03f0, 0x03fb, 0x0410, 0x0421,
- 0x0421, 0x042e, 0x043a, 0x0459, 0x0467, 0x0475, 0x0490, 0x0490,
- 0x049c, 0x04ac, 0x04bc, 0x04c9, 0x04d6, 0x04e7, 0x04ff, 0x050c,
- 0x050c, 0x051c, 0x0527, 0x053b, 0x0548, 0x0548, 0x0548, 0x0557,
- 0x0565, 0x0571, 0x057f, 0x057f, 0x058f, 0x059d, 0x05aa, 0x05aa,
- 0x05b6, 0x05e6, 0x05f1, 0x05fc, 0x060a, 0x0616, 0x0616, 0x0624,
- 0x0631, 0x063d, 0x0649, 0x065a, 0x0669, 0x0678, 0x0686, 0x06a1,
- // Entry 80 - BF
- 0x06be, 0x06d9, 0x06e6, 0x06f9, 0x070a, 0x0715, 0x0723, 0x0732,
- 0x0746, 0x0756, 0x0764, 0x0772, 0x0782, 0x0793, 0x07a0, 0x07ac,
- 0x07ba, 0x07c7, 0x07d5, 0x07d5, 0x07d5, 0x07e6, 0x07fc, 0x080c,
- 0x0817, 0x0825, 0x0834, 0x0834, 0x085a, 0x086b, 0x087c, 0x088d,
- 0x0899, 0x08a9, 0x08b8, 0x08c5, 0x08d2, 0x08e1, 0x08f2, 0x0900,
- 0x0914, 0x0920, 0x0935, 0x0943, 0x0953, 0x0960, 0x096d, 0x0979,
- 0x0985, 0x0990, 0x09a2, 0x09ad, 0x09ba, 0x09c5, 0x09e3, 0x09fa,
- 0x0a0c, 0x0a1b, 0x0a28, 0x0a49, 0x0a58, 0x0a6a, 0x0a7a, 0x0a89,
- // Entry C0 - FF
- 0x0a95, 0x0aa4, 0x0ab0, 0x0ab0, 0x0abf, 0x0acd, 0x0acd, 0x0ada,
- 0x0ae7, 0x0afa, 0x0b0f, 0x0b20, 0x0b2c, 0x0b39, 0x0b49, 0x0b5f,
- 0x0b6e, 0x0b6e, 0x0b7d, 0x0b90, 0x0ba1, 0x0baf, 0x0bbd, 0x0bcc,
- 0x0bcc, 0x0beb, 0x0bfd, 0x0bfd, 0x0c09, 0x0c19, 0x0c19, 0x0c36,
- 0x0c41, 0x0c41, 0x0c4c, 0x0c5b, 0x0c6c, 0x0c7a, 0x0c95, 0x0ca8,
- 0x0cb6, 0x0cc2, 0x0ccf, 0x0ce8, 0x0cf5, 0x0d02, 0x0d11, 0x0d20,
- 0x0d2d, 0x0d2d, 0x0d3b, 0x0d49, 0x0d5c, 0x0d6a, 0x0d8e, 0x0d9e,
- 0x0db9, 0x0dce, 0x0ddc, 0x0dea, 0x0e00, 0x0e0c, 0x0e0c, 0x0e18,
- // Entry 100 - 13F
- 0x0e26, 0x0e42, 0x0e4f, 0x0e5e,
- },
- },
- { // km
- kmRegionStr,
- kmRegionIdx,
- },
- { // kn
- knRegionStr,
- knRegionIdx,
- },
- { // ko
- koRegionStr,
- koRegionIdx,
- },
- { // kok
- "भारत",
- []uint16{ // 113 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x000c,
- },
- },
- { // ks
- "اٮ۪نڑورامُتحدہ عرَب اماراتاَفغانَستاناٮ۪نٹِگُوا تہٕ باربوڑاانگوئیلااٮ۪لب" +
- "انِیااَرمانِیانَیدَرلینٛڑٕس اٮ۪نٹَیلٕسانگولااینٹارٹِکاأرجَنٹینااَمر" +
- "یٖکَن سَمواآسٹِیاآسٹریلِیااَروٗباایلینٛڑ جٔزیٖرٕآزَرباجانبوسنِیا تہ" +
- "ٕ ہَرزِگووِناباربیڈاسبَنٛگلادیشبیٛلجِیَمبُرکِنا فیسوبَلجیرِیابحریٖن" +
- "بورَنڈِبِنِنسینٛٹ بارتَھیلمیبٔرمیوڈابُرنٔےبولِوِیابرطانوی قُطبہِ جَ" +
- "نوٗبی علاقہٕبرٛازِلبَہامَسبوٗٹانبووَٹ جٔزیٖرٕبوتَسوانابیلاروٗسبیلِج" +
- "کینَڑاکوکَس کیٖلِنٛگ جٔزیٖرٕکونٛگو کِنشاسامرکٔزی اَفریٖکی جموٗریَتک" +
- "ونٛگو بٔرٛزاوِلیسُوِزَرلینٛڑاَیوٕری کوسٹکُک جٔزیٖرٕچِلیکیٚمِروٗنچیٖ" +
- "نکولَمبِیاکوسٹا رِکاکیوٗباکیپ ؤرڑیکرِسمَس جٔزیٖرٕسایفرٛسچیک جَموٗرِ" +
- "یَتجرمٔنیجِبوٗتیڈینٛمارٕکڈومِنِکاڈومِنِکَن جموٗرِیَتاٮ۪لجیرِیااِکوا" +
- "ڑورایسٹونِیامِسٔرمشرِقی سَہارااِرٕٹِیاسٕپیناِتھوپِیافِنلینٛڑفِجیفٕل" +
- "اکلینٛڑ جٔزیٖرٕفرٛانسگیبانیُنایٹِڑ کِنٛگڈَمگرٛنیڑاجارجِیافرٛانسِسی " +
- "گِاناگیوَنَرسےگاناجِبرالٹَرگریٖنلینٛڑگَمبِیاگِنیگَواڑیلوپاِکوِٹورِی" +
- "َل گِنیگریٖسجنوٗبی جارجِیا تہٕ جنوٗبی سینٛڑوٕچ جٔزیٖرٕگوتیدالاگُوام" +
- "گیٖنی بِساوگُیاناہانٛگ کانٛگ ایس اے آر چیٖنہَرٕڑ جٔزیٖرٕ تہٕ مٮ۪کڈو" +
- "نالڑٕ جٔزیٖرٕہانٛڈوٗرِسکرٛوشِیاہایتیہَنٛگریاِنڑونیشِیااَیَرلینٛڑاِس" +
- "رایٖلآیِل آف میٛنہِنٛدوستانبرطانوی بحرِ ہِنٛدۍ علاقہٕایٖراقایٖراناَ" +
- "یِسلینٛڑاِٹلیجٔرسیجَمایکاجاپانکِنٛیاکِرگِستانکَمبوڑِیاکِرٕباتیکَمور" +
- "َسسینٛٹ کِٹَس تہٕ نیوِسشُمٲلی کورِیاجنوٗبی کورِیاکُویتکیمَن جٔزیٖرٕ" +
- "کَزاکِستانلاسلٮ۪بنانسینٛٹ لوٗسِیالِکٹیٛسٹیٖنسِریٖلَنٛکالایبیرِیالیس" +
- "وتھولِتھُوانِیالَکسَمبٔرٕگلیٛٹوِیالِبیاموروکومونیٚکومولڑاوِیاموٹونی" +
- "ٛگِریوسینٛٹ مارٹِنمیڑاگاسکارمارشَل جٔزیٖرٕمٮ۪سوڑونِیامالیمَیَنما بٔ" +
- "رمامَنٛگولِیامَکاوو ایس اے آر چیٖنشُمٲلی مارِیانا جٔزیٖرٕمارٹِنِکما" +
- "رٕٹانِیامانٛٹسیراٹمالٹامورِشَسمالدیٖوملاویمٮ۪کسِکومَلیشِیاموزَمبِکن" +
- "امِبِیانِو کیلِڑونِیانایجَرنارفاک جٔزیٖرٕنایجیرِیاناکاراگُوانیٖدَرل" +
- "ینٛڑناروےنیپالنارووٗنیوٗنیوٗزِلینٛڑاومانپَناماپیٖروٗفرٛانسی پولِنیش" +
- "ِیاپاپُوا نیوٗ گیٖنیفِلِپِینسپاکِستانپولینٛڑسینٛٹ پیٖری تہٕ موکیلِی" +
- "َنپِٹکیرٕنۍ جٔزیٖرٕپٔرٹو رِکوفَلَستیٖنپُرتِگالپَلاوپَراگُےقَطِرآوُٹ" +
- "لاینِگ اوشینِیارِیوٗنِیَنرومانِیاسَربِیاروٗسروٗوانٛڈاسوٗدی عربِیہسو" +
- "لامان جٔزیٖرٕسیشَلِسسوٗڈانسُوِڈَنٛسِنٛگاپوٗرسینٛٹ ہٮ۪لِناسَلووینِیا" +
- "سَوالبریڑ تہٕ جان ماییڑسَلوواکِیاسیٖرالیوونسین میرِنوسینیگَلسومالِی" +
- "اسُرِنامساو توم تہٕ پرٛنسِپیاٮ۪ل سَلواڑورشامسُوزِلینٛڑتُرُک تہٕ کیک" +
- "وس جٔزیٖرٕچاڑفرٛانسِسی جَنوٗبی عَلاقہٕٹوگوتھایلینٛڑتاجکِستانتوکیلاو" +
- "مَشرِقی تایمورتُرمِنِستانٹونیشِیاٹونٛگاتُرکیٹرٛنِنداد تہٕ ٹوبیگوتوٗ" +
- "والوٗتایوانتَنجانِیایوٗرِکینیوٗگانٛڑایوٗنایٹِڑ سِٹیٹِس ماینَر آوُٹل" +
- "ییِنٛگ جٔزیٖرٕیوٗنایٹِڑ سِٹیٹِسیوٗروگےاُزبِکِستانویٹِکَن سِٹیسینٛٹ " +
- "وینسٮ۪ٹ تہٕ گرٛیناڑاینٕزوینازوٗلابَرطانوی ؤرجِن جٔزیٖرٕیوٗ ایس ؤرجِ" +
- "ن جٔزیٖرٕویٹِناموانوٗتوٗوالِس تہٕ فیوٗچوٗناسیمووایَمَنمَییٹجَنوٗبی " +
- "اَفریٖکاجامبِیازِمبابےنامعلوٗم تہٕ نالَگہار عَلاقہٕدُنیااَفریٖکاشُم" +
- "ٲلی اَمریٖکاجَنوٗنی اَمرٖیٖکااوشَنیامَغریٖبی اَفریٖکامرکٔزی اَمریٖک" +
- "امَشرِقی اَفریٖکاشُمٲلی اَفریٖکاوسطی اَفریٖکاجنوٗبی اَفریٖکااَمریٖک" +
- "َسشُمٲلی اَمریٖکا خٕطہٕکَرِببیٖنمَشرِقی ایشیاجنوٗبی ایشیاجنوٗبہِ مَ" +
- "شرِقی ایشیاجنوٗبی یوٗرَپآسٹریلیا تہٕ نِوزِلینٛڑمٮ۪لَنیٖشِیامَیکرونَ" +
- "یشِیَن خٕطہٕپالنیشِیاایشیامرکٔزی ایشیامَغرِبی ایشیایوٗرَپمشرِقی یوٗ" +
- "رَپشُمٲلی یوٗرَپمغرِبی یوٗرَپلاطیٖنی اَمریٖکا تہٕ کیرَبیٖن",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0010, 0x0032, 0x0048, 0x0072, 0x0082, 0x0096,
- 0x00a8, 0x00d7, 0x00e3, 0x00f7, 0x0109, 0x0126, 0x0132, 0x0144,
- 0x0152, 0x016f, 0x0181, 0x01ad, 0x01bd, 0x01d1, 0x01e3, 0x01fa,
- 0x020c, 0x0218, 0x0226, 0x0230, 0x024f, 0x025f, 0x026b, 0x027b,
- 0x02b2, 0x02c0, 0x02ce, 0x02da, 0x02f3, 0x0305, 0x0315, 0x031f,
- 0x032b, 0x0355, 0x0370, 0x039e, 0x03bf, 0x03d7, 0x03ee, 0x0403,
- 0x040b, 0x041d, 0x0425, 0x0437, 0x0437, 0x044a, 0x0456, 0x0465,
- 0x0465, 0x0482, 0x0490, 0x04ab, 0x04b7, 0x04b7, 0x04c5, 0x04d7,
- // Entry 40 - 7F
- 0x04e7, 0x050c, 0x0520, 0x0520, 0x0530, 0x0542, 0x054c, 0x0565,
- 0x0575, 0x057f, 0x0591, 0x0591, 0x05a1, 0x05a9, 0x05cc, 0x05cc,
- 0x05cc, 0x05d8, 0x05e2, 0x0603, 0x0611, 0x061f, 0x063c, 0x064e,
- 0x0656, 0x0668, 0x067c, 0x068a, 0x0692, 0x06a4, 0x06c5, 0x06cf,
- 0x071e, 0x072e, 0x0738, 0x074d, 0x0759, 0x0788, 0x07ce, 0x07e2,
- 0x07f2, 0x07fc, 0x080a, 0x080a, 0x0820, 0x0834, 0x0844, 0x085a,
- 0x086e, 0x089f, 0x08ab, 0x08b7, 0x08cb, 0x08d5, 0x08df, 0x08ed,
- 0x08ed, 0x08f7, 0x0903, 0x0915, 0x0927, 0x0937, 0x0945, 0x096c,
- // Entry 80 - BF
- 0x0985, 0x099e, 0x09a8, 0x09c1, 0x09d5, 0x09db, 0x09e9, 0x0a02,
- 0x0a18, 0x0a2e, 0x0a40, 0x0a4e, 0x0a64, 0x0a7a, 0x0a8a, 0x0a94,
- 0x0aa0, 0x0aae, 0x0ac0, 0x0ad8, 0x0aef, 0x0b03, 0x0b1e, 0x0b34,
- 0x0b3c, 0x0b55, 0x0b69, 0x0b8f, 0x0bbb, 0x0bcb, 0x0bdf, 0x0bf3,
- 0x0bfd, 0x0c0b, 0x0c19, 0x0c23, 0x0c33, 0x0c43, 0x0c53, 0x0c63,
- 0x0c7e, 0x0c8a, 0x0ca5, 0x0cb7, 0x0ccb, 0x0ce1, 0x0ceb, 0x0cf5,
- 0x0d01, 0x0d09, 0x0d1f, 0x0d29, 0x0d35, 0x0d41, 0x0d64, 0x0d84,
- 0x0d96, 0x0da6, 0x0db4, 0x0de3, 0x0e04, 0x0e17, 0x0e29, 0x0e39,
- // Entry C0 - FF
- 0x0e43, 0x0e51, 0x0e5b, 0x0e80, 0x0e94, 0x0ea4, 0x0eb2, 0x0eba,
- 0x0ecc, 0x0ee3, 0x0f00, 0x0f0e, 0x0f1a, 0x0f28, 0x0f3e, 0x0f57,
- 0x0f6b, 0x0f96, 0x0faa, 0x0fbe, 0x0fd1, 0x0fdf, 0x0fef, 0x0ffd,
- 0x0ffd, 0x1022, 0x103b, 0x103b, 0x1041, 0x1055, 0x1055, 0x1080,
- 0x1086, 0x10b6, 0x10be, 0x10d0, 0x10e2, 0x10f0, 0x110b, 0x1121,
- 0x1131, 0x113d, 0x1147, 0x116d, 0x117d, 0x1189, 0x119b, 0x11ab,
- 0x11bd, 0x1211, 0x1232, 0x1240, 0x1256, 0x126d, 0x12a6, 0x12b8,
- 0x12e2, 0x1309, 0x1317, 0x1327, 0x134b, 0x1357, 0x1357, 0x1361,
- // Entry 100 - 13F
- 0x136b, 0x138a, 0x1398, 0x13a6, 0x13dd, 0x13e7, 0x13f7, 0x1414,
- 0x1435, 0x1443, 0x1464, 0x1481, 0x14a0, 0x14bd, 0x14d6, 0x14f3,
- 0x1505, 0x152d, 0x153f, 0x1558, 0x156f, 0x1597, 0x15b0, 0x15dc,
- 0x15f4, 0x161b, 0x162d, 0x1637, 0x164e, 0x1667, 0x1673, 0x168c,
- 0x16a5, 0x16be, 0x16f5,
- },
- },
- { // ksb
- "AndolaFalme za KialabuAfuganistaniAntigua na BalbudaAnguillaAlbaniaAlmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MalekaniAustliaAustlaliaA" +
- "lubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiBukinafasoBulgal" +
- "iaBahaleniBulundiBeniniBelmudaBluneiBoliviaBlaziliBahamaButaniBotswa" +
- "naBelalusiBelizeKanadaJamhuli ya Kidemoklasia ya KongoJamhuli ya Afr" +
- "ika ya GatiKongoUswisiKodivaaVisiwa vya CookChileKameluniChinaKolomb" +
- "iaKostalikaKubaKepuvedeKuplosiJamhuli ya ChekiUjeumaniJibutiDenmakiD" +
- "ominikaJamhuli ya DominikaAljeliaEkwadoEstoniaMisliElitleaHispaniaUh" +
- "abeshiUfiniFijiVisiwa vya FalklandMiklonesiaUfalansaGaboniUingeezaGl" +
- "enadaJojiaGwiyana ya UfalansaGhanaJiblaltaGlinlandiGambiaGineGwadelu" +
- "peGinekwetaUgiikiGwatemalaGwamGinebisauGuyanaHonduasiKolasiaHaitiHun" +
- "galiaIndonesiaAyalandiIslaeliIndiaEneo ja Uingeeza mwe Bahali HindiI" +
- "lakiUajemiAislandiItaliaJamaikaYoldaniJapaniKenyaKiigizistaniKambodi" +
- "aKiibatiKomoloSantakitzi na NevisKolea KaskaziniKolea KusiniKuwaitiV" +
- "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSililank" +
- "aLibeliaLesotoLitwaniaLasembagiLativiaLibyaMolokoMonakoMoldovaBukini" +
- "Visiwa vya MashalMasedoniaMaliMyamaMongoliaVisiwa vya Maliana vya Ka" +
- "skaziniMaltinikiMaulitaniaMontselatiMaltaMolisiModivuMalawiMeksikoMa" +
- "lesiaMsumbijiNamibiaNyukaledoniaNaijaKisiwa cha NolfokNaijeliaNikala" +
- "gwaUholanziNolweiNepaliNauluNiueNyuzilandiOmaniPanamaPeluPolinesia y" +
- "a UfalansaPapuaFilipinoPakistaniPolandiSantapieli na MikeloniPitkail" +
- "niPwetolikoUkingo wa Maghalibi na Ukanda wa Gaza wa PalestinaUlenoPa" +
- "lauPalagwaiKataliLiyunioniLomaniaUlusiLwandaSaudiVisiwa vya SolomonS" +
- "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiela LeoniS" +
- "amalinoSenegaliSomaliaSulinamuSao Tome na PlincipeElsavadoSiliaUswaz" +
- "iVisiwa vya Tulki na KaikoChadiTogoTailandiTajikistaniTokelauTimoli " +
- "ya MashalikiTulukimenistaniTunisiaTongaUtulukiTlinidad na TobagoTuva" +
- "luTaiwaniTanzaniaUklainiUgandaMalekaniUlugwaiUzibekistaniVatikaniSan" +
- "tavisenti na GlenadiniVenezuelaVisiwa vya Vilgin vya UingeezaVisiwa " +
- "vya Vilgin vya MalekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMay" +
- "otteAflika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c0, 0x00ca,
- 0x00d2, 0x00da, 0x00e1, 0x00e7, 0x00e7, 0x00ee, 0x00f4, 0x00fb,
- 0x00fb, 0x0102, 0x0108, 0x010e, 0x010e, 0x0116, 0x011e, 0x0124,
- 0x012a, 0x012a, 0x014a, 0x0163, 0x0168, 0x016e, 0x0175, 0x0184,
- 0x0189, 0x0191, 0x0196, 0x019e, 0x019e, 0x01a7, 0x01ab, 0x01b3,
- 0x01b3, 0x01b3, 0x01ba, 0x01ca, 0x01d2, 0x01d2, 0x01d8, 0x01df,
- // Entry 40 - 7F
- 0x01e7, 0x01fa, 0x0201, 0x0201, 0x0207, 0x020e, 0x0213, 0x0213,
- 0x021a, 0x0222, 0x022a, 0x022a, 0x022f, 0x0233, 0x0246, 0x0250,
- 0x0250, 0x0258, 0x025e, 0x0266, 0x026d, 0x0272, 0x0285, 0x0285,
- 0x028a, 0x0292, 0x029b, 0x02a1, 0x02a5, 0x02ae, 0x02b7, 0x02bd,
- 0x02bd, 0x02c6, 0x02ca, 0x02d3, 0x02d9, 0x02d9, 0x02d9, 0x02e1,
- 0x02e8, 0x02ed, 0x02f5, 0x02f5, 0x02fe, 0x0306, 0x030d, 0x030d,
- 0x0312, 0x0333, 0x0338, 0x033e, 0x0346, 0x034c, 0x034c, 0x0353,
- 0x035a, 0x0360, 0x0365, 0x0371, 0x0379, 0x0380, 0x0386, 0x0399,
- // Entry 80 - BF
- 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee,
- 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b,
- 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0455, 0x045e,
- 0x0462, 0x0467, 0x046f, 0x046f, 0x048f, 0x0498, 0x04a2, 0x04ac,
- 0x04b1, 0x04b7, 0x04bd, 0x04c3, 0x04ca, 0x04d1, 0x04d9, 0x04e0,
- 0x04ec, 0x04f1, 0x0502, 0x050a, 0x0513, 0x051b, 0x0521, 0x0527,
- 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563,
- 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da,
- // Entry C0 - FF
- 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602,
- 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648,
- 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682,
- 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2,
- 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707,
- 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748,
- 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793,
- 0x07b1, 0x07cf, 0x07d8, 0x07df, 0x07ee, 0x07f3, 0x07f3, 0x07f9,
- // Entry 100 - 13F
- 0x0800, 0x080d, 0x0813, 0x081b,
- },
- },
- { // ksf
- "andɔrǝbǝlɔŋ bǝ kaksa bɛ táatáaŋzǝnafganistáŋantiga ri barbúdaangiyaalban" +
- "íarmɛníantíyǝ nɛlandéangólaarjǝntínsamɔa a amɛrikaotricɔstralíaruba" +
- "azabecánbɔsnyɛ ri hɛrsǝgɔvínbaabaadǝbaŋladɛ́cbɛljíkbukína fǝ́ asɔbul" +
- "garíbarǝ́nburundíbɛnǝ́nbɛɛmúdǝbrunǝ́bɔɔlívíbrɛsílbaamásbutánbotswana" +
- "bɛlarisbɛlizkanadakɔngó anyɔ́nsantrafríkkɔngóswískɔtiwuárzɛ i kúkcíl" +
- "ikamɛrúncínkolɔmbíkɔstaríkakubakapvɛrcíprɛcɛ́kdjɛrmandyibutídanmakdɔ" +
- "minikdɔminik rɛpublíkaljɛríɛkwatɛǝ́ɛstoníɛjíptɛritrɛ́kpanyáɛtyɔpífín" +
- "lanfíjizǝ maalwínmikronɛ́sipɛrɛsǝ́gabɔŋkǝlɔŋ kǝ kǝtáatáaŋzǝngrɛnadǝj" +
- "ɔrjíguyán i pɛrɛsǝ́gánajibraltágrínlangambíginɛ́gwadɛlúpginɛ́ ɛkwat" +
- "ɔrialgrɛ́kgwátǝmalagwámginɛ́ bisɔ́guyánɔnduraskrwasíayitiɔngríindon" +
- "ɛsíilánisraɛ́lindízǝ ingɛrís ncɔ́m wa indiirákiráŋzǝ i glásitalíjam" +
- "aíkjɔrdánjapɔ́ŋkɛnyakigistáŋkambodjkiribátikomɔrsɛnkrǝstɔ́f ri nyɛ́v" +
- "ǝkorɛanɔ́rkorɛasudkuwɛitzǝ i gankazakstáŋlaɔslibáŋsɛntlísílictɛnstɛ" +
- "́nsrílaŋkalibɛryalǝsótolitwaníluksɛmbúrlɛtonílibímarɔkmonakomɔldaví" +
- "madagaskazǝ i marcálmásǝdwánmalimyanmármɔŋolízǝ maryánnɔ́rmatiníkmwa" +
- "ritanímɔnsɛratmaltǝmwarísmaldivǝmalawimɛksíkmalɛsímosambíknamibíkalɛ" +
- "doní anyɔ́nnijɛ́rzɛ nɔ́fɔlknijɛ́ryaníkarágwakǝlɔŋ kǝ ázǝnɔrvɛjǝnɛpal" +
- "nwarúniwɛ́zɛlan anyɔ́nomanpanamapɛrúpɔlinɛsí a pɛrɛsǝ́papwazí ginɛ́ " +
- "anyɔ́nfilipǝ́npakistáŋpolɔ́nsɛnpyɛr ri mikɛlɔŋpitkɛ́npɔtoríkozǝ palɛ" +
- "stínǝportugálpalwaparagwɛ́katárɛunyɔŋrɔmanírisírwandaarabí saodízǝ s" +
- "alomɔ́nsɛcɛlsudanswɛdǝsiŋapósɛntɛ́lenslovɛníslovakísyɛraleonsɛnmarǝn" +
- "sɛnɛgalsomalísurinamsaotomɛ́ ri priŋsibsalvadɔrsiríswazilanzǝ tirk r" +
- "i kakɔscaádtogotɛlantadjikistaŋtokǝlaotimor anǝ á ɛsttirkmɛnistaŋtun" +
- "ɛsítɔŋatirkítɛrinitɛ ri tobagotuwalutɛwántanzaníukrainugandaamɛrika" +
- "urugwɛ́usbɛkistaŋwatikáŋsɛnvǝnsǝŋ ri grɛnadínwɛnǝzwɛlazǝ bɛ gɔn inɛ " +
- "a ingɛríszǝ bɛ gɔn inɛ á amɛrikawyɛtnámwanwatuwalis ri futunasamɔayɛ" +
- "mɛnmayɔ́tafrik anǝ a sudzambízimbabwɛ́",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x002d, 0x0039, 0x004b, 0x0051, 0x0058,
- 0x0060, 0x0072, 0x0079, 0x0079, 0x0083, 0x0094, 0x0099, 0x00a2,
- 0x00a7, 0x00a7, 0x00b0, 0x00ca, 0x00d3, 0x00df, 0x00e7, 0x00f9,
- 0x0101, 0x0109, 0x0111, 0x011a, 0x011a, 0x0125, 0x012d, 0x0138,
- 0x0138, 0x0140, 0x0147, 0x014d, 0x014d, 0x0155, 0x015d, 0x0163,
- 0x0169, 0x0169, 0x0179, 0x0184, 0x018b, 0x0190, 0x019a, 0x01a4,
- 0x01a9, 0x01b2, 0x01b6, 0x01bf, 0x01bf, 0x01ca, 0x01ce, 0x01d5,
- 0x01d5, 0x01d5, 0x01dc, 0x01e2, 0x01ea, 0x01ea, 0x01f2, 0x01f8,
- // Entry 40 - 7F
- 0x0200, 0x0213, 0x021b, 0x021b, 0x0227, 0x022f, 0x0236, 0x0236,
- 0x0240, 0x0247, 0x0250, 0x0250, 0x0257, 0x025c, 0x0268, 0x0274,
- 0x0274, 0x027f, 0x0286, 0x02a4, 0x02ad, 0x02b4, 0x02c8, 0x02c8,
- 0x02cd, 0x02d6, 0x02de, 0x02e4, 0x02eb, 0x02f5, 0x0309, 0x0310,
- 0x0310, 0x031b, 0x0320, 0x032f, 0x0335, 0x0335, 0x0335, 0x033d,
- 0x0344, 0x0349, 0x0350, 0x0350, 0x035a, 0x035f, 0x0368, 0x0368,
- 0x036d, 0x038a, 0x038f, 0x0395, 0x03a0, 0x03a6, 0x03a6, 0x03ad,
- 0x03b5, 0x03be, 0x03c4, 0x03ce, 0x03d5, 0x03de, 0x03e4, 0x0400,
- // Entry 80 - BF
- 0x040c, 0x0415, 0x041c, 0x0425, 0x0430, 0x0435, 0x043c, 0x0447,
- 0x0455, 0x045f, 0x0467, 0x046f, 0x0477, 0x0482, 0x048a, 0x048f,
- 0x0495, 0x049b, 0x04a4, 0x04a4, 0x04a4, 0x04ad, 0x04ba, 0x04c5,
- 0x04c9, 0x04d1, 0x04da, 0x04da, 0x04eb, 0x04f3, 0x04fd, 0x0507,
- 0x050d, 0x0514, 0x051c, 0x0522, 0x052a, 0x0532, 0x053b, 0x0542,
- 0x0555, 0x055d, 0x056b, 0x0575, 0x0580, 0x0592, 0x059c, 0x05a2,
- 0x05a8, 0x05af, 0x05be, 0x05c2, 0x05c8, 0x05ce, 0x05e7, 0x0600,
- 0x060a, 0x0614, 0x061c, 0x0633, 0x063c, 0x0646, 0x0656, 0x065f,
- // Entry C0 - FF
- 0x0664, 0x066e, 0x0673, 0x0673, 0x067d, 0x0685, 0x0685, 0x068a,
- 0x0690, 0x069d, 0x06ab, 0x06b2, 0x06b7, 0x06be, 0x06c6, 0x06d2,
- 0x06db, 0x06db, 0x06e3, 0x06ed, 0x06f7, 0x0700, 0x0707, 0x070e,
- 0x070e, 0x0724, 0x072d, 0x072d, 0x0732, 0x073a, 0x073a, 0x074c,
- 0x0751, 0x0751, 0x0755, 0x075b, 0x0767, 0x076f, 0x0781, 0x078f,
- 0x0797, 0x079d, 0x07a3, 0x07b7, 0x07bd, 0x07c4, 0x07cc, 0x07d2,
- 0x07d8, 0x07d8, 0x07e0, 0x07e9, 0x07f5, 0x07fe, 0x0819, 0x0825,
- 0x0842, 0x085f, 0x0868, 0x086f, 0x087e, 0x0884, 0x0884, 0x088b,
- // Entry 100 - 13F
- 0x0893, 0x08a3, 0x08a9, 0x08b4,
- },
- },
- { // ksh
- "AßensionAndorraVereinschte Arrabesche EmmirateAfjaanistahnAntigwa un Bar" +
- "budaAnggwillaAlbaanijeArrmeenijede Nederlängsche AntilleAngjoolader " +
- "SödpolAjjentiinijeAmmerikaanesch SammohaÖösterischAustraalijeArubade" +
- " Ohland-EnselleAsserbaidschahnBoßnije un Herzegovinade Ensel Barbado" +
- "sBangladeschBelljeBukkinna-FaaseBulljaarijeBachrainBurundidä Beninde" +
- " Zint Battälmi-Ensellede BermudasBruneiBolliivijede karribbesche Ned" +
- "erlängBrasilijede BahamasButtaande Buvee-EnselBozwaanaWießrußlandBel" +
- "izeKanadade Kokkos-Enselledä Konggo (Kinschasa)de Zäntraalaffrikaane" +
- "sche Republikdä Konggo (Brassavill)de SchweizÄlfebeijn-Kößde Kuuk-En" +
- "selleSchiileKammeruhnSchiinaKolumbijede Klipperton-EnselKostarikaKub" +
- "ade kapvärdesche EnselleCuraçaode Weihnaachs-EnselZüpperede Tschäsch" +
- "eiDoütschlandde Diego-Garcia-EnselDschibuttiDänemarkDominnikade Domm" +
- "enekaanesche ReppublikAlljeerijeZe’uta un MeliijaÄkwadorÄßlandÄjüpte" +
- "Wäß-SaharaÄritrejaSchpaanijeÄttijoopijede Europäjesche UnijonFinnlan" +
- "dde Fidschi-Endellede Falkland-EnselleMikroneesijede Färrör-EnselleF" +
- "rankrischJabuhnJruußbrettannijeJrenaadaJeorrjijeFranzüüsesch Jujaana" +
- "JöönseiJaanaJibralltaaJröhnlandJambijaJinnehaJuadeluppÄquatorial Jin" +
- "eejaJrieschelandSöd-Jeorjie un de södlijje Botteramms-EnselleJuwatem" +
- "aalaJuhamJinneha_BißauJujaanaHongkongde Heart Ensel un de McDonald-E" +
- "nselleHondurasKrowazijeHa’ittiUnjannde Kannaresche EnselleIndoneesij" +
- "eIrrlandIßraälde Ensel MänIndijeBrettesche Besezunge em indesche Ooz" +
- "ejahnIrakPersijeIßlandItaalijeJöösehJammaikaJordaanijeJapanKeenijaKi" +
- "rrjiisijeKambodschaKiribatide KommooreZint Kitts un NevisNood-Koreja" +
- "Söd-KorejaKuweitde Kaiman-EnselleKassakstahnLa’osLebbannonde Ensel Z" +
- "int-LutschaLischteschteinSri LankaLibeerijaLesootoLittaueLuxembursch" +
- "LätlandLibbijeMarokkoMonakkoMoldaavijeet Monteneejrode Zint-Määtes-E" +
- "nselMaddajaskade Machschall-EnselleMazedoonijeMaaliBirmaMongjoleiMak" +
- "aude nöödlijje Marijanne-EnselleMachtinikMautitaanijeMongßerratMalta" +
- "MaurizijusMallediiveMalawiMäxikoMalaisijeMosambikNamiibijeNeuschottl" +
- "andNijerde Noofok-EnselNikaraaguaNikaraaguwade NederlängNorrweejeNep" +
- "allNauruNiueNeuseelandOmanPannamaPerruhFranzüüsesch PollineesijePapu" +
- "wa NeujineejaFillipiinePakistahnPoleZint Pjäär un Mikelongde Pitkärn" +
- "-EnselPochtorikoPalästinaPochtojallPallauParraguwaiKataaOzejaanije u" +
- "ßerhallefRehunjohnRomäänijeSärbijeRußlandRuandaSaudi Arraabijede So" +
- "lomone-Ensellede SeischälleNoodsudahnSchweedeSingjapuurde Ensel Zint" +
- " Hellenaẞloveenijede Enselle Svalbard un Jan MayenẞlovakeiSjärra Lej" +
- "oneSan-Marinoder SennejallSomaalijeSürinammSödsudahnZint Tommeh un P" +
- "rintschipeÄl SlavadoorZint MaartenSürijeẞwaasilandTristan da Cunjade" +
- " Enselle Turks un Kaikosder TschaddFranzüüsesche Södsee-EnselleToojo" +
- "TailandTadschikistahnTokelauOß-TimorTurkmenistahnTuneesijeTonggade T" +
- "örkeiTrinidad un TobääjoTuvaluTaiwanTansanijade Ukra’iineUjandade V" +
- "ereineschte Schtaate vun Amärrika ier ußerhallef jelääje Enselschede" +
- " vereineschte Schtaate vun AmmärrikaUrrujwaiUßbeekistahnder Vattikah" +
- "nZint Vinzänz un de Jrenadines-EnselleVenezuelade brettesche Juffer-" +
- "Ensellede ammärrikahnesche Juffer-EnselleVijätnammVanuatuWallis un F" +
- "utunaSammohaKosovoJämmeMajottde Republik SödaffrikaSambijaSimbabwe- " +
- "Jääjend onbikannt -de ÄädAffrikaNood-AmärrikaSöd-AmärrikaOzejaanijeW" +
- "äß-AffrikaMeddelammärrikaOß-AffrikaNood-AffrikaMeddel-AffrikaSöd-Af" +
- "frikaAmmärrikader Norde vun Amärrikade KarribikOß-AasijeSöd-AasijeSö" +
- "d-Oß-AasijeSöd-Europpade Rejjohn öm AustraalijeMellaneesijede Rejohn" +
- " vun MikroneesejePolineesijeAasijeMeddelaasijeWäß-AasijeEuroppaOß-Eu" +
- "roppaNood-EuroppaWäß-EuroppaLateinamärrika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002f, 0x003b, 0x004d, 0x0056, 0x005f,
- 0x0069, 0x0082, 0x008a, 0x0095, 0x00a1, 0x00b7, 0x00c3, 0x00ce,
- 0x00d3, 0x00e4, 0x00f3, 0x010a, 0x011b, 0x0126, 0x012c, 0x013a,
- 0x0145, 0x014d, 0x0154, 0x015d, 0x0176, 0x0181, 0x0187, 0x0191,
- 0x01ab, 0x01b4, 0x01be, 0x01c5, 0x01d3, 0x01db, 0x01e8, 0x01ee,
- 0x01f4, 0x0205, 0x021b, 0x023e, 0x0255, 0x025f, 0x026f, 0x027e,
- 0x0285, 0x028e, 0x0295, 0x029e, 0x02b1, 0x02ba, 0x02be, 0x02d6,
- 0x02de, 0x02f1, 0x02f9, 0x0307, 0x0313, 0x0328, 0x0332, 0x033b,
- // Entry 40 - 7F
- 0x0344, 0x0361, 0x036b, 0x037e, 0x0386, 0x038e, 0x0396, 0x03a2,
- 0x03ab, 0x03b5, 0x03c1, 0x03d8, 0x03e0, 0x03f2, 0x0405, 0x0411,
- 0x0424, 0x042e, 0x0434, 0x0445, 0x044d, 0x0456, 0x046c, 0x0475,
- 0x047a, 0x0484, 0x048e, 0x0495, 0x049c, 0x04a5, 0x04b8, 0x04c4,
- 0x04f3, 0x04fe, 0x0503, 0x0511, 0x0518, 0x0520, 0x0545, 0x054d,
- 0x0556, 0x055f, 0x0565, 0x057b, 0x0586, 0x058d, 0x0595, 0x05a2,
- 0x05a8, 0x05d1, 0x05d5, 0x05dc, 0x05e3, 0x05eb, 0x05f3, 0x05fb,
- 0x0605, 0x060a, 0x0611, 0x061c, 0x0626, 0x062e, 0x0639, 0x064c,
- // Entry 80 - BF
- 0x0657, 0x0662, 0x0668, 0x0679, 0x0684, 0x068b, 0x0694, 0x06a9,
- 0x06b7, 0x06c0, 0x06c9, 0x06d0, 0x06d7, 0x06e2, 0x06ea, 0x06f1,
- 0x06f8, 0x06ff, 0x0709, 0x0717, 0x072d, 0x0737, 0x074c, 0x0757,
- 0x075c, 0x0761, 0x076a, 0x076f, 0x078f, 0x0798, 0x07a4, 0x07af,
- 0x07b4, 0x07be, 0x07c8, 0x07ce, 0x07d5, 0x07de, 0x07e6, 0x07ef,
- 0x07fc, 0x0801, 0x0810, 0x081a, 0x0825, 0x0832, 0x083b, 0x0841,
- 0x0846, 0x084a, 0x0854, 0x0858, 0x085f, 0x0865, 0x0880, 0x0891,
- 0x089b, 0x08a4, 0x08a8, 0x08c0, 0x08d1, 0x08db, 0x08e5, 0x08ef,
- // Entry C0 - FF
- 0x08f5, 0x08ff, 0x0904, 0x091a, 0x0923, 0x092e, 0x0936, 0x093e,
- 0x0944, 0x0953, 0x0966, 0x0974, 0x097e, 0x0986, 0x0990, 0x09a5,
- 0x09b1, 0x09d1, 0x09db, 0x09e9, 0x09f3, 0x0a00, 0x0a09, 0x0a12,
- 0x0a1c, 0x0a36, 0x0a43, 0x0a4f, 0x0a56, 0x0a62, 0x0a72, 0x0a8c,
- 0x0a97, 0x0ab6, 0x0abb, 0x0ac2, 0x0ad0, 0x0ad7, 0x0ae0, 0x0aed,
- 0x0af6, 0x0afc, 0x0b06, 0x0b1b, 0x0b21, 0x0b27, 0x0b30, 0x0b3e,
- 0x0b44, 0x0b8e, 0x0bb5, 0x0bbd, 0x0bca, 0x0bd7, 0x0bfd, 0x0c06,
- 0x0c22, 0x0c45, 0x0c4f, 0x0c56, 0x0c66, 0x0c6d, 0x0c73, 0x0c79,
- // Entry 100 - 13F
- 0x0c7f, 0x0c96, 0x0c9d, 0x0ca5, 0x0cbc, 0x0cc4, 0x0ccb, 0x0cd9,
- 0x0ce7, 0x0cf1, 0x0cfe, 0x0d0e, 0x0d19, 0x0d25, 0x0d33, 0x0d3f,
- 0x0d49, 0x0d60, 0x0d6b, 0x0d75, 0x0d80, 0x0d8f, 0x0d9b, 0x0db5,
- 0x0dc1, 0x0ddb, 0x0de6, 0x0dec, 0x0df8, 0x0e04, 0x0e0b, 0x0e16,
- 0x0e22, 0x0e2f, 0x0e3e,
- },
- },
- { // kw
- "Rywvaneth Unys",
- []uint16{ // 84 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x000e,
- },
- },
- { // ky
- kyRegionStr,
- kyRegionIdx,
- },
- { // lag
- "AndóraɄtemi wa KɨaráabuAfuganisitáaniAntigúua na BaribúudaAnguíilaAlubán" +
- "iaAriméniaAntili ya ɄholáanziAngóolaAjentíinaSamóoa ya Amerɨ́kaÁusit" +
- "iriaAusiteréeliaArúubaAzabajáaniBósiniaBabadóosiBangaladéeshiɄbeligí" +
- "ijiBukinafáasoBuligaríaBaharéeniBurúundiBeníiniBerimúudaBurunéeiBolí" +
- "viaBrasíiliBaháamaButáaniBotiswáanaBelarúusiBelíiseKánadaJamuhúuri y" +
- "a Kɨdemokurasía ya KóongoJuhúuri ya Afɨrɨka ya katɨ katɨKóongoUswíis" +
- "iIvori KositiVisíiwa vya KúukuChíileKamerúuniChíinaKolómbiaKósita Rɨ" +
- "́ɨkaKyúubaKepuvéedeKupuróosiJamuhúuri ya ChéekiɄjerumáaniJibúutiDen" +
- "imakiDomínɨkaJamuhúuri ya DominɨkaAlijériaÍkwadoEstoníaMísiriEritere" +
- "aHisipániaɄhabéeshiUfíiniFíijiVisíiwa vya FakulandiMikironésiaɄfaráa" +
- "nsaGabóoniɄɨngeréesaGirenáadaJójiaGwiyáana yʉ ɄfaráansaGáanaJiburáli" +
- "taGiriniláandiGámbiaGíineGwadelúupeGíine IkwéetaUgiríkiGwatemáalaGwa" +
- "niGíine BisáauGuyáanaHonduráasiKoréshiaHaíitiHungáriaIndonésiaAyaláa" +
- "ndiIsiraéeliÍndiaƗsɨ yʉ Ʉɨngeréesa irivii ra HíindiIráakiɄajéemiAisi" +
- "láandiItáliaJamáikaJódaniJapáaniKéenyaKirigisitáaniKambódiaKiribáati" +
- "KomóoroMʉtakatíifu kitisi na NevíisiKoréa yʉ ʉtʉrʉkoKoréa ya SaameKʉ" +
- "wáitiVisíiwa vya KayimaniKazakasitáaniLaóosiLebanóoniMʉtakatíifu Lus" +
- "íiaLishentéeniSiriláankaLiibériaLesóotoLisuániaLasembáagiLativiaLíb" +
- "iaMoróokoMonáakoMolidóovaBukíiniVisíiwa vya MarisháaliMasedóniaMáali" +
- "MiáamaMongóliaVisiwa vya Mariana vya KaskaziniMaritiníikiMoritániaMo" +
- "nteráatiMálitaMoríisiModíivuMaláawiMekisikoMaleísiaMusumbíijiNamíbia" +
- "Kaledónia IfyaNíijaKisíiwa cha NofifóokiNiijériaNikarágʉaɄholáanziNo" +
- "rweNepáaliNaúuruNiúueNyuzílandiÓmaniPanáamaPéeruPolinésia yʉ Ʉfaráan" +
- "saPapúuaUfilipíinoPakisitáaniPólandiMʉtakatíifu Peéteri na MɨkaéeliP" +
- "atikaíriniPwetorɨ́ɨkoMweemberera wa kʉmweeri wa GáazaɄréenoPaláauPar" +
- "aguáaiKatáariReyunióoniRomaníiaUrúusiRwáandaSaudíia ArabíiaVisíiwa v" +
- "ya SolomóoniShelishéeliSudáaniUswíidiSingapooMʉtakatíifu HeléenaSulo" +
- "véniaSulováakiaSeraleóoniSamaríinoSenegáaliSomáliaSurináamuSao Tóome" +
- " na PirinsipeElisalivadoSíriaɄswáaziVisíiwa vya Turíiki na KaíikoChá" +
- "adiTóogoTáilandiTajikisitáaniTokeláauTimóori yi ItʉʉmbaUturukimenisi" +
- "táaniTunísiaTóongaUturúukiTiriníida ya TobáagoTuváaluTaiwáaniTaansan" +
- "íaɄkɨréeniɄgáandaAmerɨkaUruguáaiUsibekisitáaniVatikáaniMʉtakatíifu " +
- "Viséenti na GernadíiniVenezuéelaVisíiwa vya Vigíini vya ɄɨngeréesaVi" +
- "síiwa vya Vigíini vya Amerɨ́kaVietináamuVanuáatuWalíisi na FutúunaSa" +
- "móoaYémeniMayóoteAfɨrɨka ya SaameSámbiaSimbáabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001b, 0x002a, 0x0041, 0x004a, 0x0053,
- 0x005c, 0x0071, 0x0079, 0x0079, 0x0083, 0x0098, 0x00a2, 0x00af,
- 0x00b6, 0x00b6, 0x00c1, 0x00c9, 0x00d3, 0x00e1, 0x00ed, 0x00f9,
- 0x0103, 0x010d, 0x0116, 0x011e, 0x011e, 0x0128, 0x0131, 0x0139,
- 0x0139, 0x0142, 0x014a, 0x0152, 0x0152, 0x015d, 0x0167, 0x016f,
- 0x0176, 0x0176, 0x019e, 0x01c2, 0x01c9, 0x01d1, 0x01dd, 0x01f0,
- 0x01f7, 0x0201, 0x0208, 0x0211, 0x0211, 0x0222, 0x0229, 0x0233,
- 0x0233, 0x0233, 0x023d, 0x0252, 0x025e, 0x025e, 0x0266, 0x026e,
- // Entry 40 - 7F
- 0x0278, 0x028f, 0x0298, 0x0298, 0x029f, 0x02a7, 0x02ae, 0x02ae,
- 0x02b6, 0x02c0, 0x02cb, 0x02cb, 0x02d2, 0x02d8, 0x02ee, 0x02fa,
- 0x02fa, 0x0305, 0x030d, 0x031a, 0x0324, 0x032a, 0x0343, 0x0343,
- 0x0349, 0x0354, 0x0361, 0x0368, 0x036e, 0x0379, 0x0388, 0x0390,
- 0x0390, 0x039b, 0x03a0, 0x03ae, 0x03b6, 0x03b6, 0x03b6, 0x03c1,
- 0x03ca, 0x03d1, 0x03da, 0x03da, 0x03e4, 0x03ee, 0x03f8, 0x03f8,
- 0x03fe, 0x0427, 0x042e, 0x0437, 0x0442, 0x0449, 0x0449, 0x0451,
- 0x0458, 0x0460, 0x0467, 0x0475, 0x047e, 0x0488, 0x0490, 0x04b0,
- // Entry 80 - BF
- 0x04c5, 0x04d4, 0x04dd, 0x04f2, 0x0500, 0x0507, 0x0511, 0x0526,
- 0x0532, 0x053d, 0x0546, 0x054e, 0x0557, 0x0562, 0x0569, 0x056f,
- 0x0577, 0x057f, 0x0589, 0x0589, 0x0589, 0x0591, 0x05a9, 0x05b3,
- 0x05b9, 0x05c0, 0x05c9, 0x05c9, 0x05e9, 0x05f5, 0x05ff, 0x060a,
- 0x0611, 0x0619, 0x0621, 0x0629, 0x0631, 0x063a, 0x0645, 0x064d,
- 0x065c, 0x0662, 0x0679, 0x0682, 0x068d, 0x0698, 0x069d, 0x06a5,
- 0x06ac, 0x06b2, 0x06bd, 0x06c3, 0x06cb, 0x06d1, 0x06eb, 0x06f2,
- 0x06fd, 0x0709, 0x0711, 0x0735, 0x0741, 0x074f, 0x0771, 0x0779,
- // Entry C0 - FF
- 0x0780, 0x078a, 0x0792, 0x0792, 0x079d, 0x07a6, 0x07a6, 0x07ad,
- 0x07b5, 0x07c6, 0x07dd, 0x07e9, 0x07f1, 0x07f9, 0x0801, 0x0817,
- 0x0821, 0x0821, 0x082c, 0x0837, 0x0841, 0x084b, 0x0853, 0x085d,
- 0x085d, 0x0874, 0x087f, 0x087f, 0x0885, 0x088e, 0x088e, 0x08ae,
- 0x08b5, 0x08b5, 0x08bb, 0x08c4, 0x08d2, 0x08db, 0x08f0, 0x0903,
- 0x090b, 0x0912, 0x091b, 0x0931, 0x0939, 0x0942, 0x094c, 0x0957,
- 0x0960, 0x0960, 0x0968, 0x0971, 0x0980, 0x098a, 0x09b0, 0x09bb,
- 0x09e2, 0x0a06, 0x0a11, 0x0a1a, 0x0a2e, 0x0a35, 0x0a35, 0x0a3c,
- // Entry 100 - 13F
- 0x0a44, 0x0a56, 0x0a5d, 0x0a67,
- },
- },
- { // lb
- "AscensionAndorraVereenegt Arabesch EmiraterAfghanistanAntigua a BarbudaA" +
- "nguillaAlbanienArmenienAngolaAntarktisArgentinienAmerikanesch-SamoaÉ" +
- "isträichAustralienArubaÅlandinselenAserbaidschanBosnien an Herzegowi" +
- "naBarbadosBangladeschBelschBurkina FasoBulgarienBahrainBurundiBeninS" +
- "aint-BarthélemyBermudaBruneiBolivienKaribescht HollandBrasilienBaham" +
- "asBhutanBouvetinselBotsuanaWäissrusslandBelizeKanadaKokosinselenKong" +
- "o-KinshasaZentralafrikanesch RepublikKongo-BrazzavilleSchwäizCôte d’" +
- "IvoireCookinselenChileKamerunChinaKolumbienClipperton-InselCosta Ric" +
- "aKubaKap VerdeCuraçaoChrëschtdagsinselZypernTschechienDäitschlandDie" +
- "go GarciaDschibutiDänemarkDominicaDominikanesch RepublikAlgerienCeut" +
- "a a MelillaEcuadorEstlandEgyptenWestsaharaEritreaSpanienEthiopienEur" +
- "opäesch UniounFinnlandFidschiFalklandinselenMikronesienFäröerFrankrä" +
- "ichGabunGroussbritannienGrenadaGeorgienGuayaneGuernseyGhanaGibraltar" +
- "GrönlandGambiaGuineaGuadeloupeEquatorialguineaGriichelandSüdgeorgien" +
- " an déi Südlech SandwichinselenGuatemalaGuamGuinea-BissauGuyanaSpezi" +
- "alverwaltungszon Hong KongHeard- a McDonald-InselenHondurasKroatienH" +
- "aitiUngarnKanaresch InselenIndonesienIrlandIsraelIsle of ManIndienBr" +
- "itescht Territorium am Indeschen OzeanIrakIranIslandItalienJerseyJam" +
- "aikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. Kitts" +
- " an NevisNordkoreaSüdkoreaKuwaitKaimaninselenKasachstanLaosLibanonSt" +
- ". LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLëtzebuergLettland" +
- "LibyenMarokkoMonacoMoldawienMontenegroSt. MartinMadagaskarMarshallin" +
- "selenMazedonienMaliMyanmarMongoleiSpezialverwaltungszon MacauNërdlec" +
- "h MarianenMartiniqueMauretanienMontserratMaltaMauritiusMaldivenMalaw" +
- "iMexikoMalaysiaMosambikNamibiaNeikaledonienNigerNorfolkinselNigeriaN" +
- "icaraguaHollandNorwegenNepalNauruNiueNeiséilandOmanPanamaPeruFranséi" +
- "sch-PolynesienPapua-NeiguineaPhilippinnenPakistanPolenSt. Pierre a M" +
- "iquelonPitcairninselenPuerto RicoPalestinensesch AutonomiegebidderPo" +
- "rtugalPalauParaguayKatarBaussecht OzeanienRéunionRumänienSerbienRuss" +
- "landRuandaSaudi-ArabienSalomonenSeychellenSudanSchwedenSingapurSt. H" +
- "elenaSlowenienSvalbard a Jan MayenSlowakeiSierra LeoneSan MarinoSene" +
- "galSomaliaSurinameSüdsudanSão Tomé a PríncipeEl SalvadorSint Maarten" +
- "SyrienSwasilandTristan da CunhaTurks- a CaicosinselenTschadFranséisc" +
- "h Süd- an AntarktisgebidderTogoThailandTadschikistanTokelauOsttimorT" +
- "urkmenistanTunesienTongaTierkeiTrinidad an TobagoTuvaluTaiwanTansani" +
- "aUkrainUgandaAmerikanesch-OzeanienVereenegt Staate vun AmerikaUrugua" +
- "yUsbekistanVatikanstadSt. Vincent an d’GrenadinnenVenezuelaBritesch " +
- "JoffereninselenAmerikanesch JoffereninselenVietnamVanuatuWallis a Fu" +
- "tunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbabweOnbekannt RegiounW" +
- "eltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaMëttelamerikaOstafri" +
- "kaNordafrikaZentralafrikaSüdlecht AfrikaAmerikaNërdlecht AmerikaKari" +
- "bikOstasienSüdasienSüdostasienSüdeuropaAustralien an NeiséilandMelan" +
- "esienMikronesescht InselgebittPolynesienAsienZentralasienWestasienEu" +
- "ropaOsteuropaNordeuropaWesteuropaLatäinamerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057,
- 0x005f, 0x005f, 0x0065, 0x006e, 0x0079, 0x008b, 0x0096, 0x00a0,
- 0x00a5, 0x00b2, 0x00bf, 0x00d5, 0x00dd, 0x00e8, 0x00ee, 0x00fa,
- 0x0103, 0x010a, 0x0111, 0x0116, 0x0127, 0x012e, 0x0134, 0x013c,
- 0x014e, 0x0157, 0x015e, 0x0164, 0x016f, 0x0177, 0x0185, 0x018b,
- 0x0191, 0x019d, 0x01ab, 0x01c6, 0x01d7, 0x01df, 0x01ef, 0x01fa,
- 0x01ff, 0x0206, 0x020b, 0x0214, 0x0224, 0x022e, 0x0232, 0x023b,
- 0x0243, 0x0255, 0x025b, 0x0265, 0x0271, 0x027d, 0x0286, 0x028f,
- // Entry 40 - 7F
- 0x0297, 0x02ad, 0x02b5, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e3,
- 0x02ea, 0x02f1, 0x02fa, 0x030c, 0x0314, 0x031b, 0x032a, 0x0335,
- 0x033d, 0x0348, 0x034d, 0x035d, 0x0364, 0x036c, 0x0373, 0x037b,
- 0x0380, 0x0389, 0x0392, 0x0398, 0x039e, 0x03a8, 0x03b8, 0x03c3,
- 0x03f0, 0x03f9, 0x03fd, 0x040a, 0x0410, 0x042f, 0x0448, 0x0450,
- 0x0458, 0x045d, 0x0463, 0x0474, 0x047e, 0x0484, 0x048a, 0x0495,
- 0x049b, 0x04c3, 0x04c7, 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5,
- 0x04ee, 0x04f3, 0x04f8, 0x0503, 0x050d, 0x0515, 0x051c, 0x052e,
- // Entry 80 - BF
- 0x0537, 0x0540, 0x0546, 0x0553, 0x055d, 0x0561, 0x0568, 0x0571,
- 0x057e, 0x0587, 0x058e, 0x0595, 0x059c, 0x05a7, 0x05af, 0x05b5,
- 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05df, 0x05e9, 0x05f8, 0x0602,
- 0x0606, 0x060d, 0x0615, 0x0630, 0x0642, 0x064c, 0x0657, 0x0661,
- 0x0666, 0x066f, 0x0677, 0x067d, 0x0683, 0x068b, 0x0693, 0x069a,
- 0x06a7, 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06cf, 0x06d7, 0x06dc,
- 0x06e1, 0x06e5, 0x06f0, 0x06f4, 0x06fa, 0x06fe, 0x0714, 0x0723,
- 0x072f, 0x0737, 0x073c, 0x0751, 0x0760, 0x076b, 0x078c, 0x0794,
- // Entry C0 - FF
- 0x0799, 0x07a1, 0x07a6, 0x07b8, 0x07c0, 0x07c9, 0x07d0, 0x07d8,
- 0x07de, 0x07eb, 0x07f4, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081d,
- 0x0826, 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0866, 0x086e,
- 0x0877, 0x088d, 0x0898, 0x08a4, 0x08aa, 0x08b3, 0x08c3, 0x08d9,
- 0x08df, 0x0905, 0x0909, 0x0911, 0x091e, 0x0925, 0x092d, 0x0939,
- 0x0941, 0x0946, 0x094d, 0x095f, 0x0965, 0x096b, 0x0973, 0x0979,
- 0x097f, 0x0994, 0x09b0, 0x09b7, 0x09c1, 0x09cc, 0x09ea, 0x09f3,
- 0x0a0b, 0x0a27, 0x0a2e, 0x0a35, 0x0a44, 0x0a49, 0x0a4f, 0x0a54,
- // Entry 100 - 13F
- 0x0a5b, 0x0a65, 0x0a6b, 0x0a73, 0x0a84, 0x0a88, 0x0a8e, 0x0a99,
- 0x0aa4, 0x0aac, 0x0ab6, 0x0ac4, 0x0acd, 0x0ad7, 0x0ae4, 0x0af4,
- 0x0afb, 0x0b0d, 0x0b14, 0x0b1c, 0x0b25, 0x0b31, 0x0b3b, 0x0b54,
- 0x0b5e, 0x0b77, 0x0b81, 0x0b86, 0x0b92, 0x0b9b, 0x0ba1, 0x0baa,
- 0x0bb4, 0x0bbe, 0x0bcc,
- },
- },
- { // lg
- "AndoraEmireetiAfaganisitaniAntigwa ne BarabudaAngwilaAlibaniyaArameniyaB" +
- "izinga bya Antile eby’abaHolandiAngolaArigentinaSamowa omumerikaAwus" +
- "ituriyaAwusitureliyaArubaAzerebayijaaniBoziniya HezegovinaBarabadosi" +
- "BangaladesiBubirigiBurukina FasoBulugariyaBaareeniBurundiBeniniBerem" +
- "udaBurunayiBoliviyaBuraziiriBahamasiButaaniBotiswanaBelarusiBelizeKa" +
- "nadaKongo - ZayireLipubulika eya SenturafirikiKongoSwitizirandiKote " +
- "DivwaBizinga bya KkukiCileKameruuniCayinaKolombyaKosita RikaCubaBizi" +
- "nga by’e Kepu VerediSipuriyaLipubulika ya CeekaBudaakiJjibutiDenimaa" +
- "kaDominikaLipubulika ya DominikaAligeryaEkwadoEsitoniyaMisiriEriture" +
- "yaSipeyiniEsyopyaFinilandiFijiBizinga by’eFalikalandiMikuronezyaBufa" +
- "lansaGaboniBungerezaGurenadaGyogyaGuyana enfalansaGanaGiburalitaGure" +
- "nelandiGambyaGiniGwadalupeGayana ey’oku ekwetaBugereeki/BuyonaaniGwa" +
- "temalaGwamuGini-BisawuGayanaHundurasiKurowesyaHayitiHangareYindonezy" +
- "aAyalandiYisirayeriBuyindiBizinga by’eCagoYiraakaYiraaniAyisirandiYi" +
- "taleJamayikaYorodaniJapaniKenyaKirigizisitaaniKambodyaKiribatiBizing" +
- "a by’eKomoroSenti Kitisi ne NevisiKoreya ey’omumambukaKoreya ey’omum" +
- "aserengetaKuwetiBizinga ebya KayimaaniKazakisitaaniLawosiLebanoniSen" +
- "ti LuciyaLicitensitayiniSirilankaLiberyaLesosoLisuwenyaLukisembaagaL" +
- "ativyaLibyaMorokoMonakoMolodovaMadagasikaBizinga bya MarisoMasedoniy" +
- "aMaliMyanimaMongoliyaBizinga bya Mariyana eby’omumambukaMaritiniikiM" +
- "awulitenyaMonteseraatiMalitaMawulisyasiBizinga by’eMalidiveMalawiMek" +
- "isikoMalezyaMozambiikiNamibiyaKaledonya mupyaNijeKizinga ky’eNorofok" +
- "oNayijeryaNikaraguwaHolandiNoweNepaloNawuruNiyuweNiyuziirandiOmaaniP" +
- "anamaPeruPolinesiya enfalansaPapwa NyuginiBizinga bya FiripinoPakisi" +
- "taaniPolandiSenti Piyere ne MikeloniPitikeeniPotorikoPalesitayiniPot" +
- "ugaaliPalawuParagwayiKataaLeyunyoniLomaniyaLasaRwandaSawudarebya - B" +
- "uwarabuBizanga by’eSolomooniSesereSudaaniSwideniSingapowaSenti Heren" +
- "aSirovenyaSirovakyaSiyeralewoneSanimarinoSenegaaloSomaliyaSurinaamuS" +
- "anitome ne PurincipeEl salivadoSiriyaSwazirandiBizinga by’eTaaka ne " +
- "KayikosiCaadiTogoTayirandiTajikisitaaniTokelawuTimowaTakimenesitaani" +
- "TunisyaTongaTtakeTurindaadi ne TobagoTuvaluTayiwaniTanzaniyaYukurayi" +
- "neYugandaAmerikaWurugwayiWuzibekisitaaniVatikaaniSenti Vinsenti ne G" +
- "urendadiiniVenzweraBizinga ebya Virigini ebitwalibwa BungerezaBizing" +
- "a bya Virigini eby’AmerikaVyetinaamuVanawuwatuWalisi ne FutunaSamowa" +
- "YemeniMayotteSawusafirikaZambyaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e,
- 0x0047, 0x006a, 0x0070, 0x0070, 0x007a, 0x008a, 0x0095, 0x00a2,
- 0x00a7, 0x00a7, 0x00b5, 0x00c8, 0x00d2, 0x00dd, 0x00e5, 0x00f2,
- 0x00fc, 0x0104, 0x010b, 0x0111, 0x0111, 0x0119, 0x0121, 0x0129,
- 0x0129, 0x0132, 0x013a, 0x0141, 0x0141, 0x014a, 0x0152, 0x0158,
- 0x015e, 0x015e, 0x016c, 0x0188, 0x018d, 0x0199, 0x01a3, 0x01b4,
- 0x01b8, 0x01c1, 0x01c7, 0x01cf, 0x01cf, 0x01da, 0x01de, 0x01f8,
- 0x01f8, 0x01f8, 0x0200, 0x0213, 0x021a, 0x021a, 0x0221, 0x022a,
- // Entry 40 - 7F
- 0x0232, 0x0248, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265,
- 0x026e, 0x0276, 0x027d, 0x027d, 0x0286, 0x028a, 0x02a3, 0x02ae,
- 0x02ae, 0x02b7, 0x02bd, 0x02c6, 0x02ce, 0x02d4, 0x02e4, 0x02e4,
- 0x02e8, 0x02f2, 0x02fd, 0x0303, 0x0307, 0x0310, 0x0326, 0x0339,
- 0x0339, 0x0342, 0x0347, 0x0352, 0x0358, 0x0358, 0x0358, 0x0361,
- 0x036a, 0x0370, 0x0377, 0x0377, 0x0381, 0x0389, 0x0393, 0x0393,
- 0x039a, 0x03ac, 0x03b3, 0x03ba, 0x03c4, 0x03ca, 0x03ca, 0x03d2,
- 0x03da, 0x03e0, 0x03e5, 0x03f4, 0x03fc, 0x0404, 0x0418, 0x042e,
- // Entry 80 - BF
- 0x0444, 0x045e, 0x0464, 0x047a, 0x0487, 0x048d, 0x0495, 0x04a1,
- 0x04b0, 0x04b9, 0x04c0, 0x04c6, 0x04cf, 0x04db, 0x04e2, 0x04e7,
- 0x04ed, 0x04f3, 0x04fb, 0x04fb, 0x04fb, 0x0505, 0x0517, 0x0521,
- 0x0525, 0x052c, 0x0535, 0x0535, 0x055a, 0x0565, 0x0570, 0x057c,
- 0x0582, 0x058d, 0x05a3, 0x05a9, 0x05b1, 0x05b8, 0x05c2, 0x05ca,
- 0x05d9, 0x05dd, 0x05f3, 0x05fc, 0x0606, 0x060d, 0x0611, 0x0617,
- 0x061d, 0x0623, 0x062f, 0x0635, 0x063b, 0x063f, 0x0653, 0x0660,
- 0x0674, 0x067f, 0x0686, 0x069e, 0x06a7, 0x06af, 0x06bb, 0x06c4,
- // Entry C0 - FF
- 0x06ca, 0x06d3, 0x06d8, 0x06d8, 0x06e1, 0x06e9, 0x06e9, 0x06ed,
- 0x06f3, 0x0709, 0x0720, 0x0726, 0x072d, 0x0734, 0x073d, 0x0749,
- 0x0752, 0x0752, 0x075b, 0x0767, 0x0771, 0x077a, 0x0782, 0x078b,
- 0x078b, 0x07a0, 0x07ab, 0x07ab, 0x07b1, 0x07bb, 0x07bb, 0x07da,
- 0x07df, 0x07df, 0x07e3, 0x07ec, 0x07f9, 0x0801, 0x0807, 0x0816,
- 0x081d, 0x0822, 0x0827, 0x083b, 0x0841, 0x0849, 0x0852, 0x085c,
- 0x0863, 0x0863, 0x086a, 0x0873, 0x0882, 0x088b, 0x08a9, 0x08b1,
- 0x08dc, 0x08fe, 0x0908, 0x0912, 0x0922, 0x0928, 0x0928, 0x092e,
- // Entry 100 - 13F
- 0x0935, 0x0941, 0x0947, 0x094f,
- },
- },
- { // lkt
- "Uŋčíyapi MakȟóčhePȟečhókaŋhaŋska MakȟóčheIyášiča MakȟóčheSpayólaȟče Makȟ" +
- "óčheKisúŋla MakȟóčheSpayóla MakȟóčheMílahaŋska TȟamákȟočheMakȟásito" +
- "mniHásapa MakȟáwitaKhéya WítaHazíla MakȟáwitaWašíču Makȟáwita",
- []uint16{ // 287 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
- 0x0017, 0x0017, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
- 0x0037, 0x0037, 0x0037, 0x0037, 0x004d, 0x004d, 0x004d, 0x004d,
- // Entry 40 - 7F
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
- 0x0066, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- // Entry 80 - BF
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
- 0x007b, 0x007b, 0x007b, 0x007b, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- // Entry C0 - FF
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
- 0x008f, 0x008f, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
- // Entry 100 - 13F
- 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b9, 0x00cc, 0x00cc,
- 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
- 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
- 0x00d8, 0x00d8, 0x00d8, 0x00eb, 0x00eb, 0x00eb, 0x0100,
- },
- },
- { // ln
- "AndorɛLɛmila alaboAfiganisitáAntiga mpé BarbudaAngiyɛAlibaniAmɛniAntiyɛ " +
- "ya OlandɛAngólaAntarctiqueArizantinɛSamoa ya AmerikiOtilisiOsitáliAr" +
- "ubaAzɛlɛbaizáBosini mpé HezegovineBarɛbadɛBengalidɛsiBelezikiBukina " +
- "FasoBiligariBahrɛnɛBurundiBenɛBermudaBrineyiBoliviBrezílɛBahamasɛBut" +
- "ániBotswanaByelorisiBelizɛKanadaRepibiki demokratiki ya KongóRepibi" +
- "ki ya Afríka ya KátiKongoSwisɛKotídivualɛBisanga bya KookɛSíliKamɛru" +
- "neSinɛKolombiKositarikaKibaBisanga bya KapevɛrɛSípɛlɛRepibiki TsekɛA" +
- "lemaniDzibutiDanɛmarikeDomínikeRepibiki ya DomínikɛAlizɛriEkwatɛ́lɛE" +
- "sitoniEzípiteElitelɛEsipanyeEtsíopiFilandɛFidziBisanga bya MaluniMik" +
- "roneziFalánsɛGabɔAngɛlɛtɛ́lɛGelenadɛZorziGiyanɛ ya FalánsɛGuerneseyG" +
- "anaZibatalɛGowelandeGambiGinɛGwadɛlupɛGinɛ́kwatɛ́lɛGelekiÎles de Géo" +
- "rgie du Sud et Sandwich du SudGwatémalaGwamɛGinɛbisauGiyaneIle Heard" +
- " et Iles McDonaldOndurasɛKrowasiAyitiOngiliIndoneziIrelandɛIsirayelɛ" +
- "ÍndɛMabelé ya Angɛlɛtɛ́lɛ na mbú ya IndiyaIrakiIrâIsilandɛItaliZama" +
- "ikiZɔdaniZapɔKenyaKigizisitáKambodzaKiribatiKomorɛSántu krístofe mpé" +
- " Nevɛ̀sKorɛ ya nɔ́rdiKorɛ ya súdiKowetiBisanga bya KayímaKazakisitáL" +
- "awosiLibáSántu lisiLishɛteniSirilankaLibériyaLesotoLitwaniLikisambul" +
- "uLetoniLibíMarokɛMonakoMolidaviMonténégroMadagasikariBisanga bya Mar" +
- "ishalɛMasedwanɛMalíBirmanieMongolíBisanga bya Marianɛ ya nɔ́rdiMarti" +
- "nikiMoritaniMɔseraMalitɛMorisɛMadívɛMalawiMeksikeMaleziMozambíkiNami" +
- "biKaledoni ya sikaNizɛrɛEsanga NorfokɛNizeryaNikaragwaOlandɛNorivezɛ" +
- "NepálɛNauruNyuéZelandɛ ya sikaOmánɛPanamaPéruPolinezi ya FalánsɛPapw" +
- "azi Ginɛ ya sikaFilipinɛPakisitáPoloniSántu pététo mpé MikelɔPikairn" +
- "iPɔtorikoPalɛsinePutúlugɛsiPalauPalagweiKatariLenyoRomaniSerbieRisíR" +
- "wandaAlabi SawuditɛBisanga SolomɔSɛshɛlɛSudáSwédɛSingapurɛSántu elen" +
- "iSiloveniSilovakiSiera LeonɛSántu MarinɛSenegalɛSomaliSurinamɛSao To" +
- "mé mpé PresipɛSavadɔrɛSiríSwazilandiBisanga bya Turki mpé KaikoTsádi" +
- "Terres australes et antarctiques françaisesTogoTailandɛTazikisitáTok" +
- "elauTimorɛ ya MoniɛlɛTikɛménisitáTiniziTongaTilikiTinidadɛ mpé Tobag" +
- "oTuvaluTaiwaninTanzaniIkrɛniUgandaAmerikiIrigweiUzibɛkisitáVatikáSán" +
- "tu vesá mpé GelenadinɛVenézuelaBisanga bya Vierzi ya Angɛlɛtɛ́lɛBisa" +
- "nga bya Vierzi ya AmerikiViyetinamɛVanuatuWalisɛ mpé FutunaSamoaYemɛ" +
- "nɛMayotɛAfríka ya SúdiZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0014, 0x0020, 0x0033, 0x003a, 0x0041,
- 0x0047, 0x0059, 0x0060, 0x006b, 0x0076, 0x0086, 0x008d, 0x0095,
- 0x009a, 0x009a, 0x00a7, 0x00bd, 0x00c7, 0x00d3, 0x00db, 0x00e6,
- 0x00ee, 0x00f7, 0x00fe, 0x0103, 0x0103, 0x010a, 0x0111, 0x0117,
- 0x0117, 0x0120, 0x0129, 0x0130, 0x0130, 0x0138, 0x0141, 0x0148,
- 0x014e, 0x014e, 0x016c, 0x0188, 0x018d, 0x0193, 0x01a0, 0x01b2,
- 0x01b7, 0x01c0, 0x01c5, 0x01cc, 0x01cc, 0x01d6, 0x01da, 0x01f0,
- 0x01f0, 0x01f0, 0x01f9, 0x0208, 0x020f, 0x020f, 0x0216, 0x0221,
- // Entry 40 - 7F
- 0x022a, 0x0240, 0x0248, 0x0248, 0x0254, 0x025b, 0x0263, 0x0263,
- 0x026b, 0x0273, 0x027b, 0x027b, 0x0283, 0x0288, 0x029a, 0x02a3,
- 0x02a3, 0x02ac, 0x02b1, 0x02c1, 0x02ca, 0x02cf, 0x02e3, 0x02ec,
- 0x02f0, 0x02f9, 0x0302, 0x0307, 0x030c, 0x0317, 0x0329, 0x032f,
- 0x035a, 0x0364, 0x036a, 0x0374, 0x037a, 0x037a, 0x0394, 0x039d,
- 0x03a4, 0x03a9, 0x03af, 0x03af, 0x03b7, 0x03c0, 0x03ca, 0x03ca,
- 0x03d0, 0x03fd, 0x0402, 0x0406, 0x040f, 0x0414, 0x0414, 0x041b,
- 0x0422, 0x0427, 0x042c, 0x0437, 0x043f, 0x0447, 0x044e, 0x046c,
- // Entry 80 - BF
- 0x047d, 0x048b, 0x0491, 0x04a4, 0x04af, 0x04b5, 0x04ba, 0x04c5,
- 0x04cf, 0x04d8, 0x04e1, 0x04e7, 0x04ee, 0x04f9, 0x04ff, 0x0504,
- 0x050b, 0x0511, 0x0519, 0x0525, 0x0525, 0x0531, 0x0547, 0x0551,
- 0x0556, 0x055e, 0x0566, 0x0566, 0x0586, 0x058f, 0x0597, 0x059e,
- 0x05a5, 0x05ac, 0x05b4, 0x05ba, 0x05c1, 0x05c7, 0x05d1, 0x05d7,
- 0x05e7, 0x05ef, 0x05fe, 0x0605, 0x060e, 0x0615, 0x061e, 0x0626,
- 0x062b, 0x0630, 0x0640, 0x0647, 0x064d, 0x0652, 0x0667, 0x067c,
- 0x0685, 0x068e, 0x0694, 0x06b0, 0x06b8, 0x06c1, 0x06ca, 0x06d6,
- // Entry C0 - FF
- 0x06db, 0x06e3, 0x06e9, 0x06e9, 0x06ee, 0x06f4, 0x06fa, 0x06ff,
- 0x0705, 0x0714, 0x0723, 0x072d, 0x0732, 0x0739, 0x0743, 0x074f,
- 0x0757, 0x0757, 0x075f, 0x076b, 0x0779, 0x0782, 0x0788, 0x0791,
- 0x0791, 0x07a8, 0x07b2, 0x07b2, 0x07b7, 0x07c1, 0x07c1, 0x07dd,
- 0x07e3, 0x080f, 0x0813, 0x081c, 0x0827, 0x082e, 0x0842, 0x0851,
- 0x0857, 0x085c, 0x0862, 0x0877, 0x087d, 0x0885, 0x088c, 0x0893,
- 0x0899, 0x0899, 0x08a0, 0x08a7, 0x08b4, 0x08bb, 0x08d8, 0x08e2,
- 0x0908, 0x0925, 0x0930, 0x0937, 0x094a, 0x094f, 0x094f, 0x0957,
- // Entry 100 - 13F
- 0x095e, 0x096e, 0x0973, 0x097b,
- },
- },
- { // lo
- loRegionStr,
- loRegionIdx,
- },
- { // lrc
- "بئرئزیلچینآلمانفأرانسەبیریتانیا گأپھئنئیتالیاجاپوٙنروٙسیەڤولاتیا یأکاگئر" +
- "تەراساگە نادیاردونیائفریقائمریکا شومالیئمریکا ھارگەھوم پئڤأند جأھوٙ" +
- "ن آڤمینجا ئمریکائمریکائمریکا ڤاروکارائیبآسیائوروٙپائمریکا لاتین",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
- 0x0014, 0x0014, 0x0014, 0x0014, 0x001e, 0x001e, 0x001e, 0x001e,
- // Entry 40 - 7F
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x002c, 0x002c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
- 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0059, 0x0059, 0x0059,
- 0x0059, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- // Entry 80 - BF
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
- // Entry C0 - FF
- 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
- 0x0071, 0x0071, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
- 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
- // Entry 100 - 13F
- 0x0092, 0x0092, 0x0092, 0x0092, 0x00ab, 0x00b5, 0x00c1, 0x00da,
- 0x00f1, 0x0116, 0x0116, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
- 0x0139, 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c,
- 0x015c, 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, 0x0172, 0x0172,
- 0x0172, 0x0172, 0x0189,
- },
- },
- { // lt
- ltRegionStr,
- ltRegionIdx,
- },
- { // lu
- "AndoreLemila alabuAfuganisitaAntiga ne BarbudaAngiyeAlubaniAmeniAntiye w" +
- "a OlandeAngolaAlijantineSamoa wa AmerikiOtilisiOsitaliArubaAjelbayid" +
- "jaMbosini ne HezegovineBarebadeBenguladeshiBelejikiBukinafasoBiligar" +
- "iBahreneBurundiBeneBermudaBrineyiMboliviMnulezileBahamaseButaniMbots" +
- "wanaByelorisiBelizeKanadaDitunga wa KonguDitunga dya Afrika wa munka" +
- "tshiKonguSwiseKotedivualeLutanda lua KookɛShiliKameruneShineKolombiK" +
- "ositarikaKubaLutanda lua KapeveleShipeleDitunga dya TshekaAlemanuDji" +
- "butiDanemalakuDuminikuDitunga wa DuminikuAlijeriEkwateleEsitoniMushi" +
- "diEliteleNsipaniEtshiopiFilandeFujiLutanda lua MaluniMikroneziNfalan" +
- "seNgabuAngeleteleNgelenadeJorijiGiyane wa NfalanseNganaJibeletaleNgo" +
- "welandeGambiNgineNgwadelupeGine EkwateleNgelekaNgwatemalaNgwameNgine" +
- "bisauNgiyaneOnduraseKrowasiAyitiOngiliIndoneziIrelandeIsirayeleIndeL" +
- "utanda lwa Angeletele ku mbu wa IndiyaIrakiIraIsilandeItaliJamaikiJo" +
- "daniJapuKenyaKigizisitaKambodzaKiribatiKomoruSantu krístofe ne Neves" +
- "Kore wa muuluKore wa mwinshiKowetiLutanda lua KayimaKazakusitaLawosi" +
- "LibaSantu lisiLishuteniSirilankaLiberiyaLesotoLitwaniLikisambuluLeto" +
- "niLibiMarokeMonakuMolidaviMadagasikariLutanda lua MarishaleMasedwane" +
- "MaliMyamareMongoliLutanda lua Mariane wa muuluMartinikiMoritaniMuser" +
- "aMaliteMoriseMadiveMalawiMeksikeMaleziMozambikiNamibiKaledoni wa mum" +
- "uNijereLutanda lua NorfokNijeryaNikaragwaOlandɛNorivejeNepálɛNauruNy" +
- "ueZelanda wa mumuOmanePanamaPeruPolinezi wa NfalansePapwazi wa Nginɛ" +
- " wa mumuNfilipiPakisitaMpoloniSantu pététo ne MikeluPikairniMpotorik" +
- "uPalesineMputulugeshiPalauPalagweiKatariLenyoRomaniRisiRwandaAlabu N" +
- "sawudiLutanda lua SolomuSesheleSudaSuwediSingapureSantu eleniSiloven" +
- "iSilovakiSiera LeoneSantu MarineSenegaleSomaliSurinameSao Tome ne Pr" +
- "esipɛSavadoreSiriSwazilandiLutanda lua Tuluki ne KaikoTshadiToguTayi" +
- "landaTazikisitaTokelauTimoru wa dibokuTukemenisitaTiniziTongaTulukiT" +
- "inidade ne TobagoTuvaluTaiwaniTanzaniUkreniUgandaAmerikiIrigweiUzibe" +
- "kisitaNvatikaSantu vesa ne NgelenadineVenezuelaLutanda lua Vierzi wa" +
- " AngeleteleLutanda lua Vierzi wa AmerikiViyetinameVanuatuWalise ne F" +
- "utunaSamoaYemenuMayoteAfrika ya SúdiZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0012, 0x001d, 0x002e, 0x0034, 0x003b,
- 0x0040, 0x0050, 0x0056, 0x0056, 0x0060, 0x0070, 0x0077, 0x007e,
- 0x0083, 0x0083, 0x008e, 0x00a3, 0x00ab, 0x00b7, 0x00bf, 0x00c9,
- 0x00d1, 0x00d8, 0x00df, 0x00e3, 0x00e3, 0x00ea, 0x00f1, 0x00f8,
- 0x00f8, 0x0101, 0x0109, 0x010f, 0x010f, 0x0118, 0x0121, 0x0127,
- 0x012d, 0x012d, 0x013d, 0x015c, 0x0161, 0x0166, 0x0171, 0x0183,
- 0x0188, 0x0190, 0x0195, 0x019c, 0x019c, 0x01a6, 0x01aa, 0x01be,
- 0x01be, 0x01be, 0x01c5, 0x01d7, 0x01de, 0x01de, 0x01e5, 0x01ef,
- // Entry 40 - 7F
- 0x01f7, 0x020a, 0x0211, 0x0211, 0x0219, 0x0220, 0x0227, 0x0227,
- 0x022e, 0x0235, 0x023d, 0x023d, 0x0244, 0x0248, 0x025a, 0x0263,
- 0x0263, 0x026b, 0x0270, 0x027a, 0x0283, 0x0289, 0x029b, 0x029b,
- 0x02a0, 0x02aa, 0x02b4, 0x02b9, 0x02be, 0x02c8, 0x02d5, 0x02dc,
- 0x02dc, 0x02e6, 0x02ec, 0x02f6, 0x02fd, 0x02fd, 0x02fd, 0x0305,
- 0x030c, 0x0311, 0x0317, 0x0317, 0x031f, 0x0327, 0x0330, 0x0330,
- 0x0334, 0x035b, 0x0360, 0x0363, 0x036b, 0x0370, 0x0370, 0x0377,
- 0x037d, 0x0381, 0x0386, 0x0390, 0x0398, 0x03a0, 0x03a6, 0x03be,
- // Entry 80 - BF
- 0x03cb, 0x03da, 0x03e0, 0x03f2, 0x03fc, 0x0402, 0x0406, 0x0410,
- 0x0419, 0x0422, 0x042a, 0x0430, 0x0437, 0x0442, 0x0448, 0x044c,
- 0x0452, 0x0458, 0x0460, 0x0460, 0x0460, 0x046c, 0x0481, 0x048a,
- 0x048e, 0x0495, 0x049c, 0x049c, 0x04b8, 0x04c1, 0x04c9, 0x04cf,
- 0x04d5, 0x04db, 0x04e1, 0x04e7, 0x04ee, 0x04f4, 0x04fd, 0x0503,
- 0x0513, 0x0519, 0x052b, 0x0532, 0x053b, 0x0542, 0x054a, 0x0552,
- 0x0557, 0x055b, 0x056a, 0x056f, 0x0575, 0x0579, 0x058d, 0x05a6,
- 0x05ad, 0x05b5, 0x05bc, 0x05d4, 0x05dc, 0x05e5, 0x05ed, 0x05f9,
- // Entry C0 - FF
- 0x05fe, 0x0606, 0x060c, 0x060c, 0x0611, 0x0617, 0x0617, 0x061b,
- 0x0621, 0x062e, 0x0640, 0x0647, 0x064b, 0x0651, 0x065a, 0x0665,
- 0x066d, 0x066d, 0x0675, 0x0680, 0x068c, 0x0694, 0x069a, 0x06a2,
- 0x06a2, 0x06b6, 0x06be, 0x06be, 0x06c2, 0x06cc, 0x06cc, 0x06e7,
- 0x06ed, 0x06ed, 0x06f1, 0x06fa, 0x0704, 0x070b, 0x071b, 0x0727,
- 0x072d, 0x0732, 0x0738, 0x074a, 0x0750, 0x0757, 0x075e, 0x0764,
- 0x076a, 0x076a, 0x0771, 0x0778, 0x0783, 0x078a, 0x07a3, 0x07ac,
- 0x07cc, 0x07e9, 0x07f3, 0x07fa, 0x080a, 0x080f, 0x080f, 0x0815,
- // Entry 100 - 13F
- 0x081b, 0x082a, 0x082f, 0x0837,
- },
- },
- { // luo
- "AndorraUnited Arab EmiratesAfghanistanAntigua gi BarbudaAnguillaAlbaniaA" +
- "rmeniaNetherlands AntillesAngolaArgentinaAmerican SamoaAustriaAustra" +
- "liaArubaAzerbaijanBosnia gi HerzegovinaBarbadosBangladeshBelgiumBurk" +
- "ina FasoBulgariaBahrainBurundiBeninBermudaBruneiBoliviaBrazilBahamas" +
- "BhutanBotswanaBelarusBelizeCanadaDemocratic Republic of the CongoCen" +
- "tral African RepublicCongoSwitzerlandCôte dCook IslandsChileCameroon" +
- "ChinaColombiaCosta RicaCubaCape Verde IslandsCyprusCzech RepublicGer" +
- "manyDjiboutiDenmarkDominicaDominican RepublicAlgeriaEcuadorEstoniaEg" +
- "yptEritreaSpainEthiopiaFinlandFijiChuia mar FalklandMicronesiaFrance" +
- "GabonUnited KingdomGrenadaGeorgiaFrench GuianaGhanaGibraltarGreenlan" +
- "dGambiaGuineaGuadeloupeEquatorial GuineaGreeceGuatemalaGuamGuinea-Bi" +
- "ssauGuyanaHondurasCroatiaHaitiHungaryIndonesiaIrelandIsraelIndiaBrit" +
- "ish Indian Ocean TerritoryIraqIranIcelandItalyJamaicaJordanJapanKeny" +
- "aKyrgyzstanCambodiaKiribatiComorosSaint Kitts gi NevisKorea MasawaKo" +
- "rea MilamboKuwaitCayman IslandsKazakhstanLaosLebanonSaint LuciaLiech" +
- "tensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMorocco" +
- "MonacoMoldovaMadagascarChuia mar MarshallMacedoniaMaliMyanmarMongoli" +
- "aNorthern Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiu" +
- "sMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerChui" +
- "a mar NorfolkNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNew Zeal" +
- "andOmanPanamaPeruFrench PolynesiaPapua New GuineaPhilippinesPakistan" +
- "PolandSaint Pierre gi MiquelonPitcairnPuerto RicoPalestinian West Ba" +
- "nk gi GazaPortugalPalauParaguayQatarRéunionRomaniaRussiaRwandaSaudi " +
- "ArabiaSolomon IslandsSeychellesSudanSwedenSingaporeSaint HelenaSlove" +
- "niaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé gi P" +
- "ríncipeEl SalvadorSyriaSwazilandTurks gi Caicos IslandsChadTogoThail" +
- "andTajikistanTokelauEast TimorTurkmenistanTunisiaTongaTurkeyTrinidad" +
- " gi TobagoTuvaluTaiwanTanzaniaUkraineUgandaUSAUruguayUzbekistanVatic" +
- "an StateSaint Vincent gi GrenadinesVenezuelaBritish Virgin IslandsU." +
- "S. Virgin IslandsVietnamVanuatuWallis gi FutunaSamoaYemenMayotteSout" +
- "h AfricaZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001b, 0x0026, 0x0038, 0x0040, 0x0047,
- 0x004e, 0x0062, 0x0068, 0x0068, 0x0071, 0x007f, 0x0086, 0x008f,
- 0x0094, 0x0094, 0x009e, 0x00b3, 0x00bb, 0x00c5, 0x00cc, 0x00d8,
- 0x00e0, 0x00e7, 0x00ee, 0x00f3, 0x00f3, 0x00fa, 0x0100, 0x0107,
- 0x0107, 0x010d, 0x0114, 0x011a, 0x011a, 0x0122, 0x0129, 0x012f,
- 0x0135, 0x0135, 0x0155, 0x016d, 0x0172, 0x017d, 0x0184, 0x0190,
- 0x0195, 0x019d, 0x01a2, 0x01aa, 0x01aa, 0x01b4, 0x01b8, 0x01ca,
- 0x01ca, 0x01ca, 0x01d0, 0x01de, 0x01e5, 0x01e5, 0x01ed, 0x01f4,
- // Entry 40 - 7F
- 0x01fc, 0x020e, 0x0215, 0x0215, 0x021c, 0x0223, 0x0228, 0x0228,
- 0x022f, 0x0234, 0x023c, 0x023c, 0x0243, 0x0247, 0x0259, 0x0263,
- 0x0263, 0x0269, 0x026e, 0x027c, 0x0283, 0x028a, 0x0297, 0x0297,
- 0x029c, 0x02a5, 0x02ae, 0x02b4, 0x02ba, 0x02c4, 0x02d5, 0x02db,
- 0x02db, 0x02e4, 0x02e8, 0x02f5, 0x02fb, 0x02fb, 0x02fb, 0x0303,
- 0x030a, 0x030f, 0x0316, 0x0316, 0x031f, 0x0326, 0x032c, 0x032c,
- 0x0331, 0x034f, 0x0353, 0x0357, 0x035e, 0x0363, 0x0363, 0x036a,
- 0x0370, 0x0375, 0x037a, 0x0384, 0x038c, 0x0394, 0x039b, 0x03af,
- // Entry 80 - BF
- 0x03bb, 0x03c8, 0x03ce, 0x03dc, 0x03e6, 0x03ea, 0x03f1, 0x03fc,
- 0x0409, 0x0412, 0x0419, 0x0420, 0x0429, 0x0433, 0x0439, 0x043e,
- 0x0445, 0x044b, 0x0452, 0x0452, 0x0452, 0x045c, 0x046e, 0x0477,
- 0x047b, 0x0482, 0x048a, 0x048a, 0x04a2, 0x04ac, 0x04b6, 0x04c0,
- 0x04c5, 0x04ce, 0x04d6, 0x04dc, 0x04e2, 0x04ea, 0x04f4, 0x04fb,
- 0x0508, 0x050d, 0x051e, 0x0525, 0x052e, 0x0539, 0x053f, 0x0544,
- 0x0549, 0x054d, 0x0558, 0x055c, 0x0562, 0x0566, 0x0576, 0x0586,
- 0x0591, 0x0599, 0x059f, 0x05b7, 0x05bf, 0x05ca, 0x05e7, 0x05ef,
- // Entry C0 - FF
- 0x05f4, 0x05fc, 0x0601, 0x0601, 0x0609, 0x0610, 0x0610, 0x0616,
- 0x061c, 0x0628, 0x0637, 0x0641, 0x0646, 0x064c, 0x0655, 0x0661,
- 0x0669, 0x0669, 0x0671, 0x067d, 0x0687, 0x068e, 0x0695, 0x069d,
- 0x069d, 0x06b4, 0x06bf, 0x06bf, 0x06c4, 0x06cd, 0x06cd, 0x06e4,
- 0x06e8, 0x06e8, 0x06ec, 0x06f4, 0x06fe, 0x0705, 0x070f, 0x071b,
- 0x0722, 0x0727, 0x072d, 0x073f, 0x0745, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0763, 0x076a, 0x0774, 0x0781, 0x079c, 0x07a5,
- 0x07bb, 0x07ce, 0x07d5, 0x07dc, 0x07ec, 0x07f1, 0x07f1, 0x07f6,
- // Entry 100 - 13F
- 0x07fd, 0x0809, 0x080f, 0x0817,
- },
- },
- { // luy
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa lya MarekaniAustriaAustralia" +
- "ArubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinaf" +
- "asoBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
- "aniBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhu" +
- "ri ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniCh" +
- "inaKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibu" +
- "tiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritrea" +
- "HispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboni" +
- "UingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambia" +
- "GineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKo" +
- "rasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kat" +
- "ika Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKi" +
- "rigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniK" +
- "orea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusi" +
- "aLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMoroko" +
- "MonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiw" +
- "a vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiM" +
- "odivuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha" +
- " NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPa" +
- "namaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri" +
- " na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza " +
- "wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudi" +
- "Visiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaS" +
- "lovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Princip" +
- "eElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajiki" +
- "staniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTri" +
- "nidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzib" +
- "ekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin " +
- "vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na " +
- "FutunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007c, 0x0083, 0x008c,
- 0x0091, 0x0091, 0x009a, 0x00ae, 0x00b6, 0x00c1, 0x00c9, 0x00d3,
- 0x00db, 0x00e3, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
- 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
- 0x0133, 0x0133, 0x0153, 0x016c, 0x0171, 0x0177, 0x017e, 0x018d,
- 0x0192, 0x019a, 0x019f, 0x01a7, 0x01a7, 0x01b0, 0x01b4, 0x01bc,
- 0x01bc, 0x01bc, 0x01c3, 0x01d3, 0x01dc, 0x01dc, 0x01e2, 0x01e9,
- // Entry 40 - 7F
- 0x01f1, 0x0204, 0x020b, 0x020b, 0x0211, 0x0218, 0x021d, 0x021d,
- 0x0224, 0x022c, 0x0234, 0x0234, 0x0239, 0x023d, 0x0250, 0x025a,
- 0x025a, 0x0262, 0x0268, 0x0271, 0x0278, 0x027d, 0x0290, 0x0290,
- 0x0295, 0x029d, 0x02a6, 0x02ac, 0x02b0, 0x02b9, 0x02c2, 0x02c9,
- 0x02c9, 0x02d2, 0x02d6, 0x02df, 0x02e5, 0x02e5, 0x02e5, 0x02ee,
- 0x02f5, 0x02fa, 0x0302, 0x0302, 0x030b, 0x0313, 0x031a, 0x031a,
- 0x031f, 0x0344, 0x0349, 0x034f, 0x0357, 0x035d, 0x035d, 0x0364,
- 0x036b, 0x0371, 0x0376, 0x0383, 0x038b, 0x0393, 0x0399, 0x03ac,
- // Entry 80 - BF
- 0x03bb, 0x03c7, 0x03ce, 0x03df, 0x03ea, 0x03ef, 0x03f7, 0x0401,
- 0x040b, 0x0414, 0x041b, 0x0421, 0x0429, 0x0432, 0x0439, 0x043e,
- 0x0444, 0x044a, 0x0451, 0x0451, 0x0451, 0x0457, 0x0469, 0x0472,
- 0x0476, 0x047b, 0x0483, 0x0483, 0x04a3, 0x04ac, 0x04b5, 0x04c0,
- 0x04c5, 0x04cb, 0x04d1, 0x04d7, 0x04de, 0x04e5, 0x04ed, 0x04f4,
- 0x0500, 0x0506, 0x0517, 0x051e, 0x0527, 0x052f, 0x0534, 0x053a,
- 0x053f, 0x0543, 0x054d, 0x0552, 0x0558, 0x055c, 0x0571, 0x0576,
- 0x057e, 0x0587, 0x058e, 0x05a4, 0x05ad, 0x05b6, 0x05e8, 0x05ed,
- // Entry C0 - FF
- 0x05f2, 0x05fa, 0x0600, 0x0600, 0x0609, 0x0610, 0x0610, 0x0615,
- 0x061b, 0x0620, 0x0632, 0x063c, 0x0642, 0x0648, 0x0650, 0x065b,
- 0x0663, 0x0663, 0x066b, 0x0676, 0x067e, 0x0686, 0x068d, 0x0695,
- 0x0695, 0x06a9, 0x06b1, 0x06b1, 0x06b6, 0x06bc, 0x06bc, 0x06d5,
- 0x06da, 0x06da, 0x06de, 0x06e6, 0x06f1, 0x06f8, 0x070b, 0x071a,
- 0x0721, 0x0726, 0x072d, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
- 0x0761, 0x0761, 0x0769, 0x0770, 0x077c, 0x0784, 0x079d, 0x07a6,
- 0x07c5, 0x07e3, 0x07ec, 0x07f3, 0x0802, 0x0807, 0x0807, 0x080d,
- // Entry 100 - 13F
- 0x0814, 0x0821, 0x0827, 0x082f,
- },
- },
- { // lv
- lvRegionStr,
- lvRegionIdx,
- },
- { // mas
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTansaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniSambiaSimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // mer
- "AndoraFalme cia KiarabuAfuganistaniAntigua na BarbudaAnguillaAlubaniaArm" +
- "eniaAntili cia HolandiAngolaAjentinaSamoa ya AmerikaAustiriaAustrĩli" +
- "aArubaAzebaijaniBosnia na HezegovinaBabadosiBangiradeshiBeronjiamuBu" +
- "kinafasoBulgariaBahariniBurundiBeniniBamudaBruneiBoliviaBraziluBaham" +
- "asiButaniBotswanaBelarusiBelizeKanadaNthĩ ya Kidemokrasĩ ya KongoNth" +
- "ĩ ya Afrika gatĩgatĩKongoSwizilandiKodivaaAĩrandi cia CookChileKame" +
- "runiChinaKolombiaKostarikaKiubaKepuvedeCaipurasiNthĩ ya ChekiNjamanĩ" +
- "JibutiDenimakiDominikaNthĩ ya DominikaAngiriaEkwadoEstoniaMisiriErit" +
- "reaSpĩniIthiopiaFinilandiFijiAĩrandi cia FalklandiMikronesiaFransiGa" +
- "boniNgerethaGrenadaJojiaGwiyana ya FransiGhanaNgĩbrataNgirinilandiGa" +
- "mbiaGineGwadelupeGine ya IquitaNgirikiGwatemalaGwamGinebisauGuyanaHo" +
- "ndurasiKoroashiaHaitiHangarĩIndonesiaAelandiIsiraeliIndiaNthĩ cia Ng" +
- "eretha gatagatĩ ka ĩria ria HindiIrakiIraniAisilandiItalĩJamaikaJoro" +
- "ndaniJapaniKenyaKirigizistaniKambodiaKiribatiKomoroSantakitzi na Nev" +
- "isKorea NothiKorea SaũthiKuwĩ tiAĩrandi cia KaymanKazakistaniLaosiLe" +
- "banoniSantalusiaLishenteniSirilankaLiberiaLesothoLithuaniaLuxemboguL" +
- "ativiaLĩbiaMorokoMonakoMoldovaMadagasikaAĩrandi cia MarshalMacedonia" +
- "MaliMyanimaMongoliaAĩrandi cia Mariana ya nothiMartinikiMauritaniaMo" +
- "ntserratiMaltaMaurĩtiasiModivuMalawiMexikoMalĩsiaMozambikiNamibiaKal" +
- "endoia ĨnjeruNijaAĩrandi cia NorfokNijeriaNikaragwaHolandiNorwiNepal" +
- "iNauruNiueNiuzilandiOmaniPanamaPeruPolinesia ya FransiPapuaFilipinoP" +
- "akistaniPolandiSantapieri na MikeloniPitkairniPwetorikoRũtere rwa We" +
- "sti banki na Gaza cia PalestinaPotogoPalauParagwaiKataRiyunioniRoman" +
- "iaRashiaRwandaSaudiAirandi Cia SolomonShelisheliSudaniSwideniSingapo" +
- "oSantahelenaSloveniaSlovakiaSiera LeoniSamarinoSenegoSomaliaSurinamu" +
- "Sao Tome na PrincipeElsavadoSiriaSwazilandiAĩrandi cia Takĩ na Kaiko" +
- "ChadiTogoThaĩlandiTajikistaniTokelauTimori ya IstiTukumenistaniTunis" +
- "iaTongaTakĩTrinidad na TobagoTuvaluTaiwaniTanzaniaUkirĩniUgandaAmeri" +
- "kaUrugwĩUzibekistaniVatikaniSantavisenti na GrenadiniVenezuelaAĩrand" +
- "i cia Virgin cia NgerethaAĩrandi cia Virgin cia AmerikaVietinamuVanu" +
- "atuWalis na FutunaSamoaYemeniMayotteAfrika ya SouthiZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0045,
- 0x004c, 0x005e, 0x0064, 0x0064, 0x006c, 0x007c, 0x0084, 0x008e,
- 0x0093, 0x0093, 0x009d, 0x00b1, 0x00b9, 0x00c5, 0x00cf, 0x00d9,
- 0x00e1, 0x00e9, 0x00f0, 0x00f6, 0x00f6, 0x00fc, 0x0102, 0x0109,
- 0x0109, 0x0110, 0x0118, 0x011e, 0x011e, 0x0126, 0x012e, 0x0134,
- 0x013a, 0x013a, 0x0158, 0x0172, 0x0177, 0x0181, 0x0188, 0x0199,
- 0x019e, 0x01a6, 0x01ab, 0x01b3, 0x01b3, 0x01bc, 0x01c1, 0x01c9,
- 0x01c9, 0x01c9, 0x01d2, 0x01e0, 0x01e8, 0x01e8, 0x01ee, 0x01f6,
- // Entry 40 - 7F
- 0x01fe, 0x020f, 0x0216, 0x0216, 0x021c, 0x0223, 0x0229, 0x0229,
- 0x0230, 0x0236, 0x023e, 0x023e, 0x0247, 0x024b, 0x0261, 0x026b,
- 0x026b, 0x0271, 0x0277, 0x027f, 0x0286, 0x028b, 0x029c, 0x029c,
- 0x02a1, 0x02aa, 0x02b6, 0x02bc, 0x02c0, 0x02c9, 0x02d7, 0x02de,
- 0x02de, 0x02e7, 0x02eb, 0x02f4, 0x02fa, 0x02fa, 0x02fa, 0x0303,
- 0x030c, 0x0311, 0x0319, 0x0319, 0x0322, 0x0329, 0x0331, 0x0331,
- 0x0336, 0x0365, 0x036a, 0x036f, 0x0378, 0x037e, 0x037e, 0x0385,
- 0x038e, 0x0394, 0x0399, 0x03a6, 0x03ae, 0x03b6, 0x03bc, 0x03cf,
- // Entry 80 - BF
- 0x03da, 0x03e7, 0x03ef, 0x0402, 0x040d, 0x0412, 0x041a, 0x0424,
- 0x042e, 0x0437, 0x043e, 0x0445, 0x044e, 0x0457, 0x045e, 0x0464,
- 0x046a, 0x0470, 0x0477, 0x0477, 0x0477, 0x0481, 0x0495, 0x049e,
- 0x04a2, 0x04a9, 0x04b1, 0x04b1, 0x04ce, 0x04d7, 0x04e1, 0x04ec,
- 0x04f1, 0x04fc, 0x0502, 0x0508, 0x050e, 0x0516, 0x051f, 0x0526,
- 0x0537, 0x053b, 0x054e, 0x0555, 0x055e, 0x0565, 0x056a, 0x0570,
- 0x0575, 0x0579, 0x0583, 0x0588, 0x058e, 0x0592, 0x05a5, 0x05aa,
- 0x05b2, 0x05bb, 0x05c2, 0x05d8, 0x05e1, 0x05ea, 0x0617, 0x061d,
- // Entry C0 - FF
- 0x0622, 0x062a, 0x062e, 0x062e, 0x0637, 0x063e, 0x063e, 0x0644,
- 0x064a, 0x064f, 0x0662, 0x066c, 0x0672, 0x0679, 0x0681, 0x068c,
- 0x0694, 0x0694, 0x069c, 0x06a7, 0x06af, 0x06b5, 0x06bc, 0x06c4,
- 0x06c4, 0x06d8, 0x06e0, 0x06e0, 0x06e5, 0x06ef, 0x06ef, 0x070a,
- 0x070f, 0x070f, 0x0713, 0x071d, 0x0728, 0x072f, 0x073d, 0x074a,
- 0x0751, 0x0756, 0x075b, 0x076d, 0x0773, 0x077a, 0x0782, 0x078a,
- 0x0790, 0x0790, 0x0797, 0x079e, 0x07aa, 0x07b2, 0x07cb, 0x07d4,
- 0x07f4, 0x0813, 0x081c, 0x0823, 0x0832, 0x0837, 0x0837, 0x083d,
- // Entry 100 - 13F
- 0x0844, 0x0854, 0x085a, 0x0862,
- },
- },
- { // mfe
- "AndorEmira arab iniAfganistanAntigua-ek-BarbudaAnguillaAlbaniArmeniAntiy" +
- " neerlandeAngolaLarzantinnSamoa amerikinLostrisLostraliArubaAzerbaïd" +
- "janBosni-HerzegovinnBarbadBangladesBelzikBurkina FasoBilgariBahreïnB" +
- "urundiBeninBermidBruneiBoliviBrezilBahamasBoutanBotswanaBelarisBeliz" +
- "KanadaRepiblik demokratik KongoRepiblik Lafrik SantralKongoLaswisCôt" +
- "e d’IvoireZil CookShiliKamerounnLasinnKolonbiCosta RicaCubaKap-VerCy" +
- "prusRepiblik ChekAlmagnDjiboutiDannmarkDominikRepiblik dominikinAlze" +
- "riEkwaterEstoniLeziptErythreLespagnLetiopiFinlandFidjiZil malwinnMik" +
- "roneziLafransGabonUnited KingdomGrenadZeorziGwiyann franseGhanaZibra" +
- "ltarGreenlandGambiGineGuadloupGine ekwatoryalGresGuatemalaGuamGine-B" +
- "isauGuyanaHondurasKroasiAytiOngriIndoneziIrlandIzraelLennTeritwar Br" +
- "itanik Losean IndienIrakIranIslandItaliZamaikZordaniZaponKenyaKirghi" +
- "zistanKambodjKiribatiKomorSaint-Christophe-ek-NiévèsLakore-dinorLako" +
- "re-disidKoweitZil KaymanKazakstanLaosLibanSainte-LucieLiechtensteinS" +
- "ri LankaLiberiaLezotoLituaniLuxembourgLetoniLibiMarokMonakoMoldaviMa" +
- "dagaskarZil MarshallMasedwannMaliMyanmarMongoliZil Maryann dinorMart" +
- "inikMoritaniMontseraMaltMorisMaldivMalawiMexikMaleziMozambikNamibiNo" +
- "uvel-KaledoniNizerLil NorfolkNizeriaNicaraguaOlandNorvezNepalNauruNi" +
- "oweNouvel ZelandOmanPanamaPerouPolinezi fransePapouazi-Nouvel-GineFi" +
- "lipinnPakistanPolognSaint-Pierre-ek-MiquelonPitcairnPorto RicoTeritw" +
- "ar PalestinnPortigalPalauParaguayKatarLarenionRoumaniLarisiRwandaLar" +
- "abi SaouditZil SalomonSeselSoudanLaswedSingapourSainte-HélèneSloveni" +
- "SlovakiSierra LeoneSaint-MarinSenegalSomaliSurinamSão Tome-ek-Prínsi" +
- "pSalvadorLasiriSwazilandZil Tirk ek CaïcosTchadTogoThaylandTadjikist" +
- "anTokelauTimor oriantalTurkmenistanTiniziTongaTirkiTrinite-ek-Tobago" +
- "TuvaluTaiwanTanzaniIkrennOugandaLamerikUruguayOuzbekistanLata Vatika" +
- "nSaint-Vincent-ek-GrenadinesVenezuelaZil vierz britanikZil Vierz Lam" +
- "erikVietnamVanuatuWallis-ek-FutunaSamoaYemennMayotSid-AfrikZambiZimb" +
- "abwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0005, 0x0013, 0x001d, 0x002f, 0x0037, 0x003d,
- 0x0043, 0x0052, 0x0058, 0x0058, 0x0062, 0x0070, 0x0077, 0x007f,
- 0x0084, 0x0084, 0x0090, 0x00a1, 0x00a7, 0x00b0, 0x00b6, 0x00c2,
- 0x00c9, 0x00d1, 0x00d8, 0x00dd, 0x00dd, 0x00e3, 0x00e9, 0x00ef,
- 0x00ef, 0x00f5, 0x00fc, 0x0102, 0x0102, 0x010a, 0x0111, 0x0116,
- 0x011c, 0x011c, 0x0135, 0x014c, 0x0151, 0x0157, 0x0167, 0x016f,
- 0x0174, 0x017d, 0x0183, 0x018a, 0x018a, 0x0194, 0x0198, 0x019f,
- 0x019f, 0x019f, 0x01a5, 0x01b2, 0x01b8, 0x01b8, 0x01c0, 0x01c8,
- // Entry 40 - 7F
- 0x01cf, 0x01e1, 0x01e7, 0x01e7, 0x01ee, 0x01f4, 0x01fa, 0x01fa,
- 0x0201, 0x0208, 0x020f, 0x020f, 0x0216, 0x021b, 0x0226, 0x022f,
- 0x022f, 0x0236, 0x023b, 0x0249, 0x024f, 0x0255, 0x0263, 0x0263,
- 0x0268, 0x0271, 0x027a, 0x027f, 0x0283, 0x028b, 0x029a, 0x029e,
- 0x029e, 0x02a7, 0x02ab, 0x02b5, 0x02bb, 0x02bb, 0x02bb, 0x02c3,
- 0x02c9, 0x02cd, 0x02d2, 0x02d2, 0x02da, 0x02e0, 0x02e6, 0x02e6,
- 0x02ea, 0x0309, 0x030d, 0x0311, 0x0317, 0x031c, 0x031c, 0x0322,
- 0x0329, 0x032e, 0x0333, 0x033f, 0x0346, 0x034e, 0x0353, 0x036f,
- // Entry 80 - BF
- 0x037b, 0x0387, 0x038d, 0x0397, 0x03a0, 0x03a4, 0x03a9, 0x03b5,
- 0x03c2, 0x03cb, 0x03d2, 0x03d8, 0x03df, 0x03e9, 0x03ef, 0x03f3,
- 0x03f8, 0x03fe, 0x0405, 0x0405, 0x0405, 0x040f, 0x041b, 0x0424,
- 0x0428, 0x042f, 0x0436, 0x0436, 0x0447, 0x044f, 0x0457, 0x045f,
- 0x0463, 0x0468, 0x046e, 0x0474, 0x0479, 0x047f, 0x0487, 0x048d,
- 0x049c, 0x04a1, 0x04ac, 0x04b3, 0x04bc, 0x04c1, 0x04c7, 0x04cc,
- 0x04d1, 0x04d6, 0x04e3, 0x04e7, 0x04ed, 0x04f2, 0x0501, 0x0515,
- 0x051d, 0x0525, 0x052b, 0x0543, 0x054b, 0x0555, 0x0567, 0x056f,
- // Entry C0 - FF
- 0x0574, 0x057c, 0x0581, 0x0581, 0x0589, 0x0590, 0x0590, 0x0596,
- 0x059c, 0x05aa, 0x05b5, 0x05ba, 0x05c0, 0x05c6, 0x05cf, 0x05de,
- 0x05e5, 0x05e5, 0x05ec, 0x05f8, 0x0603, 0x060a, 0x0610, 0x0617,
- 0x0617, 0x062c, 0x0634, 0x0634, 0x063a, 0x0643, 0x0643, 0x0656,
- 0x065b, 0x065b, 0x065f, 0x0667, 0x0672, 0x0679, 0x0687, 0x0693,
- 0x0699, 0x069e, 0x06a3, 0x06b4, 0x06ba, 0x06c0, 0x06c7, 0x06cd,
- 0x06d4, 0x06d4, 0x06db, 0x06e2, 0x06ed, 0x06f9, 0x0714, 0x071d,
- 0x072f, 0x0740, 0x0747, 0x074e, 0x075e, 0x0763, 0x0763, 0x0769,
- // Entry 100 - 13F
- 0x076e, 0x0777, 0x077c, 0x0784,
- },
- },
- { // mg
- "AndorraEmirà Arabo mitambatraAfghanistanAntiga sy BarbodaAnguillaAlbania" +
- "ArmeniaVondronosy karaiba holandeyAngolaArzantinaSamoa amerikaninaAo" +
- "trisyAostraliaArobàAzerbaidjanBosnia sy HerzegovinaBarbadyBangladesy" +
- "BelzikaBorkina FasoBiolgariaBahrainBorondiBeninBermiodaBruneiBolivia" +
- "BrezilaBahamasBhotanaBotsoanaBelarosyBelizeKanadaRepoblikan’i KongoR" +
- "epoblika Ivon’AfrikaKôngôSoisaCôte d’IvoireNosy KookShiliKameronaSin" +
- "aKôlômbiaKosta RikàKiobàNosy Cap-VertSypraRepoblikan’i TsekyAlemaina" +
- "DjibotiDanmarkaDominikaRepoblika DominikaninaAlzeriaEkoateraEstoniaE" +
- "jyptaEritreaEspainaEthiopiaFinlandyFidjiNosy FalkandMikrôneziaFrants" +
- "aGabonAngleteraGrenadyZeorziaGuyana frantsayGhanaZibraltaraGroenland" +
- "GambiaGineaGoadelopyGuinea EkoateraGresyGoatemalàGuamGiné-BisaoGuyan" +
- "aHondiorasyKroasiaHaitiHongriaIndoneziaIrlandyIsraelyIndyFaridranoma" +
- "sina indiana britanikaIrakIranIslandyItaliaJamaïkaJordaniaJapanaKeny" +
- "aKiordistanKambôdjaKiribatiKômaoroSaint-Christophe-et-NiévèsKorea Av" +
- "aratraKorea AtsimoKôeityNosy KaymanKazakhstanLaôsLibanaSainte-LucieL" +
- "istensteinSri LankaLiberiaLesothoLitoaniaLioksamboroLetoniaLibyaMarô" +
- "kaMônakôMôldaviaMadagasikaraNosy MarshallMakedoniaMaliMyanmarMôngôli" +
- "aNosy Mariana AtsinananaMartinikaMaoritaniaMontserratMaltaMaorisyMal" +
- "divaMalaoìMeksikaMalaiziaMozambikaNamibiaNouvelle-CalédonieNigerNosy" +
- " NorfolkNizeriaNikaragoàHolandaNôrvezyNepalaNaoròNioéNouvelle-Zéland" +
- "eOmanPanamaPeroaPolynezia frantsayPapouasie-Nouvelle-GuinéeFilipinaP" +
- "akistanPôlônaSaint-Pierre-et-MiquelonPitkairnPôrtô RikôPalestinaPôrt" +
- "iogalaPalaoParagoayKatarLarenionRomaniaRosiaRoandaArabia saoditaNosy" +
- " SalomonaSeyshelaSodanSoedySingaporoSainte-HélèneSloveniaSlovakiaSie" +
- "rra LeoneSaint-MarinSenegalSomaliaSorinamSão Tomé-et-PríncipeEl Salv" +
- "adorSyriaSoazilandyNosy Turks sy CaïquesTsadyTogoThailandyTajikistan" +
- "TokelaoTimor AtsinananaTorkmenistanToniziaTongàTorkiaTrinidad sy Tob" +
- "agôTovalòTaioanaTanzaniaOkrainaOgandaEtazoniaOrogoayOzbekistanFirene" +
- "n’i VatikanaSaint-Vincent-et-les GrenadinesVenezoelàNosy britanika v" +
- "irijinyNosy Virijiny EtazoniaVietnamVanoatòWallis sy FutunaSamoaYeme" +
- "nMayôtyAfrika AtsimoZambiaZimbaboe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001e, 0x0029, 0x003a, 0x0042, 0x0049,
- 0x0050, 0x006b, 0x0071, 0x0071, 0x007a, 0x008b, 0x0092, 0x009b,
- 0x00a1, 0x00a1, 0x00ac, 0x00c1, 0x00c8, 0x00d2, 0x00d9, 0x00e5,
- 0x00ee, 0x00f5, 0x00fc, 0x0101, 0x0101, 0x0109, 0x010f, 0x0116,
- 0x0116, 0x011d, 0x0124, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141,
- 0x0147, 0x0147, 0x015b, 0x0172, 0x0179, 0x017e, 0x018e, 0x0197,
- 0x019c, 0x01a4, 0x01a8, 0x01b2, 0x01b2, 0x01bd, 0x01c3, 0x01d0,
- 0x01d0, 0x01d0, 0x01d5, 0x01e9, 0x01f1, 0x01f1, 0x01f8, 0x0200,
- // Entry 40 - 7F
- 0x0208, 0x021e, 0x0225, 0x0225, 0x022d, 0x0234, 0x023a, 0x023a,
- 0x0241, 0x0248, 0x0250, 0x0250, 0x0258, 0x025d, 0x0269, 0x0274,
- 0x0274, 0x027b, 0x0280, 0x0289, 0x0290, 0x0297, 0x02a6, 0x02a6,
- 0x02ab, 0x02b5, 0x02be, 0x02c4, 0x02c9, 0x02d2, 0x02e1, 0x02e6,
- 0x02e6, 0x02f0, 0x02f4, 0x02ff, 0x0305, 0x0305, 0x0305, 0x030f,
- 0x0316, 0x031b, 0x0322, 0x0322, 0x032b, 0x0332, 0x0339, 0x0339,
- 0x033d, 0x035e, 0x0362, 0x0366, 0x036d, 0x0373, 0x0373, 0x037b,
- 0x0383, 0x0389, 0x038e, 0x0398, 0x03a1, 0x03a9, 0x03b1, 0x03cd,
- // Entry 80 - BF
- 0x03db, 0x03e7, 0x03ee, 0x03f9, 0x0403, 0x0408, 0x040e, 0x041a,
- 0x0425, 0x042e, 0x0435, 0x043c, 0x0444, 0x044f, 0x0456, 0x045b,
- 0x0462, 0x046a, 0x0473, 0x0473, 0x0473, 0x047f, 0x048c, 0x0495,
- 0x0499, 0x04a0, 0x04aa, 0x04aa, 0x04c1, 0x04ca, 0x04d4, 0x04de,
- 0x04e3, 0x04ea, 0x04f1, 0x04f8, 0x04ff, 0x0507, 0x0510, 0x0517,
- 0x052a, 0x052f, 0x053b, 0x0542, 0x054c, 0x0553, 0x055b, 0x0561,
- 0x0567, 0x056c, 0x057d, 0x0581, 0x0587, 0x058c, 0x059e, 0x05b8,
- 0x05c0, 0x05c8, 0x05d0, 0x05e8, 0x05f0, 0x05fd, 0x0606, 0x0611,
- // Entry C0 - FF
- 0x0616, 0x061e, 0x0623, 0x0623, 0x062b, 0x0632, 0x0632, 0x0637,
- 0x063d, 0x064b, 0x0658, 0x0660, 0x0665, 0x066a, 0x0673, 0x0682,
- 0x068a, 0x068a, 0x0692, 0x069e, 0x06a9, 0x06b0, 0x06b7, 0x06be,
- 0x06be, 0x06d5, 0x06e0, 0x06e0, 0x06e5, 0x06ef, 0x06ef, 0x0705,
- 0x070a, 0x070a, 0x070e, 0x0717, 0x0721, 0x0728, 0x0738, 0x0744,
- 0x074b, 0x0751, 0x0757, 0x076a, 0x0771, 0x0778, 0x0780, 0x0787,
- 0x078d, 0x078d, 0x0795, 0x079c, 0x07a6, 0x07ba, 0x07d9, 0x07e3,
- 0x07fa, 0x0810, 0x0817, 0x081f, 0x082f, 0x0834, 0x0834, 0x0839,
- // Entry 100 - 13F
- 0x0840, 0x084d, 0x0853, 0x085b,
- },
- },
- { // mgh
- "UandoraUfugustaniUalbaniaUsamoa ya MarekaniUazabajaniUrundiUbelinUkanada" +
- "UkongoUswisiUkodivaUchileUchinaUkolombiaUkubaUkuprosiUchekiUjibutiUd" +
- "enimakaUdominikaAlujeriaUmisiriUritereaUhispaniaUhabeshiUfiniUfijiUf" +
- "aransaUgaboniUgrenadaUjojiaUfaransa yo GwayaUganaUjibraltaUgrinlandi" +
- "UgambiaUgineUgwadelupeUgwatemalaUgwamUginebisauUguyanaUhondurasiUkor" +
- "asiaUhaitiUhungariaUndonesiaUayalandiUisraeliUhindiniWirakiItaliaUja" +
- "maikaUyordaniUjapaniUkenyaUkambodiaUkomoroUsantakitzi na NevisUkorea" +
- " KaskaziniUkorea KusiniUkazakistaniUlebanoniUsantalusiaUshenteniUsir" +
- "ilankaUliberiaUlesotoUtwaniaUsembajiUlativiaUlibyaUmantegroUbukiniUm" +
- "asedoniaUmalawiUmozambikiUnijeriUnijeriaUnorweUomaniUpanamaUperuuUfa" +
- "ransa yo PotinaUpapuaUfilipinoUpakistaniUpolandiUsantapieri na Mikel" +
- "oniUpitkairniUpwetorikoParagwaiUkatariUriyunioniUromaniaUrwandaUsaud" +
- "iUshelisheliUsudaniUswidiUsingapooUsantahelenaUsloveniaUslovakiaUsam" +
- "arinoUsenegaliUsomaliaUsurinamuUsao Tome na PrincipeUsalavadoUsiriaU" +
- "swaziUchadiUtogoUtailandiUjikistaniUtokelauUtimo MasharikiUturukimen" +
- "istaniUtunisiaUtongaUtukiUtrinidad na TobagoUtuvaluUtanzaniaUmarekan" +
- "iUvatikaniUsantavisenti na GrenadiniUvenezuelaUvietinamuUvanuatuUwal" +
- "is na FutunaUsamoaUyemeniAfrika du SuluUzambiaUzimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0019,
- 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x003b, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
- 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
- 0x0048, 0x0048, 0x0048, 0x0048, 0x004e, 0x0054, 0x005b, 0x005b,
- 0x0061, 0x0061, 0x0067, 0x0070, 0x0070, 0x0070, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x007d, 0x0083, 0x0083, 0x0083, 0x008a, 0x0093,
- // Entry 40 - 7F
- 0x009c, 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ab, 0x00ab,
- 0x00b3, 0x00bc, 0x00c4, 0x00c4, 0x00c9, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00d6, 0x00dd, 0x00dd, 0x00e5, 0x00eb, 0x00fc, 0x00fc,
- 0x0101, 0x010a, 0x0114, 0x011b, 0x0120, 0x012a, 0x012a, 0x012a,
- 0x012a, 0x0134, 0x0139, 0x0143, 0x014a, 0x014a, 0x014a, 0x0154,
- 0x015c, 0x0162, 0x016b, 0x016b, 0x0174, 0x017d, 0x0185, 0x0185,
- 0x018d, 0x018d, 0x0193, 0x0193, 0x0193, 0x0199, 0x0199, 0x01a1,
- 0x01a9, 0x01b0, 0x01b6, 0x01b6, 0x01bf, 0x01bf, 0x01c6, 0x01da,
- // Entry 80 - BF
- 0x01ea, 0x01f7, 0x01f7, 0x01f7, 0x0203, 0x0203, 0x020c, 0x0217,
- 0x0220, 0x022a, 0x0232, 0x0239, 0x0240, 0x0248, 0x0250, 0x0256,
- 0x0256, 0x0256, 0x0256, 0x025f, 0x025f, 0x0266, 0x0266, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0277, 0x0277, 0x0277, 0x0281, 0x0281,
- 0x0281, 0x0288, 0x0288, 0x0290, 0x0290, 0x0290, 0x0296, 0x0296,
- 0x0296, 0x0296, 0x0296, 0x029c, 0x02a3, 0x02a9, 0x02bb, 0x02c1,
- 0x02ca, 0x02d4, 0x02dc, 0x02f3, 0x02fd, 0x0307, 0x0307, 0x0307,
- // Entry C0 - FF
- 0x0307, 0x030f, 0x0316, 0x0316, 0x0320, 0x0328, 0x0328, 0x0328,
- 0x032f, 0x0335, 0x0335, 0x0340, 0x0347, 0x034d, 0x0356, 0x0362,
- 0x036b, 0x036b, 0x0374, 0x0374, 0x037d, 0x0386, 0x038e, 0x0397,
- 0x0397, 0x03ac, 0x03b5, 0x03b5, 0x03bb, 0x03c1, 0x03c1, 0x03c1,
- 0x03c7, 0x03c7, 0x03cc, 0x03d5, 0x03df, 0x03e7, 0x03f6, 0x0406,
- 0x040e, 0x0414, 0x0419, 0x042c, 0x0433, 0x0433, 0x043c, 0x043c,
- 0x043c, 0x043c, 0x0445, 0x0445, 0x0445, 0x044e, 0x0468, 0x0472,
- 0x0472, 0x0472, 0x047c, 0x0484, 0x0494, 0x049a, 0x049a, 0x04a1,
- // Entry 100 - 13F
- 0x04a1, 0x04af, 0x04b6, 0x04bf,
- },
- },
- { // mgo
- "Kamalunaba aben tisɔ̀",
- []uint16{ // 261 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 40 - 7F
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 80 - BF
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry C0 - FF
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
- // Entry 100 - 13F
- 0x0007, 0x0007, 0x0007, 0x0007, 0x0017,
- },
- },
- { // mk
- mkRegionStr,
- mkRegionIdx,
- },
- { // ml
- mlRegionStr,
- mlRegionIdx,
- },
- { // mn
- mnRegionStr,
- mnRegionIdx,
- },
- { // mr
- mrRegionStr,
- mrRegionIdx,
- },
- { // ms
- msRegionStr,
- msRegionIdx,
- },
- { // mt
- "AndorraEmirati Għarab MaqgħudaAfganistanAntigua and BarbudaAngwillaAlban" +
- "ijaArmenjaAntilles OlandiżiAngolaAntartikaArġentinaSamoa AmerikanaAw" +
- "strijaAwstraljaArubaGżejjer AlandAżerbajġanBożnija ĦerżegovinaBarbad" +
- "osBangladexxBelġjuBurkina FasoBulgarijaBaħrajnBurundiBeninBermudaBru" +
- "nejBolivjaIl-BrażilBaħamasButanBouvet IslandBotswanaBjelorussjaBeliż" +
- "eKanadaCocos (Keeling) IslandsDemocratic Republic of the CongoRepubb" +
- "lika Afrikana ĊentraliKongoSvizzeraKosta ta’ l-AvorjuCook IslandsĊil" +
- "iKamerunIċ-ĊinaKolombjaKosta RikaKubaKape VerdeChristmas IslandĊipru" +
- "Repubblika ĊekaIl-ĠermanjaĠibutiDanimarkaDominikaRepublikka Domenika" +
- "naAlġerijaEkwadorEstonjaEġittuSahara tal-PunentEritreaSpanjaEtijopja" +
- "Unjoni EwropeaFinlandjaFiġiFalkland IslandsMikronesjaGżejjer FaroeFr" +
- "anzaGabonL-IngilterraGrenadaĠeorġjaGujana FranċiżaGanaGibraltarGrinl" +
- "andjaGambjaGineaGwadelupeGinea EkwatorjaliGreċjaSouth Georgia and th" +
- "e South Sandwich IslandsGwatemalaGwamGinea-BissawGujanaĦong Kong S.A" +
- ".R. ĊinaHeard Island and McDonald IslandsĦondurasKroazjaĦaitiUngerij" +
- "aIndoneżjaIrlandaIżraelIsle of ManL-IndjaBritish Indian Ocean Territ" +
- "oryIraqIranIslandaL-ItaljaĠamajkaĠordanIl-ĠappunKenjaKirgistanKambod" +
- "jaKiribatiKomorosSaint Kitts and NevisKoreja ta’ FuqKoreja t’IsfelKu" +
- "wajtGżejjer KajmaniKażakstanLaosLibanuSanta LuċijaLiechtensteinSri L" +
- "ankaLiberjaLesotoLitwanjaLussemburguLatvjaLibjaMarokkMonakoMoldovaMa" +
- "dagaskarGżejjer ta’ MarshallMaċedonjaMaliMjanmarMongoljaMacao S.A.R." +
- ", ChinaGżejjer Marjana ta’ FuqMartinikMawritanjaMontserratMaltaMawri" +
- "zjuMaldivesMalawiMessikuMalasjaMożambikNamibjaNew CaledoniaNiġerNorf" +
- "olk IslandNiġerjaNikaragwaOlandaNorveġjaNepalNauruNiueNew ZealandOma" +
- "nPanamaPeruPolinesja FranċiżaPapwa-Ginea ĠdidaFilippiniPakistanPolon" +
- "jaSaint Pierre and MiquelonPitcairnPuerto RicoTerritorju Palestinjan" +
- "PortugallPalauParagwajQatarRéunionRumanijaIr-RussjaRwandaGħarabja Sa" +
- "wditaSolomon IslandsSeychellesSudanŻvezjaSingaporSaint HelenaSlovenj" +
- "aSvalbard and Jan MayenSlovakkjaSierra LeoneSan MarinoSenegalSomalja" +
- "SurinamSao Tome and PrincipeEl SalvadorSirjaSważilandTurks and Caico" +
- "s IslandsĊadTerritorji Franċiżi ta’ NofsinharTogoTajlandjaTaġikistan" +
- "TokelawTimor tal-LvantTurkmenistanTuneżTongaTurkijaTrinidad u Tobago" +
- "TuvaluTajwanTanżanijaUkrainaUgandaUnited States Minor Outlying Islan" +
- "dsL-Istati UnitiUrugwajUżbekistanVatikanSaint Vincent and the Grenad" +
- "inesVenezwelaBritish Virgin IslandsU.S. Virgin IslandsVjetnamVanwatu" +
- "Wallis and FutunaSamoaJemenMajotteAfrika t’IsfelŻambjaŻimbabweReġjun" +
- " Mhux MagħrufDinjaAffrikaAmerika t’IsfelOċejanjaAffrika tal-PunentAm" +
- "erika ĊentraliAffrika tal-LvantAffrika ta’ FuqAffrika NofsaniAffrika" +
- " t’IsfelAmerikaKaribewAsja tal-LvantAsja t’Isfel ĊentraliAsja tax-Xl" +
- "okkEwropa t’IsfelAwstralja u New ZealandMelanesjaReġjun ta’ Mikroneż" +
- "jaPolinesjaAsjaAsja ĊentraliAsja tal-PunentEwropaEwropa tal-LvantEwr" +
- "opa ta’ FuqEwropa tal-PunentAmerika Latina",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0020, 0x002a, 0x003d, 0x0045, 0x004d,
- 0x0054, 0x0066, 0x006c, 0x0075, 0x007f, 0x008e, 0x0096, 0x009f,
- 0x00a4, 0x00b2, 0x00be, 0x00d4, 0x00dc, 0x00e6, 0x00ed, 0x00f9,
- 0x0102, 0x010a, 0x0111, 0x0116, 0x0116, 0x011d, 0x0123, 0x012a,
- 0x012a, 0x0134, 0x013c, 0x0141, 0x014e, 0x0156, 0x0161, 0x0168,
- 0x016e, 0x0185, 0x01a5, 0x01c2, 0x01c7, 0x01cf, 0x01e3, 0x01ef,
- 0x01f4, 0x01fb, 0x0204, 0x020c, 0x020c, 0x0216, 0x021a, 0x0224,
- 0x0224, 0x0234, 0x023a, 0x024a, 0x0256, 0x0256, 0x025d, 0x0266,
- // Entry 40 - 7F
- 0x026e, 0x0283, 0x028c, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02b2,
- 0x02b9, 0x02bf, 0x02c7, 0x02d5, 0x02de, 0x02e3, 0x02f3, 0x02fd,
- 0x030b, 0x0311, 0x0316, 0x0322, 0x0329, 0x0332, 0x0343, 0x0343,
- 0x0347, 0x0350, 0x035a, 0x0360, 0x0365, 0x036e, 0x037f, 0x0386,
- 0x03b2, 0x03bb, 0x03bf, 0x03cb, 0x03d1, 0x03e8, 0x0409, 0x0412,
- 0x0419, 0x041f, 0x0427, 0x0427, 0x0431, 0x0438, 0x043f, 0x044a,
- 0x0451, 0x046f, 0x0473, 0x0477, 0x047e, 0x0486, 0x0486, 0x048e,
- 0x0495, 0x049f, 0x04a4, 0x04ad, 0x04b5, 0x04bd, 0x04c4, 0x04d9,
- // Entry 80 - BF
- 0x04e9, 0x04f9, 0x04ff, 0x050f, 0x0519, 0x051d, 0x0523, 0x0530,
- 0x053d, 0x0546, 0x054d, 0x0553, 0x055b, 0x0566, 0x056c, 0x0571,
- 0x0577, 0x057d, 0x0584, 0x0584, 0x0584, 0x058e, 0x05a5, 0x05af,
- 0x05b3, 0x05ba, 0x05c2, 0x05d5, 0x05ef, 0x05f7, 0x0601, 0x060b,
- 0x0610, 0x0618, 0x0620, 0x0626, 0x062d, 0x0634, 0x063d, 0x0644,
- 0x0651, 0x0657, 0x0665, 0x066d, 0x0676, 0x067c, 0x0685, 0x068a,
- 0x068f, 0x0693, 0x069e, 0x06a2, 0x06a8, 0x06ac, 0x06c0, 0x06d2,
- 0x06db, 0x06e3, 0x06ea, 0x0703, 0x070b, 0x0716, 0x072c, 0x0735,
- // Entry C0 - FF
- 0x073a, 0x0742, 0x0747, 0x0747, 0x074f, 0x0757, 0x0757, 0x0760,
- 0x0766, 0x0777, 0x0786, 0x0790, 0x0795, 0x079c, 0x07a4, 0x07b0,
- 0x07b8, 0x07ce, 0x07d7, 0x07e3, 0x07ed, 0x07f4, 0x07fb, 0x0802,
- 0x0802, 0x0817, 0x0822, 0x0822, 0x0827, 0x0831, 0x0831, 0x0849,
- 0x084d, 0x0872, 0x0876, 0x087f, 0x088a, 0x0891, 0x08a0, 0x08ac,
- 0x08b2, 0x08b7, 0x08be, 0x08cf, 0x08d5, 0x08db, 0x08e5, 0x08ec,
- 0x08f2, 0x0916, 0x0924, 0x092b, 0x0936, 0x093d, 0x095d, 0x0966,
- 0x097c, 0x098f, 0x0996, 0x099d, 0x09ae, 0x09b3, 0x09b3, 0x09b8,
- // Entry 100 - 13F
- 0x09bf, 0x09cf, 0x09d6, 0x09df, 0x09f4, 0x09f9, 0x0a00, 0x0a00,
- 0x0a11, 0x0a1a, 0x0a2c, 0x0a3d, 0x0a4e, 0x0a5f, 0x0a6e, 0x0a7f,
- 0x0a86, 0x0a86, 0x0a8d, 0x0a9b, 0x0ab3, 0x0ac1, 0x0ad1, 0x0ae8,
- 0x0af1, 0x0b0a, 0x0b13, 0x0b17, 0x0b25, 0x0b34, 0x0b3a, 0x0b4a,
- 0x0b5a, 0x0b6b, 0x0b79,
- },
- },
- { // mua
- "andorraSǝr Arabiya ma tainiafghanistaŋantiguan ne Barbudaanguiyaalbaniya" +
- "armeniyaSǝr ma kasǝŋ ma laŋneangolaargentiniyasamoa Amerikaaustriyaa" +
- "ustraliyaarubaazerbaijaŋbosniya ne Herzegovinabarbadiyabangladeshiya" +
- "belgikaburkina Fasobulgariyabahraiŋburundibeniŋbermudiyabruniyaboliv" +
- "iyabrazilyabahamasbutaŋbotswanabelarussiyabeliziyakanadaSǝr Kongo ma" +
- " dii ne zaircentrafrikakongoSǝr Swissser Ivoiriyakook ma laŋnesyilik" +
- "ameruŋsyiŋkolombiyakosta RikaKubakap ma laŋneSyipriyaSǝr SyekGermani" +
- "yaDjiboutiDaŋmarkDominikSǝr Dominik ma liialgeriyaEkwatǝrEstoniyaSǝr" +
- " EgyptSǝr EritreEspaŋiyaEtiopiaSǝr FinlandSǝr FijiSǝr malouniya ma l" +
- "aŋneMicronesiyaFranssǝGaboŋSǝr AnglofoŋGrenadǝGeorgiyaSǝr Guyana ma " +
- "FranssǝGanaSǝr GibraltarSǝr GroenlandGambiyaGuineSǝr GwadeloupǝSǝr G" +
- "uineSǝr GrekGwatemalaGwamGuine ma BissaoGuyanaSǝr HonduraskroatiyaSǝ" +
- "r HaitiHungriyaIndonesiyaSǝr IrelandSǝr IsraelSǝr Indǝanglofoŋ ma In" +
- "diyaIrakIraŋSǝr IslandItaliyaJamaikaJordaniyaJapaŋSǝr KenyaKirgizsta" +
- "ŋkambodiyaSǝr KiribatikomoraSǝr Kristof ne NievǝSǝr Kore fah sǝŋSǝr" +
- " Kore nekǝsǝŋSǝr Kowaitkayman ma laŋneKazakstaŋSǝr LaosLibaŋSǝr Luci" +
- "aLichtǝnsteiŋSǝr LankaLiberiyaSǝr LesothoLituaniyaSǝr LuxemburgLeton" +
- "iyaLibiyaMarokMonakoMoldoviyaMadagaskarSǝr Marshall ma laŋneMacedoni" +
- "yaSǝr MaliSǝr MyanmarMongoliyaSǝr Maria ma laŋneMartinikaMauritaniya" +
- "Sǝr MontserratSǝr MaltaSǝr MauricǝMaldivǝSǝr MalawiMexikoMalaysiyaMo" +
- "zambikaNamibiyaKaledoniya mafuuSǝr NigerNorfolk ma laŋneNigeriyaNika" +
- "ragwaSǝr ma kasǝŋNorvegǝSǝr NepalSǝr NauruNiweZeland mafuuOmaŋSǝr Pa" +
- "namaPeruSǝr Polynesiya ma FranssǝPapuasiya Guine mafuuFilipiŋPakista" +
- "ŋPologŋSǝr Pǝtar ne MikǝlonPitkairnPorto RikoSǝr PalestiniyaSǝr Por" +
- "tugalSǝr PalauParagwaiKatarSǝr ReunionRomaniyaRussiyaRwandaSǝr Arabi" +
- "yaSǝr Salomon ma laŋneSaichelSudaŋSǝr SuedSingapurSǝr HelenaSloveniy" +
- "aSlovakiyaSierra LeonǝSǝr MarinoSenegalSomaliyaSǝr SurinamSao Tome n" +
- "e PrincipeSǝr SalvadorSyriaSǝr SwazilandTurkiya ne kaicos ma laŋnesy" +
- "adSǝr TogoTailandTajikistaŋSǝr TokelauTimoriyaTurkmenistaŋTunisiyaSǝ" +
- "r TongaTurkiyaTrinite ne TobagoSǝr TuvaluTaiwaŋTanzaniyaUkraiŋUganda" +
- "AmerikaUrugwaiUzbekistaŋVaticaŋSǝr Vinceŋ ne GrenadiŋSǝr Venezuelase" +
- "r Anglofon ma laŋneSǝr amerika ma laŋneSǝr VietnamSǝr VanuatuWallis " +
- "ne FutunaSǝr SamoaYemeŋMayotAfrika nekǝsǝŋZambiyaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001c, 0x0028, 0x003b, 0x0042, 0x004a,
- 0x0052, 0x006b, 0x0071, 0x0071, 0x007c, 0x0089, 0x0091, 0x009b,
- 0x00a0, 0x00a0, 0x00ab, 0x00c1, 0x00ca, 0x00d7, 0x00de, 0x00ea,
- 0x00f3, 0x00fb, 0x0102, 0x0108, 0x0108, 0x0111, 0x0118, 0x0120,
- 0x0120, 0x0128, 0x012f, 0x0135, 0x0135, 0x013d, 0x0148, 0x0150,
- 0x0156, 0x0156, 0x016f, 0x017a, 0x017f, 0x0189, 0x0195, 0x01a3,
- 0x01a8, 0x01b0, 0x01b5, 0x01be, 0x01be, 0x01c8, 0x01cc, 0x01d9,
- 0x01d9, 0x01d9, 0x01e1, 0x01ea, 0x01f3, 0x01f3, 0x01fb, 0x0203,
- // Entry 40 - 7F
- 0x020a, 0x021d, 0x0225, 0x0225, 0x022d, 0x0235, 0x023f, 0x023f,
- 0x024a, 0x0253, 0x025a, 0x025a, 0x0266, 0x026f, 0x0287, 0x0292,
- 0x0292, 0x029a, 0x02a0, 0x02ae, 0x02b6, 0x02be, 0x02d5, 0x02d5,
- 0x02d9, 0x02e7, 0x02f5, 0x02fc, 0x0301, 0x0311, 0x031b, 0x0324,
- 0x0324, 0x032d, 0x0331, 0x0340, 0x0346, 0x0346, 0x0346, 0x0353,
- 0x035b, 0x0365, 0x036d, 0x036d, 0x0377, 0x0383, 0x038e, 0x038e,
- 0x0398, 0x03ab, 0x03af, 0x03b4, 0x03bf, 0x03c6, 0x03c6, 0x03cd,
- 0x03d6, 0x03dc, 0x03e6, 0x03f1, 0x03fa, 0x0407, 0x040d, 0x0423,
- // Entry 80 - BF
- 0x0436, 0x044a, 0x0455, 0x0465, 0x046f, 0x0478, 0x047e, 0x0488,
- 0x0496, 0x04a0, 0x04a8, 0x04b4, 0x04bd, 0x04cb, 0x04d3, 0x04d9,
- 0x04de, 0x04e4, 0x04ed, 0x04ed, 0x04ed, 0x04f7, 0x050e, 0x0518,
- 0x0521, 0x052d, 0x0536, 0x0536, 0x054a, 0x0553, 0x055e, 0x056d,
- 0x0577, 0x0584, 0x058c, 0x0597, 0x059d, 0x05a6, 0x05af, 0x05b7,
- 0x05c7, 0x05d1, 0x05e2, 0x05ea, 0x05f3, 0x0602, 0x060a, 0x0614,
- 0x061e, 0x0622, 0x062e, 0x0633, 0x063e, 0x0642, 0x065d, 0x0672,
- 0x067a, 0x0683, 0x068a, 0x06a1, 0x06a9, 0x06b3, 0x06c3, 0x06d0,
- // Entry C0 - FF
- 0x06da, 0x06e2, 0x06e7, 0x06e7, 0x06f3, 0x06fb, 0x06fb, 0x0702,
- 0x0708, 0x0714, 0x072a, 0x0731, 0x0737, 0x0740, 0x0748, 0x0753,
- 0x075c, 0x075c, 0x0765, 0x0772, 0x077d, 0x0784, 0x078c, 0x0798,
- 0x0798, 0x07ac, 0x07b9, 0x07b9, 0x07be, 0x07cc, 0x07cc, 0x07e7,
- 0x07eb, 0x07eb, 0x07f4, 0x07fb, 0x0806, 0x0812, 0x081a, 0x0827,
- 0x082f, 0x0839, 0x0840, 0x0851, 0x085c, 0x0863, 0x086c, 0x0873,
- 0x0879, 0x0879, 0x0880, 0x0887, 0x0892, 0x089a, 0x08b3, 0x08c1,
- 0x08d7, 0x08ed, 0x08f9, 0x0905, 0x0915, 0x091f, 0x091f, 0x0925,
- // Entry 100 - 13F
- 0x092a, 0x093b, 0x0942, 0x094a,
- },
- },
- { // my
- myRegionStr,
- myRegionIdx,
- },
- { // mzn
- "آسنسیون جزیرهآندورامتحده عربی اماراتافغانستونآنتیگوا و باربوداآنگویلاآلب" +
- "انیارمنستونآنگولاجنوبی یخ\u200cبزه قطبآرژانتینآمریکای ِساموآاتریشاس" +
- "ترالیاآروباآلند جزیرهآذربایجونبوسنی و هرزگوینباربادوسبنگلادشبلژیکبو" +
- "رکینا فاسوبلغارستونبحرینبوروندیبنینسنت بارتلمیبرمودابرونئیبولیویهلن" +
- "د ِکاراییبی جزایربرزیلباهامابوتانبووت جزیرهبوتساوانابلاروسبلیزکاناد" +
- "اکوک (کیلینگ) جزایرکنگو کینشاسامرکزی آفریقای جمهوریکنگو برازاویلسوی" +
- "یسعاج ِساحلکوک جزایرشیلیکامرونچینکلمبیاکلیپرتون جزیرهکاستاریکاکوباک" +
- "یپ وردکوراسائوکریسمس جزیرهقبرسچک جمهوریآلماندیگو گارسیاجیبوتیدانمار" +
- "کدومنیکادومنیکن جمهوریالجزیرهسوتا و ملیلهاکوادراستونیمصرغربی صحراار" +
- "یترهایسپانیااتیوپیاروپا اتحادیهفنلاندفیجیفالکلند جزیره\u200cئونمیکر" +
- "ونزیفارو جزایرفرانسهگابونبریتانیاگراناداگرجستونفرانسه\u200cی ِگویان" +
- "گرنزیغناجبل طارقگرینلندگامبیاگینهگوادلوپاستوایی گینهیونانجنوبی جورج" +
- "یا و جنوبی ساندویچ جزایرگواتمالاگوئامگینه بیسائوگویانهنگ کنگهارد و " +
- "مک\u200cدونالد جزایرهندوراسکرواسیهاییتیمجارستونقناری جزایراندونزیای" +
- "رلندایسراییلمن ِجزیرههندبریتانیای هند ِاوقیانوس ِمناطقعراقایرانایسل" +
- "ندایتالیاجرسیجاماییکااردنجاپونکنیاقرقیزستونکامبوجکیریباتیکومورسنت ک" +
- "یتس و نویسشمالی کُرهجنوبی کُرهکویتکیمن جزیره\u200cئونقزاقستونلائوسل" +
- "بنانسنت لوسیالیختن اشتاینسریلانکالیبریالسوتولتونیلوکزامبورگلاتویالی" +
- "بیمراکشموناکومولداویمونته\u200cنگروسنت مارتینماداگاسکارمارشال جزایر" +
- "مقدونیهمالیمیانمارمغولستونماکائو (چین دله)شمالی ماریانا جزایرمارتین" +
- "یک جزیره\u200cئونموریتانیمونتسراتمالتمورى تيوسمالدیومالاویمکزیکمالز" +
- "یموزامبیکنامبیانیو کالیدونیانیجرنورفولک جزیرهنیجریهنیکاراگوئههلندنر" +
- "وژنپالنائورونیئونیوزلندعمانپاناماپروفرانسه\u200cی پولی\u200cنزیپاپو" +
- "ا نو گینهفیلیپینپاکستونلهستونسن پییر و میکلنپیتکارین جزایرپورتوریکو" +
- "فلسطین ِسرزمینپرتغالپالائوپاراگوئهقطراوقیانوسیه\u200cی ِپرت ِجائونر" +
- "ئونیونرومانیصربستونروسیهروآنداعربستونسلیمون جزیرهسیشلسودانسوئدسنگاپ" +
- "ورسنت هلنااسلوونیسوالبارد و يان مايناسلواکیسیرالئونسن مارینوسنگالسو" +
- "مالیسورینامجنوبی سودانسائوتومه و پرینسیپالسالوادورسنت مارتنسوریهسوا" +
- "زیلندتریستان دا جونهاتورکس و کایکوس جزایرچادفرانسه\u200cی جنوبی منا" +
- "طقتوگوتایلندتاجیکستونتوکلائوتیمور شرقیترکمونستونتونستونگاترکیهترینی" +
- "داد و توباگوتووالوتایوانتانزانیااوکرایناوگانداآمریکای پَرتِ\u200cپِ" +
- "لا جزیره\u200cئونمتحده ایالاتاروگوئهازبکستونواتیکانسنت وینسنت و گرن" +
- "ادینونزوئلابریتانیای ویرجینآمریکای ویرجینویتناموانواتووالیس و فوتون" +
- "اساموآکوزوویمنمایوتجنوبی افریقازامبیازیمبابوهنامَیِّن منطقهجهونآفری" +
- "قاشمالی آمریکاجنوبی آمریکااوقیانوسیهغربی آفریقامیونی آمریکاشرقی آفر" +
- "یقاشمالی ۀفریقامیونی آفریقاجنوبی آفریقاآمریکاشمالی امریکاکاراییبشرق" +
- "ی آسیاجنوبی آسیاآسیای ِجنوب\u200cشرقی\u200cوَرجنوبی اروپااوسترالزیم" +
- "لانزیمیکرونزی منقطهپولی\u200cنزیآسیامیونی آسیاغربی آسیااروپاشرقی ار" +
- "وپاشمالی اروپاغربی اروپالاتین آمریکا",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0019, 0x0025, 0x0045, 0x0057, 0x0077, 0x0085, 0x0091,
- 0x00a1, 0x00a1, 0x00ad, 0x00cc, 0x00dc, 0x00f7, 0x0101, 0x0111,
- 0x011b, 0x012e, 0x0140, 0x015c, 0x016c, 0x017a, 0x0184, 0x019b,
- 0x01ad, 0x01b7, 0x01c5, 0x01cd, 0x01e2, 0x01ee, 0x01fa, 0x0206,
- 0x022c, 0x0236, 0x0242, 0x024c, 0x025f, 0x0271, 0x027d, 0x0285,
- 0x0291, 0x02b1, 0x02c8, 0x02ee, 0x0307, 0x0311, 0x0322, 0x0333,
- 0x033b, 0x0347, 0x034d, 0x0359, 0x0374, 0x0386, 0x038e, 0x039b,
- 0x03ab, 0x03c2, 0x03ca, 0x03db, 0x03e5, 0x03fa, 0x0406, 0x0414,
- // Entry 40 - 7F
- 0x0422, 0x043d, 0x044b, 0x0461, 0x046d, 0x0479, 0x047f, 0x0490,
- 0x049c, 0x04ac, 0x04b8, 0x04d1, 0x04dd, 0x04e5, 0x0507, 0x0517,
- 0x052a, 0x0536, 0x0540, 0x0550, 0x055e, 0x056c, 0x058a, 0x0594,
- 0x059a, 0x05a9, 0x05b7, 0x05c3, 0x05cb, 0x05d9, 0x05f0, 0x05fa,
- 0x0639, 0x0649, 0x0653, 0x0668, 0x0672, 0x067f, 0x06a9, 0x06b7,
- 0x06c3, 0x06cf, 0x06df, 0x06f4, 0x0702, 0x070e, 0x071e, 0x072f,
- 0x0735, 0x076e, 0x0776, 0x0780, 0x078c, 0x079a, 0x07a2, 0x07b2,
- 0x07ba, 0x07c4, 0x07cc, 0x07de, 0x07ea, 0x07fa, 0x0804, 0x081f,
- // Entry 80 - BF
- 0x0832, 0x0845, 0x084d, 0x0869, 0x0879, 0x0883, 0x088d, 0x089e,
- 0x08b5, 0x08c5, 0x08d1, 0x08db, 0x08e5, 0x08f9, 0x0905, 0x090d,
- 0x0917, 0x0923, 0x0931, 0x0946, 0x0959, 0x096d, 0x0984, 0x0992,
- 0x099a, 0x09a8, 0x09b8, 0x09d4, 0x09f8, 0x0a1c, 0x0a2c, 0x0a3c,
- 0x0a44, 0x0a55, 0x0a61, 0x0a6d, 0x0a77, 0x0a81, 0x0a91, 0x0a9d,
- 0x0ab6, 0x0abe, 0x0ad7, 0x0ae3, 0x0af7, 0x0aff, 0x0b07, 0x0b0f,
- 0x0b1b, 0x0b23, 0x0b31, 0x0b39, 0x0b45, 0x0b4b, 0x0b6e, 0x0b86,
- 0x0b94, 0x0ba2, 0x0bae, 0x0bc9, 0x0be4, 0x0bf6, 0x0c11, 0x0c1d,
- // Entry C0 - FF
- 0x0c29, 0x0c39, 0x0c3f, 0x0c6e, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0,
- 0x0cac, 0x0cba, 0x0cd1, 0x0cd9, 0x0ce3, 0x0ceb, 0x0cf9, 0x0d08,
- 0x0d16, 0x0d39, 0x0d47, 0x0d57, 0x0d68, 0x0d72, 0x0d7e, 0x0d8c,
- 0x0da1, 0x0dc3, 0x0dd7, 0x0de8, 0x0df2, 0x0e02, 0x0e20, 0x0e45,
- 0x0e4b, 0x0e72, 0x0e7a, 0x0e86, 0x0e98, 0x0ea6, 0x0eb9, 0x0ecd,
- 0x0ed5, 0x0edf, 0x0ee9, 0x0f09, 0x0f15, 0x0f21, 0x0f31, 0x0f3f,
- 0x0f4d, 0x0f85, 0x0f9c, 0x0faa, 0x0fba, 0x0fc8, 0x0fed, 0x0ffb,
- 0x101a, 0x1035, 0x1041, 0x104f, 0x1069, 0x1073, 0x107d, 0x1083,
- // Entry 100 - 13F
- 0x108d, 0x10a4, 0x10b0, 0x10c0, 0x10db, 0x10e3, 0x10ef, 0x1106,
- 0x111d, 0x1131, 0x1146, 0x115d, 0x1172, 0x1189, 0x11a0, 0x11b7,
- 0x11c3, 0x11da, 0x11e8, 0x11f9, 0x120c, 0x1235, 0x124a, 0x125c,
- 0x1268, 0x1283, 0x1294, 0x129c, 0x12af, 0x12c0, 0x12ca, 0x12dd,
- 0x12f2, 0x1305, 0x131c,
- },
- },
- { // naq
- "AndorrabUnited Arab EmiratesAfghanistanniAntiguab tsî BarbudabAnguillabA" +
- "lbaniabArmeniabNetherlands AntillesAngolabArgentinabAmericab SamoabA" +
- "ustriabAustraliebArubabAzerbaijanniBosniab tsî HerzegovinabBarbadosB" +
- "angladesBelgiummiBurkina FasobBulgariabBahrainBurundibBeninsBermudas" +
- "BruneiBoliviabBraziliabBahamasBhutansBotswanabBelarusBelizeKanadabDe" +
- "mocratic Republic of the CongoCentral African RepublikiCongobSwitzer" +
- "landiIvoorkusiCook IslandsChilibCameroonniChinabColombiabCosta RicaC" +
- "ubabCape Verde IslandsCyprusCzech RepublikiDuitslandiDjiboutiDenmark" +
- "iDominicabDominican RepublicAlgeriabEcuadoriEstoniabEgiptebEritreabS" +
- "paniebEthiopiabFinlandiFijibFalkland IslandsMicronesiaFrankreikiGabo" +
- "niUnited KingdomGrenadaGeorgiabFrench GuianaGhanabGibraltarGreenland" +
- "GambiabGuineabGuadeloupeEquatorial GuineabXrikelandiGuatemalaGuamGui" +
- "nea-BissauGuyanaHondurasCroatiabHaitiHongareiebIndonesiabIrlandiIsra" +
- "eliIndiabBritish Indian Ocean TerritoryIraqiIranniIcelandItaliabJama" +
- "icabJordanniJapanniKenyabKyrgyzstanniCambodiabKiribatiComorosSaint K" +
- "itts and NevisKoreab, NoordKoreab, SuidKuwaitiCayman IslandsKazakhst" +
- "anniLaosLebanonniSaint LuciaLiechtensteinniSri LankabLiberiabLesotho" +
- "bLithuaniabLuxembourgiLatviaLibyabMoroccoMonacoMoldovaMadagascariMar" +
- "shall IslandsMacedoniabMalibMyanmarMongoliaNorthern Mariana IslandsM" +
- "artiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawibMexicobMal" +
- "aysiabMozambikiNamibiabNew CaledoniaNigeriNorfolk IslandNigeriebNica" +
- "raguabNetherlandsNoorweebNepaliNauruNiueNew ZealandiOmanPanamaPerubF" +
- "rench PolynesiaPapua New GuineabPhilippinniPakistanniPolandiSaint Pi" +
- "erre and MiquelonPitcairnPuerto RicoPalestinian West Bank and GazaPo" +
- "rtugaliPalauParaguaibQatarRéunionRomaniaRasiabRwandabSaudi ArabiabSo" +
- "lomon IslandsSeychellesSudanniSwedebSingaporeSaint HelenaSloveniaSlo" +
- "vakiaSierra LeoneSan MarinoSenegaliSomaliabSurinameSão Tomé and Prín" +
- "cipeEl SalvadoriSyriabSwazilandiTurks and Caicos IslandsChadiTogobTh" +
- "ailandiTajikistanTokelauEast TimorTurkmenistanTunisiabTongaTurkeiebT" +
- "rinidad and TobagoTuvaluTaiwanTanzaniabUkraineUgandabAmerikabUruguai" +
- "bUzbekistanVatican StateSaint Vincent and the GrenadinesVenezuelabBr" +
- "itish Virgin IslandsU.S. Virgin IslandsVietnammiVanuatuWallis and Fu" +
- "tunaSamoaYemenMayotteSuid AfrikabZambiabZimbabweb",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x001c, 0x0029, 0x003f, 0x0048, 0x0050,
- 0x0058, 0x006c, 0x0073, 0x0073, 0x007d, 0x008c, 0x0094, 0x009e,
- 0x00a4, 0x00a4, 0x00b0, 0x00c9, 0x00d1, 0x00da, 0x00e3, 0x00f0,
- 0x00f9, 0x0100, 0x0108, 0x010e, 0x010e, 0x0116, 0x011c, 0x0124,
- 0x0124, 0x012d, 0x0134, 0x013b, 0x013b, 0x0144, 0x014b, 0x0151,
- 0x0158, 0x0158, 0x0178, 0x0191, 0x0197, 0x01a3, 0x01ac, 0x01b8,
- 0x01be, 0x01c8, 0x01ce, 0x01d7, 0x01d7, 0x01e1, 0x01e6, 0x01f8,
- 0x01f8, 0x01f8, 0x01fe, 0x020d, 0x0217, 0x0217, 0x021f, 0x0227,
- // Entry 40 - 7F
- 0x0230, 0x0242, 0x024a, 0x024a, 0x0252, 0x025a, 0x0261, 0x0261,
- 0x0269, 0x0270, 0x0279, 0x0279, 0x0281, 0x0286, 0x0296, 0x02a0,
- 0x02a0, 0x02aa, 0x02b0, 0x02be, 0x02c5, 0x02cd, 0x02da, 0x02da,
- 0x02e0, 0x02e9, 0x02f2, 0x02f9, 0x0300, 0x030a, 0x031c, 0x0326,
- 0x0326, 0x032f, 0x0333, 0x0340, 0x0346, 0x0346, 0x0346, 0x034e,
- 0x0356, 0x035b, 0x0365, 0x0365, 0x036f, 0x0376, 0x037d, 0x037d,
- 0x0383, 0x03a1, 0x03a6, 0x03ac, 0x03b3, 0x03ba, 0x03ba, 0x03c2,
- 0x03ca, 0x03d1, 0x03d7, 0x03e3, 0x03ec, 0x03f4, 0x03fb, 0x0410,
- // Entry 80 - BF
- 0x041d, 0x0429, 0x0430, 0x043e, 0x044a, 0x044e, 0x0457, 0x0462,
- 0x0471, 0x047b, 0x0483, 0x048b, 0x0495, 0x04a0, 0x04a6, 0x04ac,
- 0x04b3, 0x04b9, 0x04c0, 0x04c0, 0x04c0, 0x04cb, 0x04db, 0x04e5,
- 0x04ea, 0x04f1, 0x04f9, 0x04f9, 0x0511, 0x051b, 0x0525, 0x052f,
- 0x0534, 0x053d, 0x0545, 0x054c, 0x0553, 0x055c, 0x0565, 0x056d,
- 0x057a, 0x0580, 0x058e, 0x0596, 0x05a0, 0x05ab, 0x05b3, 0x05b9,
- 0x05be, 0x05c2, 0x05ce, 0x05d2, 0x05d8, 0x05dd, 0x05ed, 0x05fe,
- 0x0609, 0x0613, 0x061a, 0x0633, 0x063b, 0x0646, 0x0664, 0x066d,
- // Entry C0 - FF
- 0x0672, 0x067b, 0x0680, 0x0680, 0x0688, 0x068f, 0x068f, 0x0695,
- 0x069c, 0x06a9, 0x06b8, 0x06c2, 0x06c9, 0x06cf, 0x06d8, 0x06e4,
- 0x06ec, 0x06ec, 0x06f4, 0x0700, 0x070a, 0x0712, 0x071a, 0x0722,
- 0x0722, 0x073a, 0x0746, 0x0746, 0x074c, 0x0756, 0x0756, 0x076e,
- 0x0773, 0x0773, 0x0778, 0x0781, 0x078b, 0x0792, 0x079c, 0x07a8,
- 0x07b0, 0x07b5, 0x07bd, 0x07d0, 0x07d6, 0x07dc, 0x07e5, 0x07ec,
- 0x07f3, 0x07f3, 0x07fb, 0x0803, 0x080d, 0x081a, 0x083a, 0x0844,
- 0x085a, 0x086d, 0x0876, 0x087d, 0x088e, 0x0893, 0x0893, 0x0898,
- // Entry 100 - 13F
- 0x089f, 0x08ab, 0x08b2, 0x08bb,
- },
- },
- { // nd
- "AndoraUnited Arab EmiratesAfghanistanAntigua le BarbudaAnguillaAlbaniaAr" +
- "meniaNetherlands AntillesAngolaAjentinaSamoa ye AmelikaAustriaAustra" +
- "liaArubhaAzerbaijanBhosnia le HerzegovinaBhabhadosiBhangiladeshiBhel" +
- "giumBhukina FasoBhulgariyaBhahareniBhurundiBheniniBhemudaBruneiBholi" +
- "viyaBraziliBhahamasBhutaniBotswanaBhelarusiBhelizeKhanadaDemocratic " +
- "Republic of the CongoCentral African RepublicKhongoSwitzerlandIvory " +
- "CoastCook IslandsChileKhameruniChinaKholombiyaKhosta RikhaCubaCape V" +
- "erde IslandsCyprusCzech RepublicGermanyDjiboutiDenmakhiDominikhaDomi" +
- "nican RepublicAljeriyaEcuadorEstoniaEgyptEritreaSpainEthiopiaFinland" +
- "FijiFalkland IslandsMicronesiaFuransiGabhoniUnited KingdomGrenadaGeo" +
- "rgiaGwiyana ye FuransiGhanaGibraltarGreenlandGambiyaGuineaGuadeloupe" +
- "Equatorial GuineaGreeceGuatemalaGuamGuinea-BissauGuyanaHondurasCroat" +
- "iaHayitiHungaryIndonesiyaIrelandIsuraeliIndiyaBritish Indian Ocean T" +
- "erritoryIrakiIranIcelandItaliJamaicaJodaniJapanKhenyaKyrgyzstanCambo" +
- "diaKhiribatiKhomoroSaint Kitts and NevisNorth KoreaSouth KoreaKhuwei" +
- "tiCayman IslandsKazakhstanLaosLebhanoniSaint LuciaLiechtensteinSri L" +
- "ankaLibheriyaLesothoLithuaniaLuxembourgLatviaLibhiyaMorokhoMonakhoMo" +
- "ldovaMadagaskaMarshall IslandsMacedoniaMaliMyanmarMongoliaNorthern M" +
- "ariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMa" +
- "lawiMeksikhoMalezhiyaMozambiqueNamibhiyaNew CaledoniaNigerNorfolk Is" +
- "landNigeriyaNicaraguaNetherlandsNoweyiNephaliNauruNiueNew ZealandOma" +
- "niPanamaPheruPholinesiya ye FulansiPapua New GuineaPhilippinesPhakis" +
- "taniPholandiSaint Pierre and MiquelonPitcairnPuerto RicoPalestinian " +
- "West Bank and GazaPortugalPalauParaguayKathariRéunionRomaniaRashiyaR" +
- "uwandaSaudi ArabiaSolomon IslandsSeychellesSudaniSwedenSingaporeSain" +
- "t HelenaSloveniaSlovakiaSierra LeoneSan MarinoSenegaliSomaliyaSurina" +
- "meSão Tomé and PríncipeEl SalvadorSyriaSwazilandTurks and Caicos Isl" +
- "andsChadiThogoThayilandiTajikistanThokelawuEast TimorTurkmenistanTun" +
- "isiyaThongaThekhiTrinidad le TobagoThuvaluThayiwaniTanzaniyaYukreini" +
- "UgandaAmelikaYurugwaiUzbekistanVatican StateSaint Vincent and the Gr" +
- "enadinesVenezuelaBritish Virgin IslandsU.S. Virgin IslandsVietnamVha" +
- "nuatuWallis and FutunaSamowaYemeniMayotteMzansi ye AfrikaZambiyaZimb" +
- "abwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x001a, 0x0025, 0x0037, 0x003f, 0x0046,
- 0x004d, 0x0061, 0x0067, 0x0067, 0x006f, 0x007f, 0x0086, 0x008f,
- 0x0095, 0x0095, 0x009f, 0x00b5, 0x00bf, 0x00cc, 0x00d4, 0x00e0,
- 0x00ea, 0x00f3, 0x00fb, 0x0102, 0x0102, 0x0109, 0x010f, 0x0118,
- 0x0118, 0x011f, 0x0127, 0x012e, 0x012e, 0x0136, 0x013f, 0x0146,
- 0x014d, 0x014d, 0x016d, 0x0185, 0x018b, 0x0196, 0x01a1, 0x01ad,
- 0x01b2, 0x01bb, 0x01c0, 0x01ca, 0x01ca, 0x01d6, 0x01da, 0x01ec,
- 0x01ec, 0x01ec, 0x01f2, 0x0200, 0x0207, 0x0207, 0x020f, 0x0217,
- // Entry 40 - 7F
- 0x0220, 0x0232, 0x023a, 0x023a, 0x0241, 0x0248, 0x024d, 0x024d,
- 0x0254, 0x0259, 0x0261, 0x0261, 0x0268, 0x026c, 0x027c, 0x0286,
- 0x0286, 0x028d, 0x0294, 0x02a2, 0x02a9, 0x02b0, 0x02c2, 0x02c2,
- 0x02c7, 0x02d0, 0x02d9, 0x02e0, 0x02e6, 0x02f0, 0x0301, 0x0307,
- 0x0307, 0x0310, 0x0314, 0x0321, 0x0327, 0x0327, 0x0327, 0x032f,
- 0x0336, 0x033c, 0x0343, 0x0343, 0x034d, 0x0354, 0x035c, 0x035c,
- 0x0362, 0x0380, 0x0385, 0x0389, 0x0390, 0x0395, 0x0395, 0x039c,
- 0x03a2, 0x03a7, 0x03ad, 0x03b7, 0x03bf, 0x03c8, 0x03cf, 0x03e4,
- // Entry 80 - BF
- 0x03ef, 0x03fa, 0x0402, 0x0410, 0x041a, 0x041e, 0x0427, 0x0432,
- 0x043f, 0x0448, 0x0451, 0x0458, 0x0461, 0x046b, 0x0471, 0x0478,
- 0x047f, 0x0486, 0x048d, 0x048d, 0x048d, 0x0496, 0x04a6, 0x04af,
- 0x04b3, 0x04ba, 0x04c2, 0x04c2, 0x04da, 0x04e4, 0x04ee, 0x04f8,
- 0x04fd, 0x0506, 0x050e, 0x0514, 0x051c, 0x0525, 0x052f, 0x0538,
- 0x0545, 0x054a, 0x0558, 0x0560, 0x0569, 0x0574, 0x057a, 0x0581,
- 0x0586, 0x058a, 0x0595, 0x059a, 0x05a0, 0x05a5, 0x05bb, 0x05cb,
- 0x05d6, 0x05e0, 0x05e8, 0x0601, 0x0609, 0x0614, 0x0632, 0x063a,
- // Entry C0 - FF
- 0x063f, 0x0647, 0x064e, 0x064e, 0x0656, 0x065d, 0x065d, 0x0664,
- 0x066b, 0x0677, 0x0686, 0x0690, 0x0696, 0x069c, 0x06a5, 0x06b1,
- 0x06b9, 0x06b9, 0x06c1, 0x06cd, 0x06d7, 0x06df, 0x06e7, 0x06ef,
- 0x06ef, 0x0707, 0x0712, 0x0712, 0x0717, 0x0720, 0x0720, 0x0738,
- 0x073d, 0x073d, 0x0742, 0x074c, 0x0756, 0x075f, 0x0769, 0x0775,
- 0x077d, 0x0783, 0x0789, 0x079b, 0x07a2, 0x07ab, 0x07b4, 0x07bc,
- 0x07c2, 0x07c2, 0x07c9, 0x07d1, 0x07db, 0x07e8, 0x0808, 0x0811,
- 0x0827, 0x083a, 0x0841, 0x0849, 0x085a, 0x0860, 0x0860, 0x0866,
- // Entry 100 - 13F
- 0x086d, 0x087d, 0x0884, 0x088c,
- },
- },
- { // ne
- neRegionStr,
- neRegionIdx,
- },
- { // nl
- nlRegionStr,
- nlRegionIdx,
- },
- { // nmg
- "Andɔ́raMinlambɔ́ Nsaŋ́nsa mí ArabiaAfganistaŋAntíga bá BarbúdaAnguíllaAl" +
- "baniaArméniaB’Antilles bó NedɛrlandAngolaArgentínaSamoa m ́Amɛ́rkaÖt" +
- "rishÖstraliáÁrúbaAzerbaïjaŋBosnia na ƐrzegovinaBarbadoBɛŋgladɛshBɛlg" +
- "ikBurkina FasoBulgariaBahrainBurundiBeninBɛrmudaBrunɛiBoliviaBrésilB" +
- "ahamasButaŋBotswanaBelarusBɛlizKanadaKongó ZaïreSentrafríkaKongoSwit" +
- "zɛrlandKote d´IvoireMaŋ́ má KookTshiliKamerunShineKɔlɔ́mbiaKosta Rík" +
- "aKubaMaŋ́ má KapvɛrSipriaNlambɔ́ bó tschɛkJamanJibútiDanemarkDominík" +
- "aNlambɔ́ DominíkaAlgeriaEkuateurƐstoniaÄgyptɛnErytreaPaŋáEthiopiáFin" +
- "landeFijiáMaŋ má FalklandMikronesiaFalaGabɔŋNlambɔ́ NgɛlɛnGrenadaJɔr" +
- "giaGuyane FalaGánaGilbratarGreenlandGambiaGuineGuadeloupGuine Ekuato" +
- "rialGrɛceGuatemalaGuamGuine BissoGuyanaƆndúrasKroasiaHaïtiƆngríaIndo" +
- "nesiaIrlandÄsrɛlIndiaNlambɔ́ ngɛlɛn ma yí maŋ ntsiɛhIrakIranIslandIt" +
- "aliaJamaikaJɔrdaniaJapɔnKɛnyaKyrgystaŋKambodiaKiribatiKɔmɔrSaint Kit" +
- "ts na NevisKoré yí bvuɔKoré yí síKowɛitMaŋ́ má kumbiKazakstaŋLaosLib" +
- "aŋSaint LuciaLishensteinSri LankaLiberiaLesotoLituaniáLuxembourgLatv" +
- "iaLibyaMarɔkMonakoMɔldaviaMadagaskarMaŋ́ má MarshallMacedoniaMaliMya" +
- "nmarMɔngoliaMaŋ́ MariáMartinikaMoritaniaMɔnserratMaltaMorisseMaldivi" +
- "aMalawiMɛxikMalaysiaMozambikNamibiaKaledoni nwanahNigerMaŋ́ má Nɔrfɔ" +
- "rkNigeriaNikaraguaNedɛrlandNɔrvɛgNepalNoruNiuɛZeland nwanahOmanPanam" +
- "aPeruPolynesia FalaGuine PapuasiFilipinPakistanPɔlɔŋSaint Peter ba M" +
- "ikelɔnPitkairnPuɛrto RikoPalɛstinPɔrtugalPaloParaguayKatarRéuniɔnRou" +
- "maniaRussiRwandaSaudi ArabiaMaŋ́ má SalomɔnSeychɛlleSudaŋSuɛdSingapu" +
- "rSaint LinaSloveniaSlovakiaSierra LeɔnSan MarinoSenegalSomáliaSurina" +
- "mSao Tomé ba PrinshipSalvadɔrSyriaSwazilandMaŋ́ má Turk na KaikoTsha" +
- "dTogoTaïlandTajikistaŋTokeloTimɔr tsindikēhTurkmɛnistaŋTunisiáTɔngaT" +
- "urkiTrinidad ba TobágóTuvalúTaïwanTanzáníaUkrɛnUgandaAmɛŕkaUruguayUs" +
- "bǝkistaŋVatikaŋSaint Vincent ba GrenadinesVǝnǝzuelaMinsilɛ́ mímaŋ mí" +
- " ngɛ̄lɛ̄nMinsilɛ mí maŋ́ m´AmɛrkaViɛtnamVanuatuWallis ba FutunaSamoa" +
- "YǝmɛnMayɔtAfríka yí síZambiaZimbabwǝ",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x002a, 0x0035, 0x0049, 0x0052, 0x0059,
- 0x0061, 0x007c, 0x0082, 0x0082, 0x008c, 0x009f, 0x00a6, 0x00b0,
- 0x00b7, 0x00b7, 0x00c3, 0x00d8, 0x00df, 0x00ec, 0x00f3, 0x00ff,
- 0x0107, 0x010e, 0x0115, 0x011a, 0x011a, 0x0122, 0x0129, 0x0130,
- 0x0130, 0x0137, 0x013e, 0x0144, 0x0144, 0x014c, 0x0153, 0x0159,
- 0x015f, 0x015f, 0x016c, 0x0178, 0x017d, 0x0189, 0x0197, 0x01a6,
- 0x01ac, 0x01b3, 0x01b8, 0x01c4, 0x01c4, 0x01cf, 0x01d3, 0x01e5,
- 0x01e5, 0x01e5, 0x01eb, 0x0200, 0x0205, 0x0205, 0x020c, 0x0214,
- // Entry 40 - 7F
- 0x021d, 0x0230, 0x0237, 0x0237, 0x023f, 0x0247, 0x0250, 0x0250,
- 0x0257, 0x025d, 0x0266, 0x0266, 0x026e, 0x0274, 0x0285, 0x028f,
- 0x028f, 0x0293, 0x029a, 0x02ac, 0x02b3, 0x02ba, 0x02c5, 0x02c5,
- 0x02ca, 0x02d3, 0x02dc, 0x02e2, 0x02e7, 0x02f0, 0x0300, 0x0306,
- 0x0306, 0x030f, 0x0313, 0x031e, 0x0324, 0x0324, 0x0324, 0x032d,
- 0x0334, 0x033a, 0x0342, 0x0342, 0x034b, 0x0351, 0x0358, 0x0358,
- 0x035d, 0x0383, 0x0387, 0x038b, 0x0391, 0x0397, 0x0397, 0x039e,
- 0x03a7, 0x03ad, 0x03b3, 0x03bd, 0x03c5, 0x03cd, 0x03d4, 0x03e8,
- // Entry 80 - BF
- 0x03f7, 0x0404, 0x040b, 0x041b, 0x0425, 0x0429, 0x042f, 0x043a,
- 0x0445, 0x044e, 0x0455, 0x045b, 0x0464, 0x046e, 0x0474, 0x0479,
- 0x047f, 0x0485, 0x048e, 0x048e, 0x048e, 0x0498, 0x04ab, 0x04b4,
- 0x04b8, 0x04bf, 0x04c8, 0x04c8, 0x04d5, 0x04de, 0x04e7, 0x04f1,
- 0x04f6, 0x04fd, 0x0505, 0x050b, 0x0511, 0x0519, 0x0521, 0x0528,
- 0x0537, 0x053c, 0x0550, 0x0557, 0x0560, 0x056a, 0x0572, 0x0577,
- 0x057b, 0x0580, 0x058d, 0x0591, 0x0597, 0x059b, 0x05a9, 0x05b6,
- 0x05bd, 0x05c5, 0x05cd, 0x05e4, 0x05ec, 0x05f8, 0x0601, 0x060a,
- // Entry C0 - FF
- 0x060e, 0x0616, 0x061b, 0x061b, 0x0624, 0x062c, 0x062c, 0x0631,
- 0x0637, 0x0643, 0x0656, 0x0660, 0x0666, 0x066b, 0x0673, 0x067d,
- 0x0685, 0x0685, 0x068d, 0x0699, 0x06a3, 0x06aa, 0x06b2, 0x06b9,
- 0x06b9, 0x06ce, 0x06d7, 0x06d7, 0x06dc, 0x06e5, 0x06e5, 0x06fd,
- 0x0702, 0x0702, 0x0706, 0x070e, 0x0719, 0x071f, 0x0730, 0x073e,
- 0x0746, 0x074c, 0x0751, 0x0765, 0x076c, 0x0773, 0x077d, 0x0783,
- 0x0789, 0x0789, 0x0791, 0x0798, 0x07a4, 0x07ac, 0x07c7, 0x07d2,
- 0x07f5, 0x0813, 0x081b, 0x0822, 0x0832, 0x0837, 0x0837, 0x083e,
- // Entry 100 - 13F
- 0x0844, 0x0853, 0x0859, 0x0862,
- },
- },
- { // nn
- "AscensionAndorraDei sameinte arabiske emirataAfghanistanAntigua og Barbu" +
- "daAnguillaAlbaniaArmeniaDei nederlandske AntillaneAngolaAntarktisArg" +
- "entinaAmerikansk SamoaAusterrikeAustraliaArubaÅlandAserbajdsjanBosni" +
- "a og HercegovinaBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainB" +
- "urundiBeninSaint BarthélemyBermudaBrunei DarussalamBoliviaBrasilBaha" +
- "masBhutanBouvetøyaBotswanaKviterusslandBelizeCanadaKokosøyaneKongo-K" +
- "inshasaDen sentralafrikanske republikkenKongo-BrazzavilleSveitsElfen" +
- "beinskystenCookøyaneChileKamerunKinaColombiaClippertonøyaCosta RicaC" +
- "ubaKapp VerdeChristmasøyaKyprosTsjekkiaTysklandDiego GarciaDjiboutiD" +
- "anmarkDominicaDen dominikanske republikkenAlgerieCeuta og MelillaEcu" +
- "adorEstlandEgyptVest-SaharaEritreaSpaniaEtiopiaDen europeiske unione" +
- "nFinlandFijiFalklandsøyaneMikronesiaføderasjonenFærøyaneFrankrikeGab" +
- "onStorbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibraltarGrøn" +
- "landGambiaGuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sør-" +
- "Sandwich-øyaneGuatemalaGuamGuinea-BissauGuyanaHongkong S.A.R. KinaHe" +
- "ard- og McDonaldsøyaneHondurasKroatiaHaitiUngarnKanariøyaneIndonesia" +
- "IrlandIsraelManIndiaBritiske område i Det indiske havIrakIranIslandI" +
- "taliaJerseyJamaicaJordanJapanKenyaKirgisistanKambodsjaKiribatiKomore" +
- "neSt. Christopher og NevisNord-KoreaSør-KoreaKuwaitCaymanøyaneKasakh" +
- "stanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenL" +
- "uxembourgLatviaLibyaMarokkoMonacoMoldovaMontenegroSaint MartinMadaga" +
- "skarMarshalløyaneMakedoniaMaliMyanmarMongoliaMacao S.A.R. KinaNord-M" +
- "ariananeMartiniqueMauritaniaMontserratMaltaMauritiusMaldivaneMalawiM" +
- "exicoMalaysiaMosambikNamibiaNy-CaledoniaNigerNorfolkøyaneNigeriaNica" +
- "raguaNederlandNoregNepalNauruNiueNew ZealandOmanPanamaPeruFransk Pol" +
- "ynesiaPapua Ny-GuineaFilippinanePakistanPolenSt. Pierre og MiquelonP" +
- "itcairnPuerto RicoPalestinsk territoriumPortugalPalauParaguayQatarYt" +
- "re OseaniaRéunionRomaniaSerbiaRusslandRwandaSaudi ArabiaSalomonøyane" +
- "SeychellaneSudanSverigeSingaporeSaint HelenaSloveniaSvalbard og Jan " +
- "MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSão Tomé og " +
- "PríncipeEl SalvadorSyriaSwazilandTristan da CunhaTurks- og Caicosøya" +
- "neTchadFranske sørområdeTogoThailandTadsjikistanTokelauAust-TimorTur" +
- "kmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTaiwanTanzaniaUkr" +
- "ainaUgandaUSAs ytre småøyarUSAUruguayUsbekistanVatikanstatenSt. Vinc" +
- "ent og GrenadinaneVenezuelaDei britiske jomfruøyaneDei amerikanske j" +
- "omfruøyaneVietnamVanuatuWallis og FutunaSamoaYemenMayotteSør-AfrikaZ" +
- "ambiaZimbabweukjent områdeverdaAfrikaNord-AmerikaSør-AmerikaOseaniaV" +
- "est-AfrikaSentral-AmerikaAust-AfrikaNord-AfrikaSentral-AfrikaSørlege" +
- " AfrikaAmerikanordlege AmerikaKaribiaAust-AsiaSør-AsiaSøraust-AsiaSø" +
- "r-EuropaAustralia og New ZealandMelanesiaMikronesiaPolynesiaAsiaSent" +
- "ral-AsiaVest-AsiaEuropaAust-EuropaNord-EuropaVest-EuropaLatin-Amerik" +
- "a",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x0059,
- 0x0060, 0x007a, 0x0080, 0x0089, 0x0092, 0x00a2, 0x00ac, 0x00b5,
- 0x00ba, 0x00c0, 0x00cc, 0x00e1, 0x00e9, 0x00f3, 0x00f9, 0x0105,
- 0x010d, 0x0114, 0x011b, 0x0120, 0x0131, 0x0138, 0x0149, 0x0150,
- 0x0150, 0x0156, 0x015d, 0x0163, 0x016d, 0x0175, 0x0182, 0x0188,
- 0x018e, 0x0199, 0x01a7, 0x01c8, 0x01d9, 0x01df, 0x01ef, 0x01f9,
- 0x01fe, 0x0205, 0x0209, 0x0211, 0x021f, 0x0229, 0x022d, 0x0237,
- 0x0237, 0x0244, 0x024a, 0x0252, 0x025a, 0x0266, 0x026e, 0x0275,
- // Entry 40 - 7F
- 0x027d, 0x0299, 0x02a0, 0x02b0, 0x02b7, 0x02be, 0x02c3, 0x02ce,
- 0x02d5, 0x02db, 0x02e2, 0x02f8, 0x02ff, 0x0303, 0x0312, 0x0329,
- 0x0333, 0x033c, 0x0341, 0x034e, 0x0355, 0x035c, 0x0369, 0x0371,
- 0x0376, 0x037f, 0x0388, 0x038e, 0x0394, 0x039e, 0x03af, 0x03b5,
- 0x03d9, 0x03e2, 0x03e6, 0x03f3, 0x03f9, 0x040d, 0x0426, 0x042e,
- 0x0435, 0x043a, 0x0440, 0x044c, 0x0455, 0x045b, 0x0461, 0x0464,
- 0x0469, 0x048b, 0x048f, 0x0493, 0x0499, 0x049f, 0x04a5, 0x04ac,
- 0x04b2, 0x04b7, 0x04bc, 0x04c7, 0x04d0, 0x04d8, 0x04e0, 0x04f8,
- // Entry 80 - BF
- 0x0502, 0x050c, 0x0512, 0x051e, 0x0528, 0x052c, 0x0533, 0x053c,
- 0x0549, 0x0552, 0x0559, 0x0560, 0x0567, 0x0571, 0x0577, 0x057c,
- 0x0583, 0x0589, 0x0590, 0x059a, 0x05a6, 0x05b0, 0x05be, 0x05c7,
- 0x05cb, 0x05d2, 0x05da, 0x05eb, 0x05f9, 0x0603, 0x060d, 0x0617,
- 0x061c, 0x0625, 0x062e, 0x0634, 0x063a, 0x0642, 0x064a, 0x0651,
- 0x065d, 0x0662, 0x066f, 0x0676, 0x067f, 0x0688, 0x068d, 0x0692,
- 0x0697, 0x069b, 0x06a6, 0x06aa, 0x06b0, 0x06b4, 0x06c4, 0x06d3,
- 0x06de, 0x06e6, 0x06eb, 0x0701, 0x0709, 0x0714, 0x072a, 0x0732,
- // Entry C0 - FF
- 0x0737, 0x073f, 0x0744, 0x0750, 0x0758, 0x075f, 0x0765, 0x076d,
- 0x0773, 0x077f, 0x078c, 0x0797, 0x079c, 0x07a3, 0x07ac, 0x07b8,
- 0x07c0, 0x07d5, 0x07dd, 0x07e9, 0x07f3, 0x07fa, 0x0801, 0x0808,
- 0x0808, 0x081f, 0x082a, 0x082a, 0x082f, 0x0838, 0x0848, 0x085e,
- 0x0863, 0x0876, 0x087a, 0x0882, 0x088e, 0x0895, 0x089f, 0x08ab,
- 0x08b2, 0x08b7, 0x08bd, 0x08cf, 0x08d5, 0x08db, 0x08e3, 0x08ea,
- 0x08f0, 0x0903, 0x0906, 0x090d, 0x0917, 0x0924, 0x093e, 0x0947,
- 0x0960, 0x097c, 0x0983, 0x098a, 0x099a, 0x099f, 0x099f, 0x09a4,
- // Entry 100 - 13F
- 0x09ab, 0x09b6, 0x09bc, 0x09c4, 0x09d2, 0x09d7, 0x09dd, 0x09e9,
- 0x09f5, 0x09fc, 0x0a07, 0x0a16, 0x0a21, 0x0a2c, 0x0a3a, 0x0a49,
- 0x0a50, 0x0a60, 0x0a67, 0x0a70, 0x0a79, 0x0a86, 0x0a91, 0x0aa9,
- 0x0ab2, 0x0abc, 0x0ac5, 0x0ac9, 0x0ad5, 0x0ade, 0x0ae4, 0x0aef,
- 0x0afa, 0x0b05, 0x0b12,
- },
- },
- { // nnh
- "Kàmalûm",
- []uint16{ // 50 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0009,
- },
- },
- { // no
- noRegionStr,
- noRegionIdx,
- },
- { // nus
- "AndoraAbganithtanAntiguaa kɛnɛ BarbudaAŋguɛlaAlbäniaAɛrmäniaAŋgolaAɛrgen" +
- "tinAmerika thamowAthtɛriaAthɔra̱liaArubaAdhe̱rbe̱ja̱nBothnia kɛnɛ ɣä" +
- "rgobiniaBärbadothBengeladiecBe̱lgimBurkinɛ pa̱thuBulga̱a̱riaBa̱reenB" +
- "urundiBe̱ni̱nBe̱rmudaaBurunɛyBulibiaBäraadhiilBämuɔthButa̱nBothiwaan" +
- "aBe̱lɛruthBilidhaKänɛdaCɛntrɔl aprika repuɔblicKɔŋgɔKodibo̱o̱Kuk ɣa̱" +
- "ylɛnCili̱KɛmɛrunCaynaKolombiaKothtirikaKɛp bedi ɣa̱ylɛnAlgeriaKorwaa" +
- "tiaBurutic ɣe̱ndian oce̱nKombodiaKomruthKaymɛn ɣa̱ylɛnSudanCa̱dBurut" +
- "ic dhuɔ̱ɔ̱l be̱rgin",
- []uint16{ // 249 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0006, 0x0011, 0x0028, 0x0031, 0x0039,
- 0x0043, 0x0043, 0x004a, 0x004a, 0x0054, 0x0062, 0x006b, 0x0077,
- 0x007c, 0x007c, 0x008c, 0x00a7, 0x00b1, 0x00bc, 0x00c4, 0x00d4,
- 0x00e1, 0x00e9, 0x00f0, 0x00f9, 0x00f9, 0x0103, 0x010b, 0x0112,
- 0x0112, 0x011d, 0x0126, 0x012d, 0x012d, 0x0137, 0x0142, 0x0149,
- 0x0151, 0x0151, 0x0151, 0x016c, 0x0174, 0x0174, 0x017f, 0x018d,
- 0x0193, 0x019c, 0x01a1, 0x01a9, 0x01a9, 0x01b3, 0x01b3, 0x01c7,
- 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7,
- // Entry 40 - 7F
- 0x01c7, 0x01c7, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
- 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
- 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
- 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
- 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
- 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7,
- 0x01d7, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0,
- 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f8, 0x01f8, 0x01ff, 0x01ff,
- // Entry 80 - BF
- 0x01ff, 0x01ff, 0x01ff, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- // Entry C0 - FF
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
- 0x0211, 0x0211, 0x0211, 0x0211, 0x0216, 0x0216, 0x0216, 0x0216,
- 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
- 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
- 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
- 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
- 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
- 0x0238,
- },
- },
- { // nyn
- "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" +
- "wiraArubaniaArimeniyaAntiri za HoorandiAngoraArigentinaSamowa ya Ame" +
- "erikaOsituriaOsitureeriyaArubaAzabagyaniBoziniya na HezegovinaBabado" +
- "siBangaradeshiBubirigiBokina FasoBurugariyaBahareniBurundiBeniniBeri" +
- "mudaBuruneiBoriiviyaBuraziiriBahamaButaniBotswanaBararusiBerizeKanad" +
- "aDemokoratika Ripaaburika ya KongoEihanga rya Rwagati ya AfirikaKong" +
- "oSwisiAivore KositiEbizinga bya KuukuChileKameruuniChinaKorombiyaKos" +
- "itarikaCubaEbizinga bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirim" +
- "aaniGyibutiDeenimaakaDominikaRipaaburika ya DominicaArigyeriyaIkweda" +
- "EsitoniyaMisiriEriteriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya Fa" +
- "akilandaMikironesiyaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana " +
- "ya BufaransaGanaGiburaataGuriinirandiGambiyaGineGwaderupeGuniGuriisi" +
- "GwatemaraGwamuGinebisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziy" +
- "aIrerandiIsirairiIndiyaEbizinga bya Indian ebya BungyerezaIraakaIraa" +
- "niAisilandiItareGyamaikaYorudaaniGyapaaniKenyaKirigizistaniKambodiya" +
- "KiribatiKoromoSenti Kittis na NevisiKoreya AmatembaKoreya AmashuumaK" +
- "uweitiEbizinga bya KayimaniKazakisitaniLayosiLebanoniSenti RusiyaLis" +
- "henteniSirirankaLiberiyaLesothoLithuaniaLakizembaagaLatviyaLibyaMoro" +
- "ccoMonacoMoridovaMadagasikaEbizinga bya MarshaaMasedooniaMariMyanama" +
- "rMongoriaEbizinga by’amatemba ga MarianaMartiniqueMauriteeniyaMontse" +
- "rratiMaritaMaurishiasiMaridivesMarawiMexicomarayiziaMozambiqueNamibi" +
- "yaNiukaredoniaNaigyaEkizinga NorifokoNaigyeriyaNikaragwaHoorandiNoor" +
- "weNepoNauruNiueNiuzirandiOmaaniPanamaPeruPolinesia ya BufaransaPapua" +
- "FiripinoPakisitaaniPoorandiSenti Piyerre na MikweronPitkainiPwetorik" +
- "oParestiina na GazaPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrasha" +
- "RwandaSaudi AreebiyaEbizinga bya SurimaaniShesheresiSudaniSwideniSin" +
- "gapoSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSom" +
- "aariyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbi" +
- "zinga bya Buturuki na KaikoChadiTogoTairandiTajikisitaniTokerawuBuru" +
- "gweizooba bwa TimoriTurukimenisitaniTuniziaTongaButuruki /TakeTurini" +
- "dad na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzib" +
- "ekisitaniVatikaniSenti Vinsent na GurenadiniVenezuweraEbizinga bya V" +
- "irigini ebya BungyerezaEbizinga bya Virigini ebya AmerikaViyetinaamu" +
- "VanuatuWarris na FutunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054,
- 0x005d, 0x006f, 0x0075, 0x0075, 0x007f, 0x0091, 0x0099, 0x00a5,
- 0x00aa, 0x00aa, 0x00b4, 0x00ca, 0x00d2, 0x00de, 0x00e6, 0x00f1,
- 0x00fb, 0x0103, 0x010a, 0x0110, 0x0110, 0x0118, 0x011f, 0x0128,
- 0x0128, 0x0131, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0153,
- 0x0159, 0x0159, 0x017a, 0x0198, 0x019d, 0x01a2, 0x01af, 0x01c1,
- 0x01c6, 0x01cf, 0x01d4, 0x01dd, 0x01dd, 0x01e7, 0x01eb, 0x0200,
- 0x0200, 0x0200, 0x0209, 0x021d, 0x0228, 0x0228, 0x022f, 0x0239,
- // Entry 40 - 7F
- 0x0241, 0x0258, 0x0262, 0x0262, 0x0268, 0x0271, 0x0277, 0x0277,
- 0x0280, 0x0288, 0x0292, 0x0292, 0x0298, 0x029d, 0x02b4, 0x02c0,
- 0x02c0, 0x02c9, 0x02d0, 0x02da, 0x02e2, 0x02e9, 0x02fc, 0x02fc,
- 0x0300, 0x0309, 0x0315, 0x031c, 0x0320, 0x0329, 0x032d, 0x0334,
- 0x0334, 0x033d, 0x0342, 0x034b, 0x0351, 0x0351, 0x0351, 0x035a,
- 0x0362, 0x0367, 0x036e, 0x036e, 0x0379, 0x0381, 0x0389, 0x0389,
- 0x038f, 0x03b2, 0x03b8, 0x03be, 0x03c7, 0x03cc, 0x03cc, 0x03d4,
- 0x03dd, 0x03e5, 0x03ea, 0x03f7, 0x0400, 0x0408, 0x040e, 0x0424,
- // Entry 80 - BF
- 0x0433, 0x0443, 0x044a, 0x045f, 0x046b, 0x0471, 0x0479, 0x0485,
- 0x048f, 0x0498, 0x04a0, 0x04a7, 0x04b0, 0x04bc, 0x04c3, 0x04c8,
- 0x04cf, 0x04d5, 0x04dd, 0x04dd, 0x04dd, 0x04e7, 0x04fb, 0x0505,
- 0x0509, 0x0511, 0x0519, 0x0519, 0x053a, 0x0544, 0x0550, 0x055b,
- 0x0561, 0x056c, 0x0575, 0x057b, 0x0581, 0x058a, 0x0594, 0x059c,
- 0x05a8, 0x05ae, 0x05bf, 0x05c9, 0x05d2, 0x05da, 0x05e0, 0x05e4,
- 0x05e9, 0x05ed, 0x05f7, 0x05fd, 0x0603, 0x0607, 0x061d, 0x0622,
- 0x062a, 0x0635, 0x063d, 0x0656, 0x065e, 0x0667, 0x0679, 0x067f,
- // Entry C0 - FF
- 0x0686, 0x068e, 0x0692, 0x0692, 0x069c, 0x06a4, 0x06a4, 0x06aa,
- 0x06b0, 0x06be, 0x06d4, 0x06de, 0x06e4, 0x06eb, 0x06f2, 0x06fe,
- 0x0709, 0x0709, 0x0714, 0x0721, 0x0729, 0x072f, 0x0738, 0x0741,
- 0x0741, 0x0757, 0x0763, 0x0763, 0x0769, 0x0773, 0x0773, 0x0791,
- 0x0796, 0x0796, 0x079a, 0x07a2, 0x07ae, 0x07b6, 0x07ce, 0x07de,
- 0x07e5, 0x07ea, 0x07f8, 0x080b, 0x0811, 0x081a, 0x0822, 0x082a,
- 0x0830, 0x0830, 0x0837, 0x083e, 0x084b, 0x0853, 0x086e, 0x0878,
- 0x089d, 0x08bf, 0x08ca, 0x08d1, 0x08e1, 0x08e7, 0x08e7, 0x08ed,
- // Entry 100 - 13F
- 0x08f3, 0x0900, 0x0906, 0x090e,
- },
- },
- { // om
- "BrazilChinaGermanyItoophiyaaFranceUnited KingdomIndiaItalyJapanKeeniyaaR" +
- "ussiaUnited States",
- []uint16{ // 243 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
- 0x000b, 0x000b, 0x000b, 0x000b, 0x0012, 0x0012, 0x0012, 0x0012,
- // Entry 40 - 7F
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x0022, 0x0022, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a,
- 0x003a, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- // Entry 80 - BF
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
- // Entry C0 - FF
- 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004d,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
- 0x004d, 0x004d, 0x005a,
- },
- },
- { // or
- "ଆଣ୍ଡୋରାସଂଯୁକ୍ତ ଆରବ ଏମିରେଟସ୍ଆଫାଗାନିସ୍ତାନ୍ଆଣ୍ଟିଗୁଆ ଏବଂ ବାରବୁଦାଆଙ୍ଗୁଇଲ୍ଲାଆଲ" +
- "ବାନିଆଆର୍ମେନିଆନେଦରଲ୍ୟାଣ୍ଡସ୍ ଆଣ୍ଟିଲିଜ୍ଆଙ୍ଗୋଲାଆର୍ଣ୍ଟକଟିକାଆର୍ଜେଣ୍ଟିନାଆ" +
- "ମେରିକାନ୍ ସାମୋଆଅଷ୍ଟ୍ରିଆଅଷ୍ଟ୍ରେଲିଆଆରୁବାଆଲାଣ୍ଡ ଆଇସଲ୍ୟାଣ୍ଡଆଜେରବାଇଜାନ୍ବ" +
- "ୋସନିଆ ଏବଂ ହର୍ଜଗୋଭିନାବାରବାଡୋସ୍ବାଙ୍ଗଲାଦେଶ୍ବେଲଜିୟମ୍ବୁର୍କିନୋ ଫାସୋବୁଲଗେ" +
- "ରିଆବାହାରିନ୍ବୁରୁନ୍ଦିବେନିନ୍ସେଣ୍ଟ ବାର୍ଥେଲେମିବରମୁଡାବ୍ରୁନେଇବୋଲଭିଆବ୍ରାଜି" +
- "ଲ୍ବାହାମାସ୍ଭୁଟାନ୍ବୌଭେଟ୍ ଆଇସଲ୍ୟାଣ୍ଡବୋଟସ୍ବାନ୍ବେଲାରୁଷ୍ବେଲିଜ୍କାନାଡାକୋକୋ" +
- "ସ୍ ଆଇସଲ୍ୟାଣ୍ଡକଙ୍ଗୋ-କିନସାସାମଧ୍ୟ ଆଫ୍ରିକୀୟ ଗଣତନ୍ତ୍ରକଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେ" +
- "ସ୍ବିଜରଲ୍ୟାଣ୍ଡଆଇବରୀ କୋଷ୍ଟକୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡଚିଲ୍ଲୀକାମେରୁନ୍ଚିନ୍କୋଲମ୍ବିଆକ" +
- "ୋଷ୍ଟା ରିକାକ୍ୱିବାକେପ୍ ଭର୍ଦେଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡସାଇପ୍ରସ୍ଚେକ୍ ସାଧାରଣତ" +
- "ନ୍ତ୍ରଜର୍ମାନୀଡିବୌଟିଡେନମାର୍କଡୋମିନାକାଡୋମିନକାନ୍ ପ୍ରଜାତନ୍ତ୍ରଆଲଜେରିଆଇକ୍ୱ" +
- "ାଡୋର୍ଏସ୍ତୋନିଆଇଜିପ୍ଟପଶ୍ଚିମ ସାହାରାଇରିଟ୍ରିୟାସ୍ପେନ୍ଇଥିଓପିଆୟୁରୋପିଆନ୍ ୟୁ" +
- "ନିଅନ୍ଫିନଲ୍ୟାଣ୍ଡଫିଜିଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜମାଇକ୍ରୋନେସିଆଫାରୋଇ ଦ୍ବୀପପୁ" +
- "ଞ୍ଜଫ୍ରାନ୍ସଗାବୋନ୍ବ୍ରିଟେନ୍ଗ୍ରେନାଡାଜର୍ଜିଆଫ୍ରେଞ୍ଚ ଗୁଇନାଗୁଏରନେସିଘାନାଜିବ" +
- "୍ରାଲ୍ଟର୍ଗ୍ରୀନଲ୍ୟାଣ୍ଡଗାମ୍ବିଆଗୁଏନେଆଗୌଡେଲୌପେଇକ୍ବାଟେରିଆଲ୍ ଗୁଇନିଆଗ୍ରୀସ୍" +
- "ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ବୀପପୁଞ୍ଜଗୁଏତମାଲାଗୁଆମ୍ଗୁଇନିଆ-ବ" +
- "ିସାଉଗୁଇନାହଂକଂ ବିଶେଷ ପ୍ରଶାସନିକ କ୍ଷେତ୍ର ଚୀନ୍ହାର୍ଡ ଦ୍ବୀପପୁଞ୍ଜ ଏବଂ ମ୍ୟ" +
- "ାକଡୋନାଲ୍ ଦ୍ବୀପପୁଞ୍ଜହୋଣ୍ଡାରୁସ୍କ୍ରୋଆଟିଆହାଇତିହଙ୍ଗେରୀଇଣ୍ଡୋନେସିଆଆୟରଲ୍ୟା" +
- "ଣ୍ଡଇସ୍ରାଏଲ୍ଆଇଲ୍ ଅଫ୍ ମୈନ୍ଭାରତବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ରଇରାକ୍" +
- "ଇରାନ୍ଆଇସଲ୍ୟାଣ୍ଡଇଟାଲୀଜର୍ସିଜାମାଇକାଜୋର୍ଡାନ୍ଜାପାନ୍କେନିୟାକିର୍ଗିଜିସ୍ଥାନକ" +
- "ାମ୍ବୋଡିଆକିରିବାଟୀକାମୋରସ୍ସେଣ୍ଟ କିଟସ୍ ଏଣ୍ଡ ନେଭିସ୍ଉତ୍ତର କୋରିଆଦକ୍ଷିଣ କୋ" +
- "ରିଆକୁଏତ୍କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜକାଜାକାସ୍ଥାନ୍ଲାଓସ୍ଲେବାନନ୍ସେଣ୍ଟ ଲୁସିଆଲିଚେ" +
- "ସ୍ତିଆନାନ୍ଶ୍ରୀଲଙ୍କାଲିବେରିଆଲେସୋଥୋଲିଥାଆନିଆଲକ୍ସେମବର୍ଗଲାଟଭିଆଲିବିଆମୋରୋକ୍" +
- "କୋମୋନାକୋମାଲଡୋଭାମଣ୍ଟେଗ୍ରୋସେଣ୍ଟ ମାର୍ଟିନ୍ମାଡାଗାସ୍କର୍ମାର୍ଶଲ୍ ଦ୍ବୀପପୁଞ୍" +
- "ଜମାସେଡୋନିଆମାଳୀମିୟାମାର୍ମଙ୍ଗୋଲିଆମାକାଉ SAR ଚିନ୍ଉତ୍ତର ମାରିଆନା ଦ୍ବୀପପୁଞ" +
- "୍ଜମାର୍ଟିନିକ୍ୟୁମାଉରିଟାନିଆମଣ୍ଟେସେରାଟ୍ମାଲ୍ଟାମୌରିସସ୍ମାଳଦ୍ବୀପମାଲୱିମେକ୍ସ" +
- "ିକୋମାଲେସିଆମୋଜାମ୍ବିକ୍ୟୁନାମ୍ବିଆନୂତନ କାଲେଡୋନିଆନାଇଜର୍ନରଫ୍ଲକ୍ ଦ୍ବୀପନାଇଜ" +
- "େରିଆନିକାରାଗୁଆନେଦରଲ୍ୟାଣ୍ଡନରୱେନେପାଳନାଉରୁନିଉନ୍ୟୁଜିଲାଣ୍ଡଓମାନ୍ପାନାମାପେର" +
- "ୁଫ୍ରେଞ୍ଚ ପଲିନେସିଆପପୁଆ ନ୍ୟୁ ଗୁଏନିଆଫିଲିପାଇନସ୍ପାକିସ୍ତାନପୋଲାଣ୍ଡସେଣ୍ଟ ପ" +
- "ିଏରେ ଏବଂ ମିକ୍ବାଲୋନ୍ପିଟକାଇରିନ୍ପୁଏର୍ତ୍ତୋ ରିକୋପାଲେସ୍ତେନିଆପର୍ତ୍ତୁଗାଲ୍ପ" +
- "ାଲାଉପାରାଗୁଏକତାର୍ଆଉଟଲେଇଂ ଓସେନିଆରିୟୁନିଅନ୍ରୋମାନିଆସର୍ବିଆରୁଷିଆରାୱାଣ୍ଡାସ" +
- "ାଉଦି ଆରବିଆସୋଲୋମନ୍ ଦ୍ବୀପପୁଞ୍ଜସେଚେଲସ୍ସୁଦାନ୍ସ୍ୱେଡେନ୍ସିଙ୍ଗାପୁର୍ସେଣ୍ଟ ହ" +
- "େଲେନାସ୍ଲୋଭେନିଆସାଲ୍ଭାର୍ଡ ଏବଂ ଜାନ୍ ମାୟୋନ୍ସ୍ଲୋଭାକିଆସିଓରା ଲିଓନ୍ସାନ୍ ମା" +
- "ରିନୋସେନେଗାଲ୍ସୋମାଲିଆସୁରିନାମସାଓ ଟୋମେ ଏବଂ ପ୍ରିନସିପିଏଲ୍ ସାଲଭାଡୋର୍ସିରିଆ" +
- "ସ୍ବାଜିଲାଣ୍ଡତୁର୍କସ୍ ଏବଂ ସାଇକସ୍ ଦ୍ବୀପପୁଞ୍ଜଚାଦ୍ଫରାସୀ ଦକ୍ଷିଣ କ୍ଷେତ୍ରଟୋ" +
- "ଗୋଥାଇଲାଣ୍ଡତାଜିକିସ୍ଥାନ୍ଟୋକେଲାଉପୁର୍ବ ତିମୋର୍ତୁର୍କମେନିସ୍ତାନ୍ତୁନିସିଆଟୋଙ" +
- "୍ଗାତୁର୍କୀତ୍ରିନିଦାଦ୍ ଏବଂ ଟୋବାଗୋଟୁଭାଲୁତାଇୱାନ୍ତାଞ୍ଜାନିଆୟୁକ୍ରାଇନ୍ଉଗାଣ୍" +
- "ଡାୟୁନାଇଟେଡ୍ ଷ୍ଟେଟସ୍ ମାଇନର୍ ଆଉଟଲେଇଂ ଦ୍ବୀପପୁଞ୍ଜଯୁକ୍ତ ରାଷ୍ଟ୍ର ଆମେରିକା" +
- "ଉରୁଗୁଏଉଜବେକିସ୍ଥାନ୍ଭାଟିକାନ୍ସେଣ୍ଟ ଭିନସେଣ୍ଟ ଏବଂ ଦି ଗ୍ରେନାଡିସ୍ଭେନଜୁଏଲା" +
- "ବ୍ରିଟିଶ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜୟୁଏସ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜଭିଏତନାମ୍ଭାନୁଆତୁ" +
- "ୱାଲିସ୍ ଏବଂ ଫୁତୁନାସାମୋଆୟେମେନ୍ମାୟୋଟେଦକ୍ଷିଣ ଆଫ୍ରିକାଜାମ୍ବିଆଜିମ୍ବାୱେଅଜଣ" +
- "ା କିମ୍ବା ଅବୈଧ ପ୍ରଦେଶବିଶ୍ବଆଫ୍ରିକାଉତ୍ତର ଆମେରିକାଦକ୍ଷିଣ ଆମେରିକାଓସୋନିଆନ" +
- "୍ପଶ୍ଚିମ ଆଫ୍ରିକାମଧ୍ୟ ଆମେରିକାପୂର୍ବ ଆଫ୍ରିକାଉତ୍ତର ଆଫ୍ରିକାମଧ୍ୟ ଆଫ୍ରିକାଦ" +
- "କ୍ଷିଣସ୍ଥ ଆଫ୍ରିକାଆମେରିକାସ୍ଉତ୍ତରସ୍ଥ ଆମେରିକାକାରିବିଆନ୍ପୂର୍ବ ଏସିଆଦକ୍ଷିଣ" +
- " ଏସିଆଦକ୍ଷିଣ-ପୂର୍ବ ଏସିଆଦକ୍ଷିଣ ୟୁରୋପ୍ଅଷ୍ଟ୍ରେଲିଆ ଏବଂ ନ୍ୟୁଜିଲ୍ୟାଣ୍ଡମେଲାନ" +
- "େସିଆମାଇକ୍ରୋନେସିଆନ୍ ଅଞ୍ଚଳପଲିନେସିଆଏସିଆମଧ୍ୟ ଏସିଆପଶ୍ଚିମ ଏସିଆୟୁରୋପ୍ପୂର୍" +
- "ବ ୟୁରୋପ୍ଉତ୍ତର ୟୁରୋପ୍ପଶ୍ଚିମ ୟୁରୋପ୍ଲାଟିନ୍ ଆମେରିକା ଏବଂ କାରିବିଆନ୍",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0015, 0x004d, 0x0074, 0x00ac, 0x00ca, 0x00df,
- 0x00f7, 0x013a, 0x014f, 0x0170, 0x0191, 0x01bc, 0x01d4, 0x01f2,
- 0x0201, 0x0232, 0x0253, 0x028e, 0x02a9, 0x02ca, 0x02e2, 0x0307,
- 0x031f, 0x0337, 0x034f, 0x0361, 0x038f, 0x03a1, 0x03b6, 0x03c8,
- 0x03c8, 0x03e0, 0x03f8, 0x040a, 0x043b, 0x0456, 0x046e, 0x0480,
- 0x0492, 0x04c3, 0x04e8, 0x0526, 0x055a, 0x0581, 0x05a0, 0x05cb,
- 0x05dd, 0x05f5, 0x0601, 0x0619, 0x0619, 0x0638, 0x064a, 0x0666,
- 0x0666, 0x06a0, 0x06b8, 0x06e9, 0x06fe, 0x06fe, 0x0710, 0x0728,
- // Entry 40 - 7F
- 0x0740, 0x077d, 0x0792, 0x0792, 0x07ad, 0x07c5, 0x07d7, 0x07fc,
- 0x0817, 0x0829, 0x083e, 0x086f, 0x088d, 0x0899, 0x08d9, 0x08fd,
- 0x092b, 0x0940, 0x0952, 0x096a, 0x0982, 0x0994, 0x09b9, 0x09d1,
- 0x09dd, 0x09fe, 0x0a22, 0x0a37, 0x0a49, 0x0a61, 0x0a98, 0x0aaa,
- 0x0b27, 0x0b3f, 0x0b4e, 0x0b70, 0x0b7f, 0x0bda, 0x0c53, 0x0c71,
- 0x0c89, 0x0c98, 0x0cad, 0x0cad, 0x0ccb, 0x0ce9, 0x0d01, 0x0d24,
- 0x0d30, 0x0d8d, 0x0d9c, 0x0dab, 0x0dc9, 0x0dd8, 0x0de7, 0x0dfc,
- 0x0e14, 0x0e26, 0x0e38, 0x0e5f, 0x0e7a, 0x0e92, 0x0ea7, 0x0ee6,
- // Entry 80 - BF
- 0x0f05, 0x0f27, 0x0f36, 0x0f6d, 0x0f91, 0x0fa0, 0x0fb5, 0x0fd4,
- 0x0ffb, 0x1016, 0x102b, 0x103d, 0x1055, 0x1073, 0x1085, 0x1094,
- 0x10ac, 0x10be, 0x10d3, 0x10ee, 0x1116, 0x1137, 0x116b, 0x1186,
- 0x1192, 0x11aa, 0x11c2, 0x11e2, 0x1226, 0x124a, 0x1268, 0x1289,
- 0x129b, 0x12b0, 0x12c8, 0x12d7, 0x12ef, 0x1304, 0x1328, 0x133d,
- 0x1365, 0x1377, 0x139c, 0x13b4, 0x13cf, 0x13f0, 0x13fc, 0x140b,
- 0x141a, 0x1423, 0x1444, 0x1453, 0x1465, 0x1471, 0x149f, 0x14cb,
- 0x14e9, 0x1504, 0x1519, 0x1561, 0x157f, 0x15a7, 0x15c8, 0x15e9,
- // Entry C0 - FF
- 0x15f8, 0x160d, 0x161c, 0x1644, 0x165f, 0x1674, 0x1686, 0x1695,
- 0x16ad, 0x16cc, 0x1700, 0x1715, 0x1727, 0x173f, 0x175d, 0x177f,
- 0x179a, 0x17df, 0x17fa, 0x1819, 0x1838, 0x1850, 0x1865, 0x187a,
- 0x187a, 0x18b6, 0x18db, 0x18db, 0x18ea, 0x190b, 0x190b, 0x195c,
- 0x1968, 0x19a0, 0x19ac, 0x19c4, 0x19e8, 0x19fd, 0x1a1f, 0x1a4c,
- 0x1a61, 0x1a73, 0x1a85, 0x1ac0, 0x1ad2, 0x1ae7, 0x1b02, 0x1b1d,
- 0x1b32, 0x1bab, 0x1be6, 0x1bf8, 0x1c1c, 0x1c34, 0x1c8c, 0x1ca4,
- 0x1cf1, 0x1d35, 0x1d4d, 0x1d62, 0x1d91, 0x1da0, 0x1da0, 0x1db2,
- // Entry 100 - 13F
- 0x1dc4, 0x1dec, 0x1e01, 0x1e19, 0x1e58, 0x1e67, 0x1e7c, 0x1ea1,
- 0x1ec9, 0x1ee1, 0x1f09, 0x1f2b, 0x1f50, 0x1f75, 0x1f97, 0x1fc8,
- 0x1fe3, 0x2011, 0x202c, 0x2048, 0x2067, 0x2096, 0x20bb, 0x210b,
- 0x2126, 0x2160, 0x2178, 0x2184, 0x219d, 0x21bc, 0x21ce, 0x21f0,
- 0x2212, 0x2237, 0x2285,
- },
- },
- { // os
- "БразилиКитайГерманФранцСтыр БританиГуырдзыстонИндиИталиЯпонУӕрӕсеАИШНӕзо" +
- "нгӕ бӕстӕДунеАфрикӕОкеаниАмерикӕАзиЕвропӕ",
- []uint16{ // 287 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
- 0x000e, 0x000e, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
- 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x0024, 0x0024, 0x0024,
- // Entry 40 - 7F
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
- 0x0024, 0x002e, 0x002e, 0x0045, 0x0045, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x006d, 0x006d,
- 0x006d, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- // Entry 80 - BF
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
- // Entry C0 - FF
- 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
- // Entry 100 - 13F
- 0x0087, 0x0087, 0x0087, 0x0087, 0x00a0, 0x00a8, 0x00b4, 0x00b4,
- 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0,
- 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
- 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00e0,
- },
- },
- { // pa
- paRegionStr,
- paRegionIdx,
- },
- { // pa-Arab
- "پکستان",
- []uint16{ // 186 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000c,
- },
- },
- { // pl
- plRegionStr,
- plRegionIdx,
- },
- {}, // prg
- { // ps
- "افغانستانالبانیهانګولاانتارکتیکااتریشبنګله\u200cدیشبلغاریهکاناډاسویسچینک" +
- "ولمبیاکیوباالمانډنمارکالجزایرمصرهسپانیهحبشهفنلینډفرانسهبرتانیهګاناګ" +
- "یانایونانګواتیمالاهانډوراسمجارستاناندونیزیاهندعراقآیسلینډایټالیهجمی" +
- "کاجاپانکمبودیاکویټلاوسلبنانلایبریالیبیامراکشمغولستانمالیزیانایجیریا" +
- "نکاراګواهالېنډناروېنیپالنیوزیلنډپاکستانپولنډفلسطینپورتګالروسیهروندا" +
- "سعودی عربستانسویډنسالوېډورسوریهتاجکستانتنزانیایوروګواییمن",
- []uint16{ // 256 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0020,
- 0x0020, 0x0020, 0x002c, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a,
- 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x005d, 0x005d, 0x005d,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
- 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x007f, 0x007f, 0x007f,
- 0x007f, 0x007f, 0x0085, 0x0093, 0x0093, 0x0093, 0x009d, 0x009d,
- 0x009d, 0x009d, 0x009d, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00b3,
- // Entry 40 - 7F
- 0x00b3, 0x00b3, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c7, 0x00c7,
- 0x00c7, 0x00d5, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
- 0x00e9, 0x00f5, 0x00f5, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
- 0x010b, 0x010b, 0x010b, 0x010b, 0x0115, 0x0115, 0x0115, 0x011f,
- 0x011f, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0141,
- 0x0141, 0x0141, 0x0151, 0x0151, 0x0163, 0x0163, 0x0163, 0x0163,
- 0x0169, 0x0169, 0x0171, 0x0171, 0x017f, 0x018d, 0x018d, 0x0197,
- 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01af, 0x01af,
- // Entry 80 - BF
- 0x01af, 0x01af, 0x01b7, 0x01b7, 0x01b7, 0x01bf, 0x01c9, 0x01c9,
- 0x01c9, 0x01c9, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e1,
- 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb,
- 0x01eb, 0x01eb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
- 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0209, 0x0209, 0x0209,
- 0x0209, 0x0209, 0x0209, 0x0219, 0x0229, 0x0235, 0x023f, 0x0249,
- 0x0249, 0x0249, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259,
- 0x0259, 0x0267, 0x0271, 0x0271, 0x0271, 0x0271, 0x027d, 0x028b,
- // Entry C0 - FF
- 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x0295,
- 0x029f, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02c2, 0x02c2, 0x02c2,
- 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2,
- 0x02c2, 0x02c2, 0x02d2, 0x02d2, 0x02dc, 0x02dc, 0x02dc, 0x02dc,
- 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02ec, 0x02ec, 0x02ec, 0x02ec,
- 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02fa, 0x02fa,
- 0x02fa, 0x02fa, 0x02fa, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a,
- 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x0310,
- },
- },
- { // pt
- ptRegionStr,
- ptRegionIdx,
- },
- { // pt-PT
- ptPTRegionStr,
- ptPTRegionIdx,
- },
- { // qu
- "AndorraAfganistánAlbaniaArmeniaAngolaArgentinaSamoa AmericanaAustriaAust" +
- "raliaAzerbaiyánBangladeshBélgicaBulgariaBaréinBurundiBenínBrunéiBoli" +
- "viaBonaireBrasilBahamasButánBotsuanaBelarúsIslas CocosCongo (RDC)Con" +
- "goSuizaCôte d’IvoireChileCamerúnChinaColombiaCosta RicaCubaCurazaoIs" +
- "la ChristmasChipreAlemaniaYibutiDinamarcaDominicaArgeliaEcuadorEston" +
- "iaEgiptoEritreaEspañaEtiopíaFinlandiaFiyiMicronesiaFranciaGabónReino" +
- " UnidoGuerneseyGhanaGambiaGuineaGuinea EcuatorialGreciaGuatemalaGuam" +
- "Guinea-BisáuGuyanaHong Kong (RAE)Islas Heard y McDonaldHondurasCroac" +
- "iaHaitíIndonesiaIsraelIndiaIrakIránIslandiaItaliaJerseyJordaniaKenia" +
- "KirguistánCamboyaKiribatiComorasSan Cristóbal y NievesCorea del Nort" +
- "eCorea del SurKuwaitKazajistánLaosLíbanoLiechtensteinSri LankaLiberi" +
- "aLesotoLituaniaLuxemburgoLetoniaMarruecosMónacoMoldovaSan MartínMada" +
- "gascarIslas MarshallERY MacedoniaMalíMyanmarMacao RAEIslas Marianas " +
- "del NorteMauritaniaMaltaMauricioMaldivasMalawiMéxicoMozambiqueNamibi" +
- "aNueva CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruega" +
- "NepalNauruOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipina" +
- "sPakistánPoloniaSan Pedro y MiquelónIslas PitcairnPuerto RicoPalesti" +
- "na KamachikuqPortugalPalaosParaguayQatarSerbiaRusiaRuandaArabia Saud" +
- "íSeychellesSudánSueciaSingapurEsloveniaEslovaquiaSierra LeonaSan Ma" +
- "rinoSenegalSomaliaSurinamSudán del SurSanto Tomé y PríncipeEl Salvad" +
- "orSint MaartenSiriaSuazilandiaChadTerritorios Australes FrancesesTog" +
- "oTailandiaTayikistánTimor-LesteTúnezTongaTurquíaTrinidad y TobagoTan" +
- "zaniaUgandaIslas menores alejadas de los EE.UU.Estados UnidosUruguay" +
- "UzbekistánSanta Sede (Ciudad del Vaticano)VenezuelaEE.UU. Islas Vírg" +
- "enesVietnamVanuatuWallis y FutunaSamoaYemenSudáfricaZambiaZimbabue",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x0012, 0x0012, 0x0019,
- 0x0020, 0x0020, 0x0026, 0x0026, 0x002f, 0x003e, 0x0045, 0x004e,
- 0x004e, 0x004e, 0x0059, 0x0059, 0x0059, 0x0063, 0x006b, 0x006b,
- 0x0073, 0x007a, 0x0081, 0x0087, 0x0087, 0x0087, 0x008e, 0x0095,
- 0x009c, 0x00a2, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf,
- 0x00bf, 0x00ca, 0x00d5, 0x00d5, 0x00da, 0x00df, 0x00ef, 0x00ef,
- 0x00f4, 0x00fc, 0x0101, 0x0109, 0x0109, 0x0113, 0x0117, 0x0117,
- 0x011e, 0x012c, 0x0132, 0x0132, 0x013a, 0x013a, 0x0140, 0x0149,
- // Entry 40 - 7F
- 0x0151, 0x0151, 0x0158, 0x0158, 0x015f, 0x0166, 0x016c, 0x016c,
- 0x0173, 0x017a, 0x0182, 0x0182, 0x018b, 0x018f, 0x018f, 0x0199,
- 0x0199, 0x01a0, 0x01a6, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01ba,
- 0x01bf, 0x01bf, 0x01bf, 0x01c5, 0x01cb, 0x01cb, 0x01dc, 0x01e2,
- 0x01e2, 0x01eb, 0x01ef, 0x01fc, 0x0202, 0x0211, 0x0227, 0x022f,
- 0x0236, 0x023c, 0x023c, 0x023c, 0x0245, 0x0245, 0x024b, 0x024b,
- 0x0250, 0x0250, 0x0254, 0x0259, 0x0261, 0x0267, 0x026d, 0x026d,
- 0x0275, 0x0275, 0x027a, 0x0285, 0x028c, 0x0294, 0x029b, 0x02b2,
- // Entry 80 - BF
- 0x02c1, 0x02ce, 0x02d4, 0x02d4, 0x02df, 0x02e3, 0x02ea, 0x02ea,
- 0x02f7, 0x0300, 0x0307, 0x030d, 0x0315, 0x031f, 0x0326, 0x0326,
- 0x032f, 0x0336, 0x033d, 0x033d, 0x0348, 0x0352, 0x0360, 0x036d,
- 0x0372, 0x0379, 0x0379, 0x0382, 0x039a, 0x039a, 0x03a4, 0x03a4,
- 0x03a9, 0x03b1, 0x03b9, 0x03bf, 0x03c6, 0x03c6, 0x03d0, 0x03d7,
- 0x03e6, 0x03ec, 0x03f8, 0x03ff, 0x0408, 0x0415, 0x041c, 0x0421,
- 0x0426, 0x0426, 0x0426, 0x042b, 0x0432, 0x0437, 0x0449, 0x045c,
- 0x0465, 0x046e, 0x0475, 0x048a, 0x0498, 0x04a3, 0x04b7, 0x04bf,
- // Entry C0 - FF
- 0x04c5, 0x04cd, 0x04d2, 0x04d2, 0x04d2, 0x04d2, 0x04d8, 0x04dd,
- 0x04e3, 0x04f0, 0x04f0, 0x04fa, 0x0500, 0x0506, 0x050e, 0x050e,
- 0x0517, 0x0517, 0x0521, 0x052d, 0x0537, 0x053e, 0x0545, 0x054c,
- 0x055a, 0x0571, 0x057c, 0x0588, 0x058d, 0x0598, 0x0598, 0x0598,
- 0x059c, 0x05bb, 0x05bf, 0x05c8, 0x05d3, 0x05d3, 0x05de, 0x05de,
- 0x05e4, 0x05e9, 0x05f1, 0x0602, 0x0602, 0x0602, 0x060a, 0x060a,
- 0x0610, 0x0634, 0x0642, 0x0649, 0x0654, 0x0674, 0x0674, 0x067d,
- 0x067d, 0x0693, 0x069a, 0x06a1, 0x06b0, 0x06b5, 0x06b5, 0x06ba,
- // Entry 100 - 13F
- 0x06ba, 0x06c4, 0x06ca, 0x06d2,
- },
- },
- { // rm
- "AndorraEmirats Arabs UnidsAfghanistanAntigua e BarbudaAnguillaAlbaniaArm" +
- "eniaAntillas OllandaisasAngolaAntarcticaArgentiniaSamoa AmericanaAus" +
- "triaAustraliaArubaInslas AlandAserbaidschanBosnia ed ErzegovinaBarba" +
- "dosBangladeschBelgiaBurkina FasoBulgariaBahrainBurundiBeninSon Barth" +
- "élemyBermudasBruneiBoliviaBrasilaBahamasBhutanInsla BouvetBotswanaB" +
- "ielorussiaBelizeCanadaInslas CocosRepublica Democratica dal CongoRep" +
- "ublica CentralafricanaCongoSvizraCosta d’IvurInslas CookChileCamerun" +
- "ChinaColumbiaCosta RicaCubaCap VerdInsla da ChristmasCipraRepublica " +
- "TschecaGermaniaDschibutiDanemarcDominicaRepublica DominicanaAlgeriaE" +
- "cuadorEstoniaEgiptaSahara OccidentalaEritreaSpagnaEtiopiaUniun europ" +
- "eicaFinlandaFidschiInslas dal FalklandMicronesiaInslas FeroeFrantsch" +
- "aGabunReginavel UnìGrenadaGeorgiaGuyana FranzosaGuernseyGhanaGibralt" +
- "arGrönlandaGambiaGuineaGuadeloupeGuinea EquatorialaGreziaGeorgia dal" +
- " Sid e las Inslas Sandwich dal SidGuatemalaGuamGuinea-BissauGuyanaRe" +
- "giun d’administraziun speziala da Hongkong, ChinaInslas da Heard e d" +
- "a McDonladHondurasCroaziaHaitiUngariaIndonesiaIrlandaIsraelInsla da " +
- "ManIndiaTerritori Britannic en l’Ocean IndicIracIranIslandaItaliaJer" +
- "seyGiamaicaJordaniaGiapunKeniaKirghisistanCambodschaKiribatiComorasS" +
- "aint Kitts e NevisCorea dal NordCorea dal SidKuwaitInslas CaymanKasa" +
- "chstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitu" +
- "aniaLuxemburgLettoniaLibiaMarocMonacoMoldaviaMontenegroSaint MartinM" +
- "adagascarInslas da MarshallMacedoniaMaliMyanmarMongoliaRegiun d’admi" +
- "nistraziun speziala Macao, ChinaInslas Mariannas dal NordMartiniqueM" +
- "auretaniaMontserratMaltaMauritiusMaldivasMalawiMexicoMalaisiaMosambi" +
- "cNamibiaNova CaledoniaNigerInsla NorfolkNigeriaNicaraguaPajais BassN" +
- "orvegiaNepalNauruNiueNova ZelandaOmanPanamaPeruPolinesia FranzosaPap" +
- "ua Nova GuineaFilippinasPakistanPolognaSaint Pierre e MiquelonPitcai" +
- "rnPuerto RicoTerritori PalestinaisPortugalPalauParaguaiKatarOceania " +
- "PerifericaRéunionRumeniaSerbiaRussiaRuandaArabia SauditaSalomonasSey" +
- "chellasSudanSveziaSingapurSontg’ElenaSloveniaSvalbard e Jan MayenSlo" +
- "vachiaSierra LeoneSan MarinoSenegalSomaliaSurinamSão Tomé e Principe" +
- "El SalvadorSiriaSwazilandInslas Turks e CaicosTschadTerritoris Franz" +
- "os MeridiunalsTogoTailandaTadschikistanTokelauTimor da l’OstTurkmeni" +
- "stanTunesiaTongaTirchiaTrinidad e TobagoTuvaluTaiwanTansaniaUcrainaU" +
- "gandaInslas pitschnas perifericas dals Stadis Unids da l’AmericaStad" +
- "is Unids da l’AmericaUruguayUsbekistanCitad dal VaticanSaint Vincent" +
- " e las GrenadinasVenezuelaInslas Verginas BritannicasInslas Verginas" +
- " AmericanasVietnamVanuatuWallis e FutunaSamoaJemenMayotteAfrica dal " +
- "SidSambiaSimbabweRegiun betg encouschenta u nunvalaivlamundAfricaAme" +
- "rica dal NordAmerica dal SidOceaniaAfrica dal VestAmerica CentralaAf" +
- "rica da l’OstAfrica dal NordAfrica CentralaAfrica MeridiunalaAmerica" +
- " dal Nord, America Centrala ed America dal SidCaribicaAsia da l’OstA" +
- "sia dal SidAsia dal SidostEuropa dal SidAustralia e Nova ZelandaMela" +
- "nesiaRegiun MicronesicaPolinesiaAsiaAsia CentralaAsia dal VestEuropa" +
- "Europa OrientalaEuropa dal NordEuropa dal VestAmerica Latina",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001a, 0x0025, 0x0036, 0x003e, 0x0045,
- 0x004c, 0x0060, 0x0066, 0x0070, 0x007a, 0x0089, 0x0090, 0x0099,
- 0x009e, 0x00aa, 0x00b7, 0x00cb, 0x00d3, 0x00de, 0x00e4, 0x00f0,
- 0x00f8, 0x00ff, 0x0106, 0x010b, 0x011a, 0x0122, 0x0128, 0x012f,
- 0x012f, 0x0136, 0x013d, 0x0143, 0x014f, 0x0157, 0x0162, 0x0168,
- 0x016e, 0x017a, 0x0199, 0x01b2, 0x01b7, 0x01bd, 0x01cb, 0x01d6,
- 0x01db, 0x01e2, 0x01e7, 0x01ef, 0x01ef, 0x01f9, 0x01fd, 0x0205,
- 0x0205, 0x0217, 0x021c, 0x022d, 0x0235, 0x0235, 0x023e, 0x0246,
- // Entry 40 - 7F
- 0x024e, 0x0262, 0x0269, 0x0269, 0x0270, 0x0277, 0x027d, 0x028f,
- 0x0296, 0x029c, 0x02a3, 0x02b2, 0x02ba, 0x02c1, 0x02d4, 0x02de,
- 0x02ea, 0x02f3, 0x02f8, 0x0306, 0x030d, 0x0314, 0x0323, 0x032b,
- 0x0330, 0x0339, 0x0343, 0x0349, 0x034f, 0x0359, 0x036b, 0x0371,
- 0x039e, 0x03a7, 0x03ab, 0x03b8, 0x03be, 0x03f3, 0x0410, 0x0418,
- 0x041f, 0x0424, 0x042b, 0x042b, 0x0434, 0x043b, 0x0441, 0x044d,
- 0x0452, 0x0478, 0x047c, 0x0480, 0x0487, 0x048d, 0x0493, 0x049b,
- 0x04a3, 0x04a9, 0x04ae, 0x04ba, 0x04c4, 0x04cc, 0x04d3, 0x04e6,
- // Entry 80 - BF
- 0x04f4, 0x0501, 0x0507, 0x0514, 0x051e, 0x0522, 0x0529, 0x0534,
- 0x0541, 0x054a, 0x0551, 0x0558, 0x0560, 0x0569, 0x0571, 0x0576,
- 0x057b, 0x0581, 0x0589, 0x0593, 0x059f, 0x05a9, 0x05bb, 0x05c4,
- 0x05c8, 0x05cf, 0x05d7, 0x0606, 0x061f, 0x0629, 0x0633, 0x063d,
- 0x0642, 0x064b, 0x0653, 0x0659, 0x065f, 0x0667, 0x066f, 0x0676,
- 0x0684, 0x0689, 0x0696, 0x069d, 0x06a6, 0x06b1, 0x06b9, 0x06be,
- 0x06c3, 0x06c7, 0x06d3, 0x06d7, 0x06dd, 0x06e1, 0x06f3, 0x0704,
- 0x070e, 0x0716, 0x071d, 0x0734, 0x073c, 0x0747, 0x075c, 0x0764,
- // Entry C0 - FF
- 0x0769, 0x0771, 0x0776, 0x0788, 0x0790, 0x0797, 0x079d, 0x07a3,
- 0x07a9, 0x07b7, 0x07c0, 0x07ca, 0x07cf, 0x07d5, 0x07dd, 0x07ea,
- 0x07f2, 0x0806, 0x080f, 0x081b, 0x0825, 0x082c, 0x0833, 0x083a,
- 0x083a, 0x084f, 0x085a, 0x085a, 0x085f, 0x0868, 0x0868, 0x087d,
- 0x0883, 0x08a1, 0x08a5, 0x08ad, 0x08ba, 0x08c1, 0x08d1, 0x08dd,
- 0x08e4, 0x08e9, 0x08f0, 0x0901, 0x0907, 0x090d, 0x0915, 0x091c,
- 0x0922, 0x095f, 0x097a, 0x0981, 0x098b, 0x099c, 0x09ba, 0x09c3,
- 0x09de, 0x09f8, 0x09ff, 0x0a06, 0x0a15, 0x0a1a, 0x0a1a, 0x0a1f,
- // Entry 100 - 13F
- 0x0a26, 0x0a34, 0x0a3a, 0x0a42, 0x0a68, 0x0a6c, 0x0a72, 0x0a82,
- 0x0a91, 0x0a98, 0x0aa7, 0x0ab7, 0x0ac8, 0x0ad7, 0x0ae6, 0x0af8,
- 0x0b2d, 0x0b2d, 0x0b35, 0x0b44, 0x0b50, 0x0b5f, 0x0b6d, 0x0b85,
- 0x0b8e, 0x0ba0, 0x0ba9, 0x0bad, 0x0bba, 0x0bc7, 0x0bcd, 0x0bdd,
- 0x0bec, 0x0bfb, 0x0c09,
- },
- },
- { // rn
- "AndoraLeta Zunze Ubumwe z’AbarabuAfuganisitaniAntigwa na BaribudaAngwila" +
- "AlubaniyaArumeniyaAntiye y’AbaholandiAngolaArijantineSamowa nyamerik" +
- "aOtirisheOsitaraliyaArubaAzerubayijaniBosiniya na HerigozevineBaruba" +
- "dosiBangaladeshiUbubiligiBurukina FasoBuligariyaBahareyiniUburundiBe" +
- "neBerimudaBuruneyiBoliviyaBureziliBahamasiButaniBotswanaBelausiBeliz" +
- "eKanadaRepubulika Iharanira Demokarasi ya KongoRepubulika ya Santara" +
- "furikaKongoUbusuwisiKotedivuwareIzinga rya KukuShiliKameruniUbushinw" +
- "aKolombiyaKositarikaKibaIbirwa bya KapuveriIzinga rya ShipureRepubul" +
- "ika ya CekeUbudageJibutiDanimarikiDominikaRepubulika ya DominikaAlij" +
- "eriyaEkwateriEsitoniyaMisiriElitereyaHisipaniyaEtiyopiyaFinilandiFij" +
- "iIzinga rya FilikilandiMikoroniziyaUbufaransaGaboUbwongerezaGerenada" +
- "JeworujiyaGwayana y’AbafaransaGanaJuburalitariGurunilandiGambiyaGune" +
- "yaGwadelupeGineya EkwatoriyaliUbugerekiGwatemalaGwamuGineya BisawuGu" +
- "yaneHondurasiKorowasiyaHayitiHungariyaIndoneziyaIrilandiIsiraheliUbu" +
- "hindiIntara y’Ubwongereza yo mu birwa by’AbahindiIrakiIraniAyisiland" +
- "iUbutaliyaniJamayikaYorudaniyaUbuyapaniKenyaKirigisitaniKambojeKirib" +
- "atiIzinga rya KomoreSekitsi na NevisiKoreya y’amajaruguruKoreya y’am" +
- "ajepfoKowetiIbirwa bya KeyimaniKazakisitaniLayosiLibaniSelusiyaLishy" +
- "itenshitayiniSirilankaLiberiyaLesotoLituwaniyaLukusamburuLativaLibiy" +
- "aMarokeMonakoMoludaviMadagasikariIzinga rya MarishariMasedoniyaMaliB" +
- "irimaniyaMongoliyaAmazinga ya Mariyana ryo mu majaruguruMaritinikiMo" +
- "ritaniyaMonteseratiMalitaIzinga rya MoriseMoludaveMalawiMigizikeMale" +
- "ziyaMozambikiNamibiyaNiyukaledoniyaNijeriizinga rya NorufolukeNijeri" +
- "yaNikaragwaUbuholandiNoruvejiNepaliNawuruNiyuweNuvelizelandiOmaniPan" +
- "amaPeruPolineziya y’AbafaransaPapuwa NiyugineyaAmazinga ya FilipineP" +
- "akisitaniPolonyeSempiyeri na MikeloniPitikeyiriniPuwetorikoPalesitin" +
- "a Wesitibanka na GazaPorutugaliPalawuParagweKatariAmazinga ya Reyini" +
- "yoRumaniyaUburusiyau RwandaArabiya SawuditeAmazinga ya SalumoniAmazi" +
- "nga ya SeyisheliSudaniSuwediSingapuruSeheleneSiloveniyaSilovakiyaSiy" +
- "eralewoneSanimarinoSenegaliSomaliyaSurinameSawotome na PerensipeEli " +
- "SaluvatoriSiriyaSuwazilandiAmazinga ya Turkisi na CayikosiCadiTogoTa" +
- "yilandiTajikisitaniTokelawuTimoru y’iburasirazubaTurukumenisitaniTun" +
- "iziyaTongaTurukiyaTirinidadi na TobagoTuvaluTayiwaniTanzaniyaIkerene" +
- "UbugandeLeta Zunze Ubumwe za AmerikaIrigweUzubekisitaniUmurwa wa Vat" +
- "ikaniSevensa na GerenadineVenezuwelaIbirwa by’isugi by’AbongerezaAma" +
- "zinga y’Isugi y’AbanyamerikaViyetinamuVanuwatuWalisi na FutunaSamowa" +
- "YemeniMayoteAfurika y’EpfoZambiyaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0023, 0x0030, 0x0043, 0x004a, 0x0053,
- 0x005c, 0x0071, 0x0077, 0x0077, 0x0081, 0x0091, 0x0099, 0x00a4,
- 0x00a9, 0x00a9, 0x00b6, 0x00ce, 0x00d8, 0x00e4, 0x00ed, 0x00fa,
- 0x0104, 0x010e, 0x0116, 0x011a, 0x011a, 0x0122, 0x012a, 0x0132,
- 0x0132, 0x013a, 0x0142, 0x0148, 0x0148, 0x0150, 0x0157, 0x015d,
- 0x0163, 0x0163, 0x018b, 0x01a6, 0x01ab, 0x01b4, 0x01c0, 0x01cf,
- 0x01d4, 0x01dc, 0x01e5, 0x01ee, 0x01ee, 0x01f8, 0x01fc, 0x020f,
- 0x020f, 0x020f, 0x0221, 0x0233, 0x023a, 0x023a, 0x0240, 0x024a,
- // Entry 40 - 7F
- 0x0252, 0x0268, 0x0271, 0x0271, 0x0279, 0x0282, 0x0288, 0x0288,
- 0x0291, 0x029b, 0x02a4, 0x02a4, 0x02ad, 0x02b1, 0x02c7, 0x02d3,
- 0x02d3, 0x02dd, 0x02e1, 0x02ec, 0x02f4, 0x02fe, 0x0314, 0x0314,
- 0x0318, 0x0324, 0x032f, 0x0336, 0x033c, 0x0345, 0x0358, 0x0361,
- 0x0361, 0x036a, 0x036f, 0x037c, 0x0382, 0x0382, 0x0382, 0x038b,
- 0x0395, 0x039b, 0x03a4, 0x03a4, 0x03ae, 0x03b6, 0x03bf, 0x03bf,
- 0x03c7, 0x03f7, 0x03fc, 0x0401, 0x040b, 0x0416, 0x0416, 0x041e,
- 0x0428, 0x0431, 0x0436, 0x0442, 0x0449, 0x0451, 0x0462, 0x0473,
- // Entry 80 - BF
- 0x0489, 0x049c, 0x04a2, 0x04b5, 0x04c1, 0x04c7, 0x04cd, 0x04d5,
- 0x04e7, 0x04f0, 0x04f8, 0x04fe, 0x0508, 0x0513, 0x0519, 0x051f,
- 0x0525, 0x052b, 0x0533, 0x0533, 0x0533, 0x053f, 0x0553, 0x055d,
- 0x0561, 0x056b, 0x0574, 0x0574, 0x059a, 0x05a4, 0x05ae, 0x05b9,
- 0x05bf, 0x05d0, 0x05d8, 0x05de, 0x05e6, 0x05ee, 0x05f7, 0x05ff,
- 0x060d, 0x0613, 0x0628, 0x0630, 0x0639, 0x0643, 0x064b, 0x0651,
- 0x0657, 0x065d, 0x066a, 0x066f, 0x0675, 0x0679, 0x0692, 0x06a3,
- 0x06b7, 0x06c1, 0x06c8, 0x06dd, 0x06e9, 0x06f3, 0x0711, 0x071b,
- // Entry C0 - FF
- 0x0721, 0x0728, 0x072e, 0x072e, 0x0742, 0x074a, 0x074a, 0x0753,
- 0x075b, 0x076b, 0x077f, 0x0794, 0x079a, 0x07a0, 0x07a9, 0x07b1,
- 0x07bb, 0x07bb, 0x07c5, 0x07d1, 0x07db, 0x07e3, 0x07eb, 0x07f3,
- 0x07f3, 0x0808, 0x0816, 0x0816, 0x081c, 0x0827, 0x0827, 0x0846,
- 0x084a, 0x084a, 0x084e, 0x0857, 0x0863, 0x086b, 0x0883, 0x0893,
- 0x089b, 0x08a0, 0x08a8, 0x08bc, 0x08c2, 0x08ca, 0x08d3, 0x08da,
- 0x08e2, 0x08e2, 0x08fe, 0x0904, 0x0911, 0x0923, 0x0938, 0x0942,
- 0x0963, 0x0986, 0x0990, 0x0998, 0x09a8, 0x09ae, 0x09ae, 0x09b4,
- // Entry 100 - 13F
- 0x09ba, 0x09ca, 0x09d1, 0x09d9,
- },
- },
- { // ro
- roRegionStr,
- roRegionIdx,
- },
- { // rof
- "AndoroFalme za KiarabuAfuganistaniAntigua na BabudaAnguilaAlbaniaAmeniaA" +
- "ntili za UholanziAngoloAjentinaSamoa ya MarekaniOstriaAustraliaAruba" +
- "AzabajaniBosnia na HezegovinaBabadoBangladeshiUbelgijiBukinafasoBulg" +
- "ariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamasiButaniBo" +
- "tswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya" +
- " Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKo" +
- "lombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDen" +
- "makiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispa" +
- "niaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUinge" +
- "rezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineG" +
- "wadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasia" +
- "HaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika B" +
- "ahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigiz" +
- "istaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea " +
- "KusiniKuwaitiVisiwa vya KaimaiKazakistaniLaosiLebanoniSantalusiaLish" +
- "enteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonak" +
- "oMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya" +
- " Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiModivu" +
- "MalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha Norf" +
- "okNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaP" +
- "eruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na M" +
- "ikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa Pa" +
- "lestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiw" +
- "a vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovak" +
- "iaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsa" +
- "vadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikistani" +
- "TokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad" +
- " na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekist" +
- "aniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya U" +
- "ingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na Futun" +
- "aSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0033, 0x003a, 0x0041,
- 0x0047, 0x0059, 0x005f, 0x005f, 0x0067, 0x0078, 0x007e, 0x0087,
- 0x008c, 0x008c, 0x0095, 0x00a9, 0x00af, 0x00ba, 0x00c2, 0x00cc,
- 0x00d4, 0x00dc, 0x00e3, 0x00e9, 0x00e9, 0x00f0, 0x00f6, 0x00fd,
- 0x00fd, 0x0104, 0x010c, 0x0112, 0x0112, 0x011a, 0x0122, 0x0128,
- 0x012e, 0x012e, 0x014e, 0x0167, 0x016c, 0x0172, 0x0179, 0x0188,
- 0x018d, 0x0195, 0x019a, 0x01a2, 0x01a2, 0x01ab, 0x01af, 0x01b7,
- 0x01b7, 0x01b7, 0x01be, 0x01ce, 0x01d7, 0x01d7, 0x01dd, 0x01e4,
- // Entry 40 - 7F
- 0x01ec, 0x01ff, 0x0206, 0x0206, 0x020c, 0x0213, 0x0218, 0x0218,
- 0x021f, 0x0227, 0x022f, 0x022f, 0x0234, 0x0238, 0x024b, 0x0255,
- 0x0255, 0x025d, 0x0263, 0x026c, 0x0273, 0x0278, 0x028b, 0x028b,
- 0x0290, 0x0298, 0x02a1, 0x02a7, 0x02ab, 0x02b4, 0x02bd, 0x02c4,
- 0x02c4, 0x02cd, 0x02d1, 0x02da, 0x02e0, 0x02e0, 0x02e0, 0x02e9,
- 0x02f0, 0x02f5, 0x02fd, 0x02fd, 0x0306, 0x030e, 0x0315, 0x0315,
- 0x031a, 0x033f, 0x0344, 0x034a, 0x0352, 0x0358, 0x0358, 0x035f,
- 0x0366, 0x036c, 0x0371, 0x037e, 0x0386, 0x038e, 0x0394, 0x03a7,
- // Entry 80 - BF
- 0x03b6, 0x03c2, 0x03c9, 0x03da, 0x03e5, 0x03ea, 0x03f2, 0x03fc,
- 0x0406, 0x040f, 0x0416, 0x041c, 0x0424, 0x042d, 0x0434, 0x0439,
- 0x043f, 0x0445, 0x044c, 0x044c, 0x044c, 0x0452, 0x0464, 0x046d,
- 0x0471, 0x0476, 0x047e, 0x047e, 0x049e, 0x04a7, 0x04b0, 0x04bb,
- 0x04c0, 0x04c6, 0x04cc, 0x04d2, 0x04d9, 0x04e0, 0x04e8, 0x04ef,
- 0x04fb, 0x0501, 0x0512, 0x0519, 0x0522, 0x052a, 0x052f, 0x0535,
- 0x053a, 0x053e, 0x0548, 0x054d, 0x0553, 0x0557, 0x056c, 0x0571,
- 0x0579, 0x0582, 0x0589, 0x059f, 0x05a8, 0x05b1, 0x05e3, 0x05e8,
- // Entry C0 - FF
- 0x05ed, 0x05f5, 0x05fb, 0x05fb, 0x0604, 0x060b, 0x060b, 0x0610,
- 0x0616, 0x061b, 0x062d, 0x0637, 0x063d, 0x0643, 0x064b, 0x0656,
- 0x065e, 0x065e, 0x0666, 0x0671, 0x0679, 0x0681, 0x0688, 0x0690,
- 0x0690, 0x06a4, 0x06ac, 0x06ac, 0x06b1, 0x06b7, 0x06b7, 0x06d0,
- 0x06d5, 0x06d5, 0x06d9, 0x06e1, 0x06ec, 0x06f3, 0x0706, 0x0715,
- 0x071c, 0x0721, 0x0728, 0x073a, 0x0740, 0x0747, 0x074f, 0x0756,
- 0x075c, 0x075c, 0x0764, 0x076b, 0x0777, 0x077f, 0x0798, 0x07a1,
- 0x07c0, 0x07de, 0x07e7, 0x07ee, 0x07fd, 0x0802, 0x0802, 0x0808,
- // Entry 100 - 13F
- 0x080f, 0x081c, 0x0822, 0x082a,
- },
- },
- { // ru
- ruRegionStr,
- ruRegionIdx,
- },
- { // rw
- "RwandaIgitonga",
- []uint16{ // 234 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 80 - BF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry C0 - FF
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x000e,
- },
- },
- { // rwk
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // sah
- "КытайАрассыыйаАан дойдуАапырыкаХотугу ЭмиэрикэСоҕуруу Эмиэрикэ",
- []uint16{ // 265 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- // Entry 40 - 7F
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- // Entry 80 - BF
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- // Entry C0 - FF
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
- // Entry 100 - 13F
- 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x002d, 0x003d, 0x005a,
- 0x0079,
- },
- },
- { // saq
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // sbp
- "AndolaWutwa wa shiyalabuAfuganisitaniAnitiguya ni BalubudaAnguillaAluban" +
- "iyaAlimeniyaAnitili sa UholansiAngolaAjentinaSamoya ya MalekaniAwusi" +
- "tiliyaAwusitilaliyaAlubaAsabajaniBosiniya ni HesegovinaBabadosiBangi" +
- "ladeshiUbeligijiBukinafasoBuligaliyaBahaleniBulundiBeniniBelimudaBul" +
- "uneyiBoliviyaBulasiliBahamaButaniBotiswanaBelalusiBeliseKanadaJamuhu" +
- "li ya Kidemokilasiya ya KongoJamuhuli ya Afilika ya PakhatiKongoUswi" +
- "siKodivayaFigunguli fya KookiShileKameruniShinaKolombiyaKositalikaKu" +
- "baKepuvedeKupilosiJamuhuli ya ShekiWujelumaniJibutiDenimakiDominikaJ" +
- "amuhuli ya DominikaAlijeliyaEkwadoEsitoniyaMisiliElitileyaHisipaniya" +
- "UhabeshiWufiniFijiFigunguli fya FokolendiMikilonesiyaWufalansaGaboni" +
- "UwingelesaGilenadaJojiyaGwiyana ya WufalansaKhanaJibulalitaGilinilan" +
- "diGambiyaGineGwadelupeGinekwetaWugilikiGwatemalaGwamuGinebisawuGuyan" +
- "aHondulasiKolasiyaHayitiHungaliyaIndonesiyaAyalandiIsilaeliIndiyaUlu" +
- "vala lwa Uwingelesa ku Bahali ya HindiIlakiUwajemiAyisilendiItaliyaJ" +
- "amaikaYolodaniJapaniKenyaKiligisisitaniKambodiyaKilibatiKomoloSantak" +
- "itisi ni NevisiKoleya ya luvala lwa KunyamandeKoleya ya KusiniKuwait" +
- "iFigunguli ifya KayimayiKasakisitaniLayosiLebanoniSantalusiyaLisheni" +
- "teniSililankaLibeliyaLesotoLitwaniyaLasembagiLativiyaLibiyaMolokoMon" +
- "akoMolidovaBukiniFigunguli ifya MalishaliMasedoniyaMaliMuyamaMongoli" +
- "yaFigunguli fya Maliyana ifya luvala lwa KunyamandeMalitinikiMolitan" +
- "iyaMonitiselatiMalitaMolisiModivuMalawiMekisikoMalesiyaMusumbijiNami" +
- "biyaNyukaledoniyaNijeliShigunguli sha NolifokiNijeliyaNikalagwaWuhol" +
- "ansiNolweNepaliNawuluNiwueNyusilendiOmaniPanamaPeluPolinesiya ya Wuf" +
- "alansaPapuwaFilipinoPakisitaniPolandiSantapieli ni MikeloniPitikaili" +
- "niPwetolikoMunjema gwa Kusikha nu Luvala lwa Gasa lwa PalesitWulenoP" +
- "alawuPalagwayiKataliLiyunioniLomaniyaWulusiLwandaSawudiFigunguli fya" +
- " SolomoniShelisheliSudaniUswidiSingapooSantahelenaSiloveniyaSilovaki" +
- "yaSiela LiyoniSamalinoSenegaliSomaliyaSulinamuSayo Tome ni Pilinikip" +
- "eElisavadoSiliyaUswasiFigunguli fya Tuliki ni KaikoShadiTogoTailandi" +
- "TajikisitaniTokelawuTimoli ya kunenaTulukimenisitaniTunisiyaTongaUtu" +
- "lukiTilinidadi ni TobagoTuvaluTaiwaniTansaniyaYukileiniUgandaMalekan" +
- "iUlugwayiUsibekisitaniVatikaniSantavisenti na GilenadiniVenesuelaFig" +
- "unguli ifya Viliginiya ifya UwingelesaFigunguli fya Viliginiya ifya " +
- "MalekaniVietinamuVanuatuWalisi ni FutunaSamoyaYemeniMayoteAfilika Ku" +
- "siniSambiyaSimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0018, 0x0025, 0x003a, 0x0042, 0x004b,
- 0x0054, 0x0067, 0x006d, 0x006d, 0x0075, 0x0087, 0x0092, 0x009f,
- 0x00a4, 0x00a4, 0x00ad, 0x00c3, 0x00cb, 0x00d7, 0x00e0, 0x00ea,
- 0x00f4, 0x00fc, 0x0103, 0x0109, 0x0109, 0x0111, 0x0119, 0x0121,
- 0x0121, 0x0129, 0x012f, 0x0135, 0x0135, 0x013e, 0x0146, 0x014c,
- 0x0152, 0x0152, 0x0175, 0x0193, 0x0198, 0x019e, 0x01a6, 0x01b9,
- 0x01be, 0x01c6, 0x01cb, 0x01d4, 0x01d4, 0x01de, 0x01e2, 0x01ea,
- 0x01ea, 0x01ea, 0x01f2, 0x0203, 0x020d, 0x020d, 0x0213, 0x021b,
- // Entry 40 - 7F
- 0x0223, 0x0237, 0x0240, 0x0240, 0x0246, 0x024f, 0x0255, 0x0255,
- 0x025e, 0x0268, 0x0270, 0x0270, 0x0276, 0x027a, 0x0291, 0x029d,
- 0x029d, 0x02a6, 0x02ac, 0x02b6, 0x02be, 0x02c4, 0x02d8, 0x02d8,
- 0x02dd, 0x02e7, 0x02f2, 0x02f9, 0x02fd, 0x0306, 0x030f, 0x0317,
- 0x0317, 0x0320, 0x0325, 0x032f, 0x0335, 0x0335, 0x0335, 0x033e,
- 0x0346, 0x034c, 0x0355, 0x0355, 0x035f, 0x0367, 0x036f, 0x036f,
- 0x0375, 0x039e, 0x03a3, 0x03aa, 0x03b4, 0x03bb, 0x03bb, 0x03c2,
- 0x03ca, 0x03d0, 0x03d5, 0x03e3, 0x03ec, 0x03f4, 0x03fa, 0x040f,
- // Entry 80 - BF
- 0x042e, 0x043e, 0x0445, 0x045c, 0x0468, 0x046e, 0x0476, 0x0481,
- 0x048c, 0x0495, 0x049d, 0x04a3, 0x04ac, 0x04b5, 0x04bd, 0x04c3,
- 0x04c9, 0x04cf, 0x04d7, 0x04d7, 0x04d7, 0x04dd, 0x04f5, 0x04ff,
- 0x0503, 0x0509, 0x0512, 0x0512, 0x0543, 0x054d, 0x0557, 0x0563,
- 0x0569, 0x056f, 0x0575, 0x057b, 0x0583, 0x058b, 0x0594, 0x059c,
- 0x05a9, 0x05af, 0x05c6, 0x05ce, 0x05d7, 0x05e0, 0x05e5, 0x05eb,
- 0x05f1, 0x05f6, 0x0600, 0x0605, 0x060b, 0x060f, 0x0626, 0x062c,
- 0x0634, 0x063e, 0x0645, 0x065b, 0x0666, 0x066f, 0x06a1, 0x06a7,
- // Entry C0 - FF
- 0x06ad, 0x06b6, 0x06bc, 0x06bc, 0x06c5, 0x06cd, 0x06cd, 0x06d3,
- 0x06d9, 0x06df, 0x06f5, 0x06ff, 0x0705, 0x070b, 0x0713, 0x071e,
- 0x0728, 0x0728, 0x0732, 0x073e, 0x0746, 0x074e, 0x0756, 0x075e,
- 0x075e, 0x0775, 0x077e, 0x077e, 0x0784, 0x078a, 0x078a, 0x07a7,
- 0x07ac, 0x07ac, 0x07b0, 0x07b8, 0x07c4, 0x07cc, 0x07dc, 0x07ec,
- 0x07f4, 0x07f9, 0x0800, 0x0814, 0x081a, 0x0821, 0x082a, 0x0833,
- 0x0839, 0x0839, 0x0841, 0x0849, 0x0856, 0x085e, 0x0878, 0x0881,
- 0x08aa, 0x08d0, 0x08d9, 0x08e0, 0x08f0, 0x08f6, 0x08f6, 0x08fc,
- // Entry 100 - 13F
- 0x0902, 0x0910, 0x0917, 0x091f,
- },
- },
- { // se
- "AscensionAndorraOvttastuvvan ArábaemiráhtatAfghanistanAntigua ja Barbuda" +
- "AnguillaAlbániaArmeniaAngolaAntárktisArgentinaAmerihká SamoaNuortari" +
- "ikaAustráliaArubaÅlándaAserbaižanBosnia-HercegovinaBarbadosBanglades" +
- "hBelgiaBurkina FasoBulgáriaBahrainBurundiBeninSaint BarthélemyBermud" +
- "aBruneiBoliviaBrasilBahamasBhutanBouvet-sullotBotswanaVilges-RuoššaB" +
- "elizeKanádaCocos-sullotKongo-KinshasaGaska-Afrihká dásseváldiKongo-B" +
- "razzavilleŠveicaElfenbenaridduCook-sullotČiileKamerunKiinnáKolombiaC" +
- "lipperton-sullotCosta RicaKubaKap VerdeCuraçaoJuovllat-sullotKyprosČ" +
- "eahkkaDuiskaDiego GarciaDjiboutiDánmárkuDominicaDominikána dásseváld" +
- "iAlgeriaCeuta ja MelillaEcuadorEstlándaEgyptaOarje-SaháraEritreaSpán" +
- "iaEtiopiaEurohpa UniovdnaSuopmaFijisullotFalklandsullotMikronesiaFea" +
- "rsullotFrankriikaGabonStuorra-BritánniaGrenadaGeorgiaFrankriikka Gua" +
- "yanaGuernseyGhanaGibraltarKalaallit NunaatGámbiaGuineaGuadeloupeEkva" +
- "toriála GuineaGreikaLulli Georgia ja Lulli Sandwich-sullotGuatemalaG" +
- "uamGuinea-BissauGuyanaHongkongHeard- ja McDonald-sullotHondurasKroát" +
- "iaHaitiUngárKanáriasullotIndonesiaIrlándaIsraelMann-sullotIndiaIrakI" +
- "ranIslándaItáliaJerseyJamaicaJordániaJapánaKeniaKirgisistanKambodžaK" +
- "iribatiKomorosSaint Kitts ja NevisDavvi-KoreaMátta-KoreaKuwaitCayman" +
- "-sullotKasakstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaL" +
- "esothoLietuvaLuxembourgLátviaLibyaMarokkoMonacoMoldáviaMontenegroFra" +
- "nkriikka Saint MartinMadagaskarMarshallsullotMakedoniaMaliBurmaMongo" +
- "liaMakáoDavvi-MariánatMartiniqueMauretániaMontserratMáltaMauritiusMa" +
- "lediivvatMalawiMeksikoMalesiaMosambikNamibiaOđđa-KaledoniaNigerNorfo" +
- "lksullotNigeriaNicaraguaVuolleeatnamatNorgaNepalNauruNiueOđđa-Selánd" +
- "aOmanPanamaPeruFrankriikka PolynesiaPapua-Ođđa-GuineaFilippiinnatPak" +
- "istanPolenSaint Pierre ja MiquelonPitcairnPuerto RicoPalestinaPortug" +
- "álaPalauParaguayQatarRéunionRomániaSerbiaRuoššaRwandaSaudi-ArábiaSa" +
- "lomon-sullotSeychellsullotDavvisudanRuoŧŧaSingaporeSaint HelenaSlove" +
- "niaSvalbárda ja Jan MayenSlovákiaSierra LeoneSan MarinoSenegalSomáli" +
- "aSurinamMáttasudanSão Tomé ja PríncipeEl SalvadorVuolleeatnamat Sain" +
- "t MartinSyriaSvazieanaTristan da CunhaTurks ja Caicos-sullotTčadTogo" +
- "ThaieanaTažikistanTokelauNuorta-TimorTurkmenistanTunisiaTongaDurkaTr" +
- "inidad ja TobagoTuvaluTaiwanTanzániaUkrainaUgandaAmerihká ovttastuvv" +
- "an stáhtatUruguayUsbekistanVatikánaSaint Vincent ja GrenadineVenezue" +
- "laBrittania Virgin-sullotAOS Virgin-sullotVietnamVanuatuWallis ja Fu" +
- "tunaSamoaKosovoJemenMayotteMátta-AfrihkáZambiaZimbabwedovdameahttun " +
- "guovlumáilbmiAfrihkkádávvi-Amerihkká ja gaska-Amerihkkámátta-Amerihk" +
- "káOseaniaoarji-Afrihkkágaska-Amerihkkánuorta-Afrihkkádavvi-Afrihkkág" +
- "aska-Afrihkkámátta-AfrihkkáAmerihkkádávvi-AmerihkkáKaribianuorta-Ási" +
- "amátta-Ásiamátta-nuorta-Ásiamátta-EurohpáAustrália ja Ođđa-SelándaMe" +
- "lanesiaMikronesia guovllusPolynesiaÁsiagaska-Ásiaoarji-ÁsiaEurohpánu" +
- "orta-Eurohpádavvi-Eurohpáoarji-Eurohpálulli-Amerihkká",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x005a,
- 0x0061, 0x0061, 0x0067, 0x0071, 0x007a, 0x0089, 0x0094, 0x009e,
- 0x00a3, 0x00ab, 0x00b6, 0x00c8, 0x00d0, 0x00da, 0x00e0, 0x00ec,
- 0x00f5, 0x00fc, 0x0103, 0x0108, 0x0119, 0x0120, 0x0126, 0x012d,
- 0x012d, 0x0133, 0x013a, 0x0140, 0x014d, 0x0155, 0x0164, 0x016a,
- 0x0171, 0x017d, 0x018b, 0x01a6, 0x01b7, 0x01be, 0x01cc, 0x01d7,
- 0x01dd, 0x01e4, 0x01eb, 0x01f3, 0x0204, 0x020e, 0x0212, 0x021b,
- 0x0223, 0x0232, 0x0238, 0x0240, 0x0246, 0x0252, 0x025a, 0x0264,
- // Entry 40 - 7F
- 0x026c, 0x0284, 0x028b, 0x029b, 0x02a2, 0x02ab, 0x02b1, 0x02be,
- 0x02c5, 0x02cc, 0x02d3, 0x02e3, 0x02e9, 0x02f3, 0x0301, 0x030b,
- 0x0315, 0x031f, 0x0324, 0x0336, 0x033d, 0x0344, 0x0357, 0x035f,
- 0x0364, 0x036d, 0x037d, 0x0384, 0x038a, 0x0394, 0x03a7, 0x03ad,
- 0x03d3, 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x03fb, 0x0414, 0x041c,
- 0x0424, 0x0429, 0x042f, 0x043d, 0x0446, 0x044e, 0x0454, 0x045f,
- 0x0464, 0x0464, 0x0468, 0x046c, 0x0474, 0x047b, 0x0481, 0x0488,
- 0x0491, 0x0498, 0x049d, 0x04a8, 0x04b1, 0x04b9, 0x04c0, 0x04d4,
- // Entry 80 - BF
- 0x04df, 0x04eb, 0x04f1, 0x04fe, 0x0507, 0x050b, 0x0512, 0x051d,
- 0x052a, 0x0533, 0x053a, 0x0541, 0x0548, 0x0552, 0x0559, 0x055e,
- 0x0565, 0x056b, 0x0574, 0x057e, 0x0596, 0x05a0, 0x05ae, 0x05b7,
- 0x05bb, 0x05c0, 0x05c8, 0x05ce, 0x05dd, 0x05e7, 0x05f2, 0x05fc,
- 0x0602, 0x060b, 0x0616, 0x061c, 0x0623, 0x062a, 0x0632, 0x0639,
- 0x0649, 0x064e, 0x065b, 0x0662, 0x066b, 0x0679, 0x067e, 0x0683,
- 0x0688, 0x068c, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06d1,
- 0x06dd, 0x06e5, 0x06ea, 0x0702, 0x070a, 0x0715, 0x071e, 0x0728,
- // Entry C0 - FF
- 0x072d, 0x0735, 0x073a, 0x073a, 0x0742, 0x074a, 0x0750, 0x0758,
- 0x075e, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a2, 0x07ae,
- 0x07b6, 0x07cd, 0x07d6, 0x07e2, 0x07ec, 0x07f3, 0x07fb, 0x0802,
- 0x080d, 0x0824, 0x082f, 0x084a, 0x084f, 0x0858, 0x0868, 0x087e,
- 0x0883, 0x0883, 0x0887, 0x088f, 0x089a, 0x08a1, 0x08ad, 0x08b9,
- 0x08c0, 0x08c5, 0x08ca, 0x08dc, 0x08e2, 0x08e8, 0x08f1, 0x08f8,
- 0x08fe, 0x08fe, 0x091d, 0x0924, 0x092e, 0x0937, 0x0951, 0x095a,
- 0x0971, 0x0982, 0x0989, 0x0990, 0x09a0, 0x09a5, 0x09ab, 0x09b0,
- // Entry 100 - 13F
- 0x09b7, 0x09c6, 0x09cc, 0x09d4, 0x09e8, 0x09f0, 0x09f9, 0x0a1e,
- 0x0a2f, 0x0a36, 0x0a45, 0x0a55, 0x0a65, 0x0a74, 0x0a83, 0x0a93,
- 0x0a9d, 0x0aae, 0x0ab5, 0x0ac1, 0x0acd, 0x0ae0, 0x0aef, 0x0b0c,
- 0x0b15, 0x0b28, 0x0b31, 0x0b36, 0x0b41, 0x0b4c, 0x0b54, 0x0b63,
- 0x0b71, 0x0b7f, 0x0b8f,
- },
- },
- { // se-FI
- "Bosnia ja HercegovinaKambožaSudanChadDavvi-Amerihkká ja Gaska-AmerihkkáL" +
- "ulli-AmerihkkáGaska-AmerihkkáDavvi-AmerihkkáLatiinnalaš-Amerihkká",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- // Entry 40 - 7F
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
- 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, 0x001d, 0x001d,
- // Entry 80 - BF
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- // Entry C0 - FF
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- // Entry 100 - 13F
- 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x004a,
- 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a,
- 0x006a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
- 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
- 0x007a, 0x007a, 0x0091,
- },
- },
- { // seh
- "AndorraEmirados Árabes UnidosAfeganistãoAntígua e BarbudaAnguillaAlbânia" +
- "ArmêniaAntilhas HolandesasAngolaArgentinaSamoa AmericanaÁustriaAustr" +
- "áliaArubaAzerbaijãoBósnia-HerzegovinaBarbadosBangladeshBélgicaBurqu" +
- "ina FasoBulgáriaBahrainBurundiBeninBermudasBruneiBolíviaBrasilBahama" +
- "sButãoBotsuanaBelarusBelizeCanadáCongo-KinshasaRepública Centro-Afri" +
- "canaCongoSuíçaCosta do MarfimIlhas CookChileRepública dos CamarõesCh" +
- "inaColômbiaCosta RicaCubaCabo VerdeChipreRepública TchecaAlemanhaDji" +
- "butiDinamarcaDominicaRepública DominicanaArgéliaEquadorEstôniaEgitoE" +
- "ritréiaEspanhaEtiópiaFinlândiaFijiIlhas MalvinasMicronésiaFrançaGabã" +
- "oReino UnidoGranadaGeórgiaGuiana FrancesaGanaGibraltarGroênlandiaGâm" +
- "biaGuinéGuadalupeGuiné EquatorialGréciaGuatemalaGuamGuiné BissauGuia" +
- "naHondurasCroáciaHaitiHungriaIndonésiaIrlandaIsraelÍndiaTerritório B" +
- "ritânico do Oceano ÍndicoIraqueIrãIslândiaItáliaJamaicaJordâniaJapão" +
- "QuêniaQuirguistãoCambojaQuiribatiComoresSão Cristovão e NevisCoréia " +
- "do NorteCoréia do SulKuwaitIlhas CaimanCasaquistãoLaosLíbanoSanta Lú" +
- "ciaLiechtensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbia" +
- "MarrocosMônacoMoldáviaMadagascarIlhas MarshallMacedôniaMaliMianmarMo" +
- "ngóliaIlhas Marianas do NorteMartinicaMauritâniaMontserratMaltaMaurí" +
- "cioMaldivasMalawiMéxicoMalásiaMoçambiqueNamíbiaNova CaledôniaNígerIl" +
- "has NorfolkNigériaNicaráguaHolandaNoruegaNepalNauruNiueNova Zelândia" +
- "OmãPanamáPeruPolinésia FrancesaPapua-Nova GuinéFilipinasPaquistãoPol" +
- "ôniaSaint Pierre e MiquelonPitcairnPorto RicoTerritório da Palestin" +
- "aPortugalPalauParaguaiCatarReuniãoRomêniaRússiaRuandaArábia SauditaI" +
- "lhas SalomãoSeychellesSudãoSuéciaCingapuraSanta HelenaEslovêniaEslov" +
- "áquiaSerra LeoaSan MarinoSenegalSomáliaSurinameSão Tomé e PríncipeE" +
- "l SalvadorSíriaSuazilândiaIlhas Turks e CaicosChadeTogoTailândiaTadj" +
- "iquistãoTokelauTimor LesteTurcomenistãoTunísiaTongaTurquiaTrinidad e" +
- " TobagoTuvaluTaiwanUcrâniaUgandaEstados UnidosUruguaiUzbequistãoVati" +
- "canoSão Vicente e GranadinasVenezuelaIlhas Virgens BritânicasIlhas V" +
- "irgens dos EUAVietnãVanuatuWallis e FutunaSamoaIêmenMayotteÁfrica do" +
- " SulZâmbiaZimbábue",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001e, 0x002a, 0x003c, 0x0044, 0x004c,
- 0x0054, 0x0067, 0x006d, 0x006d, 0x0076, 0x0085, 0x008d, 0x0097,
- 0x009c, 0x009c, 0x00a7, 0x00ba, 0x00c2, 0x00cc, 0x00d4, 0x00e1,
- 0x00ea, 0x00f1, 0x00f8, 0x00fd, 0x00fd, 0x0105, 0x010b, 0x0113,
- 0x0113, 0x0119, 0x0120, 0x0126, 0x0126, 0x012e, 0x0135, 0x013b,
- 0x0142, 0x0142, 0x0150, 0x016a, 0x016f, 0x0176, 0x0185, 0x018f,
- 0x0194, 0x01ac, 0x01b1, 0x01ba, 0x01ba, 0x01c4, 0x01c8, 0x01d2,
- 0x01d2, 0x01d2, 0x01d8, 0x01e9, 0x01f1, 0x01f1, 0x01f8, 0x0201,
- // Entry 40 - 7F
- 0x0209, 0x021e, 0x0226, 0x0226, 0x022d, 0x0235, 0x023a, 0x023a,
- 0x0243, 0x024a, 0x0252, 0x0252, 0x025c, 0x0260, 0x026e, 0x0279,
- 0x0279, 0x0280, 0x0286, 0x0291, 0x0298, 0x02a0, 0x02af, 0x02af,
- 0x02b3, 0x02bc, 0x02c8, 0x02cf, 0x02d5, 0x02de, 0x02ef, 0x02f6,
- 0x02f6, 0x02ff, 0x0303, 0x0310, 0x0316, 0x0316, 0x0316, 0x031e,
- 0x0326, 0x032b, 0x0332, 0x0332, 0x033c, 0x0343, 0x0349, 0x0349,
- 0x034f, 0x0377, 0x037d, 0x0381, 0x038a, 0x0391, 0x0391, 0x0398,
- 0x03a1, 0x03a7, 0x03ae, 0x03ba, 0x03c1, 0x03ca, 0x03d1, 0x03e8,
- // Entry 80 - BF
- 0x03f8, 0x0406, 0x040c, 0x0418, 0x0424, 0x0428, 0x042f, 0x043b,
- 0x0448, 0x0451, 0x0459, 0x045f, 0x0468, 0x0472, 0x047a, 0x0480,
- 0x0488, 0x048f, 0x0498, 0x0498, 0x0498, 0x04a2, 0x04b0, 0x04ba,
- 0x04be, 0x04c5, 0x04ce, 0x04ce, 0x04e5, 0x04ee, 0x04f9, 0x0503,
- 0x0508, 0x0511, 0x0519, 0x051f, 0x0526, 0x052e, 0x0539, 0x0541,
- 0x0550, 0x0556, 0x0563, 0x056b, 0x0575, 0x057c, 0x0583, 0x0588,
- 0x058d, 0x0591, 0x059f, 0x05a3, 0x05aa, 0x05ae, 0x05c1, 0x05d2,
- 0x05db, 0x05e5, 0x05ed, 0x0604, 0x060c, 0x0616, 0x062e, 0x0636,
- // Entry C0 - FF
- 0x063b, 0x0643, 0x0648, 0x0648, 0x0650, 0x0658, 0x0658, 0x065f,
- 0x0665, 0x0674, 0x0682, 0x068c, 0x0692, 0x0699, 0x06a2, 0x06ae,
- 0x06b8, 0x06b8, 0x06c3, 0x06cd, 0x06d7, 0x06de, 0x06e6, 0x06ee,
- 0x06ee, 0x0704, 0x070f, 0x070f, 0x0715, 0x0721, 0x0721, 0x0735,
- 0x073a, 0x073a, 0x073e, 0x0748, 0x0755, 0x075c, 0x0767, 0x0775,
- 0x077d, 0x0782, 0x0789, 0x079a, 0x07a0, 0x07a6, 0x07a6, 0x07ae,
- 0x07b4, 0x07b4, 0x07c2, 0x07c9, 0x07d5, 0x07dd, 0x07f6, 0x07ff,
- 0x0818, 0x082d, 0x0834, 0x083b, 0x084a, 0x084f, 0x084f, 0x0855,
- // Entry 100 - 13F
- 0x085c, 0x086a, 0x0871, 0x087a,
- },
- },
- { // ses
- "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
- "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
- "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
- "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
- "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
- "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
- "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
- "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
- "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
- "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
- "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
- "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
- "ndu teekoo laamaIraakIraanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
- "rgyzstanKamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
- "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
- "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
- "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
- "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
- "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
- "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
- "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
- "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
- "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
- "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
- "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
- "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
- "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
- "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
- "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
- "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
- "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
- 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
- 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
- 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
- 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
- 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
- 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
- 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
- // Entry 40 - 7F
- 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
- 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
- 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
- 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
- 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
- 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
- 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
- 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
- // Entry 80 - BF
- 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
- 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
- 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
- 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
- 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
- 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
- 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
- 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
- // Entry C0 - FF
- 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
- 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
- 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
- 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
- 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
- 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
- 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
- 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
- // Entry 100 - 13F
- 0x082b, 0x083d, 0x0842, 0x084a,
- },
- },
- { // sg
- "AndôroArâbo Emirâti ÔkoFaganïta, AfganïstäanAntîgua na BarbûdaAngûîlaAlb" +
- "anïiArmenïiAntîyi tî HolândeAngoläaArzantînaSamöa tî AmerîkaOtrîsiOs" +
- "tralïi, SotralïiArûbaZerebaidyäan, Azerbaidyäan,Bosnïi na Herzegovîn" +
- "niBarabâdaBengladêshiBêleze, BelezîkiBurkina FasoBulugarïiBahrâinaBu" +
- "rundïiBenëenBeremûdaBrunêiBolivïiBrezîliBahâmasaButäanBotswanaBelarü" +
- "siBelîziKanadäaKödörösêse tî Ngunuhalëzo tî kongöKödörösêse tî Bêafr" +
- "îkaKongöSûîsiKôdivüäraâzûâ KûkuShilïiKamerûneShînaKolombïiKôsta Rîk" +
- "aKubäaAzûâ tî Kâpo-VêreSîpriKödörösêse tî TyêkiZâmaniDibutùiiDanemêr" +
- "keDömïnîkaKödörösêse tî DominîkaAlzerïiEkuatëreEstonïiKâmitâEritrëeE" +
- "spânyeEtiopïiFëlândeFidyïiÂzûâ tî MälüîniMikronezïiFarânziGaböonKödö" +
- "rögbïä--ÔkoGrenâdaZorzïiGüyâni tî farânziGanäaZibraltära, Zibaratära" +
- "GorolândeGambïiGinëeGuadelûpuGinëe tî EkuatëreGerêsiGuatêmäläGuâmGni" +
- "nëe-BisauGayânaHonduräsiKroasïiHaitïiHongirùiiÊnndonezïiIrlândeIsraë" +
- "liÊnndeSêse tî Anglëe na Ngûyämä tî ÊnndeIrâkiIräanIslândeItalùiiZam" +
- "aîkaZordanïiZapöonKenyäaKirigizitùaanKämbôziKiribatiKömôroSên-Krïstô" +
- "fo-na-NevîsiKorëe tî BangaKorëe tî MbongoKöwêtiÂzûâ Ngundë, KaimäniK" +
- "azakisitäanLùaôsiLibùaanSênt-LisïiLiechtenstein,Sirî-LankaLiberïaLes" +
- "ôthoLituanïiLugzambûruLetonùiiLibïiMarôkoMonaköoMoldavùiiMadagaskär" +
- "aÂzûâ MärshâlMaseduäniMalïiMyämâraMongolïiÂzûâ Märïâni tî BangaMärtï" +
- "nîkiMoritanïiMonserâteMâltaMörîsiMaldîvaMalawïiMekisîkiMalezïiMözämb" +
- "îkaNamibùiiFinî KaledonïiNizëreZûâ NôrfôlkoNizerïaNikaraguaHoländeN" +
- "örvêziNëpâliNauruNiueFinî ZelândeOmâniPanamaPerüuPolinezïi tî farân" +
- "ziPapû Finî Ginëe, PapuazïiFilipîniPakistäanPölôniSên-Pyêre na Mikel" +
- "öonPitikêrniPorto RîkoSêse tî PalestîniPörtugäle, Ködörö PûraPalauP" +
- "araguëeKatäraReinïonRumanïiRusïiRuandäaSaûdi ArabïiZûâ SalomöonSëysh" +
- "êleSudäanSuêdeSïngäpûruSênt-HelênaSolovenïiSolovakïiSierä-LeôneSên-" +
- "MarëenSenegäleSomalïiSurinämSâô Tömê na PrinsîpeSalvadöroSirïiSwäzïl" +
- "ândeÂzûâ Turku na KaîkiTyâdeTogöTailândeTaazikiistäanTokelauTimôro " +
- "tî TöTurkumenistäanTunizïiTongaTurukïiTrinitùee na TobagöTüvalüTâiwâ" +
- "niTanzanïiUkrêniUgandäaÂLeaa-Ôko tî AmerikaUruguëeUzbekistäanLetëe t" +
- "î VatikäanSên-Vensäan na âGrenadîniVenezueläaÂzôâ Viîrîggo tî Anglë" +
- "eÂzûâ Virîgo tî AmerîkaVietnämVanuatüWalîsi na FutunaSamoäaYëmêniMäy" +
- "ôteMbongo-AfrîkaZambïiZimbäbwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x001b, 0x0033, 0x0047, 0x0050, 0x0058,
- 0x0060, 0x0074, 0x007c, 0x007c, 0x0086, 0x0099, 0x00a0, 0x00b4,
- 0x00ba, 0x00ba, 0x00d7, 0x00ef, 0x00f8, 0x0104, 0x0116, 0x0122,
- 0x012c, 0x0135, 0x013e, 0x0145, 0x0145, 0x014e, 0x0155, 0x015d,
- 0x015d, 0x0165, 0x016e, 0x0175, 0x0175, 0x017d, 0x0186, 0x018d,
- 0x0195, 0x0195, 0x01bf, 0x01dc, 0x01e2, 0x01e9, 0x01f5, 0x0202,
- 0x0209, 0x0212, 0x0218, 0x0221, 0x0221, 0x022d, 0x0233, 0x0249,
- 0x0249, 0x0249, 0x024f, 0x0268, 0x026f, 0x026f, 0x0278, 0x0282,
- // Entry 40 - 7F
- 0x028d, 0x02a9, 0x02b1, 0x02b1, 0x02ba, 0x02c2, 0x02ca, 0x02ca,
- 0x02d2, 0x02da, 0x02e2, 0x02e2, 0x02eb, 0x02f2, 0x0308, 0x0313,
- 0x0313, 0x031b, 0x0322, 0x0337, 0x033f, 0x0346, 0x035b, 0x035b,
- 0x0361, 0x0379, 0x0383, 0x038a, 0x0390, 0x039a, 0x03ae, 0x03b5,
- 0x03b5, 0x03c1, 0x03c6, 0x03d3, 0x03da, 0x03da, 0x03da, 0x03e4,
- 0x03ec, 0x03f3, 0x03fd, 0x03fd, 0x0409, 0x0411, 0x0419, 0x0419,
- 0x041f, 0x0449, 0x044f, 0x0455, 0x045d, 0x0465, 0x0465, 0x046d,
- 0x0476, 0x047d, 0x0484, 0x0492, 0x049b, 0x04a3, 0x04ab, 0x04c5,
- // Entry 80 - BF
- 0x04d5, 0x04e6, 0x04ee, 0x0507, 0x0514, 0x051c, 0x0524, 0x0530,
- 0x053e, 0x0549, 0x0551, 0x0559, 0x0562, 0x056d, 0x0576, 0x057c,
- 0x0583, 0x058b, 0x0595, 0x0595, 0x0595, 0x05a1, 0x05b2, 0x05bc,
- 0x05c2, 0x05cb, 0x05d4, 0x05d4, 0x05f0, 0x05fc, 0x0606, 0x0610,
- 0x0616, 0x061e, 0x0626, 0x062e, 0x0637, 0x063f, 0x064b, 0x0654,
- 0x0664, 0x066b, 0x067b, 0x0683, 0x068c, 0x0694, 0x069d, 0x06a5,
- 0x06aa, 0x06ae, 0x06bc, 0x06c2, 0x06c8, 0x06ce, 0x06e5, 0x0702,
- 0x070b, 0x0715, 0x071d, 0x0735, 0x073f, 0x074a, 0x075e, 0x077a,
- // Entry C0 - FF
- 0x077f, 0x0788, 0x078f, 0x078f, 0x0797, 0x079f, 0x079f, 0x07a5,
- 0x07ad, 0x07bb, 0x07ca, 0x07d4, 0x07db, 0x07e1, 0x07ed, 0x07fa,
- 0x0804, 0x0804, 0x080e, 0x081b, 0x0827, 0x0830, 0x0838, 0x0840,
- 0x0840, 0x0859, 0x0863, 0x0863, 0x0869, 0x0876, 0x0876, 0x088d,
- 0x0893, 0x0893, 0x0898, 0x08a1, 0x08af, 0x08b6, 0x08c5, 0x08d4,
- 0x08dc, 0x08e1, 0x08e9, 0x08fe, 0x0906, 0x090f, 0x0918, 0x091f,
- 0x0927, 0x0927, 0x093e, 0x0946, 0x0952, 0x0966, 0x0983, 0x098e,
- 0x09ac, 0x09c8, 0x09d0, 0x09d8, 0x09e9, 0x09f0, 0x09f0, 0x09f8,
- // Entry 100 - 13F
- 0x0a00, 0x0a0e, 0x0a15, 0x0a1e,
- },
- },
- { // shi
- "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⵜⵉⵢ ⵏ ⵀⵓⵍⴰⵏⴷ" +
- "ⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ" +
- " ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎ" +
- "ⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴼⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷ" +
- "ⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰ" +
- "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉ" +
- "ⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉ" +
- "ⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢ" +
- "ⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖ" +
- "ⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰ" +
- "ⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽ" +
- "ⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ " +
- "ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙ" +
- "ⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ" +
- "ⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽ" +
- "ⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⴰⴷ" +
- "ⴰⵖⴰⵛⵇⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢ" +
- "ⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰ" +
- "ⵍⵉⵣⵢⴰⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔ" +
- "ⵢⴰⵏⵉⴽⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍ" +
- "ⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉ" +
- "ⵔ ⴷ ⵎⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡ" +
- "ⴰⵢⵇⴰⵜⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓⵎⴰⵏⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉⵍ" +
- "ⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏⵉ" +
- "ⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ" +
- " ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜ" +
- "ⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷ" +
- "ⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ " +
- "ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ" +
- " ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱ" +
- "ⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095,
- 0x00aa, 0x00d3, 0x00e5, 0x00e5, 0x00fd, 0x012e, 0x013d, 0x0155,
- 0x0164, 0x0164, 0x017f, 0x01a5, 0x01b7, 0x01d2, 0x01e4, 0x0206,
- 0x021b, 0x022d, 0x0242, 0x0251, 0x0251, 0x0263, 0x0272, 0x0287,
- 0x0287, 0x0299, 0x02ae, 0x02c0, 0x02c0, 0x02d8, 0x02f3, 0x0302,
- 0x0314, 0x0314, 0x0368, 0x03b9, 0x03c8, 0x03da, 0x03f6, 0x041c,
- 0x042b, 0x0440, 0x0452, 0x046a, 0x046a, 0x0486, 0x0492, 0x04c7,
- 0x04c7, 0x04c7, 0x04d9, 0x050d, 0x0522, 0x0522, 0x0537, 0x054c,
- // Entry 40 - 7F
- 0x0561, 0x059b, 0x05aa, 0x05aa, 0x05bf, 0x05d4, 0x05e0, 0x05e0,
- 0x05f8, 0x060a, 0x061f, 0x061f, 0x0637, 0x0646, 0x0675, 0x0693,
- 0x0693, 0x06a5, 0x06b4, 0x06d9, 0x06eb, 0x06fd, 0x072e, 0x072e,
- 0x073a, 0x075d, 0x0772, 0x0784, 0x0793, 0x07ab, 0x07d4, 0x07e6,
- 0x07e6, 0x0801, 0x080d, 0x082c, 0x0841, 0x0841, 0x0841, 0x0859,
- 0x086e, 0x087d, 0x0892, 0x0892, 0x08ad, 0x08c2, 0x08d7, 0x08d7,
- 0x08e6, 0x093e, 0x0950, 0x095c, 0x096e, 0x0980, 0x0980, 0x0995,
- 0x09a7, 0x09b9, 0x09c8, 0x09e9, 0x0a01, 0x0a19, 0x0a28, 0x0a51,
- // Entry 80 - BF
- 0x0a77, 0x0a9a, 0x0aa9, 0x0ad8, 0x0af3, 0x0aff, 0x0b11, 0x0b29,
- 0x0b47, 0x0b5f, 0x0b74, 0x0b86, 0x0b9e, 0x0bbc, 0x0bce, 0x0bdd,
- 0x0bef, 0x0c01, 0x0c19, 0x0c19, 0x0c19, 0x0c37, 0x0c66, 0x0c81,
- 0x0c8d, 0x0ca2, 0x0cb7, 0x0cb7, 0x0cfd, 0x0d15, 0x0d30, 0x0d48,
- 0x0d57, 0x0d66, 0x0d78, 0x0d8a, 0x0d9c, 0x0db1, 0x0dc6, 0x0ddb,
- 0x0e0f, 0x0e21, 0x0e53, 0x0e68, 0x0e83, 0x0e98, 0x0eaa, 0x0eb9,
- 0x0ec8, 0x0ed4, 0x0ef2, 0x0f01, 0x0f13, 0x0f1f, 0x0f59, 0x0f91,
- 0x0fa9, 0x0fc1, 0x0fd6, 0x1002, 0x101a, 0x1036, 0x106d, 0x107f,
- // Entry C0 - FF
- 0x108e, 0x10a6, 0x10b5, 0x10b5, 0x10cd, 0x10e2, 0x10e2, 0x10f1,
- 0x1103, 0x111e, 0x1150, 0x1162, 0x1174, 0x1183, 0x119b, 0x11b3,
- 0x11cb, 0x11cb, 0x11e3, 0x11fe, 0x1219, 0x1231, 0x1243, 0x1258,
- 0x1258, 0x1287, 0x129f, 0x129f, 0x12ae, 0x12cc, 0x12cc, 0x130c,
- 0x1318, 0x1318, 0x1324, 0x1339, 0x135a, 0x136c, 0x138f, 0x13b0,
- 0x13bc, 0x13cb, 0x13dd, 0x140c, 0x141e, 0x1430, 0x1448, 0x145d,
- 0x146f, 0x146f, 0x14ae, 0x14c3, 0x14e1, 0x150a, 0x1542, 0x155a,
- 0x159c, 0x15f1, 0x1603, 0x1618, 0x163e, 0x164d, 0x164d, 0x165c,
- // Entry 100 - 13F
- 0x166b, 0x1694, 0x16a6, 0x16be,
- },
- },
- { // shi-Latn
- "anduralimaratafɣanistanantiga d brbudaangilaalbanyaarminyaantiy n huland" +
- "aangulaarjantinsamwa tamirikanitnnmsaustralyaarubaadrabijanbusna d h" +
- "irsikbarbadbangladicbljikaburkina fasublɣarabḥraynburundibininbrmuda" +
- "brunibulibyabrazilbahamasbhutanbutswanabilarusyabilizkanadatagdudant" +
- " tadimukratit n Kongotagdudant tanammast n ifriqyakunguswisrakut dif" +
- "wartigzirin n kukccilikamirunccinwaculumbyakusta rikakubatigzirin n " +
- "kabbirdiqubrustagdudant tatcikitalmanyadjibutidanmarkduminiktagdudan" +
- "t taduminiktdzayrikwaduristunyamiṣṛiritiryasbanyaityubyafillandafidj" +
- "itigzirin n malawimikrunizyafransagabuntagldit imunnɣrnaṭajurjyagwiy" +
- "an tafransistɣanaadrar n ṭaṛiqgrilandgambyaɣinyagwadalubɣinya n ikwa" +
- "durlyunangwatimalagwamɣinya bisawgwiyanahunduraskrwatyahaytihnɣaryaa" +
- "ndunisyairlandaisrayillhindtamnaḍt tanglizit n ugaru ahindilɛiraqira" +
- "nislandiṭalyajamaykalurdunlyabankinyakirɣizistankambudyakiribaticumu" +
- "rsankris d nifiskurya n iẓẓlmḍkurya n iffuslkwittigzirin n kaymankaz" +
- "axstanlawslubnansantlusilikinctaynsrilankalibiryaliṣuṭulitwanyaluksa" +
- "nburglatfyalibyalmɣribmunakumuldufyamadaɣacqartigzirin n marcalmasid" +
- "unyamalimyanmarmnɣulyatigzirin n maryan n iẓẓlmḍmartinikmuṛiṭanyamun" +
- "siratmalṭamurismaldifmalawimiksikmalizyamuznbiqnamibyakalidunya tama" +
- "ynutnnijirtigzirin n nurfulknijiryanikaragwahulandannrwijnibalnawrun" +
- "iwinyuzilandaɛumanbanamabirubulinizya tafransistbabwa ɣinya tamaynut" +
- "filibbinbakistanbulunyasanbyir d miklunbitkayrnburtu rikuagmmaḍ n ta" +
- "gut d ɣzzabṛṭqizbalawbaragwayqatarriyunyunrumanyarusyarwandassaɛudiy" +
- "atigzirin n salumanssicilssudansswidsnɣafurasantilinslufinyaslufakya" +
- "ssiralyunsanmarinussinigalṣṣumalsurinamsawṭumi d bransibsalfadursury" +
- "aswazilandatigzirin n turkya d kayktcadṭuguṭaylandtadjakistanṭuklawt" +
- "imur n lqbltturkmanstantunsṭungaturkyatrinidad d ṭubagutufaluṭaywanṭ" +
- "anẓanyaukranyauɣandaiwunak munnin n mirikanurugwayuzbakistanawank n " +
- "fatikansanfansan d grinadinfinzwilatigzirin timgad n nngliztigzirin " +
- "timgad n iwunak munninfitnamfanwaṭuwalis d futunasamwayamanmayuṭafri" +
- "qya n iffuszambyazimbabwi",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x000d, 0x0018, 0x0027, 0x002d, 0x0034,
- 0x003b, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x006e, 0x0076,
- 0x007b, 0x007b, 0x0084, 0x0092, 0x0098, 0x00a1, 0x00a7, 0x00b3,
- 0x00ba, 0x00c2, 0x00c9, 0x00ce, 0x00ce, 0x00d4, 0x00d9, 0x00e0,
- 0x00e0, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00fb, 0x0104, 0x0109,
- 0x010f, 0x010f, 0x012d, 0x014a, 0x014f, 0x0155, 0x015f, 0x016d,
- 0x0172, 0x0179, 0x017f, 0x0187, 0x0187, 0x0191, 0x0195, 0x01a8,
- 0x01a8, 0x01a8, 0x01ae, 0x01c0, 0x01c7, 0x01c7, 0x01ce, 0x01d5,
- // Entry 40 - 7F
- 0x01dc, 0x01f0, 0x01f5, 0x01f5, 0x01fc, 0x0203, 0x020b, 0x020b,
- 0x0213, 0x0219, 0x0220, 0x0220, 0x0228, 0x022d, 0x023e, 0x0248,
- 0x0248, 0x024e, 0x0253, 0x0260, 0x0269, 0x026f, 0x0280, 0x0280,
- 0x0285, 0x0296, 0x029d, 0x02a3, 0x02a9, 0x02b1, 0x02c1, 0x02c7,
- 0x02c7, 0x02d0, 0x02d4, 0x02e0, 0x02e7, 0x02e7, 0x02e7, 0x02ef,
- 0x02f6, 0x02fb, 0x0303, 0x0303, 0x030c, 0x0313, 0x031a, 0x031a,
- 0x031f, 0x0341, 0x0348, 0x034c, 0x0352, 0x035a, 0x035a, 0x0361,
- 0x0367, 0x036d, 0x0372, 0x037e, 0x0386, 0x038e, 0x0393, 0x03a2,
- // Entry 80 - BF
- 0x03b6, 0x03c3, 0x03c8, 0x03d9, 0x03e2, 0x03e6, 0x03ec, 0x03f4,
- 0x03fe, 0x0406, 0x040d, 0x0417, 0x041f, 0x0429, 0x042f, 0x0434,
- 0x043b, 0x0441, 0x0449, 0x0449, 0x0449, 0x0454, 0x0465, 0x046e,
- 0x0472, 0x0479, 0x0481, 0x0481, 0x04a1, 0x04a9, 0x04b6, 0x04be,
- 0x04c5, 0x04ca, 0x04d0, 0x04d6, 0x04dc, 0x04e3, 0x04ea, 0x04f1,
- 0x0503, 0x0509, 0x051b, 0x0522, 0x052b, 0x0532, 0x0538, 0x053d,
- 0x0542, 0x0546, 0x0550, 0x0556, 0x055c, 0x0560, 0x0574, 0x0589,
- 0x0591, 0x0599, 0x05a0, 0x05b0, 0x05b8, 0x05c2, 0x05da, 0x05e4,
- // Entry C0 - FF
- 0x05e9, 0x05f1, 0x05f6, 0x05f6, 0x05fe, 0x0605, 0x0605, 0x060a,
- 0x0610, 0x061a, 0x062c, 0x0632, 0x0638, 0x063d, 0x0646, 0x064e,
- 0x0656, 0x0656, 0x065e, 0x0667, 0x0670, 0x0678, 0x0682, 0x0689,
- 0x0689, 0x069c, 0x06a4, 0x06a4, 0x06a9, 0x06b3, 0x06b3, 0x06cb,
- 0x06cf, 0x06cf, 0x06d5, 0x06de, 0x06e9, 0x06f1, 0x06fe, 0x0709,
- 0x070d, 0x0714, 0x071a, 0x072d, 0x0733, 0x073b, 0x0747, 0x074e,
- 0x0755, 0x0755, 0x076c, 0x0773, 0x077d, 0x078c, 0x07a0, 0x07a8,
- 0x07c0, 0x07df, 0x07e5, 0x07ee, 0x07fc, 0x0801, 0x0801, 0x0806,
- // Entry 100 - 13F
- 0x080d, 0x081c, 0x0822, 0x082a,
- },
- },
- { // si
- siRegionStr,
- siRegionIdx,
- },
- { // sk
- skRegionStr,
- skRegionIdx,
- },
- { // sl
- slRegionStr,
- slRegionIdx,
- },
- { // smn
- "Suomâ",
- []uint16{ // 77 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- // Entry 40 - 7F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
- },
- },
- { // sn
- "AndoraUnited Arab EmiratesAfuganistaniAntigua ne BarbudaAnguilaAlbaniaAr" +
- "meniaNetherlands AntillesAngolaAjentinaSamoa ye AmerikaAustriaAustra" +
- "liaArubhaAzabajaniBoznia ne HerzegovinaBarbadosBangladeshiBeljiumBuk" +
- "inafasoBulgariaBahareniBurundiBeniniBermudaBuruneiBoliviaBrazilBaham" +
- "aBhutaniBotswanaBelarusiBelizeKanadaDemocratic Republic of the Congo" +
- "Central African RepublicKongoSwitzerlandIvory CoastZvitsuwa zveCookC" +
- "hileKameruniChinaKolombiaKostarikaCubaZvitsuwa zveCape VerdeCyprusCz" +
- "ech RepublicGermanyDjiboutiDenmarkDominicaDominican RepublicAljeriaE" +
- "cuadorEstoniaEgyptEritreaSpainEtiopiaFinlandFijiZvitsuwa zveFalkland" +
- "sMicronesiaFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGhana" +
- "GibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceGuate" +
- "malaGuamGuinea-BissauGuyanaHondurasKorasiaHaitiHungaryIndonesiaIrela" +
- "ndIzuraeriIndiaBritish Indian Ocean TerritoryIraqIranIcelandItalyJam" +
- "aicaJordanJapanKenyaKyrgyzstanKambodiaKiribatiKomoroSaint Kitts and " +
- "NevisKorea, NorthKorea, SouthKuwaitZvitsuwa zveCaymanKazakhstanLaosL" +
- "ebanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLuxemb" +
- "ourgLatviaLibyaMoroccoMonacoMoldovaMadagascarZvitsuwa zveMarshallMac" +
- "edoniaMaliMyanmarMongoliaZvitsuwa zvekumaodzanyemba eMarianaMartiniq" +
- "ueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMoza" +
- "mbiqueNamibiaNew CaledoniaNigerChitsuwa cheNorfolkNigeriaNicaraguaNe" +
- "therlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrench Polynes" +
- "iaPapua New GuineaPhilippinesPakistanPolandSaint Pierre and Miquelon" +
- "PitcairnPuerto RicoPortugalPalauParaguayQatarRéunionRomaniaRussiaRwa" +
- "ndaSaudi ArabiaZvitsuwa zvaSolomonSeychellesSudanSwedenSingaporeSain" +
- "t HelenaSloveniaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSuriname" +
- "São Tomé and PríncipeEl SalvadorSyriaSwazilandZvitsuwa zveTurk neCai" +
- "coChadiTogoThailandTajikistanTokelauEast TimorTurkmenistanTunisiaTon" +
- "gaTurkeyTrinidad and TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikaU" +
- "ruguayUzbekistanVatican StateSaint Vincent and the GrenadinesVenezue" +
- "laZvitsuwa zveHingirandiZvitsuwa zveAmerikaVietnamVanuatuWallis and " +
- "FutunaSamoaYemenMayotteSouth AfricaZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x001a, 0x0026, 0x0038, 0x003f, 0x0046,
- 0x004d, 0x0061, 0x0067, 0x0067, 0x006f, 0x007f, 0x0086, 0x008f,
- 0x0095, 0x0095, 0x009e, 0x00b3, 0x00bb, 0x00c6, 0x00cd, 0x00d7,
- 0x00df, 0x00e7, 0x00ee, 0x00f4, 0x00f4, 0x00fb, 0x0102, 0x0109,
- 0x0109, 0x010f, 0x0115, 0x011c, 0x011c, 0x0124, 0x012c, 0x0132,
- 0x0138, 0x0138, 0x0158, 0x0170, 0x0175, 0x0180, 0x018b, 0x019b,
- 0x01a0, 0x01a8, 0x01ad, 0x01b5, 0x01b5, 0x01be, 0x01c2, 0x01d8,
- 0x01d8, 0x01d8, 0x01de, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0202,
- // Entry 40 - 7F
- 0x020a, 0x021c, 0x0223, 0x0223, 0x022a, 0x0231, 0x0236, 0x0236,
- 0x023d, 0x0242, 0x0249, 0x0249, 0x0250, 0x0254, 0x0269, 0x0273,
- 0x0273, 0x0279, 0x027e, 0x028c, 0x0293, 0x029a, 0x02a7, 0x02a7,
- 0x02ac, 0x02b5, 0x02be, 0x02c4, 0x02ca, 0x02d4, 0x02e5, 0x02eb,
- 0x02eb, 0x02f4, 0x02f8, 0x0305, 0x030b, 0x030b, 0x030b, 0x0313,
- 0x031a, 0x031f, 0x0326, 0x0326, 0x032f, 0x0336, 0x033e, 0x033e,
- 0x0343, 0x0361, 0x0365, 0x0369, 0x0370, 0x0375, 0x0375, 0x037c,
- 0x0382, 0x0387, 0x038c, 0x0396, 0x039e, 0x03a6, 0x03ac, 0x03c1,
- // Entry 80 - BF
- 0x03cd, 0x03d9, 0x03df, 0x03f1, 0x03fb, 0x03ff, 0x0406, 0x0411,
- 0x041e, 0x0427, 0x042e, 0x0435, 0x043e, 0x0448, 0x044e, 0x0453,
- 0x045a, 0x0460, 0x0467, 0x0467, 0x0467, 0x0471, 0x0485, 0x048e,
- 0x0492, 0x0499, 0x04a1, 0x04a1, 0x04c4, 0x04ce, 0x04d8, 0x04e2,
- 0x04e7, 0x04f0, 0x04f8, 0x04fe, 0x0504, 0x050c, 0x0516, 0x051d,
- 0x052a, 0x052f, 0x0542, 0x0549, 0x0552, 0x055d, 0x0563, 0x0568,
- 0x056d, 0x0571, 0x057c, 0x0580, 0x0586, 0x058a, 0x059a, 0x05aa,
- 0x05b5, 0x05bd, 0x05c3, 0x05dc, 0x05e4, 0x05ef, 0x05ef, 0x05f7,
- // Entry C0 - FF
- 0x05fc, 0x0604, 0x0609, 0x0609, 0x0611, 0x0618, 0x0618, 0x061e,
- 0x0624, 0x0630, 0x0643, 0x064d, 0x0652, 0x0658, 0x0661, 0x066d,
- 0x0675, 0x0675, 0x067d, 0x0689, 0x0693, 0x069a, 0x06a1, 0x06a9,
- 0x06a9, 0x06c1, 0x06cc, 0x06cc, 0x06d1, 0x06da, 0x06da, 0x06f2,
- 0x06f7, 0x06f7, 0x06fb, 0x0703, 0x070d, 0x0714, 0x071e, 0x072a,
- 0x0731, 0x0736, 0x073c, 0x074f, 0x0755, 0x075b, 0x0763, 0x076a,
- 0x0770, 0x0770, 0x0777, 0x077e, 0x0788, 0x0795, 0x07b5, 0x07be,
- 0x07d4, 0x07e7, 0x07ee, 0x07f5, 0x0806, 0x080b, 0x080b, 0x0810,
- // Entry 100 - 13F
- 0x0817, 0x0823, 0x0829, 0x0831,
- },
- },
- { // so
- "AndoraImaaraadka Carabta ee MidoobayAfgaanistaanAntigua iyo BarbudaAngui" +
- "llaAlbaaniyaArmeeniyaNetherlands AntillesAngoolaArjantiinSamowa Amee" +
- "rikaAwsteriyaAwstaraaliyaArubaAzerbajaanBosniya HersigoviinaBaarbado" +
- "osBangaaladheeshBiljamBurkiina FaasoBulgaariyaBaxreynBurundiBiniinBe" +
- "rmuudaBuruneeyaBoliifiyaBraasiilBahaamasBhutanBotuswaanaBelarusBeliz" +
- "eKanadaJamhuuriyadda Dimuquraadiga KongoJamhuuriyadda Afrikada Dhexe" +
- "KongoSwiiserlaandIvory coastJaziiradda CookJiliKaameruunShiinahaKolo" +
- "mbiyaKosta RiikaKuubaCape Verde IslandsQubrusJamhuuriyadda JekJarmal" +
- "JabuutiDenmarkDomeenikaJamhuuriyadda DomeenikaAljeeriyaIkuwadoorEsto" +
- "oniyaMasarEretereeyaIsbeynItoobiyaFinlandFijiJaziiradaha FooklaanMic" +
- "ronesiaFaransiisGaaboonUnited KingdomGiriinaadaJoorjiyaFrench Guiana" +
- "GaanaGibraltarGreenlandGambiyaGiniGuadeloupeEquatorial GuineaGiriigG" +
- "uwaatamaalaGuamGini-BisaawGuyanaHondurasKorweeshiyaHaytiHangeriIndon" +
- "eesiyaAyrlaandIsraaʼiilHindiyaBritish Indian Ocean TerritoryCiraaqIi" +
- "raanIislaandTalyaaniJameykaUrdunJabaanKiiniyaKirgistaanKamboodiyaKir" +
- "ibatiKomoorosSaint Kitts and NevisKuuriyada WaqooyiKuuriyada Koonfur" +
- "eedKuwaytCayman IslandsKasaakhistaanLaosLubnaanSaint LuciaLiechtenst" +
- "einSirilaankaLaybeeriyaLosootoLituweeniyaLuksemboorgLatfiyaLiibiyaMa" +
- "rookoMoonakoMoldofaMadagaskarMarshall IslandsMakadooniyaMaaliMyanmar" +
- "MongooliyaNorthern Mariana IslandsMartiniqueMuritaaniyaMontserratMaa" +
- "ldaMurishiyoosMaaldiqeenMalaawiMeksikoMalaysiaMusambiigNamiibiyaNew " +
- "CaledoniaNayjerNorfolk IslandNayjeeriyaNikaraaguwaNetherlandsNoorwee" +
- "yNebaalNauruNiueNeyuusilaandCumaanPanamaPeruFrench PolynesiaPapua Ne" +
- "w GuineaFilibiinBakistaanBoolandSaint Pierre and MiquelonPitcairnPue" +
- "rto RicoFalastiin Daanka galbeed iyo QasaBortuqaalPalauParaguayQadar" +
- "RéunionRumaaniyaRuushRuwandaSacuudi CarabiyaSolomon IslandsSishelisS" +
- "uudaanIswidhanSingaboorSaint HelenaSloveniaSlovakiaSiraaliyoonSan Ma" +
- "rinoSinigaalSoomaaliyaSurinameSão Tomé and PríncipeEl SalvadorSuuriy" +
- "aIswaasilaandTurks and Caicos IslandsJaadToogoTaylaandTajikistanToke" +
- "lauTimorka bariTurkmenistanTuniisiyaTongaTurkiTrinidad and TobagoTuv" +
- "aluTaywaanTansaaniyaUkraynUgaandaMaraykankaUruguwaayUusbakistaanFaat" +
- "ikaanSaint Vincent and the GrenadinesFenisuweelaBritish Virgin Islan" +
- "dsU.S. Virgin IslandsFiyetnaamVanuatuWallis and FutunaSamoaYamanMayo" +
- "tteKoonfur AfrikaSaambiyaSimbaabweFar aan la aqoon amase aan saxnayn",
- []uint16{ // 261 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0024, 0x0030, 0x0043, 0x004b, 0x0054,
- 0x005d, 0x0071, 0x0078, 0x0078, 0x0081, 0x0090, 0x0099, 0x00a5,
- 0x00aa, 0x00aa, 0x00b4, 0x00c8, 0x00d2, 0x00e0, 0x00e6, 0x00f4,
- 0x00fe, 0x0105, 0x010c, 0x0112, 0x0112, 0x011a, 0x0123, 0x012c,
- 0x012c, 0x0134, 0x013c, 0x0142, 0x0142, 0x014c, 0x0153, 0x0159,
- 0x015f, 0x015f, 0x0180, 0x019c, 0x01a1, 0x01ad, 0x01b8, 0x01c7,
- 0x01cb, 0x01d4, 0x01dc, 0x01e5, 0x01e5, 0x01f0, 0x01f5, 0x0207,
- 0x0207, 0x0207, 0x020d, 0x021e, 0x0224, 0x0224, 0x022b, 0x0232,
- // Entry 40 - 7F
- 0x023b, 0x0252, 0x025b, 0x025b, 0x0264, 0x026d, 0x0272, 0x0272,
- 0x027c, 0x0282, 0x028a, 0x028a, 0x0291, 0x0295, 0x02a9, 0x02b3,
- 0x02b3, 0x02bc, 0x02c3, 0x02d1, 0x02db, 0x02e3, 0x02f0, 0x02f0,
- 0x02f5, 0x02fe, 0x0307, 0x030e, 0x0312, 0x031c, 0x032d, 0x0333,
- 0x0333, 0x033f, 0x0343, 0x034e, 0x0354, 0x0354, 0x0354, 0x035c,
- 0x0367, 0x036c, 0x0373, 0x0373, 0x037e, 0x0386, 0x0390, 0x0390,
- 0x0397, 0x03b5, 0x03bb, 0x03c1, 0x03c9, 0x03d1, 0x03d1, 0x03d8,
- 0x03dd, 0x03e3, 0x03ea, 0x03f4, 0x03fe, 0x0406, 0x040e, 0x0423,
- // Entry 80 - BF
- 0x0434, 0x0448, 0x044e, 0x045c, 0x0469, 0x046d, 0x0474, 0x047f,
- 0x048c, 0x0496, 0x04a0, 0x04a7, 0x04b2, 0x04bd, 0x04c4, 0x04cb,
- 0x04d2, 0x04d9, 0x04e0, 0x04e0, 0x04e0, 0x04ea, 0x04fa, 0x0505,
- 0x050a, 0x0511, 0x051b, 0x051b, 0x0533, 0x053d, 0x0548, 0x0552,
- 0x0558, 0x0563, 0x056d, 0x0574, 0x057b, 0x0583, 0x058c, 0x0595,
- 0x05a2, 0x05a8, 0x05b6, 0x05c0, 0x05cb, 0x05d6, 0x05de, 0x05e4,
- 0x05e9, 0x05ed, 0x05f9, 0x05ff, 0x0605, 0x0609, 0x0619, 0x0629,
- 0x0631, 0x063a, 0x0641, 0x065a, 0x0662, 0x066d, 0x068e, 0x0697,
- // Entry C0 - FF
- 0x069c, 0x06a4, 0x06a9, 0x06a9, 0x06b1, 0x06ba, 0x06ba, 0x06bf,
- 0x06c6, 0x06d6, 0x06e5, 0x06ed, 0x06f4, 0x06fc, 0x0705, 0x0711,
- 0x0719, 0x0719, 0x0721, 0x072c, 0x0736, 0x073e, 0x0748, 0x0750,
- 0x0750, 0x0768, 0x0773, 0x0773, 0x077a, 0x0786, 0x0786, 0x079e,
- 0x07a2, 0x07a2, 0x07a7, 0x07af, 0x07b9, 0x07c0, 0x07cc, 0x07d8,
- 0x07e1, 0x07e6, 0x07eb, 0x07fe, 0x0804, 0x080b, 0x0815, 0x081b,
- 0x0822, 0x0822, 0x082c, 0x0835, 0x0841, 0x084a, 0x086a, 0x0875,
- 0x088b, 0x089e, 0x08a7, 0x08ae, 0x08bf, 0x08c4, 0x08c4, 0x08c9,
- // Entry 100 - 13F
- 0x08d0, 0x08de, 0x08e6, 0x08ef, 0x0911,
- },
- },
- { // sq
- sqRegionStr,
- sqRegionIdx,
- },
- { // sr
- srRegionStr,
- srRegionIdx,
- },
- { // sr-Latn
- srLatnRegionStr,
- srLatnRegionIdx,
- },
- { // sv
- svRegionStr,
- svRegionIdx,
- },
- {}, // sv-FI
- { // sw
- swRegionStr,
- swRegionIdx,
- },
- { // sw-CD
- "AfuganistaniBeniniKongoKodivaaKuprosiUajemiLishenteniBukiniMyamaKisiwa c" +
- "ha NorfokNijeriaTimori ya Mashariki",
- []uint16{ // 231 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
- 0x000c, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
- 0x0012, 0x0012, 0x0012, 0x0012, 0x0017, 0x0017, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- // Entry 40 - 7F
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
- 0x0025, 0x0025, 0x0025, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- // Entry 80 - BF
- 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
- 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x003b,
- 0x003b, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
- 0x0040, 0x0040, 0x0051, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- // Entry C0 - FF
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
- 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x006b,
- },
- },
- { // ta
- taRegionStr,
- taRegionIdx,
- },
- { // te
- teRegionStr,
- teRegionIdx,
- },
- { // teo
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKeniaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // th
- thRegionStr,
- thRegionIdx,
- },
- {}, // ti
- { // to
- "Motu ʻAsenisiniʻAnitolaʻAlepea FakatahatahaʻAfikānisitaniAnitikua mo Pal" +
- "aputaAnikuilaʻAlipaniaʻĀmeniaAnitila fakahōlaniʻAngikolaʻAnitātikaʻA" +
- "senitinaHaʻamoa ʻAmelikaʻAosituliaʻAositelēliaʻAlupaʻOtumotu ʻAlaniʻ" +
- "AsapaisaniPosinia mo HesikōvinaPāpeitosiPengilātesiPelesiumePekano F" +
- "asoPulukaliaPaleiniPulunitiPeniniSā PatēlemiPēmutaPuluneiPolīviaKali" +
- "piane fakahōlaniPalāsiliPahamaPūtaniMotu PuvetiPotisiuanaPelalusiPel" +
- "iseKānataʻOtumotu KokoKongo - KinisasaLipapilika ʻAfilika LotolotoKo" +
- "ngo - PalasavilaSuisilaniMatafonua ʻAivolīʻOtumotu KukiSiliKameluniS" +
- "iainaKolomipiaMotu KilipatoniKosita LikaKiupaMuiʻi VēteKulasaoMotu K" +
- "ilisimasiSaipalesiLipapilika SekiSiamaneTieko KāsiaSiputiTenimaʻakeT" +
- "ominikaLipapilika TominikaʻAisiliaSiuta mo MelilaʻEkuetoaʻEsitōniaʻI" +
- "sipiteSahala fakahihifoʻElituliaSipeiniʻĪtiōpiaʻIulope fakatahatahaF" +
- "inilaniFisiʻOtumotu FokulaniMikolonīsiaʻOtumotu FaloeFalanisēKaponiP" +
- "ilitāniaKelenatāSeōsiaKuiana fakafalanisēKuenisīKanaSipalālitāKulini" +
- "laniKamipiaKiniKuatalupeʻEkueta KiniKalisiʻOtumotu Seōsia-tonga mo S" +
- "aniuisi-tongaKuatamalaKuamuKini-PisauKuianaHongi Kongi SAR SiainaʻOt" +
- "umotu Heati mo MakitonaliHonitulasiKuloisiaHaitiHungakaliaʻOtumotu K" +
- "aneliʻInitonēsiaʻAealaniʻIsileliMotu ManiʻInitiaPotu fonua moana ʻIn" +
- "itia fakapilitāniaʻIlaakiʻIlaaniʻAisilaniʻĪtaliSelusīSamaikaSoataneS" +
- "iapaniKeniāKīkisitaniKamipōtiaKilipasiKomolosiSā Kitisi mo NevisiKōl" +
- "ea tokelauKōlea tongaKueitiʻOtumotu KeimeniKasakitaniLauLepanoniSā L" +
- "ūsiaLikitenisiteiniSīlangikāLaipeliaLesotoLituaniaLakisimipekiLativ" +
- "iaLīpiaMolokoMonakoMolotovaMonitenikaloSā Mātini (fakafalanisē)Matak" +
- "asikaʻOtumotu MāsoloMasetōniaMāliPemaMongokōliaMakau SAR SiainaʻOtum" +
- "otu Maliana tokelauMātenikiMauliteniaMoʻungaselatiMalitaMaulitiusiMa" +
- "lativisiMalauiMekisikouMalēsiaMosēmipikiNamipiaNiu KaletōniaNisiaMot" +
- "u NōfolikiNaisiliaNikalakuaHōlaniNoauēNepaliNauluNiuēNuʻusilaʻOmaniP" +
- "anamāPelūPolinisia fakafalanisēPapuaniukiniFilipainiPākisitaniPolani" +
- "Sā Piea mo MikeloniʻOtumotu PitikeniPueto LikoPotu PalesitainePotuka" +
- "liPalauPalakuaiKatāʻOsēnia mamaʻoLēunioniLomēniaSēpiaLūsiaLuanitāSau" +
- "te ʻAlepeaʻOtumotu SolomoneʻOtumotu SeiseliSūteniSuēteniSingapoaSā H" +
- "elenaSilōveniaSivolopāti mo Sani MaieniSilōvakiaSiela LeoneSā Malino" +
- "SenekaloSōmaliaSulinameSūtani fakatongaSao Tomē mo PilinisipeʻEle Sa" +
- "lavatoaSā Mātini (fakahōlani)SīliaSuasilaniTulisiteni ta KunuhaʻOtum" +
- "otu Tuki mo KaikosiSātiPotu fonua tonga fakafalanisēTokoTailaniTasik" +
- "itaniTokelauTimoa hahakeTūkimenisitaniTunīsiaTongaToakeTilinitati mo" +
- " TopakoTūvaluTaiuaniTenisāniaʻŪkalaʻineʻIukanitāʻOtumotu siʻi ʻo ʻAm" +
- "elikaPuleʻanga fakatahataha ʻAmelikaʻUlukuaiʻUsipekitaniKolo Vatikan" +
- "iSā Viniseni mo KulenatiniVenesuelaʻOtumotu Vilikini fakapilitāniaʻO" +
- "tumotu Vilikini fakaʻamelikaVietinamiVanuatuʻUvea mo FutunaHaʻamoaKō" +
- "sovoIemeniMaioteʻAfilika tongaSemipiaSimipapueiPotu fonua taʻeʻiloa " +
- "pe halaMāmaniʻAfilikaʻAmelika tokelauʻAmelika tongaʻOsēniaʻAfilika f" +
- "akahihifoʻAmelika lotolotoʻAfilika fakahahakeʻAfilika fakatokelauʻAf" +
- "ilika lotolotoʻAfilika fakatongaOngo ʻAmelikaʻAmelika fakatokelauKal" +
- "ipianeʻĒsia fakahahakeʻĒsia fakatongaʻĒsia fakatongahahakeʻIulope fa" +
- "katongaʻAositelēlēsiaMelanīsiaPotu fonua MikolonīsiaPolinīsiaʻĒsiaʻĒ" +
- "sia lotolotoʻĒsia fakahihifoʻIulopeʻIulope fakahahakeʻIulope fakatok" +
- "elauʻIulope fakahihifoʻAmelika fakalatina",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0019, 0x002e, 0x003e, 0x0052, 0x005a, 0x0064,
- 0x006d, 0x0080, 0x008a, 0x0096, 0x00a1, 0x00b3, 0x00be, 0x00cc,
- 0x00d3, 0x00e4, 0x00f0, 0x0106, 0x0110, 0x011c, 0x0125, 0x0130,
- 0x0139, 0x0140, 0x0148, 0x014e, 0x015b, 0x0162, 0x0169, 0x0171,
- 0x0186, 0x018f, 0x0195, 0x019c, 0x01a7, 0x01b1, 0x01b9, 0x01bf,
- 0x01c6, 0x01d4, 0x01e4, 0x0201, 0x0213, 0x021c, 0x022f, 0x023d,
- 0x0241, 0x0249, 0x024f, 0x0258, 0x0267, 0x0272, 0x0277, 0x0283,
- 0x028a, 0x0299, 0x02a2, 0x02b1, 0x02b8, 0x02c4, 0x02ca, 0x02d5,
- // Entry 40 - 7F
- 0x02dd, 0x02f0, 0x02f9, 0x0308, 0x0311, 0x031c, 0x0325, 0x0336,
- 0x0340, 0x0347, 0x0352, 0x0367, 0x036f, 0x0373, 0x0385, 0x0391,
- 0x03a0, 0x03a9, 0x03af, 0x03b9, 0x03c2, 0x03c9, 0x03dd, 0x03e5,
- 0x03e9, 0x03f5, 0x03ff, 0x0406, 0x040a, 0x0413, 0x0420, 0x0426,
- 0x044f, 0x0458, 0x045d, 0x0467, 0x046d, 0x0483, 0x04a0, 0x04aa,
- 0x04b2, 0x04b7, 0x04c1, 0x04d1, 0x04de, 0x04e7, 0x04f0, 0x04f9,
- 0x0501, 0x0529, 0x0531, 0x0539, 0x0543, 0x054b, 0x0552, 0x0559,
- 0x0560, 0x0567, 0x056d, 0x0578, 0x0582, 0x058a, 0x0592, 0x05a6,
- // Entry 80 - BF
- 0x05b4, 0x05c0, 0x05c6, 0x05d7, 0x05e1, 0x05e4, 0x05ec, 0x05f6,
- 0x0605, 0x0610, 0x0618, 0x061e, 0x0626, 0x0632, 0x0639, 0x063f,
- 0x0645, 0x064b, 0x0653, 0x065f, 0x067a, 0x0684, 0x0695, 0x069f,
- 0x06a4, 0x06a8, 0x06b3, 0x06c3, 0x06dc, 0x06e5, 0x06ef, 0x06fd,
- 0x0703, 0x070d, 0x0717, 0x071d, 0x0726, 0x072e, 0x0739, 0x0740,
- 0x074e, 0x0753, 0x0761, 0x0769, 0x0772, 0x0779, 0x077f, 0x0785,
- 0x078a, 0x078f, 0x0798, 0x079f, 0x07a6, 0x07ab, 0x07c2, 0x07ce,
- 0x07d7, 0x07e2, 0x07e8, 0x07fc, 0x080e, 0x0818, 0x0828, 0x0830,
- // Entry C0 - FF
- 0x0835, 0x083d, 0x0842, 0x0853, 0x085c, 0x0864, 0x086a, 0x0870,
- 0x0878, 0x0886, 0x0898, 0x08a9, 0x08b0, 0x08b8, 0x08c0, 0x08ca,
- 0x08d4, 0x08ee, 0x08f8, 0x0903, 0x090d, 0x0915, 0x091d, 0x0925,
- 0x0936, 0x094d, 0x095c, 0x0975, 0x097b, 0x0984, 0x0998, 0x09b1,
- 0x09b6, 0x09d4, 0x09d8, 0x09df, 0x09e9, 0x09f0, 0x09fc, 0x0a0b,
- 0x0a13, 0x0a18, 0x0a1d, 0x0a31, 0x0a38, 0x0a3f, 0x0a49, 0x0a56,
- 0x0a61, 0x0a7e, 0x0a9f, 0x0aa8, 0x0ab5, 0x0ac2, 0x0adc, 0x0ae5,
- 0x0b06, 0x0b26, 0x0b2f, 0x0b36, 0x0b46, 0x0b4e, 0x0b55, 0x0b5b,
- // Entry 100 - 13F
- 0x0b61, 0x0b70, 0x0b77, 0x0b81, 0x0b9f, 0x0ba6, 0x0baf, 0x0bc0,
- 0x0bcf, 0x0bd8, 0x0bec, 0x0bfe, 0x0c12, 0x0c27, 0x0c39, 0x0c4c,
- 0x0c5a, 0x0c6f, 0x0c78, 0x0c8a, 0x0c9b, 0x0cb2, 0x0cc4, 0x0cd5,
- 0x0cdf, 0x0cf6, 0x0d00, 0x0d07, 0x0d17, 0x0d29, 0x0d31, 0x0d44,
- 0x0d58, 0x0d6b, 0x0d7f,
- },
- },
- { // tr
- trRegionStr,
- trRegionIdx,
- },
- { // twq
- "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
- "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
- "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
- "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
- "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
- "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
- "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
- "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
- "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
- "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
- "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
- "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
- "ndu teekoo laamaIraakIraanAyselandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
- "rgyzstankamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
- "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
- "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
- "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
- "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
- "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
- "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
- "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
- "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
- "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
- "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
- "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
- "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
- "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
- "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
- "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
- "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
- "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
- 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
- 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
- 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
- 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
- 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
- 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
- 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
- // Entry 40 - 7F
- 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
- 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
- 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
- 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
- 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
- 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
- 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
- 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
- // Entry 80 - BF
- 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
- 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
- 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
- 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
- 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
- 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
- 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
- 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
- // Entry C0 - FF
- 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
- 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
- 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
- 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
- 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
- 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
- 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
- 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
- // Entry 100 - 13F
- 0x082b, 0x083d, 0x0842, 0x084a,
- },
- },
- { // tzm
- "AnḍurraImarat Tiεrabin TidduklinAfɣanistanAntigwa d BarbudaAngwillaAlban" +
- "yaArminyaAntil TihulanḍiyyinAngulaArjuntinSamwa ImirikaniyyinUstriyy" +
- "aUsṭralyaArubaAzerbiǧanBusna-d-HirsikBarbadusBangladicBeljikaBurkina" +
- " FasuBelɣaryaBaḥraynBurundiBininBirmudaBrunayBulivyaBṛazilBahamasBuṭ" +
- "anButswanaBilarusyaBilizKanadaTagduda Tadimuqraṭit n KunguTagduda n " +
- "Afrika WammasKunguSwisraTaɣazut n UszerTigzirin n KukCciliKamerunṢṣi" +
- "nKulumbyaKusṭa RikakubaTigzirin n Iɣf UzegzawQubrusTagduda n ČikAlma" +
- "nyaǦibutiDanmarkḌuminikaTagduda n ḌuminikanDzayerIkwaḍurIsṭunyaMiṣrI" +
- "ritryaSbanyaItyupyaFinlanḍaFijiTigzirin n FalklandMikrunizyaFṛansaGa" +
- "bunTagelda TaddukeltGrinadaJyurjyaGuyana TafransistƔanaJibralṭarGrin" +
- "lanḍaGambyaƔinyaGwadalupƔinya Tikwaṭur itYunanGwatimalaGwamƔinya-Bis" +
- "sawGuyanaHindurasKrwatyaHaytiHenɣaryaIndunizyaIrlanḍaIsraeilHindAmur" +
- " n Agaraw Uhindi UbṛiṭaniƐiraqIranIslanḍaIṭalyaJamaykaUrḍunJjappunKi" +
- "nyaKirɣistanKambudjKiribatiQumurSantekits d NivisKurya TugafatKurya " +
- "TunẓultKuwwaytTigzirin n KaymanKazaxistanLawsLubnanSantelusyaLictenc" +
- "ṭaynSrilankaLibiryaLisuṭuLitwanyaLiksumburgLiṭṭunyaLibyaMeṛṛukMuna" +
- "kuMulḍavyaMadaɣacqarTigzirin n MarcalMaqdunyaMaliMyanmarManɣulyaTigz" +
- "irin n Maryana TugafatMartinikMuritanyaMuntsirraMalṭaMurisMaldivMala" +
- "wiMiksikMalizyaMuzambiqNamibyakalidunya TamaynutNnijerTigzirt Nurful" +
- "kNijiriaNikaragwaHulanḍaNnurwijNippalNawruNiwiZilanḍa TamaynutƐumman" +
- "PanamaPiruPulinizya TafransistPapwa Ɣinya TamaynutFilippinPakistanPu" +
- "lunyaSantepyir d MikelunPitkirnPurturikuAgemmaḍ Ugut d Ɣazza Ifilisṭ" +
- "iniyenPurtuɣalPaluParagwayQaṭarRiyyunyunṚumanyaRusyaRuwwanḍaSsaεudiy" +
- "ya TaεrabtTigzirin n SalumunSsicilSsudanSsewwidSanɣafuraSantehilinSl" +
- "uvinyaSluvakyaSiralyunSanmarinuSsiniɣalṢṣumalSurinamSawṭumi d Prinsi" +
- "pSalvaḍurSuryaSwazilanḍaTigzirin Turkiyyin d TikaykusinTcadṬṭuguṬayl" +
- "anḍaṬaǧikistanTukluTimur TagmuṭTurkmanistanTunesṬungaTurkyaTrinidad " +
- "d ṬubaguṬuvaluṬaywanṬanzanyaUkranyaUɣandaIwunak Idduklen n AmirikaUr" +
- "ugwayUzbakistanAwank iɣrem n VatikanSantevinsent d GrinadinVinzwilla" +
- "Tigzirin (Virgin) TibṛiṭaniyinTigzirin n Virjin n Iwunak YedduklenVi" +
- "ṭnamVanwatuWalis d FutunaSamwaYamanMayuṭTafrikt TunẓulZambyaZimbab" +
- "wi",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x0023, 0x002e, 0x003f, 0x0047, 0x004e,
- 0x0055, 0x006a, 0x0070, 0x0070, 0x0078, 0x008b, 0x0093, 0x009d,
- 0x00a2, 0x00a2, 0x00ac, 0x00ba, 0x00c2, 0x00cb, 0x00d2, 0x00de,
- 0x00e7, 0x00f0, 0x00f7, 0x00fc, 0x00fc, 0x0103, 0x0109, 0x0110,
- 0x0110, 0x0118, 0x011f, 0x0126, 0x0126, 0x012e, 0x0137, 0x013c,
- 0x0142, 0x0142, 0x0160, 0x0177, 0x017c, 0x0182, 0x0192, 0x01a0,
- 0x01a5, 0x01ac, 0x01b4, 0x01bc, 0x01bc, 0x01c8, 0x01cc, 0x01e3,
- 0x01e3, 0x01e3, 0x01e9, 0x01f7, 0x01fe, 0x01fe, 0x0205, 0x020c,
- // Entry 40 - 7F
- 0x0216, 0x022b, 0x0231, 0x0231, 0x023a, 0x0243, 0x0249, 0x0249,
- 0x0250, 0x0256, 0x025d, 0x025d, 0x0267, 0x026b, 0x027e, 0x0288,
- 0x0288, 0x0290, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02c5, 0x02c5,
- 0x02ca, 0x02d5, 0x02e0, 0x02e6, 0x02ec, 0x02f4, 0x0308, 0x030d,
- 0x030d, 0x0316, 0x031a, 0x0327, 0x032d, 0x032d, 0x032d, 0x0335,
- 0x033c, 0x0341, 0x034a, 0x034a, 0x0353, 0x035c, 0x0363, 0x0363,
- 0x0367, 0x0388, 0x038e, 0x0392, 0x039b, 0x03a3, 0x03a3, 0x03aa,
- 0x03b1, 0x03b8, 0x03bd, 0x03c7, 0x03ce, 0x03d6, 0x03db, 0x03ec,
- // Entry 80 - BF
- 0x03f9, 0x0408, 0x040f, 0x0420, 0x042a, 0x042e, 0x0434, 0x043e,
- 0x044b, 0x0453, 0x045a, 0x0462, 0x046a, 0x0474, 0x0480, 0x0485,
- 0x048f, 0x0495, 0x049f, 0x049f, 0x049f, 0x04aa, 0x04bb, 0x04c3,
- 0x04c7, 0x04ce, 0x04d7, 0x04d7, 0x04f1, 0x04f9, 0x0502, 0x050b,
- 0x0512, 0x0517, 0x051d, 0x0523, 0x0529, 0x0530, 0x0538, 0x053f,
- 0x0551, 0x0557, 0x0566, 0x056d, 0x0576, 0x057f, 0x0586, 0x058c,
- 0x0591, 0x0595, 0x05a7, 0x05ae, 0x05b4, 0x05b8, 0x05cc, 0x05e1,
- 0x05e9, 0x05f1, 0x05f8, 0x060b, 0x0612, 0x061b, 0x0642, 0x064b,
- // Entry C0 - FF
- 0x064f, 0x0657, 0x065e, 0x065e, 0x0667, 0x0670, 0x0670, 0x0675,
- 0x067f, 0x0693, 0x06a5, 0x06ab, 0x06b1, 0x06b8, 0x06c2, 0x06cc,
- 0x06d4, 0x06d4, 0x06dc, 0x06e4, 0x06ed, 0x06f6, 0x0700, 0x0707,
- 0x0707, 0x071a, 0x0724, 0x0724, 0x0729, 0x0735, 0x0735, 0x0754,
- 0x0758, 0x0758, 0x0761, 0x076d, 0x077a, 0x077f, 0x078d, 0x0799,
- 0x079e, 0x07a5, 0x07ab, 0x07be, 0x07c6, 0x07ce, 0x07d8, 0x07df,
- 0x07e6, 0x07e6, 0x07ff, 0x0806, 0x0810, 0x0826, 0x083d, 0x0846,
- 0x0868, 0x088c, 0x0894, 0x089b, 0x08a9, 0x08ae, 0x08ae, 0x08b3,
- // Entry 100 - 13F
- 0x08ba, 0x08ca, 0x08d0, 0x08d8,
- },
- },
- { // ug
- "ئاسسېنسىيون ئارىلىئاندوررائەرەب بىرلەشمە خەلىپىلىكىئافغانىستانئانتىگۋا ۋ" +
- "ە باربۇدائانگۋىللائالبانىيەئەرمېنىيەئانگولائانتاركتىكائارگېنتىنائام" +
- "ېرىكا تەۋەلىكىدىكى ساموئائاۋسترىيەئاۋسترالىيەئارۇبائالاند ئاراللىرى" +
- "ئەزەربەيجانبوسنىيە-گېرتسېگوۋىناباربادوسباڭلادىشبېلگىيەبۇركىنا-فاسوب" +
- "ۇلغارىيەبەھرەينبۇرۇندىبېنىنساينىت-بارتھېلەمي ئاراللىرىبېرمۇدابىرۇنې" +
- "يبولىۋىيەكارىب دېڭىزى گوللاندىيەبىرازىلىيەباھامابۇتانبۇۋېت ئاراللىر" +
- "ىبوتسۋانابېلارۇسىيەبېلىزكاناداكەئەلىڭ كوكۇس ئاراللىرىكونگو - كىنشاس" +
- "ائوتتۇرا ئافرىقا جۇمھۇرىيىتىكونگو - بىراززاۋىلشىۋىتسارىيەكوتې دې ئى" +
- "ۋوئىركۇك ئاراللىرىچىلىكامېرونجۇڭگوكولومبىيەكىلىپپېرتون ئاراللىرىكوس" +
- "تارىكاكۇبايېشىل تۇمشۇقكۇراسوروژدېستۋو ئارىلىسىپرۇسچېخ جۇمھۇرىيىتىگې" +
- "رمانىيەدېگو-گارشىياجىبۇتىدانىيەدومىنىكادومىنىكا جۇمھۇرىيىتىئالجىرىي" +
- "ەسېيتا ۋە مېلىلائېكۋادورئېستونىيەمىسىرغەربىي ساخارائېرىترېيەئىسپانى" +
- "يەئېفىيوپىيەياۋروپا ئىتتىپاقىفىنلاندىيەفىجىفالكلاند ئاراللىرىمىكرون" +
- "ېزىيەفائېرو ئاراللىرىفىرانسىيەگابونئەنگلىيە پادىشاھلىقىگىرېناداگىرو" +
- "زىيەفىرانسىيەگە قاراشلىق گىۋىياناگېرىنسىگاناجەبىلتارىقگىرېنلاندگامب" +
- "ىيەگىۋىنېيەگىۋادېلۇپئېكۋاتور گىۋىنېيەسىگىرېتسىيەجەنۇبىي جورجىيە ۋە " +
- "جەنۇبىي ساندىۋىچ ئاراللىرىگىۋاتېمالاگۇئامگىۋىنېيە-بىسسائۇگىۋىياناشي" +
- "اڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو)خېرد ۋە ماك-دونالد ئارىلىھوندۇ" +
- "راسكىرودىيەھايتىۋېنگىرىيەكانارى ئاراللىرىھىندونېزىيەئىرېلاندىيەئىسر" +
- "ائىلىيەمېن ئارىلىھىندىستانئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكىئىرا" +
- "قئىرانئىسلاندىيەئىتالىيەجېرسېييامايكائىيوردانىيەياپونىيەكېنىيەقىرغى" +
- "زىستانكامبودژاكىرىباتىكوموروساينىت-كىرىستوفېر ۋە نېۋىسشىمالىي كورىي" +
- "ەجەنۇبىي كورىيەكۇۋەيتكايمان ئاراللىرىقازاقىستانلائوسلىۋانساينىت-لۇس" +
- "ىيەلىچتېنشتېين بەگلىكىسىرىلانكالىبېرىيەلېسوتولىتۋانىيەلىيۇكسېمبۇرگل" +
- "اتۋىيەلىۋىيەماراكەشموناكومولدوۋامونتېنېگروساينىت-مارتېنماداغاسقارما" +
- "رشال ئاراللىرىماكېدونىيەمالىبىرماموڭغۇلىيەئاۋمېن ئالاھىدە مەمۇرىي ر" +
- "ايونى (جۇڭگو)شىمالىي مارىيانا ئاراللىرىمارتىنىكاماۋرىتانىيەمونتسېرر" +
- "اتمالتاماۋرىتىئۇسمالدىۋېمالاۋىمېكسىكامالايشىياموزامبىكنامىبىيەيېڭى " +
- "كالېدونىيەنېگىرنورفولك ئارىلىنىگېرىيەنىكاراگۇئاگوللاندىيەنورۋېگىيەن" +
- "ېپالناۋرۇنىيۇئېيېڭى زېلاندىيەئومانپاناماپېرۇفىرانسىيەگە قاراشلىق پو" +
- "لىنېزىيەپاپۇئا يېڭى گىۋىنېيەسىفىلىپپىنپاكىستانپولشاساينىت-پىئېر ۋە " +
- "مىكېلون ئاراللىرىپىتكاير ئاراللىرىپۇئېرتو-رىكوپەلەستىن زېمىنىپورتۇگ" +
- "الىيەپالاۋپاراگۋايقاتارئوكيانىيە ئەتراپىدىكى ئاراللاررېئونىيونرۇمىن" +
- "ىيەسېربىيەرۇسىيەرىۋانداسەئۇدى ئەرەبىستانسولومون ئاراللىرىسېيشېلسۇدا" +
- "نشىۋېتسىيەسىنگاپورساينىت ھېلېناسىلوۋېنىيەسىۋالبارد ۋە يان-مايېن ئار" +
- "ىلىسىلوۋاكىيەسېررالېئونسان-مارىنوسېنېگالسومالىسۇرىنامجەنۇبىي سۇدانس" +
- "ان تومې ۋە پرىنسىپېئەل سالۋادورسىنت مارتېنسۈرىيەسىۋېزىلاندترىستان د" +
- "اكۇنھاتۇركس ۋە كايكوس ئاراللىرىچادفىرانسىيەگە قاراشلىق جەنۇبتىكى زې" +
- "مىنلىرىتوگوتايلاندتاجىكىستانتوكېلاۋشەرقىي تىمورتۈركمەنىستانتۇنىستون" +
- "گاتۈركىيەتىرىنىداد ۋە توباگوتۇۋالۇتەيۋەنتانزانىيەئۇكرائىنائۇگاندائا" +
- "مېرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللارئامېرىكا قوشما شتاتلىرىئۇر" +
- "ۇگۋايئۆزبېكىستانۋاتىكان شەھىرىساينىت-ۋىنسېنت ۋە گىرېنادىنېسۋېنېزۇئې" +
- "لائەنگلىيەگە قاراشلىق ۋىرجىن ئارىلىئامېرىكا تەۋەلىكىدىكى ۋىرجىن تاق" +
- "ىم ئاراللىرىۋىيېتنامۋانۇئاتۇۋالىس ۋە فۇتۇناساموئاكوسوۋويەمەنمايوتتې" +
- "جەنۇبىي ئافرىقازامبىيەزىمبابۋېيوچۇن جايدۇنيائافرىقاشىمالىي ئامېرىكا" +
- "جەنۇبىي ئامېرىكائوكيانىيەغەربىي ئافرىقائوتتۇرا ئامېرىكاشەرقىي ئافرى" +
- "قاشىمالىي ئافرىقائوتتۇرا ئافرىقاجەنۇبىي ئافرىقا رايونىئامېرىكاشىمال" +
- "ىي ئامېرىكا رايونىكارىب دېڭىزىشەرقىي ئاسىياجەنۇبىي ئاسىياشەرقىي جەن" +
- "ۇبىي ئاسىياجەنۇبىي ياۋروپائاۋسترالئاسىيامېلانېسىيەمىكرونېزىيە رايون" +
- "ىپولىنىزىيەئاسىيائوتتۇرا ئاسىياغەربىي ئاسىياياۋروپاشەرقىي ياۋروپاشى" +
- "مالىي ياۋروپاغەربىي ياۋروپالاتىن ئامېرىكا",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0023, 0x0033, 0x0063, 0x0079, 0x009d, 0x00af, 0x00c1,
- 0x00d3, 0x00d3, 0x00e1, 0x00f7, 0x010b, 0x0141, 0x0153, 0x0169,
- 0x0175, 0x0194, 0x01aa, 0x01d1, 0x01e1, 0x01f1, 0x01ff, 0x0216,
- 0x0228, 0x0236, 0x0244, 0x024e, 0x0282, 0x0290, 0x029e, 0x02ae,
- 0x02da, 0x02ee, 0x02fa, 0x0304, 0x0321, 0x0331, 0x0345, 0x034f,
- 0x035b, 0x0387, 0x03a2, 0x03d6, 0x03f7, 0x040d, 0x0429, 0x0442,
- 0x044a, 0x0458, 0x0462, 0x0474, 0x049d, 0x04af, 0x04b7, 0x04ce,
- 0x04da, 0x04f9, 0x0505, 0x0522, 0x0534, 0x054b, 0x0557, 0x0563,
- // Entry 40 - 7F
- 0x0573, 0x059a, 0x05ac, 0x05c8, 0x05d8, 0x05ea, 0x05f4, 0x060d,
- 0x061f, 0x0631, 0x0645, 0x0666, 0x067a, 0x0682, 0x06a5, 0x06bb,
- 0x06da, 0x06ec, 0x06f6, 0x071d, 0x072d, 0x073d, 0x0775, 0x0783,
- 0x078b, 0x079f, 0x07b1, 0x07bf, 0x07cf, 0x07e1, 0x0806, 0x0818,
- 0x086d, 0x0881, 0x088b, 0x08aa, 0x08ba, 0x0902, 0x0930, 0x0940,
- 0x0950, 0x095a, 0x096c, 0x098b, 0x09a1, 0x09b7, 0x09cd, 0x09e0,
- 0x09f2, 0x0a39, 0x0a43, 0x0a4d, 0x0a61, 0x0a71, 0x0a7d, 0x0a8b,
- 0x0aa1, 0x0ab1, 0x0abd, 0x0ad3, 0x0ae3, 0x0af3, 0x0aff, 0x0b30,
- // Entry 80 - BF
- 0x0b4b, 0x0b66, 0x0b72, 0x0b91, 0x0ba5, 0x0baf, 0x0bb9, 0x0bd2,
- 0x0bf7, 0x0c09, 0x0c19, 0x0c25, 0x0c37, 0x0c4f, 0x0c5d, 0x0c69,
- 0x0c77, 0x0c83, 0x0c91, 0x0ca5, 0x0cbe, 0x0cd2, 0x0cf1, 0x0d05,
- 0x0d0d, 0x0d17, 0x0d29, 0x0d6f, 0x0da1, 0x0db3, 0x0dc9, 0x0ddd,
- 0x0de7, 0x0dfb, 0x0e09, 0x0e15, 0x0e23, 0x0e35, 0x0e45, 0x0e55,
- 0x0e72, 0x0e7c, 0x0e97, 0x0ea7, 0x0ebb, 0x0ecf, 0x0ee1, 0x0eeb,
- 0x0ef5, 0x0f01, 0x0f1c, 0x0f26, 0x0f32, 0x0f3a, 0x0f76, 0x0fa0,
- 0x0fb0, 0x0fc0, 0x0fca, 0x1008, 0x1029, 0x1040, 0x105d, 0x1073,
- // Entry C0 - FF
- 0x107d, 0x108d, 0x1097, 0x10d1, 0x10e3, 0x10f3, 0x1101, 0x110d,
- 0x111b, 0x113c, 0x115d, 0x1169, 0x1173, 0x1185, 0x1195, 0x11ae,
- 0x11c2, 0x11f8, 0x120c, 0x1220, 0x1233, 0x1241, 0x124d, 0x125b,
- 0x1274, 0x1299, 0x12b0, 0x12c5, 0x12d1, 0x12e5, 0x1302, 0x1331,
- 0x1337, 0x1384, 0x138c, 0x139a, 0x13ae, 0x13bc, 0x13d3, 0x13eb,
- 0x13f5, 0x13ff, 0x140d, 0x1431, 0x143d, 0x1449, 0x145b, 0x146d,
- 0x147b, 0x14cd, 0x14f9, 0x1509, 0x151f, 0x153a, 0x1571, 0x1585,
- 0x15c4, 0x1618, 0x1628, 0x1638, 0x1654, 0x1660, 0x166c, 0x1676,
- // Entry 100 - 13F
- 0x1684, 0x16a1, 0x16af, 0x16bf, 0x16d0, 0x16da, 0x16e8, 0x1707,
- 0x1726, 0x1738, 0x1753, 0x1772, 0x178d, 0x17aa, 0x17c7, 0x17f1,
- 0x1801, 0x182d, 0x1844, 0x185d, 0x1878, 0x18a0, 0x18bd, 0x18d9,
- 0x18ed, 0x1910, 0x1924, 0x1930, 0x194b, 0x1964, 0x1972, 0x198d,
- 0x19aa, 0x19c5, 0x19e0,
- },
- },
- { // uk
- ukRegionStr,
- ukRegionIdx,
- },
- { // ur
- urRegionStr,
- urRegionIdx,
- },
- { // ur-IN
- "جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسکوت داوواغجزائر ککج" +
- "زیرہ کلپرٹنڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہر" +
- "ڈ و مکڈونلڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماری" +
- "اناجزیرہ نارفوکجزائر پٹکیرنجزائر سلیمانترسٹان دا کونیاجزائر کیکس و " +
- "ترکیہامریکی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجن",
- []uint16{ // 250 elements
- // Entry 0 - 3F
- 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
- 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
- 0x0017, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
- 0x002c, 0x002c, 0x002c, 0x002c, 0x0041, 0x0041, 0x0041, 0x0041,
- 0x0041, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0076, 0x0085,
- 0x0085, 0x0085, 0x0085, 0x0085, 0x009c, 0x009c, 0x009c, 0x009c,
- 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x00b1, 0x00b1, 0x00b1,
- // Entry 40 - 7F
- 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
- 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ca, 0x00ca,
- 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x00f8,
- 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8,
- 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x011b, 0x011b,
- 0x011b, 0x011b, 0x011b, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
- 0x0130, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
- 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
- // Entry 80 - BF
- 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
- 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
- 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0167, 0x0167,
- 0x0167, 0x0167, 0x0167, 0x0167, 0x018b, 0x018b, 0x018b, 0x018b,
- 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b,
- 0x018b, 0x018b, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
- 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
- 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01b9, 0x01b9, 0x01b9, 0x01b9,
- // Entry C0 - FF
- 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9,
- 0x01b9, 0x01b9, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
- 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01ec, 0x020d,
- 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d,
- 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d,
- 0x020d, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231,
- 0x0253, 0x0273,
- },
- },
- { // uz
- uzRegionStr,
- uzRegionIdx,
- },
- { // uz-Arab
- "افغانستان",
- []uint16{ // 5 elements
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0012,
- },
- },
- { // uz-Cyrl
- "Вознесение оролиАндорраБирлашган Араб АмирликлариАфғонистонАнтигуа ва Ба" +
- "рбадосАнгилаАлбанияАрманистонАнголаАнтарктикаАргентинаАмерика Самоа" +
- "сиАвстрияАвстралияАрубаАланд ороллариОзарбайжонБосния ва Герцеговин" +
- "аБарбадосБангладешБельгияБуркина-ФасоБолгарияБаҳрайнБурундиБенинМуқ" +
- "аддас ВарфаломейБермудаБрунейБоливияКариб НидерландиясиБразилияБага" +
- "ма ороллариБутанБувет оролиБотсваннаБелорусияБелизКанадаКокос (Кили" +
- "нг) ороллариКонго-КиншасаМарказий Африка РеспубликасиКонго Браззави" +
- "льШвейцарияКот-д-ИвуарКук ороллариЧилиКамерунХитойКолумбияКлипперто" +
- "н оролиКоста-РикаКубаКабо-ВердеКурасаоРождество оролиКипрЧехия Респ" +
- "убликасиОлмонияДиего ГарсияДжибутиДанияДоминикаДоминикан Республика" +
- "сиЖазоирСейта ва МелиллаЭквадорЭстонияМисрҒарбий Саҳрои КабирЭритре" +
- "яИспанияЭфиопияЕвропа ИттифоқиФинляндияФижи ороллариФолькленд оролл" +
- "ариМикронезияФарер ороллариФранцияГабонБирлашган ҚиролликГренадаГру" +
- "зияФранцуз ГвианасиГернсиГанаГибралтарГренландияГамбияГвинеяГваделу" +
- "пеЭкваториал ГвинеяГрецияЖанубий Джорджия ва Жанубий Сендвич оролла" +
- "риГватемалаГуамГвинея-БисауГаянаГонконг Хитой ММҲГерд ороли ва МакД" +
- "оналд ороллариГондурасХорватияГаитиВенгрияКанар ороллариИндонезияИр" +
- "ландияИсроилМэн оролиҲиндистонБритания Ҳинд океани ҳудудиИроқЭронИс" +
- "ландияИталияДжерсиЯмайкаИорданияЯпонияКенияҚирғизистонКамбоджаКириб" +
- "атиКомор ороллариСент-Китс ва НевисШимолий КореяЖанубий КореяКувайт" +
- "Кайман ороллариҚозоғистонЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиб" +
- "ерияЛесотоЛитваЛюксембургЛатвияЛивияМарокашМонакоМолдоваЧерногорияС" +
- "ент-МартинМадагаскарМаршал ороллариМакедонияМалиМьянма (Бирма)Муғул" +
- "истонМакао Хитой ММҲШимолий Марианна ороллариМартиникаМавританияМон" +
- "тсерратМальтаМаврикийМальдив ороллариМалавиМексикаМалайзияМозамбикН" +
- "амибияЯнги КаледонияНигерНорфолк ороллариНигерияНикарагуаНидерланди" +
- "яНорвегияНепалНауруНиуеЯнги ЗеландияУммонПанамаПеруФранцуз Полинези" +
- "ясиПапуа Янги ГвинеяФилиппинПокистонПольшаСент-Пьер ва МикелонПитка" +
- "рин ороллариПуэрто-РикоФаластин ҳудудиПортугалияПалауПарагвайҚатарЁ" +
- "ндош ОкеанияРеюньонРуминияСербияРоссияРуандаСаудия АрабистониСоломо" +
- "н ороллариСейшел ороллариСуданШвецияСингапурМуқаддас Елена ороллари" +
- "СловенияСавльбард ва Жан МаенСловакияСьерра-ЛеонеСан-МариноСенегалС" +
- "омалиСуринамЖанубий СуданСан-Томе ва ПринсипиЭль-СальвадорСинт-Маар" +
- "тенСурияСвазилендТристан де КунаТуркс ва Кайкос ороллариЧадФранция " +
- "жанубий худудлариТогоТайландТожикистонТокелауШарқий-ТиморТуркманист" +
- "онТунисТонгаТуркияТринидад ва ТобагоТувалуТайванТанзанияУкраинаУган" +
- "даАҚШ ёндош ороллариҚўшма ШтатларУругвайЎзбекистонВатиканСент-Винсе" +
- "нт ва ГренадинВенесуэлаБритания Вирджиния ороллариАҚШ Вирджиния оро" +
- "ллариВьетнамВануатуУэллис ва ФутунаСамоаКосовоЯманМайоттаЖанубий Аф" +
- "рикаЗамбияЗимбабвеНомаълум минтақаДунёАфрикаШимолий АмерикаЖанубий " +
- "АмерикаОкеанияҒарбий АфрикаМарказий АмерикаШарқий АфрикаШимолий Афр" +
- "икаМарказий АфрикаЖануби-АфрикаАмерикаШимоли-АмерикаКариб ҳавзасиШа" +
- "рқий ОсиёЖанубий ОсиёЖанубий-Шарқий ОсиёЖанубий ЕвропаАвстралазияМе" +
- "ланезияМикронезия минтақасиПолинезияОсиёМарказий ОсиёҒарбий ОсиёЕвр" +
- "опаШарқий ЕвропаШимолий ЕвропаҒарбий ЕвропаЛотин Америкаси",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001f, 0x002d, 0x005f, 0x0073, 0x0097, 0x00a3, 0x00b1,
- 0x00c5, 0x00c5, 0x00d1, 0x00e5, 0x00f7, 0x0114, 0x0122, 0x0134,
- 0x013e, 0x0159, 0x016d, 0x0195, 0x01a5, 0x01b7, 0x01c5, 0x01dc,
- 0x01ec, 0x01fa, 0x0208, 0x0212, 0x0237, 0x0245, 0x0251, 0x025f,
- 0x0284, 0x0294, 0x02b1, 0x02bb, 0x02d0, 0x02e2, 0x02f4, 0x02fe,
- 0x030a, 0x0334, 0x034d, 0x0383, 0x03a2, 0x03b4, 0x03c8, 0x03df,
- 0x03e7, 0x03f5, 0x03ff, 0x040f, 0x042e, 0x0441, 0x0449, 0x045c,
- 0x046a, 0x0487, 0x048f, 0x04b2, 0x04c0, 0x04d7, 0x04e5, 0x04ef,
- // Entry 40 - 7F
- 0x04ff, 0x052a, 0x0536, 0x0554, 0x0562, 0x0570, 0x0578, 0x059c,
- 0x05aa, 0x05b8, 0x05c6, 0x05e3, 0x05f5, 0x060e, 0x0631, 0x0645,
- 0x0660, 0x066e, 0x0678, 0x069b, 0x06a9, 0x06b5, 0x06d4, 0x06e0,
- 0x06e8, 0x06fa, 0x070e, 0x071a, 0x0726, 0x0738, 0x0759, 0x0765,
- 0x07b8, 0x07ca, 0x07d2, 0x07e9, 0x07f3, 0x0813, 0x084f, 0x085f,
- 0x086f, 0x0879, 0x0887, 0x08a2, 0x08b4, 0x08c4, 0x08d0, 0x08e1,
- 0x08f3, 0x0926, 0x092e, 0x0936, 0x0946, 0x0952, 0x095e, 0x096a,
- 0x097a, 0x0986, 0x0990, 0x09a6, 0x09b6, 0x09c6, 0x09e1, 0x0a02,
- // Entry 80 - BF
- 0x0a1b, 0x0a34, 0x0a40, 0x0a5d, 0x0a71, 0x0a79, 0x0a83, 0x0a96,
- 0x0aac, 0x0abd, 0x0acb, 0x0ad7, 0x0ae1, 0x0af5, 0x0b01, 0x0b0b,
- 0x0b19, 0x0b25, 0x0b33, 0x0b47, 0x0b5c, 0x0b70, 0x0b8d, 0x0b9f,
- 0x0ba7, 0x0bc0, 0x0bd4, 0x0bf0, 0x0c20, 0x0c32, 0x0c46, 0x0c5a,
- 0x0c66, 0x0c76, 0x0c95, 0x0ca1, 0x0caf, 0x0cbf, 0x0ccf, 0x0cdd,
- 0x0cf8, 0x0d02, 0x0d21, 0x0d2f, 0x0d41, 0x0d57, 0x0d67, 0x0d71,
- 0x0d7b, 0x0d83, 0x0d9c, 0x0da6, 0x0db2, 0x0dba, 0x0ddf, 0x0dff,
- 0x0e0f, 0x0e1f, 0x0e2b, 0x0e50, 0x0e71, 0x0e86, 0x0ea3, 0x0eb7,
- // Entry C0 - FF
- 0x0ec1, 0x0ed1, 0x0edb, 0x0ef4, 0x0f02, 0x0f10, 0x0f1c, 0x0f28,
- 0x0f34, 0x0f55, 0x0f74, 0x0f91, 0x0f9b, 0x0fa7, 0x0fb7, 0x0fe3,
- 0x0ff3, 0x101a, 0x102a, 0x1041, 0x1054, 0x1062, 0x106e, 0x107c,
- 0x1095, 0x10ba, 0x10d3, 0x10ea, 0x10f4, 0x1106, 0x1122, 0x114f,
- 0x1155, 0x1185, 0x118d, 0x119b, 0x11af, 0x11bd, 0x11d4, 0x11ec,
- 0x11f6, 0x1200, 0x120c, 0x122e, 0x123a, 0x1246, 0x1256, 0x1264,
- 0x1270, 0x1292, 0x12ab, 0x12b9, 0x12cd, 0x12db, 0x1308, 0x131a,
- 0x134e, 0x1378, 0x1386, 0x1394, 0x13b2, 0x13bc, 0x13c8, 0x13d0,
- // Entry 100 - 13F
- 0x13de, 0x13f9, 0x1405, 0x1415, 0x1434, 0x143c, 0x1448, 0x1465,
- 0x1482, 0x1490, 0x14a9, 0x14c8, 0x14e1, 0x14fc, 0x1519, 0x1532,
- 0x1540, 0x155b, 0x1574, 0x1589, 0x15a0, 0x15c4, 0x15df, 0x15f5,
- 0x1607, 0x162e, 0x1640, 0x1648, 0x1661, 0x1676, 0x1682, 0x169b,
- 0x16b6, 0x16cf, 0x16ec,
- },
- },
- { // vai
- "ꕉꖆꕟꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻꕉꔱꕭꔕꔻꕚꘋꕉꘋꔳꖶꕎ ꗪ ꕑꖜꕜꕉꕄꕞꕉꔷꕑꕇꕩꕉꕆꕯꘉꕜ ꖨꕮꕊ ꕉꘋꔳꔷꕉꖐꕞꕉꘀꘋꔳꕯꕶꕱ ꕢꕹꕎꖺꔻ" +
- "ꖤꕎꖺꖬꖤꔃꔷꕩꕉꖩꕑꕉꕤꕑꔤꕧꘋꕷꔻꕇꕰ ꗪ ꗥꕤꖑꔲꕯꕑꔆꖁꔻꕑꕅꕞꗵꔼꗩꕀꗚꘋꕷꕃꕯ ꕘꖇꗂꔠꔸꕩꕑꗸꘋꖜꖩꔺꗩꕇꘋꗩꖷꕜꖜꖩ" +
- "ꘉꔧꕷꔷꔲꕩꖜꕟꔘꔀꕑꕌꕮꔻꖜꕚꘋꕷꖬꕎꕯꗩꕞꖩꔻꔆꔷꔘꕪꕯꕜꖏꖐ ꗵꗞꖴꕟꔎ ꕸꖃꔀꕉꔱꔸꕪ ꗳ ꗳ ꕸꖃꔀꖏꖐꖬꔃꕤ ꖨꕮꕊꖏꔳ" +
- " ꕾꕎꖏꕃ ꔳꘋꗣꔚꔷꕪꔈꖩꘋꕦꔤꕯꗛꗏꔭꕩꖏꔻꕚ ꔸꕪꕃꖳꕑꔞꔪ ꗲꔵ ꔳꘋꗣꕢꗡꖛꗐꔻꗿꕃ ꕸꖃꔀꕧꕮꔧꕀꖜꔳꕜꕇꕮꕃꖁꕆꕇꕪꖁꕆꕇ" +
- "ꕪꘋ ꕸꕱꔀꕉꔷꔠꔸꕩꗡꖴꔃꗍꗡꔻꕿꕇꕰꕆꔖꕞꔀꔸꔳꕟꕐꘊꔧꔤꔳꖎꔪꕩꔱꘋ ꖨꕮꕊꔱꔤꕀꕘꔷꕃ ꖨꕮ ꔳꘋꗣꕆꖏꕇꔻꕩꖢꕟꘋꔻꕭꕷꘋ" +
- "ꖕꕯꔤꗳꖶꕟꕯꕜꗘꖺꕀꕩꗱꘋꔻ ꖶꕎꕯꕭꕌꕯꕀꖜꕟꕚꕧꕓ ꖴꕎ ꖨꕮꕊꕭꔭꕩꕅꔤꕇꖶꕎꔐꖨꔅꖦꕰꕊ ꗳ ꕅꔤꕇꗥꗷꘋꖶꕎꔎꕮꕞꖶꕎꕆ" +
- "ꕅꔤꕇ ꔫꕢꕴꖶꕩꕯꖽꖫꕟꖏꔓꔻꕩꕌꔤꔳꖽꘋꕭꔓꔤꖆꕇꔻꕩꕉꔓ ꖨꕮꕊꕑꕇꔻꕞꔤꕞꔤꔺꕩꔛꔟꔻ ꔤꔺꕩ ꗛꔤꘂ ꕗꕴꔀ ꕮꔤꕟꕃꔤꕟ" +
- "ꘋꕉꔤꔻ ꖨꕮꕊꔤꕚꔷꕧꕮꔧꕪꗘꖺꗵꘋꔛꗨꗢꔞꕰꕃꕅꔻꕚꘋꕪꕹꔵꕩꕃꔸꕑꔳꖏꕹꖄꔻꔻꘋ ꕃꔳꔻ ꗪ ꔕꔲꔻꖏꔸꕩ ꗛꔤ ꕪꘋꗒꖏꔸꕩ" +
- " ꗛꔤ ꔒꘋꗣ ꗏꖴꔃꔳꔞꔀꕮꘋ ꔳꘋꗣꕪꕤꔻꕚꘋꕞꕴꔻꔒꕑꗟꘋꔻꘋ ꖨꔻꕩꔷꗿꘋꔻꗳꘋꖬꔸ ꕞꘋꕪꕞꔤꔫꕩꔷꖇꕿꔷꖤꔃꕇꕰꗏꔻꘋꗂꖺꕞ" +
- "ꔳꔲꕩꔒꔫꕩꗞꕟꖏꗞꕯꖏꖒꔷꖁꕙꕮꕜꕭꔻꕪꕮꕊꕣ ꔳꘋꗣꕮꔖꖁꕇꕰꕮꔷꕆꕩꘋꕮꗞꖐꔷꕩꗛꔤ ꕪꘋꗒ ꕮꔸꕩꕯ ꔳꘋꗣꕮꔳꕇꕃꗞꔓꔎꕇ" +
- "ꕰꗞꘋꔖꕟꔳꕮꕊꕚꗞꔓꗔꕮꔷꕜꔍꕮꕞꕌꔨꘈꔻꖏꕮꔒꔻꕩꕹꕤꔭꕃꕯꕆꔫꕩꕪꔷꖁꕇꕰ ꕯꕮꕊꕯꔤꕧꗟꖺꗉ ꔳꘋꗣꕯꔤꕀꔸꕩꕇꕪꕟꖶꕎꘉꕜ" +
- " ꖨꕮꕊꗟꖺꔃꕇꕐꔷꖆꖩꖸꔃꔤꔽꔤ ꖨꕮ ꕯꕮꕊꕱꕮꘋꕐꕯꕮꗨꗡꖩꗱꘋꔻ ꕶꔷꕇꔻꕩꕐꖛꕎ ꕅꔤꕇ ꕯꕮꕊꔱꔒꔪꘋꕐꕃꔻꕚꘋꕶꗷꘋꔻꘋ " +
- "ꔪꘂ ꗪ ꕆꔞꗏꘋꔪꔳꕪꕆꔪꖳꕿ ꔸꖏꕐꔒꔻꔳꕯ ꔎꔒ ꕀꔤ ꗛꔤ ꕞ ꗱ ꗪ ꕭꕌꕤꕶꕿꕃꔤ ꕸꖃꔀꕐꖃꕐꕟꗝꔀꕪꕚꕌꔓꗠꖻꖄꕆꕇ" +
- "ꕰꗐꖺꔻꕩꕟꖙꕡꕞꕌꖝ ꕸꖃꔀꖬꕞꔤꕮꕊꕯ ꔳꘋꗣꔖꗼꔷꖬꗵꘋꖬꔨꗵꘋꔻꕬꕶꕱꔻꘋ ꗥꔷꕯꔻꖃꔍꕇꕰꔻꖃꕙꕃꕩꔋꕩ ꕒꕌꖺ ꕸꖃꔀꕮ" +
- "ꔸꖆ ꕢꘋꔻꕇꕭꕌꖇꕮꔷꕩꖬꔸꕯꔈꕢꕴ ꕿꔈ ꗪ ꕉ ꕮꔧ ꕗꕴꔀꗡꗷ ꕢꔍꗍꖺꔻꕩꘋꖬꕎꔽ ꖨꕮꕊꗋꖺꕃꔻ ꗪ ꕪꔤꖏꔻ ꔳꘋꗣꕦ" +
- "ꔵꕿꖑꕚꔤ ꖨꕮꕊꕚꕀꕃꔻꕚꘋꕿꔞꖃꔎꔒ ꗃ ꔳꗞꖻꗋꖺꕃꕮꕇꔻꕚꘋꖤꕇꔻꕩꗋꕬꗋꖺꕃꖤꔸꔕꕜ ꗪ ꕿꔆꖑꕚꖣꖨꕚꔤꕎꘋꕚꘋꕤꕇꕰꖳ" +
- "ꖴꔓꘋꖳꕭꕡꕶꕱꖳꔓꗝꔀꖳꗩꕃꔻꕚꘋꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸꕙꔳꕪꘋ ꕸꖃꔀꔛꔟꔻ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꕶꕱ ꗩꗡ ꗏ " +
- "ꖷꖬ ꔳꘋꗣꗲꕇꖮꔃꕞꕙꖸꕎꖤꕎꔷꔻ ꗪ ꖢꖤꕯꕢꕹꖙꕉꔝꘈꘋꕮꗚꔎꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀꕤꔭꕩꔽꕓꖜꔃ",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0009, 0x002c, 0x0041, 0x005e, 0x0067, 0x0076,
- 0x007f, 0x009c, 0x00a5, 0x00a5, 0x00b4, 0x00c4, 0x00d0, 0x00e2,
- 0x00eb, 0x00eb, 0x00fd, 0x011d, 0x0129, 0x0138, 0x0144, 0x0154,
- 0x0160, 0x0169, 0x0172, 0x017b, 0x017b, 0x0184, 0x0190, 0x019c,
- 0x019c, 0x01a8, 0x01b4, 0x01bd, 0x01bd, 0x01c9, 0x01d5, 0x01de,
- 0x01e7, 0x01e7, 0x0207, 0x0225, 0x022b, 0x023e, 0x024b, 0x025b,
- 0x0261, 0x026d, 0x0276, 0x0282, 0x0282, 0x0292, 0x029b, 0x02b2,
- 0x02b2, 0x02b2, 0x02c1, 0x02d1, 0x02da, 0x02da, 0x02e3, 0x02ef,
- // Entry 40 - 7F
- 0x02fb, 0x0314, 0x0323, 0x0323, 0x032f, 0x033e, 0x0347, 0x0347,
- 0x0353, 0x035c, 0x036b, 0x036b, 0x037b, 0x0384, 0x039e, 0x03ad,
- 0x03ad, 0x03b9, 0x03c2, 0x03ce, 0x03da, 0x03e6, 0x03f9, 0x03f9,
- 0x0402, 0x040e, 0x0425, 0x042e, 0x0437, 0x0446, 0x045d, 0x0466,
- 0x0466, 0x0475, 0x047e, 0x0491, 0x049a, 0x049a, 0x049a, 0x04a3,
- 0x04af, 0x04b8, 0x04c4, 0x04c4, 0x04d3, 0x04e3, 0x04f5, 0x04f5,
- 0x04fe, 0x0529, 0x0532, 0x053b, 0x054e, 0x0557, 0x0557, 0x0563,
- 0x056f, 0x0578, 0x057e, 0x058d, 0x0599, 0x05a5, 0x05b1, 0x05cf,
- // Entry 80 - BF
- 0x05e9, 0x0607, 0x0610, 0x0626, 0x0635, 0x063e, 0x064a, 0x065a,
- 0x066c, 0x067c, 0x0688, 0x0691, 0x06a0, 0x06af, 0x06bb, 0x06c4,
- 0x06cd, 0x06d6, 0x06e2, 0x06e2, 0x06e2, 0x06f1, 0x0704, 0x0713,
- 0x0719, 0x0725, 0x0731, 0x0731, 0x0758, 0x0764, 0x0773, 0x0782,
- 0x078b, 0x0794, 0x07a0, 0x07ac, 0x07b5, 0x07c1, 0x07cd, 0x07d9,
- 0x07f2, 0x07fb, 0x080e, 0x081d, 0x082c, 0x083c, 0x0845, 0x084e,
- 0x0854, 0x085d, 0x0874, 0x087d, 0x0886, 0x088f, 0x08a8, 0x08c5,
- 0x08d1, 0x08e0, 0x08e9, 0x0907, 0x0913, 0x0923, 0x095d, 0x0973,
- // Entry C0 - FF
- 0x0979, 0x0985, 0x098e, 0x098e, 0x0997, 0x09a3, 0x09a3, 0x09af,
- 0x09b8, 0x09cb, 0x09e7, 0x09f0, 0x09f9, 0x0a05, 0x0a11, 0x0a21,
- 0x0a30, 0x0a30, 0x0a3f, 0x0a59, 0x0a69, 0x0a75, 0x0a81, 0x0a8d,
- 0x0a8d, 0x0ab3, 0x0ac6, 0x0ac6, 0x0acf, 0x0ae2, 0x0ae2, 0x0b09,
- 0x0b0f, 0x0b0f, 0x0b15, 0x0b25, 0x0b37, 0x0b40, 0x0b54, 0x0b6c,
- 0x0b78, 0x0b7e, 0x0b87, 0x0ba1, 0x0baa, 0x0bb6, 0x0bc5, 0x0bd1,
- 0x0bda, 0x0bda, 0x0be0, 0x0bec, 0x0bfe, 0x0bfe, 0x0c29, 0x0c3f,
- 0x0c64, 0x0c86, 0x0c95, 0x0ca1, 0x0cb8, 0x0cc4, 0x0cc4, 0x0ccd,
- // Entry 100 - 13F
- 0x0cd6, 0x0d01, 0x0d0a, 0x0d16,
- },
- },
- { // vai-Latn
- "AŋdóraYunaitɛ Arabhi ƐmireAfigándesitaŋAŋtígwa ƁahabhudaAŋgílaAbhaniyaAm" +
- "éniyaNidɔlɛŋ AŋtiliAŋgólaAjɛŋtínaPoo SambowaƆ́situwaƆsituwéeliyaAru" +
- "bhaAzabhaijaŋBhɔsiniyaBhabhedoBhangiladɛ̀shiBhɛgiyɔŋBhokina FásoBhɔg" +
- "eriyaBharɛŋBhurundiBhɛniBhɛmudaBhurunɛĩBholiviyaBhurazeliBahámasiBhu" +
- "taŋBhosuwanaBhɛlarusiBhelizKánádaAvorekooÁfíríka Lumaã Tɛ BoloeKóngo" +
- "Suweza LumaãKódivówaKóki TiŋŋɛChéliKameruŋCháínaKɔlɔmbiyaKósíta Ríko" +
- "KiyubhaKepi Vɛdi TiŋŋɛSaɛpurɔChɛki BoloeJamáĩJibhutiDanimahaDomíiník" +
- "aDomíiníka ƁoloeAgiriyaƐ́kúwédɔƐsitóninyaMísélaƐriteraPanyɛĩÍtiyópiy" +
- "aFiŋlɛŋFíjiFáháki Luma TiŋŋɛMikonisiyaFɛŋsiGabhɔŋYunaitɛ KíŋdɔŋGurin" +
- "édaJɔɔjiyaFɛŋsi GiwanaGanaJibhurataJamba Kuwa LumaãGambiyaGiniGuwad" +
- "elupeDúúnyá Tɛ GiiniHɛlɛŋGuwatɛmalaGuwamiGini BhisawoGuyanaHɔnduraKo" +
- "resiyaHáitiHɔ́ngareÍndonisiyaÁre LumaãBhanísiláilaÍndiyaJengéesi Gba" +
- "woe Índiya Kɔiyɛ LɔIrakiIraŋÁisi LumaãÍtaliJamaikaJɔɔdaŋJapaŋKényaKi" +
- "gisitaŋKaŋbhodiyaKiribhatiKomorosiSiŋ Kisi ɓɛ́ NevisiKoriya Kɔi Kaŋn" +
- "dɔKoriya Kɔi Leŋŋɛ LɔKuwetiKeemaŋ TiŋŋɛKazasitaŋLawosiLebhanɔSiŋ Lus" +
- "iyaSuri LaŋkaLaibhiyaLisótoLituweninyaLusimbɔLativiyaLebhiyaMɔrokoMɔ" +
- "nakoMɔlidovaMadagasitaMasha TiŋŋɛMasedoninyaMaliMiyamahaMɔngoliyaKɔi" +
- " Kaŋndɔ Mariyana TiŋŋɛMatinikiMɔretaninyaMɔseratiMalitaMɔreshɔMalida" +
- "viMalawiMɛsíkoMalesiyaMozambikiNamibiyaKalidoninya NámaáNaĩjaNɔfɔ Ti" +
- "ŋŋɛNaĩjiriyaNikaraguwaNidɔlɛŋNɔɔweNepaNoruNiweZilɛŋ NámaáOmaŋPanama" +
- "PɛruFɛŋsi PolinísiyaPapuwa Gini NámaáFélepiŋPakisitaŋPólɛŋSiŋ Piiyɛ " +
- "ɓɛ́ MikelɔŋPitikɛŋPiyuto RikoPalesitininya Tele Jii Kɔiyɛ lá hĩ Gaz" +
- "aPotokíiPaloParagɔeKatahaRenyɔɔ̃RomininyaRɔshiyaRawundaLahabuSulaima" +
- "ãna TiŋŋɛSeshɛɛSudɛŋSuwidɛŋSíingapooSiŋ HɛlinaSuloveninyaSulovakiya" +
- "Gbeya BahawɔSaŋ MarindoSinigahaSomaliyaSurinambeSawo Tombe ɓɛ a Gbaw" +
- "oeƐlɛ SávádɔSíyaŋSuwazi LumaãTukisi ɓɛ̀ Kaikóosi TiŋŋɛChádiTogoTai L" +
- "umaãTajikisitaŋTokeloTele Ɓɔ́ Timɔɔ̃TukimɛnisitaŋTunisiyaTɔngaTɔ́ɔ́k" +
- "iTurindeda ɓɛ́ TobhegoTuváluTaiwaŋTaŋzaninyaYukuréŋYugandaPooYuwegɔw" +
- "eYubhɛkisitaŋVatikaŋ ƁoloeSiŋ ViŋsiVɛnɛzuwelaJengéesi Bhɛɛ Lɔ Musu T" +
- "iŋŋɛPoo Bhɛɛ lɔ Musu TiŋŋɛViyanamiVanuwátuWalísiSamowaYemɛniMavoteAf" +
- "irika Kɔi Leŋŋɛ LɔZambiyaZimbabhuwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x001e, 0x002d, 0x0041, 0x0049, 0x0051,
- 0x0059, 0x006b, 0x0073, 0x0073, 0x007e, 0x0089, 0x0093, 0x00a1,
- 0x00a7, 0x00a7, 0x00b2, 0x00bc, 0x00c4, 0x00d4, 0x00df, 0x00ec,
- 0x00f6, 0x00fe, 0x0106, 0x010c, 0x010c, 0x0114, 0x011e, 0x0127,
- 0x0127, 0x0130, 0x0139, 0x0140, 0x0140, 0x0149, 0x0153, 0x0159,
- 0x0161, 0x0161, 0x0169, 0x0184, 0x018a, 0x0197, 0x01a1, 0x01af,
- 0x01b5, 0x01bd, 0x01c5, 0x01d0, 0x01d0, 0x01de, 0x01e5, 0x01f8,
- 0x01f8, 0x01f8, 0x0201, 0x020d, 0x0214, 0x0214, 0x021b, 0x0223,
- // Entry 40 - 7F
- 0x022e, 0x0240, 0x0247, 0x0247, 0x0254, 0x0260, 0x0268, 0x0268,
- 0x0270, 0x0278, 0x0283, 0x0283, 0x028c, 0x0291, 0x02a7, 0x02b1,
- 0x02b1, 0x02b8, 0x02c0, 0x02d3, 0x02dc, 0x02e5, 0x02f3, 0x02f3,
- 0x02f7, 0x0300, 0x0311, 0x0318, 0x031c, 0x0326, 0x0339, 0x0341,
- 0x0341, 0x034c, 0x0352, 0x035e, 0x0364, 0x0364, 0x0364, 0x036c,
- 0x0374, 0x037a, 0x0384, 0x0384, 0x038f, 0x039a, 0x03a8, 0x03a8,
- 0x03af, 0x03d3, 0x03d8, 0x03dd, 0x03e9, 0x03ef, 0x03ef, 0x03f6,
- 0x03ff, 0x0405, 0x040b, 0x0415, 0x0420, 0x0429, 0x0431, 0x0448,
- // Entry 80 - BF
- 0x045c, 0x0474, 0x047a, 0x048a, 0x0494, 0x049a, 0x04a2, 0x04ad,
- 0x04ad, 0x04b8, 0x04c0, 0x04c7, 0x04d2, 0x04da, 0x04e2, 0x04e9,
- 0x04f0, 0x04f7, 0x0500, 0x0500, 0x0500, 0x050a, 0x0518, 0x0523,
- 0x0527, 0x052f, 0x0539, 0x0539, 0x0558, 0x0560, 0x056c, 0x0575,
- 0x057b, 0x0584, 0x058c, 0x0592, 0x059a, 0x05a2, 0x05ab, 0x05b3,
- 0x05c6, 0x05cc, 0x05db, 0x05e5, 0x05ef, 0x05f9, 0x0600, 0x0604,
- 0x0608, 0x060c, 0x061b, 0x0620, 0x0626, 0x062b, 0x063e, 0x0651,
- 0x065a, 0x0664, 0x066c, 0x0688, 0x0691, 0x069c, 0x06c7, 0x06cf,
- // Entry C0 - FF
- 0x06d3, 0x06db, 0x06e1, 0x06e1, 0x06eb, 0x06f4, 0x06f4, 0x06fc,
- 0x0703, 0x0709, 0x071d, 0x0725, 0x072c, 0x0735, 0x073f, 0x074b,
- 0x0756, 0x0756, 0x0760, 0x076d, 0x0779, 0x0781, 0x0789, 0x0792,
- 0x0792, 0x07aa, 0x07b9, 0x07b9, 0x07c0, 0x07cd, 0x07cd, 0x07ed,
- 0x07f3, 0x07f3, 0x07f7, 0x0801, 0x080d, 0x0813, 0x0828, 0x0837,
- 0x083f, 0x0845, 0x0850, 0x0868, 0x086f, 0x0876, 0x0881, 0x088a,
- 0x0891, 0x0891, 0x0894, 0x089d, 0x08ab, 0x08ba, 0x08c5, 0x08d1,
- 0x08f3, 0x090f, 0x0917, 0x0920, 0x0927, 0x092d, 0x092d, 0x0934,
- // Entry 100 - 13F
- 0x093a, 0x0953, 0x095a, 0x0964,
- },
- },
- { // vi
- viRegionStr,
- viRegionIdx,
- },
- { // vun
- "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
- "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
- "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
- "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
- "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
- "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
- "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
- "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
- "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
- "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
- "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
- "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
- "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
- "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
- "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
- "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
- "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
- " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
- "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
- "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
- "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
- "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
- "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
- "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
- "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
- "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
- "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
- "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
- "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
- "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
- "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
- 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
- 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
- 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
- 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
- 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
- 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
- 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
- // Entry 40 - 7F
- 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
- 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
- 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
- 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
- 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
- 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
- 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
- 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
- // Entry 80 - BF
- 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
- 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
- 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
- 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
- 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
- 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
- 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
- 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
- // Entry C0 - FF
- 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
- 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
- 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
- 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
- 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
- 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
- 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
- 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
- // Entry 100 - 13F
- 0x0813, 0x0820, 0x0826, 0x082e,
- },
- },
- { // wae
- "HimmelfártsinslaAndorraVereinigti Arabiše EmiratAfganištanAntigua und Ba" +
- "rbudaAnguillaAlbanieArmenieHoländiši AntilläAngolaAntarktisArgentini" +
- "eAmerikaniš SamoaÖštričAustralieArubaAlandinsläAserbaidšanBosnie und" +
- " HerzegovinaBarbadosBangladešBelgieBurkina FasoBulgarieBačrainBurund" +
- "iBeninSt. Bartholomäus-InslaBermudaBruneiBoliwieBrasilieBahamasBhuta" +
- "nBouvetinslaBotswanaWísrusslandBelizeKanadaKokosinsläKongo-KinshasaZ" +
- "entralafrikaniši RebublikKongo BrazzavilleSchwizElfebeiküštaCookinsl" +
- "äTšileKamerunChinaKolumbieClipperton InslaCosta RicaKubaKap VerdeWi" +
- "enäčtsinsläZypreTšečieTitšlandDiego GarciaDšibutiDänemarkDoninicaDom" +
- "inikaniši RebublikAlgerieCeuta und MelillaEcuadorEštlandEgypteWeštsa" +
- "haraEritreaSchpanieEthiopieEuropäiši UnioFinnlandFidšiFalklandinsläM" +
- "ikronesieFäröeFrankričGabonEnglandGrenadaGeorgieFranzösiš GuianaGuer" +
- "nseyGanaGibraltarGrönlandGambiaGineaGuadeloupeEquatorialgineaGričela" +
- "ndSüdgeorgie und d’südliče SenwičinsläGuatemalaGuamGinea BissauGuyan" +
- "aSonderverwaltigszona HongkongHeard- und McDonald-InsläHondurasKroat" +
- "ieHaitiUngareKanariše InsläIndonesieIrlandIsraelIsle of ManIndieBrit" +
- "išes Territorium em indiše OzeanIrakIranIslandItalieJerseyJamaikaJor" +
- "danieJapanKenyaKirgištanKambodšaKiribatiKomoreSt. Kitts und NevisNor" +
- "dkoreaSüdkoreaKuweitKaimaninsläKasačstanLaosLibanonSt. LuciaLiečtešt" +
- "eiSri LankaLiberiaLesothoLitaueLuxeburgLettlandLübieMarokoMonagoMold" +
- "auMontenegroSt. MartinMadagaskarMaršalinsläMazedonieMaliBurmaMongole" +
- "iSonderverwaltigszona MakauNördliči MarianeMartiniqueMauretanieMonse" +
- "rratMaltaMauritiusMalediweMalawiMexikoMalaysiaMosambikNamibiaNiwkale" +
- "donieNigerNorfolkinslaNigeriaNicaraguaHolandNorwägeNepalNauruNiueNiw" +
- "sélandOmanPanamaPeruFranzösiš PolinesiePapua NiwgineaPhilippinePakiš" +
- "tanPoleSt. Pierre und MiquelonPitcairnPuerto RicoPaleštinaPortugalPa" +
- "lauParaguaiKatarÜssers OzeanieRéunionRumänieSerbieRusslandRuandaSaud" +
- "i ArabieSalomoneSečelleSudanSchwedeSingapurSt. HelenaSlowenieSvalbar" +
- "d und Jan MayenSlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameS" +
- "ão Tomé and PríncipeEl SalvadorSürieSwasilandTristan da CunhaTurks-" +
- " und CaicosinsläTšadFranzösiši Süd- und AntarktisgebietTogoThailandT" +
- "adšikistanTokelauOšttimorTurkmeništanTunesieTongaTürkeiTrinidad und " +
- "TobagoTuvaluTaiwanTansaniaUkraineUgandaAmerikaniš OzeanieAmerikaUrug" +
- "auyUsbekištanVatikanSt. Vincent und d’GrenadineVenezuelaBritiši Jung" +
- "fröiwinsläAmerikaniši JungfröiwinsläVietnamVanuatuWallis und FutunaS" +
- "amoaJémeMoyetteSüdafrikaSambiaSimbabweUnbekannti RegioWäldAfrikaNord" +
- "amerikaSüdamerikaOzeanieWeštafrikaZentralamerikaOštafrikaNordafrikaM" +
- "ittelafrikaSüdličs AfrikaAmerikaniš KontinäntNördličs AmerikaKaribik" +
- "OštasieSüdasieSüdoštasieSüdeuropaAuštralie und NiwsélandMelanesieMik" +
- "ronesišes InselgebietPolinesieAsieZentralasieWeštasieEuropaOšteuropa" +
- "NordeuropaWešteuropaLatíamerika",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0011, 0x0018, 0x0032, 0x003d, 0x0050, 0x0058, 0x005f,
- 0x0066, 0x007a, 0x0080, 0x0089, 0x0093, 0x00a4, 0x00ad, 0x00b6,
- 0x00bb, 0x00c6, 0x00d2, 0x00e8, 0x00f0, 0x00fa, 0x0100, 0x010c,
- 0x0114, 0x011c, 0x0123, 0x0128, 0x013f, 0x0146, 0x014c, 0x0153,
- 0x0153, 0x015b, 0x0162, 0x0168, 0x0173, 0x017b, 0x0187, 0x018d,
- 0x0193, 0x019e, 0x01ac, 0x01c7, 0x01d8, 0x01de, 0x01ec, 0x01f6,
- 0x01fc, 0x0203, 0x0208, 0x0210, 0x0220, 0x022a, 0x022e, 0x0237,
- 0x0237, 0x0247, 0x024c, 0x0254, 0x025d, 0x0269, 0x0271, 0x027a,
- // Entry 40 - 7F
- 0x0282, 0x0298, 0x029f, 0x02b0, 0x02b7, 0x02bf, 0x02c5, 0x02d0,
- 0x02d7, 0x02df, 0x02e7, 0x02f7, 0x02ff, 0x0305, 0x0313, 0x031d,
- 0x0324, 0x032d, 0x0332, 0x0339, 0x0340, 0x0347, 0x0359, 0x0361,
- 0x0365, 0x036e, 0x0377, 0x037d, 0x0382, 0x038c, 0x039b, 0x03a5,
- 0x03d0, 0x03d9, 0x03dd, 0x03e9, 0x03ef, 0x040c, 0x0426, 0x042e,
- 0x0435, 0x043a, 0x0440, 0x0450, 0x0459, 0x045f, 0x0465, 0x0470,
- 0x0475, 0x049b, 0x049f, 0x04a3, 0x04a9, 0x04af, 0x04b5, 0x04bc,
- 0x04c4, 0x04c9, 0x04ce, 0x04d8, 0x04e1, 0x04e9, 0x04ef, 0x0502,
- // Entry 80 - BF
- 0x050b, 0x0514, 0x051a, 0x0526, 0x0530, 0x0534, 0x053b, 0x0544,
- 0x0550, 0x0559, 0x0560, 0x0567, 0x056d, 0x0575, 0x057d, 0x0583,
- 0x0589, 0x058f, 0x0595, 0x059f, 0x05a9, 0x05b3, 0x05c0, 0x05c9,
- 0x05cd, 0x05d2, 0x05da, 0x05f4, 0x0606, 0x0610, 0x061a, 0x0623,
- 0x0628, 0x0631, 0x0639, 0x063f, 0x0645, 0x064d, 0x0655, 0x065c,
- 0x0668, 0x066d, 0x0679, 0x0680, 0x0689, 0x068f, 0x0697, 0x069c,
- 0x06a1, 0x06a5, 0x06af, 0x06b3, 0x06b9, 0x06bd, 0x06d2, 0x06e0,
- 0x06ea, 0x06f3, 0x06f7, 0x070e, 0x0716, 0x0721, 0x072b, 0x0733,
- // Entry C0 - FF
- 0x0738, 0x0740, 0x0745, 0x0754, 0x075c, 0x0764, 0x076a, 0x0772,
- 0x0778, 0x0784, 0x078c, 0x0794, 0x0799, 0x07a0, 0x07a8, 0x07b2,
- 0x07ba, 0x07d0, 0x07d8, 0x07e4, 0x07ee, 0x07f5, 0x07fc, 0x0804,
- 0x0804, 0x081c, 0x0827, 0x0827, 0x082d, 0x0836, 0x0846, 0x085d,
- 0x0862, 0x0888, 0x088c, 0x0894, 0x08a0, 0x08a7, 0x08b0, 0x08bd,
- 0x08c4, 0x08c9, 0x08d0, 0x08e3, 0x08e9, 0x08ef, 0x08f7, 0x08fe,
- 0x0904, 0x0917, 0x091e, 0x0925, 0x0930, 0x0937, 0x0954, 0x095d,
- 0x0976, 0x0993, 0x099a, 0x09a1, 0x09b2, 0x09b7, 0x09b7, 0x09bc,
- // Entry 100 - 13F
- 0x09c3, 0x09cd, 0x09d3, 0x09db, 0x09eb, 0x09f0, 0x09f6, 0x0a01,
- 0x0a0c, 0x0a13, 0x0a1e, 0x0a2c, 0x0a36, 0x0a40, 0x0a4c, 0x0a5c,
- 0x0a72, 0x0a84, 0x0a8b, 0x0a93, 0x0a9b, 0x0aa7, 0x0ab1, 0x0aca,
- 0x0ad3, 0x0aec, 0x0af5, 0x0af9, 0x0b04, 0x0b0d, 0x0b13, 0x0b1d,
- 0x0b27, 0x0b32, 0x0b3e,
- },
- },
- { // xog
- "AndoraEmireetiAfaganisitaniAntigwa ni BarabudaAngwilaAlibaniyaArameniyaE" +
- "bizinga bya Antile by’abaHolandiAngolaArigentinaSamowa omumerikaAwus" +
- "ituriyaAwusitureliyaArubaAzerebayijaaniBoziniya HezegovinaBarabadosi" +
- "BangaladesiBubirigiBurukina FasoBulugariyaBaareeniBurundiBeniniBerem" +
- "udaBurunayiBoliviyaBuraziiriBahamasiButaaniBotiswanaBelarusiBelizeKa" +
- "nadaKongo - ZayireLipabulika ya SenturafirikiKongoSwitizirandiKote D" +
- "ivwaEbizinga bya KkukiCileKameruuniCayinaKolombyaKosita RikaCubaEbiz" +
- "inga bya Kepu VerediSipuriyaLipabulika ya CeekaBudaakiJjibutiDenimaa" +
- "kaDominikaLipabulika ya DominikaAligeryaEkwadoEsitoniyaMisiriEriture" +
- "yaSipeyiniEsyopyaFinilandiFijiEbiizinga bya FalikalandiMikuronezyaBu" +
- "falansaGaboniBungerezaGurenadaGyogyaGuyana enfalansaGanaGiburalitaGu" +
- "renelandiGambyaGiniGwadalupeGayana yaku ekwetaBuyonaaniGwatemalaGwam" +
- "uGini-BisawuGayanaHundurasiKurowesyaHayitiHangareYindonezyaAyalandiY" +
- "isirayeriBuyindiEbizinga bya CagoYiraakaYiraaniAyisirandiYitaleJamay" +
- "ikaYorodaniJapaniKenyaKirigizisitaaniKambodyaKiribatiEbizinga bya Ko" +
- "moroSenti Kitisi ne NevisiKoreya eya mumambukaKoreya eya mumaserenge" +
- "taKuwetiEbizinga bya KayimaaniKazakisitaaniLawosiLebanoniSenti Luciy" +
- "aLicitensitayiniSirilankaLiberyaLesosoLisuwenyaLukisembaagaLativyaLi" +
- "byaMorokoMonakoMolodovaMadagasikaBizinga bya MarisoMasedoniyaMaliMya" +
- "nimaMongoliyaBizinga bya Mariyana ebyamumambukaMaritiniikiMawuliteny" +
- "aMonteseraatiMalitaMawulisyasiEbizinga bya MalidiveMalawiMekisikoMal" +
- "ezyaMozambiikiNamibiyaKaledonya mupyaNijeKizinga ky’eNorofokoNayijer" +
- "yaNikaraguwaHolandiNoweNepaloNawuruNiyuweNiyuziirandiOmaaniPanamaPer" +
- "uPolinesiya enfalansaPapwa NyuginiEbizinga bya FiripinoPakisitaaniPo" +
- "landiSenti Piyere ni MikeloniPitikeeniPotorikoPalesitayini ni GazaPo" +
- "tugaaliPalawuParagwayiKataaLeyunyoniLomaniyaLasaRwandaSawudarebyaEbi" +
- "zanga bya SolomooniSesereSudaaniSwideniSingapowaSenti HerenaSiroveny" +
- "aSirovakyaSiyeralewoneSanimarinoSenegaaloSomaliyaSurinaamuSanitome n" +
- "i PurincipeEl salivadoSiriyaSwazirandiEbizinga bya Taaka ni Kayikosi" +
- "CaadiTogoTayirandiTajikisitaaniTokelawuTimowaTakimenesitaaniTunisyaT" +
- "ongaTtakeTurindaadi ni TobagoTuvaluTayiwaniYukurayineYugandaAmerikaW" +
- "urugwayiWuzibekisitaaniVatikaaniSenti Vinsenti ni GurendadiiniVenzwe" +
- "raEbizinga bya Virigini ebitwalibwa BungerezaEbizinga bya Virigini e" +
- "by’AmerikaVyetinaamuVanawuwatuWalisi ni FutunaSamowaYemeniMayotteSaw" +
- "usafirikaZambyaZimbabwe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e,
- 0x0047, 0x006a, 0x0070, 0x0070, 0x007a, 0x008a, 0x0095, 0x00a2,
- 0x00a7, 0x00a7, 0x00b5, 0x00c8, 0x00d2, 0x00dd, 0x00e5, 0x00f2,
- 0x00fc, 0x0104, 0x010b, 0x0111, 0x0111, 0x0119, 0x0121, 0x0129,
- 0x0129, 0x0132, 0x013a, 0x0141, 0x0141, 0x014a, 0x0152, 0x0158,
- 0x015e, 0x015e, 0x016c, 0x0187, 0x018c, 0x0198, 0x01a2, 0x01b4,
- 0x01b8, 0x01c1, 0x01c7, 0x01cf, 0x01cf, 0x01da, 0x01de, 0x01f6,
- 0x01f6, 0x01f6, 0x01fe, 0x0211, 0x0218, 0x0218, 0x021f, 0x0228,
- // Entry 40 - 7F
- 0x0230, 0x0246, 0x024e, 0x024e, 0x0254, 0x025d, 0x0263, 0x0263,
- 0x026c, 0x0274, 0x027b, 0x027b, 0x0284, 0x0288, 0x02a1, 0x02ac,
- 0x02ac, 0x02b5, 0x02bb, 0x02c4, 0x02cc, 0x02d2, 0x02e2, 0x02e2,
- 0x02e6, 0x02f0, 0x02fb, 0x0301, 0x0305, 0x030e, 0x0320, 0x0329,
- 0x0329, 0x0332, 0x0337, 0x0342, 0x0348, 0x0348, 0x0348, 0x0351,
- 0x035a, 0x0360, 0x0367, 0x0367, 0x0371, 0x0379, 0x0383, 0x0383,
- 0x038a, 0x039b, 0x03a2, 0x03a9, 0x03b3, 0x03b9, 0x03b9, 0x03c1,
- 0x03c9, 0x03cf, 0x03d4, 0x03e3, 0x03eb, 0x03f3, 0x0406, 0x041c,
- // Entry 80 - BF
- 0x0430, 0x0448, 0x044e, 0x0464, 0x0471, 0x0477, 0x047f, 0x048b,
- 0x049a, 0x04a3, 0x04aa, 0x04b0, 0x04b9, 0x04c5, 0x04cc, 0x04d1,
- 0x04d7, 0x04dd, 0x04e5, 0x04e5, 0x04e5, 0x04ef, 0x0501, 0x050b,
- 0x050f, 0x0516, 0x051f, 0x051f, 0x0541, 0x054c, 0x0557, 0x0563,
- 0x0569, 0x0574, 0x0589, 0x058f, 0x0597, 0x059e, 0x05a8, 0x05b0,
- 0x05bf, 0x05c3, 0x05d9, 0x05e2, 0x05ec, 0x05f3, 0x05f7, 0x05fd,
- 0x0603, 0x0609, 0x0615, 0x061b, 0x0621, 0x0625, 0x0639, 0x0646,
- 0x065b, 0x0666, 0x066d, 0x0685, 0x068e, 0x0696, 0x06aa, 0x06b3,
- // Entry C0 - FF
- 0x06b9, 0x06c2, 0x06c7, 0x06c7, 0x06d0, 0x06d8, 0x06d8, 0x06dc,
- 0x06e2, 0x06ed, 0x0703, 0x0709, 0x0710, 0x0717, 0x0720, 0x072c,
- 0x0735, 0x0735, 0x073e, 0x074a, 0x0754, 0x075d, 0x0765, 0x076e,
- 0x076e, 0x0783, 0x078e, 0x078e, 0x0794, 0x079e, 0x079e, 0x07bc,
- 0x07c1, 0x07c1, 0x07c5, 0x07ce, 0x07db, 0x07e3, 0x07e9, 0x07f8,
- 0x07ff, 0x0804, 0x0809, 0x081d, 0x0823, 0x082b, 0x082b, 0x0835,
- 0x083c, 0x083c, 0x0843, 0x084c, 0x085b, 0x0864, 0x0882, 0x088a,
- 0x08b5, 0x08d8, 0x08e2, 0x08ec, 0x08fc, 0x0902, 0x0902, 0x0908,
- // Entry 100 - 13F
- 0x090f, 0x091b, 0x0921, 0x0929,
- },
- },
- { // yav
- "Aŋtúlaimiláat i paaláapAfkanistáŋAŋtíka na PalpútaAŋkílaAlpaníAlmaníaand" +
- "íiy u nitililáandAŋkúlaAlsaŋtínSámua u AmelíkaOtilísOtalalíAlúpaAsɛ" +
- "lpaisáŋPusiní-ɛlkofínaPalpatósPaŋkalatɛsPɛlsíikPulikínafásóPulukalíi" +
- "PalɛŋPúlúndíPenɛŋPɛlmútaPulunéyPolífiaPilesílPahámasPutaŋPosuánaPela" +
- "lúsPelíseKánátakitɔŋ kí kongóSantalafilíikKongósuwíisKótifualɛKúukeS" +
- "ilíKemelúnSíineKɔlɔ́mbíaKóstálíkakúpaKápfɛlsíplɛkitɔŋ kí cɛ́knsámans" +
- "íputítanemálktúmúnékekitɔŋ kí tumunikɛ́ŋAlselíekuatɛ́lɛstoniisípite" +
- "litéepanyáetiopífɛnlándfísimaluwínmikolonesífelensíkapɔ́ŋingilíískel" +
- "enáatsɔlsíikuyáan u felensíkanásílpalatáalkuluɛnlándkambíikiinékuate" +
- "lúupkinéekuatolialkilɛ́ɛkkuatemalákuamiɛkiinépisaókuyáanɔndúlasKolow" +
- "asíiayítiɔngilíɛndonesíililándísilayɛ́lɛ́ɛndKɔɔ́m kí ndián yi ngilís" +
- "ilákiláŋisláanditalísamayíiksɔltanísapɔ́ɔŋkéniakilikisistáŋKámbóseki" +
- "lipatíKɔmɔ́ɔlsɛ́ŋkilistɔ́f eniɛ́fkɔlé u muɛnɛ́kɔlé wu mbátkowéetKáyí" +
- "manɛkasaksitáŋlawóslipáŋsɛ́ŋtɛ́lusílístɛ́nsitáyinsilíláŋkalipéliales" +
- "otólitiyaníliksambúulletonílipíimalóokmonakómoltafímatakaskáalílmala" +
- "sáalmasetuánmalímiaŋmáalmongolíil maliyanɛ u muɛnɛ́maltiníikmolitaní" +
- "mɔŋsilámálɛ́tmolísmaletíifmalawímɛksíikmalesímosambíknamipínufɛ́l ka" +
- "letonínisɛ́ɛlil nɔ́lfɔ́lɔknisélianikalakánitililáandnɔlfɛ́ɛsnepáalna" +
- "wulúniyuwénufɛ́l seláandomáŋpanamápelúpolinesí u felensípapuasí nufɛ" +
- "́l kiinéfilipíinpakistáŋpɔlɔ́ɔnysɛ́ŋpiɛ́l e mikelɔ́ŋpitikɛ́ɛlínɛ́pó" +
- "lótolíkokitɔŋ ki palɛstíinpɔltukáalpalawúpalakúékatáalelewuniɔ́ŋulum" +
- "aníulusíuluándáalapísawutíitil salomɔ́ŋsesɛ́ɛlsutáaŋsuɛ́tsingapúulsɛ" +
- "́ŋtɛ́ elɛ́ɛnɛsilofenísilofakísieláleyɔ́ɔnsan malínosenekáalsomalísu" +
- "lináamsáwó tomé e pelensípesalfatɔ́ɔlsuasiláandtúluk na káyiikSáatto" +
- "kótayiláandtasikistáaŋtokelótimɔ́ɔl u nipálɛ́ntulukmenisitáaŋtunusít" +
- "ɔ́ŋkatulukíitilinitáat na tupákɔtufalútayiwáantaŋsaníukilɛ́ɛnukánda" +
- "amálíkaulukuéyusupekistáaŋfatikáaŋsɛ́ŋ fɛŋsáŋ elekelenatíinfenesuwel" +
- "áFilisíin ungilíspindisúlɛ́ pi amálíkafiɛtnáamfanuatúwalíis na futú" +
- "nasamowáyémɛnmayɔ́ɔtafilí mbátɛ́saambíisimbapuwé",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0008, 0x001b, 0x0027, 0x003b, 0x0043, 0x004a,
- 0x0052, 0x0068, 0x0070, 0x0070, 0x007a, 0x008b, 0x0092, 0x009a,
- 0x00a0, 0x00a0, 0x00ad, 0x00bf, 0x00c8, 0x00d4, 0x00dd, 0x00ec,
- 0x00f6, 0x00fd, 0x0107, 0x010e, 0x010e, 0x0117, 0x011f, 0x0127,
- 0x0127, 0x012f, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0154,
- 0x015c, 0x015c, 0x016e, 0x017c, 0x0182, 0x0189, 0x0194, 0x019a,
- 0x019f, 0x01a7, 0x01ad, 0x01ba, 0x01ba, 0x01c6, 0x01cb, 0x01d3,
- 0x01d3, 0x01d3, 0x01da, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0204,
- // Entry 40 - 7F
- 0x020f, 0x0228, 0x022f, 0x022f, 0x0239, 0x0240, 0x0247, 0x0247,
- 0x024e, 0x0254, 0x025b, 0x025b, 0x0264, 0x0269, 0x0271, 0x027c,
- 0x027c, 0x0284, 0x028d, 0x0297, 0x02a0, 0x02a8, 0x02ba, 0x02ba,
- 0x02bf, 0x02cc, 0x02d8, 0x02df, 0x02e5, 0x02ef, 0x02fe, 0x0308,
- 0x0308, 0x0312, 0x0319, 0x0325, 0x032c, 0x032c, 0x032c, 0x0335,
- 0x033f, 0x0345, 0x034d, 0x034d, 0x0357, 0x035f, 0x036b, 0x036b,
- 0x0373, 0x0391, 0x0396, 0x039c, 0x03a4, 0x03aa, 0x03aa, 0x03b3,
- 0x03bc, 0x03c7, 0x03cd, 0x03db, 0x03e4, 0x03ed, 0x03f8, 0x0413,
- // Entry 80 - BF
- 0x0425, 0x0434, 0x043b, 0x0446, 0x0452, 0x0458, 0x045f, 0x0470,
- 0x0482, 0x048e, 0x0496, 0x049d, 0x04a6, 0x04b1, 0x04b8, 0x04be,
- 0x04c5, 0x04cc, 0x04d4, 0x04d4, 0x04d4, 0x04e0, 0x04ec, 0x04f5,
- 0x04fa, 0x0504, 0x050c, 0x050c, 0x0524, 0x052e, 0x0537, 0x0541,
- 0x054a, 0x0550, 0x0559, 0x0560, 0x0569, 0x0570, 0x0579, 0x0580,
- 0x0592, 0x059c, 0x05ae, 0x05b6, 0x05bf, 0x05cb, 0x05d7, 0x05de,
- 0x05e5, 0x05ec, 0x05fd, 0x0603, 0x060a, 0x060f, 0x0623, 0x063b,
- 0x0644, 0x064e, 0x065a, 0x0676, 0x0689, 0x0696, 0x06ac, 0x06b7,
- // Entry C0 - FF
- 0x06be, 0x06c7, 0x06ce, 0x06ce, 0x06db, 0x06e3, 0x06e3, 0x06e9,
- 0x06f2, 0x0701, 0x070f, 0x0719, 0x0721, 0x0728, 0x0732, 0x074a,
- 0x0753, 0x0753, 0x075c, 0x076c, 0x0777, 0x0780, 0x0787, 0x0790,
- 0x0790, 0x07a9, 0x07b6, 0x07b6, 0x07b6, 0x07c1, 0x07c1, 0x07d2,
- 0x07d7, 0x07d7, 0x07dc, 0x07e6, 0x07f3, 0x07fa, 0x0812, 0x0823,
- 0x082a, 0x0833, 0x083b, 0x0852, 0x0859, 0x0862, 0x086b, 0x0876,
- 0x087d, 0x087d, 0x0886, 0x088e, 0x089c, 0x08a6, 0x08c7, 0x08d2,
- 0x08e4, 0x08fe, 0x0908, 0x0910, 0x0922, 0x0929, 0x0929, 0x0930,
- // Entry 100 - 13F
- 0x093a, 0x094a, 0x0952, 0x095c,
- },
- },
- { // yi
- "אַנדארעאַפֿגהאַניסטאַןאַנטיגוע און באַרבודעאַלבאַניעאַרמעניעאַנגאלעאַנטא" +
- "ַרקטיקעאַרגענטינעעסטרייךאויסטראַליעאַרובאַבאסניע הערצעגאווינעבאַרבא" +
- "ַדאסבאַנגלאַדעשבעלגיעבורקינע פֿאַסאבולגאַריעבורונדיבעניןבערמודעברונ" +
- "ייבאליוויעבראַזילבאַהאַמאַסבהוטאַןבאצוואַנעבעלאַרוסבעליזקאַנאַדעקאנ" +
- "גא־קינשאַזעצענטראַל־אַפֿריקאַנישע רעפּובליקשווייץהעלפֿאַ נדביין באר" +
- "טןקוק אינזלעןטשילעקאַמערוןכינעקאלאמביעקאסטאַ ריקאַקובאַקאַפּווערדיש" +
- "ע אינזלעןקוראַסאַאטשעכיידייטשלאַנדדזשיבוטידענמאַרקדאמיניקעדאמיניקאַ" +
- "נישע רעפּובליקעקוואַדארעסטלאַנדעגיפּטןעריטרעעשפּאַניעעטיאפּיעאייראפ" +
- "ּעישער פֿאַרבאַנדפֿינלאַנדפֿידזשיפֿאַלקלאַנד אינזלעןמיקראנעזיעפֿאַר" +
- "א אינזלעןפֿראַנקרייךגאַבאןפֿאַראייניגטע קעניגרייךגרענאַדאַגרוזיעפֿר" +
- "אַנצויזישע גויאַנעגערנזיגהאַנעגיבראַלטאַרגרינלאַנדגאַמביעגינעגוואַד" +
- "עלופעקוואַטארישע גינעגריכנלאַנדגוואַטעמאַלעגוואַםגינע־ביסאַוגויאַנע" +
- "האנדוראַסקראאַטיעהאַיטיאונגערןקאַנאַרישע אינזלעןאינדאנעזיעאירלאַנדי" +
- "שראלאינדיעאיראַןאיסלאַנדאיטאַליעדזשערזידזשאַמייקעיאַפּאַןקעניעקאַמב" +
- "אדיעקיריבאַטיקאמאראסקיימאַן אינזלעןלאַאסלבנוןליכטנשטייןסרי־לאַנקאַל" +
- "יבעריעלעסאטאליטעלוקסעמבורגלעטלאַנדליביעמאַראקאמאנאַקאמאלדאוועמאנטענ" +
- "עגראמאַדאַגאַסקאַרמאַרשאַל אינזלעןמאַקעדאניעמאַלימיאַנמאַרמאנגאליימ" +
- "אַרטיניקמאַריטאַניעמאנטסעראַטמאַלטאַמאריציוסמאַלדיווןמאַלאַווימעקסי" +
- "קעמאַלייזיעמאזאַמביקנאַמיביענײַ קאַלעדאניעניזשערנארפֿאלק אינזלניגער" +
- "יעניקאַראַגועהאלאַנדנארוועגיענעפּאַלניו זילאַנדפּאַנאַמאַפּערופֿראַ" +
- "נצויזישע פּאלינעזיעפּאַפּואַ נײַ גינעפֿיליפּינעןפּאַקיסטאַןפּוילןפּ" +
- "יטקערן אינזלעןפּארטא־ריקאפּארטוגאַלפּאַראַגווײַקאַטאַררעאוניאןרומענ" +
- "יעסערביערוסלאַנדרוואַנדעסאלאמאן אינזלעןסיישעלסודאַןשוועדןסינגאַפּור" +
- "סט העלענעסלאוועניעסלאוואַקייסיערע לעאנעסאַן מאַרינאסענעגאַלסאמאַליע" +
- "סורינאַםדרום־סודאַןסאַא טאמע און פּרינסיפּעעל סאַלוואַדארסיריעסוואַ" +
- "זילאַנדטשאַדטאגאטיילאַנדטורקמעניסטאַןטוניסיעטאנגאַטערקייטרינידאַד א" +
- "ון טאבאַגאטואוואַלוטאַנזאַניעאוקראַינעאוגאַנדעפֿאַראייניגטע שטאַטןא" +
- "ורוגווייוואַטיקאַן שטאָטווענעזועלעוויעטנאַםוואַנואַטוסאַמאאַקאסאווא" +
- "תימןמאַיאטדרום־אַפֿריקעזאַמביעזימבאַבוועאומבאַוואוסטער ראַיאןוועלטא" +
- "ַפֿריקעצפון־אַמעריקעדרום־אַמעריקעאקעאַניעצענטראַל־אַמעריקעאַמעריקעצ" +
- "פונדיקע אַמעריקעקאַראַאיבעמזרח אַזיעדרום־אַזיעדרום־מזרח אַזיעדרום־א" +
- "ייראפּעפּאלינעזיעאַזיעצענטראַל־אַזיעמערב־אַזיעאייראפּעמזרח־אייראפּע" +
- "צפֿון־אייראפּעמערב־אייראפּעלאַטיין־אַמעריקע",
- []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x000e, 0x000e, 0x002c, 0x0054, 0x0054, 0x0066,
- 0x0076, 0x0076, 0x0084, 0x009c, 0x00b0, 0x00b0, 0x00be, 0x00d4,
- 0x00e2, 0x00e2, 0x00e2, 0x0107, 0x011b, 0x0131, 0x013d, 0x0158,
- 0x016a, 0x016a, 0x0178, 0x0182, 0x0182, 0x0190, 0x019c, 0x01ac,
- 0x01ac, 0x01ba, 0x01ce, 0x01dc, 0x01dc, 0x01ee, 0x01fe, 0x0208,
- 0x0218, 0x0218, 0x0234, 0x0273, 0x0273, 0x027f, 0x02a5, 0x02ba,
- 0x02c4, 0x02d4, 0x02dc, 0x02ec, 0x02ec, 0x0303, 0x030d, 0x0336,
- 0x0348, 0x0348, 0x0348, 0x0354, 0x0368, 0x0368, 0x0378, 0x0388,
- // Entry 40 - 7F
- 0x0398, 0x03c5, 0x03c5, 0x03c5, 0x03d7, 0x03e7, 0x03f5, 0x03f5,
- 0x0403, 0x0413, 0x0423, 0x0450, 0x0462, 0x0470, 0x0495, 0x04a9,
- 0x04c4, 0x04da, 0x04e6, 0x0513, 0x0525, 0x0531, 0x055a, 0x0566,
- 0x0572, 0x0588, 0x059a, 0x05a8, 0x05b0, 0x05c4, 0x05e5, 0x05f9,
- 0x05f9, 0x0611, 0x061d, 0x0633, 0x0641, 0x0641, 0x0641, 0x0653,
- 0x0663, 0x066f, 0x067d, 0x06a0, 0x06b4, 0x06c4, 0x06ce, 0x06ce,
- 0x06da, 0x06da, 0x06da, 0x06e6, 0x06f6, 0x0706, 0x0714, 0x0728,
- 0x0728, 0x0738, 0x0742, 0x0742, 0x0754, 0x0766, 0x0774, 0x0774,
- // Entry 80 - BF
- 0x0774, 0x0774, 0x0774, 0x0791, 0x0791, 0x079b, 0x07a5, 0x07a5,
- 0x07b9, 0x07cf, 0x07dd, 0x07e9, 0x07f1, 0x0805, 0x0815, 0x081f,
- 0x082d, 0x083b, 0x084b, 0x085f, 0x085f, 0x087b, 0x089a, 0x08ae,
- 0x08b8, 0x08ca, 0x08da, 0x08da, 0x08da, 0x08ec, 0x0902, 0x0916,
- 0x0924, 0x0934, 0x0946, 0x0958, 0x0966, 0x0978, 0x098a, 0x099a,
- 0x09b5, 0x09c1, 0x09dc, 0x09ea, 0x0a00, 0x0a0e, 0x0a20, 0x0a2e,
- 0x0a2e, 0x0a2e, 0x0a43, 0x0a43, 0x0a57, 0x0a61, 0x0a90, 0x0ab2,
- 0x0ac8, 0x0ade, 0x0aea, 0x0aea, 0x0b09, 0x0b1f, 0x0b1f, 0x0b33,
- // Entry C0 - FF
- 0x0b33, 0x0b4b, 0x0b59, 0x0b59, 0x0b69, 0x0b77, 0x0b83, 0x0b93,
- 0x0ba3, 0x0ba3, 0x0bc0, 0x0bcc, 0x0bd8, 0x0be4, 0x0bf8, 0x0c09,
- 0x0c1b, 0x0c1b, 0x0c2f, 0x0c44, 0x0c5b, 0x0c6b, 0x0c7b, 0x0c8b,
- 0x0ca1, 0x0cce, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d0b, 0x0d0b, 0x0d0b,
- 0x0d15, 0x0d15, 0x0d1d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d47,
- 0x0d55, 0x0d61, 0x0d6d, 0x0d95, 0x0da7, 0x0da7, 0x0dbb, 0x0dcd,
- 0x0ddd, 0x0ddd, 0x0e04, 0x0e16, 0x0e16, 0x0e35, 0x0e35, 0x0e49,
- 0x0e49, 0x0e49, 0x0e5b, 0x0e6f, 0x0e6f, 0x0e7d, 0x0e8b, 0x0e93,
- // Entry 100 - 13F
- 0x0e9f, 0x0eb9, 0x0ec7, 0x0edb, 0x0f04, 0x0f0e, 0x0f1e, 0x0f38,
- 0x0f52, 0x0f62, 0x0f62, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f84,
- 0x0f94, 0x0fb5, 0x0fc9, 0x0fdc, 0x0ff0, 0x100d, 0x1027, 0x1027,
- 0x1027, 0x1027, 0x103b, 0x1045, 0x1061, 0x1075, 0x1085, 0x109f,
- 0x10bb, 0x10d5, 0x10f5,
- },
- },
- { // yo
- "Orílẹ́ède ÀàndóràOrílẹ́ède Ẹmirate ti Awọn ArabuOrílẹ́ède ÀfùgànístánìOr" +
- "ílẹ́ède Ààntígúà àti BáríbúdàOrílẹ́ède ÀàngúlílàOrílẹ́ède Àlùbàníán" +
- "ìOrílẹ́ède AméníàOrílẹ́ède Nedalandi ti AntelisiOrílẹ́ède ÀàngólàOr" +
- "ílẹ́ède AgentínàSámóánì ti Orílẹ́ède ÀméríkàOrílẹ́ède AsítíríàOrílẹ" +
- "́ède ÁstràlìáOrílẹ́ède ÁrúbàOrílẹ́ède Asẹ́bájánìOrílẹ́ède Bọ̀síníà " +
- "àti ẸtisẹgófínàOrílẹ́ède BábádósìOrílẹ́ède BángáládésìOrílẹ́ède Bég" +
- "íọ́mùOrílẹ́ède Bùùkíná FasòOrílẹ́ède BùùgáríàOrílẹ́ède BáránìOrílẹ́" +
- "ède BùùrúndìOrílẹ́ède Bẹ̀nẹ̀Orílẹ́ède BémúdàOrílẹ́ède Búrúnẹ́lìOríl" +
- "ẹ́ède Bọ̀lífíyàOrílẹ́ède BàràsílìOrílẹ́ède BàhámásìOrílẹ́ède Bútán" +
- "ìOrílẹ́ède Bọ̀tìsúwánàOrílẹ́ède BélárúsìOrílẹ́ède Bèlísẹ̀Orílẹ́ède " +
- "KánádàOrilẹ́ède KóngòOrílẹ́ède Àrin gùngun ÁfíríkàOrílẹ́ède KóngòOrí" +
- "lẹ́ède switiṣilandiOrílẹ́ède Kóútè foràOrílẹ́ède Etíokun KùúkùOrílẹ́" +
- "ède ṣílèOrílẹ́ède KamerúúnìOrílẹ́ède ṣáínàOrílẹ́ède KòlómíbìaOrílẹ́" +
- "ède Kuusita RíkàOrílẹ́ède KúbàOrílẹ́ède Etíokun Kápé féndèOrílẹ́ède" +
- " KúrúsìOrílẹ́ède ṣẹ́ẹ́kìOrílẹ́ède GemaniOrílẹ́ède Díbọ́ótìOrílẹ́ède " +
- "Dẹ́mákìOrílẹ́ède DòmíníkàOrilẹ́ède DòmíníkánìOrílẹ́ède ÀlùgèríánìOrí" +
- "lẹ́ède EkuádòOrílẹ́ède EsitoniaOrílẹ́ède ÉgípítìOrílẹ́ède EritiraOrí" +
- "lẹ́ède SipaniOrílẹ́ède EtopiaOrílẹ́ède FilandiOrílẹ́ède FijiOrílẹ́èd" +
- "e Etikun FakalandiOrílẹ́ède MakoronesiaOrílẹ́ède FaranseOrílẹ́ède Ga" +
- "bonOrílẹ́ède OmobabirinOrílẹ́ède GenadaOrílẹ́ède GọgiaOrílẹ́ède Fire" +
- "nṣi GuanaOrílẹ́ède GanaOrílẹ́ède GibarataraOrílẹ́ède GerelandiOrílẹ́" +
- "ède GambiaOrílẹ́ède GeneOrílẹ́ède GadelopeOrílẹ́ède Ekutoria GiniOr" +
- "ílẹ́ède GeriisiOrílẹ́ède GuatemalaOrílẹ́ède GuamuOrílẹ́ède Gene-Bus" +
- "auOrílẹ́ède GuyanaOrílẹ́ède HondurasiOrílẹ́ède KòróátíàOrílẹ́ède Haa" +
- "tiOrílẹ́ède HungariOrílẹ́ède IndonesiaOrílẹ́ède AilandiOrílẹ́ède Ise" +
- "rẹliOrílẹ́ède IndiaOrílẹ́ède Etíkun Índíánì ti Ìlú BírítísìOrílẹ́ède" +
- " IrakiOrílẹ́ède IraniOrílẹ́ède AṣilandiOrílẹ́ède ItaliyiOrílẹ́ède Ja" +
- "maikaOrílẹ́ède JọdaniOrílẹ́ède JapaniOrílẹ́ède KenyaOrílẹ́ède Kuriṣi" +
- "sitaniOrílẹ́ède KàmùbódíàOrílẹ́ède KiribatiOrílẹ́ède KòmòrósìOrílẹ́è" +
- "de Kiiti ati NeefiOrílẹ́ède Guusu KọriaOrílẹ́ède Ariwa KọriaOrílẹ́èd" +
- "e KuwetiOrílẹ́ède Etíokun KámánìOrílẹ́ède KaṣaṣataniOrílẹ́ède LaosiO" +
- "rílẹ́ède LebanoniOrílẹ́ède LuṣiaOrílẹ́ède LẹṣitẹnisiteniOrílẹ́ède Si" +
- "ri LankaOrílẹ́ède LaberiaOrílẹ́ède LesotoOrílẹ́ède LituaniaOrílẹ́ède" +
- " LusemogiOrílẹ́ède LatifiaOrílẹ́ède LibiyaOrílẹ́ède MorokoOrílẹ́ède " +
- "MonakoOrílẹ́ède ModofiaOrílẹ́ède MadasikaOrílẹ́ède Etikun MáṣaliOríl" +
- "ẹ́ède MasidoniaOrílẹ́ède MaliOrílẹ́ède ManamariOrílẹ́ède MogoliaOr" +
- "ílẹ́ède Etikun Guusu MarianaOrílẹ́ède MatinikuwiOrílẹ́ède Maritania" +
- "Orílẹ́ède MotseratiOrílẹ́ède MalataOrílẹ́ède MaritiusiOrílẹ́ède Mala" +
- "difiOrílẹ́ède MalawiOrílẹ́ède MesikoOrílẹ́ède MalasiaOrílẹ́ède Moṣam" +
- "ibikuOrílẹ́ède NamibiaOrílẹ́ède Kaledonia TitunOrílẹ́ède NàìjáOrílẹ́" +
- "ède Etikun Nọ́úfókìOrílẹ́ède NàìjíríàOrílẹ́ède NIkaraguaOrílẹ́ède N" +
- "edalandiOrílẹ́ède NọọwiiOrílẹ́ède NepaOrílẹ́ède NauruOrílẹ́ède NiueO" +
- "rílẹ́ède ṣilandi TitunOrílẹ́ède ỌọmaOrílẹ́ède PanamaOrílẹ́ède PeruOr" +
- "ílẹ́ède Firenṣi PolinesiaOrílẹ́ède Paapu ti GiiniOrílẹ́ède filipini" +
- "Orílẹ́ède PakisitanOrílẹ́ède PolandiOrílẹ́ède Pẹẹri ati mikuloniOríl" +
- "ẹ́ède PikariniOrílẹ́ède Pọto RikoOrílẹ́ède Iwọorun Pakisitian ati " +
- "GaṣaOrílẹ́ède PọtugiOrílẹ́ède PaaluOrílẹ́ède ParaguyeOrílẹ́ède KotaO" +
- "rílẹ́ède RiuniyanOrílẹ́ède RomaniyaOrílẹ́ède RọṣiaOrílẹ́ède RuwandaO" +
- "rílẹ́ède Saudi ArabiaOrílẹ́ède Etikun SolomoniOrílẹ́ède seṣẹlẹsiOríl" +
- "ẹ́ède SudaniOrílẹ́ède SwidiniOrílẹ́ède SingapoOrílẹ́ède HẹlenaOríl" +
- "ẹ́ède SilofaniaOrílẹ́ède SilofakiaOrílẹ́ède Siria looniOrílẹ́ède S" +
- "ani MarinoOrílẹ́ède SẹnẹgaOrílẹ́ède SomaliaOrílẹ́ède SurinamiOrílẹ́è" +
- "de Sao tomi ati piriiṣipiOrílẹ́ède ẸẹsáfádòOrílẹ́ède SiriaOrílẹ́ède " +
- "SaṣilandOrílẹ́ède Tọọki ati Etikun KakọsiOrílẹ́ède ṣààdìOrílẹ́ède To" +
- "goOrílẹ́ède TailandiOrílẹ́ède TakisitaniOrílẹ́ède TokelauOrílẹ́ède Ì" +
- "làOòrùn Tímọ̀Orílẹ́ède TọọkimenisitaOrílẹ́ède TuniṣiaOrílẹ́ède Tonga" +
- "Orílẹ́ède TọọkiOrílẹ́ède Tirinida ati TobagaOrílẹ́ède TufaluOrílẹ́èd" +
- "e TaiwaniOrílẹ́ède TanṣaniaOrílẹ́ède UkariniOrílẹ́ède UgandaOrílẹ́èd" +
- "e Orilẹede AmerikaOrílẹ́ède NruguayiOrílẹ́ède NṣibẹkisitaniOrílẹ́ède" +
- " FatikaniOrílẹ́ède Fisẹnnti ati GenadinaOrílẹ́ède FẹnẹṣuẹlaOrílẹ́ède" +
- " Etíkun Fágínì ti ìlú BírítísìOrílẹ́ède Etikun Fagini ti AmẹrikaOríl" +
- "ẹ́ède FẹtinamiOrílẹ́ède FaniatuOrílẹ́ède Wali ati futunaOrílẹ́ède " +
- "SamọOrílẹ́ède yemeniOrílẹ́ède MayoteOrílẹ́ède Ariwa AfirikaOrílẹ́ède" +
- " ṣamibiaOrílẹ́ède ṣimibabe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x001a, 0x0042, 0x0063, 0x0091, 0x00ae, 0x00cd,
- 0x00e5, 0x0109, 0x0123, 0x0123, 0x013c, 0x0165, 0x0180, 0x019b,
- 0x01b2, 0x01b2, 0x01d1, 0x0206, 0x0221, 0x0240, 0x025d, 0x027d,
- 0x0299, 0x02b1, 0x02cc, 0x02e7, 0x02e7, 0x02ff, 0x031d, 0x033b,
- 0x033b, 0x0356, 0x0371, 0x0389, 0x0389, 0x03aa, 0x03c5, 0x03e0,
- 0x03f8, 0x03f8, 0x040d, 0x0435, 0x044b, 0x0468, 0x0485, 0x04a5,
- 0x04bc, 0x04d7, 0x04f0, 0x050c, 0x050c, 0x0529, 0x053e, 0x0564,
- 0x0564, 0x0564, 0x057c, 0x059b, 0x05b0, 0x05b0, 0x05cd, 0x05e8,
- // Entry 40 - 7F
- 0x0603, 0x0620, 0x063f, 0x063f, 0x0656, 0x066d, 0x0687, 0x0687,
- 0x069d, 0x06b2, 0x06c7, 0x06c7, 0x06dd, 0x06f0, 0x070f, 0x0729,
- 0x0729, 0x073f, 0x0753, 0x076c, 0x0781, 0x0797, 0x07b5, 0x07b5,
- 0x07c8, 0x07e1, 0x07f9, 0x080e, 0x0821, 0x0838, 0x0854, 0x086a,
- 0x086a, 0x0882, 0x0896, 0x08af, 0x08c4, 0x08c4, 0x08c4, 0x08dc,
- 0x08f8, 0x090c, 0x0922, 0x0922, 0x093a, 0x0950, 0x0968, 0x0968,
- 0x097c, 0x09b4, 0x09c8, 0x09dc, 0x09f5, 0x0a0b, 0x0a0b, 0x0a21,
- 0x0a38, 0x0a4d, 0x0a61, 0x0a7e, 0x0a9b, 0x0ab2, 0x0acd, 0x0aeb,
- // Entry 80 - BF
- 0x0b07, 0x0b23, 0x0b38, 0x0b59, 0x0b76, 0x0b8a, 0x0ba1, 0x0bb7,
- 0x0bda, 0x0bf3, 0x0c09, 0x0c1e, 0x0c35, 0x0c4c, 0x0c62, 0x0c77,
- 0x0c8c, 0x0ca1, 0x0cb7, 0x0cb7, 0x0cb7, 0x0cce, 0x0ced, 0x0d05,
- 0x0d18, 0x0d2f, 0x0d45, 0x0d45, 0x0d68, 0x0d81, 0x0d99, 0x0db1,
- 0x0dc6, 0x0dde, 0x0df5, 0x0e0a, 0x0e1f, 0x0e35, 0x0e50, 0x0e66,
- 0x0e84, 0x0e9b, 0x0ebf, 0x0edb, 0x0ef3, 0x0f0b, 0x0f24, 0x0f37,
- 0x0f4b, 0x0f5e, 0x0f7c, 0x0f93, 0x0fa8, 0x0fbb, 0x0fdd, 0x0ffa,
- 0x1011, 0x1029, 0x103f, 0x1064, 0x107b, 0x1095, 0x10c3, 0x10da,
- // Entry C0 - FF
- 0x10ee, 0x1105, 0x1118, 0x1118, 0x112f, 0x1146, 0x1146, 0x115e,
- 0x1174, 0x118f, 0x11ad, 0x11ca, 0x11df, 0x11f5, 0x120b, 0x1222,
- 0x123a, 0x123a, 0x1252, 0x126c, 0x1286, 0x129f, 0x12b5, 0x12cc,
- 0x12cc, 0x12f3, 0x1311, 0x1311, 0x1325, 0x133e, 0x133e, 0x136a,
- 0x1383, 0x1383, 0x1396, 0x13ad, 0x13c6, 0x13dc, 0x1401, 0x1421,
- 0x1439, 0x144d, 0x1465, 0x1487, 0x149c, 0x14b2, 0x14cb, 0x14e1,
- 0x14f6, 0x14f6, 0x1517, 0x152e, 0x154e, 0x1565, 0x158b, 0x15ab,
- 0x15e1, 0x160a, 0x1623, 0x1639, 0x1657, 0x166c, 0x166c, 0x1681,
- // Entry 100 - 13F
- 0x1696, 0x16b2, 0x16ca, 0x16e3,
- },
- },
- { // yo-BJ
- "Orílɛ́ède ÀàndóràOrílɛ́ède Ɛmirate ti Awɔn ArabuOrílɛ́ède ÀfùgànístánìOr" +
- "ílɛ́ède Ààntígúà àti BáríbúdàOrílɛ́ède ÀàngúlílàOrílɛ́ède Àlùbàníán" +
- "ìOrílɛ́ède AméníàOrílɛ́ède Nedalandi ti AntelisiOrílɛ́ède ÀàngólàOr" +
- "ílɛ́ède AgentínàSámóánì ti Orílɛ́ède ÀméríkàOrílɛ́ède AsítíríàOrílɛ" +
- "́ède ÁstràlìáOrílɛ́ède ÁrúbàOrílɛ́ède Asɛ́bájánìOrílɛ́ède Bɔ̀síníà " +
- "àti ƐtisɛgófínàOrílɛ́ède BábádósìOrílɛ́ède BángáládésìOrílɛ́ède Bég" +
- "íɔ́mùOrílɛ́ède Bùùkíná FasòOrílɛ́ède BùùgáríàOrílɛ́ède BáránìOrílɛ́" +
- "ède BùùrúndìOrílɛ́ède Bɛ̀nɛ̀Orílɛ́ède BémúdàOrílɛ́ède Búrúnɛ́lìOríl" +
- "ɛ́ède Bɔ̀lífíyàOrílɛ́ède BàràsílìOrílɛ́ède BàhámásìOrílɛ́ède Bútánì" +
- "Orílɛ́ède Bɔ̀tìsúwánàOrílɛ́ède BélárúsìOrílɛ́ède Bèlísɛ̀Orílɛ́ède Ká" +
- "nádàOrilɛ́ède KóngòOrílɛ́ède Àrin gùngun ÁfíríkàOrílɛ́ède KóngòOrílɛ" +
- "́ède switishilandiOrílɛ́ède Kóútè foràOrílɛ́ède Etíokun KùúkùOrílɛ́" +
- "ède shílèOrílɛ́ède KamerúúnìOrílɛ́ède sháínàOrílɛ́ède KòlómíbìaOríl" +
- "ɛ́ède Kuusita RíkàOrílɛ́ède KúbàOrílɛ́ède Etíokun Kápé féndèOrílɛ́è" +
- "de KúrúsìOrílɛ́ède shɛ́ɛ́kìOrílɛ́ède GemaniOrílɛ́ède Díbɔ́ótìOrílɛ́è" +
- "de Dɛ́mákìOrílɛ́ède DòmíníkàOrilɛ́ède DòmíníkánìOrílɛ́ède Àlùgèríánì" +
- "Orílɛ́ède EkuádòOrílɛ́ède EsitoniaOrílɛ́ède ÉgípítìOrílɛ́ède Eritira" +
- "Orílɛ́ède SipaniOrílɛ́ède EtopiaOrílɛ́ède FilandiOrílɛ́ède FijiOrílɛ" +
- "́ède Etikun FakalandiOrílɛ́ède MakoronesiaOrílɛ́ède FaranseOrílɛ́èd" +
- "e GabonOrílɛ́ède OmobabirinOrílɛ́ède GenadaOrílɛ́ède GɔgiaOrílɛ́ède " +
- "Firenshi GuanaOrílɛ́ède GanaOrílɛ́ède GibarataraOrílɛ́ède GerelandiO" +
- "rílɛ́ède GambiaOrílɛ́ède GeneOrílɛ́ède GadelopeOrílɛ́ède Ekutoria Gi" +
- "niOrílɛ́ède GeriisiOrílɛ́ède GuatemalaOrílɛ́ède GuamuOrílɛ́ède Gene-" +
- "BusauOrílɛ́ède GuyanaOrílɛ́ède HondurasiOrílɛ́ède KòróátíàOrílɛ́ède " +
- "HaatiOrílɛ́ède HungariOrílɛ́ède IndonesiaOrílɛ́ède AilandiOrílɛ́ède " +
- "IserɛliOrílɛ́ède IndiaOrílɛ́ède Etíkun Índíánì ti Ìlú BírítísìOrílɛ́" +
- "ède IrakiOrílɛ́ède IraniOrílɛ́ède AshilandiOrílɛ́ède ItaliyiOrílɛ́è" +
- "de JamaikaOrílɛ́ède JɔdaniOrílɛ́ède JapaniOrílɛ́ède KenyaOrílɛ́ède K" +
- "urishisitaniOrílɛ́ède KàmùbódíàOrílɛ́ède KiribatiOrílɛ́ède KòmòrósìO" +
- "rílɛ́ède Kiiti ati NeefiOrílɛ́ède Guusu KɔriaOrílɛ́ède Ariwa KɔriaOr" +
- "ílɛ́ède KuwetiOrílɛ́ède Etíokun KámánìOrílɛ́ède KashashataniOrílɛ́è" +
- "de LaosiOrílɛ́ède LebanoniOrílɛ́ède LushiaOrílɛ́ède LɛshitɛnisiteniO" +
- "rílɛ́ède Siri LankaOrílɛ́ède LaberiaOrílɛ́ède LesotoOrílɛ́ède Lituan" +
- "iaOrílɛ́ède LusemogiOrílɛ́ède LatifiaOrílɛ́ède LibiyaOrílɛ́ède Morok" +
- "oOrílɛ́ède MonakoOrílɛ́ède ModofiaOrílɛ́ède MadasikaOrílɛ́ède Etikun" +
- " MáshaliOrílɛ́ède MasidoniaOrílɛ́ède MaliOrílɛ́ède ManamariOrílɛ́ède" +
- " MogoliaOrílɛ́ède Etikun Guusu MarianaOrílɛ́ède MatinikuwiOrílɛ́ède " +
- "MaritaniaOrílɛ́ède MotseratiOrílɛ́ède MalataOrílɛ́ède MaritiusiOrílɛ" +
- "́ède MaladifiOrílɛ́ède MalawiOrílɛ́ède MesikoOrílɛ́ède MalasiaOrílɛ" +
- "́ède MoshamibikuOrílɛ́ède NamibiaOrílɛ́ède Kaledonia TitunOrílɛ́ède" +
- " NàìjáOrílɛ́ède Etikun Nɔ́úfókìOrílɛ́ède NàìjíríàOrílɛ́ède NIkaragua" +
- "Orílɛ́ède NedalandiOrílɛ́ède NɔɔwiiOrílɛ́ède NepaOrílɛ́ède NauruOríl" +
- "ɛ́ède NiueOrílɛ́ède shilandi TitunOrílɛ́ède ƆɔmaOrílɛ́ède PanamaOrí" +
- "lɛ́ède PeruOrílɛ́ède Firenshi PolinesiaOrílɛ́ède Paapu ti GiiniOrílɛ" +
- "́ède filipiniOrílɛ́ède PakisitanOrílɛ́ède PolandiOrílɛ́ède Pɛɛri at" +
- "i mikuloniOrílɛ́ède PikariniOrílɛ́ède Pɔto RikoOrílɛ́ède Iwɔorun Pak" +
- "isitian ati GashaOrílɛ́ède PɔtugiOrílɛ́ède PaaluOrílɛ́ède ParaguyeOr" +
- "ílɛ́ède KotaOrílɛ́ède RiuniyanOrílɛ́ède RomaniyaOrílɛ́ède RɔshiaOrí" +
- "lɛ́ède RuwandaOrílɛ́ède Saudi ArabiaOrílɛ́ède Etikun SolomoniOrílɛ́è" +
- "de seshɛlɛsiOrílɛ́ède SudaniOrílɛ́ède SwidiniOrílɛ́ède SingapoOrílɛ́" +
- "ède HɛlenaOrílɛ́ède SilofaniaOrílɛ́ède SilofakiaOrílɛ́ède Siria loo" +
- "niOrílɛ́ède Sani MarinoOrílɛ́ède SɛnɛgaOrílɛ́ède SomaliaOrílɛ́ède Su" +
- "rinamiOrílɛ́ède Sao tomi ati piriishipiOrílɛ́ède ƐɛsáfádòOrílɛ́ède S" +
- "iriaOrílɛ́ède SashilandOrílɛ́ède Tɔɔki ati Etikun KakɔsiOrílɛ́ède sh" +
- "ààdìOrílɛ́ède TogoOrílɛ́ède TailandiOrílɛ́ède TakisitaniOrílɛ́ède T" +
- "okelauOrílɛ́ède ÌlàOòrùn Tímɔ̀Orílɛ́ède TɔɔkimenisitaOrílɛ́ède Tunis" +
- "hiaOrílɛ́ède TongaOrílɛ́ède TɔɔkiOrílɛ́ède Tirinida ati TobagaOrílɛ́" +
- "ède TufaluOrílɛ́ède TaiwaniOrílɛ́ède TanshaniaOrílɛ́ède UkariniOríl" +
- "ɛ́ède UgandaOrílɛ́ède Orilɛede AmerikaOrílɛ́ède NruguayiOrílɛ́ède N" +
- "shibɛkisitaniOrílɛ́ède FatikaniOrílɛ́ède Fisɛnnti ati GenadinaOrílɛ́" +
- "ède FɛnɛshuɛlaOrílɛ́ède Etíkun Fágínì ti ìlú BírítísìOrílɛ́ède Etik" +
- "un Fagini ti AmɛrikaOrílɛ́ède FɛtinamiOrílɛ́ède FaniatuOrílɛ́ède Wal" +
- "i ati futunaOrílɛ́ède SamɔOrílɛ́ède yemeniOrílɛ́ède MayoteOrílɛ́ède " +
- "Ariwa AfirikaOrílɛ́ède shamibiaOrílɛ́ède shimibabe",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0019, 0x003e, 0x005e, 0x008b, 0x00a7, 0x00c5,
- 0x00dc, 0x00ff, 0x0118, 0x0118, 0x0130, 0x0158, 0x0172, 0x018c,
- 0x01a2, 0x01a2, 0x01bf, 0x01f0, 0x020a, 0x0228, 0x0243, 0x0262,
- 0x027d, 0x0294, 0x02ae, 0x02c6, 0x02c6, 0x02dd, 0x02f9, 0x0315,
- 0x0315, 0x032f, 0x0349, 0x0360, 0x0360, 0x037f, 0x0399, 0x03b2,
- 0x03c9, 0x03c9, 0x03dd, 0x0404, 0x0419, 0x0434, 0x0450, 0x046f,
- 0x0484, 0x049e, 0x04b5, 0x04d0, 0x04d0, 0x04ec, 0x0500, 0x0525,
- 0x0525, 0x0525, 0x053c, 0x0557, 0x056b, 0x056b, 0x0586, 0x059f,
- // Entry 40 - 7F
- 0x05b9, 0x05d5, 0x05f3, 0x05f3, 0x0609, 0x061f, 0x0638, 0x0638,
- 0x064d, 0x0661, 0x0675, 0x0675, 0x068a, 0x069c, 0x06ba, 0x06d3,
- 0x06d3, 0x06e8, 0x06fb, 0x0713, 0x0727, 0x073b, 0x0757, 0x0757,
- 0x0769, 0x0781, 0x0798, 0x07ac, 0x07be, 0x07d4, 0x07ef, 0x0804,
- 0x0804, 0x081b, 0x082e, 0x0846, 0x085a, 0x085a, 0x085a, 0x0871,
- 0x088c, 0x089f, 0x08b4, 0x08b4, 0x08cb, 0x08e0, 0x08f6, 0x08f6,
- 0x0909, 0x0940, 0x0953, 0x0966, 0x097d, 0x0992, 0x0992, 0x09a7,
- 0x09bc, 0x09d0, 0x09e3, 0x09fe, 0x0a1a, 0x0a30, 0x0a4a, 0x0a67,
- // Entry 80 - BF
- 0x0a81, 0x0a9b, 0x0aaf, 0x0acf, 0x0ae9, 0x0afc, 0x0b12, 0x0b26,
- 0x0b45, 0x0b5d, 0x0b72, 0x0b86, 0x0b9c, 0x0bb2, 0x0bc7, 0x0bdb,
- 0x0bef, 0x0c03, 0x0c18, 0x0c18, 0x0c18, 0x0c2e, 0x0c4b, 0x0c62,
- 0x0c74, 0x0c8a, 0x0c9f, 0x0c9f, 0x0cc1, 0x0cd9, 0x0cf0, 0x0d07,
- 0x0d1b, 0x0d32, 0x0d48, 0x0d5c, 0x0d70, 0x0d85, 0x0d9e, 0x0db3,
- 0x0dd0, 0x0de6, 0x0e08, 0x0e23, 0x0e3a, 0x0e51, 0x0e67, 0x0e79,
- 0x0e8c, 0x0e9e, 0x0eba, 0x0ece, 0x0ee2, 0x0ef4, 0x0f14, 0x0f30,
- 0x0f46, 0x0f5d, 0x0f72, 0x0f94, 0x0faa, 0x0fc2, 0x0fed, 0x1002,
- // Entry C0 - FF
- 0x1015, 0x102b, 0x103d, 0x103d, 0x1053, 0x1069, 0x1069, 0x107e,
- 0x1093, 0x10ad, 0x10ca, 0x10e3, 0x10f7, 0x110c, 0x1121, 0x1136,
- 0x114d, 0x114d, 0x1164, 0x117d, 0x1196, 0x11ac, 0x11c1, 0x11d7,
- 0x11d7, 0x11fc, 0x1217, 0x1217, 0x122a, 0x1241, 0x1241, 0x1269,
- 0x1280, 0x1280, 0x1292, 0x12a8, 0x12c0, 0x12d5, 0x12f8, 0x1315,
- 0x132b, 0x133e, 0x1353, 0x1374, 0x1388, 0x139d, 0x13b4, 0x13c9,
- 0x13dd, 0x13dd, 0x13fc, 0x1412, 0x142f, 0x1445, 0x1469, 0x1484,
- 0x14b9, 0x14e0, 0x14f7, 0x150c, 0x1529, 0x153c, 0x153c, 0x1550,
- // Entry 100 - 13F
- 0x1564, 0x157f, 0x1595, 0x15ac,
- },
- },
- { // zgh
- "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏ" +
- "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰ" +
- "ⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴱ" +
- "ⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇ" +
- "ⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳ" +
- "ⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱ" +
- "ⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ " +
- "ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊ" +
- "ⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡ" +
- "ⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ " +
- "ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏ" +
- "ⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍ" +
- "ⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉ" +
- "ⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ" +
- " ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍ" +
- "ⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓⵎⴰⴷⴰⵖⴰⵛⵇ" +
- "ⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ " +
- "ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰⵍⵉⵣⵢⴰ" +
- "ⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔⵢⴰⵏⵉⴽ" +
- "ⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍⵉⵏⵉⵣⵢ" +
- "ⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎ" +
- "ⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡⴰⵢⵇⴰⵜ" +
- "ⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓⵎⴰⵏⵢⴰⵙⵉⵔⴱⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉ" +
- "ⵍⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏ" +
- "ⵉⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙⵙⵓⴷⴰⵏ ⵏ ⵉⴼⴼⵓⵙⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉ" +
- "ⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ" +
- " ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰ" +
- "ⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰ" +
- "ⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ " +
- "ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼ" +
- "ⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ",
- []uint16{ // 260 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095,
- 0x00aa, 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c,
- 0x013b, 0x013b, 0x0156, 0x017c, 0x018e, 0x01a9, 0x01bb, 0x01dd,
- 0x01f2, 0x0204, 0x0219, 0x0228, 0x0228, 0x023a, 0x0249, 0x025e,
- 0x025e, 0x0270, 0x0285, 0x0297, 0x0297, 0x02af, 0x02ca, 0x02d9,
- 0x02eb, 0x02eb, 0x033f, 0x0390, 0x039f, 0x03b1, 0x03cd, 0x03f3,
- 0x0402, 0x0417, 0x0429, 0x0441, 0x0441, 0x045d, 0x0469, 0x049e,
- 0x049e, 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523,
- // Entry 40 - 7F
- 0x0538, 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7,
- 0x05cf, 0x05e1, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a,
- 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705,
- 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd,
- 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830,
- 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae,
- 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c,
- 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28,
- // Entry 80 - BF
- 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00,
- 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4,
- 0x0bc6, 0x0bd8, 0x0bf0, 0x0c0e, 0x0c0e, 0x0c2c, 0x0c5b, 0x0c76,
- 0x0c82, 0x0c97, 0x0cac, 0x0cac, 0x0cf2, 0x0d0a, 0x0d25, 0x0d3d,
- 0x0d4c, 0x0d5b, 0x0d6d, 0x0d7f, 0x0d91, 0x0da6, 0x0dbb, 0x0dd0,
- 0x0e04, 0x0e16, 0x0e48, 0x0e5d, 0x0e78, 0x0e8d, 0x0e9f, 0x0eae,
- 0x0ebd, 0x0ec9, 0x0ee7, 0x0ef6, 0x0f08, 0x0f14, 0x0f4e, 0x0f86,
- 0x0f9e, 0x0fb6, 0x0fcb, 0x0ff7, 0x100f, 0x102b, 0x1062, 0x1074,
- // Entry C0 - FF
- 0x1083, 0x109b, 0x10aa, 0x10aa, 0x10c2, 0x10d7, 0x10e9, 0x10f8,
- 0x110a, 0x1125, 0x1157, 0x1169, 0x117b, 0x118a, 0x11a2, 0x11ba,
- 0x11d2, 0x11d2, 0x11ea, 0x1205, 0x1220, 0x1238, 0x124a, 0x125f,
- 0x1285, 0x12b4, 0x12cc, 0x12cc, 0x12db, 0x12f9, 0x12f9, 0x1339,
- 0x1345, 0x1345, 0x1351, 0x1366, 0x1387, 0x1399, 0x13bc, 0x13dd,
- 0x13e9, 0x13f8, 0x140a, 0x1439, 0x144b, 0x145d, 0x1475, 0x148a,
- 0x149c, 0x149c, 0x14db, 0x14f0, 0x150e, 0x1537, 0x156f, 0x1587,
- 0x15c9, 0x161e, 0x1630, 0x1645, 0x166b, 0x167a, 0x167a, 0x1689,
- // Entry 100 - 13F
- 0x1698, 0x16c1, 0x16d3, 0x16eb,
- },
- },
- { // zh
- zhRegionStr,
- zhRegionIdx,
- },
- { // zh-Hant
- zhHantRegionStr,
- zhHantRegionIdx,
- },
- { // zh-Hant-HK
- "阿拉伯聯合酋長國安提瓜和巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯布基納法索布隆迪貝寧聖巴泰勒米鮑威特島博茨瓦納伯利茲可可斯群島剛果 - " +
- "金夏沙剛果 - 布拉薩科特迪瓦克里珀頓島哥斯達黎加佛得角塞浦路斯吉布提多米尼加共和國厄瓜多爾厄立特里亞埃塞俄比亞加蓬格林納達格魯吉亞" +
- "加納岡比亞南佐治亞島與南桑威奇群島危地馬拉幾內亞比紹圭亞那洪都拉斯克羅地亞馬恩島英屬印度洋領土意大利肯雅科摩羅聖基茨和尼維斯老撾聖盧" +
- "西亞列支敦士登利比里亞萊索托黑山馬里毛里塔尼亞蒙特塞拉特馬耳他毛里裘斯馬爾代夫馬拉維莫桑比克尼日爾尼日利亞瑙魯阿曼法屬波利尼西亞巴布" +
- "亞新幾內亞皮特凱恩島卡塔爾盧旺達沙特阿拉伯所羅門群島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延島塞拉利昂索馬里蘇里南聖多美和普林西比斯威" +
- "士蘭特克斯和凱科斯群島乍得法屬南部地區多哥共和國湯加千里達和多巴哥圖瓦盧坦桑尼亞聖文森特和格林納丁斯英屬維爾京群島美屬維爾京群島瓦努" +
- "阿圖也門贊比亞津巴布韋中美洲加勒比波利尼西亞",
- []uint16{ // 283 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x002d, 0x002d, 0x002d,
- 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d,
- 0x0036, 0x0036, 0x0042, 0x0060, 0x006c, 0x006c, 0x006c, 0x007b,
- 0x007b, 0x007b, 0x0084, 0x008a, 0x0099, 0x0099, 0x0099, 0x0099,
- 0x0099, 0x0099, 0x0099, 0x0099, 0x00a5, 0x00b1, 0x00b1, 0x00ba,
- 0x00ba, 0x00c9, 0x00db, 0x00db, 0x00ed, 0x00ed, 0x00f9, 0x00f9,
- 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0108, 0x0117, 0x0117, 0x0120,
- 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x0135, 0x0135,
- // Entry 40 - 7F
- 0x0135, 0x014a, 0x014a, 0x014a, 0x0156, 0x0156, 0x0156, 0x0156,
- 0x0165, 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
- 0x0174, 0x0174, 0x017a, 0x017a, 0x0186, 0x0192, 0x0192, 0x0192,
- 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1,
- 0x01c5, 0x01d1, 0x01d1, 0x01e0, 0x01e9, 0x01e9, 0x01e9, 0x01f5,
- 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x020a,
- 0x020a, 0x021f, 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x0228,
- 0x0228, 0x0228, 0x022e, 0x022e, 0x022e, 0x022e, 0x0237, 0x024c,
- // Entry 80 - BF
- 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x0252, 0x0252, 0x025e,
- 0x026d, 0x026d, 0x0279, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282,
- 0x0282, 0x0282, 0x0282, 0x0288, 0x0288, 0x0288, 0x0288, 0x0288,
- 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d, 0x02ac,
- 0x02b5, 0x02c1, 0x02cd, 0x02d6, 0x02d6, 0x02d6, 0x02e2, 0x02e2,
- 0x02e2, 0x02eb, 0x02eb, 0x02f7, 0x02f7, 0x02f7, 0x02f7, 0x02f7,
- 0x02fd, 0x02fd, 0x02fd, 0x0303, 0x0303, 0x0303, 0x0318, 0x032d,
- 0x032d, 0x032d, 0x032d, 0x032d, 0x033c, 0x033c, 0x033c, 0x033c,
- // Entry C0 - FF
- 0x033c, 0x033c, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345,
- 0x034e, 0x035d, 0x036c, 0x0375, 0x0375, 0x0375, 0x0375, 0x0375,
- 0x0384, 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03bd, 0x03c6,
- 0x03c6, 0x03de, 0x03de, 0x03de, 0x03de, 0x03ea, 0x03ea, 0x0405,
- 0x040b, 0x041d, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c,
- 0x042c, 0x0432, 0x0432, 0x0447, 0x0450, 0x0450, 0x045c, 0x045c,
- 0x045c, 0x045c, 0x045c, 0x045c, 0x045c, 0x045c, 0x047a, 0x047a,
- 0x048f, 0x04a4, 0x04a4, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b6,
- // Entry 100 - 13F
- 0x04b6, 0x04b6, 0x04bf, 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04cb,
- 0x04cb, 0x04cb, 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4,
- 0x04d4, 0x04d4, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
- 0x04dd, 0x04dd, 0x04ec,
- },
- },
- { // zu
- zuRegionStr,
- zuRegionIdx,
- },
-}
-
-var afRegionStr string = "" + // Size: 3021 bytes
- "AscensioneilandAndorraVerenigde Arabiese EmirateAfganistanAntigua en Bar" +
- "budaAnguillaAlbaniëArmeniëNederlands-AntilleAngolaAntarktikaArgentiniëAm" +
- "erikaans-SamoaOostenrykAustraliëArubaÅlandeilandeAzerbeidjanBosnië en He" +
- "rzegowinaBarbadosBangladesjBelgiëBurkina FasoBulgaryeBahreinBurundiBenin" +
- "Sint BarthélemyBermudaBroeneiBoliviëKaribiese NederlandBrasiliëBahamasBh" +
- "oetanBouvet-eilandBotswanaBelarusBelizeKanadaKokos-eilandeDemokratiese R" +
- "epubliek van die KongoSentraal-Afrikaanse RepubliekKongo - BrazzavilleSw" +
- "itserlandIvoorkusCookeilandeChiliKameroenSjinaColombiëClippertoneilandCo" +
- "sta RicaKubaKaap VerdeCuraçaoKerseilandSiprusTjeggiese RepubliekDuitslan" +
- "dDiego GarciaDjiboetiDenemarkeDominicaDominikaanse RepubliekAlgeriëCeuta" +
- " en MelillaEcuadorEstlandEgipteWes-SaharaEritreaSpanjeEthiopiëEuropese U" +
- "nieFinlandFidjiFalklandeilandeMikronesiëFaroëreilandeFrankrykGaboenVeren" +
- "igde KoninkrykGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandG" +
- "ambiëGuineeGuadeloupeEkwatoriaal-GuineeGriekelandSuid-Georgië en die Sui" +
- "delike SandwicheilandeGuatemalaGuamGuinee-BissauGuyanaHongkong SAS Sjina" +
- "Heard- en McDonaldeilandeHondurasKroasiëHaïtiHongaryeKanariese EilandeIn" +
- "donesiëIerlandIsraelEiland ManIndiëBrits-Indiese OseaangebiedIrakIranYsl" +
- "andItaliëJerseyJamaikaJordaniëJapanKeniaKirgisiëKambodjaKiribatiComoreSt" +
- ". Kitts en NevisNoord-KoreaSuid-KoreaKoeweitKaaimanseilandeKazakstanLaos" +
- "LibanonSt. LuciaLiechtensteinSri LankaLiberiëLesothoLitaueLuxemburgLetla" +
- "ndLibiëMarokkoMonacoMoldowaMontenegroSt. MartinMadagaskarMarshalleilande" +
- "MacedoniëMaliMianmar (Birma)MongoliëMacau SAS SjinaNoord-Mariane-eilande" +
- "MartiniqueMauritaniëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisi" +
- "ëMosambiekNamibiëNieu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederl" +
- "andNoorweëNepalNauruNiueNieu-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-" +
- "Nieu-GuineeFilippynePakistanPoleSt. Pierre en MiquelonPitcairneilandePue" +
- "rto RicoPalestynse gebiedePortugalPalauParaguayKatarOmliggende OseaniëRé" +
- "unionRoemeniëSerwiëRuslandRwandaSaoedi-ArabiëSalomonseilandeSeychelleSoe" +
- "danSwedeSingapoerSint HelenaSloweniëSvalbard en Jan MayenSlowakyeSierra " +
- "LeoneSan MarinoSenegalSomaliëSurinameSuid-SoedanSão Tomé en PríncipeEl S" +
- "alvadorSint MaartenSiriëSwazilandTristan da CunhaTurks- en Caicoseilande" +
- "TsjadFranse Suidelike GebiedeTogoThailandTadjikistanTokelauOos-TimorTurk" +
- "meniëTunisiëTongaTurkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUga" +
- "ndaVS klein omliggende eilandeVerenigde State van AmerikaUruguayOesbekis" +
- "tanVatikaanstadSt. Vincent en die GrenadineVenezuelaBritse Maagde-eiland" +
- "eAmerikaanse Maagde-eilandeViëtnamVanuatuWallis en FutunaSamoaKosovoJeme" +
- "nMayotteSuid-AfrikaZambiëZimbabweOnbekende gebiedWêreldAfrikaNoord-Ameri" +
- "kaSuid-AmerikaOseaniëWes-AfrikaSentraal-AmerikaOos-AfrikaNoord-AfrikaMid" +
- "de-AfrikaSuider-AfrikaAmerikasNoordelike AmerikaKaribiesOos-AsiëSuid-Asi" +
- "ëSuidoos-AsiëSuid-EuropaAustralasiëMelanesiëMikronesiese streekPolinesi" +
- "ëAsiëSentraal-AsiëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-EuropaLatyns-" +
- "Amerika"
-
-var afRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0016, 0x0030, 0x003a, 0x004c, 0x0054, 0x005c,
- 0x0064, 0x0076, 0x007c, 0x0086, 0x0091, 0x00a1, 0x00aa, 0x00b4,
- 0x00b9, 0x00c6, 0x00d1, 0x00e7, 0x00ef, 0x00f9, 0x0100, 0x010c,
- 0x0114, 0x011b, 0x0122, 0x0127, 0x0137, 0x013e, 0x0145, 0x014d,
- 0x0160, 0x0169, 0x0170, 0x0177, 0x0184, 0x018c, 0x0193, 0x0199,
- 0x019f, 0x01ac, 0x01d0, 0x01ed, 0x0200, 0x020b, 0x0213, 0x021e,
- 0x0223, 0x022b, 0x0230, 0x0239, 0x0249, 0x0253, 0x0257, 0x0261,
- 0x0269, 0x0273, 0x0279, 0x028c, 0x0295, 0x02a1, 0x02a9, 0x02b2,
- // Entry 40 - 7F
- 0x02ba, 0x02d0, 0x02d8, 0x02e8, 0x02ef, 0x02f6, 0x02fc, 0x0306,
- 0x030d, 0x0313, 0x031c, 0x0329, 0x0330, 0x0335, 0x0344, 0x034f,
- 0x035d, 0x0365, 0x036b, 0x037e, 0x0385, 0x038d, 0x0399, 0x03a1,
- 0x03a6, 0x03af, 0x03b8, 0x03bf, 0x03c5, 0x03cf, 0x03e1, 0x03eb,
- 0x0419, 0x0422, 0x0426, 0x0433, 0x0439, 0x044b, 0x0464, 0x046c,
- 0x0474, 0x047a, 0x0482, 0x0493, 0x049d, 0x04a4, 0x04aa, 0x04b4,
- 0x04ba, 0x04d4, 0x04d8, 0x04dc, 0x04e2, 0x04e9, 0x04ef, 0x04f6,
- 0x04ff, 0x0504, 0x0509, 0x0512, 0x051a, 0x0522, 0x0528, 0x053a,
- // Entry 80 - BF
- 0x0545, 0x054f, 0x0556, 0x0565, 0x056e, 0x0572, 0x0579, 0x0582,
- 0x058f, 0x0598, 0x05a0, 0x05a7, 0x05ad, 0x05b6, 0x05bd, 0x05c3,
- 0x05ca, 0x05d0, 0x05d7, 0x05e1, 0x05eb, 0x05f5, 0x0604, 0x060e,
- 0x0612, 0x0621, 0x062a, 0x0639, 0x064e, 0x0658, 0x0663, 0x066d,
- 0x0672, 0x067b, 0x0683, 0x0689, 0x0690, 0x0699, 0x06a2, 0x06aa,
- 0x06b9, 0x06be, 0x06cb, 0x06d3, 0x06dc, 0x06e5, 0x06ed, 0x06f2,
- 0x06f7, 0x06fb, 0x0707, 0x070b, 0x0711, 0x0715, 0x0725, 0x0737,
- 0x0740, 0x0748, 0x074c, 0x0762, 0x0771, 0x077c, 0x078e, 0x0796,
- // Entry C0 - FF
- 0x079b, 0x07a3, 0x07a8, 0x07bb, 0x07c3, 0x07cc, 0x07d3, 0x07da,
- 0x07e0, 0x07ee, 0x07fd, 0x0806, 0x080c, 0x0811, 0x081a, 0x0825,
- 0x082e, 0x0843, 0x084b, 0x0857, 0x0861, 0x0868, 0x0870, 0x0878,
- 0x0883, 0x089a, 0x08a5, 0x08b1, 0x08b7, 0x08c0, 0x08d0, 0x08e7,
- 0x08ec, 0x0904, 0x0908, 0x0910, 0x091b, 0x0922, 0x092b, 0x0935,
- 0x093d, 0x0942, 0x0948, 0x095a, 0x0960, 0x0966, 0x096f, 0x0978,
- 0x097e, 0x0999, 0x09b4, 0x09bb, 0x09c6, 0x09d2, 0x09ee, 0x09f7,
- 0x0a0c, 0x0a26, 0x0a2e, 0x0a35, 0x0a45, 0x0a4a, 0x0a50, 0x0a55,
- // Entry 100 - 13F
- 0x0a5c, 0x0a67, 0x0a6e, 0x0a76, 0x0a86, 0x0a8d, 0x0a93, 0x0aa0,
- 0x0aac, 0x0ab4, 0x0abe, 0x0ace, 0x0ad8, 0x0ae4, 0x0af0, 0x0afd,
- 0x0b05, 0x0b17, 0x0b1f, 0x0b28, 0x0b32, 0x0b3f, 0x0b4a, 0x0b56,
- 0x0b60, 0x0b73, 0x0b7d, 0x0b82, 0x0b90, 0x0b99, 0x0b9f, 0x0ba9,
- 0x0bb5, 0x0bbf, 0x0bcd,
-} // Size: 606 bytes
-
-var amRegionStr string = "" + // Size: 5336 bytes
- "አሴንሽን ደሴትአንዶራየተባበሩት አረብ ኤምሬትስአፍጋኒስታንአንቲጓ እና ባሩዳአንጉኢላአልባኒያአርሜኒያኔዘርላንድስ አን" +
- "ቲልስአንጐላአንታርክቲካአርጀንቲናየአሜሪካ ሳሞአኦስትሪያአውስትራልያአሩባየአላንድ ደሴቶችአዘርባጃንቦስኒያ እና ሄር" +
- "ዞጎቪኒያባርቤዶስባንግላዲሽቤልጄምቡርኪና ፋሶቡልጌሪያባህሬንብሩንዲቤኒንቅዱስ በርቴሎሜቤርሙዳብሩኒቦሊቪያየካሪቢያን " +
- "ኔዘርላንድስብራዚልባሃማስቡህታንቡቬት ደሴትቦትስዋናቤላሩስቤሊዘካናዳኮኮስ(ኬሊንግ) ደሴቶችኮንጎ-ኪንሻሳየመካከለኛው" +
- " አፍሪካ ሪፐብሊክኮንጎ ብራዛቪልስዊዘርላንድኮት ዲቯርኩክ ደሴቶችቺሊካሜሩንቻይናኮሎምቢያክሊፐርቶን ደሴትኮስታ ሪካኩባ" +
- "ኬፕ ቬርዴኩራሳዎየገና ደሴትሳይፕረስቼክ ሪፑብሊክጀርመንዲዬጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶሚኒክ ሪፑብሊክአልጄሪያሴ" +
- "ኡታና ሜሊላኢኳዶርኤስቶኒያግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያየአውሮፓ ህብረትፊንላንድፊጂየፎክላንድ ደሴቶችሚክ" +
- "ሮኔዢያየፋሮ ደሴቶችፈረንሳይጋቦንእንግሊዝግሬናዳጆርጂያየፈረንሳይ ጉዊአናጉርነሲጋናጂብራልተርግሪንላንድጋምቢያጊኒጉዋ" +
- "ደሉፕኢኳቶሪያል ጊኒግሪክደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶችጉዋቲማላጉዋምጊኒ ቢሳኦጉያናሆንግ ኮንግ SAR" +
- " ቻይናኽርድ ደሴቶችና ማክዶናልድ ደሴቶችሆንዱራስክሮኤሽያሀይቲሀንጋሪየካናሪ ደሴቶችኢንዶኔዢያአየርላንድእስራኤልአይል " +
- "ኦፍ ማንህንድየብሪታኒያ ህንድ ውቂያኖስ ግዛትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬንያኪርጊስታንካምቦ" +
- "ዲያኪሪባቲኮሞሮስቅዱስ ኪትስ እና ኔቪስሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊባኖስሴንት ሉቺያ" +
- "ሊችተንስታይንሲሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንተኔግሮሴንት ማርቲንማዳጋስካር" +
- "ማርሻል አይላንድመቄዶንያማሊማይናማር(በርማ)ሞንጎሊያማካኡ ልዩ የአስተዳደር ክልል ቻይናየሰሜናዊ ማሪያና ደሴቶችማ" +
- "ርቲኒክሞሪቴኒያሞንትሴራትማልታሞሪሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖርፎልክ ደሴትናይጄ" +
- "ሪያኒካራጓኔዘርላንድኖርዌይኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩየፈረንሳይ ፖሊኔዢያፓፑዋ ኒው ጊኒፊሊፒንስፓኪስታ" +
- "ንፖላንድቅዱስ ፒዬር እና ሚኩኤሎንፒትካኢርን አይስላንድፖርታ ሪኮየፍልስጤም ግዛትፖርቱጋልፓላውፓራጓይኳታርአውትላይ" +
- "ንግ ኦሽንያሪዩኒየንሮሜኒያሰርብያራሽያሩዋንዳሳውድአረቢያሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴንት ሄለናስሎቬኒያ" +
- "ስቫልባርድ እና ጃን ማየንስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜ እና ፕሪንሲፔኤል ሳልቫ" +
- "ዶርሲንት ማርተንሲሪያሱዋዚላንድትሪስታን ዲ ኩንሃየቱርኮችና የካኢኮስ ደሴቶችቻድየፈረንሳይ ደቡባዊ ግዛቶችቶጐታይላ" +
- "ንድታጃኪስታንቶክላውምስራቅ ሌስትቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪናዳድ እና ቶቤጎቱቫሉታይዋንታንዛኒያዩክሬንዩጋንዳ" +
- "የዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶችዩናይትድ ስቴትስኡራጓይኡዝቤኪስታንቫቲካን ከተማቅዱስ ቪንሴንት እና ግሬናዲንስቬን" +
- "ዙዌላየእንግሊዝ ቨርጂን ደሴቶችየአሜሪካ ቨርጂን ደሴቶችቬትናምቫኑአቱዋሊስ እና ፉቱና ደሴቶችሳሞአኮሶቮየመንሜይኦቴ" +
- "ደቡብ አፍሪካዛምቢያዚምቧቤያልታወቀ ክልልዓለምአፍሪካሰሜን አሜሪካደቡብ አሜሪካኦሽኒአምስራቃዊ አፍሪካመካከለኛው አ" +
- "ሜሪካምዕራባዊ አፍሪካሰሜናዊ አፍሪካመካከለኛው አፍሪካደቡባዊ አፍሪካአሜሪካሰሜናዊ አሜሪካካሪቢያንምዕራባዊ እሲያደ" +
- "ቡባዊ እሲያምዕራባዊ ደቡብ እሲያደቡባዊ አውሮፓአውስትራሊያሜላኔዥያየማይክሮኔዥያን ክልልፖሊኔዥያእሲያመካከለኛው እ" +
- "ሲያምስራቃዊ እሲያአውሮፓምዕራባዊ አውሮፓሰሜናዊ አውሮፓምስራቃዊ አውሮፓላቲን አሜሪካ"
-
-var amRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0019, 0x0025, 0x0051, 0x0066, 0x0083, 0x0092, 0x00a1,
- 0x00b0, 0x00d5, 0x00e1, 0x00f6, 0x0108, 0x0121, 0x0130, 0x0145,
- 0x014e, 0x016a, 0x017c, 0x01a5, 0x01b4, 0x01c6, 0x01d2, 0x01e5,
- 0x01f4, 0x0200, 0x020c, 0x0215, 0x022e, 0x023a, 0x0243, 0x024f,
- 0x0277, 0x0283, 0x028f, 0x029b, 0x02ae, 0x02bd, 0x02c9, 0x02d2,
- 0x02db, 0x02ff, 0x0315, 0x0347, 0x0360, 0x0375, 0x0385, 0x0398,
- 0x039e, 0x03aa, 0x03b3, 0x03c2, 0x03de, 0x03ee, 0x03f4, 0x0404,
- 0x0410, 0x0423, 0x0432, 0x0448, 0x0454, 0x046a, 0x0473, 0x0482,
- // Entry 40 - 7F
- 0x048e, 0x04aa, 0x04b9, 0x04cf, 0x04db, 0x04ea, 0x04f3, 0x050c,
- 0x0518, 0x0521, 0x0530, 0x054c, 0x055b, 0x0561, 0x0580, 0x0592,
- 0x05a8, 0x05b7, 0x05c0, 0x05cf, 0x05db, 0x05e7, 0x0606, 0x0612,
- 0x0618, 0x062a, 0x063c, 0x0648, 0x064e, 0x065d, 0x0676, 0x067f,
- 0x06c6, 0x06d5, 0x06de, 0x06ee, 0x06f7, 0x0718, 0x0751, 0x0760,
- 0x076f, 0x0778, 0x0784, 0x079d, 0x07af, 0x07c1, 0x07d0, 0x07e7,
- 0x07f0, 0x0826, 0x082f, 0x0838, 0x084a, 0x0856, 0x085f, 0x086b,
- 0x0877, 0x0880, 0x0889, 0x089b, 0x08aa, 0x08b6, 0x08c2, 0x08e6,
- // Entry 80 - BF
- 0x08f9, 0x090c, 0x0915, 0x092e, 0x0940, 0x0949, 0x0955, 0x0968,
- 0x0980, 0x098f, 0x099e, 0x09a7, 0x09b6, 0x09cb, 0x09d7, 0x09e0,
- 0x09e9, 0x09f2, 0x09fe, 0x0a10, 0x0a26, 0x0a38, 0x0a54, 0x0a63,
- 0x0a69, 0x0a83, 0x0a92, 0x0acc, 0x0af5, 0x0b04, 0x0b13, 0x0b25,
- 0x0b2e, 0x0b3a, 0x0b49, 0x0b52, 0x0b5e, 0x0b6a, 0x0b79, 0x0b85,
- 0x0b9b, 0x0ba4, 0x0bbd, 0x0bcc, 0x0bd8, 0x0bea, 0x0bf6, 0x0bff,
- 0x0c08, 0x0c11, 0x0c24, 0x0c2d, 0x0c36, 0x0c3c, 0x0c5e, 0x0c75,
- 0x0c84, 0x0c93, 0x0c9f, 0x0cc9, 0x0cee, 0x0cfe, 0x0d1a, 0x0d29,
- // Entry C0 - FF
- 0x0d32, 0x0d3e, 0x0d47, 0x0d69, 0x0d78, 0x0d84, 0x0d90, 0x0d99,
- 0x0da5, 0x0dba, 0x0dd0, 0x0ddc, 0x0de5, 0x0df1, 0x0e00, 0x0e13,
- 0x0e22, 0x0e4c, 0x0e5b, 0x0e6a, 0x0e7a, 0x0e86, 0x0e8f, 0x0e9b,
- 0x0eae, 0x0ed2, 0x0ee8, 0x0efe, 0x0f07, 0x0f19, 0x0f36, 0x0f65,
- 0x0f6b, 0x0f97, 0x0f9d, 0x0fac, 0x0fbe, 0x0fca, 0x0fe0, 0x0ff8,
- 0x1004, 0x100d, 0x1016, 0x1036, 0x103f, 0x104b, 0x105a, 0x1066,
- 0x1072, 0x10a4, 0x10c0, 0x10cc, 0x10e1, 0x10f7, 0x112a, 0x1139,
- 0x1165, 0x118e, 0x119a, 0x11a6, 0x11cd, 0x11d6, 0x11df, 0x11e8,
- // Entry 100 - 13F
- 0x11f4, 0x120a, 0x1216, 0x1222, 0x123b, 0x1244, 0x1250, 0x1266,
- 0x127c, 0x1288, 0x12a4, 0x12c3, 0x12df, 0x12f8, 0x1317, 0x1330,
- 0x133c, 0x1355, 0x1364, 0x137d, 0x1393, 0x13b6, 0x13cf, 0x13e4,
- 0x13f3, 0x1418, 0x1427, 0x1430, 0x144c, 0x1465, 0x1471, 0x148d,
- 0x14a6, 0x14c2, 0x14d8,
-} // Size: 606 bytes
-
-var arRegionStr string = "" + // Size: 5380 bytes
- "جزيرة أسينشيونأندوراالإمارات العربية المتحدةأفغانستانأنتيغوا وبربوداأنغو" +
- "يلاألبانياأرمينياجزر الأنتيل الهولنديةأنغولاأنتاركتيكاالأرجنتينساموا ال" +
- "أمريكيةالنمساأسترالياأروباجزر آلاندأذربيجانالبوسنة والهرسكبربادوسبنجلاد" +
- "يشبلجيكابوركينا فاسوبلغارياالبحرينبورونديبنينسان بارتليميبرمودابرونايبو" +
- "ليفياهولندا الكاريبيةالبرازيلالبهامابوتانجزيرة بوفيهبتسوانابيلاروسبليزك" +
- "نداجزر كوكوس (كيلينغ)الكونغو - كينشاساجمهورية أفريقيا الوسطىالكونغو - ب" +
- "رازافيلسويسراساحل العاججزر كوكتشيليالكاميرونالصينكولومبياجزيرة كليبيرتو" +
- "نكوستاريكاكوباالرأس الأخضركوراساوجزيرة الكريسماسقبرصجمهورية التشيكألمان" +
- "يادييغو غارسياجيبوتيالدانمركدومينيكاجمهورية الدومينيكالجزائرسيوتا وميلي" +
- "لاالإكوادورإستونيامصرالصحراء الغربيةإريترياإسبانياإثيوبياالاتحاد الأورو" +
- "بيفنلندافيجيجزر فوكلاندميكرونيزياجزر فاروفرنساالجابونالمملكة المتحدةغري" +
- "ناداجورجياغويانا الفرنسيةغيرنزيغاناجبل طارقغرينلاندغامبياغينياغوادلوبغي" +
- "نيا الإستوائيةاليونانجورجيا الجنوبية وجزر ساندويتش الجنوبيةغواتيمالاغوا" +
- "مغينيا بيساوغياناهونغ كونغ الصينيةجزيرة هيرد وجزر ماكدونالدهندوراسكروات" +
- "ياهايتيهنغارياجزر الكناريإندونيسياأيرلنداإسرائيلجزيرة مانالهندالإقليم ا" +
- "لبريطاني في المحيط الهنديالعراقإيرانأيسلنداإيطالياجيرسيجامايكاالأردنالي" +
- "ابانكينياقرغيزستانكمبودياكيريباتيجزر القمرسانت كيتس ونيفيسكوريا الشمالي" +
- "ةكوريا الجنوبيةالكويتجزر الكايمنكازاخستانلاوسلبنانسانت لوسياليختنشتاينس" +
- "ريلانكاليبيرياليسوتوليتوانيالوكسمبورغلاتفياليبياالمغربموناكومولدافياالج" +
- "بل الأسودسانت مارتنمدغشقرجزر المارشالمقدونياماليميانمار -بورمامنغوليامك" +
- "او الصينية (منطقة إدارية خاصة)جزر ماريانا الشماليةمارتينيكموريتانيامونت" +
- "سراتمالطاموريشيوسجزر المالديفملاويالمكسيكماليزياموزمبيقناميبياكاليدونيا" +
- " الجديدةالنيجرجزيرة نورفوكنيجيريانيكاراغواهولنداالنرويجنيبالناورونيوينيو" +
- "زيلنداعُمانبنمابيروبولينيزيا الفرنسيةبابوا غينيا الجديدةالفلبينباكستانب" +
- "ولنداسانت بيير وميكولونجزر بيتكيرنبورتوريكوالأراضي الفلسطينيةالبرتغالبا" +
- "لاوباراغوايقطرأوقيانوسيا النائيةروينيونرومانياصربياروسياروانداالمملكة ا" +
- "لعربية السعوديةجزر سليمانسيشلالسودانالسويدسنغافورةسانت هيلناسلوفينياسفا" +
- "لبارد وجان مايانسلوفاكياسيراليونسان مارينوالسنغالالصومالسورينامجنوب الس" +
- "ودانساو تومي وبرينسيبيالسلفادورسينت مارتنسورياسوازيلاندتريستان دي كونها" +
- "جزر توركس وكايكوستشادالأقاليم الجنوبية الفرنسيةتوغوتايلاندطاجيكستانتوكي" +
- "لوتيمور الشرقيةتركمانستانتونستونغاتركياترينيداد وتوباغوتوفالوتايوانتنزا" +
- "نياأوكرانياأوغنداجزر الولايات المتحدة النائيةالولايات المتحدةأورغوايأوز" +
- "بكستانالفاتيكانسانت فنسنت وغرنادينفنزويلاجزر فرجين البريطانيةجزر فرجين " +
- "الأمريكيةفيتنامفانواتوجزر والس وفوتوناسامواكوسوفواليمنمايوتجنوب أفريقيا" +
- "زامبيازيمبابويمنطقة غير معروفةالعالمأفريقياأمريكا الشماليةأمريكا الجنوب" +
- "يةأوقيانوسياغرب أفريقياأمريكا الوسطىشرق أفريقياشمال أفريقياوسط أفريقياأ" +
- "فريقيا الجنوبيةالأمريكتانشمال أمريكاالكاريبيشرق آسياجنوب آسياجنوب شرق آ" +
- "سياجنوب أوروباأسترالاسياميلانيزياالجزر الميكرونيزيةبولينيزياآسياوسط آسي" +
- "اغرب آسياأوروباشرق أوروباشمال أوروباغرب أوروباأمريكا اللاتينية"
-
-var arRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0027, 0x0055, 0x0067, 0x0084, 0x0092, 0x00a0,
- 0x00ae, 0x00d6, 0x00e2, 0x00f6, 0x0108, 0x0125, 0x0131, 0x0141,
- 0x014b, 0x015c, 0x016c, 0x0189, 0x0197, 0x01a7, 0x01b3, 0x01ca,
- 0x01d8, 0x01e6, 0x01f4, 0x01fc, 0x0213, 0x021f, 0x022b, 0x0239,
- 0x0258, 0x0268, 0x0276, 0x0280, 0x0295, 0x02a3, 0x02b1, 0x02b9,
- 0x02c1, 0x02e1, 0x0300, 0x032a, 0x034b, 0x0357, 0x036a, 0x0377,
- 0x0381, 0x0393, 0x039d, 0x03ad, 0x03ca, 0x03dc, 0x03e4, 0x03fb,
- 0x0409, 0x0426, 0x042e, 0x0449, 0x0457, 0x046e, 0x047a, 0x048a,
- // Entry 40 - 7F
- 0x049a, 0x04bb, 0x04c9, 0x04e2, 0x04f4, 0x0502, 0x0508, 0x0525,
- 0x0533, 0x0541, 0x054f, 0x056e, 0x057a, 0x0582, 0x0597, 0x05ab,
- 0x05ba, 0x05c4, 0x05d2, 0x05ef, 0x05fd, 0x0609, 0x0626, 0x0632,
- 0x063a, 0x0649, 0x0659, 0x0665, 0x066f, 0x067d, 0x069c, 0x06aa,
- 0x06f2, 0x0704, 0x070c, 0x0721, 0x072b, 0x074b, 0x077a, 0x0788,
- 0x0796, 0x07a0, 0x07ae, 0x07c3, 0x07d5, 0x07e3, 0x07f1, 0x0802,
- 0x080c, 0x084c, 0x0858, 0x0862, 0x0870, 0x087e, 0x0888, 0x0896,
- 0x08a2, 0x08b0, 0x08ba, 0x08cc, 0x08da, 0x08ea, 0x08fb, 0x0919,
- // Entry 80 - BF
- 0x0934, 0x094f, 0x095b, 0x0970, 0x0982, 0x098a, 0x0994, 0x09a7,
- 0x09bb, 0x09cb, 0x09d9, 0x09e5, 0x09f5, 0x0a07, 0x0a13, 0x0a1d,
- 0x0a29, 0x0a35, 0x0a45, 0x0a5c, 0x0a6f, 0x0a7b, 0x0a92, 0x0aa0,
- 0x0aa8, 0x0ac2, 0x0ad0, 0x0b0a, 0x0b30, 0x0b40, 0x0b52, 0x0b62,
- 0x0b6c, 0x0b7c, 0x0b93, 0x0b9d, 0x0bab, 0x0bb9, 0x0bc7, 0x0bd5,
- 0x0bf6, 0x0c02, 0x0c19, 0x0c27, 0x0c39, 0x0c45, 0x0c53, 0x0c5d,
- 0x0c67, 0x0c6f, 0x0c81, 0x0c8b, 0x0c93, 0x0c9b, 0x0cbe, 0x0ce2,
- 0x0cf0, 0x0cfe, 0x0d0a, 0x0d2c, 0x0d41, 0x0d53, 0x0d76, 0x0d86,
- // Entry C0 - FF
- 0x0d90, 0x0da0, 0x0da6, 0x0dc9, 0x0dd7, 0x0de5, 0x0def, 0x0df9,
- 0x0e05, 0x0e33, 0x0e46, 0x0e4e, 0x0e5c, 0x0e68, 0x0e78, 0x0e8b,
- 0x0e9b, 0x0ebf, 0x0ecf, 0x0edf, 0x0ef2, 0x0f00, 0x0f0e, 0x0f1c,
- 0x0f33, 0x0f55, 0x0f67, 0x0f7a, 0x0f84, 0x0f96, 0x0fb4, 0x0fd4,
- 0x0fdc, 0x100e, 0x1016, 0x1024, 0x1036, 0x1042, 0x105b, 0x106f,
- 0x1077, 0x1081, 0x108b, 0x10aa, 0x10b6, 0x10c2, 0x10d0, 0x10e0,
- 0x10ec, 0x1121, 0x1140, 0x114e, 0x1160, 0x1172, 0x1196, 0x11a4,
- 0x11ca, 0x11ee, 0x11fa, 0x1208, 0x1226, 0x1230, 0x123c, 0x1246,
- // Entry 100 - 13F
- 0x1250, 0x1267, 0x1273, 0x1283, 0x12a1, 0x12ad, 0x12bb, 0x12d8,
- 0x12f5, 0x1309, 0x131e, 0x1337, 0x134c, 0x1363, 0x1378, 0x1397,
- 0x13ab, 0x13c0, 0x13d0, 0x13df, 0x13f0, 0x1408, 0x141d, 0x1431,
- 0x1443, 0x1466, 0x1478, 0x1480, 0x148f, 0x149e, 0x14aa, 0x14bd,
- 0x14d2, 0x14e5, 0x1504,
-} // Size: 606 bytes
-
-var azRegionStr string = "" + // Size: 3197 bytes
- "Yüksəliş AdasıAndorraBirləşmiş Ərəb ƏmirlikləriƏfqanıstanAntiqua və Barb" +
- "udaAngilaAlbaniyaErmənistanHollandiya antilleriAnqolaAntarktikaArgentina" +
- "Amerika SamoasıAvstriyaAvstraliyaArubaAland AdalarıAzərbaycanBosniya və " +
- "HersoqovinaBarbadosBanqladeşBelçikaBurkina FasoBolqariyaBəhreynBurundiBe" +
- "ninSan BartolomeyBermudaBruneyBoliviyaKarib NiderlandıBraziliyaBaham Ada" +
- "larıButanBuve AdasıBotsvanaBelarusBelizKanadaKokos AdalarıKonqo - Kinşas" +
- "aMərkəzi Afrika RespublikasıKonqo - BrazzavilİsveçrəFil Dişi SahiliKuk A" +
- "dalarıÇiliKamerunÇinKolumbiyaKlipperton AdasıKosta RikaKubaKape VerdeKur" +
- "asaoMilad AdasıKiprÇexiyaAlmaniyaDieqo QarsiyaCibutiDanimarkaDominikaDom" +
- "inikan RespublikasıƏlcəzairSeuta və MelilyaEkvadorEstoniyaMisirQərbi Sah" +
- "araEritreyaİspaniyaEfiopiyaAvropa BirliyiFinlandiyaFiciFolklend AdalarıM" +
- "ikroneziyaFarer AdalarıFransaQabonBirləşmiş KrallıqQrenadaGürcüstanFrans" +
- "ız QviyanasıGernseyQanaGibraltarQrenlandiyaQambiyaQvineyaQvadelupaEkvat" +
- "orial QvineyaYunanıstanCənubi Corciya və Cənubi Sendviç AdalarıQvatemala" +
- "QuamQvineya-BisauQviyanaHonq Konq Xüsusi İnzibati Ərazi ÇinHerd və Mak D" +
- "onald AdalarıHondurasXorvatiyaHaitiMacarıstanKanar Adalarıİndoneziyaİrla" +
- "ndiyaİsrailMen AdasıHindistanBritaniya Hind Okeanı Ərazisiİraqİranİsland" +
- "iyaİtaliyaCersiYamaykaİordaniyaYaponiyaKeniyaQırğızıstanKambocaKiribatiK" +
- "omor AdalarıSan Kits və NevisŞimali KoreyaCənubi KoreyaKüveytKayman Adal" +
- "arıQazaxıstanLaosLivanSan LüsiyaLixtenşteynŞri LankaLiberiyaLesotoLitvaL" +
- "üksemburqLatviyaLiviyaMərakeşMonakoMoldovaMonteneqroSan MartinMadaqaska" +
- "rMarşal AdalarıMakedoniyaMaliMyanmaMonqoliyaMakao Xüsusi İnzibati Ərazi " +
- "ÇinŞimali Mariana AdalarıMartinikMavritaniyaMonseratMaltaMavrikiMaldiv " +
- "AdalarıMalaviMeksikaMalayziyaMozambikNamibiyaYeni KaledoniyaNigerNorfolk" +
- " AdasıNigeriyaNikaraquaNiderlandNorveçNepalNauruNiueYeni ZelandiyaOmanPa" +
- "namaPeruFransız PolineziyasıPapua Yeni QvineyaFilippinPakistanPolşaSan P" +
- "ier və MikelonPitkern AdalarıPuerto RikoFələstin ƏraziləriPortuqalPalauP" +
- "araqvayQatarUzaq OkeaniyaReunionRumıniyaSerbiyaRusiyaRuandaSəudiyyə Ərəb" +
- "istanıSolomon AdalarıSeyşel AdalarıSudanİsveçSinqapurMüqəddəs YelenaSlov" +
- "eniyaSvalbard və Yan MayenSlovakiyaSiera LeonSan MarinoSeneqalSomaliSuri" +
- "namCənubi SudanSao Tome və PrinsipSalvadorSint MaartenSuriyaSvazilendTri" +
- "stan da KunyaTurks və Kaikos AdalarıÇadFransa Cənub ƏraziləriToqoTayland" +
- "TacikistanTokelauŞərqi TimorTürkmənistanTunisTonqaTürkiyaTrinidad və Tob" +
- "aqoTuvaluTayvanTanzaniyaUkraynaUqandaBirləşmiş Ştatlar Uzaq AdalarAmerik" +
- "a Birləşmiş ŞtatlarıUruqvayÖzbəkistanVatikanSan Vinsent və QrenadaVenesu" +
- "elaBritaniya Vircin AdalarıABŞ Vircin AdalarıVyetnamVanuatuUolis və Futu" +
- "naSamoaKosovoYəmənMayotCənub AfrikaZambiyaZimbabveNaməlum RegionDünyaAfr" +
- "ikaŞimali AmerikaCənubi AmerikaOkeaniyaQərbi AfrikaMərkəzi AmerikaŞərqi " +
- "AfrikaŞimali AfrikaMərkəzi AfrikaCənubi AfrikaAmerikalarŞimal AmerikasıK" +
- "aribŞərqi AsiyaCənubi AsiyaCənub-Şərqi AsiyaCənubi AvropaAvstralaziyaMel" +
- "aneziyaMikroneziya RegionuPolineziyaAsiyaMərkəzi AsiyaQərbi AsiyaAvropaŞ" +
- "ərqi AvropaŞimali AvropaQərbi AvropaLatın Amerikası"
-
-var azRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x0019, 0x003a, 0x0046, 0x0059, 0x005f, 0x0067,
- 0x0072, 0x0086, 0x008c, 0x0096, 0x009f, 0x00af, 0x00b7, 0x00c1,
- 0x00c6, 0x00d4, 0x00df, 0x00f6, 0x00fe, 0x0108, 0x0110, 0x011c,
- 0x0125, 0x012d, 0x0134, 0x0139, 0x0147, 0x014e, 0x0154, 0x015c,
- 0x016d, 0x0176, 0x0184, 0x0189, 0x0194, 0x019c, 0x01a3, 0x01a8,
- 0x01ae, 0x01bc, 0x01cc, 0x01ea, 0x01fb, 0x0205, 0x0215, 0x0221,
- 0x0226, 0x022d, 0x0231, 0x023a, 0x024b, 0x0255, 0x0259, 0x0263,
- 0x026a, 0x0276, 0x027a, 0x0281, 0x0289, 0x0296, 0x029c, 0x02a5,
- // Entry 40 - 7F
- 0x02ad, 0x02c4, 0x02ce, 0x02df, 0x02e6, 0x02ee, 0x02f3, 0x0300,
- 0x0308, 0x0311, 0x0319, 0x0327, 0x0331, 0x0335, 0x0346, 0x0351,
- 0x035f, 0x0365, 0x036a, 0x037f, 0x0386, 0x0391, 0x03a4, 0x03ab,
- 0x03af, 0x03b8, 0x03c3, 0x03ca, 0x03d1, 0x03da, 0x03ec, 0x03f7,
- 0x0424, 0x042d, 0x0431, 0x043e, 0x0445, 0x046c, 0x0488, 0x0490,
- 0x0499, 0x049e, 0x04a9, 0x04b7, 0x04c2, 0x04cc, 0x04d3, 0x04dd,
- 0x04e6, 0x0505, 0x050a, 0x050f, 0x0519, 0x0521, 0x0526, 0x052d,
- 0x0537, 0x053f, 0x0545, 0x0554, 0x055b, 0x0563, 0x0571, 0x0583,
- // Entry 80 - BF
- 0x0591, 0x059f, 0x05a6, 0x05b5, 0x05c0, 0x05c4, 0x05c9, 0x05d4,
- 0x05e0, 0x05ea, 0x05f2, 0x05f8, 0x05fd, 0x0608, 0x060f, 0x0615,
- 0x061e, 0x0624, 0x062b, 0x0635, 0x063f, 0x0649, 0x0659, 0x0663,
- 0x0667, 0x066d, 0x0676, 0x0699, 0x06b1, 0x06b9, 0x06c4, 0x06cc,
- 0x06d1, 0x06d8, 0x06e7, 0x06ed, 0x06f4, 0x06fd, 0x0705, 0x070d,
- 0x071c, 0x0721, 0x072f, 0x0737, 0x0740, 0x0749, 0x0750, 0x0755,
- 0x075a, 0x075e, 0x076c, 0x0770, 0x0776, 0x077a, 0x0790, 0x07a2,
- 0x07aa, 0x07b2, 0x07b8, 0x07cc, 0x07dc, 0x07e7, 0x07fd, 0x0805,
- // Entry C0 - FF
- 0x080a, 0x0812, 0x0817, 0x0824, 0x082b, 0x0834, 0x083b, 0x0841,
- 0x0847, 0x085f, 0x086f, 0x087f, 0x0884, 0x088b, 0x0893, 0x08a5,
- 0x08ae, 0x08c4, 0x08cd, 0x08d7, 0x08e1, 0x08e8, 0x08ee, 0x08f5,
- 0x0902, 0x0916, 0x091e, 0x092a, 0x0930, 0x0939, 0x0949, 0x0962,
- 0x0966, 0x097f, 0x0983, 0x098a, 0x0994, 0x099b, 0x09a8, 0x09b6,
- 0x09bb, 0x09c0, 0x09c8, 0x09db, 0x09e1, 0x09e7, 0x09f0, 0x09f7,
- 0x09fd, 0x0a1e, 0x0a3d, 0x0a44, 0x0a50, 0x0a57, 0x0a6e, 0x0a77,
- 0x0a90, 0x0aa4, 0x0aab, 0x0ab2, 0x0ac2, 0x0ac7, 0x0acd, 0x0ad4,
- // Entry 100 - 13F
- 0x0ad9, 0x0ae6, 0x0aed, 0x0af5, 0x0b04, 0x0b0a, 0x0b10, 0x0b1f,
- 0x0b2e, 0x0b36, 0x0b43, 0x0b54, 0x0b62, 0x0b70, 0x0b80, 0x0b8e,
- 0x0b98, 0x0ba9, 0x0bae, 0x0bbb, 0x0bc8, 0x0bdc, 0x0bea, 0x0bf6,
- 0x0c00, 0x0c13, 0x0c1d, 0x0c22, 0x0c31, 0x0c3d, 0x0c43, 0x0c51,
- 0x0c5f, 0x0c6c, 0x0c7d,
-} // Size: 606 bytes
-
-var bgRegionStr string = "" + // Size: 5899 bytes
- "остров ВъзнесениеАндораОбединени арабски емирстваАфганистанАнтигуа и Бар" +
- "будаАнгуилаАлбанияАрменияХоландски АнтилиАнголаАнтарктикаАржентинаАмери" +
- "канска СамоаАвстрияАвстралияАрубаОландски островиАзербайджанБосна и Хер" +
- "цеговинаБарбадосБангладешБелгияБуркина ФасоБългарияБахрейнБурундиБенинС" +
- "ен БартелемиБермудаБруней ДаруссаламБоливияКарибска НидерландияБразилия" +
- "БахамиБутаностров БувеБотсванаБеларусБелизКанадаКокосови острови (остро" +
- "ви Кийлинг)Конго (Киншаса)Централноафриканска републикаКонго (Бразавил)" +
- "ШвейцарияКот д’Ивоарострови КукЧилиКамерунКитайКолумбияостров Клипертон" +
- "Коста РикаКубаКабо ВердеКюрасаоостров РождествоКипърЧешка републикаГерм" +
- "анияДиего ГарсияДжибутиДанияДоминикаДоминиканска републикаАлжирСеута и " +
- "МелияЕквадорЕстонияЕгипетЗападна СахараЕритреяИспанияЕтиопияЕвропейски " +
- "съюзФинландияФиджиФолклендски островиМикронезияФарьорски островиФранция" +
- "ГабонОбединеното кралствоГренадаГрузияФренска ГвианаГърнзиГанаГибралтар" +
- "ГренландияГамбияГвинеяГваделупаЕкваториална ГвинеяГърцияЮжна Джорджия и" +
- " Южни Сандвичеви островиГватемалаГуамГвинея-БисауГаянаХонконг, САР на Ки" +
- "тайостров Хърд и острови МакдоналдХондурасХърватияХаитиУнгарияКанарски " +
- "островиИндонезияИрландияИзраелостров МанИндияБританска територия в Инди" +
- "йския океанИракИранИсландияИталияДжърсиЯмайкаЙорданияЯпонияКенияКиргизс" +
- "танКамбоджаКирибатиКоморски островиСейнт Китс и НевисСеверна КореяЮжна " +
- "КореяКувейтКайманови островиКазахстанЛаосЛиванСейнт ЛусияЛихтенщайнШри " +
- "ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛибияМарокоМонакоМолдоваЧерна го" +
- "раСен МартенМадагаскарМаршалови островиМакедонияМалиМианмар (Бирма)Монг" +
- "олияМакао, САР на КитайСеверни Мариански островиМартиникаМавританияМонт" +
- "сератМалтаМаврицийМалдивиМалавиМексикоМалайзияМозамбикНамибияНова Калед" +
- "онияНигеростров НорфолкНигерияНикарагуаНидерландияНорвегияНепалНауруНиу" +
- "еНова ЗеландияОманПанамаПеруФренска ПолинезияПапуа-Нова ГвинеяФилипиниП" +
- "акистанПолшаСен Пиер и МикелонОстрови ПиткернПуерто РикоПалестински тер" +
- "иторииПортугалияПалауПарагвайКатарОтдалечени острови на ОкеанияРеюнионР" +
- "умънияСърбияРусияРуандаСаудитска АрабияСоломонови островиСейшелиСуданШв" +
- "ецияСингапурСвета ЕленаСловенияСвалбард и Ян МайенСловакияСиера ЛеонеСа" +
- "н МариноСенегалСомалияСуринамЮжен СуданСао Томе и ПринсипиСалвадорСинт " +
- "МартенСирияСвазилендТристан да Куняострови Търкс и КайкосЧадФренски южн" +
- "и територииТогоТайландТаджикистанТокелауИзточен ТиморТуркменистанТунисТ" +
- "онгаТурцияТринидад и ТобагоТувалуТайванТанзанияУкрайнаУгандаОтдалечени " +
- "острови на САЩСъединени щатиУругвайУзбекистанВатиканСейнт Винсънт и Гре" +
- "надиниВенецуелаБритански Вирджински островиАмерикански Вирджински остро" +
- "виВиетнамВануатуУолис и ФутунаСамоаКосовоЙеменМайотЮжна АфрикаЗамбияЗим" +
- "бабвенепознат регионСвятАфрикаСеверноамерикански континентЮжна АмерикаО" +
- "кеанияЗападна АфиркаЦентрална АмерикаИзточна АфрикаСеверна АфрикаЦентра" +
- "лна АфрикаЮжноафрикански регионАмерикаСеверна АмерикаКарибски регионИзт" +
- "очна АзияЮжна АзияЮгоизточна АзияЮжна ЕвропаАвстралазияМеланезияМикроне" +
- "зийски регионПолинезияАзияЦентрална АзияЗападна АзияЕвропаИзточна Европ" +
- "аСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
-
-var bgRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0021, 0x002d, 0x005f, 0x0073, 0x0093, 0x00a1, 0x00af,
- 0x00bd, 0x00dc, 0x00e8, 0x00fc, 0x010e, 0x012f, 0x013d, 0x014f,
- 0x0159, 0x0178, 0x018e, 0x01b2, 0x01c2, 0x01d4, 0x01e0, 0x01f7,
- 0x0207, 0x0215, 0x0223, 0x022d, 0x0246, 0x0254, 0x0275, 0x0283,
- 0x02aa, 0x02ba, 0x02c6, 0x02d0, 0x02e5, 0x02f5, 0x0303, 0x030d,
- 0x0319, 0x0358, 0x0373, 0x03ac, 0x03c9, 0x03db, 0x03f1, 0x0406,
- 0x040e, 0x041c, 0x0426, 0x0436, 0x0455, 0x0468, 0x0470, 0x0483,
- 0x0491, 0x04b0, 0x04ba, 0x04d7, 0x04e7, 0x04fe, 0x050c, 0x0516,
- // Entry 40 - 7F
- 0x0526, 0x0551, 0x055b, 0x0573, 0x0581, 0x058f, 0x059b, 0x05b6,
- 0x05c4, 0x05d2, 0x05e0, 0x05fd, 0x060f, 0x0619, 0x063e, 0x0652,
- 0x0673, 0x0681, 0x068b, 0x06b2, 0x06c0, 0x06cc, 0x06e7, 0x06f3,
- 0x06fb, 0x070d, 0x0721, 0x072d, 0x0739, 0x074b, 0x0770, 0x077c,
- 0x07c5, 0x07d7, 0x07df, 0x07f6, 0x0800, 0x0826, 0x0860, 0x0870,
- 0x0880, 0x088a, 0x0898, 0x08b7, 0x08c9, 0x08d9, 0x08e5, 0x08f8,
- 0x0902, 0x0948, 0x0950, 0x0958, 0x0968, 0x0974, 0x0980, 0x098c,
- 0x099c, 0x09a8, 0x09b2, 0x09c6, 0x09d6, 0x09e6, 0x0a05, 0x0a26,
- // Entry 80 - BF
- 0x0a3f, 0x0a52, 0x0a5e, 0x0a7f, 0x0a91, 0x0a99, 0x0aa3, 0x0ab8,
- 0x0acc, 0x0add, 0x0aeb, 0x0af7, 0x0b01, 0x0b15, 0x0b21, 0x0b2b,
- 0x0b37, 0x0b43, 0x0b51, 0x0b64, 0x0b77, 0x0b8b, 0x0bac, 0x0bbe,
- 0x0bc6, 0x0be1, 0x0bf1, 0x0c13, 0x0c43, 0x0c55, 0x0c69, 0x0c7b,
- 0x0c85, 0x0c95, 0x0ca3, 0x0caf, 0x0cbd, 0x0ccd, 0x0cdd, 0x0ceb,
- 0x0d06, 0x0d10, 0x0d2b, 0x0d39, 0x0d4b, 0x0d61, 0x0d71, 0x0d7b,
- 0x0d85, 0x0d8d, 0x0da6, 0x0dae, 0x0dba, 0x0dc2, 0x0de3, 0x0e03,
- 0x0e13, 0x0e23, 0x0e2d, 0x0e4e, 0x0e6b, 0x0e80, 0x0ea9, 0x0ebd,
- // Entry C0 - FF
- 0x0ec7, 0x0ed7, 0x0ee1, 0x0f18, 0x0f26, 0x0f34, 0x0f40, 0x0f4a,
- 0x0f56, 0x0f75, 0x0f98, 0x0fa6, 0x0fb0, 0x0fbc, 0x0fcc, 0x0fe1,
- 0x0ff1, 0x1014, 0x1024, 0x1039, 0x104c, 0x105a, 0x1068, 0x1076,
- 0x1089, 0x10ac, 0x10bc, 0x10d1, 0x10db, 0x10ed, 0x1109, 0x1132,
- 0x1138, 0x1162, 0x116a, 0x1178, 0x118e, 0x119c, 0x11b5, 0x11cd,
- 0x11d7, 0x11e1, 0x11ed, 0x120d, 0x1219, 0x1225, 0x1235, 0x1243,
- 0x124f, 0x127e, 0x1299, 0x12a7, 0x12bb, 0x12c9, 0x12f8, 0x130a,
- 0x1340, 0x137a, 0x1388, 0x1396, 0x13b0, 0x13ba, 0x13c6, 0x13d0,
- // Entry 100 - 13F
- 0x13da, 0x13ef, 0x13fb, 0x140b, 0x1428, 0x1430, 0x143c, 0x1473,
- 0x148a, 0x1498, 0x14b3, 0x14d4, 0x14ef, 0x150a, 0x1529, 0x1552,
- 0x1560, 0x157d, 0x159a, 0x15b1, 0x15c2, 0x15df, 0x15f4, 0x160a,
- 0x161c, 0x1643, 0x1655, 0x165d, 0x1678, 0x168f, 0x169b, 0x16b6,
- 0x16d1, 0x16ec, 0x170b,
-} // Size: 606 bytes
-
-var bnRegionStr string = "" + // Size: 9571 bytes
- "অ্যাসসেনশন আইল্যান্ডএ্যান্ডোরাসংযুক্ত আরব আমিরাতআফগানিস্তানএন্টিগুয়া ও " +
- "বারবুডাএ্যাঙ্গুইলাআলব্যানিয়াআর্মেনিয়ানেদারল্যান্ডস এ্যান্টিলিসঅ্যাঙ্" +
- "গোলাঅ্যান্টার্কটিকাআর্জেন্টিনাআমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রেলিয়াআর" +
- "ুবাআলান্ড দ্বীপপুঞ্জআজারবাইজানবসনিয়া ও হার্জেগোভিনাবারবাদোসবাংলাদেশবে" +
- "লজিয়ামবুরকিনা ফাসোবুলগেরিয়াবাহরাইনবুরুন্ডিবেনিনসেন্ট বারথেলিমিবারমুড" +
- "াব্রুনেইবোলিভিয়াক্যারিবিয়ান নেদারল্যান্ডসব্রাজিলবাহামা দ্বীপপুঞ্জভুট" +
- "ানবোভেট দ্বীপবতসোয়ানাবেলোরুশিয়াবেলিজকানাডাকোকোস (কিলিং)দ্বীপপুঞ্জকঙ্" +
- "গো-কিনশাসামধ্য আফ্রিকার প্রজাতন্ত্রকঙ্গো - ব্রাজাভিলসুইজারল্যান্ডআইভরি" +
- " কোস্টকুক দ্বীপপুঞ্জচিলিক্যামেরুনচীনকোলোম্বিয়াক্লিপারটন আইল্যান্ডকোস্টা" +
- "রিকাকিউবাকেপভার্দেকিউরাসাওক্রিসমাস দ্বীপসাইপ্রাসচেক প্রজাতন্ত্রজার্মান" +
- "িদিয়েগো গার্সিয়াজিবুতিডেনমার্কডোমিনিকাডোমেনিকান প্রজাতন্ত্রআলজেরিয়া" +
- "কুউটা এবং মেলিলাইকুয়েডরএস্তোনিয়ামিশরপশ্চিম সাহারাইরিত্রিয়াস্পেনইফিও" +
- "পিয়াইউরোপীয় ইউনিয়নফিনল্যান্ডফিজিফকল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ" +
- "্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক্তরাজ্যগ্রেনেডাজর্জিয়াফরাসী গায়ানাগ্" +
- "রাঞ্জিঘানাজিব্রাল্টারগ্রীনল্যান্ডগাম্বিয়াগিনিগুয়াদেলৌপনিরক্ষীয় গিনি" +
- "গ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জগোয়াতেমালাগুয়ামগি" +
- "নি-বিসাউগিয়ানাহংকং এসএআর চীনাহার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জহ" +
- "ণ্ডুরাসক্রোয়েশিয়াহাইতিহাঙ্গেরিক্যানারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্" +
- "যান্ডইজরায়েলআইল অফ ম্যানভারতব্রিটিশ ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল" +
- "্যান্ডইতালীজার্সিজামাইকাজর্ডনজাপানকেনিয়াকির্গিজিয়াকম্বোডিয়াকিরিবাতি" +
- "কমোরোসসেন্ট কিটস ও নেভিসউত্তর কোরিয়াদক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপ" +
- "পুঞ্জকাজাখস্তানলাওসলেবাননসেন্ট লুসিয়ালিচেনস্টেইনশ্রীলঙ্কালাইবেরিয়ালে" +
- "সোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়ালিবিয়ামোরক্কোমোনাকোমোল্দাভিয়ামন" +
- "্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্শাল দ্বীপপুঞ্জম্যাসাডোনিয়ামালিমা" +
- "য়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এস এ আর চায়নাউত্তরাঞ্চলীয় মারিয়ান" +
- "া দ্বীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটমাল্টামরিশাসমালদ্বীপমালাউইমেক্" +
- "সিকোমালয়েশিয়ামোজাম্বিকনামিবিয়ানিউ ক্যালেডোনিয়ানাইজারনিরফোক দ্বীপনা" +
- "ইজেরিয়ানিকারাগুয়ানেদারল্যান্ডসনরওয়েনেপালনাউরুনিউয়েনিউজিল্যান্ডওমান" +
- "পানামাপিরুফরাসী পলিনেশিয়াপাপুয়া নিউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডসে" +
- "ন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ্জপুয়ের্তো রিকোফিলিস্তিন অঞ" +
- "্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআউটলাইনিং ওসানিয়ারিইউনিয়নরুমানিয" +
- "়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমন দ্বীপপুঞ্জসিসিলিসুদানসুইডেনসি" +
- "ঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবার্ড ও জান মেয়েনশ্লোভাকিয়াসিয়ের" +
- "ালিওনসান মারিনোসেনেগালসোমালিয়াসুরিনামদক্ষিন সুদানসাওটোমা ও প্রিন্সিপি" +
- "এল সালভেদরসিন্ট মার্টেনসিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও" +
- " কাইকোস দ্বীপপুঞ্জচাদফরাসী দক্ষিণাঞ্চলটোগোথাইল্যান্ডতাজিকস্থানটোকেলাউতিম" +
- "ুর-লেস্তেতুর্কমেনিস্তানতিউনিশিয়াটোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভাল" +
- "ুতাইওয়ানতাঞ্জানিয়াইউক্রেইনউগান্ডাযুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপু" +
- "ঞ্জমার্কিন যুক্তরাষ্ট্রউরুগুয়েউজবেকিস্তানভ্যাটিকান সিটিসেন্ট ভিনসেন্ট" +
- " ও দ্যা গ্রেনাডিনসভেনেজুয়েলাব্রিটিশ ভার্জিন দ্বীপপুঞ্জমার্কিন ভার্জিন দ" +
- "্বীপপুঞ্জভিয়েতনামভানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্ত" +
- "েদক্ষিণ আফ্রিকাজাম্বিয়াজিম্বাবোয়েঅজানা স্থানপৃথিবীআফ্রিকাউত্তর আমেরি" +
- "কাদক্ষিণ আমেরিকাওশিয়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্ত" +
- "র আফ্রিকামধ্য আফ্রিকাদক্ষিন আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারা" +
- "বিয়ানপূর্ব এশিয়াদক্ষিণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রাল" +
- "েশিয়াম্যালেনেশিয়াম্যালেনিশা অঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এ" +
- "শিয়াইউরোপপূর্ব ইউরোপউত্তর ইউরোপপশ্চিম ইউরোপল্যাটিন আমেরিকা"
-
-var bnRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x003a, 0x0058, 0x008a, 0x00ab, 0x00e3, 0x0104, 0x0125,
- 0x0143, 0x018c, 0x01aa, 0x01d7, 0x01f8, 0x0226, 0x0244, 0x0268,
- 0x0277, 0x02a8, 0x02c6, 0x0304, 0x031c, 0x0334, 0x034f, 0x0371,
- 0x038f, 0x03a4, 0x03bc, 0x03cb, 0x03f6, 0x040b, 0x0420, 0x043b,
- 0x0487, 0x049c, 0x04cd, 0x04dc, 0x04fb, 0x0516, 0x0537, 0x0546,
- 0x0558, 0x0597, 0x05bc, 0x0603, 0x0630, 0x0657, 0x0676, 0x069e,
- 0x06aa, 0x06c5, 0x06ce, 0x06ef, 0x0726, 0x0744, 0x0753, 0x076e,
- 0x0786, 0x07ae, 0x07c6, 0x07f1, 0x0809, 0x083a, 0x084c, 0x0864,
- // Entry 40 - 7F
- 0x087c, 0x08b9, 0x08d4, 0x0900, 0x0918, 0x0936, 0x0942, 0x0967,
- 0x0985, 0x0994, 0x09af, 0x09dd, 0x09fb, 0x0a07, 0x0a41, 0x0a6b,
- 0x0a9c, 0x0ab1, 0x0ac3, 0x0ae1, 0x0af9, 0x0b11, 0x0b36, 0x0b4e,
- 0x0b5a, 0x0b7b, 0x0b9f, 0x0bba, 0x0bc6, 0x0be4, 0x0c0c, 0x0c1b,
- 0x0c9b, 0x0cbc, 0x0cce, 0x0cea, 0x0cff, 0x0d28, 0x0d95, 0x0dad,
- 0x0dd1, 0x0de0, 0x0df8, 0x0e2f, 0x0e53, 0x0e77, 0x0e8f, 0x0eaf,
- 0x0ebb, 0x0f0c, 0x0f18, 0x0f24, 0x0f42, 0x0f51, 0x0f63, 0x0f78,
- 0x0f87, 0x0f96, 0x0fab, 0x0fcc, 0x0fea, 0x1002, 0x1014, 0x1044,
- // Entry 80 - BF
- 0x1069, 0x1091, 0x10a3, 0x10d7, 0x10f5, 0x1101, 0x1113, 0x1138,
- 0x1159, 0x1174, 0x1192, 0x11a4, 0x11c8, 0x11ec, 0x1207, 0x121c,
- 0x1231, 0x1243, 0x1264, 0x1285, 0x12aa, 0x12cb, 0x12ff, 0x1326,
- 0x1332, 0x1362, 0x1380, 0x13ba, 0x141c, 0x1437, 0x1455, 0x1470,
- 0x1482, 0x1494, 0x14ac, 0x14be, 0x14d6, 0x14f7, 0x1512, 0x152d,
- 0x155e, 0x1570, 0x1592, 0x15b0, 0x15d1, 0x15f8, 0x160a, 0x1619,
- 0x1628, 0x163a, 0x165e, 0x166a, 0x167c, 0x1688, 0x16b6, 0x16e2,
- 0x16fa, 0x1715, 0x1730, 0x1772, 0x17b2, 0x17da, 0x1811, 0x1829,
- // Entry C0 - FF
- 0x1838, 0x1859, 0x1868, 0x189c, 0x18b7, 0x18d2, 0x18ed, 0x1902,
- 0x191d, 0x1933, 0x1961, 0x1973, 0x1982, 0x1994, 0x19af, 0x19d1,
- 0x19f2, 0x1a31, 0x1a52, 0x1a73, 0x1a8f, 0x1aa4, 0x1abf, 0x1ad4,
- 0x1af6, 0x1b2e, 0x1b4a, 0x1b6f, 0x1b84, 0x1bae, 0x1be0, 0x1c28,
- 0x1c31, 0x1c62, 0x1c6e, 0x1c8c, 0x1caa, 0x1cbf, 0x1ce1, 0x1d0b,
- 0x1d29, 0x1d3b, 0x1d4d, 0x1d85, 0x1d97, 0x1daf, 0x1dd0, 0x1de8,
- 0x1dfd, 0x1e6b, 0x1ea5, 0x1ebd, 0x1ede, 0x1f06, 0x1f5e, 0x1f7f,
- 0x1fc9, 0x2013, 0x202e, 0x2049, 0x2075, 0x208a, 0x2099, 0x20ae,
- // Entry 100 - 13F
- 0x20c9, 0x20f1, 0x210c, 0x212d, 0x214c, 0x215e, 0x2173, 0x2198,
- 0x21c0, 0x21e1, 0x2209, 0x222b, 0x2250, 0x2275, 0x2297, 0x22bf,
- 0x22d7, 0x2314, 0x2338, 0x235a, 0x237f, 0x23b4, 0x23d6, 0x2400,
- 0x2427, 0x2455, 0x2473, 0x2485, 0x24a4, 0x24c9, 0x24d8, 0x24f7,
- 0x2516, 0x2538, 0x2563,
-} // Size: 606 bytes
-
-var caRegionStr string = "" + // Size: 3171 bytes
- "Illa de l’AscensióAndorraEmirats Àrabs UnitsAfganistanAntigua i BarbudaA" +
- "nguillaAlbàniaArmèniaAntilles NeerlandesesAngolaAntàrtidaArgentinaSamoa " +
- "Nord-americanaÀustriaAustràliaArubaIlles ÅlandAzerbaidjanBòsnia i Herceg" +
- "ovinaBarbadosBangla DeshBèlgicaBurkina FasoBulgàriaBahrainBurundiBenínSa" +
- "int BarthélemyBermudesBruneiBolíviaCarib NeerlandèsBrasilBahamesBhutanBo" +
- "uvetBotswanaBelarúsBelizeCanadàIlles CocosCongo - KinshasaRepública Cent" +
- "reafricanaCongo - BrazzavilleSuïssaCosta d’IvoriIlles CookXileCamerunXin" +
- "aColòmbiaIlla ClippertonCosta RicaCubaCap VerdCuraçaoIlla ChristmasXipre" +
- "República TxecaAlemanyaDiego GarciaDjiboutiDinamarcaDominicaRepública Do" +
- "minicanaAlgèriaCeuta i MelillaEquadorEstòniaEgipteSàhara OccidentalEritr" +
- "eaEspanyaEtiòpiaUnió EuropeaFinlàndiaFijiIlles MalvinesMicronèsiaIlles F" +
- "èroeFrançaGabonRegne UnitGrenadaGeòrgiaGuaiana FrancesaGuernseyGhanaGib" +
- "raltarGrenlàndiaGàmbiaGuineaGuadeloupeGuinea EquatorialGrèciaIlles Geòrg" +
- "ia del Sud i Sandwich del SudGuatemalaGuamGuinea BissauGuyanaHong Kong (" +
- "RAE Xina)Illa Heard i Illes McDonaldHonduresCroàciaHaitíHongriaIlles Can" +
- "àriesIndonèsiaIrlandaIsraelIlla de ManÍndiaTerritori Britànic de l’Oceà" +
- " ÍndicIraqIranIslàndiaItàliaJerseyJamaicaJordàniaJapóKenyaKirguizistanCa" +
- "mbodjaKiribatiComoresSaint Christopher i NevisCorea del NordCorea del Su" +
- "dKuwaitIlles CaimanKazakhstanLaosLíbanSaint LuciaLiechtensteinSri LankaL" +
- "ibèriaLesothoLituàniaLuxemburgLetòniaLíbiaMarrocMònacoMoldàviaMontenegro" +
- "Saint MartinMadagascarIlles MarshallMacedòniaMaliMyanmar (Birmània)Mongò" +
- "liaMacau (RAE Xina)Illes Mariannes del NordMartinicaMauritàniaMontserrat" +
- "MaltaMauriciMaldivesMalawiMèxicMalàisiaMoçambicNamíbiaNova CaledòniaNíge" +
- "rNorfolkNigèriaNicaraguaPaïsos BaixosNoruegaNepalNauruNiueNova ZelandaOm" +
- "anPanamàPerúPolinèsia FrancesaPapua Nova GuineaFilipinesPakistanPolòniaS" +
- "aint-Pierre-et-MiquelonIlles PitcairnPuerto RicoPalestinaPortugalPalauPa" +
- "raguaiQatarTerritoris allunyats d’OceaniaIlla de la ReunióRomaniaSèrbiaR" +
- "ússiaRuandaAràbia SauditaIlles SalomóSeychellesSudanSuèciaSingapurSaint" +
- " HelenaEslovèniaSvalbard i Jan MayenEslovàquiaSierra LeoneSan MarinoSene" +
- "galSomàliaSurinamSudan del SudSão Tomé i PríncipeEl SalvadorSint Maarten" +
- "SíriaSwazilàndiaTristão da CunhaIlles Turks i CaicosTxadTerritoris Franc" +
- "esos del SudTogoTailàndiaTadjikistanTokelauTimor OrientalTurkmenistanTun" +
- "ísiaTongaTurquiaTrinitat i TobagoTuvaluTaiwanTanzàniaUcraïnaUgandaIlles" +
- " Perifèriques Menors dels EUAEstats UnitsUruguaiUzbekistanCiutat del Vat" +
- "icàSaint Vincent i les GrenadinesVeneçuelaIlles Verges BritàniquesIlles " +
- "Verges Nord-americanesVietnamVanuatuWallis i FutunaSamoaKosovoIemenMayot" +
- "teRepública de Sud-àfricaZàmbiaZimbàbueRegió desconegudaMónÀfricaAmèrica" +
- " del NordAmèrica del SudOceaniaÀfrica occidentalAmèrica CentralÀfrica or" +
- "ientalÀfrica septentrionalÀfrica centralÀfrica meridionalAmèricaAmèrica " +
- "septentrionalCaribÀsia orientalÀsia meridionalÀsia sud-orientalEuropa me" +
- "ridionalAustralàsiaMelanèsiaRegió de la MicronèsiaPolinèsiaÀsiaÀsia cent" +
- "ralÀsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occide" +
- "ntalAmèrica Llatina"
-
-var caRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x001c, 0x0030, 0x003a, 0x004b, 0x0053, 0x005b,
- 0x0063, 0x0078, 0x007e, 0x0088, 0x0091, 0x00a5, 0x00ad, 0x00b7,
- 0x00bc, 0x00c8, 0x00d3, 0x00e8, 0x00f0, 0x00fb, 0x0103, 0x010f,
- 0x0118, 0x011f, 0x0126, 0x012c, 0x013d, 0x0145, 0x014b, 0x0153,
- 0x0164, 0x016a, 0x0171, 0x0177, 0x017d, 0x0185, 0x018d, 0x0193,
- 0x019a, 0x01a5, 0x01b5, 0x01ce, 0x01e1, 0x01e8, 0x01f7, 0x0201,
- 0x0205, 0x020c, 0x0210, 0x0219, 0x0228, 0x0232, 0x0236, 0x023e,
- 0x0246, 0x0254, 0x0259, 0x0269, 0x0271, 0x027d, 0x0285, 0x028e,
- // Entry 40 - 7F
- 0x0296, 0x02ab, 0x02b3, 0x02c2, 0x02c9, 0x02d1, 0x02d7, 0x02e9,
- 0x02f0, 0x02f7, 0x02ff, 0x030c, 0x0316, 0x031a, 0x0328, 0x0333,
- 0x033f, 0x0346, 0x034b, 0x0355, 0x035c, 0x0364, 0x0374, 0x037c,
- 0x0381, 0x038a, 0x0395, 0x039c, 0x03a2, 0x03ac, 0x03bd, 0x03c4,
- 0x03ed, 0x03f6, 0x03fa, 0x0407, 0x040d, 0x0421, 0x043c, 0x0444,
- 0x044c, 0x0452, 0x0459, 0x0468, 0x0472, 0x0479, 0x047f, 0x048a,
- 0x0490, 0x04b7, 0x04bb, 0x04bf, 0x04c8, 0x04cf, 0x04d5, 0x04dc,
- 0x04e5, 0x04ea, 0x04ef, 0x04fb, 0x0503, 0x050b, 0x0512, 0x052b,
- // Entry 80 - BF
- 0x0539, 0x0546, 0x054c, 0x0558, 0x0562, 0x0566, 0x056c, 0x0577,
- 0x0584, 0x058d, 0x0595, 0x059c, 0x05a5, 0x05ae, 0x05b6, 0x05bc,
- 0x05c2, 0x05c9, 0x05d2, 0x05dc, 0x05e8, 0x05f2, 0x0600, 0x060a,
- 0x060e, 0x0621, 0x062a, 0x063a, 0x0652, 0x065b, 0x0666, 0x0670,
- 0x0675, 0x067c, 0x0684, 0x068a, 0x0690, 0x0699, 0x06a2, 0x06aa,
- 0x06b9, 0x06bf, 0x06c6, 0x06ce, 0x06d7, 0x06e5, 0x06ec, 0x06f1,
- 0x06f6, 0x06fa, 0x0706, 0x070a, 0x0711, 0x0716, 0x0729, 0x073a,
- 0x0743, 0x074b, 0x0753, 0x076b, 0x0779, 0x0784, 0x078d, 0x0795,
- // Entry C0 - FF
- 0x079a, 0x07a2, 0x07a7, 0x07c7, 0x07d9, 0x07e0, 0x07e7, 0x07ee,
- 0x07f4, 0x0803, 0x0810, 0x081a, 0x081f, 0x0826, 0x082e, 0x083a,
- 0x0844, 0x0858, 0x0863, 0x086f, 0x0879, 0x0880, 0x0888, 0x088f,
- 0x089c, 0x08b2, 0x08bd, 0x08c9, 0x08cf, 0x08db, 0x08ec, 0x0900,
- 0x0904, 0x0920, 0x0924, 0x092e, 0x0939, 0x0940, 0x094e, 0x095a,
- 0x0962, 0x0967, 0x096e, 0x097f, 0x0985, 0x098b, 0x0994, 0x099c,
- 0x09a2, 0x09c5, 0x09d1, 0x09d8, 0x09e2, 0x09f4, 0x0a12, 0x0a1c,
- 0x0a35, 0x0a51, 0x0a58, 0x0a5f, 0x0a6e, 0x0a73, 0x0a79, 0x0a7e,
- // Entry 100 - 13F
- 0x0a85, 0x0a9e, 0x0aa5, 0x0aae, 0x0ac0, 0x0ac4, 0x0acb, 0x0adc,
- 0x0aec, 0x0af3, 0x0b05, 0x0b15, 0x0b25, 0x0b3a, 0x0b49, 0x0b5b,
- 0x0b63, 0x0b79, 0x0b7e, 0x0b8c, 0x0b9c, 0x0bae, 0x0bbf, 0x0bcb,
- 0x0bd5, 0x0bed, 0x0bf7, 0x0bfc, 0x0c09, 0x0c19, 0x0c1f, 0x0c2e,
- 0x0c42, 0x0c53, 0x0c63,
-} // Size: 606 bytes
-
-var csRegionStr string = "" + // Size: 3229 bytes
- "AscensionAndorraSpojené arabské emirátyAfghánistánAntigua a BarbudaAngui" +
- "llaAlbánieArménieNizozemské AntilyAngolaAntarktidaArgentinaAmerická Samo" +
- "aRakouskoAustrálieArubaÅlandyÁzerbájdžánBosna a HercegovinaBarbadosBangl" +
- "adéšBelgieBurkina FasoBulharskoBahrajnBurundiBeninSvatý BartolomějBermud" +
- "yBrunejBolívieKaribské NizozemskoBrazílieBahamyBhútánBouvetův ostrovBots" +
- "wanaBěloruskoBelizeKanadaKokosové ostrovyKongo – KinshasaStředoafrická r" +
- "epublikaKongo – BrazzavilleŠvýcarskoPobřeží slonovinyCookovy ostrovyChil" +
- "eKamerunČínaKolumbieClippertonův ostrovKostarikaKubaKapverdyCuraçaoVánoč" +
- "ní ostrovKyprČeská republikaNěmeckoDiego GarcíaDžibutskoDánskoDominikaDo" +
- "minikánská republikaAlžírskoCeuta a MelillaEkvádorEstonskoEgyptZápadní S" +
- "aharaEritreaŠpanělskoEtiopieEvropská unieFinskoFidžiFalklandské ostrovyM" +
- "ikronésieFaerské ostrovyFrancieGabonVelká BritánieGrenadaGruzieFrancouzs" +
- "ká GuyanaGuernseyGhanaGibraltarGrónskoGambieGuineaGuadeloupeRovníková Gu" +
- "ineaŘeckoJižní Georgie a Jižní Sandwichovy ostrovyGuatemalaGuamGuinea-Bi" +
- "ssauGuyanaHongkong – ZAO ČínyHeardův ostrov a McDonaldovy ostrovyHondura" +
- "sChorvatskoHaitiMaďarskoKanárské ostrovyIndonésieIrskoIzraelOstrov ManIn" +
- "dieBritské indickooceánské územíIrákÍránIslandItálieJerseyJamajkaJordáns" +
- "koJaponskoKeňaKyrgyzstánKambodžaKiribatiKomorySvatý Kryštof a NevisSever" +
- "ní KoreaJižní KoreaKuvajtKajmanské ostrovyKazachstánLaosLibanonSvatá Luc" +
- "ieLichtenštejnskoSrí LankaLibérieLesothoLitvaLucemburskoLotyšskoLibyeMar" +
- "okoMonakoMoldavskoČerná HoraSvatý Martin (Francie)MadagaskarMarshallovy " +
- "ostrovyMakedonieMaliMyanmar (Barma)MongolskoMacao – ZAO ČínySeverní Mari" +
- "anyMartinikMauritánieMontserratMaltaMauriciusMaledivyMalawiMexikoMalajsi" +
- "eMosambikNamibieNová KaledonieNigerNorfolkNigérieNikaraguaNizozemskoNors" +
- "koNepálNauruNiueNový ZélandOmánPanamaPeruFrancouzská PolynésiePapua-Nová" +
- " GuineaFilipínyPákistánPolskoSaint-Pierre a MiquelonPitcairnovy ostrovyP" +
- "ortorikoPalestinská územíPortugalskoPalauParaguayKatarVnější OceánieRéun" +
- "ionRumunskoSrbskoRuskoRwandaSaúdská ArábieŠalamounovy ostrovySeychelySúd" +
- "ánŠvédskoSingapurSvatá HelenaSlovinskoŠpicberky a Jan MayenSlovenskoSie" +
- "rra LeoneSan MarinoSenegalSomálskoSurinamJižní SúdánSvatý Tomáš a Princů" +
- "v ostrovSalvadorSvatý Martin (Nizozemsko)SýrieSvazijskoTristan da CunhaT" +
- "urks a CaicosČadFrancouzská jižní územíTogoThajskoTádžikistánTokelauVých" +
- "odní TimorTurkmenistánTuniskoTongaTureckoTrinidad a TobagoTuvaluTchaj-wa" +
- "nTanzanieUkrajinaUgandaMenší odlehlé ostrovy USASpojené státyUruguayUzbe" +
- "kistánVatikánSvatý Vincenc a GrenadinyVenezuelaBritské Panenské ostrovyA" +
- "merické Panenské ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMay" +
- "otteJihoafrická republikaZambieZimbabweNeznámá oblastSvětAfrikaSeverní A" +
- "merikaJižní AmerikaOceánieZápadní AfrikaStřední AmerikaVýchodní AfrikaSe" +
- "verní AfrikaStřední AfrikaJižní AfrikaAmerikaSeverní Amerika (oblast)Kar" +
- "ibikVýchodní AsieJižní AsieJihovýchodní AsieJižní EvropaAustralasieMelan" +
- "ésieMikronésie (region)PolynésieAsieStřední AsieZápadní AsieEvropaVýcho" +
- "dní EvropaSeverní EvropaZápadní EvropaLatinská Amerika"
-
-var csRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002a, 0x0037, 0x0048, 0x0050, 0x0058,
- 0x0060, 0x0072, 0x0078, 0x0082, 0x008b, 0x009a, 0x00a2, 0x00ac,
- 0x00b1, 0x00b8, 0x00c7, 0x00da, 0x00e2, 0x00ed, 0x00f3, 0x00ff,
- 0x0108, 0x010f, 0x0116, 0x011b, 0x012d, 0x0134, 0x013a, 0x0142,
- 0x0156, 0x015f, 0x0165, 0x016d, 0x017d, 0x0185, 0x018f, 0x0195,
- 0x019b, 0x01ac, 0x01be, 0x01d7, 0x01ec, 0x01f7, 0x020b, 0x021a,
- 0x021f, 0x0226, 0x022c, 0x0234, 0x0248, 0x0251, 0x0255, 0x025d,
- 0x0265, 0x0276, 0x027a, 0x028b, 0x0293, 0x02a0, 0x02aa, 0x02b1,
- // Entry 40 - 7F
- 0x02b9, 0x02d1, 0x02db, 0x02ea, 0x02f2, 0x02fa, 0x02ff, 0x030f,
- 0x0316, 0x0321, 0x0328, 0x0336, 0x033c, 0x0342, 0x0356, 0x0361,
- 0x0371, 0x0378, 0x037d, 0x038d, 0x0394, 0x039a, 0x03ad, 0x03b5,
- 0x03ba, 0x03c3, 0x03cb, 0x03d1, 0x03d7, 0x03e1, 0x03f3, 0x03f9,
- 0x0426, 0x042f, 0x0433, 0x0440, 0x0446, 0x045d, 0x0482, 0x048a,
- 0x0494, 0x0499, 0x04a2, 0x04b4, 0x04be, 0x04c3, 0x04c9, 0x04d3,
- 0x04d8, 0x04fa, 0x04ff, 0x0505, 0x050b, 0x0512, 0x0518, 0x051f,
- 0x0529, 0x0531, 0x0536, 0x0541, 0x054a, 0x0552, 0x0558, 0x056f,
- // Entry 80 - BF
- 0x057d, 0x058a, 0x0590, 0x05a2, 0x05ad, 0x05b1, 0x05b8, 0x05c4,
- 0x05d4, 0x05de, 0x05e6, 0x05ed, 0x05f2, 0x05fd, 0x0606, 0x060b,
- 0x0611, 0x0617, 0x0620, 0x062c, 0x0643, 0x064d, 0x0660, 0x0669,
- 0x066d, 0x067c, 0x0685, 0x0699, 0x06a9, 0x06b1, 0x06bc, 0x06c6,
- 0x06cb, 0x06d4, 0x06dc, 0x06e2, 0x06e8, 0x06f0, 0x06f8, 0x06ff,
- 0x070e, 0x0713, 0x071a, 0x0722, 0x072b, 0x0735, 0x073b, 0x0741,
- 0x0746, 0x074a, 0x0757, 0x075c, 0x0762, 0x0766, 0x077d, 0x078f,
- 0x0798, 0x07a2, 0x07a8, 0x07bf, 0x07d2, 0x07db, 0x07ef, 0x07fa,
- // Entry C0 - FF
- 0x07ff, 0x0807, 0x080c, 0x081e, 0x0826, 0x082e, 0x0834, 0x0839,
- 0x083f, 0x0850, 0x0864, 0x086c, 0x0873, 0x087c, 0x0884, 0x0891,
- 0x089a, 0x08b0, 0x08b9, 0x08c5, 0x08cf, 0x08d6, 0x08df, 0x08e6,
- 0x08f5, 0x0915, 0x091d, 0x0937, 0x093d, 0x0946, 0x0956, 0x0964,
- 0x0968, 0x0984, 0x0988, 0x098f, 0x099d, 0x09a4, 0x09b4, 0x09c1,
- 0x09c8, 0x09cd, 0x09d4, 0x09e5, 0x09eb, 0x09f4, 0x09fc, 0x0a04,
- 0x0a0a, 0x0a26, 0x0a35, 0x0a3c, 0x0a47, 0x0a4f, 0x0a69, 0x0a72,
- 0x0a8c, 0x0aa7, 0x0aae, 0x0ab5, 0x0ac4, 0x0ac9, 0x0acf, 0x0ad4,
- // Entry 100 - 13F
- 0x0adb, 0x0af1, 0x0af7, 0x0aff, 0x0b0f, 0x0b14, 0x0b1a, 0x0b2a,
- 0x0b39, 0x0b41, 0x0b51, 0x0b62, 0x0b73, 0x0b82, 0x0b92, 0x0ba0,
- 0x0ba7, 0x0bc0, 0x0bc7, 0x0bd6, 0x0be2, 0x0bf5, 0x0c03, 0x0c0e,
- 0x0c18, 0x0c2c, 0x0c36, 0x0c3a, 0x0c48, 0x0c56, 0x0c5c, 0x0c6d,
- 0x0c7c, 0x0c8c, 0x0c9d,
-} // Size: 606 bytes
-
-var daRegionStr string = "" + // Size: 2956 bytes
- "AscensionøenAndorraDe Forenede Arabiske EmiraterAfghanistanAntigua og Ba" +
- "rbudaAnguillaAlbanienArmenienHollandske AntillerAngolaAntarktisArgentina" +
- "Amerikansk SamoaØstrigAustralienArubaÅlandAserbajdsjanBosnien-Hercegovin" +
- "aBarbadosBangladeshBelgienBurkina FasoBulgarienBahrainBurundiBeninSaint " +
- "BarthélemyBermudaBruneiBoliviaDe Nederlandske AntillerBrasilienBahamasBh" +
- "utanBouvetøenBotswanaHvideruslandBelizeCanadaCocosøerneCongo-KinshasaDen" +
- " Centralafrikanske RepublikCongo-BrazzavilleSchweizElfenbenskystenCookøe" +
- "rneChileCamerounKinaColombiaClippertonøenCosta RicaCubaKap VerdeCuraçaoJ" +
- "uleøenCypernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen Domin" +
- "ikanske RepublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaE" +
- "ritreaSpanienEtiopienDen Europæiske UnionFinlandFijiFalklandsøerneMikron" +
- "esiens Forenede StaterFærøerneFrankrigGabonStorbritannienGrenadaGeorgien" +
- "Fransk GuyanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvator" +
- "ialguineaGrækenlandSouth Georgia og South Sandwich IslandsGuatemalaGuamG" +
- "uinea-BissauGuyanaHongkong SARHeard Island og McDonald IslandsHondurasKr" +
- "oatienHaitiUngarnKanariske øerIndonesienIrlandIsraelIsle of ManIndienDet" +
- " britiske territorium i Det Indiske OceanIrakIranIslandItalienJerseyJama" +
- "icaJordanJapanKenyaKirgisistanCambodjaKiribatiComorerneSaint Kitts og Ne" +
- "visNordkoreaSydkoreaKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLie" +
- "chtensteinSri LankaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMo" +
- "nacoMoldovaMontenegroSaint MartinMadagaskarMarshalløerneMakedonienMaliMy" +
- "anmar (Burma)MongolietMacao SARNordmarianerneMartiniqueMauretanienMontse" +
- "rratMaltaMauritiusMaldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy Kale" +
- "donienNigerNorfolk IslandNigeriaNicaraguaNederlandeneNorgeNepalNauruNiue" +
- "New ZealandOmanPanamaPeruFransk PolynesienPapua Ny GuineaFilippinernePak" +
- "istanPolenSaint Pierre og MiquelonPitcairnPuerto RicoDe palæstinensiske " +
- "områderPortugalPalauParaguayQatarYdre OceanienRéunionRumænienSerbienRusl" +
- "andRwandaSaudi-ArabienSalomonøerneSeychellerneSudanSverigeSingaporeSt. H" +
- "elenaSlovenienSvalbard og Jan MayenSlovakietSierra LeoneSan MarinoSenega" +
- "lSomaliaSurinamSydsudanSão Tomé og PríncipeEl SalvadorSint MaartenSyrien" +
- "SwazilandTristan da CunhaTurks- og CaicosøerneTchadDe franske besiddelse" +
- "r i Det Sydlige Indiske OceanTogoThailandTadsjikistanTokelauTimor-LesteT" +
- "urkmenistanTunesienTongaTyrkietTrinidad og TobagoTuvaluTaiwanTanzaniaUkr" +
- "aineUgandaAmerikanske oversøiske øerUSAUruguayUsbekistanVatikanstatenSai" +
- "nt Vincent og GrenadinerneVenezuelaDe Britiske JomfruøerDe Amerikanske J" +
- "omfruøerVietnamVanuatuWallis og FutunaSamoaKosovoYemenMayotteSydafrikaZa" +
- "mbiaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOceanienVestaf" +
- "rikaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAmeri" +
- "kaDet nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAustra" +
- "lasienMelanesienMikronesienPolynesienAsienCentralasienVestasienEuropaØst" +
- "europaNordeuropaVesteuropaLatinamerika"
-
-var daRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000d, 0x0014, 0x0031, 0x003c, 0x004e, 0x0056, 0x005e,
- 0x0066, 0x0079, 0x007f, 0x0088, 0x0091, 0x00a1, 0x00a8, 0x00b2,
- 0x00b7, 0x00bd, 0x00c9, 0x00dc, 0x00e4, 0x00ee, 0x00f5, 0x0101,
- 0x010a, 0x0111, 0x0118, 0x011d, 0x012e, 0x0135, 0x013b, 0x0142,
- 0x015a, 0x0163, 0x016a, 0x0170, 0x017a, 0x0182, 0x018e, 0x0194,
- 0x019a, 0x01a5, 0x01b3, 0x01d1, 0x01e2, 0x01e9, 0x01f8, 0x0202,
- 0x0207, 0x020f, 0x0213, 0x021b, 0x0229, 0x0233, 0x0237, 0x0240,
- 0x0248, 0x0250, 0x0256, 0x025e, 0x0266, 0x0272, 0x027a, 0x0281,
- // Entry 40 - 7F
- 0x0289, 0x02a2, 0x02aa, 0x02ba, 0x02c1, 0x02c8, 0x02cf, 0x02d9,
- 0x02e0, 0x02e7, 0x02ef, 0x0304, 0x030b, 0x030f, 0x031e, 0x033a,
- 0x0344, 0x034c, 0x0351, 0x035f, 0x0366, 0x036e, 0x037b, 0x0383,
- 0x0388, 0x0391, 0x039a, 0x03a0, 0x03a6, 0x03b0, 0x03c1, 0x03cc,
- 0x03f3, 0x03fc, 0x0400, 0x040d, 0x0413, 0x041f, 0x043f, 0x0447,
- 0x044f, 0x0454, 0x045a, 0x0468, 0x0472, 0x0478, 0x047e, 0x0489,
- 0x048f, 0x04bb, 0x04bf, 0x04c3, 0x04c9, 0x04d0, 0x04d6, 0x04dd,
- 0x04e3, 0x04e8, 0x04ed, 0x04f8, 0x0500, 0x0508, 0x0511, 0x0525,
- // Entry 80 - BF
- 0x052e, 0x0536, 0x053c, 0x0548, 0x0552, 0x0556, 0x055d, 0x0568,
- 0x0575, 0x057e, 0x0585, 0x058c, 0x0593, 0x059d, 0x05a4, 0x05aa,
- 0x05b1, 0x05b7, 0x05be, 0x05c8, 0x05d4, 0x05de, 0x05ec, 0x05f6,
- 0x05fa, 0x0609, 0x0612, 0x061b, 0x0629, 0x0633, 0x063e, 0x0648,
- 0x064d, 0x0656, 0x0660, 0x0666, 0x066c, 0x0674, 0x067e, 0x0685,
- 0x0692, 0x0697, 0x06a5, 0x06ac, 0x06b5, 0x06c1, 0x06c6, 0x06cb,
- 0x06d0, 0x06d4, 0x06df, 0x06e3, 0x06e9, 0x06ed, 0x06fe, 0x070d,
- 0x0719, 0x0721, 0x0726, 0x073e, 0x0746, 0x0751, 0x076d, 0x0775,
- // Entry C0 - FF
- 0x077a, 0x0782, 0x0787, 0x0794, 0x079c, 0x07a5, 0x07ac, 0x07b3,
- 0x07b9, 0x07c6, 0x07d3, 0x07df, 0x07e4, 0x07eb, 0x07f4, 0x07fe,
- 0x0807, 0x081c, 0x0825, 0x0831, 0x083b, 0x0842, 0x0849, 0x0850,
- 0x0858, 0x086f, 0x087a, 0x0886, 0x088c, 0x0895, 0x08a5, 0x08bb,
- 0x08c0, 0x08f2, 0x08f6, 0x08fe, 0x090a, 0x0911, 0x091c, 0x0928,
- 0x0930, 0x0935, 0x093c, 0x094e, 0x0954, 0x095a, 0x0962, 0x0969,
- 0x096f, 0x098b, 0x098e, 0x0995, 0x099f, 0x09ac, 0x09c9, 0x09d2,
- 0x09e8, 0x0a01, 0x0a08, 0x0a0f, 0x0a1f, 0x0a24, 0x0a2a, 0x0a2f,
- // Entry 100 - 13F
- 0x0a36, 0x0a3f, 0x0a45, 0x0a4d, 0x0a5b, 0x0a61, 0x0a67, 0x0a72,
- 0x0a7c, 0x0a84, 0x0a8e, 0x0a9b, 0x0aa5, 0x0aaf, 0x0abc, 0x0ace,
- 0x0ad5, 0x0ae9, 0x0af1, 0x0afa, 0x0b02, 0x0b0e, 0x0b17, 0x0b23,
- 0x0b2d, 0x0b38, 0x0b42, 0x0b47, 0x0b53, 0x0b5c, 0x0b62, 0x0b6c,
- 0x0b76, 0x0b80, 0x0b8c,
-} // Size: 606 bytes
-
-var deRegionStr string = "" + // Size: 3107 bytes
- "AscensionAndorraVereinigte Arabische EmirateAfghanistanAntigua und Barbu" +
- "daAnguillaAlbanienArmenienNiederländische AntillenAngolaAntarktisArgenti" +
- "nienAmerikanisch-SamoaÖsterreichAustralienArubaÅlandinselnAserbaidschanB" +
- "osnien und HerzegowinaBarbadosBangladeschBelgienBurkina FasoBulgarienBah" +
- "rainBurundiBeninSt. BarthélemyBermudaBrunei DarussalamBolivienBonaire, S" +
- "int Eustatius und SabaBrasilienBahamasBhutanBouvetinselBotsuanaBelarusBe" +
- "lizeKanadaKokosinselnKongo-KinshasaZentralafrikanische RepublikKongo-Bra" +
- "zzavilleSchweizCôte d’IvoireCookinselnChileKamerunChinaKolumbienClippert" +
- "on-InselCosta RicaKubaKap VerdeCuraçaoWeihnachtsinselZypernTschechische " +
- "RepublikDeutschlandDiego GarciaDschibutiDänemarkDominicaDominikanische R" +
- "epublikAlgerienCeuta und MelillaEcuadorEstlandÄgyptenWestsaharaEritreaSp" +
- "anienÄthiopienEuropäische UnionFinnlandFidschiFalklandinselnMikronesienF" +
- "äröerFrankreichGabunVereinigtes KönigreichGrenadaGeorgienFranzösisch-Gu" +
- "ayanaGuernseyGhanaGibraltarGrönlandGambiaGuineaGuadeloupeÄquatorialguine" +
- "aGriechenlandSüdgeorgien und die Südlichen SandwichinselnGuatemalaGuamGu" +
- "inea-BissauGuyanaSonderverwaltungszone HongkongHeard und McDonaldinselnH" +
- "ondurasKroatienHaitiUngarnKanarische InselnIndonesienIrlandIsraelIsle of" +
- " ManIndienBritisches Territorium im Indischen OzeanIrakIranIslandItalien" +
- "JerseyJamaikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. " +
- "Kitts und NevisNordkoreaSüdkoreaKuwaitKaimaninselnKasachstanLaosLibanonS" +
- "t. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLettlandLiby" +
- "enMarokkoMonacoRepublik MoldauMontenegroSt. MartinMadagaskarMarshallinse" +
- "lnMazedonienMaliMyanmarMongoleiSonderverwaltungsregion MacauNördliche Ma" +
- "rianenMartiniqueMauretanienMontserratMaltaMauritiusMaledivenMalawiMexiko" +
- "MalaysiaMosambikNamibiaNeukaledonienNigerNorfolkinselNigeriaNicaraguaNie" +
- "derlandeNorwegenNepalNauruNiueNeuseelandOmanPanamaPeruFranzösisch-Polyne" +
- "sienPapua-NeuguineaPhilippinenPakistanPolenSt. Pierre und MiquelonPitcai" +
- "rninselnPuerto RicoPalästinensische AutonomiegebietePortugalPalauParagua" +
- "yKatarÄußeres OzeanienRéunionRumänienSerbienRusslandRuandaSaudi-ArabienS" +
- "alomonenSeychellenSudanSchwedenSingapurSt. HelenaSlowenienSvalbard und J" +
- "an MayenSlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameSüdsudanSão " +
- "Tomé und PríncipeEl SalvadorSint MaartenSyrienSwasilandTristan da CunhaT" +
- "urks- und CaicosinselnTschadFranzösische Süd- und AntarktisgebieteTogoTh" +
- "ailandTadschikistanTokelauTimor-LesteTurkmenistanTunesienTongaTürkeiTrin" +
- "idad und TobagoTuvaluTaiwanTansaniaUkraineUgandaAmerikanische Überseeins" +
- "elnVereinigte StaatenUruguayUsbekistanVatikanstadtSt. Vincent und die Gr" +
- "enadinenVenezuelaBritische JungferninselnAmerikanische JungferninselnVie" +
- "tnamVanuatuWallis und FutunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbab" +
- "weUnbekannte RegionWeltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaMitt" +
- "elamerikaOstafrikaNordafrikaZentralafrikaSüdliches AfrikaAmerikaNördlich" +
- "es AmerikaKaribikOstasienSüdasienSüdostasienSüdeuropaAustralasienMelanes" +
- "ienMikronesisches InselgebietPolynesienAsienZentralasienWestasienEuropaO" +
- "steuropaNordeuropaWesteuropaLateinamerika"
-
-var deRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x004a, 0x0052, 0x005a,
- 0x0062, 0x007b, 0x0081, 0x008a, 0x0095, 0x00a7, 0x00b2, 0x00bc,
- 0x00c1, 0x00cd, 0x00da, 0x00f1, 0x00f9, 0x0104, 0x010b, 0x0117,
- 0x0120, 0x0127, 0x012e, 0x0133, 0x0142, 0x0149, 0x015a, 0x0162,
- 0x0182, 0x018b, 0x0192, 0x0198, 0x01a3, 0x01ab, 0x01b2, 0x01b8,
- 0x01be, 0x01c9, 0x01d7, 0x01f3, 0x0204, 0x020b, 0x021b, 0x0225,
- 0x022a, 0x0231, 0x0236, 0x023f, 0x024f, 0x0259, 0x025d, 0x0266,
- 0x026e, 0x027d, 0x0283, 0x0298, 0x02a3, 0x02af, 0x02b8, 0x02c1,
- // Entry 40 - 7F
- 0x02c9, 0x02e0, 0x02e8, 0x02f9, 0x0300, 0x0307, 0x030f, 0x0319,
- 0x0320, 0x0327, 0x0331, 0x0343, 0x034b, 0x0352, 0x0360, 0x036b,
- 0x0373, 0x037d, 0x0382, 0x0399, 0x03a0, 0x03a8, 0x03bc, 0x03c4,
- 0x03c9, 0x03d2, 0x03db, 0x03e1, 0x03e7, 0x03f1, 0x0402, 0x040e,
- 0x043c, 0x0445, 0x0449, 0x0456, 0x045c, 0x047a, 0x0492, 0x049a,
- 0x04a2, 0x04a7, 0x04ad, 0x04be, 0x04c8, 0x04ce, 0x04d4, 0x04df,
- 0x04e5, 0x050e, 0x0512, 0x0516, 0x051c, 0x0523, 0x0529, 0x0530,
- 0x0539, 0x053e, 0x0543, 0x054e, 0x0558, 0x0560, 0x0567, 0x057a,
- // Entry 80 - BF
- 0x0583, 0x058c, 0x0592, 0x059e, 0x05a8, 0x05ac, 0x05b3, 0x05bc,
- 0x05c9, 0x05d2, 0x05d9, 0x05e0, 0x05e7, 0x05f0, 0x05f8, 0x05fe,
- 0x0605, 0x060b, 0x061a, 0x0624, 0x062e, 0x0638, 0x0646, 0x0650,
- 0x0654, 0x065b, 0x0663, 0x0680, 0x0693, 0x069d, 0x06a8, 0x06b2,
- 0x06b7, 0x06c0, 0x06c9, 0x06cf, 0x06d5, 0x06dd, 0x06e5, 0x06ec,
- 0x06f9, 0x06fe, 0x070a, 0x0711, 0x071a, 0x0725, 0x072d, 0x0732,
- 0x0737, 0x073b, 0x0745, 0x0749, 0x074f, 0x0753, 0x076a, 0x0779,
- 0x0784, 0x078c, 0x0791, 0x07a8, 0x07b6, 0x07c1, 0x07e3, 0x07eb,
- // Entry C0 - FF
- 0x07f0, 0x07f8, 0x07fd, 0x080f, 0x0817, 0x0820, 0x0827, 0x082f,
- 0x0835, 0x0842, 0x084b, 0x0855, 0x085a, 0x0862, 0x086a, 0x0874,
- 0x087d, 0x0893, 0x089b, 0x08a7, 0x08b1, 0x08b8, 0x08bf, 0x08c7,
- 0x08d0, 0x08e8, 0x08f3, 0x08ff, 0x0905, 0x090e, 0x091e, 0x0935,
- 0x093b, 0x0963, 0x0967, 0x096f, 0x097c, 0x0983, 0x098e, 0x099a,
- 0x09a2, 0x09a7, 0x09ae, 0x09c1, 0x09c7, 0x09cd, 0x09d5, 0x09dc,
- 0x09e2, 0x09fe, 0x0a10, 0x0a17, 0x0a21, 0x0a2d, 0x0a4b, 0x0a54,
- 0x0a6c, 0x0a88, 0x0a8f, 0x0a96, 0x0aa7, 0x0aac, 0x0ab2, 0x0ab7,
- // Entry 100 - 13F
- 0x0abe, 0x0ac8, 0x0ace, 0x0ad6, 0x0ae7, 0x0aeb, 0x0af1, 0x0afc,
- 0x0b07, 0x0b0f, 0x0b19, 0x0b26, 0x0b2f, 0x0b39, 0x0b46, 0x0b57,
- 0x0b5e, 0x0b71, 0x0b78, 0x0b80, 0x0b89, 0x0b95, 0x0b9f, 0x0bab,
- 0x0bb5, 0x0bcf, 0x0bd9, 0x0bde, 0x0bea, 0x0bf3, 0x0bf9, 0x0c02,
- 0x0c0c, 0x0c16, 0x0c23,
-} // Size: 606 bytes
-
-var elRegionStr string = "" + // Size: 6260 bytes
- "Νήσος ΑσενσιόνΑνδόραΗνωμένα Αραβικά ΕμιράταΑφγανιστάνΑντίγκουα και Μπαρμ" +
- "πούνταΑνγκουίλαΑλβανίαΑρμενίαΟλλανδικές ΑντίλλεςΑνγκόλαΑνταρκτικήΑργεντ" +
- "ινήΑμερικανική ΣαμόαΑυστρίαΑυστραλίαΑρούμπαΝήσοι ΌλαντΑζερμπαϊτζάνΒοσνί" +
- "α - ΕρζεγοβίνηΜπαρμπάντοςΜπανγκλαντέςΒέλγιοΜπουρκίνα ΦάσοΒουλγαρίαΜπαχρ" +
- "έινΜπουρούντιΜπενίνΆγιος ΒαρθολομαίοςΒερμούδεςΜπρουνέιΒολιβίαΟλλανδία Κ" +
- "αραϊβικήςΒραζιλίαΜπαχάμεςΜπουτάνΝήσος ΜπουβέΜποτσουάναΛευκορωσίαΜπελίζΚ" +
- "αναδάςΝήσοι Κόκος (Κίλινγκ)Κονγκό - ΚινσάσαΚεντροαφρικανική ΔημοκρατίαΚ" +
- "ονγκό - ΜπραζαβίλΕλβετίαΑκτή ΕλεφαντοστούΝήσοι ΚουκΧιλήΚαμερούνΚίναΚολο" +
- "μβίαΝήσος ΚλίπερτονΚόστα ΡίκαΚούβαΠράσινο ΑκρωτήριοΚουρασάοΝήσος των Χρ" +
- "ιστουγέννωνΚύπροςΤσεχική ΔημοκρατίαΓερμανίαΝτιέγκο ΓκαρσίαΤζιμπουτίΔανί" +
- "αΝτομίνικαΔομινικανή ΔημοκρατίαΑλγερίαΘεούτα και ΜελίλαΕκουαδόρΕσθονίαΑ" +
- "ίγυπτοςΔυτική ΣαχάραΕρυθραίαΙσπανίαΑιθιοπίαΕυρωπαϊκή ΈνωσηΦινλανδίαΦίτζ" +
- "ιΝήσοι ΦόκλαντΜικρονησίαΝήσοι ΦερόεςΓαλλίαΓκαμπόνΗνωμένο ΒασίλειοΓρενάδ" +
- "αΓεωργίαΓαλλική ΓουιάναΓκέρνζιΓκάναΓιβραλτάρΓροιλανδίαΓκάμπιαΓουινέαΓου" +
- "αδελούπηΙσημερινή ΓουινέαΕλλάδαΝήσοι Νότια Γεωργία και Νότιες Σάντουιτς" +
- "ΓουατεμάλαΓκουάμΓουινέα ΜπισάουΓουιάναΧονγκ Κονγκ ΕΔΠ ΚίναςΝήσοι Χερντ " +
- "και ΜακντόναλντΟνδούραΚροατίαΑϊτήΟυγγαρίαΚανάριοι ΝήσοιΙνδονησίαΙρλανδί" +
- "αΙσραήλΝήσος ΜανΙνδίαΒρετανικά Εδάφη Ινδικού ΩκεανούΙράκΙράνΙσλανδίαΙτα" +
- "λίαΤζέρζιΤζαμάικαΙορδανίαΙαπωνίαΚένυαΚιργιστάνΚαμπότζηΚιριμπάτιΚομόρεςΆ" +
- "γιος Χριστόφορος και ΝέβιςΒόρεια ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚάιμανΚαζ" +
- "ακστάνΛάοςΛίβανοςΑγία ΛουκίαΛιχτενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛ" +
- "ουξεμβούργοΛετονίαΛιβύηΜαρόκοΜονακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γ" +
- "αλλικό τμήμα)ΜαδαγασκάρηΝήσοι ΜάρσαλΠρώην Γιουγκοσλαβική Δημοκρατία της" +
- " ΜακεδονίαςΜάλιΜιανμάρ/ΒιρμανίαΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες Μαρι" +
- "άνεςΜαρτινίκαΜαυριτανίαΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαι" +
- "σίαΜοζαμβίκηΝαμίμπιαΝέα ΚαληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟ" +
- "λλανδίαΝορβηγίαΝεπάλΝαουρούΝιούεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική Πολ" +
- "υνησίαΠαπούα Νέα ΓουινέαΦιλιππίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝή" +
- "σοι ΠίτκερνΠουέρτο ΡίκοΠαλαιστινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατά" +
- "ρΠεριφερειακή ΩκεανίαΡεϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝή" +
- "σοι ΣολομώντοςΣεϋχέλλεςΣουδάνΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπα" +
- "ρντ και Γιαν ΜαγιένΣλοβακίαΣιέρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρι" +
- "νάμΝότιο ΣουδάνΣάο Τομέ και ΠρίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικ" +
- "ό τμήμα)ΣυρίαΣουαζιλάνδηΤριστάν ντα ΚούνιαΝήσοι Τερκ και ΚάικοςΤσαντΓαλ" +
- "λικές περιοχές του νοτίου ημισφαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκελάουΤι" +
- "μόρ-ΛέστεΤουρκμενιστάνΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλ" +
- "ούΤαϊβάνΤανζανίαΟυκρανίαΟυγκάνταΑπομακρυσμένες Νησίδες ΗΠΑΗνωμένες Πολι" +
- "τείεςΟυρουγουάηΟυζμπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζο" +
- "υέλαΒρετανικές Παρθένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτο" +
- "υΟυάλις και ΦουτούναΣαμόαΚόσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουε" +
- "Άγνωστη περιοχήΚόσμοςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική Αφρ" +
- "ικήΚεντρική ΑμερικήΑνατολική ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος Αφρικ" +
- "ήΑμερικήΒόρειος ΑμερικήΚαραϊβικήΑνατολική ΑσίαΝότια ΑσίαΝοτιοανατολική " +
- "ΑσίαΝότια ΕυρώπηΑυστραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησίαΑσίαΚεν" +
- "τρική ΑσίαΔυτική ΑσίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛα" +
- "τινική Αμερική"
-
-var elRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0027, 0x0053, 0x0067, 0x0097, 0x00a9, 0x00b7,
- 0x00c5, 0x00ea, 0x00f8, 0x010c, 0x011e, 0x013f, 0x014d, 0x015f,
- 0x016d, 0x0182, 0x019a, 0x01bd, 0x01d3, 0x01eb, 0x01f7, 0x0212,
- 0x0224, 0x0234, 0x0248, 0x0254, 0x0277, 0x0289, 0x0299, 0x02a7,
- 0x02cc, 0x02dc, 0x02ec, 0x02fa, 0x0311, 0x0325, 0x0339, 0x0345,
- 0x0353, 0x0379, 0x0396, 0x03cb, 0x03ec, 0x03fa, 0x041b, 0x042e,
- 0x0436, 0x0446, 0x044e, 0x045e, 0x047b, 0x048e, 0x0498, 0x04b9,
- 0x04c9, 0x04f5, 0x0501, 0x0524, 0x0534, 0x0551, 0x0563, 0x056d,
- // Entry 40 - 7F
- 0x057f, 0x05a8, 0x05b6, 0x05d6, 0x05e6, 0x05f4, 0x0604, 0x061d,
- 0x062d, 0x063b, 0x064b, 0x0668, 0x067a, 0x0684, 0x069d, 0x06b1,
- 0x06c8, 0x06d4, 0x06e2, 0x0701, 0x070f, 0x071d, 0x073a, 0x0748,
- 0x0752, 0x0764, 0x0778, 0x0786, 0x0794, 0x07aa, 0x07cb, 0x07d7,
- 0x0822, 0x0836, 0x0842, 0x085f, 0x086d, 0x0894, 0x08c7, 0x08d5,
- 0x08e3, 0x08eb, 0x08fb, 0x0916, 0x0928, 0x0938, 0x0944, 0x0955,
- 0x095f, 0x099a, 0x09a2, 0x09aa, 0x09ba, 0x09c6, 0x09d2, 0x09e2,
- 0x09f2, 0x0a00, 0x0a0a, 0x0a1c, 0x0a2c, 0x0a3e, 0x0a4c, 0x0a7f,
- // Entry 80 - BF
- 0x0a96, 0x0aab, 0x0ab9, 0x0ad0, 0x0ae2, 0x0aea, 0x0af8, 0x0b0d,
- 0x0b23, 0x0b34, 0x0b42, 0x0b4e, 0x0b60, 0x0b78, 0x0b86, 0x0b90,
- 0x0b9c, 0x0ba8, 0x0bb8, 0x0bce, 0x0c05, 0x0c1b, 0x0c32, 0x0c8a,
- 0x0c92, 0x0cb1, 0x0cc1, 0x0cdd, 0x0d07, 0x0d19, 0x0d2d, 0x0d3d,
- 0x0d47, 0x0d59, 0x0d69, 0x0d77, 0x0d83, 0x0d93, 0x0da5, 0x0db5,
- 0x0dce, 0x0ddc, 0x0df5, 0x0e03, 0x0e17, 0x0e27, 0x0e37, 0x0e41,
- 0x0e4f, 0x0e59, 0x0e70, 0x0e78, 0x0e86, 0x0e90, 0x0eb1, 0x0ed3,
- 0x0ee7, 0x0ef7, 0x0f05, 0x0f2a, 0x0f43, 0x0f5a, 0x0f7f, 0x0f93,
- // Entry C0 - FF
- 0x0f9f, 0x0fb1, 0x0fbb, 0x0fe2, 0x0ff0, 0x1000, 0x100c, 0x1016,
- 0x1024, 0x1041, 0x1060, 0x1072, 0x107e, 0x108c, 0x10a0, 0x10b3,
- 0x10c3, 0x10f4, 0x1104, 0x1119, 0x1132, 0x1142, 0x1150, 0x1160,
- 0x1177, 0x119e, 0x11b3, 0x11ee, 0x11f8, 0x120e, 0x1230, 0x1257,
- 0x1261, 0x12ad, 0x12b7, 0x12c7, 0x12dd, 0x12ed, 0x1302, 0x131c,
- 0x132a, 0x1336, 0x1344, 0x1370, 0x1380, 0x138c, 0x139c, 0x13ac,
- 0x13bc, 0x13ee, 0x1411, 0x1425, 0x143d, 0x144d, 0x1486, 0x149a,
- 0x14ca, 0x14fe, 0x150c, 0x151e, 0x1542, 0x154c, 0x1558, 0x1564,
- // Entry 100 - 13F
- 0x1570, 0x1587, 0x1593, 0x15a7, 0x15c4, 0x15d0, 0x15dc, 0x15f7,
- 0x1610, 0x161e, 0x1637, 0x1656, 0x1675, 0x168e, 0x16a3, 0x16bc,
- 0x16ca, 0x16e7, 0x16f9, 0x1714, 0x1727, 0x174c, 0x1763, 0x1779,
- 0x178b, 0x17b0, 0x17c2, 0x17ca, 0x17e3, 0x17f8, 0x1804, 0x1823,
- 0x183c, 0x1855, 0x1874,
-} // Size: 606 bytes
-
-var enRegionStr string = "" + // Size: 2940 bytes
- "Ascension IslandAndorraUnited Arab EmiratesAfghanistanAntigua & BarbudaA" +
- "nguillaAlbaniaArmeniaNetherlands AntillesAngolaAntarcticaArgentinaAmeric" +
- "an SamoaAustriaAustraliaArubaÅland IslandsAzerbaijanBosnia & Herzegovina" +
- "BarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSt. Bart" +
- "hélemyBermudaBruneiBoliviaCaribbean NetherlandsBrazilBahamasBhutanBouvet" +
- " IslandBotswanaBelarusBelizeCanadaCocos (Keeling) IslandsCongo - Kinshas" +
- "aCentral African RepublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook" +
- " IslandsChileCameroonChinaColombiaClipperton IslandCosta RicaCubaCape Ve" +
- "rdeCuraçaoChristmas IslandCyprusCzech RepublicGermanyDiego GarciaDjibout" +
- "iDenmarkDominicaDominican RepublicAlgeriaCeuta & MelillaEcuadorEstoniaEg" +
- "yptWestern SaharaEritreaSpainEthiopiaEuropean UnionFinlandFijiFalkland I" +
- "slandsMicronesiaFaroe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFren" +
- "ch GuianaGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial" +
- " GuineaGreeceSouth Georgia & South Sandwich IslandsGuatemalaGuamGuinea-B" +
- "issauGuyanaHong Kong SAR ChinaHeard & McDonald IslandsHondurasCroatiaHai" +
- "tiHungaryCanary IslandsIndonesiaIrelandIsraelIsle of ManIndiaBritish Ind" +
- "ian Ocean TerritoryIraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrg" +
- "yzstanCambodiaKiribatiComorosSt. Kitts & NevisNorth KoreaSouth KoreaKuwa" +
- "itCayman IslandsKazakhstanLaosLebanonSt. LuciaLiechtensteinSri LankaLibe" +
- "riaLesothoLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt" +
- ". MartinMadagascarMarshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMa" +
- "cau SAR ChinaNorthern Mariana IslandsMartiniqueMauritaniaMontserratMalta" +
- "MauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNiger" +
- "Norfolk IslandNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNew Zealand" +
- "OmanPanamaPeruFrench PolynesiaPapua New GuineaPhilippinesPakistanPolandS" +
- "t. Pierre & MiquelonPitcairn IslandsPuerto RicoPalestinian TerritoriesPo" +
- "rtugalPalauParaguayQatarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwanda" +
- "Saudi ArabiaSolomon IslandsSeychellesSudanSwedenSingaporeSt. HelenaSlove" +
- "niaSvalbard & Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurin" +
- "ameSouth SudanSão Tomé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTr" +
- "istan da CunhaTurks & Caicos IslandsChadFrench Southern TerritoriesTogoT" +
- "hailandTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinida" +
- "d & TobagoTuvaluTaiwanTanzaniaUkraineUgandaU.S. Outlying IslandsUnited S" +
- "tatesUruguayUzbekistanVatican CitySt. Vincent & GrenadinesVenezuelaBriti" +
- "sh Virgin IslandsU.S. Virgin IslandsVietnamVanuatuWallis & FutunaSamoaKo" +
- "sovoYemenMayotteSouth AfricaZambiaZimbabweUnknown RegionWorldAfricaNorth" +
- " AmericaSouth AmericaOceaniaWestern AfricaCentral AmericaEastern AfricaN" +
- "orthern AfricaMiddle AfricaSouthern AfricaAmericasNorthern AmericaCaribb" +
- "eanEastern AsiaSouthern AsiaSoutheast AsiaSouthern EuropeAustralasiaMela" +
- "nesiaMicronesian RegionPolynesiaAsiaCentral AsiaWestern AsiaEuropeEaster" +
- "n EuropeNorthern EuropeWestern EuropeLatin America"
-
-var enRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0047, 0x004f, 0x0056,
- 0x005d, 0x0071, 0x0077, 0x0081, 0x008a, 0x0098, 0x009f, 0x00a8,
- 0x00ad, 0x00bb, 0x00c5, 0x00d9, 0x00e1, 0x00eb, 0x00f2, 0x00fe,
- 0x0106, 0x010d, 0x0114, 0x0119, 0x0128, 0x012f, 0x0135, 0x013c,
- 0x0151, 0x0157, 0x015e, 0x0164, 0x0171, 0x0179, 0x0180, 0x0186,
- 0x018c, 0x01a3, 0x01b3, 0x01cb, 0x01de, 0x01e9, 0x01f9, 0x0205,
- 0x020a, 0x0212, 0x0217, 0x021f, 0x0230, 0x023a, 0x023e, 0x0248,
- 0x0250, 0x0260, 0x0266, 0x0274, 0x027b, 0x0287, 0x028f, 0x0296,
- // Entry 40 - 7F
- 0x029e, 0x02b0, 0x02b7, 0x02c6, 0x02cd, 0x02d4, 0x02d9, 0x02e7,
- 0x02ee, 0x02f3, 0x02fb, 0x0309, 0x0310, 0x0314, 0x0324, 0x032e,
- 0x033b, 0x0341, 0x0346, 0x0354, 0x035b, 0x0362, 0x036f, 0x0377,
- 0x037c, 0x0385, 0x038e, 0x0394, 0x039a, 0x03a4, 0x03b5, 0x03bb,
- 0x03e1, 0x03ea, 0x03ee, 0x03fb, 0x0401, 0x0414, 0x042c, 0x0434,
- 0x043b, 0x0440, 0x0447, 0x0455, 0x045e, 0x0465, 0x046b, 0x0476,
- 0x047b, 0x0499, 0x049d, 0x04a1, 0x04a8, 0x04ad, 0x04b3, 0x04ba,
- 0x04c0, 0x04c5, 0x04ca, 0x04d4, 0x04dc, 0x04e4, 0x04eb, 0x04fc,
- // Entry 80 - BF
- 0x0507, 0x0512, 0x0518, 0x0526, 0x0530, 0x0534, 0x053b, 0x0544,
- 0x0551, 0x055a, 0x0561, 0x0568, 0x0571, 0x057b, 0x0581, 0x0586,
- 0x058d, 0x0593, 0x059a, 0x05a4, 0x05ae, 0x05b8, 0x05c8, 0x05d1,
- 0x05d5, 0x05e4, 0x05ec, 0x05fb, 0x0613, 0x061d, 0x0627, 0x0631,
- 0x0636, 0x063f, 0x0647, 0x064d, 0x0653, 0x065b, 0x0665, 0x066c,
- 0x0679, 0x067e, 0x068c, 0x0693, 0x069c, 0x06a7, 0x06ad, 0x06b2,
- 0x06b7, 0x06bb, 0x06c6, 0x06ca, 0x06d0, 0x06d4, 0x06e4, 0x06f4,
- 0x06ff, 0x0707, 0x070d, 0x0722, 0x0732, 0x073d, 0x0754, 0x075c,
- // Entry C0 - FF
- 0x0761, 0x0769, 0x076e, 0x077e, 0x0786, 0x078d, 0x0793, 0x0799,
- 0x079f, 0x07ab, 0x07ba, 0x07c4, 0x07c9, 0x07cf, 0x07d8, 0x07e2,
- 0x07ea, 0x07fe, 0x0806, 0x0812, 0x081c, 0x0823, 0x082a, 0x0832,
- 0x083d, 0x0853, 0x085e, 0x086a, 0x086f, 0x0878, 0x0888, 0x089e,
- 0x08a2, 0x08bd, 0x08c1, 0x08c9, 0x08d3, 0x08da, 0x08e5, 0x08f1,
- 0x08f8, 0x08fd, 0x0903, 0x0914, 0x091a, 0x0920, 0x0928, 0x092f,
- 0x0935, 0x094a, 0x0957, 0x095e, 0x0968, 0x0974, 0x098c, 0x0995,
- 0x09ab, 0x09be, 0x09c5, 0x09cc, 0x09db, 0x09e0, 0x09e6, 0x09eb,
- // Entry 100 - 13F
- 0x09f2, 0x09fe, 0x0a04, 0x0a0c, 0x0a1a, 0x0a1f, 0x0a25, 0x0a32,
- 0x0a3f, 0x0a46, 0x0a54, 0x0a63, 0x0a71, 0x0a80, 0x0a8d, 0x0a9c,
- 0x0aa4, 0x0ab4, 0x0abd, 0x0ac9, 0x0ad6, 0x0ae4, 0x0af3, 0x0afe,
- 0x0b07, 0x0b19, 0x0b22, 0x0b26, 0x0b32, 0x0b3e, 0x0b44, 0x0b52,
- 0x0b61, 0x0b6f, 0x0b7c,
-} // Size: 606 bytes
-
-const enGBRegionStr string = ""
-
-var enGBRegionIdx = []uint16{ // 0 elements
-
-} // Size: 24 bytes
-
-var esRegionStr string = "" + // Size: 3128 bytes
- "Isla de la AscensiónAndorraEmiratos Árabes UnidosAfganistánAntigua y Bar" +
- "budaAnguilaAlbaniaArmeniaAntillas NeerlandesasAngolaAntártidaArgentinaSa" +
- "moa AmericanaAustriaAustraliaArubaIslas ÅlandAzerbaiyánBosnia-Herzegovin" +
- "aBarbadosBangladésBélgicaBurkina FasoBulgariaBaréinBurundiBenínSan Barto" +
- "loméBermudasBrunéiBoliviaCaribe neerlandésBrasilBahamasButánIsla BouvetB" +
- "otsuanaBielorrusiaBeliceCanadáIslas CocosRepública Democrática del Congo" +
- "República CentroafricanaRepública del CongoSuizaCosta de MarfilIslas Coo" +
- "kChileCamerúnChinaColombiaIsla ClippertonCosta RicaCubaCabo VerdeCurazao" +
- "Isla de NavidadChipreRepública ChecaAlemaniaDiego GarcíaYibutiDinamarcaD" +
- "ominicaRepública DominicanaArgeliaCeuta y MelillaEcuadorEstoniaEgiptoSáh" +
- "ara OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFiyiIslas Malvin" +
- "asMicronesiaIslas FeroeFranciaGabónReino UnidoGranadaGeorgiaGuayana Fran" +
- "cesaGuerneseyGhanaGibraltarGroenlandiaGambiaGuineaGuadalupeGuinea Ecuato" +
- "rialGreciaIslas Georgia del Sur y Sandwich del SurGuatemalaGuamGuinea-Bi" +
- "sáuGuyanaRAE de Hong Kong (China)Islas Heard y McDonaldHondurasCroaciaHa" +
- "itíHungríaCanariasIndonesiaIrlandaIsraelIsla de ManIndiaTerritorio Britá" +
- "nico del Océano ÍndicoIrakIránIslandiaItaliaJerseyJamaicaJordaniaJapónKe" +
- "niaKirguistánCamboyaKiribatiComorasSan Cristóbal y NievesCorea del Norte" +
- "Corea del SurKuwaitIslas CaimánKazajistánLaosLíbanoSanta LucíaLiechtenst" +
- "einSri LankaLiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarruecosMónacoMo" +
- "ldaviaMontenegroSan MartínMadagascarIslas MarshallMacedoniaMaliMyanmar (" +
- "Birmania)MongoliaRAE de Macao (China)Islas Marianas del NorteMartinicaMa" +
- "uritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNami" +
- "biaNueva CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNe" +
- "palNauruNiueNueva ZelandaOmánPanamáPerúPolinesia FrancesaPapúa Nueva Gui" +
- "neaFilipinasPakistánPoloniaSan Pedro y MiquelónIslas PitcairnPuerto Rico" +
- "Territorios PalestinosPortugalPalaosParaguayCatarTerritorios alejados de" +
- " OceaníaReuniónRumaníaSerbiaRusiaRuandaArabia SaudíIslas SalomónSeychell" +
- "esSudánSueciaSingapurSanta ElenaEsloveniaSvalbard y Jan MayenEslovaquiaS" +
- "ierra LeonaSan MarinoSenegalSomaliaSurinamSudán del SurSanto Tomé y Prín" +
- "cipeEl SalvadorSint MaartenSiriaSuazilandiaTristán da CunhaIslas Turcas " +
- "y CaicosChadTerritorios Australes FrancesesTogoTailandiaTayikistánTokela" +
- "uTimor OrientalTurkmenistánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwá" +
- "nTanzaniaUcraniaUgandaIslas menores alejadas de EE. UU.Estados UnidosUru" +
- "guayUzbekistánCiudad del VaticanoSan Vicente y las GranadinasVenezuelaIs" +
- "las Vírgenes BritánicasIslas Vírgenes de EE. UU.VietnamVanuatuWallis y F" +
- "utunaSamoaKosovoYemenMayotteSudáfricaZambiaZimbabueRegión desconocidaMun" +
- "doÁfricaAmérica del NorteSudaméricaOceaníaÁfrica occidentalCentroamérica" +
- "África orientalÁfrica septentrionalÁfrica centralÁfrica meridionalAméri" +
- "caNorteaméricaCaribeAsia orientalAsia meridionalSudeste asiáticoEuropa m" +
- "eridionalAustralasiaMelanesiaRegión de MicronesiaPolinesiaAsiaAsia centr" +
- "alAsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occiden" +
- "talLatinoamérica"
-
-var esRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x001c, 0x0033, 0x003e, 0x004f, 0x0056, 0x005d,
- 0x0064, 0x0079, 0x007f, 0x0089, 0x0092, 0x00a1, 0x00a8, 0x00b1,
- 0x00b6, 0x00c2, 0x00cd, 0x00df, 0x00e7, 0x00f1, 0x00f9, 0x0105,
- 0x010d, 0x0114, 0x011b, 0x0121, 0x012f, 0x0137, 0x013e, 0x0145,
- 0x0157, 0x015d, 0x0164, 0x016a, 0x0175, 0x017d, 0x0188, 0x018e,
- 0x0195, 0x01a0, 0x01c1, 0x01da, 0x01ee, 0x01f3, 0x0202, 0x020c,
- 0x0211, 0x0219, 0x021e, 0x0226, 0x0235, 0x023f, 0x0243, 0x024d,
- 0x0254, 0x0263, 0x0269, 0x0279, 0x0281, 0x028e, 0x0294, 0x029d,
- // Entry 40 - 7F
- 0x02a5, 0x02ba, 0x02c1, 0x02d0, 0x02d7, 0x02de, 0x02e4, 0x02f6,
- 0x02fd, 0x0304, 0x030c, 0x031a, 0x0323, 0x0327, 0x0335, 0x033f,
- 0x034a, 0x0351, 0x0357, 0x0362, 0x0369, 0x0370, 0x0380, 0x0389,
- 0x038e, 0x0397, 0x03a2, 0x03a8, 0x03ae, 0x03b7, 0x03c8, 0x03ce,
- 0x03f6, 0x03ff, 0x0403, 0x0410, 0x0416, 0x042e, 0x0444, 0x044c,
- 0x0453, 0x0459, 0x0461, 0x0469, 0x0472, 0x0479, 0x047f, 0x048a,
- 0x048f, 0x04b8, 0x04bc, 0x04c1, 0x04c9, 0x04cf, 0x04d5, 0x04dc,
- 0x04e4, 0x04ea, 0x04ef, 0x04fa, 0x0501, 0x0509, 0x0510, 0x0527,
- // Entry 80 - BF
- 0x0536, 0x0543, 0x0549, 0x0556, 0x0561, 0x0565, 0x056c, 0x0578,
- 0x0585, 0x058e, 0x0595, 0x059b, 0x05a3, 0x05ad, 0x05b4, 0x05b9,
- 0x05c2, 0x05c9, 0x05d1, 0x05db, 0x05e6, 0x05f0, 0x05fe, 0x0607,
- 0x060b, 0x061d, 0x0625, 0x0639, 0x0651, 0x065a, 0x0664, 0x066e,
- 0x0673, 0x067b, 0x0683, 0x0689, 0x0690, 0x0697, 0x06a1, 0x06a8,
- 0x06b7, 0x06bd, 0x06c9, 0x06d0, 0x06d9, 0x06e6, 0x06ed, 0x06f2,
- 0x06f7, 0x06fb, 0x0708, 0x070d, 0x0714, 0x0719, 0x072b, 0x073e,
- 0x0747, 0x0750, 0x0757, 0x076c, 0x077a, 0x0785, 0x079b, 0x07a3,
- // Entry C0 - FF
- 0x07a9, 0x07b1, 0x07b6, 0x07d6, 0x07de, 0x07e6, 0x07ec, 0x07f1,
- 0x07f7, 0x0804, 0x0812, 0x081c, 0x0822, 0x0828, 0x0830, 0x083b,
- 0x0844, 0x0858, 0x0862, 0x086e, 0x0878, 0x087f, 0x0886, 0x088d,
- 0x089b, 0x08b2, 0x08bd, 0x08c9, 0x08ce, 0x08d9, 0x08ea, 0x08ff,
- 0x0903, 0x0922, 0x0926, 0x092f, 0x093a, 0x0941, 0x094f, 0x095c,
- 0x0962, 0x0967, 0x096f, 0x0980, 0x0986, 0x098d, 0x0995, 0x099c,
- 0x09a2, 0x09c3, 0x09d1, 0x09d8, 0x09e3, 0x09f6, 0x0a12, 0x0a1b,
- 0x0a36, 0x0a50, 0x0a57, 0x0a5e, 0x0a6d, 0x0a72, 0x0a78, 0x0a7d,
- // Entry 100 - 13F
- 0x0a84, 0x0a8e, 0x0a94, 0x0a9c, 0x0aaf, 0x0ab4, 0x0abb, 0x0acd,
- 0x0ad8, 0x0ae0, 0x0af2, 0x0b00, 0x0b10, 0x0b25, 0x0b34, 0x0b46,
- 0x0b4e, 0x0b5b, 0x0b61, 0x0b6e, 0x0b7d, 0x0b8e, 0x0b9f, 0x0baa,
- 0x0bb3, 0x0bc8, 0x0bd1, 0x0bd5, 0x0be1, 0x0bf0, 0x0bf6, 0x0c05,
- 0x0c19, 0x0c2a, 0x0c38,
-} // Size: 606 bytes
-
-const es419RegionStr string = ""
-
-var es419RegionIdx = []uint16{ // 0 elements
-
-} // Size: 24 bytes
-
-var etRegionStr string = "" + // Size: 2993 bytes
- "Ascensioni saarAndorraAraabia ÜhendemiraadidAfganistanAntigua ja Barbuda" +
- "AnguillaAlbaaniaArmeeniaHollandi AntillidAngolaAntarktisArgentinaAmeerik" +
- "a SamoaAustriaAustraaliaArubaAhvenamaaAserbaidžaanBosnia ja Hertsegoviin" +
- "aBarbadosBangladeshBelgiaBurkina FasoBulgaariaBahreinBurundiBeninSaint B" +
- "arthélemyBermudaBruneiBoliiviaHollandi Kariibi mere saaredBrasiiliaBaham" +
- "aBhutanBouvet’ saarBotswanaValgeveneBelizeKanadaKookossaaredKongo DVKesk" +
- "-Aafrika VabariikKongo VabariikŠveitsCôte d’IvoireCooki saaredTšiiliKame" +
- "runHiinaColombiaClippertoni saarCosta RicaKuubaRoheneemesaaredCuraçaoJõu" +
- "lusaarKüprosTšehhiSaksamaaDiego GarciaDjiboutiTaaniDominicaDominikaani V" +
- "abariikAlžeeriaCeuta ja MelillaEcuadorEestiEgiptusLääne-SaharaEritreaHis" +
- "paaniaEtioopiaEuroopa LiitSoomeFidžiFalklandi saaredMikroneesiaFääri saa" +
- "redPrantsusmaaGabonSuurbritanniaGrenadaGruusiaPrantsuse GuajaanaGuernsey" +
- "GhanaGibraltarGröönimaaGambiaGuineaGuadeloupeEkvatoriaal-GuineaKreekaLõu" +
- "na-Georgia ja Lõuna-Sandwichi saaredGuatemalaGuamGuinea-BissauGuyanaHong" +
- "kongi erihalduspiirkondHeardi ja McDonaldi saaredHondurasHorvaatiaHaitiU" +
- "ngariKanaari saaredIndoneesiaIirimaaIisraelMani saarIndiaBriti India ook" +
- "eani alaIraakIraanIslandItaaliaJerseyJamaicaJordaaniaJaapanKeeniaKõrgõzs" +
- "tanKambodžaKiribatiKomooridSaint Kitts ja NevisPõhja-KoreaLõuna-KoreaKuv" +
- "eitKaimanisaaredKasahstanLaosLiibanonSaint LuciaLiechtensteinSri LankaLi" +
- "beeriaLesothoLeeduLuksemburgLätiLiibüaMarokoMonacoMoldovaMontenegroSaint" +
- "-MartinMadagaskarMarshalli SaaredMakedooniaMaliMyanmar (Birma)MongooliaM" +
- "acau erihalduspiirkondPõhja-MariaanidMartiniqueMauritaaniaMontserratMalt" +
- "aMauritiusMaldiividMalawiMehhikoMalaisiaMosambiikNamiibiaUus-KaledooniaN" +
- "igerNorfolkNigeeriaNicaraguaHollandNorraNepalNauruNiueUus-MeremaaOmaanPa" +
- "namaPeruuPrantsuse PolüneesiaPaapua Uus-GuineaFilipiinidPakistanPoolaSai" +
- "nt Pierre ja MiquelonPitcairni saaredPuerto RicoPalestiina aladPortugalB" +
- "elauParaguayKatarOkeaania hajasaaredRéunionRumeeniaSerbiaVenemaaRwandaSa" +
- "udi AraabiaSaalomoni SaaredSeišellidSudaanRootsiSingapurSaint HelenaSlov" +
- "eeniaSvalbard ja Jan MayenSlovakkiaSierra LeoneSan MarinoSenegalSomaalia" +
- "SurinameLõuna-SudaanSão Tomé ja PríncipeEl SalvadorSint MaartenSüüriaSva" +
- "asimaaTristan da CunhaTurks ja CaicosTšaadPrantsuse LõunaaladTogoTaiTadž" +
- "ikistanTokelauIda-TimorTürkmenistanTuneesiaTongaTürgiTrinidad ja TobagoT" +
- "uvaluTaiwanTansaaniaUkrainaUgandaÜhendriikide hajasaaredAmeerika Ühendri" +
- "igidUruguayUsbekistanVatikanSaint Vincent ja GrenadiinidVenezuelaBriti N" +
- "eitsisaaredUSA NeitsisaaredVietnamVanuatuWallis ja FutunaSamoaKosovoJeem" +
- "enMayotteLõuna-Aafrika VabariikSambiaZimbabweTundmatu piirkondmaailmAafr" +
- "ikaPõhja-AmeerikaLõuna-AmeerikaOkeaaniaLääne-AafrikaKesk-AmeerikaIda-Aaf" +
- "rikaPõhja-AafrikaKesk-AafrikaLõuna-AafrikaAmeerikaAmeerika põhjaosaKarii" +
- "bi piirkondIda-AasiaLõuna-AasiaKagu-AasiaLõuna-EuroopaAustralaasiaMelane" +
- "esiaMikroneesia (piirkond)PolüneesiaAasiaKesk-AasiaLääne-AasiaEuroopaIda" +
- "-EuroopaPõhja-EuroopaLääne-EuroopaLadina-Ameerika"
-
-var etRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0016, 0x002d, 0x0037, 0x0049, 0x0051, 0x0059,
- 0x0061, 0x0072, 0x0078, 0x0081, 0x008a, 0x0098, 0x009f, 0x00a9,
- 0x00ae, 0x00b7, 0x00c4, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff,
- 0x0108, 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0141,
- 0x015d, 0x0166, 0x016c, 0x0172, 0x0180, 0x0188, 0x0191, 0x0197,
- 0x019d, 0x01a9, 0x01b1, 0x01c6, 0x01d4, 0x01db, 0x01eb, 0x01f7,
- 0x01fe, 0x0205, 0x020a, 0x0212, 0x0222, 0x022c, 0x0231, 0x0240,
- 0x0248, 0x0252, 0x0259, 0x0260, 0x0268, 0x0274, 0x027c, 0x0281,
- // Entry 40 - 7F
- 0x0289, 0x029d, 0x02a6, 0x02b6, 0x02bd, 0x02c2, 0x02c9, 0x02d7,
- 0x02de, 0x02e7, 0x02ef, 0x02fb, 0x0300, 0x0306, 0x0316, 0x0321,
- 0x032f, 0x033a, 0x033f, 0x034c, 0x0353, 0x035a, 0x036c, 0x0374,
- 0x0379, 0x0382, 0x038d, 0x0393, 0x0399, 0x03a3, 0x03b5, 0x03bb,
- 0x03e4, 0x03ed, 0x03f1, 0x03fe, 0x0404, 0x041f, 0x0439, 0x0441,
- 0x044a, 0x044f, 0x0455, 0x0463, 0x046d, 0x0474, 0x047b, 0x0484,
- 0x0489, 0x04a0, 0x04a5, 0x04aa, 0x04b0, 0x04b7, 0x04bd, 0x04c4,
- 0x04cd, 0x04d3, 0x04d9, 0x04e5, 0x04ee, 0x04f6, 0x04fe, 0x0512,
- // Entry 80 - BF
- 0x051e, 0x052a, 0x0530, 0x053d, 0x0546, 0x054a, 0x0552, 0x055d,
- 0x056a, 0x0573, 0x057b, 0x0582, 0x0587, 0x0591, 0x0596, 0x059d,
- 0x05a3, 0x05a9, 0x05b0, 0x05ba, 0x05c6, 0x05d0, 0x05e0, 0x05ea,
- 0x05ee, 0x05fd, 0x0606, 0x061d, 0x062d, 0x0637, 0x0642, 0x064c,
- 0x0651, 0x065a, 0x0663, 0x0669, 0x0670, 0x0678, 0x0681, 0x0689,
- 0x0697, 0x069c, 0x06a3, 0x06ab, 0x06b4, 0x06bb, 0x06c0, 0x06c5,
- 0x06ca, 0x06ce, 0x06d9, 0x06de, 0x06e4, 0x06e9, 0x06fe, 0x070f,
- 0x0719, 0x0721, 0x0726, 0x073e, 0x074e, 0x0759, 0x0768, 0x0770,
- // Entry C0 - FF
- 0x0775, 0x077d, 0x0782, 0x0795, 0x079d, 0x07a5, 0x07ab, 0x07b2,
- 0x07b8, 0x07c5, 0x07d5, 0x07df, 0x07e5, 0x07eb, 0x07f3, 0x07ff,
- 0x0808, 0x081d, 0x0826, 0x0832, 0x083c, 0x0843, 0x084b, 0x0853,
- 0x0860, 0x0877, 0x0882, 0x088e, 0x0896, 0x089f, 0x08af, 0x08be,
- 0x08c4, 0x08d8, 0x08dc, 0x08df, 0x08eb, 0x08f2, 0x08fb, 0x0908,
- 0x0910, 0x0915, 0x091b, 0x092d, 0x0933, 0x0939, 0x0942, 0x0949,
- 0x094f, 0x0967, 0x097c, 0x0983, 0x098d, 0x0994, 0x09b0, 0x09b9,
- 0x09cb, 0x09db, 0x09e2, 0x09e9, 0x09f9, 0x09fe, 0x0a04, 0x0a0a,
- // Entry 100 - 13F
- 0x0a11, 0x0a28, 0x0a2e, 0x0a36, 0x0a47, 0x0a4d, 0x0a54, 0x0a63,
- 0x0a72, 0x0a7a, 0x0a89, 0x0a96, 0x0aa1, 0x0aaf, 0x0abb, 0x0ac9,
- 0x0ad1, 0x0ae3, 0x0af3, 0x0afc, 0x0b08, 0x0b12, 0x0b20, 0x0b2c,
- 0x0b36, 0x0b4c, 0x0b57, 0x0b5c, 0x0b66, 0x0b73, 0x0b7a, 0x0b85,
- 0x0b93, 0x0ba2, 0x0bb1,
-} // Size: 606 bytes
-
-var faRegionStr string = "" + // Size: 5002 bytes
- "جزایر آسنسیونآندوراامارات متحدهٔ عربیافغانستانآنتیگوا و باربوداآنگویلاآل" +
- "بانیارمنستانآنتیل هلندآنگولاجنوبگانآرژانتینساموآی امریکااتریشاسترالیاآر" +
- "وباجزایر آلاندجمهوری آذربایجانبوسنی و هرزگوینباربادوسبنگلادشبلژیکبورکین" +
- "افاسوبلغارستانبحرینبوروندیبنینسن بارتلمیبرمودابرونئیبولیویجزایر کارائیب" +
- " هلندبرزیلباهامابوتانجزیرهٔ بووهبوتسوانابلاروسبلیزکاناداجزایر کوکوسکنگو " +
- "- کینشاساجمهوری افریقای مرکزیکنگو - برازویلسوئیسساحل عاججزایر کوکشیلیکام" +
- "رونچینکلمبیاجزایر کلیپرتونکاستاریکاکوباکیپ\u200cوردکوراسائوجزیرهٔ کریسم" +
- "سقبرسجمهوری چکآلماندیه\u200cگو گارسیاجیبوتیدانمارکدومینیکاجمهوری دومینی" +
- "کنالجزایرسبته و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحاد" +
- "یهٔ اروپافنلاندفیجیجزایر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگرن" +
- "اداگرجستانگویان فرانسهگرنزیغناجبل\u200cالطارقگرینلندگامبیاگینهگوادلوپگی" +
- "نهٔ استوایییونانجورجیای جنوبی و جزایر ساندویچ جنوبیگواتمالاگوامگینهٔ بی" +
- "سائوگویانهنگ\u200cکنگ، ناحیهٔ ویژهٔ حکومتی چینجزیرهٔ هرد و جزایر مک" +
- "\u200cدونالدهندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلنداسرائیلجز" +
- "یرهٔ منهندقلمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائی" +
- "کااردنژاپنکنیاقرقیزستانکامبوجکیریباتیکوموروسنت کیتس و نویسکرهٔ شمالیکره" +
- "ٔ جنوبیکویتجزایر کِیمنقزاقستانلائوسلبنانسنت لوسیالیختن\u200cاشتاینسری" +
- "\u200cلانکالیبریالسوتولیتوانیلوکزامبورگلتونیلیبیمراکشموناکومولداویمونته" +
- "\u200cنگروسنت مارتینماداگاسکارجزایر مارشالمقدونیهمالیمیانمار (برمه)مغولس" +
- "تانماکائو، ناحیهٔ ویژهٔ حکومتی چینجزایر ماریانای شمالیمارتینیکموریتانیم" +
- "ونت\u200cسراتمالتموریسمالدیومالاویمکزیکمالزیموزامبیکنامیبیاکالدونیای جد" +
- "یدنیجرجزیرهٔ نورفولکنیجریهنیکاراگوئههلندنروژنپالنائورونیوئهنیوزیلندعمان" +
- "پاناماپروپلی\u200cنزی فرانسهپاپوا گینهٔ نوفیلیپینپاکستانلهستانسن پیر و " +
- "میکلنجزایر پیت\u200cکرنپورتوریکوسرزمین\u200cهای فلسطینیپرتغالپالائوپارا" +
- "گوئهقطربخش\u200cهای دورافتادهٔ اقیانوسیهرئونیونرومانیصربستانروسیهرواندا" +
- "عربستان سعودیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناسلوونیاسوالبارد و " +
- "جان\u200cمایناسلواکیسیرالئونسان\u200cمارینوسنگالسومالیسورینامسودان جنوب" +
- "یپرینسیپ و سائوتومهالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر" +
- " تورکس و کایکوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور-ل" +
- "ستهترکمنستانتونستونگاترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکراینا" +
- "وگانداجزایر دورافتادهٔ ایالات متحدهایالات متحدهاروگوئهازبکستانواتیکانسن" +
- "ت وینسنت و گرنادین\u200cهاونزوئلاجزایر ویرجین بریتانیاجزایر ویرجین ایال" +
- "ات متحدهویتناموانواتووالیس و فوتوناساموآکوزوویمنمایوتافریقای جنوبیزامبی" +
- "ازیمبابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیانوسیهغرب " +
- "افریقاامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاامریکاشما" +
- "ل امریکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزینا" +
- "حیهٔ میکرونزیپلی\u200cنزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپ" +
- "اغرب اروپاامریکای لاتین"
-
-var faRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0019, 0x0025, 0x0047, 0x0059, 0x0079, 0x0087, 0x0093,
- 0x00a3, 0x00b6, 0x00c2, 0x00d0, 0x00e0, 0x00f9, 0x0103, 0x0113,
- 0x011d, 0x0132, 0x0151, 0x016d, 0x017d, 0x018b, 0x0195, 0x01ab,
- 0x01bd, 0x01c7, 0x01d5, 0x01dd, 0x01f0, 0x01fc, 0x0208, 0x0214,
- 0x0236, 0x0240, 0x024c, 0x0256, 0x026b, 0x027b, 0x0287, 0x028f,
- 0x029b, 0x02b0, 0x02c9, 0x02ef, 0x0308, 0x0312, 0x0321, 0x0332,
- 0x033a, 0x0346, 0x034c, 0x0358, 0x0373, 0x0385, 0x038d, 0x039c,
- 0x03ac, 0x03c5, 0x03cd, 0x03de, 0x03e8, 0x0402, 0x040e, 0x041c,
- // Entry 40 - 7F
- 0x042c, 0x0449, 0x0457, 0x046d, 0x047b, 0x0487, 0x048d, 0x04a0,
- 0x04ac, 0x04ba, 0x04c6, 0x04e1, 0x04ed, 0x04f5, 0x050e, 0x051e,
- 0x0531, 0x053d, 0x0545, 0x0555, 0x0561, 0x056f, 0x0586, 0x0590,
- 0x0596, 0x05ab, 0x05b9, 0x05c5, 0x05cd, 0x05db, 0x05f4, 0x05fe,
- 0x063f, 0x064f, 0x0657, 0x066e, 0x0678, 0x06b5, 0x06ea, 0x06f8,
- 0x0704, 0x0710, 0x0720, 0x0735, 0x0743, 0x074f, 0x075d, 0x076e,
- 0x0774, 0x07aa, 0x07b2, 0x07bc, 0x07c8, 0x07d6, 0x07de, 0x07ee,
- 0x07f6, 0x07fe, 0x0806, 0x0818, 0x0824, 0x0834, 0x0840, 0x085b,
- // Entry 80 - BF
- 0x086e, 0x0881, 0x0889, 0x089e, 0x08ae, 0x08b8, 0x08c2, 0x08d3,
- 0x08ec, 0x08ff, 0x090b, 0x0915, 0x0923, 0x0937, 0x0941, 0x0949,
- 0x0953, 0x095f, 0x096d, 0x0982, 0x0995, 0x09a9, 0x09c0, 0x09ce,
- 0x09d6, 0x09ef, 0x09ff, 0x0a39, 0x0a5f, 0x0a6f, 0x0a7f, 0x0a92,
- 0x0a9a, 0x0aa4, 0x0ab0, 0x0abc, 0x0ac6, 0x0ad0, 0x0ae0, 0x0aee,
- 0x0b09, 0x0b11, 0x0b2c, 0x0b38, 0x0b4c, 0x0b54, 0x0b5c, 0x0b64,
- 0x0b70, 0x0b7a, 0x0b8a, 0x0b92, 0x0b9e, 0x0ba4, 0x0bc0, 0x0bda,
- 0x0be8, 0x0bf6, 0x0c02, 0x0c1b, 0x0c35, 0x0c47, 0x0c6b, 0x0c77,
- // Entry C0 - FF
- 0x0c83, 0x0c93, 0x0c99, 0x0cd0, 0x0cde, 0x0cea, 0x0cf8, 0x0d02,
- 0x0d0e, 0x0d27, 0x0d3e, 0x0d46, 0x0d50, 0x0d58, 0x0d66, 0x0d73,
- 0x0d81, 0x0da8, 0x0db6, 0x0dc6, 0x0ddb, 0x0de5, 0x0df1, 0x0dff,
- 0x0e14, 0x0e36, 0x0e4a, 0x0e5b, 0x0e65, 0x0e75, 0x0e91, 0x0eb6,
- 0x0ebc, 0x0ee4, 0x0eec, 0x0ef8, 0x0f0a, 0x0f18, 0x0f2b, 0x0f3d,
- 0x0f45, 0x0f4f, 0x0f59, 0x0f79, 0x0f85, 0x0f91, 0x0fa1, 0x0faf,
- 0x0fbd, 0x0ff4, 0x100b, 0x1019, 0x1029, 0x1037, 0x1063, 0x1071,
- 0x1099, 0x10c8, 0x10d4, 0x10e2, 0x10fc, 0x1106, 0x1110, 0x1116,
- // Entry 100 - 13F
- 0x1120, 0x1139, 0x1145, 0x1155, 0x116e, 0x1176, 0x1182, 0x119b,
- 0x11b4, 0x11c6, 0x11d9, 0x11f2, 0x1205, 0x121a, 0x122f, 0x1244,
- 0x1250, 0x1265, 0x1273, 0x1282, 0x1293, 0x12ab, 0x12be, 0x12ce,
- 0x12da, 0x12f7, 0x1306, 0x130e, 0x1323, 0x1332, 0x133c, 0x134d,
- 0x1360, 0x1371, 0x138a,
-} // Size: 606 bytes
-
-var fiRegionStr string = "" + // Size: 3017 bytes
- "Ascension-saariAndorraArabiemiirikunnatAfganistanAntigua ja BarbudaAngui" +
- "llaAlbaniaArmeniaAlankomaiden AntillitAngolaAntarktisArgentiinaAmerikan " +
- "SamoaItävaltaAustraliaArubaAhvenanmaaAzerbaidžanBosnia ja HertsegovinaBa" +
- "rbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint-Barth" +
- "élemyBermudaBruneiBoliviaKaribian AlankomaatBrasiliaBahamaBhutanBouvet’" +
- "nsaariBotswanaValko-VenäjäBelizeKanadaKookossaaret (Keelingsaaret)Kongon" +
- " demokraattinen tasavaltaKeski-Afrikan tasavaltaKongon tasavaltaSveitsiN" +
- "orsunluurannikkoCookinsaaretChileKamerunKiinaKolumbiaClippertoninsaariCo" +
- "sta RicaKuubaKap VerdeCuraçaoJoulusaariKyprosTšekkiSaksaDiego GarciaDjib" +
- "outiTanskaDominicaDominikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuador" +
- "ViroEgyptiLänsi-SaharaEritreaEspanjaEtiopiaEuroopan unioniSuomiFidžiFalk" +
- "landinsaaretMikronesian liittovaltioFärsaaretRanskaGabonIso-BritanniaGre" +
- "nadaGeorgiaRanskan GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGua" +
- "deloupePäiväntasaajan GuineaKreikkaEtelä-Georgia ja Eteläiset Sandwichsa" +
- "aretGuatemalaGuamGuinea-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McD" +
- "onaldinsaaretHondurasKroatiaHaitiUnkariKanariansaaretIndonesiaIrlantiIsr" +
- "aelMansaariIntiaBrittiläinen Intian valtameren alueIrakIranIslantiItalia" +
- "JerseyJamaikaJordaniaJapaniKeniaKirgisiaKambodžaKiribatiKomoritSaint Kit" +
- "ts ja NevisPohjois-KoreaEtelä-KoreaKuwaitCaymansaaretKazakstanLaosLibano" +
- "nSaint LuciaLiechtensteinSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLi" +
- "byaMarokkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshallinsaaretM" +
- "akedoniaMaliMyanmar (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-Mariaani" +
- "tMartiniqueMauritaniaMontserratMaltaMauritiusMalediivitMalawiMeksikoMale" +
- "siaMosambikNamibiaUusi-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlank" +
- "omaatNorjaNepalNauruNiueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapu" +
- "a-Uusi-GuineaFilippiinitPakistanPuolaSaint-Pierre ja MiquelonPitcairnPue" +
- "rto RicoPalestiinalaisalueetPortugaliPalauParaguayQatarulkomeriRéunionRo" +
- "maniaSerbiaVenäjäRuandaSaudi-ArabiaSalomonsaaretSeychellitSudanRuotsiSin" +
- "gaporeSaint HelenaSloveniaHuippuvuoret ja Jan MayenSlovakiaSierra LeoneS" +
- "an MarinoSenegalSomaliaSurinamEtelä-SudanSão Tomé ja PríncipeEl Salvador" +
- "Sint MaartenSyyriaSwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRans" +
- "kan eteläiset alueetTogoThaimaaTadžikistanTokelauItä-TimorTurkmenistanTu" +
- "nisiaTongaTurkkiTrinidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdys" +
- "valtain erillissaaretYhdysvallatUruguayUzbekistanVatikaaniSaint Vincent " +
- "ja GrenadiinitVenezuelaBrittiläiset NeitsytsaaretYhdysvaltain Neitsytsaa" +
- "retVietnamVanuatuWallis ja FutunaSamoaKosovoJemenMayotteEtelä-AfrikkaSam" +
- "biaZimbabwetuntematon aluemaailmaAfrikkaPohjois-AmerikkaEtelä-AmerikkaOs" +
- "eaniaLänsi-AfrikkaVäli-AmerikkaItä-AfrikkaPohjois-AfrikkaKeski-Afrikkaet" +
- "eläinen AfrikkaAmerikkapohjoinen AmerikkaKaribiaItä-AasiaEtelä-AasiaKaak" +
- "kois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikronesiaPolynesiaAasiaKes" +
- "ki-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLänsi-EurooppaLat" +
- "inalainen Amerikka"
-
-var fiRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0016, 0x0027, 0x0031, 0x0043, 0x004b, 0x0052,
- 0x0059, 0x006e, 0x0074, 0x007d, 0x0087, 0x0095, 0x009e, 0x00a7,
- 0x00ac, 0x00b6, 0x00c2, 0x00d8, 0x00e0, 0x00ea, 0x00f0, 0x00fc,
- 0x0104, 0x010b, 0x0112, 0x0117, 0x0128, 0x012f, 0x0135, 0x013c,
- 0x014f, 0x0157, 0x015d, 0x0163, 0x0172, 0x017a, 0x0188, 0x018e,
- 0x0194, 0x01b0, 0x01cf, 0x01e6, 0x01f6, 0x01fd, 0x020e, 0x021a,
- 0x021f, 0x0226, 0x022b, 0x0233, 0x0244, 0x024e, 0x0253, 0x025c,
- 0x0264, 0x026e, 0x0274, 0x027b, 0x0280, 0x028c, 0x0294, 0x029a,
- // Entry 40 - 7F
- 0x02a2, 0x02ba, 0x02c1, 0x02d1, 0x02d8, 0x02dc, 0x02e2, 0x02ef,
- 0x02f6, 0x02fd, 0x0304, 0x0313, 0x0318, 0x031e, 0x032e, 0x0346,
- 0x0350, 0x0356, 0x035b, 0x0368, 0x036f, 0x0376, 0x0385, 0x038d,
- 0x0392, 0x039b, 0x03a5, 0x03ab, 0x03b1, 0x03bb, 0x03d2, 0x03d9,
- 0x0404, 0x040d, 0x0411, 0x041e, 0x0424, 0x043e, 0x0457, 0x045f,
- 0x0466, 0x046b, 0x0471, 0x047f, 0x0488, 0x048f, 0x0495, 0x049d,
- 0x04a2, 0x04c6, 0x04ca, 0x04ce, 0x04d5, 0x04db, 0x04e1, 0x04e8,
- 0x04f0, 0x04f6, 0x04fb, 0x0503, 0x050c, 0x0514, 0x051b, 0x052f,
- // Entry 80 - BF
- 0x053c, 0x0548, 0x054e, 0x055a, 0x0563, 0x0567, 0x056e, 0x0579,
- 0x0586, 0x058f, 0x0596, 0x059d, 0x05a4, 0x05ad, 0x05b3, 0x05b8,
- 0x05bf, 0x05c5, 0x05cc, 0x05d6, 0x05e2, 0x05ec, 0x05fc, 0x0605,
- 0x0609, 0x0618, 0x0620, 0x0637, 0x0648, 0x0652, 0x065c, 0x0666,
- 0x066b, 0x0674, 0x067e, 0x0684, 0x068b, 0x0692, 0x069a, 0x06a1,
- 0x06af, 0x06b4, 0x06c2, 0x06c9, 0x06d2, 0x06dc, 0x06e1, 0x06e6,
- 0x06eb, 0x06ef, 0x06fc, 0x0700, 0x0706, 0x070a, 0x071b, 0x072c,
- 0x0737, 0x073f, 0x0744, 0x075c, 0x0764, 0x076f, 0x0783, 0x078c,
- // Entry C0 - FF
- 0x0791, 0x0799, 0x079e, 0x07a6, 0x07ae, 0x07b5, 0x07bb, 0x07c3,
- 0x07c9, 0x07d5, 0x07e2, 0x07ec, 0x07f1, 0x07f7, 0x0800, 0x080c,
- 0x0814, 0x082d, 0x0835, 0x0841, 0x084b, 0x0852, 0x0859, 0x0860,
- 0x086c, 0x0883, 0x088e, 0x089a, 0x08a0, 0x08a8, 0x08b8, 0x08ce,
- 0x08d3, 0x08ec, 0x08f0, 0x08f7, 0x0903, 0x090a, 0x0914, 0x0920,
- 0x0927, 0x092c, 0x0932, 0x0944, 0x094a, 0x0950, 0x0958, 0x095f,
- 0x0965, 0x097f, 0x098a, 0x0991, 0x099b, 0x09a4, 0x09c0, 0x09c9,
- 0x09e4, 0x09fe, 0x0a05, 0x0a0c, 0x0a1c, 0x0a21, 0x0a27, 0x0a2c,
- // Entry 100 - 13F
- 0x0a33, 0x0a41, 0x0a47, 0x0a4f, 0x0a5e, 0x0a65, 0x0a6c, 0x0a7c,
- 0x0a8b, 0x0a92, 0x0aa0, 0x0aae, 0x0aba, 0x0ac9, 0x0ad6, 0x0ae8,
- 0x0af0, 0x0b02, 0x0b09, 0x0b13, 0x0b1f, 0x0b2d, 0x0b3c, 0x0b48,
- 0x0b51, 0x0b5b, 0x0b64, 0x0b69, 0x0b74, 0x0b80, 0x0b88, 0x0b95,
- 0x0ba5, 0x0bb4, 0x0bc9,
-} // Size: 606 bytes
-
-var filRegionStr string = "" + // Size: 3038 bytes
- "Acsencion islandAndorraUnited Arab EmiratesAfghanistanAntigua and Barbud" +
- "aAnguillaAlbaniaArmeniaNetherlands AntillesAngolaAntarcticaArgentinaAmer" +
- "ican SamoaAustriaAustraliaArubaÅland IslandsAzerbaijanBosnia and Herzego" +
- "vinaBarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSain" +
- "t BarthélemyBermudaBruneiBoliviaCaribbean NetherlandsBrazilBahamasBhutan" +
- "Bouvet IslandBotswanaBelarusBelizeCanadaCocos (Keeling) IslandsCongo - K" +
- "inshasaCentral African RepublicCongo - BrazzavilleSwitzerlandCôte d’Ivoi" +
- "reCook IslandsChileCameroonChinaColombiaClipperton IslandCosta RicaCubaC" +
- "ape VerdeCuraçaoChristmas IslandCyprusCzech RepublicGermanyDiego GarciaD" +
- "jiboutiDenmarkDominicaDominican RepublicAlgeriaCeuta and MelillaEcuadorE" +
- "stoniaEgyptKanlurang SaharaEritreaSpainEthiopiaEuropean UnionFinlandFiji" +
- "Falkland IslandsMicronesiaFaroe IslandsFranceGabonUnited KingdomGrenadaG" +
- "eorgiaFrench GuianaGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupe" +
- "Equatorial GuineaGreeceSouth Georgia and the South Sandwich IslandsGuate" +
- "malaGuamGuinea-BissauGuyanaHong Kong SAR ChinaHeard Island and McDonald " +
- "IslandsHondurasCroatiaHaitiHungaryCanary IslandIndonesiaIrelandIsraelIsl" +
- "e of ManIndiaBritish Indian Ocean TerritoryIraqIranIcelandItalyJerseyJam" +
- "aicaJordanJapanKenyaKyrgyzstanCambodiaKiribatiComorosSaint Kitts and Nev" +
- "isHilagang KoreaTimog KoreaKuwaitCayman IslandsKazakhstanLaosLebanonSain" +
- "t LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLiby" +
- "aMoroccoMonacoMoldovaMontenegroSaint MartinMadagascarMarshall IslandsMac" +
- "edoniaMaliMyanmar (Burma)MongoliaMacau SAR ChinaNorthern Mariana Islands" +
- "MartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysia" +
- "MozambiqueNamibiaNew CaledoniaNigerNorfolk IslandNigeriaNicaraguaNetherl" +
- "andsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrench PolynesiaPapua N" +
- "ew GuineaPilipinasPakistanPolandSaint Pierre and MiquelonPitcairn Island" +
- "sPuerto RicoPalestinian TerritoriesPortugalPalauParaguayQatarOutlying Oc" +
- "eaniaRéunionRomaniaSerbiaRussiaRwandaSaudi ArabiaSolomon IslandsSeychell" +
- "esSudanSwedenSingaporeSaint HelenaSloveniaSvalbard and Jan MayenSlovakia" +
- "Sierra LeoneSan MarinoSenegalSomaliaSurinameTimog SudanSão Tomé and Prín" +
- "cipeEl SalvadorSint MaartenSyriaSwazilandTristan de CunhaTurks and Caico" +
- "s IslandsChadFrench Southern TerritoriesTogoThailandTajikistanTokelauTim" +
- "or-LesteTurkmenistanTunisiaTongaTurkeyTrinidad and TobagoTuvaluTaiwanTan" +
- "zaniaUkraineUgandaU.S. Outlying IslandsEstados UnidosUruguayUzbekistanVa" +
- "tican CitySaint Vincent and the GrenadinesVenezuelaBritish Virgin Island" +
- "sU.S. Virgin IslandsVietnamVanuatuWallis and FutunaSamoaKosovoYemenMayot" +
- "teSouth AfricaZambiaZimbabweHindi Kilalang RehiyonMundoAfricaHilagang Am" +
- "erikaTimog AmerikaOceaniaKanlurang AfricaGitnang AmerikaSilangang Africa" +
- "Hilagang AfricaGitnang AfricaKatimugang AfricaAmericasNorthern AmericaCa" +
- "rribbeanSilangang AsyaKatimugang AsyaTimog-Silangang AsyaKatimugang Euro" +
- "peAustralasiaMelanesiaRehiyon ng MicronesiaPolynesiaAsyaGitnang AsyaKanl" +
- "urang AsyaEuropeSilangang EuropeHilagang EuropeKanlurang EuropeLatin Ame" +
- "rica"
-
-var filRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0049, 0x0051, 0x0058,
- 0x005f, 0x0073, 0x0079, 0x0083, 0x008c, 0x009a, 0x00a1, 0x00aa,
- 0x00af, 0x00bd, 0x00c7, 0x00dd, 0x00e5, 0x00ef, 0x00f6, 0x0102,
- 0x010a, 0x0111, 0x0118, 0x011d, 0x012e, 0x0135, 0x013b, 0x0142,
- 0x0157, 0x015d, 0x0164, 0x016a, 0x0177, 0x017f, 0x0186, 0x018c,
- 0x0192, 0x01a9, 0x01b9, 0x01d1, 0x01e4, 0x01ef, 0x01ff, 0x020b,
- 0x0210, 0x0218, 0x021d, 0x0225, 0x0236, 0x0240, 0x0244, 0x024e,
- 0x0256, 0x0266, 0x026c, 0x027a, 0x0281, 0x028d, 0x0295, 0x029c,
- // Entry 40 - 7F
- 0x02a4, 0x02b6, 0x02bd, 0x02ce, 0x02d5, 0x02dc, 0x02e1, 0x02f1,
- 0x02f8, 0x02fd, 0x0305, 0x0313, 0x031a, 0x031e, 0x032e, 0x0338,
- 0x0345, 0x034b, 0x0350, 0x035e, 0x0365, 0x036c, 0x0379, 0x0381,
- 0x0386, 0x038f, 0x0398, 0x039e, 0x03a4, 0x03ae, 0x03bf, 0x03c5,
- 0x03f1, 0x03fa, 0x03fe, 0x040b, 0x0411, 0x0424, 0x0445, 0x044d,
- 0x0454, 0x0459, 0x0460, 0x046d, 0x0476, 0x047d, 0x0483, 0x048e,
- 0x0493, 0x04b1, 0x04b5, 0x04b9, 0x04c0, 0x04c5, 0x04cb, 0x04d2,
- 0x04d8, 0x04dd, 0x04e2, 0x04ec, 0x04f4, 0x04fc, 0x0503, 0x0518,
- // Entry 80 - BF
- 0x0526, 0x0531, 0x0537, 0x0545, 0x054f, 0x0553, 0x055a, 0x0565,
- 0x0572, 0x057b, 0x0582, 0x0589, 0x0592, 0x059c, 0x05a2, 0x05a7,
- 0x05ae, 0x05b4, 0x05bb, 0x05c5, 0x05d1, 0x05db, 0x05eb, 0x05f4,
- 0x05f8, 0x0607, 0x060f, 0x061e, 0x0636, 0x0640, 0x064a, 0x0654,
- 0x0659, 0x0662, 0x066a, 0x0670, 0x0676, 0x067e, 0x0688, 0x068f,
- 0x069c, 0x06a1, 0x06af, 0x06b6, 0x06bf, 0x06ca, 0x06d0, 0x06d5,
- 0x06da, 0x06de, 0x06e9, 0x06ed, 0x06f3, 0x06f7, 0x0707, 0x0717,
- 0x0720, 0x0728, 0x072e, 0x0747, 0x0757, 0x0762, 0x0779, 0x0781,
- // Entry C0 - FF
- 0x0786, 0x078e, 0x0793, 0x07a3, 0x07ab, 0x07b2, 0x07b8, 0x07be,
- 0x07c4, 0x07d0, 0x07df, 0x07e9, 0x07ee, 0x07f4, 0x07fd, 0x0809,
- 0x0811, 0x0827, 0x082f, 0x083b, 0x0845, 0x084c, 0x0853, 0x085b,
- 0x0866, 0x087e, 0x0889, 0x0895, 0x089a, 0x08a3, 0x08b3, 0x08cb,
- 0x08cf, 0x08ea, 0x08ee, 0x08f6, 0x0900, 0x0907, 0x0912, 0x091e,
- 0x0925, 0x092a, 0x0930, 0x0943, 0x0949, 0x094f, 0x0957, 0x095e,
- 0x0964, 0x0979, 0x0987, 0x098e, 0x0998, 0x09a4, 0x09c4, 0x09cd,
- 0x09e3, 0x09f6, 0x09fd, 0x0a04, 0x0a15, 0x0a1a, 0x0a20, 0x0a25,
- // Entry 100 - 13F
- 0x0a2c, 0x0a38, 0x0a3e, 0x0a46, 0x0a5c, 0x0a61, 0x0a67, 0x0a77,
- 0x0a84, 0x0a8b, 0x0a9b, 0x0aaa, 0x0aba, 0x0ac9, 0x0ad7, 0x0ae8,
- 0x0af0, 0x0b00, 0x0b0a, 0x0b18, 0x0b27, 0x0b3b, 0x0b4c, 0x0b57,
- 0x0b60, 0x0b75, 0x0b7e, 0x0b82, 0x0b8e, 0x0b9c, 0x0ba2, 0x0bb2,
- 0x0bc1, 0x0bd1, 0x0bde,
-} // Size: 606 bytes
-
-var frRegionStr string = "" + // Size: 3330 bytes
- "Île de l’AscensionAndorreÉmirats arabes unisAfghanistanAntigua-et-Barbud" +
- "aAnguillaAlbanieArménieAntilles néerlandaisesAngolaAntarctiqueArgentineS" +
- "amoa américainesAutricheAustralieArubaÎles ÅlandAzerbaïdjanBosnie-Herzég" +
- "ovineBarbadeBangladeshBelgiqueBurkina FasoBulgarieBahreïnBurundiBéninSai" +
- "nt-BarthélemyBermudesBrunéi DarussalamBoliviePays-Bas caribéensBrésilBah" +
- "amasBhoutanÎle BouvetBotswanaBiélorussieBelizeCanadaÎles CocosCongo-Kins" +
- "hasaRépublique centrafricaineCongo-BrazzavilleSuisseCôte d’IvoireÎles Co" +
- "okChiliCamerounChineColombieÎle ClippertonCosta RicaCubaCap-VertCuraçaoÎ" +
- "le ChristmasChypreRépublique tchèqueAllemagneDiego GarciaDjiboutiDanemar" +
- "kDominiqueRépublique dominicaineAlgérieCeuta et MelillaÉquateurEstonieÉg" +
- "ypteSahara occidentalÉrythréeEspagneÉthiopieUnion européenneFinlandeFidj" +
- "iÎles MalouinesÉtats fédérés de MicronésieÎles FéroéFranceGabonRoyaume-U" +
- "niGrenadeGéorgieGuyane françaiseGuerneseyGhanaGibraltarGroenlandGambieGu" +
- "inéeGuadeloupeGuinée équatorialeGrèceGéorgie du Sud et îles Sandwich du " +
- "SudGuatemalaGuamGuinée-BissauGuyanaR.A.S. chinoise de Hong KongÎles Hear" +
- "d et McDonaldHondurasCroatieHaïtiHongrieÎles CanariesIndonésieIrlandeIsr" +
- "aëlÎle de ManIndeTerritoire britannique de l’océan IndienIrakIranIslande" +
- "ItalieJerseyJamaïqueJordanieJaponKenyaKirghizistanCambodgeKiribatiComore" +
- "sSaint-Christophe-et-NiévèsCorée du NordCorée du SudKoweïtÎles CaïmansKa" +
- "zakhstanLaosLibanSainte-LucieLiechtensteinSri LankaLibériaLesothoLituani" +
- "eLuxembourgLettonieLibyeMarocMonacoMoldavieMonténégroSaint-MartinMadagas" +
- "carÎles MarshallMacédoineMaliMyanmar (Birmanie)MongolieR.A.S. chinoise d" +
- "e MacaoÎles Mariannes du NordMartiniqueMauritanieMontserratMalteMauriceM" +
- "aldivesMalawiMexiqueMalaisieMozambiqueNamibieNouvelle-CalédonieNigerÎle " +
- "NorfolkNigériaNicaraguaPays-BasNorvègeNépalNauruNiueNouvelle-ZélandeOman" +
- "PanamaPérouPolynésie françaisePapouasie-Nouvelle-GuinéePhilippinesPakist" +
- "anPologneSaint-Pierre-et-MiquelonÎles PitcairnPorto RicoTerritoires pale" +
- "stiniensPortugalPalaosParaguayQatarrégions éloignées de l’OcéanieLa Réun" +
- "ionRoumanieSerbieRussieRwandaArabie saouditeÎles SalomonSeychellesSoudan" +
- "SuèdeSingapourSainte-HélèneSlovénieSvalbard et Jan MayenSlovaquieSierra " +
- "LeoneSaint-MarinSénégalSomalieSurinameSoudan du SudSao Tomé-et-PrincipeE" +
- "l SalvadorSaint-Martin (partie néerlandaise)SyrieSwazilandTristan da Cun" +
- "haÎles Turques-et-CaïquesTchadTerres australes françaisesTogoThaïlandeTa" +
- "djikistanTokélaouTimor orientalTurkménistanTunisieTongaTurquieTrinité-et" +
- "-TobagoTuvaluTaïwanTanzanieUkraineOugandaÎles mineures éloignées des Éta" +
- "ts-UnisÉtats-UnisUruguayOuzbékistanÉtat de la Cité du VaticanSaint-Vince" +
- "nt-et-les-GrenadinesVenezuelaÎles Vierges britanniquesÎles Vierges des É" +
- "tats-UnisVietnamVanuatuWallis-et-FutunaSamoaKosovoYémenMayotteAfrique du" +
- " SudZambieZimbabwerégion indéterminéeMondeAfriqueAmérique du NordAmériqu" +
- "e du SudOcéanieAfrique occidentaleAmérique centraleAfrique orientaleAfri" +
- "que septentrionaleAfrique centraleAfrique australeAmériquesAmérique sept" +
- "entrionaleCaraïbesAsie orientaleAsie du SudAsie du Sud-EstEurope méridio" +
- "naleAustralasieMélanésierégion micronésiennePolynésieAsieAsie centraleAs" +
- "ie occidentaleEuropeEurope de l’EstEurope septentrionaleEurope occidenta" +
- "leAmérique latine"
-
-var frRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x001c, 0x0030, 0x003b, 0x004d, 0x0055, 0x005c,
- 0x0064, 0x007b, 0x0081, 0x008c, 0x0095, 0x00a7, 0x00af, 0x00b8,
- 0x00bd, 0x00c9, 0x00d5, 0x00e8, 0x00ef, 0x00f9, 0x0101, 0x010d,
- 0x0115, 0x011d, 0x0124, 0x012a, 0x013b, 0x0143, 0x0155, 0x015c,
- 0x016f, 0x0176, 0x017d, 0x0184, 0x018f, 0x0197, 0x01a3, 0x01a9,
- 0x01af, 0x01ba, 0x01c8, 0x01e2, 0x01f3, 0x01f9, 0x0209, 0x0213,
- 0x0218, 0x0220, 0x0225, 0x022d, 0x023c, 0x0246, 0x024a, 0x0252,
- 0x025a, 0x0268, 0x026e, 0x0282, 0x028b, 0x0297, 0x029f, 0x02a7,
- // Entry 40 - 7F
- 0x02b0, 0x02c7, 0x02cf, 0x02df, 0x02e8, 0x02ef, 0x02f6, 0x0307,
- 0x0311, 0x0318, 0x0321, 0x0332, 0x033a, 0x033f, 0x034e, 0x036e,
- 0x037b, 0x0381, 0x0386, 0x0391, 0x0398, 0x03a0, 0x03b1, 0x03ba,
- 0x03bf, 0x03c8, 0x03d1, 0x03d7, 0x03de, 0x03e8, 0x03fc, 0x0402,
- 0x042a, 0x0433, 0x0437, 0x0445, 0x044b, 0x0467, 0x047e, 0x0486,
- 0x048d, 0x0493, 0x049a, 0x04a8, 0x04b2, 0x04b9, 0x04c0, 0x04cb,
- 0x04cf, 0x04fa, 0x04fe, 0x0502, 0x0509, 0x050f, 0x0515, 0x051e,
- 0x0526, 0x052b, 0x0530, 0x053c, 0x0544, 0x054c, 0x0553, 0x056f,
- // Entry 80 - BF
- 0x057d, 0x058a, 0x0591, 0x059f, 0x05a9, 0x05ad, 0x05b2, 0x05be,
- 0x05cb, 0x05d4, 0x05dc, 0x05e3, 0x05eb, 0x05f5, 0x05fd, 0x0602,
- 0x0607, 0x060d, 0x0615, 0x0621, 0x062d, 0x0637, 0x0645, 0x064f,
- 0x0653, 0x0665, 0x066d, 0x0685, 0x069c, 0x06a6, 0x06b0, 0x06ba,
- 0x06bf, 0x06c6, 0x06ce, 0x06d4, 0x06db, 0x06e3, 0x06ed, 0x06f4,
- 0x0707, 0x070c, 0x0718, 0x0720, 0x0729, 0x0731, 0x0739, 0x073f,
- 0x0744, 0x0748, 0x0759, 0x075d, 0x0763, 0x0769, 0x077e, 0x0798,
- 0x07a3, 0x07ab, 0x07b2, 0x07ca, 0x07d8, 0x07e2, 0x07fa, 0x0802,
- // Entry C0 - FF
- 0x0808, 0x0810, 0x0815, 0x0839, 0x0844, 0x084c, 0x0852, 0x0858,
- 0x085e, 0x086d, 0x087a, 0x0884, 0x088a, 0x0890, 0x0899, 0x08a8,
- 0x08b1, 0x08c6, 0x08cf, 0x08db, 0x08e6, 0x08ef, 0x08f6, 0x08fe,
- 0x090b, 0x0920, 0x092b, 0x094e, 0x0953, 0x095c, 0x096c, 0x0985,
- 0x098a, 0x09a6, 0x09aa, 0x09b4, 0x09bf, 0x09c8, 0x09d6, 0x09e3,
- 0x09ea, 0x09ef, 0x09f6, 0x0a08, 0x0a0e, 0x0a15, 0x0a1d, 0x0a24,
- 0x0a2b, 0x0a55, 0x0a60, 0x0a67, 0x0a73, 0x0a8f, 0x0aae, 0x0ab7,
- 0x0ad1, 0x0aee, 0x0af5, 0x0afc, 0x0b0c, 0x0b11, 0x0b17, 0x0b1d,
- // Entry 100 - 13F
- 0x0b24, 0x0b32, 0x0b38, 0x0b40, 0x0b56, 0x0b5b, 0x0b62, 0x0b73,
- 0x0b83, 0x0b8b, 0x0b9e, 0x0bb0, 0x0bc1, 0x0bd7, 0x0be7, 0x0bf7,
- 0x0c01, 0x0c19, 0x0c22, 0x0c30, 0x0c3b, 0x0c4a, 0x0c5d, 0x0c68,
- 0x0c73, 0x0c89, 0x0c93, 0x0c97, 0x0ca4, 0x0cb4, 0x0cba, 0x0ccb,
- 0x0ce0, 0x0cf2, 0x0d02,
-} // Size: 606 bytes
-
-var frCARegionStr string = "" + // Size: 145 bytes
- "BélarusÎles Cocos (Keeling)MicronésieSaint-Martin (France)MyanmarSaint-M" +
- "artin (Pays-Bas)TokelauSaint-Vincent-et-les GrenadinesEurope orientale"
-
-var frCARegionIdx = []uint16{ // 288 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008,
- 0x0008, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- // Entry 40 - 7F
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- // Entry 80 - BF
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
- 0x0028, 0x0028, 0x0028, 0x0028, 0x003d, 0x003d, 0x003d, 0x003d,
- 0x003d, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- // Entry C0 - FF
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
- 0x0044, 0x0044, 0x0044, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
- 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0062, 0x0062, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
- 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- // Entry 100 - 13F
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
- 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0091,
-} // Size: 600 bytes
-
-var guRegionStr string = "" + // Size: 8706 bytes
- "એસેન્શન આઇલેન્ડઍંડોરાયુનાઇટેડ આરબ અમીરાતઅફઘાનિસ્તાનએન્ટીગુઆ અને બર્મુડાઍ" +
- "ંગ્વિલાઅલ્બેનિયાઆર્મેનિયાનેધરલેંડ્સ એંટિલેસઅંગોલાએન્ટાર્કટિકાઆર્જેન્ટી" +
- "નાઅમેરીકન સમોઆઑસ્ટ્રિયાઑસ્ટ્રેલિયાઅરુબાએલેંડ ટાપુઓઅઝરબૈજાનબોસ્નિયા અને" +
- " હર્ઝેગોવિનાબાર્બાડોસબાંગ્લાદેશબેલ્જીયમબુર્કિના ફાસોબલ્ગેરિયાબેહરીનબુરું" +
- "ડીબેનિનસેન્ટ બાર્થેલેમીબર્મુડાબ્રુનેઇબોલિવિયાકેરેબિયન નેધરલેન્ડ્ઝબ્રાઝ" +
- "િલબહામાસભૂટાનબૌવેત આઇલેન્ડબોત્સ્વાનાબેલારુસબેલીઝકેનેડાકોકોઝ (કીલીંગ) આ" +
- "ઇલેન્ડ્સકોંગો - કિંશાસાસેન્ટ્રલ આફ્રિકન રીપબ્લિકકોંગો - બ્રાઝાવિલેસ્વિ" +
- "ટ્ઝર્લૅન્ડકોટ ડી આઇવરીકુક આઇલેન્ડ્સચિલીકૅમરૂનચીનકોલમ્બિયાક્લિપરટન આઇલે" +
- "ન્ડકોસ્ટા રિકાક્યુબાકૅપ વર્ડેકુરાકાઓક્રિસમસ આઇલેન્ડસાયપ્રસચેક રીપબ્લિક" +
- "જર્મનીડિએગો ગારસિઆજીબૌટીડેનમાર્કડોમિનિકાડોમિનિકન રીપબ્લિકઅલ્જીરિયાસ્યુ" +
- "ટા અને મેલિલાએક્વાડોરએસ્ટોનિયાઇજિપ્તપશ્ચિમી સહારાએરિટ્રિયાસ્પેનઇથિઓપિય" +
- "ાયુરોપિયન સંઘફિનલેન્ડફીજીફૉકલેન્ડ ટાપુઓમાઇક્રોનેશિયાફૅરો ટાપુઓફ્રાંસગે" +
- "બનયુનાઇટેડ કિંગડમગ્રેનેડાજ્યોર્જીયાફ્રેંચ ગયાનાગ્વેર્નસેઘાનાજીબ્રાલ્ટર" +
- "ગ્રીનલેન્ડગેમ્બિયાગિનીગ્વાડેલોપઇક્વેટોરિયલ ગિનીગ્રીસદક્ષિણ જ્યોર્જીયા " +
- "અને દક્ષિણ સેન્ડવિચ આઇલેન્ડ્સગ્વાટેમાલાગ્વામગિની-બિસાઉગયાનાહોંગકોંગ SA" +
- "R ચીનહર્ડ અને મેકડોનાલ્ડ આઇલેન્ડ્સહોન્ડુરસક્રોએશિયાહૈતિહંગેરીકૅનેરી ટાપુ" +
- "ઓઇન્ડોનેશિયાઆયર્લેન્ડઇઝરાઇલઆઈલ ઓફ મૅનભારતબ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરીઇર" +
- "ાકઈરાનઆઇસલેન્ડઇટાલીજર્સીજમૈકાજોર્ડનજાપાનકેન્યાકિર્ગિઝ્સ્તાનકંબોડિયાકિર" +
- "િબાટીકોમોરસસેન્ટ કિટ્સ અને નેવિસઉત્તર કોરિયાદક્ષિણ કોરિયાકુવૈતકેમેન ટા" +
- "પુઓકઝાકિસ્તાનલાઓસલેબનોનસેન્ટ લુસિયાલૈચટેંસ્ટેઇનશ્રીલંકાલાઇબેરિયાલેસોથો" +
- "લિથુઆનિયાલક્ઝમબર્ગલાત્વિયાલિબિયામોરોક્કોમોનાકોમોલડોવામૉન્ટેંનેગ્રોસેન્" +
- "ટ માર્ટિનમેડાગાસ્કરમાર્શલ આઇલેન્ડ્સમેસેડોનિયામાલીમ્યાંમાર (બર્મા)મંગોલ" +
- "િયામકાઉ SAR ચીનઉત્તરીય મારિયાના આઇલેન્ડ્સમાર્ટીનીકમૌરિટાનિયામોંટસેરાતમ" +
- "ાલ્ટામોરિશિયસમાલદિવ્સમાલાવીમેક્સિકોમલેશિયામોઝામ્બિકનામિબિયાન્યુ સેલેડો" +
- "નિયાનાઇજરનોરફૉક ટાપુનાઇજીરીયાનિકારાગુઆનેધરલેન્ડનૉર્વેનેપાળનૌરુનીયુન્યુ" +
- "ઝીલેન્ડઓમાનપનામાપેરુફ્રેંચ પોલિનેશિયાપાપુઆ ન્યૂ ગિનીફિલીપાઇન્સપાકિસ્તા" +
- "નપોલેંડસેન્ટ પિયર અને મીક્વેલનપીટકૈર્ન આઇલેન્ડ્સપ્યુઅર્ટો રિકોપેલેસ્ટિ" +
- "નિયન ટેરિટરીપોર્ટુગલપલાઉપેરાગ્વેકતારઆઉટલાઈન્ગ ઓશનિયારીયુનિયનરોમાનિયાસર" +
- "્બિયારશિયારવાંડાસાઉદી અરેબિયાસોલોમન આઇલેન્ડ્સસેશેલ્સસુદાનસ્વીડનસિંગાપુ" +
- "રસેન્ટ હેલેનાસ્લોવેનિયાસ્વાલબર્ડ અને જેન મેયનસ્લોવેકિયાસીએરા લેઓનસૅન મ" +
- "ેરિનોસેનેગલસોમાલિયાસુરીનામદક્ષિણ સુદાનસાઓ ટૉમ અને પ્રિંસિપેએલ સેલ્વાડો" +
- "રસિંટ માર્ટેનસીરિયાસ્વાઝિલેન્ડત્રિસ્તાન દા કુન્હાતુર્ક્સ અને કાઇકોસ ટા" +
- "પુઓચાડફ્રેંચ સદર્ન ટેરિટરીઝટોગોથાઇલેંડતાજીકિસ્તાનટોકેલાઉતિમોર-લેસ્તેતુ" +
- "ર્કમેનિસ્તાનટ્યુનિશિયાટોંગાતુર્કીટ્રિનીદાદ અને ટોબેગોતુવાલુતાઇવાનતાંઝા" +
- "નિયાયુક્રેનયુગાંડાસંયુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સસંયુકત રાજ્ય અમેરિકા" +
- "ઉરુગ્વેઉઝ્બેકિસ્તાનવેટિકન સિટીસેન્ટ વિન્સેટ અને ગ્રેનેડીન્સવેનેઝુએલાબ્" +
- "રિટિશ વર્જિન ટાપુઓયુ.એસ. વર્જિન ટાપુઓવિયેતનામવાનુઆતુવેલીસ અને ફ્યુટુના" +
- "સમોઆકોસોવોયેમેનમેયોટદક્ષિણ આફ્રિકાઝામ્બિયાઝિમ્બાબ્વેઅજ્ઞાત પ્રદેશવિશ્વ" +
- "આફ્રિકાઉત્તર અમેરિકાદક્ષિણ અમેરિકાઓશનિયાપશ્ચિમી આફ્રિકામધ્ય અમેરિકાપૂર" +
- "્વીય આફ્રિકાઉત્તરીય આફ્રિકામધ્ય આફ્રિકાસધર્ન આફ્રિકાઅમેરિકાઉત્તરીય અમે" +
- "રિકાકેરિબિયનપૂર્વીય એશિયાસર્ધન એશિયાદક્ષિણપૂર્વ એશિયાસધર્ન યુરોપઓસ્ટ્ર" +
- "ેલેશિયામેલાનેશિયામાઈક્રોનેશિયન ક્ષેત્રપોલિનેશિયાએશિયામધ્ય એશિયાપશ્ચિમી" +
- " એશિયાયુરોપપૂર્વીય યુરોપઉત્તરીય યુરોપપશ્ચિમ યુરોપલેટિન અમેરિકા"
-
-var guRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x002b, 0x003d, 0x0072, 0x0093, 0x00cb, 0x00e3, 0x00fe,
- 0x0119, 0x014d, 0x015f, 0x0183, 0x01a4, 0x01c6, 0x01e1, 0x0202,
- 0x0211, 0x0230, 0x0248, 0x028c, 0x02a7, 0x02c5, 0x02dd, 0x0302,
- 0x031d, 0x032f, 0x0344, 0x0353, 0x0381, 0x0396, 0x03ab, 0x03c3,
- 0x03fd, 0x0412, 0x0424, 0x0433, 0x0458, 0x0476, 0x048b, 0x049a,
- 0x04ac, 0x04ec, 0x0513, 0x055a, 0x058a, 0x05b4, 0x05d4, 0x05f9,
- 0x0605, 0x0617, 0x0620, 0x063b, 0x0669, 0x0688, 0x069a, 0x06b3,
- 0x06c8, 0x06f3, 0x0708, 0x072a, 0x073c, 0x075e, 0x0770, 0x0788,
- // Entry 40 - 7F
- 0x07a0, 0x07d1, 0x07ec, 0x081b, 0x0833, 0x084e, 0x0860, 0x0885,
- 0x08a0, 0x08af, 0x08c7, 0x08e9, 0x0901, 0x090d, 0x0935, 0x095c,
- 0x0978, 0x098a, 0x0996, 0x09c1, 0x09d9, 0x09f7, 0x0a19, 0x0a34,
- 0x0a40, 0x0a5e, 0x0a7c, 0x0a94, 0x0aa0, 0x0abb, 0x0ae9, 0x0af8,
- 0x0b7b, 0x0b99, 0x0ba8, 0x0bc4, 0x0bd3, 0x0bf9, 0x0c4a, 0x0c62,
- 0x0c7d, 0x0c89, 0x0c9b, 0x0cbd, 0x0cde, 0x0cf9, 0x0d0b, 0x0d25,
- 0x0d31, 0x0d7c, 0x0d88, 0x0d94, 0x0dac, 0x0dbb, 0x0dca, 0x0dd9,
- 0x0deb, 0x0dfa, 0x0e0c, 0x0e33, 0x0e4b, 0x0e63, 0x0e75, 0x0eae,
- // Entry 80 - BF
- 0x0ed0, 0x0ef5, 0x0f04, 0x0f23, 0x0f41, 0x0f4d, 0x0f5f, 0x0f81,
- 0x0fa5, 0x0fbd, 0x0fd8, 0x0fea, 0x1005, 0x1020, 0x1038, 0x104a,
- 0x1062, 0x1074, 0x1089, 0x10b0, 0x10d5, 0x10f3, 0x1121, 0x113f,
- 0x114b, 0x1175, 0x118d, 0x11a7, 0x11f1, 0x120c, 0x122a, 0x1245,
- 0x1257, 0x126f, 0x1287, 0x1299, 0x12b1, 0x12c6, 0x12e1, 0x12f9,
- 0x1324, 0x1333, 0x1352, 0x136d, 0x1388, 0x13a3, 0x13b5, 0x13c4,
- 0x13d0, 0x13dc, 0x13fd, 0x1409, 0x1418, 0x1424, 0x1455, 0x147e,
- 0x149c, 0x14b7, 0x14c9, 0x1508, 0x153c, 0x1564, 0x159e, 0x15b6,
- // Entry C0 - FF
- 0x15c2, 0x15da, 0x15e6, 0x1614, 0x162c, 0x1644, 0x1659, 0x1668,
- 0x167a, 0x169f, 0x16cd, 0x16e2, 0x16f1, 0x1703, 0x171b, 0x173d,
- 0x175b, 0x1797, 0x17b5, 0x17d1, 0x17ed, 0x17ff, 0x1817, 0x182c,
- 0x184e, 0x1887, 0x18a9, 0x18cb, 0x18dd, 0x18fe, 0x1933, 0x1975,
- 0x197e, 0x19b9, 0x19c5, 0x19da, 0x19fb, 0x1a10, 0x1a32, 0x1a5c,
- 0x1a7a, 0x1a89, 0x1a9b, 0x1ad3, 0x1ae5, 0x1af7, 0x1b12, 0x1b27,
- 0x1b3c, 0x1b96, 0x1bce, 0x1be3, 0x1c07, 0x1c26, 0x1c77, 0x1c92,
- 0x1cca, 0x1cfb, 0x1d13, 0x1d28, 0x1d5a, 0x1d66, 0x1d78, 0x1d87,
- // Entry 100 - 13F
- 0x1d96, 0x1dbe, 0x1dd6, 0x1df4, 0x1e19, 0x1e28, 0x1e3d, 0x1e62,
- 0x1e8a, 0x1e9c, 0x1ec7, 0x1ee9, 0x1f14, 0x1f3f, 0x1f61, 0x1f86,
- 0x1f9b, 0x1fc6, 0x1fde, 0x2003, 0x2022, 0x2053, 0x2072, 0x2099,
- 0x20b7, 0x20f4, 0x2112, 0x2121, 0x213d, 0x2162, 0x2171, 0x2196,
- 0x21bb, 0x21dd, 0x2202,
-} // Size: 606 bytes
-
-var heRegionStr string = "" + // Size: 5023 bytes
- "האי אסנשןאנדורהאיחוד האמירויות הערביותאפגניסטןאנטיגואה וברבודהאנגילהאלבנ" +
- "יהארמניהאנטילים הולנדייםאנגולהאנטארקטיקהארגנטינהסמואה האמריקניתאוסטריהא" +
- "וסטרליהארובהאיי אולנדאזרבייג׳ןבוסניה והרצגובינהברבדוסבנגלדשבלגיהבורקינה" +
- " פאסובולגריהבחרייןבורונדיבניןסנט ברתולומיאוברמודהברונייבוליביההאיים הקרי" +
- "ביים ההולנדייםברזילאיי בהאמהבהוטןאיי בובהבוטסוואנהבלארוסבליזקנדהאיי קוק" +
- "וס (קילינג)קונגו - קינשאסההרפובליקה של מרכז אפריקהקונגו - ברזאוילשווייץ" +
- "חוף השנהבאיי קוקצ׳ילהקמרוןסיןקולומביההאי קליפרטוןקוסטה ריקהקובהכף ורדהק" +
- "וראסאואי חג המולדקפריסיןצ׳כיהגרמניהדייגו גרסיהג׳יבוטידנמרקדומיניקההרפוב" +
- "ליקה הדומיניקניתאלג׳יריהסאוטה ומלייהאקוודוראסטוניהמצריםסהרה המערביתארית" +
- "ריאהספרדאתיופיההאיחוד האירופיפינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפת" +
- "גאבוןהממלכה המאוחדתגרנדהגאורגיהגיאנה הצרפתיתגרנסיגאנהגיברלטרגרינלנדגמבי" +
- "הגיניאהגוואדלופגיניאה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומי" +
- "יםגואטמלהגואםגיניאה-ביסאוגיאנההונג קונג - מחוז מנהלי מיוחד של סיןהאי הר" +
- "ד ואיי מקדונלדהונדורסקרואטיההאיטיהונגריההאיים הקנרייםאינדונזיהאירלנדישר" +
- "אלהאי מאןהודוהטריטוריה הבריטית באוקיינוס ההודיעיראקאיראןאיסלנדאיטליהג׳ר" +
- "סיג׳מייקהירדןיפןקניהקירגיזסטןקמבודיהקיריבאטיקומורוסנט קיטס ונוויסקוריאה" +
- " הצפוניתקוריאה הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכטנשטייןסר" +
- "י לנקהליבריהלסוטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטןמ" +
- "דגסקראיי מרשלמקדוניהמאלימיאנמאר (בורמה)\u200eמונגוליהמקאו - מחוז מנהלי " +
- "מיוחד של סיןאיי מריאנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיי" +
- "ם המלדיבייםמלאווימקסיקומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקני" +
- "גריהניקרגואההולנדנורווגיהנפאלנאורוניווהניו זילנדעומאןפנמהפרופולינזיה הצ" +
- "רפתיתפפואה גיניאה החדשהפיליפיניםפקיסטןפוליןסנט פייר ומיקלוןאיי פיטקרןפו" +
- "ארטו ריקוהשטחים הפלסטינייםפורטוגלפאלאופרגוואיקטאראוקיאניה חיצוניתראוניו" +
- "ןרומניהסרביהרוסיהרואנדהערב הסעודיתאיי שלמהאיי סיישלסודןשוודיהסינגפורסנט" +
- " הלנהסלובניהסוולבארד ויאן מאייןסלובקיהסיירה לאונהסן מרינוסנגלסומליהסורינ" +
- "םדרום סודןסאו טומה ופרינסיפהאל סלבדורסנט מארטןסוריהסווזילנדטריסטן דה קו" +
- "נהאיי טורקס וקאיקוסצ׳אדטריטוריות דרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקל" +
- "אוטימור לסטהטורקמניסטןתוניסיהטונגהטורקיהטרינידד וטובגוטובלוטייוואןטנזני" +
- "האוקראינהאוגנדהאיים לחוף ארצות הבריתארצות הבריתאורוגוואיאוזבקיסטןהוותיק" +
- "ןסנט וינסנט והגרנדיניםונצואלהאיי הבתולה הבריטייםאיי הבתולה של ארצות הבר" +
- "יתוייטנאםונואטואיי ווליס ופוטונהסמואהקוסובותימןמאיוטדרום אפריקהזמביהזימ" +
- "באבווהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמריקהאוקיאניהמערב אפריקהמ" +
- "רכז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמריקהאמריקה" +
- " הצפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהאוסטרלא" +
- "סיהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצ" +
- "פון אירופהמערב אירופהאמריקה הלטינית"
-
-var heRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0011, 0x001d, 0x0049, 0x0059, 0x0078, 0x0084, 0x0090,
- 0x009c, 0x00bb, 0x00c7, 0x00db, 0x00eb, 0x0108, 0x0116, 0x0126,
- 0x0130, 0x0141, 0x0153, 0x0174, 0x0180, 0x018c, 0x0196, 0x01ad,
- 0x01bb, 0x01c7, 0x01d5, 0x01dd, 0x01f8, 0x0204, 0x0210, 0x021e,
- 0x024c, 0x0256, 0x0267, 0x0271, 0x0280, 0x0292, 0x029e, 0x02a6,
- 0x02ae, 0x02ce, 0x02e9, 0x0316, 0x0331, 0x033d, 0x034e, 0x035b,
- 0x0365, 0x036f, 0x0375, 0x0385, 0x039c, 0x03af, 0x03b7, 0x03c4,
- 0x03d2, 0x03e6, 0x03f4, 0x03fe, 0x040a, 0x041f, 0x042d, 0x0437,
- // Entry 40 - 7F
- 0x0447, 0x0470, 0x0480, 0x0497, 0x04a5, 0x04b3, 0x04bd, 0x04d4,
- 0x04e4, 0x04ec, 0x04fa, 0x0515, 0x0521, 0x052b, 0x053e, 0x0550,
- 0x055f, 0x0567, 0x0571, 0x058c, 0x0596, 0x05a4, 0x05bd, 0x05c7,
- 0x05cf, 0x05dd, 0x05eb, 0x05f5, 0x0601, 0x0611, 0x062e, 0x0636,
- 0x0680, 0x068e, 0x0696, 0x06ad, 0x06b7, 0x06f5, 0x071a, 0x0728,
- 0x0736, 0x0740, 0x074e, 0x0767, 0x0779, 0x0785, 0x078f, 0x079c,
- 0x07a4, 0x07e3, 0x07ed, 0x07f7, 0x0803, 0x080f, 0x0819, 0x0827,
- 0x082f, 0x0835, 0x083d, 0x084f, 0x085d, 0x086d, 0x0879, 0x0895,
- // Entry 80 - BF
- 0x08b0, 0x08cb, 0x08d5, 0x08e6, 0x08f2, 0x08fa, 0x0904, 0x0915,
- 0x0929, 0x0938, 0x0944, 0x094e, 0x0956, 0x0968, 0x0972, 0x0978,
- 0x0982, 0x098c, 0x099a, 0x09aa, 0x09b7, 0x09c3, 0x09d2, 0x09e0,
- 0x09e8, 0x0a06, 0x0a16, 0x0a4b, 0x0a6f, 0x0a7d, 0x0a8f, 0x0a9d,
- 0x0aa5, 0x0ab7, 0x0ad4, 0x0ae0, 0x0aec, 0x0af6, 0x0b04, 0x0b10,
- 0x0b29, 0x0b33, 0x0b46, 0x0b52, 0x0b62, 0x0b6c, 0x0b7c, 0x0b84,
- 0x0b8e, 0x0b98, 0x0ba9, 0x0bb3, 0x0bbb, 0x0bc1, 0x0be0, 0x0c02,
- 0x0c14, 0x0c20, 0x0c2a, 0x0c48, 0x0c5b, 0x0c70, 0x0c91, 0x0c9f,
- // Entry C0 - FF
- 0x0ca9, 0x0cb7, 0x0cbf, 0x0cde, 0x0cec, 0x0cf8, 0x0d02, 0x0d0c,
- 0x0d18, 0x0d2d, 0x0d3c, 0x0d4d, 0x0d55, 0x0d61, 0x0d6f, 0x0d7e,
- 0x0d8c, 0x0db0, 0x0dbe, 0x0dd3, 0x0de2, 0x0dea, 0x0df6, 0x0e02,
- 0x0e13, 0x0e35, 0x0e46, 0x0e57, 0x0e61, 0x0e71, 0x0e8b, 0x0eab,
- 0x0eb3, 0x0ee2, 0x0eea, 0x0ef6, 0x0f08, 0x0f14, 0x0f27, 0x0f3b,
- 0x0f49, 0x0f53, 0x0f5f, 0x0f7a, 0x0f84, 0x0f92, 0x0f9e, 0x0fae,
- 0x0fba, 0x0fe1, 0x0ff6, 0x1008, 0x101a, 0x1028, 0x1050, 0x105e,
- 0x1082, 0x10b0, 0x10be, 0x10ca, 0x10ea, 0x10f4, 0x1100, 0x1108,
- // Entry 100 - 13F
- 0x1112, 0x1127, 0x1131, 0x1143, 0x1159, 0x1163, 0x116f, 0x1184,
- 0x1199, 0x11a9, 0x11be, 0x11d3, 0x11e8, 0x11fd, 0x1212, 0x1230,
- 0x123c, 0x1257, 0x1272, 0x1283, 0x1294, 0x12af, 0x12c4, 0x12d8,
- 0x12e4, 0x12ff, 0x130f, 0x1317, 0x1328, 0x1339, 0x1345, 0x135a,
- 0x136f, 0x1384, 0x139f,
-} // Size: 606 bytes
-
-var hiRegionStr string = "" + // Size: 8760 bytes
- "असेंशन द्वीपएंडोरासंयुक्त अरब अमीरातअफ़गानिस्तानएंटिगुआ और बरबुडाएंग्विल" +
- "ाअल्बानियाआर्मेनियानीदरलैंडी ऐंटीलअंगोलाअंटार्कटिकाअर्जेंटीनाअमेरिकी स" +
- "मोआऑस्ट्रियाऑस्ट्रेलियाअरूबाएलैंड द्वीपसमूहअज़रबैजानबोस्निया और हर्ज़े" +
- "गोविनाबारबाडोसबांग्लादेशबेल्जियमबुर्किना फ़ासोबुल्गारियाबहरीनबुरुंडीबे" +
- "निनसेंट बार्थेलेमीबरमूडाब्रूनेईबोलीवियाकैरिबियन नीदरलैंडब्राज़ीलबहामास" +
- "भूटानबोवेत द्वीपबोत्स्वानाबेलारूसबेलीज़कनाडाकोकोस (कीलिंग) द्वीपसमूहका" +
- "ंगो - किंशासामध्य अफ़्रीकी गणराज्यकांगो – ब्राज़ाविलस्विट्ज़रलैंडकोट ड" +
- "ी आइवरकुक द्वीपसमूहचिलीकैमरूनचीनकोलंबियाक्लिपर्टन द्वीपकोस्टारिकाक्यूब" +
- "ाकेप वर्डक्यूरासाओक्रिसमस द्वीपसाइप्रसचेक गणराज्यजर्मनीडिएगो गार्सियाज" +
- "िबूतीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियासेउटा और मेलिलाइक्वाडोरए" +
- "स्टोनियामिस्रपश्चिमी सहाराइरिट्रियास्पेनइथियोपियायूरोपीय संघफ़िनलैंडफ़" +
- "िजीफ़ॉकलैंड द्वीपसमूहमाइक्रोनेशियाफ़ेरो द्वीपसमूहफ़्रांसगैबॉनयूनाइटेड " +
- "किंगडमग्रेनाडाजॉर्जियाफ़्रेंच गयानागर्नसीघानाजिब्राल्टरग्रीनलैंडगाम्बि" +
- "यागिनीग्वाडेलूपइक्वेटोरियल गिनीयूनानदक्षिण जॉर्जिया और दक्षिण सैंडविच " +
- "द्वीपसमूहग्वाटेमालागुआमगिनी-बिसाउगयानाहाँग काँग (चीन विशेष प्रशासनिक क" +
- "्षेत्र)हर्ड द्वीप और मैकडोनॉल्ड द्वीपसमूहहोंडूरासक्रोएशियाहैतीहंगरीकैन" +
- "ेरी द्वीपसमूहइंडोनेशियाआयरलैंडइसराइलआइल ऑफ़ मैनभारतब्रिटिश हिंद महासाग" +
- "रीय क्षेत्रइराकईरानआइसलैंडइटलीजर्सीजमैकाजॉर्डनजापानकेन्याकिर्गिज़स्तान" +
- "कंबोडियाकिरिबातीकोमोरोससेंट किट्स और नेविसउत्तर कोरियादक्षिण कोरियाकुव" +
- "ैतकेमैन द्वीपसमूहकज़ाखस्तानलाओसलेबनानसेंट लूसियालिचेंस्टीनश्रीलंकालाइब" +
- "ेरियालेसोथोलिथुआनियालग्ज़मबर्गलातवियालीबियामोरक्कोमोनाकोमॉल्डोवामोंटेन" +
- "ेग्रोसेंट मार्टिनमेडागास्करमार्शल द्वीपसमूहमैसिडोनियामालीम्यांमार (बर्" +
- "मा)मंगोलियामकाऊ (विशेष प्रशासनिक क्षेत्र चीन)उत्तरी मारियाना द्वीपसमूह" +
- "मार्टीनिकमॉरिटानियामोंटसेरातमाल्टामॉरिशसमालदीवमलावीमैक्सिकोमलेशियामोज़" +
- "ांबिकनामीबियान्यू कैलेडोनियानाइजरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनीदरलै" +
- "ंडनॉर्वेनेपालनाउरुनीयून्यूज़ीलैंडओमानपनामापेरूफ़्रेंच पोलिनेशियापापुआ " +
- "न्यू गिनीफ़िलिपींसपाकिस्तानपोलैंडसेंट पिएरे और मिक्वेलानपिटकैर्न द्वीप" +
- "समूहपोर्टो रिकोफ़िलिस्तीनी क्षेत्रपुर्तगालपलाऊपेराग्वेक़तरआउटलाइंग ओशि" +
- "नियारियूनियनरोमानियासर्बियारूसरवांडासऊदी अरबसोलोमन द्वीपसमूहसेशेल्ससूड" +
- "ानस्वीडनसिंगापुरसेंट हेलेनास्लोवेनियास्वालबार्ड और जान मायेनस्लोवाकिया" +
- "सिएरा लियोनसैन मेरीनोसेनेगलसोमालियासूरीनामदक्षिण सूडानसाओ टोम और प्रिं" +
- "सिपेअल सल्वाडोरसिंट मार्टिनसीरियास्वाज़ीलैंडत्रिस्टान डा कुनातुर्क और " +
- "कैकोज़ द्वीपसमूहचाडफ़्रांसीसी दक्षिणी क्षेत्रटोगोथाईलैंडताजिकिस्तानतोक" +
- "ेलाउतिमोर-लेस्ततुर्कमेनिस्तानट्यूनीशियाटोंगातुर्कीत्रिनिदाद और टोबैगोत" +
- "ुवालूताइवानतंज़ानियायूक्रेनयुगांडायू.एस. आउटलाइंग द्वीपसमूहसंयुक्त राज" +
- "्यउरूग्वेउज़्बेकिस्तानवेटिकन सिटीसेंट विंसेंट और ग्रेनाडाइंसवेनेज़ुएला" +
- "ब्रिटिश वर्जिन द्वीपसमूहयू.एस. वर्जिन द्वीपसमूहवियतनामवनुआतूवालिस और फ" +
- "़्यूचूनासमोआकोसोवोयमनमायोतेदक्षिण अफ़्रीकाज़ाम्बियाज़िम्बाब्वेअज्ञात क" +
- "्षेत्रविश्वअफ़्रीकाउत्तर अमेरिकादक्षिण अमेरिकाओशिआनियापश्चिमी अफ़्रीका" +
- "मध्य अमेरिकापूर्वी अफ़्रीकाउत्तरी अफ़्रीकामध्य अफ़्रीकादक्षिणी अफ़्रीक" +
- "ाअमेरिकाज़उत्तरी अमेरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-पूर्व " +
- "एशियादक्षिणी यूरोपऑस्ट्रेलेशियामेलानेशियामाइक्रोनेशियाई क्षेत्रपोलीनेश" +
- "ियाएशियामध्य एशियापश्चिमी एशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यू" +
- "रोपलैटिन अमेरिका"
-
-var hiRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0022, 0x0034, 0x0066, 0x008a, 0x00b9, 0x00d1, 0x00ec,
- 0x0107, 0x0132, 0x0144, 0x0165, 0x0183, 0x01a5, 0x01c0, 0x01e1,
- 0x01f0, 0x021b, 0x0236, 0x027a, 0x0292, 0x02b0, 0x02c8, 0x02f0,
- 0x030e, 0x031d, 0x0332, 0x0341, 0x036c, 0x037e, 0x0393, 0x03ab,
- 0x03dc, 0x03f4, 0x0406, 0x0415, 0x0434, 0x0452, 0x0467, 0x0479,
- 0x0488, 0x04c8, 0x04ef, 0x052a, 0x055c, 0x0583, 0x05a0, 0x05c5,
- 0x05d1, 0x05e3, 0x05ec, 0x0604, 0x062f, 0x064d, 0x065f, 0x0675,
- 0x0690, 0x06b5, 0x06ca, 0x06e9, 0x06fb, 0x0723, 0x0735, 0x074d,
- // Entry 40 - 7F
- 0x0765, 0x0793, 0x07ae, 0x07d7, 0x07ef, 0x080a, 0x0819, 0x083e,
- 0x0859, 0x0868, 0x0883, 0x08a2, 0x08ba, 0x08c9, 0x08fd, 0x0924,
- 0x094f, 0x0964, 0x0973, 0x099e, 0x09b6, 0x09ce, 0x09f3, 0x0a05,
- 0x0a11, 0x0a2f, 0x0a4a, 0x0a62, 0x0a6e, 0x0a89, 0x0ab7, 0x0ac6,
- 0x0b3d, 0x0b5b, 0x0b67, 0x0b83, 0x0b92, 0x0bf9, 0x0c57, 0x0c6f,
- 0x0c8a, 0x0c96, 0x0ca5, 0x0cd3, 0x0cf1, 0x0d06, 0x0d18, 0x0d35,
- 0x0d41, 0x0d95, 0x0da1, 0x0dad, 0x0dc2, 0x0dce, 0x0ddd, 0x0dec,
- 0x0dfe, 0x0e0d, 0x0e1f, 0x0e46, 0x0e5e, 0x0e76, 0x0e8b, 0x0ebe,
- // Entry 80 - BF
- 0x0ee0, 0x0f05, 0x0f14, 0x0f3f, 0x0f5d, 0x0f69, 0x0f7b, 0x0f9a,
- 0x0fb8, 0x0fd0, 0x0feb, 0x0ffd, 0x1018, 0x1036, 0x104b, 0x105d,
- 0x1072, 0x1084, 0x109c, 0x10bd, 0x10df, 0x10fd, 0x112b, 0x1149,
- 0x1155, 0x117f, 0x1197, 0x11f1, 0x1238, 0x1253, 0x1271, 0x128c,
- 0x129e, 0x12b0, 0x12c2, 0x12d1, 0x12e9, 0x12fe, 0x1319, 0x1331,
- 0x135c, 0x136b, 0x1390, 0x13ab, 0x13c6, 0x13de, 0x13f0, 0x13ff,
- 0x140e, 0x141a, 0x143b, 0x1447, 0x1456, 0x1462, 0x1496, 0x14bf,
- 0x14da, 0x14f5, 0x1507, 0x1546, 0x157a, 0x1599, 0x15d0, 0x15e8,
- // Entry C0 - FF
- 0x15f4, 0x160c, 0x1618, 0x1646, 0x165e, 0x1676, 0x168b, 0x1694,
- 0x16a6, 0x16bc, 0x16ea, 0x16ff, 0x170e, 0x1720, 0x1738, 0x1757,
- 0x1775, 0x17b4, 0x17d2, 0x17f1, 0x180d, 0x181f, 0x1837, 0x184c,
- 0x186e, 0x18a4, 0x18c3, 0x18e5, 0x18f7, 0x1918, 0x1947, 0x198c,
- 0x1995, 0x19df, 0x19eb, 0x1a00, 0x1a21, 0x1a36, 0x1a55, 0x1a7f,
- 0x1a9d, 0x1aac, 0x1abe, 0x1af3, 0x1b05, 0x1b17, 0x1b32, 0x1b47,
- 0x1b5c, 0x1b9f, 0x1bc4, 0x1bd9, 0x1c00, 0x1c1f, 0x1c6a, 0x1c88,
- 0x1ccc, 0x1d09, 0x1d1e, 0x1d30, 0x1d62, 0x1d6e, 0x1d80, 0x1d89,
- // Entry 100 - 13F
- 0x1d9b, 0x1dc6, 0x1de1, 0x1e02, 0x1e2a, 0x1e39, 0x1e51, 0x1e76,
- 0x1e9e, 0x1eb6, 0x1ee4, 0x1f06, 0x1f31, 0x1f5c, 0x1f81, 0x1faf,
- 0x1fca, 0x1ff2, 0x200a, 0x202c, 0x2051, 0x2083, 0x20a8, 0x20cf,
- 0x20ed, 0x212d, 0x214b, 0x215a, 0x2176, 0x219b, 0x21aa, 0x21cc,
- 0x21ee, 0x2213, 0x2238,
-} // Size: 606 bytes
-
-var hrRegionStr string = "" + // Size: 3113 bytes
- "Otok AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigua i Barbud" +
- "aAngvilaAlbanijaArmenijaNizozemski AntiliAngolaAntarktikaArgentinaAmerič" +
- "ka SamoaAustrijaAustralijaArubaOtoci AlandAzerbajdžanBosna i Hercegovina" +
- "BarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti Bar" +
- "tolomejBermudaBrunejBolivijaKaripski otoci NizozemskeBrazilBahamiButanOt" +
- "ok BouvetBocvanaBjelorusijaBelizeKanadaKokosovi (Keeling) OtociKongo - K" +
- "inshasaSrednjoafrička RepublikaKongo - BrazzavilleŠvicarskaObala Bjeloko" +
- "stiCookovi OtociČileKamerunKinaKolumbijaOtok ClippertonKostarikaKubaZele" +
- "nortska RepublikaCuraçaoBožićni OtokCiparČeška RepublikaNjemačkaDiego Ga" +
- "rciaDžibutiDanskaDominikaDominikanska RepublikaAlžirCeuta i MelillaEkvad" +
- "orEstonijaEgipatZapadna SaharaEritrejaŠpanjolskaEtiopijaEuropska unijaFi" +
- "nskaFidžiFalklandski OtociMikronezijaFarski OtociFrancuskaGabonVelika Br" +
- "itanijaGrenadaGruzijaFrancuska GvajanaGuernseyGanaGibraltarGrenlandGambi" +
- "jaGvinejaGuadalupaEkvatorska GvinejaGrčkaJužna Georgija i Južni Sendvičk" +
- "i OtociGvatemalaGuamGvineja BisauGvajanaHong Kong PUP KinaOtoci Heard i " +
- "McDonaldHondurasHrvatskaHaitiMađarskaKanarski OtociIndonezijaIrskaIzrael" +
- "Otok ManIndijaBritanski Indijskooceanski TeritorijIrakIranIslandItalijaJ" +
- "erseyJamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kristo" +
- "for i NevisSjeverna KorejaJužna KorejaKuvajtKajmanski OtociKazahstanLaos" +
- "LibanonSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvaLuksemburgLatv" +
- "ijaLibijaMarokoMonakoMoldavijaCrna GoraSveti MartinMadagaskarMaršalovi O" +
- "tociMakedonijaMaliMijanmar (Burma)MongolijaMakao PUP KinaSjeverni Marija" +
- "nski OtociMartiniqueMauritanijaMontserratMaltaMauricijusMaldiviMalaviMek" +
- "sikoMalezijaMozambikNamibijaNova KaledonijaNigerOtok NorfolkNigerijaNika" +
- "ragvaNizozemskaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska " +
- "PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSveti Petar i Mikelon" +
- "Otoci PitcairnPortorikoPalestinsko PodručjePortugalPalauParagvajKatarOst" +
- "ala oceanijaReunionRumunjskaSrbijaRusijaRuandaSaudijska ArabijaSalomonsk" +
- "i OtociSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard i Jan Ma" +
- "yenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSveti " +
- "Toma i PrincipSalvadorSint MaartenSirijaSvaziTristan da CunhaOtoci Turks" +
- " i CaicosČadFrancuske Južne i Antarktičke ZemljeTogoTajlandTadžikistanTo" +
- "kelauIstočni TimorTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTaj" +
- "vanTanzanijaUkrajinaUgandaMali udaljeni otoci SAD-aSjedinjene Američke D" +
- "ržaveUrugvajUzbekistanSveta StolicaSveti Vincent i GrenadiniVenezuelaBri" +
- "tanski Djevičanski OtociAmerički Djevičanski OtociVijetnamVanuatuWallis " +
- "i FutunaSamoaKosovoJemenMayotteJužnoafrička RepublikaZambijaZimbabvenepo" +
- "znato područjeSvijetAfrikaSjevernoamerički kontinentJužna AmerikaOceanij" +
- "aZapadna AfrikaCentralna AmerikaIstočna AfrikaSjeverna AfrikaSredišnja A" +
- "frikaJužna AfrikaAmerikeSjeverna AmerikaKaribiIstočna AzijaJužna AzijaJu" +
- "goistočna AzijaJužna EuropaAustralazijaMelanezijaMikronezijsko područjeP" +
- "olinezijaAzijaSrednja AzijaZapadna AzijaEuropaIstočna EuropaSjeverna Eur" +
- "opaZapadna EuropaLatinska Amerika"
-
-var hrRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0014, 0x002e, 0x0038, 0x0049, 0x0050, 0x0058,
- 0x0060, 0x0071, 0x0077, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
- 0x00b0, 0x00bb, 0x00c7, 0x00da, 0x00e2, 0x00ec, 0x00f3, 0x00ff,
- 0x0107, 0x010e, 0x0115, 0x011a, 0x012a, 0x0131, 0x0137, 0x013f,
- 0x0158, 0x015e, 0x0164, 0x0169, 0x0174, 0x017b, 0x0186, 0x018c,
- 0x0192, 0x01aa, 0x01ba, 0x01d3, 0x01e6, 0x01f0, 0x0200, 0x020d,
- 0x0212, 0x0219, 0x021d, 0x0226, 0x0235, 0x023e, 0x0242, 0x0257,
- 0x025f, 0x026d, 0x0272, 0x0283, 0x028c, 0x0298, 0x02a0, 0x02a6,
- // Entry 40 - 7F
- 0x02ae, 0x02c4, 0x02ca, 0x02d9, 0x02e0, 0x02e8, 0x02ee, 0x02fc,
- 0x0304, 0x030f, 0x0317, 0x0325, 0x032b, 0x0331, 0x0342, 0x034d,
- 0x0359, 0x0362, 0x0367, 0x0377, 0x037e, 0x0385, 0x0396, 0x039e,
- 0x03a2, 0x03ab, 0x03b3, 0x03ba, 0x03c1, 0x03ca, 0x03dc, 0x03e2,
- 0x040b, 0x0414, 0x0418, 0x0425, 0x042c, 0x043e, 0x0454, 0x045c,
- 0x0464, 0x0469, 0x0472, 0x0480, 0x048a, 0x048f, 0x0495, 0x049d,
- 0x04a3, 0x04c7, 0x04cb, 0x04cf, 0x04d5, 0x04dc, 0x04e2, 0x04e9,
- 0x04ef, 0x04f4, 0x04fa, 0x0503, 0x050c, 0x0514, 0x051a, 0x0531,
- // Entry 80 - BF
- 0x0540, 0x054d, 0x0553, 0x0562, 0x056b, 0x056f, 0x0576, 0x0582,
- 0x058e, 0x0598, 0x05a0, 0x05a6, 0x05ab, 0x05b5, 0x05bc, 0x05c2,
- 0x05c8, 0x05ce, 0x05d7, 0x05e0, 0x05ec, 0x05f6, 0x0606, 0x0610,
- 0x0614, 0x0624, 0x062d, 0x063b, 0x0654, 0x065e, 0x0669, 0x0673,
- 0x0678, 0x0682, 0x0689, 0x068f, 0x0696, 0x069e, 0x06a6, 0x06ae,
- 0x06bd, 0x06c2, 0x06ce, 0x06d6, 0x06df, 0x06e9, 0x06f2, 0x06f7,
- 0x06fc, 0x0700, 0x070b, 0x070f, 0x0715, 0x0719, 0x072d, 0x073f,
- 0x0747, 0x074f, 0x0756, 0x076b, 0x0779, 0x0782, 0x0797, 0x079f,
- // Entry C0 - FF
- 0x07a4, 0x07ac, 0x07b1, 0x07c0, 0x07c7, 0x07d0, 0x07d6, 0x07dc,
- 0x07e2, 0x07f3, 0x0803, 0x080b, 0x0810, 0x0818, 0x0820, 0x082c,
- 0x0835, 0x0849, 0x0852, 0x085e, 0x0868, 0x086f, 0x0877, 0x087e,
- 0x088a, 0x089e, 0x08a6, 0x08b2, 0x08b8, 0x08bd, 0x08cd, 0x08e1,
- 0x08e5, 0x090b, 0x090f, 0x0916, 0x0922, 0x0929, 0x0937, 0x0943,
- 0x0948, 0x094d, 0x0953, 0x0964, 0x096a, 0x0970, 0x0979, 0x0981,
- 0x0987, 0x09a0, 0x09bc, 0x09c3, 0x09cd, 0x09da, 0x09f3, 0x09fc,
- 0x0a18, 0x0a34, 0x0a3c, 0x0a43, 0x0a52, 0x0a57, 0x0a5d, 0x0a62,
- // Entry 100 - 13F
- 0x0a69, 0x0a81, 0x0a88, 0x0a90, 0x0aa3, 0x0aa9, 0x0aaf, 0x0aca,
- 0x0ad8, 0x0ae0, 0x0aee, 0x0aff, 0x0b0e, 0x0b1d, 0x0b2e, 0x0b3b,
- 0x0b42, 0x0b52, 0x0b58, 0x0b66, 0x0b72, 0x0b84, 0x0b91, 0x0b9d,
- 0x0ba7, 0x0bbe, 0x0bc8, 0x0bcd, 0x0bda, 0x0be7, 0x0bed, 0x0bfc,
- 0x0c0b, 0x0c19, 0x0c29,
-} // Size: 606 bytes
-
-var huRegionStr string = "" + // Size: 3354 bytes
- "Ascension-szigetAndorraEgyesült Arab EmírségekAfganisztánAntigua és Barb" +
- "udaAnguillaAlbániaÖrményországHolland AntillákAngolaAntarktiszArgentínaA" +
- "merikai SzamoaAusztriaAusztráliaArubaÅland-szigetekAzerbajdzsánBosznia-H" +
- "ercegovinaBarbadosBangladesBelgiumBurkina FasoBulgáriaBahreinBurundiBeni" +
- "nSaint-BarthélemyBermudaBruneiBolíviaHolland Karib-térségBrazíliaBahama-" +
- "szigetekBhutánBouvet-szigetBotswanaFehéroroszországBelizeKanadaKókusz-sz" +
- "igetekKongó - KinshasaKözép-afrikai KöztársaságKongó - BrazzavilleSvájcE" +
- "lefántcsontpartCook-szigetekChileKamerunKínaKolumbiaClipperton-szigetCos" +
- "ta RicaKubaZöld-foki KöztársaságCuraçaoKarácsony-szigetCiprusCsehországN" +
- "émetországDiego GarciaDzsibutiDániaDominikaDominikai KöztársaságAlgéria" +
- "Ceuta és MelillaEcuadorÉsztországEgyiptomNyugat-SzaharaEritreaSpanyolors" +
- "zágEtiópiaEurópai UnióFinnországFidzsiFalkland-szigetekMikronéziaFeröer-" +
- "szigetekFranciaországGabonEgyesült KirályságGrenadaGrúziaFrancia GuyanaG" +
- "uernseyGhánaGibraltárGrönlandGambiaGuineaGuadeloupeEgyenlítői-GuineaGörö" +
- "gországDéli-Georgia és Déli-Sandwich-szigetekGuatemalaGuamBissau-GuineaG" +
- "uyanaHongkong SAR KínaHeard-sziget és McDonald-szigetekHondurasHorvátors" +
- "zágHaitiMagyarországKanári-szigetekIndonéziaÍrországIzraelMan-szigetIndi" +
- "aBrit Indiai-óceáni TerületIrakIránIzlandOlaszországJerseyJamaicaJordáni" +
- "aJapánKenyaKirgizisztánKambodzsaKiribatiComore-szigetekSaint Kitts és Ne" +
- "visÉszak-KoreaDél-KoreaKuvaitKajmán-szigetekKazahsztánLaoszLibanonSanta " +
- "LuciaLiechtensteinSrí LankaLibériaLesothoLitvániaLuxemburgLettországLíbi" +
- "aMarokkóMonacoMoldovaMontenegróSaint MartinMadagaszkárMarshall-szigetekM" +
- "acedóniaMaliMianmar (Burma)MongóliaMakaó SAR KínaÉszaki Mariana-szigetek" +
- "MartiniqueMauritániaMontserratMáltaMauritiusMaldív-szigetekMalawiMexikóM" +
- "alajziaMozambikNamíbiaÚj-KaledóniaNigerNorfolk-szigetNigériaNicaraguaHol" +
- "landiaNorvégiaNepálNauruNiueÚj-ZélandOmánPanamaPeruFrancia PolinéziaPápu" +
- "a Új-GuineaFülöp-szigetekPakisztánLengyelországSaint Pierre és MiquelonP" +
- "itcairn-szigetekPuerto RicoPalesztin TerületPortugáliaPalauParaguayKatar" +
- "Külső-ÓceániaReunionRomániaSzerbiaOroszországRuandaSzaúd-ArábiaSalamon-s" +
- "zigetekSeychelle-szigetekSzudánSvédországSzingapúrSzent IlonaSzlovéniaSp" +
- "itzbergák és Jan Mayen-szigetekSzlovákiaSierra LeoneSan MarinoSzenegálSz" +
- "omáliaSurinameDél-SzudánSao Tomé és PríncipeSalvadorSint MaartenSzíriaSz" +
- "váziföldTristan da CunhaTurks- és Caicos-szigetekCsádFrancia Déli Terüle" +
- "tekTogoThaiföldTádzsikisztánTokelauKelet-TimorTürkmenisztánTunéziaTongaT" +
- "örökországTrinidad és TobagoTuvaluTajvanTanzániaUkrajnaUgandaAmerikai C" +
- "sendes-óceáni SzigetekEgyesült ÁllamokUruguayÜzbegisztánVatikánSaint Vin" +
- "cent és a Grenadine-szigetekVenezuelaBrit Virgin-szigetekAmerikai Virgin" +
- "-szigetekVietnamVanuatuWallis- és Futuna-szigetekSzamoaKoszovóJemenMayot" +
- "teDél-afrikai KöztársaságZambiaZimbabweIsmeretlen körzetVilágAfrikaÉszak" +
- "-AmerikaDél-AmerikaÓceániaNyugat-AfrikaKözép-AmerikaKelet-AfrikaÉszak-Af" +
- "rikaKözép-AfrikaAfrika déli részeAmerikaAmerika északi részeKarib-térség" +
- "Kelet-ÁzsiaDél-ÁzsiaDélkelet-ÁzsiaDél-EurópaAusztrálázsiaMelanéziaMikron" +
- "éziai régióPolinéziaÁzsiaKözép-ÁzsiaNyugat-ÁzsiaEurópaKelet-EurópaÉszak" +
- "-EurópaNyugat-EurópaLatin-Amerika"
-
-var huRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x0031, 0x003d, 0x0050, 0x0058, 0x0060,
- 0x006f, 0x0080, 0x0086, 0x0090, 0x009a, 0x00a9, 0x00b1, 0x00bc,
- 0x00c1, 0x00d0, 0x00dd, 0x00f0, 0x00f8, 0x0101, 0x0108, 0x0114,
- 0x011d, 0x0124, 0x012b, 0x0130, 0x0141, 0x0148, 0x014e, 0x0156,
- 0x016c, 0x0175, 0x0184, 0x018b, 0x0198, 0x01a0, 0x01b2, 0x01b8,
- 0x01be, 0x01ce, 0x01df, 0x01fd, 0x0211, 0x0217, 0x0228, 0x0235,
- 0x023a, 0x0241, 0x0246, 0x024e, 0x025f, 0x0269, 0x026d, 0x0286,
- 0x028e, 0x029f, 0x02a5, 0x02b0, 0x02bd, 0x02c9, 0x02d1, 0x02d7,
- // Entry 40 - 7F
- 0x02df, 0x02f7, 0x02ff, 0x0310, 0x0317, 0x0323, 0x032b, 0x0339,
- 0x0340, 0x034e, 0x0356, 0x0364, 0x036f, 0x0375, 0x0386, 0x0391,
- 0x03a1, 0x03af, 0x03b4, 0x03c9, 0x03d0, 0x03d7, 0x03e5, 0x03ed,
- 0x03f3, 0x03fd, 0x0406, 0x040c, 0x0412, 0x041c, 0x042f, 0x043d,
- 0x0466, 0x046f, 0x0473, 0x0480, 0x0486, 0x0498, 0x04ba, 0x04c2,
- 0x04d0, 0x04d5, 0x04e2, 0x04f2, 0x04fc, 0x0506, 0x050c, 0x0516,
- 0x051b, 0x0538, 0x053c, 0x0541, 0x0547, 0x0553, 0x0559, 0x0560,
- 0x0569, 0x056f, 0x0574, 0x0581, 0x058a, 0x0592, 0x05a1, 0x05b6,
- // Entry 80 - BF
- 0x05c2, 0x05cc, 0x05d2, 0x05e2, 0x05ed, 0x05f2, 0x05f9, 0x0604,
- 0x0611, 0x061b, 0x0623, 0x062a, 0x0633, 0x063c, 0x0647, 0x064d,
- 0x0655, 0x065b, 0x0662, 0x066d, 0x0679, 0x0685, 0x0696, 0x06a0,
- 0x06a4, 0x06b3, 0x06bc, 0x06cc, 0x06e4, 0x06ee, 0x06f9, 0x0703,
- 0x0709, 0x0712, 0x0722, 0x0728, 0x072f, 0x0737, 0x073f, 0x0747,
- 0x0755, 0x075a, 0x0768, 0x0770, 0x0779, 0x0782, 0x078b, 0x0791,
- 0x0796, 0x079a, 0x07a5, 0x07aa, 0x07b0, 0x07b4, 0x07c6, 0x07d7,
- 0x07e7, 0x07f1, 0x07ff, 0x0818, 0x0829, 0x0834, 0x0846, 0x0851,
- // Entry C0 - FF
- 0x0856, 0x085e, 0x0863, 0x0874, 0x087b, 0x0883, 0x088a, 0x0896,
- 0x089c, 0x08aa, 0x08ba, 0x08cc, 0x08d3, 0x08df, 0x08e9, 0x08f4,
- 0x08fe, 0x0921, 0x092b, 0x0937, 0x0941, 0x094a, 0x0953, 0x095b,
- 0x0967, 0x097e, 0x0986, 0x0992, 0x0999, 0x09a5, 0x09b5, 0x09cf,
- 0x09d4, 0x09ec, 0x09f0, 0x09f9, 0x0a08, 0x0a0f, 0x0a1a, 0x0a29,
- 0x0a31, 0x0a36, 0x0a44, 0x0a57, 0x0a5d, 0x0a63, 0x0a6c, 0x0a73,
- 0x0a79, 0x0a9b, 0x0aad, 0x0ab4, 0x0ac1, 0x0ac9, 0x0aef, 0x0af8,
- 0x0b0c, 0x0b24, 0x0b2b, 0x0b32, 0x0b4d, 0x0b53, 0x0b5b, 0x0b60,
- // Entry 100 - 13F
- 0x0b67, 0x0b82, 0x0b88, 0x0b90, 0x0ba2, 0x0ba8, 0x0bae, 0x0bbc,
- 0x0bc8, 0x0bd1, 0x0bde, 0x0bed, 0x0bf9, 0x0c06, 0x0c14, 0x0c27,
- 0x0c2e, 0x0c44, 0x0c52, 0x0c5e, 0x0c69, 0x0c79, 0x0c85, 0x0c94,
- 0x0c9e, 0x0cb2, 0x0cbc, 0x0cc2, 0x0cd0, 0x0cdd, 0x0ce4, 0x0cf1,
- 0x0cff, 0x0d0d, 0x0d1a,
-} // Size: 606 bytes
-
-var hyRegionStr string = "" + // Size: 6292 bytes
- "Համբարձման կղզիԱնդորրաԱրաբական Միացյալ ԷմիրություններԱֆղանստանԱնտիգուա և" +
- " ԲարբուդաԱնգիլյաԱլբանիաՀայաստանԱնգոլաԱնտարկտիդաԱրգենտինաԱմերիկյան ՍամոաԱ" +
- "վստրիաԱվստրալիաԱրուբաԱլանդյան կղզիներԱդրբեջանԲոսնիա և ՀերցեգովինաԲարբադ" +
- "ոսԲանգլադեշԲելգիաԲուրկինա ՖասոԲուլղարիաԲահրեյնԲուրունդիԲենինՍուրբ Բարդո" +
- "ւղիմեոսԲերմուդյան կղզիներԲրունեյԲոլիվիաԿարիբյան ՆիդեռլանդներԲրազիլիաԲահ" +
- "ամներԲութանԲուվե կղզիԲոթսվանաԲելառուսԲելիզԿանադաԿոկոսյան (Քիլինգ) կղզին" +
- "երԿոնգո - ԿինշասաԿենտրոնական Աֆրիկյան ՀանրապետությունԿոնգո - ԲրազավիլՇվ" +
- "եյցարիաԿոտ Դ՛իվուարԿուկի կղզիներՉիլիԿամերունՉինաստանԿոլումբիաՔլիփերթոն " +
- "կղզիԿոստա ՌիկաԿուբաԿաբո ՎերդեԿյուրասաոԾննդյան կղզիԿիպրոսՉեխիաԳերմանիաԴի" +
- "եգո ԳարսիաՋիբուտիԴանիաԴոմինիկաԴոմինիկյան ՀանրապետությունԱլժիրՍեուտա և Մ" +
- "ելիլյաԷկվադորԷստոնիաԵգիպտոսԱրևմտյան ՍահարաԷրիտրեաԻսպանիաԵթովպիաԵվրոպակա" +
- "ն ՄիությունՖինլանդիաՖիջիՖոլքլենդյան կղզիներՄիկրոնեզիաՖարերյան կղզիներՖր" +
- "անսիաԳաբոնՄեծ ԲրիտանիաԳրենադաՎրաստանՖրանսիական ԳվիանաԳերնսիԳանաՋիբրալթա" +
- "րԳրենլանդիաԳամբիաԳվինեաԳվադելուպաՀասարակածային ԳվինեաՀունաստանՀարավային" +
- " Ջորջիա և Հարավային Սենդվիչյան կղզիներԳվատեմալաԳուամԳվինեա-ԲիսաուԳայանաՀ" +
- "ոնկոնգի ՀՎՇՀերդ կղզի և ՄակԴոնալդի կղզիներՀոնդուրասԽորվաթիաՀաիթիՀունգարի" +
- "աԿանարյան կղզիներԻնդոնեզիաԻռլանդիաԻսրայելՄեն կղզիՀնդկաստանՀնդկական Օվկի" +
- "անոսում Բրիտանական ՏարածքԻրաքԻրանԻսլանդիաԻտալիաՋերսիՃամայկաՀորդանանՃապո" +
- "նիաՔենիաՂրղզստանԿամբոջաԿիրիբատիԿոմորյան կղզիներՍենթ Քիթս և ՆեվիսՀյուսիս" +
- "ային ԿորեաՀարավային ԿորեաՔուվեյթԿայմանյան կղզիներՂազախստանԼաոսԼիբանանՍե" +
- "նթ ԼուսիաԼիխտենշտեյնՇրի ԼանկաԼիբերիաԼեսոտոԼիտվաԼյուքսեմբուրգԼատվիաԼիբիա" +
- "ՄարոկկոՄոնակոՄոլդովաՉեռնոգորիաՍեն ՄարտենՄադագասկարՄարշալյան կղզիներՄակե" +
- "դոնիաՄալիՄյանմա (Բիրմա)ՄոնղոլիաՉինաստանի Մակաո ՀՎՇՀյուսիսային Մարիանյան" +
- " կղզիներՄարտինիկաՄավրիտանիաՄոնտսերատՄալթաՄավրիկիոսՄալդիվներՄալավիՄեքսիկա" +
- "ՄալայզիաՄոզամբիկՆամիբիաՆոր ԿալեդոնիաՆիգերՆորֆոլկ կղզիՆիգերիաՆիկարագուաՆ" +
- "իդեռլանդներՆորվեգիաՆեպալՆաուրուՆիուեՆոր ԶելանդիաՕմանՊանամաՊերուՖրանսիակ" +
- "ան ՊոլինեզիաՊապուա Նոր ԳվինեաՖիլիպիններՊակիստանԼեհաստանՍեն Պիեռ և Միքել" +
- "ոնՊիտկեռն կղզիներՊուերտո ՌիկոՊաղեստինյան տարածքներՊորտուգալիաՊալաուՊարա" +
- "գվայԿատարԱրտաքին ՕվկիանիաՌեյունիոնՌումինիաՍերբիաՌուսաստանՌուանդաՍաուդյա" +
- "ն ԱրաբիաՍողոմոնյան կղզիներՍեյշելյան կղզիներՍուդանՇվեդիաՍինգապուրՍուրբ Հ" +
- "եղինեի կղզիՍլովենիաՍվալբարդ և Յան ՄայենՍլովակիաՍիերա ԼեոնեՍան ՄարինոՍեն" +
- "եգալՍոմալիՍուրինամՀարավային ՍուդանՍան Տոմե և ՓրինսիփիՍալվադորՍինտ Մարտե" +
- "նՍիրիաՍվազիլենդՏրիստան դա ԿունյաԹըրքս և Կայկոս կղզիներՉադՖրանսիական Հար" +
- "ավային ՏարածքներՏոգոԹաիլանդՏաջիկստանՏոկելաուԹիմոր-ԼեստեԹուրքմենստանԹուն" +
- "իսՏոնգաԹուրքիաՏրինիդադ և ՏոբագոՏուվալուԹայվանԹանզանիաՈւկրաինաՈւգանդաԱրտ" +
- "աքին կղզիներ (ԱՄՆ)Ամերիկայի Միացյալ ՆահանգներՈւրուգվայՈւզբեկստանՎատիկան" +
- " քաղաք-պետությունՍենթ Վինսենթ և ԳրենադիններՎենեսուելաԲրիտանական Վիրջինյա" +
- "ն կղզիներԱմերիկյան Վիրջինյան կղզիներՎիետնամՎանուատուՈւոլիս և ՖուտունաՍա" +
- "մոաԿոսովոԵմենՄայոտՀարավաֆրիկյան ՀանրապետությունԶամբիաԶիմբաբվեԱնհայտ տար" +
- "ածաշրջանԱշխարհԱֆրիկաՀյուսիսային ԱմերիկաՀարավային ԱմերիկաՕվկիանիաԱրևմտյա" +
- "ն ԱֆրիկաԿենտրոնական ԱմերիկաԱրևելյան ԱֆրիկաՀյուսիսային ԱֆրիկաԿենտրոնական" +
- " ԱֆրիկաՀարավային ԱֆրիկաԱմերիկաՀյուսիսային Ամերիկա - ԱՄՆ և ԿանադաԿարիբյան" +
- " կղզիներԱրևելյան ԱսիաՀարավային ԱսիաՀարավ-Արևելյան ԱսիաՀարավային ԵվրոպաԱվ" +
- "ստրալիա և Նոր ԶելանդիաՄելանեզիաՄիկրոնեզիայի տարածաշրջանՊոլինեզիաԱսիաԿեն" +
- "տրոնական ԱսիաԱրևմտյան ԱսիաԵվրոպաԱրևելյան ԵվրոպաՀյուսիսային ԵվրոպաԱրևմտյ" +
- "ան ԵվրոպաԼատինական Ամերիկա"
-
-var hyRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001d, 0x002b, 0x0067, 0x0079, 0x009d, 0x00ab, 0x00b9,
- 0x00c9, 0x00c9, 0x00d5, 0x00e9, 0x00fb, 0x0118, 0x0126, 0x0138,
- 0x0144, 0x0163, 0x0173, 0x0199, 0x01a9, 0x01bb, 0x01c7, 0x01e0,
- 0x01f2, 0x0200, 0x0212, 0x021c, 0x023f, 0x0262, 0x0270, 0x027e,
- 0x02a7, 0x02b7, 0x02c7, 0x02d3, 0x02e6, 0x02f6, 0x0306, 0x0310,
- 0x031c, 0x034a, 0x0365, 0x03ab, 0x03c8, 0x03da, 0x03f1, 0x040a,
- 0x0412, 0x0422, 0x0432, 0x0444, 0x045f, 0x0472, 0x047c, 0x048f,
- 0x04a1, 0x04b8, 0x04c4, 0x04ce, 0x04de, 0x04f5, 0x0503, 0x050d,
- // Entry 40 - 7F
- 0x051d, 0x0550, 0x055a, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05bf,
- 0x05cd, 0x05db, 0x05e9, 0x060e, 0x0620, 0x0628, 0x064d, 0x0661,
- 0x0680, 0x068e, 0x0698, 0x06af, 0x06bd, 0x06cb, 0x06ec, 0x06f8,
- 0x0700, 0x0712, 0x0726, 0x0732, 0x073e, 0x0752, 0x0779, 0x078b,
- 0x07e4, 0x07f6, 0x0800, 0x0819, 0x0825, 0x083c, 0x0874, 0x0886,
- 0x0896, 0x08a0, 0x08b2, 0x08d1, 0x08e3, 0x08f3, 0x0901, 0x0910,
- 0x0922, 0x096b, 0x0973, 0x097b, 0x098b, 0x0997, 0x09a1, 0x09af,
- 0x09bf, 0x09cd, 0x09d7, 0x09e7, 0x09f5, 0x0a05, 0x0a24, 0x0a43,
- // Entry 80 - BF
- 0x0a64, 0x0a81, 0x0a8f, 0x0ab0, 0x0ac2, 0x0aca, 0x0ad8, 0x0aed,
- 0x0b03, 0x0b14, 0x0b22, 0x0b2e, 0x0b38, 0x0b52, 0x0b5e, 0x0b68,
- 0x0b76, 0x0b82, 0x0b90, 0x0ba4, 0x0bb7, 0x0bcb, 0x0bec, 0x0bfe,
- 0x0c06, 0x0c1f, 0x0c2f, 0x0c53, 0x0c8b, 0x0c9d, 0x0cb1, 0x0cc3,
- 0x0ccd, 0x0cdf, 0x0cf1, 0x0cfd, 0x0d0b, 0x0d1b, 0x0d2b, 0x0d39,
- 0x0d52, 0x0d5c, 0x0d73, 0x0d81, 0x0d95, 0x0dad, 0x0dbd, 0x0dc7,
- 0x0dd5, 0x0ddf, 0x0df6, 0x0dfe, 0x0e0a, 0x0e14, 0x0e3b, 0x0e5b,
- 0x0e6f, 0x0e7f, 0x0e8f, 0x0eb0, 0x0ecd, 0x0ee4, 0x0f0d, 0x0f23,
- // Entry C0 - FF
- 0x0f2f, 0x0f3f, 0x0f49, 0x0f68, 0x0f7a, 0x0f8a, 0x0f96, 0x0fa8,
- 0x0fb6, 0x0fd3, 0x0ff6, 0x1017, 0x1023, 0x102f, 0x1041, 0x1063,
- 0x1073, 0x1098, 0x10a8, 0x10bd, 0x10d0, 0x10de, 0x10ea, 0x10fa,
- 0x1119, 0x113c, 0x114c, 0x1161, 0x116b, 0x117d, 0x119d, 0x11c6,
- 0x11cc, 0x1206, 0x120e, 0x121c, 0x122e, 0x123e, 0x1253, 0x126b,
- 0x1277, 0x1281, 0x128f, 0x12af, 0x12bf, 0x12cb, 0x12db, 0x12eb,
- 0x12f9, 0x131f, 0x1353, 0x1365, 0x1379, 0x13a7, 0x13d8, 0x13ec,
- 0x1422, 0x1456, 0x1464, 0x1476, 0x1496, 0x14a0, 0x14ac, 0x14b4,
- // Entry 100 - 13F
- 0x14be, 0x14f7, 0x1503, 0x1513, 0x1536, 0x1542, 0x154e, 0x1573,
- 0x1594, 0x15a4, 0x15c1, 0x15e6, 0x1603, 0x1626, 0x1649, 0x1668,
- 0x1676, 0x16b4, 0x16d3, 0x16ec, 0x1707, 0x172b, 0x174a, 0x1777,
- 0x1789, 0x17b8, 0x17ca, 0x17d2, 0x17f1, 0x180a, 0x1816, 0x1833,
- 0x1856, 0x1873, 0x1894,
-} // Size: 606 bytes
-
-var idRegionStr string = "" + // Size: 3042 bytes
- "Pulau AscensionAndorraUni Emirat ArabAfganistanAntigua dan BarbudaAnguil" +
- "laAlbaniaArmeniaAntilla BelandaAngolaAntarktikaArgentinaSamoa AmerikaAus" +
- "triaAustraliaArubaKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbado" +
- "sBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint Barthelemy" +
- "BermudaBruneiBoliviaKaribia BelandaBrasilBahamaBhutanPulau BouvetBotswan" +
- "aBelarusBelizeKanadaKepulauan CocosKongo - KinshasaRepublik Afrika Tenga" +
- "hKongo - BrazzavilleSwissCote d’IvoireKepulauan CookCileKamerunChinaKolo" +
- "mbiaPulau ClippertonKosta RikaKubaTanjung VerdeCuraçaoPulau ChristmasSip" +
- "rusRepublik CheskaJermanDiego GarciaJibutiDenmarkDominikaRepublik Domini" +
- "kaAljazairCeuta dan MelillaEkuadorEstoniaMesirSahara BaratEritreaSpanyol" +
- "EtiopiaUni EropaFinlandiaFijiKepulauan MalvinasMikronesiaKepulauan Faroe" +
- "PrancisGabonInggrisGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGri" +
- "nlandiaGambiaGuineaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Ke" +
- "p. Sandwich SelatanGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR ChinaPu" +
- "lau Heard dan Kepulauan McDonaldHondurasKroasiaHaitiHungariaKepulauan Ca" +
- "naryIndonesiaIrlandiaIsraelPulau ManIndiaWilayah Inggris di Samudra Hind" +
- "iaIrakIranIslandiaItaliaJerseyJamaikaYordaniaJepangKenyaKirgistanKamboja" +
- "KiribatiKomoroSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKepulau" +
- "an CaymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberiaLes" +
- "othoLituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint Mart" +
- "inMadagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau " +
- "SAR ChinaKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauriti" +
- "usMaladewaMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulau" +
- "an NorfolkNigeriaNikaraguaBelandaNorwegiaNepalNauruNiueSelandia BaruOman" +
- "PanamaPeruPolinesia PrancisPapua NuginiFilipinaPakistanPolandiaSaint Pie" +
- "rre dan MiquelonKepulauan PitcairnPuerto RikoWilayah PalestinaPortugalPa" +
- "lauParaguayQatarOseania LuarRéunionRumaniaSerbiaRusiaRwandaArab SaudiKep" +
- "ulauan SolomonSeychellesSudanSwediaSingapuraSaint HelenaSloveniaKepulaua" +
- "n Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSuri" +
- "nameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuriahSwazi" +
- "landTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan P" +
- "rancisTogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaT" +
- "urkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terlua" +
- "r A.S.Amerika SerikatUruguayUzbekistanVatikanSaint Vincent dan Grenadine" +
- "sVenezuelaKepulauan Virgin InggrisKepulauan Virgin A.S.VietnamVanuatuKep" +
- "ulauan Wallis dan FutunaSamoaKosovoYamanMayotteAfrika SelatanZambiaZimba" +
- "bweWilayah Tidak DikenalDuniaAfrikaAmerika UtaraAmerika SelatanOseaniaAf" +
- "rika Bagian BaratAmerika TengahAfrika Bagian TimurAfrika Bagian UtaraAfr" +
- "ika Bagian TengahAfrika Bagian SelatanAmerikaAmerika Bagian UtaraKepulau" +
- "an KaribiaAsia Bagian TimurAsia Bagian SelatanAsia TenggaraEropa Bagian " +
- "SelatanAustralasiaMelanesiaWilayah MikronesiaPolinesiaAsiaAsia TengahAsi" +
- "a Bagian BaratEropaEropa Bagian TimurEropa Bagian UtaraEropa Bagian Bara" +
- "tAmerika Latin"
-
-var idRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0016, 0x0025, 0x002f, 0x0042, 0x004a, 0x0051,
- 0x0058, 0x0067, 0x006d, 0x0077, 0x0080, 0x008d, 0x0094, 0x009d,
- 0x00a2, 0x00b1, 0x00bb, 0x00d1, 0x00d9, 0x00e3, 0x00e9, 0x00f5,
- 0x00fd, 0x0104, 0x010b, 0x0110, 0x0120, 0x0127, 0x012d, 0x0134,
- 0x0143, 0x0149, 0x014f, 0x0155, 0x0161, 0x0169, 0x0170, 0x0176,
- 0x017c, 0x018b, 0x019b, 0x01b1, 0x01c4, 0x01c9, 0x01d8, 0x01e6,
- 0x01ea, 0x01f1, 0x01f6, 0x01fe, 0x020e, 0x0218, 0x021c, 0x0229,
- 0x0231, 0x0240, 0x0246, 0x0255, 0x025b, 0x0267, 0x026d, 0x0274,
- // Entry 40 - 7F
- 0x027c, 0x028d, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02b9, 0x02c5,
- 0x02cc, 0x02d3, 0x02da, 0x02e3, 0x02ec, 0x02f0, 0x0302, 0x030c,
- 0x031b, 0x0322, 0x0327, 0x032e, 0x0335, 0x033c, 0x034a, 0x0352,
- 0x0357, 0x0360, 0x036a, 0x0370, 0x0376, 0x0380, 0x0391, 0x0397,
- 0x03be, 0x03c7, 0x03cb, 0x03d8, 0x03de, 0x03f1, 0x0413, 0x041b,
- 0x0422, 0x0427, 0x042f, 0x043f, 0x0448, 0x0450, 0x0456, 0x045f,
- 0x0464, 0x0485, 0x0489, 0x048d, 0x0495, 0x049b, 0x04a1, 0x04a8,
- 0x04b0, 0x04b6, 0x04bb, 0x04c4, 0x04cb, 0x04d3, 0x04d9, 0x04ee,
- // Entry 80 - BF
- 0x04f9, 0x0506, 0x050c, 0x051c, 0x0525, 0x0529, 0x0530, 0x053b,
- 0x0548, 0x0551, 0x0558, 0x055f, 0x0567, 0x0571, 0x0577, 0x057c,
- 0x0582, 0x0588, 0x058f, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05ca,
- 0x05ce, 0x05dd, 0x05e5, 0x05f4, 0x060b, 0x0613, 0x061d, 0x0627,
- 0x062c, 0x0635, 0x063d, 0x0643, 0x064a, 0x0652, 0x065a, 0x0661,
- 0x066f, 0x0674, 0x0685, 0x068c, 0x0695, 0x069c, 0x06a4, 0x06a9,
- 0x06ae, 0x06b2, 0x06bf, 0x06c3, 0x06c9, 0x06cd, 0x06de, 0x06ea,
- 0x06f2, 0x06fa, 0x0702, 0x071b, 0x072d, 0x0738, 0x0749, 0x0751,
- // Entry C0 - FF
- 0x0756, 0x075e, 0x0763, 0x076f, 0x0777, 0x077e, 0x0784, 0x0789,
- 0x078f, 0x0799, 0x07aa, 0x07b4, 0x07b9, 0x07bf, 0x07c8, 0x07d4,
- 0x07dc, 0x07fc, 0x0804, 0x0810, 0x081a, 0x0821, 0x0828, 0x0830,
- 0x083d, 0x0852, 0x085d, 0x0869, 0x086f, 0x0878, 0x0888, 0x08a2,
- 0x08a5, 0x08c2, 0x08c6, 0x08ce, 0x08d8, 0x08df, 0x08ea, 0x08f7,
- 0x08fe, 0x0903, 0x0908, 0x091b, 0x0921, 0x0927, 0x092f, 0x0936,
- 0x093c, 0x0952, 0x0961, 0x0968, 0x0972, 0x0979, 0x0995, 0x099e,
- 0x09b6, 0x09cb, 0x09d2, 0x09d9, 0x09f4, 0x09f9, 0x09ff, 0x0a04,
- // Entry 100 - 13F
- 0x0a0b, 0x0a19, 0x0a1f, 0x0a27, 0x0a3c, 0x0a41, 0x0a47, 0x0a54,
- 0x0a63, 0x0a6a, 0x0a7d, 0x0a8b, 0x0a9e, 0x0ab1, 0x0ac5, 0x0ada,
- 0x0ae1, 0x0af5, 0x0b06, 0x0b17, 0x0b2a, 0x0b37, 0x0b4b, 0x0b56,
- 0x0b5f, 0x0b71, 0x0b7a, 0x0b7e, 0x0b89, 0x0b9a, 0x0b9f, 0x0bb1,
- 0x0bc3, 0x0bd5, 0x0be2,
-} // Size: 606 bytes
-
-var isRegionStr string = "" + // Size: 3324 bytes
- "Ascension-eyjaAndorraSameinuðu arabísku furstadæminAfganistanAntígva og " +
- "BarbúdaAngvillaAlbaníaArmeníaHollensku AntillurAngólaSuðurskautslandiðAr" +
- "gentínaBandaríska SamóaAusturríkiÁstralíaArúbaÁlandseyjarAserbaídsjanBos" +
- "nía og HersegóvínaBarbadosBangladessBelgíaBúrkína FasóBúlgaríaBareinBúrú" +
- "ndíBenínSankti BartólómeusareyjarBermúdaeyjarBrúneiBólivíaKaríbahafshlut" +
- "i HollandsBrasilíaBahamaeyjarBútanBouveteyjaBotsvanaHvíta-RússlandBelísK" +
- "anadaKókoseyjar (Keeling)Kongó-KinshasaMið-AfríkulýðveldiðKongó-Brazzavi" +
- "lleSvissFílabeinsströndinCooks-eyjarSíleKamerúnKínaKólumbíaClipperton-ey" +
- "jaKostaríkaKúbaGrænhöfðaeyjarCuracaoJólaeyKýpurTékklandÞýskalandDiego Ga" +
- "rciaDjíbútíDanmörkDóminíkaDóminíska lýðveldiðAlsírCeuta og MelillaEkvado" +
- "rEistlandEgyptalandVestur-SaharaErítreaSpánnEþíópíaEvrópusambandiðFinnla" +
- "ndFídjíeyjarFalklandseyjarMíkrónesíaFæreyjarFrakklandGabonBretlandGrenad" +
- "aGeorgíaFranska GvæjanaGuernseyGanaGíbraltarGrænlandGambíaGíneaGvadelúpe" +
- "yjarMiðbaugs-GíneaGrikklandSuður-Georgía og Suður-SandvíkureyjarGvatemal" +
- "aGvamGínea-BissáGvæjanaSjálfstjórnarsvæðið Hong KongHeard og McDonaldsey" +
- "jarHondúrasKróatíaHaítíUngverjalandKanaríeyjarIndónesíaÍrlandÍsraelMönIn" +
- "dlandBresku IndlandshafseyjarÍrakÍranÍslandÍtalíaJerseyJamaíkaJórdaníaJa" +
- "panKeníaKirgistanKambódíaKíribatíKómoreyjarSankti Kitts og NevisNorður-K" +
- "óreaSuður-KóreaKúveitCaymaneyjarKasakstanLaosLíbanonSankti LúsíaLiechte" +
- "nsteinSrí LankaLíberíaLesótóLitháenLúxemborgLettlandLíbíaMarokkóMónakóMo" +
- "ldóvaSvartfjallalandSt. MartinMadagaskarMarshalleyjarMakedóníaMalíMjanma" +
- "r (Búrma)MongólíaSjálfstjórnarsvæðið MakaóNorður-MaríanaeyjarMartiníkMár" +
- "itaníaMontserratMaltaMáritíusMaldíveyjarMalavíMexíkóMalasíaMósambíkNamib" +
- "íaNýja-KaledóníaNígerNorfolkeyjaNígeríaNíkaragvaHollandNoregurNepalNárú" +
- "NiueNýja-SjálandÓmanPanamaPerúFranska PólýnesíaPapúa Nýja-GíneaFilippsey" +
- "jarPakistanPóllandSankti Pierre og MiquelonPitcairn-eyjarPúertó RíkóHeim" +
- "astjórnarsvæði PalestínumannaPortúgalPaláParagvæKatarYtri EyjaálfaRéunio" +
- "nRúmeníaSerbíaRússlandRúandaSádi-ArabíaSalómonseyjarSeychelles-eyjarSúda" +
- "nSvíþjóðSingapúrSankti HelenaSlóveníaSvalbarði og Jan MayenSlóvakíaSíerr" +
- "a LeóneSan MarínóSenegalSómalíaSúrínamSuður-SúdanSaó Tóme og PrinsípeEl " +
- "SalvadorSankti MartinSýrlandSvasílandTristan da CunhaTurks- og Caicoseyj" +
- "arTsjadFrönsku suðlægu landsvæðinTógóTaílandTadsjikistanTókeláTímor-Lest" +
- "eTúrkmenistanTúnisTongaTyrklandTrínidad og TóbagóTúvalúTaívanTansaníaÚkr" +
- "aínaÚgandaSmáeyjar BandaríkjannaBandaríkinÚrúgvæÚsbekistanVatíkaniðSankt" +
- "i Vinsent og GrenadíneyjarVenesúelaBresku JómfrúaeyjarBandarísku Jómfrúa" +
- "eyjarVíetnamVanúatúWallis- og FútúnaeyjarSamóaKósóvóJemenMayotteSuður-Af" +
- "ríkaSambíaSimbabveÓþekkt svæðiHeimurinnAfríkaNorður-AmeríkaSuður-Ameríka" +
- "EyjaálfaVestur-AfríkaMið-AmeríkaAustur-AfríkaNorður-AfríkaMið-AfríkaSuðu" +
- "rhluti AfríkuAmeríkaAmeríka norðan MexikóKaríbahafiðAustur-AsíaSuður-Así" +
- "aSuðaustur-AsíaSuður-EvrópaÁstralasíaMelanesíaMíkrónesíusvæðiðPólýnesíaA" +
- "síaMið-AsíaVestur-AsíaEvrópaAustur-EvrópaNorður-EvrópaVestur-EvrópaRóman" +
- "ska Ameríka"
-
-var isRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0015, 0x0036, 0x0040, 0x0054, 0x005c, 0x0064,
- 0x006c, 0x007e, 0x0085, 0x0098, 0x00a2, 0x00b4, 0x00bf, 0x00c9,
- 0x00cf, 0x00db, 0x00e8, 0x0100, 0x0108, 0x0112, 0x0119, 0x0128,
- 0x0132, 0x0138, 0x0142, 0x0148, 0x0163, 0x0170, 0x0177, 0x0180,
- 0x0199, 0x01a2, 0x01ad, 0x01b3, 0x01bd, 0x01c5, 0x01d5, 0x01db,
- 0x01e1, 0x01f6, 0x0205, 0x021d, 0x022f, 0x0234, 0x0247, 0x0252,
- 0x0257, 0x025f, 0x0264, 0x026e, 0x027d, 0x0287, 0x028c, 0x029d,
- 0x02a4, 0x02ab, 0x02b1, 0x02ba, 0x02c5, 0x02d1, 0x02db, 0x02e3,
- // Entry 40 - 7F
- 0x02ed, 0x0305, 0x030b, 0x031b, 0x0322, 0x032a, 0x0334, 0x0341,
- 0x0349, 0x034f, 0x035a, 0x036b, 0x0373, 0x037f, 0x038d, 0x039a,
- 0x03a3, 0x03ac, 0x03b1, 0x03b9, 0x03c0, 0x03c8, 0x03d8, 0x03e0,
- 0x03e4, 0x03ee, 0x03f7, 0x03fe, 0x0404, 0x0412, 0x0422, 0x042b,
- 0x0454, 0x045d, 0x0461, 0x046e, 0x0476, 0x0498, 0x04af, 0x04b8,
- 0x04c1, 0x04c8, 0x04d4, 0x04e0, 0x04eb, 0x04f2, 0x04f9, 0x04fd,
- 0x0504, 0x051c, 0x0521, 0x0526, 0x052d, 0x0535, 0x053b, 0x0543,
- 0x054d, 0x0552, 0x0558, 0x0561, 0x056b, 0x0575, 0x0580, 0x0595,
- // Entry 80 - BF
- 0x05a3, 0x05b0, 0x05b7, 0x05c2, 0x05cb, 0x05cf, 0x05d7, 0x05e5,
- 0x05f2, 0x05fc, 0x0605, 0x060d, 0x0615, 0x061f, 0x0627, 0x062e,
- 0x0636, 0x063e, 0x0646, 0x0655, 0x065f, 0x0669, 0x0676, 0x0681,
- 0x0686, 0x0696, 0x06a0, 0x06bf, 0x06d4, 0x06dd, 0x06e8, 0x06f2,
- 0x06f7, 0x0701, 0x070d, 0x0714, 0x071c, 0x0724, 0x072e, 0x0736,
- 0x0747, 0x074d, 0x0758, 0x0761, 0x076b, 0x0772, 0x0779, 0x077e,
- 0x0784, 0x0788, 0x0796, 0x079b, 0x07a1, 0x07a6, 0x07ba, 0x07cd,
- 0x07d9, 0x07e1, 0x07e9, 0x0802, 0x0810, 0x081f, 0x0844, 0x084d,
- // Entry C0 - FF
- 0x0852, 0x085a, 0x085f, 0x086d, 0x0875, 0x087e, 0x0885, 0x088e,
- 0x0895, 0x08a2, 0x08b0, 0x08c0, 0x08c6, 0x08d1, 0x08da, 0x08e7,
- 0x08f1, 0x0908, 0x0912, 0x0920, 0x092c, 0x0933, 0x093c, 0x0945,
- 0x0952, 0x0969, 0x0974, 0x0981, 0x0989, 0x0993, 0x09a3, 0x09b8,
- 0x09bd, 0x09dc, 0x09e2, 0x09ea, 0x09f6, 0x09fe, 0x0a0a, 0x0a17,
- 0x0a1d, 0x0a22, 0x0a2a, 0x0a3f, 0x0a47, 0x0a4e, 0x0a57, 0x0a60,
- 0x0a67, 0x0a7f, 0x0a8a, 0x0a93, 0x0a9e, 0x0aa9, 0x0ac9, 0x0ad3,
- 0x0ae8, 0x0b02, 0x0b0a, 0x0b13, 0x0b2b, 0x0b31, 0x0b3a, 0x0b3f,
- // Entry 100 - 13F
- 0x0b46, 0x0b54, 0x0b5b, 0x0b63, 0x0b73, 0x0b7c, 0x0b83, 0x0b93,
- 0x0ba2, 0x0bab, 0x0bb9, 0x0bc6, 0x0bd4, 0x0be3, 0x0bef, 0x0c02,
- 0x0c0a, 0x0c22, 0x0c2f, 0x0c3b, 0x0c47, 0x0c57, 0x0c65, 0x0c71,
- 0x0c7b, 0x0c91, 0x0c9d, 0x0ca2, 0x0cac, 0x0cb8, 0x0cbf, 0x0ccd,
- 0x0cdc, 0x0cea, 0x0cfc,
-} // Size: 606 bytes
-
-var itRegionStr string = "" + // Size: 3049 bytes
- "Isola AscensioneAndorraEmirati Arabi UnitiAfghanistanAntigua e BarbudaAn" +
- "guillaAlbaniaArmeniaAntille OlandesiAngolaAntartideArgentinaSamoa americ" +
- "aneAustriaAustraliaArubaIsole ÅlandAzerbaigianBosnia ed ErzegovinaBarbad" +
- "osBangladeshBelgioBurkina FasoBulgariaBahreinBurundiBeninSaint-Barthélem" +
- "yBermudaBruneiBoliviaCaraibi OlandesiBrasileBahamasBhutanIsola BouvetBot" +
- "swanaBielorussiaBelizeCanadaIsole Cocos (Keeling)Congo - KinshasaRepubbl" +
- "ica CentrafricanaCongo-BrazzavilleSvizzeraCosta d’AvorioIsole CookCileCa" +
- "merunCinaColombiaIsola di ClippertonCosta RicaCubaCapo VerdeCuraçaoIsola" +
- " ChristmasCiproRepubblica CecaGermaniaDiego GarciaGibutiDanimarcaDominic" +
- "aRepubblica DominicanaAlgeriaCeuta e MelillaEcuadorEstoniaEgittoSahara o" +
- "ccidentaleEritreaSpagnaEtiopiaUnione EuropeaFinlandiaFigiIsole FalklandM" +
- "icronesiaIsole Fær ØerFranciaGabonRegno UnitoGrenadaGeorgiaGuyana france" +
- "seGuernseyGhanaGibilterraGroenlandiaGambiaGuineaGuadalupaGuinea Equatori" +
- "aleGreciaGeorgia del Sud e isole Sandwich australiGuatemalaGuamGuinea-Bi" +
- "ssauGuyanaRAS di Hong KongIsole Heard e McDonaldHondurasCroaziaHaitiUngh" +
- "eriaIsole CanarieIndonesiaIrlandaIsraeleIsola di ManIndiaTerritorio brit" +
- "annico dell’Oceano IndianoIraqIranIslandaItaliaJerseyGiamaicaGiordaniaGi" +
- "apponeKenyaKirghizistanCambogiaKiribatiComoreSaint Kitts e NevisCorea de" +
- "l NordCorea del SudKuwaitIsole CaymanKazakistanLaosLibanoSaint LuciaLiec" +
- "htensteinSri LankaLiberiaLesothoLituaniaLussemburgoLettoniaLibiaMaroccoM" +
- "onacoMoldaviaMontenegroSaint MartinMadagascarIsole MarshallRepubblica di" +
- " MacedoniaMaliMyanmar (Birmania)MongoliaRAS di MacaoIsole Marianne sette" +
- "ntrionaliMartinicaMauritaniaMontserratMaltaMauritiusMaldiveMalawiMessico" +
- "MalaysiaMozambicoNamibiaNuova CaledoniaNigerIsola NorfolkNigeriaNicaragu" +
- "aPaesi BassiNorvegiaNepalNauruNiueNuova ZelandaOmanPanamáPerùPolinesia f" +
- "rancesePapua Nuova GuineaFilippinePakistanPoloniaSaint Pierre e Miquelon" +
- "Isole PitcairnPortoricoTerritori palestinesiPortogalloPalauParaguayQatar" +
- "Oceania lontanaRiunioneRomaniaSerbiaRussiaRuandaArabia SauditaIsole Salo" +
- "moneSeychellesSudanSveziaSingaporeSant’ElenaSloveniaSvalbard e Jan Mayen" +
- "SlovacchiaSierra LeoneSan MarinoSenegalSomaliaSurinameSud SudanSão Tomé " +
- "e PríncipeEl SalvadorSint MaartenSiriaSwazilandTristan da CunhaIsole Tur" +
- "ks e CaicosCiadTerre australi francesiTogoThailandiaTagikistanTokelauTim" +
- "or LesteTurkmenistanTunisiaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanz" +
- "aniaUcrainaUgandaAltre isole americane del PacificoStati UnitiUruguayUzb" +
- "ekistanCittà del VaticanoSaint Vincent e GrenadinesVenezuelaIsole Vergin" +
- "i BritannicheIsole Vergini AmericaneVietnamVanuatuWallis e FutunaSamoaKo" +
- "sovoYemenMayotteSudafricaZambiaZimbabweRegione sconosciutaMondoAfricaNor" +
- "d AmericaAmerica del SudOceaniaAfrica occidentaleAmerica CentraleAfrica " +
- "orientaleNordafricaAfrica centraleAfrica del SudAmericheAmerica del Nord" +
- "CaraibiAsia orientaleAsia del SudSud-est asiaticoEuropa meridionaleAustr" +
- "alasiaMelanesiaRegione MicronesianaPolinesiaAsiaAsia centraleAsia occide" +
- "ntaleEuropaEuropa orientaleEuropa settentrionaleEuropa occidentaleAmeric" +
- "a Latina"
-
-var itRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x002a, 0x0035, 0x0046, 0x004e, 0x0055,
- 0x005c, 0x006c, 0x0072, 0x007b, 0x0084, 0x0093, 0x009a, 0x00a3,
- 0x00a8, 0x00b4, 0x00bf, 0x00d3, 0x00db, 0x00e5, 0x00eb, 0x00f7,
- 0x00ff, 0x0106, 0x010d, 0x0112, 0x0123, 0x012a, 0x0130, 0x0137,
- 0x0147, 0x014e, 0x0155, 0x015b, 0x0167, 0x016f, 0x017a, 0x0180,
- 0x0186, 0x019b, 0x01ab, 0x01c3, 0x01d4, 0x01dc, 0x01ec, 0x01f6,
- 0x01fa, 0x0201, 0x0205, 0x020d, 0x0220, 0x022a, 0x022e, 0x0238,
- 0x0240, 0x024f, 0x0254, 0x0263, 0x026b, 0x0277, 0x027d, 0x0286,
- // Entry 40 - 7F
- 0x028e, 0x02a3, 0x02aa, 0x02b9, 0x02c0, 0x02c7, 0x02cd, 0x02df,
- 0x02e6, 0x02ec, 0x02f3, 0x0301, 0x030a, 0x030e, 0x031c, 0x0326,
- 0x0335, 0x033c, 0x0341, 0x034c, 0x0353, 0x035a, 0x0369, 0x0371,
- 0x0376, 0x0380, 0x038b, 0x0391, 0x0397, 0x03a0, 0x03b2, 0x03b8,
- 0x03e1, 0x03ea, 0x03ee, 0x03fb, 0x0401, 0x0411, 0x0427, 0x042f,
- 0x0436, 0x043b, 0x0443, 0x0450, 0x0459, 0x0460, 0x0467, 0x0473,
- 0x0478, 0x04a3, 0x04a7, 0x04ab, 0x04b2, 0x04b8, 0x04be, 0x04c6,
- 0x04cf, 0x04d7, 0x04dc, 0x04e8, 0x04f0, 0x04f8, 0x04fe, 0x0511,
- // Entry 80 - BF
- 0x051f, 0x052c, 0x0532, 0x053e, 0x0548, 0x054c, 0x0552, 0x055d,
- 0x056a, 0x0573, 0x057a, 0x0581, 0x0589, 0x0594, 0x059c, 0x05a1,
- 0x05a8, 0x05ae, 0x05b6, 0x05c0, 0x05cc, 0x05d6, 0x05e4, 0x05fb,
- 0x05ff, 0x0611, 0x0619, 0x0625, 0x0642, 0x064b, 0x0655, 0x065f,
- 0x0664, 0x066d, 0x0674, 0x067a, 0x0681, 0x0689, 0x0692, 0x0699,
- 0x06a8, 0x06ad, 0x06ba, 0x06c1, 0x06ca, 0x06d5, 0x06dd, 0x06e2,
- 0x06e7, 0x06eb, 0x06f8, 0x06fc, 0x0703, 0x0708, 0x071a, 0x072c,
- 0x0735, 0x073d, 0x0744, 0x075b, 0x0769, 0x0772, 0x0787, 0x0791,
- // Entry C0 - FF
- 0x0796, 0x079e, 0x07a3, 0x07b2, 0x07ba, 0x07c1, 0x07c7, 0x07cd,
- 0x07d3, 0x07e1, 0x07ef, 0x07f9, 0x07fe, 0x0804, 0x080d, 0x0819,
- 0x0821, 0x0835, 0x083f, 0x084b, 0x0855, 0x085c, 0x0863, 0x086b,
- 0x0874, 0x088a, 0x0895, 0x08a1, 0x08a6, 0x08af, 0x08bf, 0x08d3,
- 0x08d7, 0x08ee, 0x08f2, 0x08fc, 0x0906, 0x090d, 0x0918, 0x0924,
- 0x092b, 0x0930, 0x0937, 0x0948, 0x094e, 0x0954, 0x095c, 0x0963,
- 0x0969, 0x098b, 0x0996, 0x099d, 0x09a7, 0x09ba, 0x09d4, 0x09dd,
- 0x09f6, 0x0a0d, 0x0a14, 0x0a1b, 0x0a2a, 0x0a2f, 0x0a35, 0x0a3a,
- // Entry 100 - 13F
- 0x0a41, 0x0a4a, 0x0a50, 0x0a58, 0x0a6b, 0x0a70, 0x0a76, 0x0a82,
- 0x0a91, 0x0a98, 0x0aaa, 0x0aba, 0x0aca, 0x0ad4, 0x0ae3, 0x0af1,
- 0x0af9, 0x0b09, 0x0b10, 0x0b1e, 0x0b2a, 0x0b3a, 0x0b4c, 0x0b57,
- 0x0b60, 0x0b74, 0x0b7d, 0x0b81, 0x0b8e, 0x0b9e, 0x0ba4, 0x0bb4,
- 0x0bc9, 0x0bdb, 0x0be9,
-} // Size: 606 bytes
-
-var jaRegionStr string = "" + // Size: 4839 bytes
- "アセンション島アンドラアラブ首長国連邦アフガニスタンアンティグア・バーブーダアンギラアルバニアアルメニアオランダ領アンティルアンゴラ南極アルゼン" +
- "チン米領サモアオーストリアオーストラリアアルバオーランド諸島アゼルバイジャンボスニア・ヘルツェゴビナバルバドスバングラデシュベルギーブルキナ" +
- "ファソブルガリアバーレーンブルンジベナンサン・バルテルミー島バミューダブルネイボリビアオランダ領カリブブラジルバハマブータンブーベ島ボツワナ" +
- "ベラルーシベリーズカナダココス(キーリング)諸島コンゴ民主共和国(キンシャサ)中央アフリカ共和国コンゴ共和国(ブラザビル)スイスコートジボワ" +
- "ールクック諸島チリカメルーン中国コロンビアクリッパートン島コスタリカキューバカーボベルデキュラソークリスマス島キプロスチェコ共和国ドイツディ" +
- "エゴガルシア島ジブチデンマークドミニカ国ドミニカ共和国アルジェリアセウタ・メリリャエクアドルエストニアエジプト西サハラエリトリアスペインエチ" +
- "オピア欧州連合フィンランドフィジーフォークランド諸島ミクロネシア連邦フェロー諸島フランスガボンイギリスグレナダジョージア仏領ギアナガーンジー" +
- "ガーナジブラルタルグリーンランドガンビアギニアグアドループ赤道ギニアギリシャ南ジョージア島・南サンドイッチ諸島グアテマラグアムギニアビサウガ" +
- "イアナ中華人民共和国香港特別行政区ハード島・マクドナルド諸島ホンジュラスクロアチアハイチハンガリーカナリア諸島インドネシアアイルランドイスラ" +
- "エルマン島インド英領インド洋地域イラクイランアイスランドイタリアジャージージャマイカヨルダン日本ケニアキルギスカンボジアキリバスコモロセント" +
- "クリストファー・ネイビス朝鮮民主主義人民共和国大韓民国クウェートケイマン諸島カザフスタンラオスレバノンセントルシアリヒテンシュタインスリラン" +
- "カリベリアレソトリトアニアルクセンブルグラトビアリビアモロッコモナコモルドバモンテネグロサン・マルタンマダガスカルマーシャル諸島マケドニアマ" +
- "リミャンマーモンゴル中華人民共和国マカオ特別行政区北マリアナ諸島マルティニークモーリタニアモントセラトマルタモーリシャスモルディブマラウイメ" +
- "キシコマレーシアモザンビークナミビアニューカレドニアニジェールノーフォーク島ナイジェリアニカラグアオランダノルウェーネパールナウルニウエ島ニ" +
- "ュージーランドオマーンパナマペルー仏領ポリネシアパプアニューギニアフィリピンパキスタンポーランドサンピエール島・ミクロン島ピトケアン諸島プエ" +
- "ルトリコパレスチナポルトガルパラオパラグアイカタールオセアニア周辺地域レユニオン島ルーマニアセルビアロシアルワンダサウジアラビアソロモン諸島" +
- "セーシェルスーダンスウェーデンシンガポールセントヘレナスロベニアスバールバル諸島・ヤンマイエン島スロバキアシエラレオネサンマリノセネガルソマ" +
- "リアスリナム南スーダンサントメ・プリンシペエルサルバドルシント・マールテンシリアスワジランドトリスタン・ダ・クーニャタークス・カイコス諸島チ" +
- "ャド仏領極南諸島トーゴタイタジキスタントケラウ東ティモールトルクメニスタンチュニジアトンガトルコトリニダード・トバゴツバル台湾タンザニアウク" +
- "ライナウガンダ米領太平洋諸島アメリカ合衆国ウルグアイウズベキスタンバチカン市国セントビンセント・グレナディーン諸島ベネズエラ英領ヴァージン諸" +
- "島米領ヴァージン諸島ベトナムバヌアツウォリス・フツナサモアコソボイエメンマヨット島南アフリカザンビアジンバブエ不明な地域世界アフリカ北アメリ" +
- "カ大陸南アメリカオセアニア西アフリカ中央アメリカ東アフリカ北アフリカ中部アフリカ南部アフリカアメリカ大陸北アメリカカリブ東アジア南アジア東南" +
- "アジア南ヨーロッパオーストララシアメラネシアミクロネシアポリネシアアジア中央アジア西アジアヨーロッパ東ヨーロッパ北ヨーロッパ西ヨーロッパラテ" +
- "ンアメリカ"
-
-var jaRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x0021, 0x0039, 0x004e, 0x0072, 0x007e, 0x008d,
- 0x009c, 0x00ba, 0x00c6, 0x00cc, 0x00de, 0x00ed, 0x00ff, 0x0114,
- 0x011d, 0x0132, 0x014a, 0x016e, 0x017d, 0x0192, 0x019e, 0x01b3,
- 0x01c2, 0x01d1, 0x01dd, 0x01e6, 0x0204, 0x0213, 0x021f, 0x022b,
- 0x0243, 0x024f, 0x0258, 0x0264, 0x0270, 0x027c, 0x028b, 0x0297,
- 0x02a0, 0x02c0, 0x02e9, 0x0304, 0x0327, 0x0330, 0x0348, 0x0357,
- 0x035d, 0x036c, 0x0372, 0x0381, 0x0399, 0x03a8, 0x03b4, 0x03c6,
- 0x03d5, 0x03e7, 0x03f3, 0x0405, 0x040e, 0x0429, 0x0432, 0x0441,
- // Entry 40 - 7F
- 0x0450, 0x0465, 0x0477, 0x048f, 0x049e, 0x04ad, 0x04b9, 0x04c5,
- 0x04d4, 0x04e0, 0x04ef, 0x04fb, 0x050d, 0x0519, 0x0534, 0x054c,
- 0x055e, 0x056a, 0x0573, 0x057f, 0x058b, 0x059a, 0x05a9, 0x05b8,
- 0x05c1, 0x05d3, 0x05e8, 0x05f4, 0x05fd, 0x060f, 0x061e, 0x062a,
- 0x065d, 0x066c, 0x0675, 0x0687, 0x0693, 0x06bd, 0x06e4, 0x06f6,
- 0x0705, 0x070e, 0x071d, 0x072f, 0x0741, 0x0753, 0x0762, 0x076b,
- 0x0774, 0x078c, 0x0795, 0x079e, 0x07b0, 0x07bc, 0x07cb, 0x07da,
- 0x07e6, 0x07ec, 0x07f5, 0x0801, 0x0810, 0x081c, 0x0825, 0x0852,
- // Entry 80 - BF
- 0x0873, 0x087f, 0x088e, 0x08a0, 0x08b2, 0x08bb, 0x08c7, 0x08d9,
- 0x08f4, 0x0903, 0x090f, 0x0918, 0x0927, 0x093c, 0x0948, 0x0951,
- 0x095d, 0x0966, 0x0972, 0x0984, 0x0999, 0x09ab, 0x09c0, 0x09cf,
- 0x09d5, 0x09e4, 0x09f0, 0x0a1d, 0x0a32, 0x0a47, 0x0a59, 0x0a6b,
- 0x0a74, 0x0a86, 0x0a95, 0x0aa1, 0x0aad, 0x0abc, 0x0ace, 0x0ada,
- 0x0af2, 0x0b01, 0x0b16, 0x0b28, 0x0b37, 0x0b43, 0x0b52, 0x0b5e,
- 0x0b67, 0x0b73, 0x0b8b, 0x0b97, 0x0ba0, 0x0ba9, 0x0bbe, 0x0bd9,
- 0x0be8, 0x0bf7, 0x0c06, 0x0c2d, 0x0c42, 0x0c54, 0x0c63, 0x0c72,
- // Entry C0 - FF
- 0x0c7b, 0x0c8a, 0x0c96, 0x0cb1, 0x0cc3, 0x0cd2, 0x0cde, 0x0ce7,
- 0x0cf3, 0x0d08, 0x0d1a, 0x0d29, 0x0d35, 0x0d47, 0x0d59, 0x0d6b,
- 0x0d7a, 0x0daa, 0x0db9, 0x0dcb, 0x0dda, 0x0de6, 0x0df2, 0x0dfe,
- 0x0e0d, 0x0e2b, 0x0e40, 0x0e5b, 0x0e64, 0x0e76, 0x0e9a, 0x0ebb,
- 0x0ec4, 0x0ed6, 0x0edf, 0x0ee5, 0x0ef7, 0x0f03, 0x0f15, 0x0f2d,
- 0x0f3c, 0x0f45, 0x0f4e, 0x0f6c, 0x0f75, 0x0f7b, 0x0f8a, 0x0f99,
- 0x0fa5, 0x0fba, 0x0fcf, 0x0fde, 0x0ff3, 0x1005, 0x103b, 0x104a,
- 0x1065, 0x1080, 0x108c, 0x1098, 0x10b0, 0x10b9, 0x10c2, 0x10ce,
- // Entry 100 - 13F
- 0x10dd, 0x10ec, 0x10f8, 0x1107, 0x1116, 0x111c, 0x1128, 0x113d,
- 0x114c, 0x115b, 0x116a, 0x117c, 0x118b, 0x119a, 0x11ac, 0x11be,
- 0x11d0, 0x11df, 0x11e8, 0x11f4, 0x1200, 0x120f, 0x1221, 0x1239,
- 0x1248, 0x125a, 0x1269, 0x1272, 0x1281, 0x128d, 0x129c, 0x12ae,
- 0x12c0, 0x12d2, 0x12e7,
-} // Size: 606 bytes
-
-var kaRegionStr string = "" + // Size: 9560 bytes
- "ამაღლების კუნძულიანდორაარაბთა გაერთიანებული საამიროებიავღანეთიანტიგუა და" +
- " ბარბუდაანგილიაალბანეთისომხეთინიდერლანდების ანტილებიანგოლაანტარქტიკაარგე" +
- "ნტინაამერიკის სამოაავსტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბო" +
- "სნია და ჰერცეგოვინაბარბადოსიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრე" +
- "ინიბურუნდიბენინისენ-ბართელმიბერმუდიბრუნეიბოლივიაკარიბის ნიდერლანდებიბრ" +
- "აზილიაბაჰამის კუნძულებიბჰუტანიბუვებოტსვანაბელარუსიბელიზიკანადაქოქოსის " +
- "კუნძულებიკონგო - კინშასაცენტრალური აფრიკის რესპუბლიკაკონგო - ბრაზავილი" +
- "შვეიცარიაკოტ-დივუარიკუკის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპერტონ" +
- "ის კუნძულიკოსტა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთის" +
- " რესპუბლიკაგერმანიადიეგო-გარსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკა" +
- "ალჟირისეუტა და მელილაეკვადორიესტონეთიეგვიპტედასავლეთი საჰარაერიტრეაესპ" +
- "ანეთიეთიოპიაევროკავშირიფინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის" +
- " კუნძულებისაფრანგეთიგაბონიდიდი ბრიტანეთიგრენადასაქართველოსაფრანგეთის გვი" +
- "ანაგერნსიგანაგიბრალტარიგრენლანდიაგამბიაგვინეაგვადელუპაეკვატორული გვინე" +
- "ასაბერძნეთისამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნძულებიგვატემალაგუა" +
- "მიგვინეა-ბისაუგაიანაჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთ" +
- "იჰერდი და მაკდონალდის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუ" +
- "ნძულებიინდონეზიაირლანდიაისრაელიმენის კუნძულიინდოეთიბრიტ. ტერიტ. ინდ. ო" +
- "კეანეშიერაყიირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზე" +
- "თიკამბოჯაკირიბატიკომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთი კორეას" +
- "ამხრეთი კორეაქუვეითიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხ" +
- "ტენშტაინიშრი-ლანკალიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკო" +
- "მოლდოვამონტენეგროსენ-მარტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალი" +
- "მიანმარი (ბირმა)მონღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინ" +
- "ეთიჩრდილოეთ მარიანას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკი" +
- "მალდივის რესპუბლიკამალავიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონი" +
- "ანიგერინორფოლკის კუნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურ" +
- "უნიუეახალი ზელანდიაომანიპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვი" +
- "ნეაფილიპინებიპაკისტანიპოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულები" +
- "პუერტო-რიკოპალესტინის ტერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული " +
- "ოკეანეთირეუნიონირუმინეთისერბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნ" +
- "ძულებისეიშელის კუნძულებისუდანიშვედეთისინგაპურიწმინდა ელენეს კუნძულისლო" +
- "ვენიაშპიცბერგენი და იან-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისო" +
- "მალისურინამისამხრეთი სუდანისან-ტომე და პრინსიპისალვადორისინტ-მარტენისი" +
- "რიასვაზილენდიტრისტან-და-კუნიატერქსისა და კაიკოსის კუნძულებიჩადიფრანგულ" +
- "ი სამხრეთის ტერიტორიებიტოგოტაილანდიტაჯიკეთიტოკელაუაღმოსავლეთი ტიმორითუ" +
- "რქმენეთიტუნისიტონგათურქეთიტრინიდადი და ტობაგოტუვალუტაივანიტანზანიაუკრა" +
- "ინაუგანდააშშ-ის შორეული კუნძულებიამერიკის შეერთებული შტატებიურუგვაიუზბ" +
- "ეკეთიქალაქი ვატიკანისენტ-ვინსენტი და გრენადინებივენესუელაბრიტანეთის ვი" +
- "რჯინის კუნძულებიაშშ-ის ვირჯინის კუნძულებივიეტნამივანუატუუოლისი და ფუტუ" +
- "ნასამოაკოსოვოიემენიმაიოტასამხრეთ აფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობ" +
- "ი რეგიონიმსოფლიოაფრიკაჩრდილოეთი ამერიკასამხრეთი ამერიკაოკეანეთიდასავლე" +
- "თი აფრიკაცენტრალური ამერიკააღმოსავლეთი აფრიკაჩრდილოეთი აფრიკაშუა აფრიკ" +
- "ასამხრეთი აფრიკაამერიკებიამერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთი აზი" +
- "ასამხრეთი აზიასამხრეთ-აღმოსავლეთი აზიასამხრეთი ევროპაავსტრალაზიამელანე" +
- "ზიამიკრონეზიის რეგიონიპოლინეზიააზიაცენტრალური აზიადასავლეთი აზიაევროპა" +
- "აღმოსავლეთი ევროპაჩრდილოეთი ევროპადასავლეთი ევროპალათინური ამერიკა"
-
-var kaRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0031, 0x0043, 0x009c, 0x00b4, 0x00e6, 0x00fb, 0x0113,
- 0x0128, 0x0168, 0x017a, 0x0198, 0x01b3, 0x01db, 0x01f0, 0x020b,
- 0x021a, 0x024b, 0x026c, 0x02a7, 0x02c2, 0x02e0, 0x02f2, 0x0314,
- 0x032f, 0x0347, 0x035c, 0x036e, 0x0390, 0x03a5, 0x03b7, 0x03cc,
- 0x0406, 0x041e, 0x044f, 0x0464, 0x0470, 0x0488, 0x04a0, 0x04b2,
- 0x04c4, 0x04f5, 0x051c, 0x056f, 0x059c, 0x05b7, 0x05d6, 0x0601,
- 0x060d, 0x0625, 0x0637, 0x064f, 0x0686, 0x06a2, 0x06ae, 0x06ca,
- 0x06e2, 0x0707, 0x071f, 0x0753, 0x076b, 0x078d, 0x079f, 0x07ae,
- // Entry 40 - 7F
- 0x07c6, 0x0806, 0x0818, 0x0841, 0x0859, 0x0871, 0x0886, 0x08b4,
- 0x08c9, 0x08e1, 0x08f6, 0x0917, 0x0929, 0x0935, 0x096f, 0x098d,
- 0x09be, 0x09dc, 0x09ee, 0x0a16, 0x0a2b, 0x0a49, 0x0a7d, 0x0a8f,
- 0x0a9b, 0x0ab9, 0x0ad7, 0x0ae9, 0x0afb, 0x0b16, 0x0b47, 0x0b65,
- 0x0be8, 0x0c03, 0x0c12, 0x0c34, 0x0c46, 0x0cd7, 0x0d2b, 0x0d46,
- 0x0d5e, 0x0d6d, 0x0d82, 0x0db3, 0x0dce, 0x0de6, 0x0dfb, 0x0e20,
- 0x0e35, 0x0e77, 0x0e86, 0x0e95, 0x0ead, 0x0ebf, 0x0ece, 0x0ee3,
- 0x0efb, 0x0f10, 0x0f1f, 0x0f3a, 0x0f4f, 0x0f67, 0x0f98, 0x0fce,
- // Entry 80 - BF
- 0x0ff9, 0x1021, 0x1036, 0x106a, 0x1082, 0x1091, 0x10a3, 0x10bf,
- 0x10e3, 0x10fc, 0x1111, 0x1123, 0x1132, 0x1153, 0x1165, 0x1174,
- 0x1186, 0x1198, 0x11ad, 0x11cb, 0x11ea, 0x120b, 0x123f, 0x125a,
- 0x1266, 0x1290, 0x12ab, 0x1333, 0x1380, 0x139b, 0x13b9, 0x13d4,
- 0x13e3, 0x13f8, 0x142f, 0x1441, 0x1456, 0x146e, 0x1489, 0x149e,
- 0x14c9, 0x14db, 0x150c, 0x1521, 0x153c, 0x1560, 0x1578, 0x158a,
- 0x1599, 0x15a5, 0x15cd, 0x15dc, 0x15ee, 0x15fa, 0x1637, 0x1669,
- 0x1687, 0x16a2, 0x16ba, 0x16f3, 0x172a, 0x1749, 0x1789, 0x17a7,
- // Entry C0 - FF
- 0x17b6, 0x17ce, 0x17e0, 0x180e, 0x1826, 0x183e, 0x1853, 0x1865,
- 0x1877, 0x189f, 0x18d6, 0x190a, 0x191c, 0x1931, 0x194c, 0x1987,
- 0x199f, 0x19e4, 0x19ff, 0x1a1e, 0x1a3a, 0x1a52, 0x1a64, 0x1a7c,
- 0x1aa7, 0x1add, 0x1af8, 0x1b1a, 0x1b29, 0x1b47, 0x1b73, 0x1bc7,
- 0x1bd3, 0x1c29, 0x1c35, 0x1c4d, 0x1c65, 0x1c7a, 0x1cae, 0x1ccc,
- 0x1cde, 0x1ced, 0x1d02, 0x1d37, 0x1d49, 0x1d5e, 0x1d76, 0x1d8b,
- 0x1d9d, 0x1ddf, 0x1e2c, 0x1e41, 0x1e59, 0x1e84, 0x1ed2, 0x1eed,
- 0x1f40, 0x1f85, 0x1f9d, 0x1fb2, 0x1fde, 0x1fed, 0x1fff, 0x2011,
- // Entry 100 - 13F
- 0x2023, 0x206d, 0x207f, 0x2097, 0x20bf, 0x20d4, 0x20e6, 0x2117,
- 0x2145, 0x215d, 0x218b, 0x21bf, 0x21f3, 0x2221, 0x223d, 0x2268,
- 0x2283, 0x22b7, 0x22d9, 0x2307, 0x232c, 0x2370, 0x239b, 0x23bc,
- 0x23d7, 0x240e, 0x2429, 0x2435, 0x2460, 0x2488, 0x249a, 0x24ce,
- 0x24fc, 0x252a, 0x2558,
-} // Size: 606 bytes
-
-var kkRegionStr string = "" + // Size: 6084 bytes
- "Әскенжін аралыАндорраБіріккен Араб ӘмірліктеріАуғанстанАнтигуа мен Барбу" +
- "даАнгильяАлбанияАрменияАнголаАнтарктикаАргентинаАмерикандық СамоаАвстри" +
- "яАвстралияАрубаАланд аралдарыӘзірбайжанБосния және ГерцеговинаБарбадосБ" +
- "англадешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-БартелемиБерм" +
- "уд аралдарыБрунейБоливияКариб НидерландысыБразилияБагам аралдарыБутанБу" +
- "ве аралыБотсванаБеларусьБелизКанадаКокос (Килинг) аралдарыКонгоОрталық " +
- "Африка РеспубликасыКонго-Браззавиль РеспубликасыШвейцарияКот-д’ИвуарКук" +
- " аралдарыЧилиКамерунҚытайКолумбияКлиппертон аралыКоста-РикаКубаКабо-Верд" +
- "еКюрасаоКристмас аралыКипрЧех РеспубликасыГерманияДиего-ГарсияДжибутиДа" +
- "нияДоминикаДоминикан РеспубликасыАлжирСеута мен МелильяЭквадорЭстонияМы" +
- "сырБатыс СахараЭритреяИспанияЭфиопияЕуропалық ОдақФинляндияФиджиФолклен" +
- "д аралдарыМикронезияФарер аралдарыФранцияГабонБіріккен КорольдікГренада" +
- "ГрузияФранцуз ГвианасыГернсиГанаГибралтарГренландияГамбияГвинеяГваделуп" +
- "аЭкваторлық ГвинеяГрецияОңтүстік Георгия және Оңтүстік Сандвич аралдары" +
- "ГватемалаГуамГвинея-БисауГайанаҚытай Халық Республикасының Гонг-Конг ар" +
- "найы әкімшілік ауданыХерд аралы мен Макдональд аралдарыГондурасХорватия" +
- "ГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн аралыҮндістанҮнді" +
- " мұхитындағы Британ аймағыИракИранИсландияИталияДжерсиЯмайкаИорданияЖапо" +
- "нияКенияҚырғызстанКамбоджаКирибатиКоморСент-Китс және НевисОңтүстік Кор" +
- "еяСолтүстік КореяКувейтКайман аралдарыҚазақстанЛаосЛиванСент-ЛюсияЛихте" +
- "нштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМороккоМонакоМолд" +
- "оваЧерногорияСен-МартенМадагаскарМаршалл аралдарыМакедонияМалиМьянма (Б" +
- "ирма)МоңғолияҚытай Халық Республикасының Макао арнайы әкімшілік ауданыС" +
- "олтүстік Мариан аралдарыМартиникаМавританияМонтсерратМальтаМаврикийМаль" +
- "див РеспубликасыМалавиМексикаМалайзияМозамбикНамибияЖаңа КаледонияНигер" +
- "Норфолк аралыНигерияНикарагуаНидерландНорвегияНепалНауруНиуэЖаңа Зеланд" +
- "ияОманПанамаПеруФранцуз ПолинезиясыПапуа — Жаңа ГвинеяФилиппинПәкістанП" +
- "ольшаСен-Пьер және МикелонПиткэрн аралдарыПуэрто-РикоПалестина аймақтар" +
- "ыПортугалияПалауПарагвайКатарАлыс ОкеанияРеюньонРумынияСербияРесейРуанд" +
- "аСауд АрабиясыСоломон аралдарыСейшель аралдарыСуданШвецияСингапурӘулие " +
- "Елена аралыСловенияШпицберген мен Ян-МайенСловакияСьерра-ЛеонеСан-Марин" +
- "оСенегалСомалиСуринамОңтүстік СуданСан-Томе мен ПринсипиСальвадорСинт-М" +
- "артенСирияСвазилендТристан-да-КуньяТеркс және Кайкос аралдарыЧадФранция" +
- "ның оңтүстік аймақтарыТогоТайландТәжікстанТокелауТимор-ЛестеТүрікменста" +
- "нТунисТонгаТүркияТринидад пен ТобагоТувалуТайваньТанзанияУкраинаУгандаА" +
- "ҚШ-тың сыртқы кіші аралдарыАҚШУругвайӨзбекстанВатиканСент-Винсент және " +
- "Гренадин аралдарыВенесуэлаБритандық Виргин аралдарыАҚШ-тың Виргин аралд" +
- "арыВьетнамВануатуУоллис пен ФутунаСамоаКосовоЙеменМайоттаОңтүстік Африк" +
- "а РеспубликасыЗамбияЗимбабвеБелгісіз аймақӘлемАфрикаСолтүстік АмерикаОң" +
- "түстік АмерикаОкеанияБатыс АфрикаОрталық АмерикаШығыс АфрикаСолтүстік А" +
- "фрикаОрталық АфрикаОңтүстік АфрикаСолтүстік және Оңтүстік АмерикаАмерик" +
- "аның солтүстігіКарибШығыс АзияОңтүстік АзияОңтүстік-шығыс АзияОңтүстік " +
- "ЕуропаАвстралазияМеланезияМикронезия аймағыПолинезияАзияОрталық АзияБат" +
- "ыс АзияЕуропаШығыс ЕуропаСолтүстік ЕуропаБатыс ЕуропаЛатын Америкасы"
-
-var kkRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0029, 0x0059, 0x006b, 0x008f, 0x009d, 0x00ab,
- 0x00b9, 0x00b9, 0x00c5, 0x00d9, 0x00eb, 0x010c, 0x011a, 0x012c,
- 0x0136, 0x0151, 0x0165, 0x0191, 0x01a1, 0x01b3, 0x01c1, 0x01d8,
- 0x01e8, 0x01f6, 0x0204, 0x020e, 0x0227, 0x0244, 0x0250, 0x025e,
- 0x0281, 0x0291, 0x02ac, 0x02b6, 0x02c9, 0x02d9, 0x02e9, 0x02f3,
- 0x02ff, 0x0329, 0x0333, 0x0367, 0x039f, 0x03b1, 0x03c7, 0x03de,
- 0x03e6, 0x03f4, 0x03fe, 0x040e, 0x042d, 0x0440, 0x0448, 0x045b,
- 0x0469, 0x0484, 0x048c, 0x04ab, 0x04bb, 0x04d2, 0x04e0, 0x04ea,
- // Entry 40 - 7F
- 0x04fa, 0x0525, 0x052f, 0x054f, 0x055d, 0x056b, 0x0575, 0x058c,
- 0x059a, 0x05a8, 0x05b6, 0x05d1, 0x05e3, 0x05ed, 0x060e, 0x0622,
- 0x063d, 0x064b, 0x0655, 0x0678, 0x0686, 0x0692, 0x06b1, 0x06bd,
- 0x06c5, 0x06d7, 0x06eb, 0x06f7, 0x0703, 0x0715, 0x0736, 0x0742,
- 0x079b, 0x07ad, 0x07b5, 0x07cc, 0x07d8, 0x084b, 0x088b, 0x089b,
- 0x08ab, 0x08b5, 0x08c3, 0x08de, 0x08f0, 0x0900, 0x090e, 0x091f,
- 0x092f, 0x0968, 0x0970, 0x0978, 0x0988, 0x0994, 0x09a0, 0x09ac,
- 0x09bc, 0x09ca, 0x09d4, 0x09e8, 0x09f8, 0x0a08, 0x0a12, 0x0a37,
- // Entry 80 - BF
- 0x0a52, 0x0a6f, 0x0a7b, 0x0a98, 0x0aaa, 0x0ab2, 0x0abc, 0x0acf,
- 0x0ae5, 0x0af6, 0x0b04, 0x0b10, 0x0b1a, 0x0b2e, 0x0b3a, 0x0b44,
- 0x0b52, 0x0b5e, 0x0b6c, 0x0b80, 0x0b93, 0x0ba7, 0x0bc6, 0x0bd8,
- 0x0be0, 0x0bf9, 0x0c09, 0x0c75, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cdf,
- 0x0ceb, 0x0cfb, 0x0d22, 0x0d2e, 0x0d3c, 0x0d4c, 0x0d5c, 0x0d6a,
- 0x0d85, 0x0d8f, 0x0da8, 0x0db6, 0x0dc8, 0x0dda, 0x0dea, 0x0df4,
- 0x0dfe, 0x0e06, 0x0e1f, 0x0e27, 0x0e33, 0x0e3b, 0x0e60, 0x0e84,
- 0x0e94, 0x0ea4, 0x0eb0, 0x0ed7, 0x0ef6, 0x0f0b, 0x0f30, 0x0f44,
- // Entry C0 - FF
- 0x0f4e, 0x0f5e, 0x0f68, 0x0f7f, 0x0f8d, 0x0f9b, 0x0fa7, 0x0fb1,
- 0x0fbd, 0x0fd6, 0x0ff5, 0x1014, 0x101e, 0x102a, 0x103a, 0x105a,
- 0x106a, 0x1095, 0x10a5, 0x10bc, 0x10cf, 0x10dd, 0x10e9, 0x10f7,
- 0x1112, 0x1139, 0x114b, 0x1160, 0x116a, 0x117c, 0x119a, 0x11cb,
- 0x11d1, 0x1209, 0x1211, 0x121f, 0x1231, 0x123f, 0x1254, 0x126c,
- 0x1276, 0x1280, 0x128c, 0x12b0, 0x12bc, 0x12ca, 0x12da, 0x12e8,
- 0x12f4, 0x1328, 0x132e, 0x133c, 0x134e, 0x135c, 0x139e, 0x13b0,
- 0x13e0, 0x140b, 0x1419, 0x1427, 0x1447, 0x1451, 0x145d, 0x1467,
- // Entry 100 - 13F
- 0x1475, 0x14ab, 0x14b7, 0x14c7, 0x14e2, 0x14ea, 0x14f6, 0x1517,
- 0x1536, 0x1544, 0x155b, 0x1578, 0x158f, 0x15ae, 0x15c9, 0x15e6,
- 0x1621, 0x164a, 0x1654, 0x1667, 0x1680, 0x16a4, 0x16c1, 0x16d7,
- 0x16e9, 0x170a, 0x171c, 0x1724, 0x173b, 0x174e, 0x175a, 0x1771,
- 0x1790, 0x17a7, 0x17c4,
-} // Size: 606 bytes
-
-var kmRegionStr string = "" + // Size: 9048 bytes
- "កោះ\u200bអាសេនសិនអង់ដូរ៉ាអារ៉ាប់រួមអាហ្វហ្គានីស្ថានអង់ទីគ័រ និង\u200bបាប" +
- "ុយដាអង់កូឡាអាល់បានីអារមេនីអង់ហ្គោឡាអង់តាក់ទិកអាហ្សង់ទីនសាម៉ូអាអាមេរិកអ" +
- "ូទ្រីសអូស្ត្រាលីអារូបាកោះ\u200bអាឡាំងអាហ៊្សែរបែហ្សង់បូស្នី និងហឺហ្សីហ្" +
- "គូវីណាបារបាដូសបង់ក្លាដេស្ហបែលហ្ស៉ិកប៊ូរគីណាហ្វាសូប៊ុលហ្គារីបារ៉ែនប៊ូរុ" +
- "នឌីបេណាំងសង់ បាតេឡេម៉ីប៊ឺមុយដាប្រ៊ុយណេបូលីវីហុល្លង់ ការ៉ាប៊ីនប្រេស៊ីលប" +
- "ាហាម៉ាប៊ូតានកោះ\u200bប៊ូវ៉េតបុតស្វាណាបេឡារុស្សបេលីហ្សកាណាដាកោះ\u200bកូ" +
- "កូសកុងហ្គោ- គីនស្ហាសាសាធារណរដ្ឋអាហ្វ្រិកកណ្ដាលកុងហ្គោ - ប្រាហ្សាវីលស្វ" +
- "ីសកូដឌីវ័រកោះ\u200bខូកស៊ីលីកាមេរូនចិនកូឡុំប៊ីកោះ\u200bឃ្លីភឺតុនកូស្តារ" +
- "ីកាគុយបាកាបវែរកូរ៉ាកៅកោះ\u200bគ្រីស្មាសស៊ីពរ៍សាធារណរដ្ឋឆេកអាល្លឺម៉ង់ឌៀ" +
- "ហ្គោហ្គាស៊ីហ្ស៊ីបូទីដាណឺម៉ាកដូមីនីកាសាធារណរដ្ឋដូមីនីកែនអាល់ហ្សេរីជឺតា " +
- "និង\u200bម៉េលីឡាអេក្វាឌ័រអេស្តូនីអេហ្ស៊ីបសាហារ៉ាខាងលិចអេរីទ្រាអេស្ប៉ាញ" +
- "អេត្យូពីសហភាព\u200bអឺរ៉ុបហ្វាំងឡង់ហ្វីជីកោះ\u200bហ្វក់ឡែនមីក្រូនេស៊ីកោ" +
- "ះ\u200bហ្វារ៉ូបារាំងហ្គាបុងចក្រភព\u200bអង់គ្លេសហ្គ្រីណាដាហ្សកហ្ស៉ីហ្គៀ" +
- "ណាបារាំងហ្គេនស៊ីហ្គាណាហ្គីប្រាលតាហ្គ្រោអង់ឡង់ហ្គាំប៊ីហ្គីណេហ្គោដឺឡុបហ្" +
- "គីណេអេក្វាទ័រក្រិចកោះ\u200bហ្សកហ្ស៊ី\u200bខាង\u200bត្បូង និង\u200bសាន់" +
- "វិច\u200bខាង\u200bត្បូងហ្គាតេម៉ាឡាហ្គាំហ្គីណេប៊ីសូហ្គីយ៉ាណាហុងកុងកោះ" +
- "\u200bហឺដ និង\u200bម៉ាក់ដូណាល់ហុងឌួរ៉ាស់ក្រូអាតហៃទីហុងគ្រីកោះ\u200bកាណារ" +
- "ីឥណ្ឌូណេស៊ីអៀរឡង់អ៊ីស្រាអែលអែលអុហ្វមែនឥណ្ឌាដែន\u200bមហា\u200bសមុទ្រ" +
- "\u200bឥណ្ឌា ចក្រភព\u200bអង់គ្លេសអ៊ីរ៉ាក់អ៊ីរ៉ង់អ៊ីស្លង់អ៊ីតាលីជឺស៊ីចាម៉ៃ" +
- "កាហ៊្សកដានីជប៉ុនកេនយ៉ាគៀរហ្គីស្តង់កម្ពុជាគិរិបាទីកុំម៉ូរ៉ូសសង់ឃីត និង" +
- "\u200bណេវីសកូរ៉េ\u200bខាង\u200bជើងកូរ៉េ\u200bខាង\u200bត្បូងគុយវ៉ែតកោះ" +
- "\u200bកៃម៉ង់កាហ្សាក់ស្តង់់ឡាវលីបង់សង់\u200bលូសៀលិចទេនស្តែនស្រីលង្កាលីបេរ" +
- "ីយ៉ាលើសូតូលីទុយអានីលុចហ្សំបួរឡាតវីយ៉ាលីប៊ីម៉ារ៉ុកម៉ូណាកូសាធារណរដ្ឋម៉ុល" +
- "ដាវីម៉ុងតេណេហ្គ្រោសង់\u200bម៉ាទីនម៉ាដាហ្កាស្ការកោះ\u200bម៉ាស់សលម៉ាសេដូ" +
- "នាម៉ាលីមីយ៉ាន់ម៉ា (ភូមា)ម៉ុងហ្គោលីម៉ាកាវកោះ\u200bម៉ារីណា\u200bខាង" +
- "\u200bជើងម៉ាទីនីកម៉ូរីតានីម៉ុង\u200bសេរ៉ង់ម៉ាល់តាម៉ូរីទុសម៉ាល់ឌីវម៉ាឡាវី" +
- "ម៉ិចសិកម៉ាឡេស៊ីម៉ូហ្សាំប៊ិកណាមីប៊ីញូកាឡេដូនៀនីហ្សេរកោះ\u200bណ័រហ្វក់នី" +
- "ហ្សេរីយ៉ានីការ៉ាហ្គ័រហុល្លង់ន័រវែសនេប៉ាល់ណូរូណៀនូវែលហ្សេឡង់អូម៉ង់ប៉ាណា" +
- "ម៉ាប៉េរូប៉ូលី\u200bណេស៊ី\u200bបារាំងប៉ាពួញ៉ូហ្គីណេហ្វីលីពីនប៉ាគីស្ថានប" +
- "៉ូឡូញសង់ព្យែរ និង\u200bមីគីឡុងកោះ\u200bភីតខារិនព័រតូរីកូដែន\u200bប៉ាលេ" +
- "ស្ទីនព័រទុយហ្កាល់ផៅឡូប៉ារ៉ាហ្គាយកាតាតំបន់ជាយអូសេអានីរ៉េអ៊ុយ៉ុងរូម៉ានីស" +
- "៊ែបរុស្ស៊ីរវ៉ាន់ដាអារ៉ាប៊ីសាអ៊ូឌីតកោះ\u200bស៊ូឡូម៉ុងសីសែលស៊ូដង់ស៊ុយអែដ" +
- "សិង្ហបុរីសង់\u200bហេឡេណាស្លូវេនីស្វាប៊ឺត និង\u200bហ្យង់ម៉ាយេនស្លូវ៉ាគី" +
- "សេរ៉ាឡេអូនសាន\u200bម៉ារីណូសេនេហ្កាល់សូម៉ាលីសូរីណាមស៊ូដង់\u200bខាង" +
- "\u200bត្បូងសៅ\u200bតូមេ និង\u200bព្រីនស៊ីប៉េអែលសាល់វ៉ាឌ័រសីង\u200bម៉ាធីន" +
- "ស៊ីរីស្វាហ្ស៊ីឡង់ទ្រីស្តង់\u200bដា\u200bចូនហាកោះ\u200bកៃកូស និងទូកឆាដដ" +
- "ែន\u200bបារាំង\u200bខាង\u200bត្បូងតូហ្គោថៃតាជីគីស្តង់តូខេឡៅទីម័រទួគមេន" +
- "ីស្តង់ទុយនេស៊ីតុងហ្គាទួរគីទ្រីនីដាត និង\u200bតូបាហ្គោទូវ៉ាលូតៃវ៉ាន់តង់" +
- "ហ្សានីអ៊ុយក្រែនអ៊ូហ្កង់ដាកោះ\u200bអៅឡាយីង\u200bអាមេរិកសហរដ្ឋអាមេរិកអ៊ុ" +
- "យរ៉ាហ្គាយអ៊ូហ្សបេគីស្តង់ទីក្រុងវ៉ាទីកង់សាំង\u200bវីនសេន និង\u200bឌឹ" +
- "\u200bហ្គ្រីណាឌីនីសវេនេហ្ស៊ុយឡាកោះ\u200bវឺជិន\u200bចក្រភព\u200bអង់គ្លេសក" +
- "ោះ\u200bវឺជីន\u200bអាមេរិកវៀតណាមវ៉ានូអាទូវ៉ាលីស និង\u200bហ្វូទូណាសា" +
- "\u200bម៉ូអាកូសូវ៉ូយេមែនម៉ាយុតអាហ្វ្រិកខាងត្បូងហ្សាំប៊ីហ្ស៊ីមបាវ៉េតំបន់មិ" +
- "នស្គាល់ពិភពលោកអាហ្វ្រិកអាមេរិក\u200bខាង\u200bជើងអាមេរិក\u200bខាង\u200b" +
- "ត្បូងអូសេអានីអាហ្វ្រិក\u200bខាង\u200bលិចអាមេរិក\u200bកណ្ដាលអាហ្វ្រិកខា" +
- "ងកើតអាហ្វ្រិក\u200bខាង\u200bជើងអាហ្វ្រិក\u200bកណ្តាលអាហ្វ្រិកភាគខាងត្ប" +
- "ូងអាមេរិកអាមេរិក\u200bភាគ\u200bខាង\u200bជើងការ៉ាប៊ីនអាស៊ី\u200bខាង" +
- "\u200bកើតអាស៊ី\u200bខាង\u200bត្បូងអាស៊ីអាគ្នេយ៍អឺរ៉ុប\u200bខាង\u200bត្បូ" +
- "ងអូស្ត្រាឡាស៊ីមេឡាណេស៊ីតំបន់\u200bមីក្រូណេស៊ីប៉ូលីណេស៊ីអាស៊ីអាស៊ី" +
- "\u200bកណ្ដាលអាស៊ី\u200bខាង\u200bលិចអឺរ៉ុបអឺរ៉ុប\u200bខាង\u200bកើតអឺរ៉ុប" +
- "\u200bខាង\u200bជើងអឺរ៉ុប\u200bខាង\u200bលិចអាមេរិក\u200bឡាទីន"
-
-var kmRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0024, 0x003c, 0x005a, 0x008a, 0x00c4, 0x00d9, 0x00f1,
- 0x0106, 0x0106, 0x0121, 0x013f, 0x015d, 0x0187, 0x019c, 0x01ba,
- 0x01cc, 0x01ea, 0x0217, 0x025d, 0x0275, 0x0299, 0x02b4, 0x02de,
- 0x02fc, 0x030e, 0x0326, 0x0338, 0x035d, 0x0375, 0x038d, 0x039f,
- 0x03d0, 0x03e8, 0x03fd, 0x040f, 0x0430, 0x044b, 0x0466, 0x047b,
- 0x048d, 0x04a8, 0x04da, 0x0525, 0x055e, 0x056d, 0x0585, 0x059a,
- 0x05a9, 0x05be, 0x05c7, 0x05df, 0x0606, 0x0624, 0x0633, 0x0645,
- 0x065a, 0x0681, 0x0693, 0x06ba, 0x06d8, 0x06ff, 0x071a, 0x0732,
- // Entry 40 - 7F
- 0x074a, 0x0783, 0x07a1, 0x07cf, 0x07ea, 0x0802, 0x081a, 0x0841,
- 0x0859, 0x0871, 0x0889, 0x08ad, 0x08c8, 0x08da, 0x08fe, 0x091f,
- 0x0940, 0x0952, 0x0967, 0x0994, 0x09b2, 0x09cd, 0x09f1, 0x0a09,
- 0x0a1b, 0x0a3c, 0x0a60, 0x0a78, 0x0a8a, 0x0aa5, 0x0ad2, 0x0ae1,
- 0x0b66, 0x0b87, 0x0b96, 0x0bb7, 0x0bd2, 0x0be4, 0x0c27, 0x0c45,
- 0x0c5a, 0x0c66, 0x0c7b, 0x0c99, 0x0cb7, 0x0cc9, 0x0ce7, 0x0d08,
- 0x0d17, 0x0d81, 0x0d99, 0x0dae, 0x0dc6, 0x0ddb, 0x0dea, 0x0dff,
- 0x0e1a, 0x0e29, 0x0e3b, 0x0e5f, 0x0e74, 0x0e8c, 0x0eaa, 0x0ed8,
- // Entry 80 - BF
- 0x0eff, 0x0f2c, 0x0f41, 0x0f5f, 0x0f89, 0x0f92, 0x0fa1, 0x0fb9,
- 0x0fda, 0x0ff5, 0x1010, 0x1022, 0x103d, 0x105b, 0x1073, 0x1082,
- 0x1097, 0x10ac, 0x10e2, 0x110c, 0x112a, 0x1154, 0x1175, 0x1190,
- 0x119f, 0x11cc, 0x11ea, 0x11fc, 0x1235, 0x124d, 0x1268, 0x1289,
- 0x129e, 0x12b6, 0x12ce, 0x12e3, 0x12f8, 0x1310, 0x1334, 0x1349,
- 0x1367, 0x137c, 0x13a0, 0x13c1, 0x13e5, 0x13fa, 0x140c, 0x1421,
- 0x142d, 0x1433, 0x1457, 0x1469, 0x1481, 0x1490, 0x14c6, 0x14f0,
- 0x150b, 0x1529, 0x153b, 0x1575, 0x1599, 0x15b4, 0x15de, 0x1602,
- // Entry C0 - FF
- 0x160e, 0x162f, 0x163b, 0x166b, 0x1689, 0x169e, 0x16aa, 0x16bf,
- 0x16d7, 0x1707, 0x172e, 0x173d, 0x174f, 0x1764, 0x177f, 0x179d,
- 0x17b5, 0x17fb, 0x1816, 0x1834, 0x1855, 0x1873, 0x1888, 0x189d,
- 0x18cd, 0x1910, 0x1937, 0x1955, 0x1964, 0x1988, 0x19be, 0x19ec,
- 0x19f5, 0x1a31, 0x1a43, 0x1a49, 0x1a6a, 0x1a7c, 0x1a8b, 0x1aaf,
- 0x1ac7, 0x1adc, 0x1aeb, 0x1b2b, 0x1b40, 0x1b55, 0x1b70, 0x1b8b,
- 0x1ba9, 0x1be2, 0x1c09, 0x1c2d, 0x1c5a, 0x1c87, 0x1ce5, 0x1d09,
- 0x1d54, 0x1d87, 0x1d99, 0x1db4, 0x1deb, 0x1e03, 0x1e18, 0x1e27,
- // Entry 100 - 13F
- 0x1e39, 0x1e6c, 0x1e84, 0x1ea5, 0x1ecf, 0x1ee4, 0x1eff, 0x1f2c,
- 0x1f5f, 0x1f77, 0x1faa, 0x1fd4, 0x2001, 0x2034, 0x2064, 0x20a0,
- 0x20b5, 0x20ee, 0x2109, 0x2130, 0x215d, 0x2184, 0x21b4, 0x21db,
- 0x21f6, 0x2229, 0x2247, 0x2256, 0x227a, 0x22a1, 0x22b3, 0x22dd,
- 0x2307, 0x2331, 0x2358,
-} // Size: 606 bytes
-
-var knRegionStr string = "" + // Size: 9427 bytes
- "ಅಸೆನ್ಶನ್ ದ್ವೀಪಅಂಡೋರಾಸಂಯುಕ್ತ ಅರಬ್ ಎಮಿರೇಟಸ್ಅಫಘಾನಿಸ್ಥಾನ್ಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್ಬ" +
- "ುಡಾಆಂಗುಯಿಲ್ಲಾಅಲ್ಬೇನಿಯಾಅರ್ಮೇನಿಯಾನೆದರ್\u200cಲ್ಯಾಂಡ್ಅಂಗೋಲಾಅಂಟಾರ್ಟಿಕಾಅರ್ಜೆ" +
- "ಂಟಿನಾಅಮೇರಿಕನ್ ಸಮೋವಾಆಸ್ಟ್ರಿಯಾಆಸ್ಟ್ರೇಲಿಯಅರುಬಾಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಅಜರ್ಬೈಜಾನ್" +
- "ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ್ಜೆಗೋವಿನಾಬಾರ್ಬಡೋಸ್ಬಾಂಗ್ಲಾದೇಶ್ಬೆಲ್ಜಿಯಮ್ಬುರ್ಕಿನಾ ಫಾಸೋಬಲ" +
- "್ಗೇರಿಯಾಬಹರೈನ್ಬುರುಂಡಿಬೆನಿನ್ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿಬರ್ಮುಡಾಬ್ರೂನಿಬೊಲಿವಿಯಾಕೆರೀಬಿಯ" +
- "ನ್ ನೆದರ್\u200cಲ್ಯಾಂಡ್ಸ್ಬ್ರೆಜಿಲ್ಬಹಾಮಾಸ್ಭೂತಾನ್ಬೋವೆಟ್ ದ್ವೀಪಬೋಟ್ಸ್\u200cವಾ" +
- "ನಾಬೆಲಾರಸ್ಬೆಲಿಜ್ಕೆನಡಾಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳುಕಾಂಗೋ - ಕಿನ್ಶಾಸಾಮಧ್ಯ ಆಫ್ರ" +
- "ಿಕಾ ಗಣರಾಜ್ಯಕಾಂಗೋ - ಬ್ರಾಜಾವಿಲ್ಲೇಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ಕೋತ್\u200c ದಿವಾರ್\u200d" +
- "ಕುಕ್ ದ್ವೀಪಗಳುಚಿಲಿಕ್ಯಾಮರೋನ್ಚೀನಾಕೊಲಂಬಿಯಾಕ್ಲಿಪ್ಪರ್\u200cಟಾನ್ ದ್ವೀಪಗಳುಕೊಸ್" +
- "ಟಾ ರಿಕಾಕ್ಯೂಬಾಕೇಪ್ ವರ್ಡೆಕುರಾಕಾವ್ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪಸೈಪ್ರಸ್ಚೆಕ್ ರಿಪಬ್ಲಿಕ್ಜರ್" +
- "ಮನಿಡೈಗೋ ಗಾರ್ಸಿಯಜಿಬೋಟಿಡೆನ್ಮಾರ್ಕ್ಡೊಮಿನಿಕಾಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ಅಲ್ಗೇರಿಯಾಸೆಯ" +
- "ುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾಈಕ್ವೆಡಾರ್ಎಸ್ಟೋನಿಯಾಈಜಿಪ್ಟ್ಪಶ್ಚಿಮ ಸಹಾರಾಏರಿಟ್ರಿಯಾಸ್ಪೇನ್ಇ" +
- "ಥಿಯೋಪಿಯಾಯುರೋಪಿಯನ್ ಯೂನಿಯನ್ಫಿನ್\u200cಲ್ಯಾಂಡ್ಫಿಜಿಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀ" +
- "ಪಗಳುಮೈಕ್ರೋನೇಶಿಯಾಫರೋ ದ್ವೀಪಗಳುಫ್ರಾನ್ಸ್ಗೆಬೊನ್ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ಗ್ರೆನೆಡಾಜಾರ" +
- "್ಜಿಯಾಫ್ರೆಂಚ್ ಗಯಾನಾಗುರ್ನ್\u200cಸೆಘಾನಾಗಿಬ್ರಾಲ್ಟರ್ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ಗ್ಯಾ" +
- "ಂಬಿಯಾಗಿನಿಗುಡೆಲೋಪ್ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿಗ್ರೀಸ್ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ" +
- "್ಯಾಂಡ್\u200dವಿಚ್ ದ್ವೀಪಗಳುಗ್ವಾಟೆಮಾಲಾಗುಯಾಮ್ಗಿನಿ-ಬಿಸ್ಸಾವ್ಗಯಾನಾಹಾಂಗ್ ಕಾಂಗ್" +
- " SAR ಚೈನಾಹರ್ಡ್ ದ್ವೀಪ ಮತ್ತು ಮ್ಯಾಕ್\u200dಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳುಹೊಂಡುರಾಸ್ಕ್ರೊಯೇಶ" +
- "ಿಯಾಹೈಟಿಹಂಗಾರಿಕ್ಯಾನರಿ ದ್ವೀಪಗಳುಇಂಡೋನೇಶಿಯಾಐರ್ಲೆಂಡ್ಇಸ್ರೇಲ್ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ಭಾ" +
- "ರತಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶಇರಾಕ್ಇರಾನ್ಐಸ್\u200cಲ್ಯಾಂಡ್ಇಟಲಿಜೆರ್ಸಿಜ" +
- "ಮೈಕಾಜೋರ್ಡಾನ್ಜಪಾನ್ಕೀನ್ಯಾಕಿರ್ಗಿಸ್ಥಾನ್ಕಾಂಬೋಡಿಯಾಕಿರಿಬಾತಿಕೊಮೊರೊಸ್ಸೇಂಟ್ ಕಿಟ್" +
- "ಸ್ ಮತ್ತು ನೆವಿಸ್ಉತ್ತರ ಕೋರಿಯಾದಕ್ಷಿಣ ಕೋರಿಯಾಕುವೈತ್ಕೇಮನ್ ದ್ವೀಪಗಳುಕಝಾಕಿಸ್ಥಾನ" +
- "್ಲಾವೋಸ್ಲೆಬನಾನ್ಸೇಂಟ್ ಲೂಸಿಯಾಲಿಚೆನ್\u200cಸ್ಟೈನ್ಶ್ರೀಲಂಕಾಲಿಬೇರಿಯಾಲೆಸೊಥೋಲಿಥು" +
- "ವೇನಿಯಾಲಕ್ಸಂಬರ್ಗ್ಲಾಟ್ವಿಯಾಲಿಬಿಯಾಮೊರಾಕ್ಕೊಮೊನಾಕೊಮೊಲ್ಡೋವಾಮೊಂಟೆನೆಗ್ರೋಸೇಂಟ್ ಮ" +
- "ಾರ್ಟಿನ್ಮಡಗಾಸ್ಕರ್ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳುಮ್ಯಾಸಿಡೋನಿಯಾಮಾಲಿಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)ಮೊಂಗೋಲ" +
- "ಿಯಾಮಖಾವ್ (SAR) ಚೈನಾಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳುಮಾರ್ಟಿನಿಕ್ಮಾರಿಟೇನಿಯಾಮಾಂಟ್" +
- "\u200cಸೆರೇಟ್ಮಾಲ್ಟಾಮಾರಿಶಿಯಸ್ಮಾಲ್ಡಿವ್ಸ್ಮಲಾವಿಮೆಕ್ಸಿಕೊಮಲೇಶಿಯಾಮೊಜಾಂಬಿಕ್ನಮೀಬಿಯ" +
- "ಾನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾನೈಜರ್ನಾರ್ಫೋಕ್ ದ್ವೀಪನೈಜೀರಿಯಾನಿಕಾರಾಗುವಾನೆದರ್\u200cಲ್ಯಾ" +
- "ಂಡ್ಸ್ನಾರ್ವೇನೇಪಾಳನೌರುನಿಯುನ್ಯೂಜಿಲೆಂಡ್ಓಮನ್ಪನಾಮಾಪೆರುಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾಪಪುವ" +
- "ಾ ನ್ಯೂಗಿನಿಯಾಫಿಲಿಫೈನ್ಸ್ಪಾಕಿಸ್ತಾನಪೋಲ್ಯಾಂಡ್ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್ಪಿಟ್" +
- "\u200cಕೈರ್ನ್ ದ್ವೀಪಗಳುಪ್ಯೂರ್ಟೋ ರಿಕೊಪ್ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶಪೋರ್ಚುಗಲ್ಪಲಾವುಪರ" +
- "ಾಗ್ವೇಖತಾರ್ಔಟ್ ಲೈಯಿಂಗ್ ಓಷಿಯಾನಿಯಾರೀಯೂನಿಯನ್ರೊಮೇನಿಯಾಸೆರ್ಬಿಯಾರಷ್ಯಾರುವಾಂಡಾಸೌ" +
- "ದಿ ಅರೇಬಿಯಾಸೊಲೊಮನ್ ದ್ವೀಪಗಳುಸೀಶೆಲ್ಲೆಸ್ಸೂಡಾನ್ಸ್ವೀಡನ್ಸಿಂಗಾಪುರ್ಸೇಂಟ್ ಹೆಲೆನಾ" +
- "ಸ್ಲೋವೇನಿಯಾಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು ಜಾನ್ ಮೆಯನ್ಸ್ಲೋವೇಕಿಯಾಸಿಯೆರ್ರಾ ಲಿಯೋನ್ಸ್ಯಾನ್" +
- " ಮೆರಿನೋಸೆನೆಗಲ್ಸೊಮಾಲಿಯಾಸುರಿನಾಮದಕ್ಷಿಣ ಸೂಡಾನ್ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿಎಲ್ " +
- "ಸಾಲ್ವೇಡಾರ್ಸಿಂಟ್ ಮಾರ್ಟೆನ್ಸಿರಿಯಾಸ್ವಾಜಿಲ್ಯಾಂಡ್ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾಟರ್ಕ್ಸ್ " +
- "ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳುಚಾದ್ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳುಟೋಗೋಥೈಲ್ಯಾಂಡ್ತಜಾಕಿಸ್ಥ" +
- "ಾನ್ಟೊಕೆಲಾವ್ಪೂರ್ವ ತಿಮೋರ್ತುರ್ಕ್ಮೇನಿಸ್ಥಾನ್ಟುನಿಶಿಯಾಟೊಂಗಟರ್ಕಿಟ್ರಿನಿಡಾಡ್ ಮತ್" +
- "ತು ಟೊಬಾಗೊಟುವಾಲುಥೈವಾನ್ತಾಂಜೇನಿಯಾಉಕ್ರೈನ್ಉಗಾಂಡಾಯುಎಸ್\u200c. ಔಟ್\u200cಲೇಯಿಂ" +
- "ಗ್ ದ್ವೀಪಗಳುಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಉರುಗ್ವೇಉಜ್ಬೇಕಿಸ್ಥಾನ್ವ್ಯಾಟಿಕನ್ಸೇಂಟ್. " +
- "ವಿನ್ಸೆಂಟ್ ಮತ್ತು ಗ್ರೆನೆಡೈನ್ಸ್ವೆನೆಜುವೆಲಾಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳುಯು.ಎಸ್." +
- " ವರ್ಜಿನ್ ದ್ವೀಪಗಳುವಿಯೇಟ್ನಾಮ್ವನೌಟುವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾಸಮೋವಾಕೊಸೊವೊಯೆಮನ್ಮಯೊಟ್" +
- "ಟೆದಕ್ಷಿಣ ಆಫ್ರಿಕಾಝಾಂಬಿಯಾಜಿಂಬಾಬ್ವೆಅಜ್ಞಾತ ಪ್ರದೇಶಪ್ರಪಂಚಆಫ್ರಿಕಾಉತ್ತರ ಅಮೇರಿಕ" +
- "ಾದಕ್ಷಿಣ ಅಮೇರಿಕಾಓಶಿಯೇನಿಯಾಪಶ್ಚಿಮ ಆಫ್ರಿಕಾಮಧ್ಯ ಅಮೇರಿಕಾಪೂರ್ವ ಆಫ್ರಿಕಾಉತ್ತರ ಆ" +
- "ಫ್ರಿಕಾಮಧ್ಯ ಆಫ್ರಿಕಾಆಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗಅಮೆರಿಕಾಸ್ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗಕೆರೀಬಿ" +
- "ಯನ್ಪೂರ್ವ ಏಷ್ಯಾದಕ್ಷಿಣ ಏಷ್ಯಾಆಗ್ನೇಯ ಏಷ್ಯಾದಕ್ಷಿಣ ಯೂರೋಪ್ಆಸ್ಟ್ರೇಲೇಷ್ಯಾಮೆಲನೇಷ" +
- "ಿಯಾಮೈಕ್ರೋನೇಶಿಯನ್ ಪ್ರದೇಶಪಾಲಿನೇಷ್ಯಾಏಷ್ಯಾಮಧ್ಯ ಏಷ್ಯಾಪಶ್ಚಿಮ ಏಷ್ಯಾಯೂರೋಪ್ಪೂರ್" +
- "ವ ಯೂರೋಪ್ಉತ್ತರ ಯೂರೋಪ್ಪಶ್ಚಿಮ ಯೂರೋಪ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ"
-
-var knRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0028, 0x003a, 0x0075, 0x0099, 0x00d7, 0x00f5, 0x0110,
- 0x012b, 0x0152, 0x0164, 0x0182, 0x01a0, 0x01c8, 0x01e3, 0x0201,
- 0x0210, 0x0241, 0x025f, 0x02a9, 0x02c4, 0x02e5, 0x0300, 0x0325,
- 0x0340, 0x0352, 0x0367, 0x0379, 0x03a7, 0x03bc, 0x03ce, 0x03e6,
- 0x042f, 0x0447, 0x045c, 0x046e, 0x0490, 0x04b1, 0x04c6, 0x04d8,
- 0x04e7, 0x052a, 0x0554, 0x058c, 0x05c2, 0x05f2, 0x0617, 0x063c,
- 0x0648, 0x0663, 0x066f, 0x0687, 0x06ca, 0x06e9, 0x06fb, 0x0717,
- 0x072f, 0x075a, 0x076f, 0x0797, 0x07a9, 0x07cb, 0x07dd, 0x07fb,
- // Entry 40 - 7F
- 0x0813, 0x084a, 0x0865, 0x089d, 0x08b8, 0x08d3, 0x08e8, 0x090a,
- 0x0925, 0x0937, 0x0952, 0x0983, 0x09a7, 0x09b3, 0x09f6, 0x0a1a,
- 0x0a3c, 0x0a54, 0x0a66, 0x0a97, 0x0aaf, 0x0ac7, 0x0aec, 0x0b07,
- 0x0b13, 0x0b34, 0x0b5e, 0x0b79, 0x0b85, 0x0b9d, 0x0bce, 0x0be0,
- 0x0c6c, 0x0c8a, 0x0c9c, 0x0cc1, 0x0cd0, 0x0d00, 0x0d76, 0x0d91,
- 0x0daf, 0x0dbb, 0x0dcd, 0x0dfb, 0x0e19, 0x0e31, 0x0e46, 0x0e6c,
- 0x0e78, 0x0ecf, 0x0ede, 0x0eed, 0x0f0e, 0x0f1a, 0x0f2c, 0x0f3b,
- 0x0f53, 0x0f62, 0x0f74, 0x0f98, 0x0fb3, 0x0fcb, 0x0fe3, 0x1028,
- // Entry 80 - BF
- 0x104a, 0x106f, 0x1081, 0x10a9, 0x10ca, 0x10dc, 0x10f1, 0x1113,
- 0x113a, 0x1152, 0x116a, 0x117c, 0x119a, 0x11b8, 0x11d0, 0x11e2,
- 0x11fa, 0x120c, 0x1224, 0x1245, 0x126d, 0x1288, 0x12b6, 0x12da,
- 0x12e6, 0x1310, 0x132b, 0x134d, 0x138b, 0x13a9, 0x13c7, 0x13eb,
- 0x13fd, 0x1418, 0x1436, 0x1445, 0x145d, 0x1472, 0x148d, 0x14a2,
- 0x14d3, 0x14e2, 0x150a, 0x1522, 0x1540, 0x156d, 0x157f, 0x158e,
- 0x159a, 0x15a6, 0x15c7, 0x15d3, 0x15e2, 0x15ee, 0x1622, 0x1650,
- 0x166e, 0x1689, 0x16a4, 0x16e9, 0x1723, 0x1748, 0x1788, 0x17a3,
- // Entry C0 - FF
- 0x17b2, 0x17c7, 0x17d6, 0x1811, 0x182c, 0x1844, 0x185c, 0x186b,
- 0x1880, 0x18a2, 0x18d0, 0x18ee, 0x1900, 0x1915, 0x1930, 0x1952,
- 0x1970, 0x19c1, 0x19df, 0x1a0a, 0x1a2f, 0x1a44, 0x1a5c, 0x1a71,
- 0x1a96, 0x1ade, 0x1b06, 0x1b2e, 0x1b40, 0x1b67, 0x1b9c, 0x1bed,
- 0x1bf9, 0x1c3d, 0x1c49, 0x1c64, 0x1c85, 0x1c9d, 0x1cbf, 0x1cef,
- 0x1d07, 0x1d13, 0x1d22, 0x1d63, 0x1d75, 0x1d87, 0x1da2, 0x1db7,
- 0x1dc9, 0x1e17, 0x1e58, 0x1e6d, 0x1e94, 0x1eaf, 0x1f10, 0x1f2e,
- 0x1f75, 0x1fb5, 0x1fd3, 0x1fe2, 0x2017, 0x2026, 0x2038, 0x2047,
- // Entry 100 - 13F
- 0x205c, 0x2084, 0x2099, 0x20b4, 0x20d9, 0x20eb, 0x2100, 0x2125,
- 0x214d, 0x2168, 0x2190, 0x21b2, 0x21d7, 0x21fc, 0x221e, 0x2253,
- 0x226e, 0x22a0, 0x22bb, 0x22da, 0x22fc, 0x231e, 0x2343, 0x236a,
- 0x2385, 0x23bf, 0x23dd, 0x23ec, 0x2408, 0x242a, 0x243c, 0x245e,
- 0x2480, 0x24a5, 0x24d3,
-} // Size: 606 bytes
-
-var koRegionStr string = "" + // Size: 3916 bytes
- "어센션 섬안도라아랍에미리트아프가니스탄앤티가 바부다앵귈라알바니아아르메니아네덜란드령 안틸레스앙골라남극 대륙아르헨티나아메리칸 사모아오스" +
- "트리아오스트레일리아아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생바르" +
- "텔레미버뮤다브루나이볼리비아네덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스 제도콩고-킨샤사중앙 아프리카 공화" +
- "국콩고스위스코트디부아르쿡 제도칠레카메룬중국콜롬비아클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아" +
- "지부티덴마크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스토니아이집트서사하라에리트리아스페인에티오피아유럽 연합핀란드피지포" +
- "클랜드 제도미크로네시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터그린란드감비아기니과들루프적도 기니그리스사우" +
- "스조지아 사우스샌드위치 제도과테말라괌기니비사우가이아나홍콩(중국 특별행정구)허드 맥도널드 제도온두라스크로아티아아이티헝가리카나리아" +
- " 제도인도네시아아일랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키리바" +
- "시코모로세인트키츠 네비스조선민주주의인민공화국대한민국쿠웨이트케이맨 제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아" +
- "레소토리투아니아룩셈부르크라트비아리비아모로코모나코몰도바몬테네그로생마르탱마다가스카르마셜 제도마케도니아말리미얀마몽골마카오(중국 특별" +
- "행정구)북마리아나제도마르티니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아" +
- "니카라과네덜란드노르웨이네팔나우루니우에뉴질랜드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬" +
- "푸에르토리코팔레스타인 지구포르투갈팔라우파라과이카타르오세아니아 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸" +
- "수단스웨덴싱가포르세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노세네갈소말리아수리남남수단상투메 프린시페엘살바도" +
- "르신트마르턴시리아스와질란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라우동티모르투르크메니스탄튀니지" +
- "통가터키트리니다드 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도미국우루과이우즈베키스탄바티칸 시국세인트빈센트그레나딘베네수" +
- "엘라영국령 버진아일랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 " +
- "지역세계아프리카북아메리카남아메리카(남미)오세아니아서부 아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아" +
- "메리카 대륙북부 아메리카카리브 제도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아" +
- "서아시아유럽동유럽북유럽서유럽라틴 아메리카"
-
-var koRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000d, 0x0016, 0x0028, 0x003a, 0x004d, 0x0056, 0x0062,
- 0x0071, 0x008d, 0x0096, 0x00a3, 0x00b2, 0x00c8, 0x00d7, 0x00ec,
- 0x00f5, 0x0105, 0x0117, 0x0136, 0x0145, 0x0154, 0x015d, 0x016f,
- 0x017b, 0x0184, 0x018d, 0x0193, 0x01a5, 0x01ae, 0x01ba, 0x01c6,
- 0x01df, 0x01e8, 0x01f1, 0x01f7, 0x0200, 0x020c, 0x0218, 0x0221,
- 0x022a, 0x023a, 0x024a, 0x0267, 0x026d, 0x0276, 0x0288, 0x0292,
- 0x0298, 0x02a1, 0x02a7, 0x02b3, 0x02c3, 0x02d2, 0x02d8, 0x02e7,
- 0x02f0, 0x0302, 0x030e, 0x0314, 0x031a, 0x0330, 0x0339, 0x0342,
- // Entry 40 - 7F
- 0x034e, 0x0364, 0x036d, 0x0384, 0x0390, 0x039f, 0x03a8, 0x03b4,
- 0x03c3, 0x03cc, 0x03db, 0x03e8, 0x03f1, 0x03f7, 0x040a, 0x041c,
- 0x0429, 0x0432, 0x0438, 0x043e, 0x044a, 0x0453, 0x0469, 0x046f,
- 0x0475, 0x0481, 0x048d, 0x0496, 0x049c, 0x04a8, 0x04b5, 0x04be,
- 0x04ed, 0x04f9, 0x04fc, 0x050b, 0x0517, 0x0535, 0x054f, 0x055b,
- 0x056a, 0x0573, 0x057c, 0x058f, 0x059e, 0x05aa, 0x05b6, 0x05bd,
- 0x05c3, 0x05e0, 0x05e9, 0x05ef, 0x05fe, 0x060a, 0x0610, 0x061c,
- 0x0625, 0x062b, 0x0631, 0x0643, 0x064f, 0x065b, 0x0664, 0x067d,
- // Entry 80 - BF
- 0x069e, 0x06aa, 0x06b6, 0x06c6, 0x06d5, 0x06de, 0x06e7, 0x06f9,
- 0x070b, 0x0717, 0x0726, 0x072f, 0x073e, 0x074d, 0x0759, 0x0762,
- 0x076b, 0x0774, 0x077d, 0x078c, 0x0798, 0x07aa, 0x07b7, 0x07c6,
- 0x07cc, 0x07d5, 0x07db, 0x07fc, 0x0811, 0x0820, 0x082c, 0x083b,
- 0x0841, 0x084d, 0x0856, 0x085f, 0x0868, 0x0877, 0x0883, 0x088f,
- 0x08a1, 0x08aa, 0x08b3, 0x08c2, 0x08ce, 0x08da, 0x08e6, 0x08ec,
- 0x08f5, 0x08fe, 0x090a, 0x0910, 0x0919, 0x091f, 0x093b, 0x094d,
- 0x0956, 0x0962, 0x096b, 0x0981, 0x098e, 0x09a0, 0x09b6, 0x09c2,
- // Entry C0 - FF
- 0x09cb, 0x09d7, 0x09e0, 0x09f6, 0x0a02, 0x0a0e, 0x0a1a, 0x0a23,
- 0x0a2c, 0x0a41, 0x0a51, 0x0a5a, 0x0a60, 0x0a69, 0x0a75, 0x0a87,
- 0x0a96, 0x0ab5, 0x0ac4, 0x0ad3, 0x0adf, 0x0ae8, 0x0af4, 0x0afd,
- 0x0b06, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b43, 0x0b52, 0x0b67, 0x0b84,
- 0x0b8a, 0x0ba1, 0x0ba7, 0x0bad, 0x0bbc, 0x0bc8, 0x0bd4, 0x0be9,
- 0x0bf2, 0x0bf8, 0x0bfe, 0x0c17, 0x0c20, 0x0c26, 0x0c32, 0x0c41,
- 0x0c4a, 0x0c61, 0x0c67, 0x0c73, 0x0c85, 0x0c95, 0x0cb3, 0x0cc2,
- 0x0cde, 0x0cfa, 0x0d03, 0x0d0f, 0x0d29, 0x0d32, 0x0d3b, 0x0d41,
- // Entry 100 - 13F
- 0x0d4a, 0x0d59, 0x0d62, 0x0d6e, 0x0d88, 0x0d8e, 0x0d9a, 0x0da9,
- 0x0dc0, 0x0dcf, 0x0de2, 0x0df5, 0x0e08, 0x0e1b, 0x0e2e, 0x0e41,
- 0x0e54, 0x0e67, 0x0e77, 0x0e83, 0x0e8f, 0x0e9e, 0x0ea7, 0x0ebc,
- 0x0ecb, 0x0ee4, 0x0ef3, 0x0efc, 0x0f0c, 0x0f18, 0x0f1e, 0x0f27,
- 0x0f30, 0x0f39, 0x0f4c,
-} // Size: 606 bytes
-
-var kyRegionStr string = "" + // Size: 5805 bytes
- "Ассеншин аралыАндорраБириккен Араб ЭмираттарыАфганистанАнтигуа жана Барб" +
- "удаАнгуилаАлбанияАрменияАнголаАнтарктикаАргентинаАмерика СамоасыАвстрия" +
- "АвстралияАрубаАланд аралдарыАзербайжанБосния жана ГерцеговинаБарбадосБа" +
- "нгладешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСент БартелемиБерм" +
- "уд аралдарыБрунейБоливияКариб НидерланддарыБразилияБагам аралдарыБутанБ" +
- "уве аралдарыБотсванаБеларусьБелизКанадаКокос (Килиӊ) аралдарыКонго-Кинш" +
- "асаБорбордук Африка РеспубликасыКонго-БраззавилШвейцарияКот-д’ИвуарКук " +
- "аралдарыЧилиКамерунКытайКолумбияКлиппертон аралыКоста-РикаКубаКапе Верд" +
- "еКюрасаоКрисмас аралыКипрЧехияГерманияДиего ГарсияДжибутиДанияДоминикаД" +
- "оминика РеспубликасыАлжирСеута жана МелиллаЭквадорЭстонияЕгипетБатыш Са" +
- "хараЭритреяИспанияЭфиопияЕвропа БиримдигиФинляндияФиджиФолклэнд аралдар" +
- "ыМикронезияФарер аралдарыФранцияГабонУлуу БританияГренадаГрузияГвиана (" +
- "Франция)ГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭкваториалдык" +
- " ГвинеяГрецияТүштүк Жоржия жана Түштүк Сэндвич аралдарыГватемалаГуамГвин" +
- "ея-БисауГайанаГонконг Кытай АААХерд жана Макдоналд аралдарыГондурасХорв" +
- "атияГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн аралыИндияБри" +
- "таниянын Индия океанындагы аймагыИракИранИсландияИталияЖерсиЯмайкаИорда" +
- "нияЯпонияКенияКыргызстанКамбоджаКирибатиКоморосСент-Китс жана НевисТүнд" +
- "үк КореяТүштүк КореяКувейтКайман АралдарыКазакстанЛаосЛиванСент-ЛюсияЛи" +
- "хтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМ" +
- "олдоваЧерногорияСент-МартинМадагаскарМаршалл аралдарыМакедонияМалиМьянм" +
- "а (Бирма)МонголияМакау Кытай АААТүндүк Мариана аралдарыМартиникаМаврита" +
- "нияМонсерратМальтаМаврикийМалдив аралдарыМалавиМексикаМалайзияМозамбикН" +
- "амибияЖаӊы КаледонияНигерНорфолк аралыНигерияНикарагуаНидерланддарНорве" +
- "гияНепалНауруНиуэЖаӊы ЗеландияОманПанамаПеруФранцуз ПолинезиясыПапуа Жа" +
- "ңы-ГвинеяФиллипинПакистанПольшаСен-Пьер жана МикелонПиткэрн аралдарыПуэ" +
- "рто-РикоПалестина аймактарыПортугалияПалауПарагвайКатарАлыскы ОкеанияРе" +
- "юнионРумынияСербияРоссияРуандаСауд АрабиясыСоломон аралдарыСейшелдерСуд" +
- "анШвецияСингапурЫйык ЕленаСловенияСвалбард жана Жан МайенСловакияСьерра" +
- "-ЛеонеСан МариноСенегалСомалиСуринамеТүштүк СуданСан-Томе жана ПринсипиЭ" +
- "л СалвадорСинт МаартенСирияСвазилендТристан да КуньяТүркс жана Кайкос а" +
- "ралдарыЧадФранциянын Түштүктөгү аймактарыТогоТаиландТажикстанТокелауТим" +
- "ор-ЛестеТүркмөнстанТунисТонгаТүркияТринидад жана ТобагоТувалуТайваньТан" +
- "занияУкраинаУгандаАКШнын сырткы аралдарыАмерика Кошмо ШтаттарыУругвайӨз" +
- "бекстанВатиканСент-Винсент жана ГренадиналарВенесуэлаВиргин аралдары (Б" +
- "ритания)Виргин аралдары (АКШ)ВьетнамВануатуУоллис жана ФутунаСамоаКосов" +
- "оЙеменМайоттаТүштүк Африка РеспубликасыЗамбияЗимбабвеБелгисиз регионДүй" +
- "нөАфрикаТүндүк АмерикаТүштүк АмерикаОкеанияБатыш АфрикаБорбордук Америк" +
- "аЧыгыш АфрикаТүндүк АфрикаБорбордук АфрикаТүштүк АфрикаАмерикаТүндүк Ам" +
- "ерика (регион)Кариб аралдарыЧыгыш АзияТүштүк АзияТүштүк-Чыгыш АзияТүштү" +
- "к ЕвропаАвстралазияМеланезияМикронезия РегионуПолинезияАзияБорбор АзияБ" +
- "атыш АзияЕвропаЧыгыш ЕвропаТүндүк ЕвропаБатыш ЕвропаЛатын Америкасы"
-
-var kyRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0029, 0x0057, 0x006b, 0x0091, 0x009f, 0x00ad,
- 0x00bb, 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010a, 0x0118, 0x012a,
- 0x0134, 0x014f, 0x0163, 0x018f, 0x019f, 0x01b1, 0x01bf, 0x01d6,
- 0x01e6, 0x01f4, 0x0202, 0x020c, 0x0227, 0x0244, 0x0250, 0x025e,
- 0x0283, 0x0293, 0x02ae, 0x02b8, 0x02d1, 0x02e1, 0x02f1, 0x02fb,
- 0x0307, 0x032f, 0x0348, 0x0380, 0x039d, 0x03af, 0x03c5, 0x03dc,
- 0x03e4, 0x03f2, 0x03fc, 0x040c, 0x042b, 0x043e, 0x0446, 0x0459,
- 0x0467, 0x0480, 0x0488, 0x0492, 0x04a2, 0x04b9, 0x04c7, 0x04d1,
- // Entry 40 - 7F
- 0x04e1, 0x050a, 0x0514, 0x0536, 0x0544, 0x0552, 0x055e, 0x0575,
- 0x0583, 0x0591, 0x059f, 0x05be, 0x05d0, 0x05da, 0x05fb, 0x060f,
- 0x062a, 0x0638, 0x0642, 0x065b, 0x0669, 0x0675, 0x0692, 0x069e,
- 0x06a6, 0x06b8, 0x06cc, 0x06d8, 0x06e4, 0x06f6, 0x071d, 0x0729,
- 0x0778, 0x078a, 0x0792, 0x07a9, 0x07b5, 0x07d5, 0x080a, 0x081a,
- 0x082a, 0x0834, 0x0842, 0x085d, 0x086f, 0x087f, 0x088d, 0x089e,
- 0x08a8, 0x08ed, 0x08f5, 0x08fd, 0x090d, 0x0919, 0x0923, 0x092f,
- 0x093f, 0x094b, 0x0955, 0x0969, 0x0979, 0x0989, 0x0997, 0x09bc,
- // Entry 80 - BF
- 0x09d3, 0x09ea, 0x09f6, 0x0a13, 0x0a25, 0x0a2d, 0x0a37, 0x0a4a,
- 0x0a60, 0x0a71, 0x0a7f, 0x0a8b, 0x0a95, 0x0aa9, 0x0ab5, 0x0abf,
- 0x0acd, 0x0ad9, 0x0ae7, 0x0afb, 0x0b10, 0x0b24, 0x0b43, 0x0b55,
- 0x0b5d, 0x0b76, 0x0b86, 0x0ba2, 0x0bce, 0x0be0, 0x0bf4, 0x0c06,
- 0x0c12, 0x0c22, 0x0c3f, 0x0c4b, 0x0c59, 0x0c69, 0x0c79, 0x0c87,
- 0x0ca2, 0x0cac, 0x0cc5, 0x0cd3, 0x0ce5, 0x0cfd, 0x0d0d, 0x0d17,
- 0x0d21, 0x0d29, 0x0d42, 0x0d4a, 0x0d56, 0x0d5e, 0x0d83, 0x0da3,
- 0x0db3, 0x0dc3, 0x0dcf, 0x0df6, 0x0e15, 0x0e2a, 0x0e4f, 0x0e63,
- // Entry C0 - FF
- 0x0e6d, 0x0e7d, 0x0e87, 0x0ea2, 0x0eb0, 0x0ebe, 0x0eca, 0x0ed6,
- 0x0ee2, 0x0efb, 0x0f1a, 0x0f2c, 0x0f36, 0x0f42, 0x0f52, 0x0f65,
- 0x0f75, 0x0fa0, 0x0fb0, 0x0fc7, 0x0fda, 0x0fe8, 0x0ff4, 0x1004,
- 0x101b, 0x1044, 0x1059, 0x1070, 0x107a, 0x108c, 0x10aa, 0x10db,
- 0x10e1, 0x111d, 0x1125, 0x1133, 0x1145, 0x1153, 0x1168, 0x117e,
- 0x1188, 0x1192, 0x119e, 0x11c4, 0x11d0, 0x11de, 0x11ee, 0x11fc,
- 0x1208, 0x1232, 0x125c, 0x126a, 0x127c, 0x128a, 0x12c3, 0x12d5,
- 0x1305, 0x132b, 0x1339, 0x1347, 0x1369, 0x1373, 0x137f, 0x1389,
- // Entry 100 - 13F
- 0x1397, 0x13c9, 0x13d5, 0x13e5, 0x1402, 0x140c, 0x1418, 0x1433,
- 0x144e, 0x145c, 0x1473, 0x1494, 0x14ab, 0x14c4, 0x14e3, 0x14fc,
- 0x150a, 0x1534, 0x154f, 0x1562, 0x1577, 0x1597, 0x15b0, 0x15c6,
- 0x15d8, 0x15fb, 0x160d, 0x1615, 0x162a, 0x163d, 0x1649, 0x1660,
- 0x1679, 0x1690, 0x16ad,
-} // Size: 606 bytes
-
-var loRegionStr string = "" + // Size: 8043 bytes
- "ເກາະອາເຊນຊັນອັນດໍຣາສະຫະລັດອາຣັບເອມິເຣດອາຟການິສຖານອາທິກົວ ບາບູດາແອນກຸຍລາແ" +
- "ອວເບເນຍອາເມເນຍອັນໂກລາແອນຕາດຕິກາອາເຈນທິນາອາເມຣິກາ ຊາມົວໂອຕາລິກອອສເຕຣເລຍ" +
- "ອໍຣູບາຫມູ່ເກາະໂອລັນອາເຊີໄບຈານບອດສະເນຍ ແລະ ແຮສໂກວີນາບາບາໂດສບັງກະລາເທດແບ" +
- "ລຊິກເບີກິນາ ຟາໂຊບູລກາຣິບາເຣນບູຣຸນດິເບນິນເຊນ ບາເທເລມີເບີມິວດາບຣູໄນໂບລິເ" +
- "ວຍຄາຣິບບຽນ ເນເທີແລນບະເລຊີນບາຮາມາສພູຖານເກາະບູເວດບອດສະວານາເບວບາຣຸສເບລີຊກ" +
- "ານາດາຫມູ່ເກາະໂກໂກສຄອງໂກ - ຄິນຊາຊາສາທາລະນະລັດອາຟຣິກາກາງຄອງໂກ - ບຣາຊາວິວ" +
- "ສະວິດເຊີແລນໂຄຕີ ວົວໝູ່ເກາະຄຸກຈີເລຄາເມຣູນຈີນໂຄລົມເບຍເກາະຄລິບເປີຕັນໂຄສຕາ" +
- " ຣິກາກຸຍບາເຄບ ເວີດຄູຣາຊາວເກາະຄຣິສມາດໄຊປຣັສສາທາລະນະລັດເຊກເຢຍລະມັນດິເອໂກ ກ" +
- "າເຊຍຈິບູຕິເດນມາກໂດມີນິຄາສາທາລະນະລັດ ໂດມິນິກັນອັລຈິເຣຍເຊວຕາ ແລະເມລິນລາເ" +
- "ອກວາດໍເອສໂຕເນຍອີຢິບຊາຮາຣາຕາເວັນຕົກເອຣິເທຣຍສະເປນອີທິໂອເປຍສະຫະພາບຢູໂຣບຝຽ" +
- "ກລັງຟິຈິຫມູ່ເກາະຟອກແລນໄມໂຄຣນີເຊຍຫມູ່ເກາະແຟໂຣຝຣັ່ງກາບອນສະຫະລາດຊະອະນາຈັກ" +
- "ເກຣເນດາຈໍເຈຍເຟຣນຊ໌ ກຸຍອານາເກີນຊີການາຈິບບຣອນທາກຣີນແລນສາທາລະນະລັດແກມເບຍກ" +
- "ິນີກົວດາລູບອີຄົວໂຕຣຽວ ກີນີກຣີຊໝູ່ເກາະຈໍເຈຍ & ເຊົາ ແຊນວິດກົວເທມາລາກວມກິ" +
- "ນີ-ບິສເຊົາກາຍຢານາຮອງກົງ ເຂດປົກຄອງພິເສດ ຈີນໝູ່ເກາະເຮີດ & ແມັກໂດນອລຮອນດູ" +
- "ຣັສໂຄຣເອເທຍໄຮຕິຮັງກາຣີໝູ່ເກາະຄານາຣີອິນໂດເນເຊຍໄອຣ໌ແລນອິສຣາເອວເອວ ອອບ ແມ" +
- "ນອິນເດຍເຂດແດນບຣິທິສອິນດຽນໂອຊຽນອີຣັກອີຣ່ານໄອສແລນອິຕາລີເຈີຊີຈາໄມຄາຈໍແດນຍ" +
- "ີ່ປຸ່ນເຄນຢາຄີກິສຖານກຳປູເຈຍຄິຣິບາທິໂຄໂມໂຣສເຊນ ຄິດ ແລະ ເນວິສເກົາຫລີເໜືອເ" +
- "ກົາຫລີໃຕ້ກູເວດເຄແມນ ໄອແລນຄາຊັກສະຖານລາວເລບານອນເຊນ ລູເຊຍລິດເທນສະຕາຍສີລັງ" +
- "ກາລິເບີເຣຍເລໂຊໂທລິທົວເນຍລຸກຊຳບົວລັດເວຍລິເບຍໂມຣັອກໂຄໂມນາໂຄໂມນໂດວາມອນເຕເ" +
- "ນໂກຣເຊນ ມາທິນມາດາກາສກາຫມູ່ເກາະມາແຊວແມຊິໂດເນຍມາລິມຽນມາ (ເບີມາ)ມົງໂກລີມາ" +
- "ເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນຫມູ່ເກາະມາແຊວຕອນເຫນືອມາຕິນີກມົວຣິເທເນຍມອນເຊີຣາ" +
- "ດມອນທາມົວຣິຊຽສມັນດິຟມາລາວີແມັກຊີໂກມາເລເຊຍໂມແຊມບິກນາມີເບຍນິວ ຄາເລໂດເນຍນ" +
- "ິເຈີເກາະນໍໂຟກໄນຈີເຣຍນິກຄາຣາກົວເນເທີແລນນອກແວ໊ເນປານນາອູຣູນີອູເອນິວຊີແລນໂ" +
- "ອມານພານາມາເປຣູເຟຣນຊ໌ ໂພລີນີເຊຍປາປົວນິວກີນີຟິລິບປິນປາກິສຖານໂປໂລຍເຊນ ປີແ" +
- "ອ ມິເກວລອນໝູ່ເກາະພິດແຄນເພືອໂຕ ຣິໂກດິນແດນ ປາເລສຕິນຽນພອລທູໂກປາເລົາພາຣາກວ" +
- "ຍກາຕາເຂດຫ່າງໄກໂອຊີເນຍເຣອູນິຍົງໂຣມານີເຊີເບຍຣັດເຊຍຣວັນດາຊາອຸດິ ອາຣາເບຍຫມ" +
- "ູ່ເກາະໂຊໂລມອນເຊເຊວເລສຊູດານສະວີເດັນສິງກະໂປເຊນ ເຮເລນາສະໂລເວເນຍສະວາບາ ແລະ" +
- " ແຢນ ມາເຢນສະໂລວາເກຍເຊຍຣາ ລີໂອນແຊນ ມາຣິໂນເຊນີໂກລໂຊມາລີຊູຣິນາມຊູດານໃຕ້ເຊົາ" +
- "ທູເມ ແລະ ພຣິນຊິບເອວ ຊໍວາດໍຊິນ ມາເທັນຊີເຣຍສະວາຊິແລນທຣິສຕັນ ດາ ກັນຮາໝູ່ເ" +
- "ກາະ ເທີກ ແລະ ໄຄໂຄສຊາດເຂດແດນທາງໃຕ້ຂອຝຮັ່ງໂຕໂກໄທທາຈິກິສຖານໂຕເກເລົາທິມໍ-ເ" +
- "ລສເຕເທີກເມນິສຖານຕູນິເຊຍທອງກາເທີຄີທຣິນິແດດ ແລະ ໂທແບໂກຕູວາລູໄຕ້ຫວັນທານຊາ" +
- "ເນຍຢູເຄຣນອູການດາໝູ່ເກາະຮອບນອກຂອງສະຫະລັດຯສະຫະລັດອູຣຸກວຍອຸສເບກິສຖານນະຄອນ" +
- " ວາຕິກັນເຊນ ວິນເຊນ & ເກຣເນດິນເວເນຊູເອລາໝູ່ເກາະ ບຣິທິຊ ເວີຈິນໝູ່ເກາະ ຢູເອ" +
- "ສ ເວີຈິນຫວຽດນາມວານົວຕູວາລິສ ແລະ ຟຸຕູນາຊາມົວໂຄໂຊໂວເຢເມນມາຢັອດອາຟະລິກາໃຕ" +
- "້ແຊມເບຍຊິມບັບເວຂົງເຂດທີ່ບໍ່ຮູ້ຈັກໂລກອາຟຣິກາອາເມລິກາເໜືອອາເມລິກາໃຕ້ໂອຊີ" +
- "ອານີອາຟຣິກາຕາເວັນຕົກອາເມລິກາກາງອາຟຣິກາຕາເວັນອອກອາຟຣິກາເໜືອອາຟຣິກາກາງອາ" +
- "ຟຣິກາໃຕ້ອາເມຣິກາພາກເໜືອອາເມລີກາຄາຣິບບຽນອາຊີຕາເວັນອອກອາຊີໄຕ້ອາຊີຕາເວັນອ" +
- "ອກສ່ຽງໄຕ້ຢູໂຣບໃຕ້ໂອດສະຕາລີເມລານີເຊຍເຂດໄມໂຄຣເນຊຽນໂພລີນີເຊຍອາຊີອາຊີກາງອາ" +
- "ຊີຕາເວັນຕົກຢູໂຣບຢູໂຣບຕາເວັນອອກຢູໂຣບເໜືອຢູໂຣບຕາເວັນຕົກລາຕິນ ອາເມລິກາ"
-
-var loRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0024, 0x0039, 0x0072, 0x0093, 0x00bb, 0x00d3, 0x00eb,
- 0x0100, 0x0100, 0x0115, 0x0133, 0x014e, 0x0176, 0x018b, 0x01a6,
- 0x01b8, 0x01df, 0x01fd, 0x023b, 0x0250, 0x026e, 0x0280, 0x02a2,
- 0x02b7, 0x02c6, 0x02db, 0x02ea, 0x030c, 0x0324, 0x0333, 0x0348,
- 0x0379, 0x038e, 0x03a3, 0x03b2, 0x03cd, 0x03e8, 0x0400, 0x040f,
- 0x0421, 0x0448, 0x046f, 0x04ae, 0x04d8, 0x04f9, 0x050f, 0x052d,
- 0x0539, 0x054e, 0x0557, 0x056f, 0x0599, 0x05b5, 0x05c4, 0x05da,
- 0x05ef, 0x0610, 0x0622, 0x064c, 0x0664, 0x0686, 0x0698, 0x06aa,
- // Entry 40 - 7F
- 0x06c2, 0x06ff, 0x0717, 0x0745, 0x075a, 0x0772, 0x0781, 0x07ae,
- 0x07c6, 0x07d5, 0x07f0, 0x0814, 0x0826, 0x0832, 0x085c, 0x087a,
- 0x089e, 0x08ad, 0x08bc, 0x08ec, 0x0901, 0x0910, 0x0938, 0x094a,
- 0x0956, 0x0971, 0x0986, 0x09b9, 0x09c5, 0x09dd, 0x0a08, 0x0a14,
- 0x0a5a, 0x0a75, 0x0a7e, 0x0aa0, 0x0ab5, 0x0afc, 0x0b3b, 0x0b53,
- 0x0b6b, 0x0b77, 0x0b8c, 0x0bb3, 0x0bd1, 0x0be6, 0x0bfe, 0x0c1b,
- 0x0c2d, 0x0c72, 0x0c81, 0x0c93, 0x0ca5, 0x0cb7, 0x0cc6, 0x0cd8,
- 0x0ce7, 0x0cfc, 0x0d0b, 0x0d23, 0x0d38, 0x0d50, 0x0d65, 0x0d92,
- // Entry 80 - BF
- 0x0db3, 0x0dd1, 0x0de0, 0x0dff, 0x0e1d, 0x0e26, 0x0e3b, 0x0e54,
- 0x0e75, 0x0e8a, 0x0ea2, 0x0eb4, 0x0ecc, 0x0ee4, 0x0ef6, 0x0f05,
- 0x0f1d, 0x0f2f, 0x0f44, 0x0f62, 0x0f7b, 0x0f96, 0x0fbd, 0x0fd8,
- 0x0fe4, 0x1005, 0x101a, 0x1064, 0x10a3, 0x10b8, 0x10d6, 0x10f1,
- 0x1100, 0x1118, 0x112a, 0x113c, 0x1154, 0x1169, 0x1181, 0x1196,
- 0x11bb, 0x11ca, 0x11e5, 0x11fa, 0x1218, 0x1230, 0x1242, 0x1251,
- 0x1263, 0x1275, 0x128d, 0x129c, 0x12ae, 0x12ba, 0x12e8, 0x130c,
- 0x1324, 0x133c, 0x134b, 0x137a, 0x13a1, 0x13c0, 0x13f1, 0x1406,
- // Entry C0 - FF
- 0x1418, 0x142d, 0x1439, 0x1469, 0x1484, 0x1496, 0x14a8, 0x14ba,
- 0x14cc, 0x14f4, 0x1521, 0x1539, 0x1548, 0x1560, 0x1575, 0x1591,
- 0x15ac, 0x15e2, 0x15fd, 0x161c, 0x1638, 0x164d, 0x165f, 0x1674,
- 0x168c, 0x16c4, 0x16e0, 0x16fc, 0x170b, 0x1726, 0x1752, 0x178e,
- 0x1797, 0x17d0, 0x17dc, 0x17e2, 0x1800, 0x1818, 0x1834, 0x1858,
- 0x186d, 0x187c, 0x188b, 0x18c0, 0x18d2, 0x18e7, 0x18ff, 0x1911,
- 0x1926, 0x196e, 0x1983, 0x1998, 0x19b9, 0x19de, 0x1a15, 0x1a33,
- 0x1a6e, 0x1aa6, 0x1abb, 0x1ad0, 0x1afc, 0x1b0b, 0x1b1d, 0x1b2c,
- // Entry 100 - 13F
- 0x1b3e, 0x1b5f, 0x1b71, 0x1b89, 0x1bbf, 0x1bc8, 0x1bdd, 0x1c01,
- 0x1c22, 0x1c3a, 0x1c6a, 0x1c8b, 0x1cbb, 0x1cdc, 0x1cfa, 0x1d18,
- 0x1d30, 0x1d5d, 0x1d75, 0x1d9c, 0x1db1, 0x1ded, 0x1e05, 0x1e20,
- 0x1e3b, 0x1e62, 0x1e7d, 0x1e89, 0x1e9e, 0x1ec5, 0x1ed4, 0x1efe,
- 0x1f19, 0x1f43, 0x1f6b,
-} // Size: 606 bytes
-
-var ltRegionStr string = "" + // Size: 3396 bytes
- "Dangun Žengimo salaAndoraJungtiniai Arabų EmyrataiAfganistanasAntigva ir" +
- " BarbudaAngilijaAlbanijaArmėnijaOlandijos AntilaiAngolaAntarktidaArgenti" +
- "naAmerikos SamoaAustrijaAustralijaArubaAlandų SalosAzerbaidžanasBosnija " +
- "ir HercegovinaBarbadosasBangladešasBelgijaBurkina FasasBulgarijaBahreina" +
- "sBurundisBeninasSen BartelemiBermudaBrunėjusBolivijaKaribų NyderlandaiBr" +
- "azilijaBahamosButanasBuvė SalaBotsvanaBaltarusijaBelizasKanadaKokosų (Ki" +
- "lingo) SalosKongas-KinšasaCentrinės Afrikos RespublikaKongas-BrazavilisŠ" +
- "veicarijaDramblio Kaulo KrantasKuko SalosČilėKamerūnasKinijaKolumbijaKli" +
- "pertono salaKosta RikaKubaŽaliasis KyšulysKiurasaoKalėdų SalaKiprasČekij" +
- "aVokietijaDiego GarsijaDžibutisDanijaDominikaDominikos RespublikaAlžyras" +
- "Seuta ir MelilaEkvadorasEstijaEgiptasVakarų SacharaEritrėjaIspanijaEtiop" +
- "ijaEuropos SąjungaSuomijaFidžisFolklando SalosMikronezijaFarerų SalosPra" +
- "ncūzijaGabonasDidžioji BritanijaGrenadaGruzijaPrancūzijos GvianaGernsisG" +
- "anaGibraltarasGrenlandijaGambijaGvinėjaGvadelupaPusiaujo GvinėjaGraikija" +
- "Pietų Džordžija ir Pietų Sandvičo salosGvatemalaGuamasBisau GvinėjaGajan" +
- "aYpatingasis Administracinis Kinijos Regionas HonkongasHerdo ir Makdonal" +
- "do SalosHondūrasKroatijaHaitisVengrijaKanarų salosIndonezijaAirijaIzrael" +
- "isMeno SalaIndijaIndijos Vandenyno Britų SritisIrakasIranasIslandijaItal" +
- "ijaDžersisJamaikaJordanijaJaponijaKenijaKirgizijaKambodžaKiribatisKomora" +
- "iSent Kitsas ir NevisŠiaurės KorėjaPietų KorėjaKuveitasKaimanų SalosKaza" +
- "chstanasLaosasLibanasŠventoji LiucijaLichtenšteinasŠri LankaLiberijaLeso" +
- "tasLietuvaLiuksemburgasLatvijaLibijaMarokasMonakasMoldovaJuodkalnijaSen " +
- "MartenasMadagaskarasMaršalo SalosMakedonijaMalisMianmaras (Birma)Mongoli" +
- "jaYpatingasis Administracinis Kinijos Regionas MakaoMarianos Šiaurinės S" +
- "alosMartinikaMauritanijaMontseratasMaltaMauricijusMaldyvaiMalavisMeksika" +
- "MalaizijaMozambikasNamibijaNaujoji KaledonijaNigerisNorfolko salaNigerij" +
- "aNikaragvaNyderlandaiNorvegijaNepalasNauruNiujėNaujoji ZelandijaOmanasPa" +
- "namaPeruPrancūzų PolinezijaPapua Naujoji GvinėjaFilipinaiPakistanasLenki" +
- "jaSen Pjeras ir MikelonasPitkernasPuerto RikasPalestinos teritorijaPortu" +
- "galijaPalauParagvajusKatarasNuošali OkeanijaReunjonasRumunijaSerbijaRusi" +
- "jaRuandaSaudo ArabijaSaliamono SalosSeišeliaiSudanasŠvedijaSingapūrasŠv." +
- " Elenos SalaSlovėnijaSvalbardas ir Janas MajenasSlovakijaSiera LeonėSan " +
- "MarinasSenegalasSomalisSurinamasPietų SudanasSan Tomė ir PrinsipėSalvado" +
- "rasSint MartenasSirijaSvazilandasTristanas da KunjaTerkso ir Kaikoso Sal" +
- "osČadasPrancūzijos Pietų sritysTogasTailandasTadžikijaTokelauRytų Timora" +
- "sTurkmėnistanasTunisasTongaTurkijaTrinidadas ir TobagasTuvaluTaivanasTan" +
- "zanijaUkrainaUgandaJungtinių Valstijų Mažosios Tolimosios SalosJungtinės" +
- " ValstijosUrugvajusUzbekistanasVatikano Miesto ValstybėŠventasis Vincent" +
- "as ir GrenadinaiVenesuelaDidžiosios Britanijos Mergelių SalosJungtinių V" +
- "alstijų Mergelių SalosVietnamasVanuatuVolisas ir FutunaSamoaKosovasJemen" +
- "asMajotasPietų AfrikaZambijaZimbabvėnežinoma sritispasaulisAfrikaŠiaurės" +
- " AmerikaPietų AmerikaOkeanijaVakarų AfrikaCentrinė AmerikaRytų AfrikaŠia" +
- "urės AfrikaVidurio AfrikaPietinė AfrikaAmerikaŠiaurinė AmerikaKaribaiRyt" +
- "ų AzijaPietų AzijaPietryčių AzijaPietų EuropaAustralazijaMelanezijaMikr" +
- "onezijos regionasPolinezijaAzijaCentrinė AzijaVakarų AzijaEuropaRytų Eur" +
- "opaŠiaurės EuropaVakarų EuropaLotynų Amerika"
-
-var ltRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0014, 0x001a, 0x0034, 0x0040, 0x0052, 0x005a, 0x0062,
- 0x006b, 0x007c, 0x0082, 0x008c, 0x0095, 0x00a3, 0x00ab, 0x00b5,
- 0x00ba, 0x00c7, 0x00d5, 0x00eb, 0x00f5, 0x0101, 0x0108, 0x0115,
- 0x011e, 0x0127, 0x012f, 0x0136, 0x0143, 0x014a, 0x0153, 0x015b,
- 0x016e, 0x0177, 0x017e, 0x0185, 0x018f, 0x0197, 0x01a2, 0x01a9,
- 0x01af, 0x01c6, 0x01d5, 0x01f2, 0x0203, 0x020e, 0x0224, 0x022e,
- 0x0234, 0x023e, 0x0244, 0x024d, 0x025c, 0x0266, 0x026a, 0x027c,
- 0x0284, 0x0291, 0x0297, 0x029e, 0x02a7, 0x02b4, 0x02bd, 0x02c3,
- // Entry 40 - 7F
- 0x02cb, 0x02df, 0x02e7, 0x02f6, 0x02ff, 0x0305, 0x030c, 0x031b,
- 0x0324, 0x032c, 0x0334, 0x0344, 0x034b, 0x0352, 0x0361, 0x036c,
- 0x0379, 0x0384, 0x038b, 0x039e, 0x03a5, 0x03ac, 0x03bf, 0x03c6,
- 0x03ca, 0x03d5, 0x03e0, 0x03e7, 0x03ef, 0x03f8, 0x0409, 0x0411,
- 0x043d, 0x0446, 0x044c, 0x045a, 0x0460, 0x0496, 0x04af, 0x04b8,
- 0x04c0, 0x04c6, 0x04ce, 0x04db, 0x04e5, 0x04eb, 0x04f3, 0x04fc,
- 0x0502, 0x0521, 0x0527, 0x052d, 0x0536, 0x053d, 0x0545, 0x054c,
- 0x0555, 0x055d, 0x0563, 0x056c, 0x0575, 0x057e, 0x0585, 0x0599,
- // Entry 80 - BF
- 0x05aa, 0x05b8, 0x05c0, 0x05ce, 0x05da, 0x05e0, 0x05e7, 0x05f8,
- 0x0607, 0x0611, 0x0619, 0x0620, 0x0627, 0x0634, 0x063b, 0x0641,
- 0x0648, 0x064f, 0x0656, 0x0661, 0x066d, 0x0679, 0x0687, 0x0691,
- 0x0696, 0x06a7, 0x06b0, 0x06e2, 0x06fc, 0x0705, 0x0710, 0x071b,
- 0x0720, 0x072a, 0x0732, 0x0739, 0x0740, 0x0749, 0x0753, 0x075b,
- 0x076d, 0x0774, 0x0781, 0x0789, 0x0792, 0x079d, 0x07a6, 0x07ad,
- 0x07b2, 0x07b8, 0x07c9, 0x07cf, 0x07d5, 0x07d9, 0x07ee, 0x0804,
- 0x080d, 0x0817, 0x081e, 0x0835, 0x083e, 0x084a, 0x085f, 0x086a,
- // Entry C0 - FF
- 0x086f, 0x0879, 0x0880, 0x0891, 0x089a, 0x08a2, 0x08a9, 0x08af,
- 0x08b5, 0x08c2, 0x08d1, 0x08db, 0x08e2, 0x08ea, 0x08f5, 0x0905,
- 0x090f, 0x092a, 0x0933, 0x093f, 0x094a, 0x0953, 0x095a, 0x0963,
- 0x0971, 0x0987, 0x0991, 0x099e, 0x09a4, 0x09af, 0x09c1, 0x09d8,
- 0x09de, 0x09f8, 0x09fd, 0x0a06, 0x0a10, 0x0a17, 0x0a24, 0x0a33,
- 0x0a3a, 0x0a3f, 0x0a46, 0x0a5b, 0x0a61, 0x0a69, 0x0a72, 0x0a79,
- 0x0a7f, 0x0aae, 0x0ac2, 0x0acb, 0x0ad7, 0x0af0, 0x0b12, 0x0b1b,
- 0x0b41, 0x0b65, 0x0b6e, 0x0b75, 0x0b86, 0x0b8b, 0x0b92, 0x0b99,
- // Entry 100 - 13F
- 0x0ba0, 0x0bad, 0x0bb4, 0x0bbd, 0x0bcd, 0x0bd5, 0x0bdb, 0x0bec,
- 0x0bfa, 0x0c02, 0x0c10, 0x0c21, 0x0c2d, 0x0c3d, 0x0c4b, 0x0c5a,
- 0x0c61, 0x0c73, 0x0c7a, 0x0c85, 0x0c91, 0x0ca2, 0x0caf, 0x0cbb,
- 0x0cc5, 0x0cda, 0x0ce4, 0x0ce9, 0x0cf8, 0x0d05, 0x0d0b, 0x0d17,
- 0x0d27, 0x0d35, 0x0d44,
-} // Size: 606 bytes
-
-var lvRegionStr string = "" + // Size: 3293 bytes
- "Debesbraukšanas salaAndoraApvienotie Arābu EmirātiAfganistānaAntigva un " +
- "BarbudaAngiljaAlbānijaArmēnijaNīderlandes AntiļasAngolaAntarktikaArgentī" +
- "naAmerikāņu SamoaAustrijaAustrālijaArubaOlandes salasAzerbaidžānaBosnija" +
- " un HercegovinaBarbadosaBangladešaBeļģijaBurkinafasoBulgārijaBahreinaBur" +
- "undiBeninaSenbartelmīBermudu salasBrunejaBolīvijaNīderlandes Karību sala" +
- "sBrazīlijaBahamu salasButānaBuvē salaBotsvānaBaltkrievijaBelizaKanādaKok" +
- "osu jeb Kīlinga salasKongo-KinšasaCentrālāfrikas RepublikaKongo - Brazav" +
- "ilaŠveiceKotdivuāraKuka salasČīleKamerūnaĶīnaKolumbijaKlipertona salaKos" +
- "tarikaKubaKaboverdeKirasaoZiemsvētku salaKipraČehijaVācijaDjego Garsijas" +
- " atolsDžibutijaDānijaDominikaDominikānaAlžīrijaSeūta un MeliljaEkvadoraI" +
- "gaunijaĒģipteRietumsahāraEritrejaSpānijaEtiopijaEiropas SavienībaSomijaF" +
- "idžiFolklenda salasMikronēzijaFēru SalasFrancijaGabonaLielbritānijaGrenā" +
- "daGruzijaFranču GviānaGērnsijaGanaGibraltārsGrenlandeGambijaGvinejaGvade" +
- "lupaEkvatoriālā GvinejaGrieķijaDienviddžordžija un Dienvidsendviču salas" +
- "GvatemalaGuamaGvineja-BisavaGajānaĶīnas īpašās pārvaldes apgabals Honkon" +
- "gaHērda un Makdonalda salasHondurasaHorvātijaHaitiUngārijaKanāriju salas" +
- "IndonēzijaĪrijaIzraēlaMenaIndijaIndijas okeāna Britu teritorijaIrākaIrān" +
- "aĪslandeItālijaDžērsijaJamaikaJordānijaJapānaKenijaKirgizstānaKambodžaKi" +
- "ribatiKomoru salasSentkitsa un NevisaZiemeļkorejaDienvidkorejaKuveitaKai" +
- "manu salasKazahstānaLaosaLibānaSentlūsijaLihtenšteinaŠrilankaLibērijaLes" +
- "otoLietuvaLuksemburgaLatvijaLībijaMarokaMonakoMoldovaMelnkalneSenmartēna" +
- "MadagaskaraMāršala salasMaķedonijaMaliMjanma (Birma)MongolijaĶīnas īpašā" +
- "s pārvaldes apgabals MakaoZiemeļu Marianas salasMartinikaMauritānijaMont" +
- "serrataMaltaMaurīcijaMaldīvijaMalāvijaMeksikaMalaizijaMozambikaNamībijaJ" +
- "aunkaledonijaNigēraNorfolkas salaNigērijaNikaragvaNīderlandeNorvēģijaNep" +
- "ālaNauruNiueJaunzēlandeOmānaPanamaPeruFranču PolinēzijaPapua-Jaungvinej" +
- "aFilipīnasPakistānaPolijaSenpjēra un MikelonaPitkērnaPuertorikoPalestīna" +
- "PortugālePalauParagvajaKataraOkeānijas attālās salasReinjonaRumānijaSerb" +
- "ijaKrievijaRuandaSaūda ArābijaZālamana salasŠeišelu salasSudānaZviedrija" +
- "SingapūraSv.Helēnas salaSlovēnijaSvalbāra un Jana Majena salaSlovākijaSj" +
- "erraleoneSanmarīnoSenegālaSomālijaSurinamaDienvidsudānaSantome un Prinsi" +
- "piSalvadoraSintmārtenaSīrijaSvazilendaTristana da Kuņas salasTērksas un " +
- "Kaikosas salasČadaFrancijas Dienvidjūru ZemesTogoTaizemeTadžikistānaToke" +
- "lauAustrumtimoraTurkmenistānaTunisijaTongaTurcijaTrinidāda un TobāgoTuva" +
- "luTaivānaTanzānijaUkrainaUgandaASV Aizjūras salasAmerikas Savienotās Val" +
- "stisUrugvajaUzbekistānaVatikānsSentvinsenta un GrenadīnasVenecuēlaBritu " +
- "VirdžīnasASV VirdžīnasVjetnamaVanuatuVolisa un FutunaSamoaKosovaJemenaMa" +
- "jotaDienvidāfrikas RepublikaZambijaZimbabvenezināms reģionspasauleĀfrika" +
- "ZiemeļamerikaDienvidamerikaOkeānijaRietumāfrikaCentrālamerikaAustrumāfri" +
- "kaZiemeļāfrikaVidusāfrikaDienvidāfrikaAmerikaAmerikas ziemeļu daļaKarību" +
- " jūras reģionsAustrumāzijaDienvidāzijaCentrālaustrumāzijaDienvideiropaAu" +
- "strālāzijaMelanēzijaMikronēzijas reģionsPolinēzijaĀzijaCentrālāzijaRietu" +
- "māzijaEiropaAustrumeiropaZiemeļeiropaRietumeiropaLatīņamerika"
-
-var lvRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0015, 0x001b, 0x0035, 0x0041, 0x0053, 0x005a, 0x0063,
- 0x006c, 0x0081, 0x0087, 0x0091, 0x009b, 0x00ac, 0x00b4, 0x00bf,
- 0x00c4, 0x00d1, 0x00df, 0x00f5, 0x00fe, 0x0109, 0x0112, 0x011d,
- 0x0127, 0x012f, 0x0136, 0x013c, 0x0148, 0x0155, 0x015c, 0x0165,
- 0x017f, 0x0189, 0x0195, 0x019c, 0x01a6, 0x01af, 0x01bb, 0x01c1,
- 0x01c8, 0x01e1, 0x01ef, 0x0209, 0x021a, 0x0221, 0x022c, 0x0236,
- 0x023c, 0x0245, 0x024b, 0x0254, 0x0263, 0x026c, 0x0270, 0x0279,
- 0x0280, 0x0290, 0x0295, 0x029c, 0x02a3, 0x02b7, 0x02c1, 0x02c8,
- // Entry 40 - 7F
- 0x02d0, 0x02db, 0x02e5, 0x02f6, 0x02fe, 0x0306, 0x030e, 0x031b,
- 0x0323, 0x032b, 0x0333, 0x0345, 0x034b, 0x0351, 0x0360, 0x036c,
- 0x0377, 0x037f, 0x0385, 0x0393, 0x039b, 0x03a2, 0x03b1, 0x03ba,
- 0x03be, 0x03c9, 0x03d2, 0x03d9, 0x03e0, 0x03e9, 0x03fe, 0x0407,
- 0x0433, 0x043c, 0x0441, 0x044f, 0x0456, 0x0484, 0x049e, 0x04a7,
- 0x04b1, 0x04b6, 0x04bf, 0x04ce, 0x04d9, 0x04df, 0x04e7, 0x04eb,
- 0x04f1, 0x0511, 0x0517, 0x051d, 0x0525, 0x052d, 0x0537, 0x053e,
- 0x0548, 0x054f, 0x0555, 0x0561, 0x056a, 0x0572, 0x057e, 0x0591,
- // Entry 80 - BF
- 0x059e, 0x05ab, 0x05b2, 0x05bf, 0x05ca, 0x05cf, 0x05d6, 0x05e1,
- 0x05ee, 0x05f7, 0x0600, 0x0606, 0x060d, 0x0618, 0x061f, 0x0626,
- 0x062c, 0x0632, 0x0639, 0x0642, 0x064d, 0x0658, 0x0667, 0x0672,
- 0x0676, 0x0684, 0x068d, 0x06b8, 0x06cf, 0x06d8, 0x06e4, 0x06ef,
- 0x06f4, 0x06fe, 0x0708, 0x0711, 0x0718, 0x0721, 0x072a, 0x0733,
- 0x0741, 0x0748, 0x0756, 0x075f, 0x0768, 0x0773, 0x077e, 0x0785,
- 0x078a, 0x078e, 0x079a, 0x07a0, 0x07a6, 0x07aa, 0x07bd, 0x07ce,
- 0x07d8, 0x07e2, 0x07e8, 0x07fd, 0x0806, 0x0810, 0x081a, 0x0824,
- // Entry C0 - FF
- 0x0829, 0x0832, 0x0838, 0x0852, 0x085a, 0x0863, 0x086a, 0x0872,
- 0x0878, 0x0887, 0x0896, 0x08a5, 0x08ac, 0x08b5, 0x08bf, 0x08cf,
- 0x08d9, 0x08f6, 0x0900, 0x090b, 0x0915, 0x091e, 0x0927, 0x092f,
- 0x093d, 0x0950, 0x0959, 0x0965, 0x096c, 0x0976, 0x098e, 0x09a8,
- 0x09ad, 0x09c9, 0x09cd, 0x09d4, 0x09e2, 0x09e9, 0x09f6, 0x0a04,
- 0x0a0c, 0x0a11, 0x0a18, 0x0a2d, 0x0a33, 0x0a3b, 0x0a45, 0x0a4c,
- 0x0a52, 0x0a65, 0x0a81, 0x0a89, 0x0a95, 0x0a9e, 0x0ab9, 0x0ac3,
- 0x0ad4, 0x0ae3, 0x0aeb, 0x0af2, 0x0b02, 0x0b07, 0x0b0d, 0x0b13,
- // Entry 100 - 13F
- 0x0b19, 0x0b32, 0x0b39, 0x0b41, 0x0b53, 0x0b5a, 0x0b61, 0x0b6f,
- 0x0b7d, 0x0b86, 0x0b93, 0x0ba2, 0x0bb0, 0x0bbe, 0x0bca, 0x0bd8,
- 0x0bdf, 0x0bf6, 0x0c0d, 0x0c1a, 0x0c27, 0x0c3c, 0x0c49, 0x0c57,
- 0x0c62, 0x0c78, 0x0c83, 0x0c89, 0x0c97, 0x0ca3, 0x0ca9, 0x0cb6,
- 0x0cc3, 0x0ccf, 0x0cdd,
-} // Size: 606 bytes
-
-var mkRegionStr string = "" + // Size: 6058 bytes
- "Остров АсенсионАндораОбединети Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
- "аАнгвилаАлбанијаЕрменијаХоландски АнтилиАнголаАнтарктикАргентинаАмерика" +
- "нска СамоаАвстријаАвстралијаАрубаОландски островиАзербејџанБосна и Херц" +
- "еговинаБарбадосБангладешБелгијаБуркина ФасоБугаријаБахреинБурундиБенинС" +
- "вети ВартоломејБермудиБрунејБоливијаКарипска ХоландијаБразилБахамиБутан" +
- "Остров БувеБоцванаБелорусијаБелизеКанадаКокосови (Килиншки) ОстровиКонг" +
- "о - КиншасаЦентралноафриканска РепубликаКонго - БразавилШвајцаријаБрего" +
- "т на Слоновата КоскаКукови ОстровиЧилеКамерунКинаКолумбијаОстров Клипер" +
- "тонКостарикаКубаЗелен ’РтКурасаоБожиќен ОстровКипарРепублика ЧешкаГерма" +
- "нијаДиего ГарсијаЏибутиДанскаДоминикаДоминиканска РепубликаАлжирСеута и" +
- " МелиљаЕквадорЕстонијаЕгипетЗападна СахараЕритрејаШпанијаЕтиопијаЕвропск" +
- "а унијаФинскаФиџиФолкландски ОстровиМикронезијаФарски ОстровиФранцијаГа" +
- "бонОбединето КралствоГренадаГрузијаФранцуска ГвајанаГернзиГанаГибралтар" +
- "ГренландГамбијаГвинејаГвадалупеЕкваторска ГвинејаГрцијаЈужна Џорџија и " +
- "Јужни Сендвички ОстровиГватемалаГвамГвинеја-БисауГвајанаХонг Конг С.А.Р" +
- " КинаОстров Херд и Острови МакдоналдХондурасХрватскаХаитиУнгаријаКанарск" +
- "и ОстровиИндонезијаИрскаИзраелОстров МанИндијаБританска Индоокеанска Те" +
- "риторијаИракИранИсландИталијаЏерсиЈамајкаЈорданЈапонијаКенијаКиргистанК" +
- "амбоџаКирибатиКоморски ОстровиСвети Кристофер и НевисСеверна КорејаЈужн" +
- "а КорејаКувајтКајмански ОстровиКазахстанЛаосЛибанСвета ЛуцијаЛихтенштај" +
- "нШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛатвијаЛибијаМарокоМонакоМол" +
- "давијаЦрна ГораСент МартинМадагаскарМаршалски ОстровиМакедонијаМалиМјан" +
- "мар (Бурма)МонголијаМакао С.А.Р КинаСеверни Маријански ОстровиМартиникМ" +
- "авританијаМонсератМалтаМаврициусМалдивиМалавиМексикоМалезијаМозамбикНам" +
- "ибијаНова КаледонијаНигерНорфолшки ОстровНигеријаНикарагваХоландијаНорв" +
- "ешкаНепалНауруНиуеНов ЗеландОманПанамаПеруФранцуска ПолинезијаПапуа Нов" +
- "а ГвинејаФилипиниПакистанПолскаСент Пјер и МикеланПиткернски ОстровиПор" +
- "торикоПалестински територииПортугалијаПалауПарагвајКатарЗависни земји в" +
- "о ОкеанијаРијунионРоманијаСрбијаРусијаРуандаСаудиска АрабијаСоломонски " +
- "ОстровиСејшелиСуданШведскаСингапурСвета ЕленаСловенијаСвалбард и Жан Ме" +
- "јенСловачкаСиера ЛеонеСан МариноСенегалСомалијаСуринамЈужен СуданСао То" +
- "ме и ПринсипеЕл СалвадорСвети МартинСиријаСвазилендТристан да КуњаОстро" +
- "ви Туркс и КајкосЧадФранцуски Јужни територииТогоТајландТаџикистанТокел" +
- "ауИсточен Тимор (Тимор Лесте)ТуркменистанТунисТонгаТурцијаТринидад и То" +
- "багоТувалуТајванТанзанијаУкраинаУгандаАмерикански територии во Пацифико" +
- "тСоединети Американски ДржавиУругвајУзбекистанВатиканСвети Винсент и Гр" +
- "енадинитеВенецуелаБритански Девствени ОстровиАмерикански Девствени Остр" +
- "овиВиетнамВануатуВалис и ФутунаСамоаКосовоЈеменМајотЈужноафриканска Реп" +
- "убликаЗамбијаЗимбабвеНепознат регионСветАфрикаСеверна АмерикаЈужна Амер" +
- "икаОкеанијаЗападна АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаС" +
- "редна АфрикаЈужна АфрикаАмерикиСеверна континентална АмерикаКарибиИсточ" +
- "на АзијаЈужна АзијаЈугоисточна АзијаЈужна ЕвропаАвстралазијаМеланезијаМ" +
- "икронезиски регионПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсто" +
- "чна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
-
-var mkRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
- 0x00bb, 0x00da, 0x00e6, 0x00f8, 0x010a, 0x012b, 0x013b, 0x014f,
- 0x0159, 0x0178, 0x018c, 0x01b0, 0x01c0, 0x01d2, 0x01e0, 0x01f7,
- 0x0207, 0x0215, 0x0223, 0x022d, 0x024c, 0x025a, 0x0266, 0x0276,
- 0x0299, 0x02a5, 0x02b1, 0x02bb, 0x02d0, 0x02de, 0x02f2, 0x02fe,
- 0x030a, 0x033c, 0x0357, 0x0390, 0x03ad, 0x03c1, 0x03f0, 0x040b,
- 0x0413, 0x0421, 0x0429, 0x043b, 0x045a, 0x046c, 0x0474, 0x0486,
- 0x0494, 0x04af, 0x04b9, 0x04d6, 0x04e8, 0x0501, 0x050d, 0x0519,
- // Entry 40 - 7F
- 0x0529, 0x0554, 0x055e, 0x0578, 0x0586, 0x0596, 0x05a2, 0x05bd,
- 0x05cd, 0x05db, 0x05eb, 0x0606, 0x0612, 0x061a, 0x063f, 0x0655,
- 0x0670, 0x0680, 0x068a, 0x06ad, 0x06bb, 0x06c9, 0x06ea, 0x06f6,
- 0x06fe, 0x0710, 0x0720, 0x072e, 0x073c, 0x074e, 0x0771, 0x077d,
- 0x07c6, 0x07d8, 0x07e0, 0x07f9, 0x0807, 0x082a, 0x0864, 0x0874,
- 0x0884, 0x088e, 0x089e, 0x08bd, 0x08d1, 0x08db, 0x08e7, 0x08fa,
- 0x0906, 0x0946, 0x094e, 0x0956, 0x0962, 0x0970, 0x097a, 0x0988,
- 0x0994, 0x09a4, 0x09b0, 0x09c2, 0x09d0, 0x09e0, 0x09ff, 0x0a2a,
- // Entry 80 - BF
- 0x0a45, 0x0a5c, 0x0a68, 0x0a89, 0x0a9b, 0x0aa3, 0x0aad, 0x0ac4,
- 0x0ada, 0x0aeb, 0x0afb, 0x0b07, 0x0b19, 0x0b2d, 0x0b3b, 0x0b47,
- 0x0b53, 0x0b5f, 0x0b71, 0x0b82, 0x0b97, 0x0bab, 0x0bcc, 0x0be0,
- 0x0be8, 0x0c03, 0x0c15, 0x0c31, 0x0c63, 0x0c73, 0x0c89, 0x0c99,
- 0x0ca3, 0x0cb5, 0x0cc3, 0x0ccf, 0x0cdd, 0x0ced, 0x0cfd, 0x0d0d,
- 0x0d2a, 0x0d34, 0x0d53, 0x0d63, 0x0d75, 0x0d87, 0x0d97, 0x0da1,
- 0x0dab, 0x0db3, 0x0dc6, 0x0dce, 0x0dda, 0x0de2, 0x0e09, 0x0e2b,
- 0x0e3b, 0x0e4b, 0x0e57, 0x0e7a, 0x0e9d, 0x0eaf, 0x0ed8, 0x0eee,
- // Entry C0 - FF
- 0x0ef8, 0x0f08, 0x0f12, 0x0f41, 0x0f51, 0x0f61, 0x0f6d, 0x0f79,
- 0x0f85, 0x0fa4, 0x0fc7, 0x0fd5, 0x0fdf, 0x0fed, 0x0ffd, 0x1012,
- 0x1024, 0x1049, 0x1059, 0x106e, 0x1081, 0x108f, 0x109f, 0x10ad,
- 0x10c2, 0x10e5, 0x10fa, 0x1111, 0x111d, 0x112f, 0x114b, 0x1174,
- 0x117a, 0x11aa, 0x11b2, 0x11c0, 0x11d4, 0x11e2, 0x1213, 0x122b,
- 0x1235, 0x123f, 0x124d, 0x126d, 0x1279, 0x1285, 0x1297, 0x12a5,
- 0x12b1, 0x12f2, 0x1328, 0x1336, 0x134a, 0x1358, 0x138b, 0x139d,
- 0x13d1, 0x1409, 0x1417, 0x1425, 0x143f, 0x1449, 0x1455, 0x145f,
- // Entry 100 - 13F
- 0x1469, 0x149a, 0x14a8, 0x14b8, 0x14d5, 0x14dd, 0x14e9, 0x1506,
- 0x151f, 0x152f, 0x154a, 0x156b, 0x1586, 0x15a1, 0x15ba, 0x15d1,
- 0x15df, 0x1617, 0x1623, 0x163c, 0x1651, 0x1672, 0x1689, 0x16a1,
- 0x16b5, 0x16da, 0x16ee, 0x16f8, 0x1715, 0x172e, 0x173a, 0x1755,
- 0x1770, 0x178b, 0x17aa,
-} // Size: 606 bytes
-
-var mlRegionStr string = "" + // Size: 9275 bytes
- "അസൻഷൻ ദ്വീപ്അന്റോറയുണൈറ്റഡ് അറബ് എമിറൈറ്റ്\u200cസ്അഫ്\u200cഗാനിസ്ഥാൻആൻറി" +
- "ഗ്വയും ബർബുഡയുംആൻഗ്വില്ലഅൽബേനിയഅർമേനിയനെതർലൻഡ്സ് ആൻറിലിസ്അംഗോളഅൻറാർട്ട" +
- "ിക്കഅർജൻറീനഅമേരിക്കൻ സമോവഓസ്ട്രിയഓസ്\u200cട്രേലിയഅറൂബഅലൻഡ് ദ്വീപുകൾഅസർ" +
- "ബൈജാൻബോസ്നിയയും ഹെർസഗോവിനയുംബാർബഡോസ്ബംഗ്ലാദേശ്ബെൽജിയംബുർക്കിനാ ഫാസോബൾഗ" +
- "േറിയബഹ്റിൻബറുണ്ടിബെനിൻസെന്റ് ബാർത്തലമിബർമുഡബ്രൂണൈബൊളീവിയബൊണെയ്ർ, സിന്റ" +
- "് യുസ്റ്റേഷ്യസ്, സാബ എന്നിവബ്രസീൽബഹാമാസ്ഭൂട്ടാൻബൗവെട്ട് ദ്വീപ്ബോട്സ്വാ" +
- "നബെലറൂസ്ബെലീസ്കാനഡകോക്കസ് (കീലിംഗ്) ദ്വീപുകൾകോംഗോ - കിൻഷാസസെൻട്രൽ ആഫ്ര" +
- "ിക്കൻ റിപ്പബ്ലിക്കോംഗോ - ബ്രാസവില്ലിസ്വിറ്റ്സർലാൻഡ്കോട്ട് ഡി വാർകുക്ക്" +
- " ദ്വീപുകൾചിലികാമറൂൺചൈനകൊളംബിയക്ലിപ്പെർട്ടൻ ദ്വീപ്കോസ്റ്ററിക്കക്യൂബകേപ്പ്" +
- " വെർദെകുറാകാവോക്രിസ്മസ് ദ്വീപ്സൈപ്രസ്ചെക്ക് റിപ്പബ്ലിക്ജർമനിഡീഗോ ഗ്രാഷ്യ" +
- "ദിജിബൗട്ടിഡെൻമാർക്ക്ഡൊമിനിക്കഡൊമിനിക്കൻ റിപ്പബ്ലിക്അൾജീരിയസെയൂത്ത ആൻഡ്" +
- " മെലിയഇക്വഡോർഎസ്റ്റോണിയ\u200dഈജിപ്ത്പശ്ചിമ സഹാറഎറിത്രിയസ്\u200cപെയിൻഎത്യ" +
- "ോപ്യയൂറോപ്യൻ യൂണിയൻഫിൻലാൻഡ്ഫിജിഫാക്ക്\u200cലാന്റ് ദ്വീപുകൾമൈക്രോനേഷ്യഫ" +
- "റോ ദ്വീപുകൾഫ്രാൻസ്ഗാബൺയുണൈറ്റഡ് കിംഗ്ഡംഗ്രനേഡജോർജ്ജിയഫ്രഞ്ച് ഗയാനഗേൺസി" +
- "ഘാനജിബ്രാൾട്ടർഗ്രീൻലാൻറ്ഗാംബിയഗിനിയഗ്വാഡലൂപ്പ്ഇക്വറ്റോറിയൽ ഗിനിയഗ്രീസ്" +
- "ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്\u200cവിച്ച് ദ്വീപുകളുംഗ്വാട്ടിമാലഗ്വാം" +
- "ഗിനിയ-ബിസൗഗയാനഹോങ്കോങ്ങ് (SAR) ചൈനഹിയേർഡും മക്\u200cഡൊണാൾഡ് ദ്വീപുകളും" +
- "ഹോണ്ടുറാസ്ക്രൊയേഷ്യഹെയ്തിഹംഗറികാനറി ദ്വീപുകൾഇന്തോനേഷ്യഅയർലാൻഡ്ഇസ്രായേൽ" +
- "ഐൽ ഓഫ് മാൻഇന്ത്യബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശംഇറാഖ്ഇറാൻഐസ്\u200c" +
- "ലാന്റ്ഇറ്റലിജേഴ്സിജമൈക്കജോർദ്ദാൻജപ്പാൻകെനിയകിർഗിസ്ഥാൻകംബോഡിയകിരിബാട്ടി" +
- "കോമൊറോസ്സെന്റ് കിറ്റ്\u200cസും നെവിസുംഉത്തരകൊറിയദക്ഷിണകൊറിയകുവൈറ്റ്കേമ" +
- "ാൻ ദ്വീപുകൾകസാഖിസ്ഥാൻലാവോസ്ലെബനൻസെൻറ് ലൂസിയലിച്ചൺസ്റ്റൈൻശ്രീലങ്കലൈബീരി" +
- "യലെസോതോലിത്വാനിയലക്സംബർഗ്ലാറ്റ്വിയലിബിയമൊറോക്കൊമൊണാക്കോമൾഡോവമോണ്ടെനെഗ്" +
- "രോസെൻറ് മാർട്ടിൻമഡഗാസ്കർമാർഷൽ\u200d\u200d ദ്വീപുകൾമാസിഡോണിയമാലിമ്യാൻമാ" +
- "ർ (ബർമ്മ)മംഗോളിയമക്കാവു (SAR) ചൈനഉത്തര മറിയാനാ ദ്വീപുകൾമാർട്ടിനിക്ക്മൗ" +
- "റിറ്റാനിയമൊണ്ടെസരത്ത്മാൾട്ടമൗറീഷ്യസ്മാലിദ്വീപ്മലാവിമെക്സിക്കോമലേഷ്യമൊസ" +
- "ാംബിക്ക്നമീബിയപുതിയ കാലിഡോണിയനൈജർനോർഫോക് ദ്വീപ്നൈജീരിയനിക്കരാഗ്വനെതർലാ" +
- "ൻഡ്\u200cസ്നോർവെനേപ്പാൾനൗറുന്യൂയിന്യൂസിലാൻറ്ഒമാൻപനാമപെറുഫ്രഞ്ച് പോളിനേ" +
- "ഷ്യപാപ്പുവ ന്യൂ ഗിനിയഫിലിപ്പൈൻസ്പാക്കിസ്ഥാൻപോളണ്ട്സെന്റ് പിയറിയും മിക്" +
- "കലണുംപിറ്റ്\u200cകെയ്\u200cൻ ദ്വീപുകൾപ്യൂർട്ടോ റിക്കോപാലസ്\u200cതീൻ പ്" +
- "രദേശങ്ങൾപോർച്ചുഗൽപലാവുപരാഗ്വേഖത്തർദ്വീപസമൂഹംറീയൂണിയൻറൊമാനിയസെർബിയറഷ്യറ" +
- "ുവാണ്ടസൗദി അറേബ്യസോളമൻ\u200d ദ്വീപുകൾസെയ്\u200cഷെൽസ്സുഡാൻസ്വീഡൻസിംഗപ്പ" +
- "ുർസെൻറ് ഹെലീനസ്ലോവേനിയസ്വാൽബാഡും ജാൻ മായേനുംസ്ലോവാക്യസിയെറ ലിയോൺസാൻ മറ" +
- "ിനോസെനഗൽസോമാലിയസുരിനെയിംദക്ഷിണ സുഡാൻസാവോ ടോമും പ്രിൻസിപെയുംഎൽ സാൽവദോർസ" +
- "ിന്റ് മാർട്ടെൻസിറിയസ്വാസിലാൻറ്ട്രസ്റ്റൻ ഡ കൂനടർക്ക്\u200cസും കെയ്" +
- "\u200cക്കോ ദ്വീപുകളുംഛാഡ്ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശംടോഗോതായ്\u200cലാൻഡ്താജി" +
- "ക്കിസ്ഥാൻടോക്കെലൂതിമോർ-ലെസ്റ്റെതുർക്ക്മെനിസ്ഥാൻടുണീഷ്യടോംഗതുർക്കിട്രിന" +
- "ിഡാഡും ടുബാഗോയുംടുവാലുതായ്\u200cവാൻടാൻസാനിയഉക്രെയ്\u200cൻഉഗാണ്ടയു.എസ്." +
- " ദ്വീപസമൂഹങ്ങൾഅമേരിക്കൻ ഐക്യനാടുകൾഉറുഗ്വേഉസ്\u200cബെക്കിസ്ഥാൻവത്തിക്കാൻസ" +
- "െന്റ് വിൻസെന്റും ഗ്രനെഡൈൻസുംവെനിസ്വേലബ്രിട്ടീഷ് വെർജിൻ ദ്വീപുകൾയു.എസ്." +
- " വെർജിൻ ദ്വീപുകൾവിയറ്റ്നാംവന്വാതുവാലിസ് ആന്റ് ഫ്യൂച്യുനസമോവകൊസോവൊയെമൻമയോ" +
- "ട്ടിദക്ഷിണാഫ്രിക്കസാംബിയസിംബാബ്\u200cവേഅജ്ഞാത പ്രദേശംലോകംആഫ്രിക്കവടക്ക" +
- "േ അമേരിക്കതെക്കേ അമേരിക്കഓഷ്യാനിയപശ്ചിമ ആഫ്രിക്കമദ്ധ്യഅമേരിക്കകിഴക്കൻ " +
- "ആഫ്രിക്കഉത്തരാഫ്രിക്കമദ്ധ്യആഫ്രിക്കതെക്കേ ആഫ്രിക്കഅമേരിക്കകൾവടക്കൻ അമേ" +
- "രിക്കകരീബിയൻകിഴക്കൻ ഏഷ്യതെക്കേ ഏഷ്യതെക്ക്-കിഴക്കൻ ഏഷ്യതെക്കേ യൂറോപ്പ്ഓ" +
- "സ്\u200cട്രേലിയയും ന്യൂസിലാൻഡുംമെലനേഷ്യമൈക്രോനേഷ്യൻ പ്രദേശംപോളിനേഷ്യഏഷ" +
- "്യമദ്ധ്യേഷ്യപശ്ചിമേഷ്യയൂറോപ്പ്കിഴക്കൻ യൂറോപ്പ്വടക്കേ യൂറോപ്പ്പശ്ചിമ യൂ" +
- "റോപ്പ്ലാറ്റിനമേരിക്ക"
-
-var mlRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0022, 0x0034, 0x0081, 0x00a8, 0x00df, 0x00fa, 0x010f,
- 0x0124, 0x015b, 0x016a, 0x018e, 0x01a3, 0x01cb, 0x01e3, 0x0204,
- 0x0210, 0x0238, 0x0250, 0x0293, 0x02ab, 0x02c9, 0x02de, 0x0306,
- 0x031b, 0x032d, 0x0342, 0x0351, 0x037f, 0x038e, 0x03a0, 0x03b5,
- 0x0424, 0x0436, 0x044b, 0x0460, 0x048b, 0x04a6, 0x04bb, 0x04cd,
- 0x04d9, 0x051f, 0x0543, 0x0596, 0x05c9, 0x05f6, 0x0619, 0x0644,
- 0x0650, 0x0662, 0x066b, 0x0680, 0x06ba, 0x06de, 0x06ed, 0x070f,
- 0x0727, 0x0755, 0x076a, 0x079e, 0x07ad, 0x07cf, 0x07ed, 0x080b,
- // Entry 40 - 7F
- 0x0826, 0x0866, 0x087b, 0x08ad, 0x08c2, 0x08e3, 0x08f8, 0x0917,
- 0x092f, 0x0947, 0x095f, 0x098a, 0x09a2, 0x09ae, 0x09ee, 0x0a0f,
- 0x0a31, 0x0a46, 0x0a52, 0x0a83, 0x0a95, 0x0aad, 0x0acf, 0x0ade,
- 0x0ae7, 0x0b08, 0x0b26, 0x0b38, 0x0b47, 0x0b68, 0x0b9c, 0x0bae,
- 0x0c39, 0x0c5a, 0x0c69, 0x0c85, 0x0c91, 0x0cbf, 0x0d18, 0x0d36,
- 0x0d51, 0x0d63, 0x0d72, 0x0d9a, 0x0db8, 0x0dd0, 0x0de8, 0x0e02,
- 0x0e14, 0x0e7a, 0x0e89, 0x0e95, 0x0eb3, 0x0ec5, 0x0ed7, 0x0ee9,
- 0x0f01, 0x0f13, 0x0f22, 0x0f40, 0x0f55, 0x0f73, 0x0f8b, 0x0fd2,
- // Entry 80 - BF
- 0x0ff0, 0x1011, 0x1029, 0x1051, 0x106f, 0x1081, 0x1090, 0x10af,
- 0x10d6, 0x10ee, 0x1103, 0x1115, 0x1130, 0x114b, 0x1166, 0x1175,
- 0x118d, 0x11a5, 0x11b4, 0x11d8, 0x1200, 0x1218, 0x1246, 0x1261,
- 0x126d, 0x1297, 0x12ac, 0x12d1, 0x130f, 0x1336, 0x1357, 0x137b,
- 0x138d, 0x13a8, 0x13c6, 0x13d5, 0x13f3, 0x1405, 0x1426, 0x1438,
- 0x1463, 0x146f, 0x1497, 0x14ac, 0x14ca, 0x14ee, 0x14fd, 0x1512,
- 0x151e, 0x1530, 0x1551, 0x155d, 0x1569, 0x1575, 0x15a6, 0x15d8,
- 0x15f9, 0x161a, 0x162f, 0x1676, 0x16b6, 0x16e4, 0x171e, 0x1739,
- // Entry C0 - FF
- 0x1748, 0x175d, 0x176c, 0x178a, 0x17a2, 0x17b7, 0x17c9, 0x17d5,
- 0x17ea, 0x1809, 0x1834, 0x1852, 0x1861, 0x1873, 0x188e, 0x18ad,
- 0x18c8, 0x1906, 0x1921, 0x1940, 0x1959, 0x1968, 0x197d, 0x1998,
- 0x19ba, 0x19fb, 0x1a17, 0x1a42, 0x1a51, 0x1a72, 0x1a9b, 0x1af4,
- 0x1b00, 0x1b44, 0x1b50, 0x1b6e, 0x1b95, 0x1bad, 0x1bd5, 0x1c05,
- 0x1c1a, 0x1c26, 0x1c3b, 0x1c78, 0x1c8a, 0x1ca2, 0x1cba, 0x1cd5,
- 0x1ce7, 0x1d20, 0x1d5a, 0x1d6f, 0x1d9c, 0x1dba, 0x1e0d, 0x1e28,
- 0x1e72, 0x1eaf, 0x1ecd, 0x1ee2, 0x1f20, 0x1f2c, 0x1f3e, 0x1f4a,
- // Entry 100 - 13F
- 0x1f5f, 0x1f89, 0x1f9b, 0x1fb9, 0x1fe1, 0x1fed, 0x2005, 0x2030,
- 0x205b, 0x2073, 0x209e, 0x20c8, 0x20f6, 0x211d, 0x2147, 0x2172,
- 0x2190, 0x21bb, 0x21d0, 0x21f2, 0x2211, 0x2246, 0x2271, 0x22c0,
- 0x22d8, 0x2312, 0x232d, 0x2339, 0x2357, 0x2375, 0x238d, 0x23bb,
- 0x23e6, 0x2411, 0x243b,
-} // Size: 606 bytes
-
-var mnRegionStr string = "" + // Size: 5487 bytes
- "Аскенсион АралАндорраАрабын Нэгдсэн ЭмиратАфганистанАнтигуа ба БарбудаАн" +
- "гилаАлбаниАрменАнголАнтарктикАргентинАмерикийн СамоаАвстриАвстралиАруба" +
- "Аландын АрлуудАзербайжанБосни ХерцеговинБарбадосБангладешБелгиБуркина ф" +
- "асоБолгарБахрейнБурундиБенинСент БартельмиБермудБрунейБоливиКарибын Нид" +
- "ерландБразилБагамБутанБуветын АрлуудБотсванаБеларусБелизКанадКокос (Кий" +
- "линг) АрлуудКонго-КиншасаТөв Африкийн Бүгд Найрамдах УлсКонго Браззавил" +
- "ьШвейцариКот д’ИвуарКүүкийн АрлуудЧилиКамерунХятадКолумбКлиппертон Арал" +
- "Коста РикаКубаКапе ВердеКуракаоЗул Сарын АралКипрБүгд Найрамдах Чех Улс" +
- "ГерманДиего ГарсиаДжибутиДаниДоминикБүгд Найрамдах ДоминиканАлжирСеута " +
- "ба МелильяЭквадорЭстонЕгипетБаруун СахарЭритриИспаниЭтиопЕвропын Холбоо" +
- "ФинландФижиФолькландын АрлуудМикронезиФароэ АрлуудФранцГабонИх БританиГ" +
- "ренадаГүржФранцын ГайанаГернсиГанаГибралтарГренландГамбиГвинейГваделупЭ" +
- "кваторын ГвинейГрекӨмнөд Жоржиа ба Өмнөд Сэндвичийн АрлуудГватемалГуамГ" +
- "виней-БисауГайанаБНХАУ-ын Тусгай захиргааны бүс Хонг КонгХэрд болон Мак" +
- "доналд АрлуудГондурасХорватГаитиУнгарКанарын арлуудИндонезиИрландИзраил" +
- "ьМэн АралЭнэтхэгБританийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүд" +
- "ИракИранИсландИталиЖерсиЯмайкЙорданЯпонКениКыргызстанКамбожКирибатиКомо" +
- "росСент-Киттс ба НевисХойд СолонгосӨмнөд СолонгосКувейтКайманы АрлуудКа" +
- "захстанЛаосЛиванСент ЛюсиаЛихтенштейнШри ЛанкаЛибериЛесотоЛитваЛюксембу" +
- "ргЛатвиЛивиМароккоМонакоМолдавМонтенегроСент-МартинМадагаскарМаршаллын " +
- "АрлуудМакедонМалиМьянмар (Бурма)МонголБНХАУ-ын Тусгай захиргааны бүс Ма" +
- "каоХойд Марианы АрлуудМартиникМавританиМонтсерратМальтаМавритусМальдивМ" +
- "алавиМексикМалайзМозамбикНамибиШинэ КаледониНигерНорфолк АрлуудНигериНи" +
- "карагуаНидерландНорвегиБалбаНауруНиуэШинэ ЗеландОманПанамПеруФранцын По" +
- "линезПапуа Шинэ ГвинейФилиппинПакистанПольшСэнт Пьер ба МикелонПиткэрн " +
- "АрлуудПуэрто РикоПалестины нутаг дэвсгэрүүдПортугалПалауПарагвайКатарНо" +
- "мхон далайг тойрсон улс орнуудРеюньонРумынСербиОросРуандаСаудын АрабСол" +
- "омоны АрлуудСейшелСуданШведСингапурСент ХеленаСловениСвалбард ба Ян Май" +
- "енСловакСьерра-ЛеонеСан-МариноСенегалСомалиСуринамӨмнөд СуданСан-Томе б" +
- "а ПринсипиЭль СальвадорСинт МартенСириСвазиландТристан да КуньяТурк ба " +
- "Кайкосын АрлуудЧадФранцын өмнөд газар нутагТогоТайландТажикистанТокелау" +
- "Тимор-ЛестеТуркменистанТунисТонгаТуркТринидад ба ТобагоТувалуТайванТанз" +
- "аниУкрайнУгандаАНУ-ын тойрсон арлуудАмерикийн Нэгдсэн УлсУругвайУзбекис" +
- "танВатикан хот улсСэнт Винсэнт ба ГренадинВенесуэлБританийн Виржиний Ар" +
- "луудАНУ-ын Виржиний АрлуудВьетнамВануатуУоллис ба ФутунаСамоаКосовоЙеме" +
- "нМайоттеӨмнөд Африк тивЗамбиЗимбабвеТодорхойгүйДэлхийАфрикХойд АмерикӨм" +
- "нөд АмерикНомхон далайн орнуудБаруун АфрикТөв АмерикЗүүн АфрикХойд Афри" +
- "кТөв АфрикӨмнөд АфрикАмерикХойд Америк тивКарибынЗүүн АзиӨмнөд АзиЗүүн " +
- "Өмнөд АзиӨмнөд ЕвропАвстралиазиМеланезиМикронезийн бүсПолинезАзиТөв Ази" +
- "Баруун АзиЕвропЗүүн ЕвропХойд ЕвропБаруун ЕвропЛатин Америк"
-
-var mnRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001b, 0x0029, 0x0051, 0x0065, 0x0087, 0x0093, 0x009f,
- 0x00a9, 0x00a9, 0x00b3, 0x00c5, 0x00d5, 0x00f2, 0x00fe, 0x010e,
- 0x0118, 0x0133, 0x0147, 0x0166, 0x0176, 0x0188, 0x0192, 0x01a9,
- 0x01b5, 0x01c3, 0x01d1, 0x01db, 0x01f6, 0x0202, 0x020e, 0x021a,
- 0x023b, 0x0247, 0x0251, 0x025b, 0x0276, 0x0286, 0x0294, 0x029e,
- 0x02a8, 0x02d0, 0x02e9, 0x0323, 0x0342, 0x0352, 0x0368, 0x0383,
- 0x038b, 0x0399, 0x03a3, 0x03af, 0x03cc, 0x03df, 0x03e7, 0x03fa,
- 0x0408, 0x0422, 0x042a, 0x0453, 0x045f, 0x0476, 0x0484, 0x048c,
- // Entry 40 - 7F
- 0x049a, 0x04c8, 0x04d2, 0x04f0, 0x04fe, 0x0508, 0x0514, 0x052b,
- 0x0537, 0x0543, 0x054d, 0x0568, 0x0576, 0x057e, 0x05a1, 0x05b3,
- 0x05ca, 0x05d4, 0x05de, 0x05f1, 0x05ff, 0x0607, 0x0622, 0x062e,
- 0x0636, 0x0648, 0x0658, 0x0662, 0x066e, 0x067e, 0x069d, 0x06a5,
- 0x06ee, 0x06fe, 0x0706, 0x071d, 0x0729, 0x0773, 0x07a6, 0x07b6,
- 0x07c2, 0x07cc, 0x07d6, 0x07f1, 0x0801, 0x080d, 0x081b, 0x082a,
- 0x0838, 0x08a0, 0x08a8, 0x08b0, 0x08bc, 0x08c6, 0x08d0, 0x08da,
- 0x08e6, 0x08ee, 0x08f6, 0x090a, 0x0916, 0x0926, 0x0934, 0x0957,
- // Entry 80 - BF
- 0x0970, 0x098b, 0x0997, 0x09b2, 0x09c4, 0x09cc, 0x09d6, 0x09e9,
- 0x09ff, 0x0a10, 0x0a1c, 0x0a28, 0x0a32, 0x0a46, 0x0a50, 0x0a58,
- 0x0a66, 0x0a72, 0x0a7e, 0x0a92, 0x0aa7, 0x0abb, 0x0ada, 0x0ae8,
- 0x0af0, 0x0b0b, 0x0b17, 0x0b5a, 0x0b7e, 0x0b8e, 0x0ba0, 0x0bb4,
- 0x0bc0, 0x0bd0, 0x0bde, 0x0bea, 0x0bf6, 0x0c02, 0x0c12, 0x0c1e,
- 0x0c37, 0x0c41, 0x0c5c, 0x0c68, 0x0c7a, 0x0c8c, 0x0c9a, 0x0ca4,
- 0x0cae, 0x0cb6, 0x0ccb, 0x0cd3, 0x0cdd, 0x0ce5, 0x0d02, 0x0d22,
- 0x0d32, 0x0d42, 0x0d4c, 0x0d71, 0x0d8c, 0x0da1, 0x0dd3, 0x0de3,
- // Entry C0 - FF
- 0x0ded, 0x0dfd, 0x0e07, 0x0e43, 0x0e51, 0x0e5b, 0x0e65, 0x0e6d,
- 0x0e79, 0x0e8e, 0x0eab, 0x0eb7, 0x0ec1, 0x0ec9, 0x0ed9, 0x0eee,
- 0x0efc, 0x0f21, 0x0f2d, 0x0f44, 0x0f57, 0x0f65, 0x0f71, 0x0f7f,
- 0x0f94, 0x0fb9, 0x0fd2, 0x0fe7, 0x0fef, 0x1001, 0x101f, 0x104a,
- 0x1050, 0x107f, 0x1087, 0x1095, 0x10a9, 0x10b7, 0x10cc, 0x10e4,
- 0x10ee, 0x10f8, 0x1100, 0x1122, 0x112e, 0x113a, 0x1148, 0x1154,
- 0x1160, 0x1187, 0x11af, 0x11bd, 0x11d1, 0x11ed, 0x121a, 0x122a,
- 0x125a, 0x1283, 0x1291, 0x129f, 0x12bd, 0x12c7, 0x12d3, 0x12dd,
- // Entry 100 - 13F
- 0x12eb, 0x1307, 0x1311, 0x1321, 0x1337, 0x1343, 0x134d, 0x1362,
- 0x1379, 0x139f, 0x13b6, 0x13c9, 0x13dc, 0x13ef, 0x1400, 0x1415,
- 0x1421, 0x143d, 0x144b, 0x145a, 0x146b, 0x1485, 0x149a, 0x14b0,
- 0x14c0, 0x14dd, 0x14eb, 0x14f1, 0x14fe, 0x1511, 0x151b, 0x152e,
- 0x1541, 0x1558, 0x156f,
-} // Size: 606 bytes
-
-var mrRegionStr string = "" + // Size: 8490 bytes
- "अ\u200dॅसेन्शियन बेटअँडोरासंयुक्त अरब अमीरातअफगाणिस्तानअँटिग्वा आणि बर्ब" +
- "ुडाअँग्विलाअल्बानियाअर्मेनियानेदरलँड्\u200dस अँ\u200dटिल्सअंगोलाअंटार्" +
- "क्टिकाअर्जेंटिनाअमेरिकन सामोआऑस्ट्रियाऑस्ट्रेलियाअरुबाअ\u200dॅलँड बेटे" +
- "अझरबैजानबोस्निया अणि हर्जेगोविनाबार्बाडोसबांगलादेशबेल्जियमबुर्किना फास" +
- "ोबल्गेरियाबहारीनबुरुंडीबेनिनसेंट बार्थेलेमीबर्मुडाब्रुनेईबोलिव्हियाकॅर" +
- "िबियन नेदरलँड्सब्राझिलबहामाजभूतानबोउवेट बेटबोट्सवानाबेलारूसबलिझकॅनडाको" +
- "कोस (कीलिंग) बेटेकाँगो - किंशासाकेंद्रीय अफ्रिकी प्रजासत्ताककाँगो - ब्" +
- "राझाविलेस्वित्झर्लंडआयव्हरी कोस्टकुक बेटेचिलीकॅमेरूनचीनकोलम्बियाक्लिपर" +
- "टोन बेटकोस्टा रिकाक्यूबाकेप व्हर्डेक्युरासाओख्रिसमस बेटसायप्रसझेक प्रज" +
- "ासत्ताकजर्मनीदिएगो गार्सियाजिबौटीडेन्मार्कडोमिनिकाडोमिनिकन प्रजासत्ताक" +
- "अल्जीरियास्यूटा आणि मेलिलाइक्वाडोरएस्टोनियाइजिप्तपश्चिम सहाराएरिट्रिया" +
- "स्पेनइथिओपियायुरोपीय संघफिनलंडफिजीफॉकलंड बेटेमायक्रोनेशियाफेरो बेटेफ्र" +
- "ान्सगॅबॉनयुनायटेड किंगडमग्रेनेडाजॉर्जियाफ्रेंच गयानाग्वेर्नसेघानाजिब्र" +
- "ाल्टरग्रीनलंडगाम्बियागिनीग्वाडेलोउपेइक्वेटोरियल गिनीग्रीसदक्षिण जॉर्जि" +
- "या आणि दक्षिण सँडविच बेटेग्वाटेमालागुआमगिनी-बिसाउगयानाहाँगकाँग एसएआर च" +
- "ीनहर्ड आणि मॅक्डोनाल्ड बेटेहोंडुरासक्रोएशियाहैतीहंगेरीकॅनरी बेटेइंडोने" +
- "शियाआयर्लंडइस्त्राइलइस्ले ऑफ मॅनभारतब्रिटिश हिंदी महासागर क्षेत्रइराकइ" +
- "राणआइसलँडइटलीजर्सीजमैकाजॉर्डनजपानकेनियाकिरगिझस्तानकंबोडियाकिरीबाटीकोमो" +
- "रोजसेंट किट्स आणि नेव्हिसउत्तर कोरियादक्षिण कोरियाकुवेतकेमन बेटेकझाकस्" +
- "तानलाओसलेबनॉनसेंट ल्यूसियालिक्टेनस्टाइनश्रीलंकालायबेरियालेसोथोलिथुआनिय" +
- "ालक्झेंबर्गलात्वियालिबियामोरोक्कोमोनॅकोमोल्डोव्हामोंटेनेग्रोसेंट मार्ट" +
- "िनमादागास्करमार्शल बेटेमॅसेडोनियामालीम्यानमार (बर्मा)मंगोलियामकाओ एसएआ" +
- "र चीनउत्तरी मारियाना बेटेमार्टिनिकमॉरिटानियामॉन्ट्सेराटमाल्टामॉरिशसमाल" +
- "दीवमलावीमेक्सिकोमलेशियामोझाम्बिकनामिबियान्यू कॅलेडोनियानाइजरनॉरफॉक बेट" +
- "नायजेरियानिकाराग्वानेदरलँडनॉर्वेनेपाळनाउरूनीयून्यूझीलंडओमानपनामापेरूफ्" +
- "रेंच पॉलिनेशियापापुआ न्यू गिनीफिलिपिन्सपाकिस्तानपोलंडसेंट पियरे आणि मि" +
- "क्वेलोनपिटकैर्न बेटेप्युएर्तो रिकोपॅलेस्टिनियन प्रदेशपोर्तुगालपलाऊपराग" +
- "्वेकतारआउटलाईंग ओशनियारियुनियनरोमानियासर्बियारशियारवांडासौदी अरबसोलोमन" +
- " बेटेसेशेल्ससुदानस्वीडनसिंगापूरसेंट हेलेनास्लोव्हेनियास्वालबर्ड आणि जान " +
- "मायेनस्लोव्हाकियासिएरा लिओनसॅन मरीनोसेनेगलसोमालियासुरिनामदक्षिण सुदानस" +
- "ाओ टोम आणि प्रिंसिपेअल साल्वाडोरसिंट मार्टेनसीरियास्वाझिलँडट्रिस्टन दा" +
- " कुन्हाटर्क्स आणि कैकोस बेटेचाडफ्रेंच दाक्षिणात्य प्रदेशटोगोथायलंडताजिकि" +
- "स्तानतोकेलाउपूर्व तिमोरतुर्कमेनिस्तानट्यूनिशियाटोंगातुर्कीत्रिनिदाद आण" +
- "ि टोबॅगोटुवालुतैवानटांझानियायुक्रेनयुगांडायू.एस. आउटलाइंग बेटेयुनायटेड" +
- " स्टेट्सउरुग्वेउझबेकिस्तानव्हॅटिकन सिटीसेंट व्हिन्सेंट आणि ग्रेनडाइन्सव्" +
- "हेनेझुएलाब्रिटिश व्हर्जिन बेटेयू.एस. व्हर्जिन बेटेव्हिएतनामवानुआतुवालि" +
- "स आणि फ्यूचूनासामोआकोसोव्होयेमेनमायोट्टेदक्षिण आफ्रिकाझाम्बियाझिम्बाब्" +
- "वेअज्ञात प्रदेशविश्वआफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओशनियापश्चिम आफ्" +
- "रिकामध्य अमेरिकापूर्व आफ्रिकाउत्तर आफ्रिकामध्य आफ्रिकादक्षिणी आफ्रिकाअ" +
- "मेरिकाउत्तरी अमेरिकाकॅरीबियनपूर्व आशियादक्षिण आशियादक्षिण पूर्व आशियाद" +
- "क्षिण युरोपऑस्\u200dट्रेलेशियामेलानेशियामायक्रोनेशियन प्रदेशपॉलिनेशिया" +
- "अशियामध्य आशियापश्चिम आशियायुरोपपूर्व युरोपउत्तर युरोपपश्चिम युरोपलॅटि" +
- "न अमेरिका"
-
-var mrRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x002b, 0x003d, 0x006f, 0x0090, 0x00c8, 0x00e0, 0x00fb,
- 0x0116, 0x014d, 0x015f, 0x0183, 0x01a1, 0x01c6, 0x01e1, 0x0202,
- 0x0211, 0x0230, 0x0248, 0x028c, 0x02a7, 0x02c2, 0x02da, 0x02ff,
- 0x031a, 0x032c, 0x0341, 0x0350, 0x037b, 0x0390, 0x03a5, 0x03c3,
- 0x03f7, 0x040c, 0x041e, 0x042d, 0x0449, 0x0464, 0x0479, 0x0485,
- 0x0494, 0x04c5, 0x04ec, 0x053c, 0x056c, 0x0590, 0x05b5, 0x05cb,
- 0x05d7, 0x05ec, 0x05f5, 0x0610, 0x0635, 0x0654, 0x0666, 0x0685,
- 0x06a0, 0x06bf, 0x06d4, 0x06ff, 0x0711, 0x0739, 0x074b, 0x0766,
- // Entry 40 - 7F
- 0x077e, 0x07b8, 0x07d3, 0x0802, 0x081a, 0x0835, 0x0847, 0x0869,
- 0x0884, 0x0893, 0x08ab, 0x08ca, 0x08dc, 0x08e8, 0x0907, 0x092e,
- 0x0947, 0x095c, 0x096b, 0x0996, 0x09ae, 0x09c6, 0x09e8, 0x0a03,
- 0x0a0f, 0x0a2d, 0x0a45, 0x0a5d, 0x0a69, 0x0a8a, 0x0ab8, 0x0ac7,
- 0x0b2f, 0x0b4d, 0x0b59, 0x0b75, 0x0b84, 0x0bb6, 0x0bfb, 0x0c13,
- 0x0c2e, 0x0c3a, 0x0c4c, 0x0c68, 0x0c86, 0x0c9b, 0x0cb6, 0x0cd6,
- 0x0ce2, 0x0d33, 0x0d3f, 0x0d4b, 0x0d5d, 0x0d69, 0x0d78, 0x0d87,
- 0x0d99, 0x0da5, 0x0db7, 0x0dd8, 0x0df0, 0x0e08, 0x0e1d, 0x0e59,
- // Entry 80 - BF
- 0x0e7b, 0x0ea0, 0x0eaf, 0x0ec8, 0x0ee3, 0x0eef, 0x0f01, 0x0f26,
- 0x0f4d, 0x0f65, 0x0f80, 0x0f92, 0x0fad, 0x0fcb, 0x0fe3, 0x0ff5,
- 0x100d, 0x101f, 0x103d, 0x105e, 0x1080, 0x109e, 0x10bd, 0x10db,
- 0x10e7, 0x1111, 0x1129, 0x114f, 0x1187, 0x11a2, 0x11c0, 0x11e1,
- 0x11f3, 0x1205, 0x1217, 0x1226, 0x123e, 0x1253, 0x126e, 0x1286,
- 0x12b1, 0x12c0, 0x12dc, 0x12f7, 0x1315, 0x132a, 0x133c, 0x134b,
- 0x135a, 0x1366, 0x1381, 0x138d, 0x139c, 0x13a8, 0x13d9, 0x1402,
- 0x141d, 0x1438, 0x1447, 0x1489, 0x14ae, 0x14d6, 0x150d, 0x1528,
- // Entry C0 - FF
- 0x1534, 0x1549, 0x1555, 0x1580, 0x1598, 0x15b0, 0x15c5, 0x15d4,
- 0x15e6, 0x15fc, 0x161b, 0x1630, 0x163f, 0x1651, 0x1669, 0x1688,
- 0x16ac, 0x16eb, 0x170f, 0x172b, 0x1744, 0x1756, 0x176e, 0x1783,
- 0x17a5, 0x17de, 0x1800, 0x1822, 0x1834, 0x184f, 0x1881, 0x18ba,
- 0x18c3, 0x190a, 0x1916, 0x1928, 0x1949, 0x195e, 0x197d, 0x19a7,
- 0x19c5, 0x19d4, 0x19e6, 0x1a1e, 0x1a30, 0x1a3f, 0x1a5a, 0x1a6f,
- 0x1a84, 0x1ab8, 0x1ae6, 0x1afb, 0x1b1c, 0x1b41, 0x1b98, 0x1bb9,
- 0x1bf4, 0x1c28, 0x1c43, 0x1c58, 0x1c8a, 0x1c99, 0x1cb1, 0x1cc0,
- // Entry 100 - 13F
- 0x1cd8, 0x1d00, 0x1d18, 0x1d36, 0x1d5b, 0x1d6a, 0x1d7f, 0x1da4,
- 0x1dcc, 0x1dde, 0x1e06, 0x1e28, 0x1e4d, 0x1e72, 0x1e94, 0x1ebf,
- 0x1ed4, 0x1efc, 0x1f14, 0x1f33, 0x1f55, 0x1f87, 0x1fa9, 0x1fd3,
- 0x1ff1, 0x202b, 0x2049, 0x2058, 0x2074, 0x2096, 0x20a5, 0x20c4,
- 0x20e3, 0x2105, 0x212a,
-} // Size: 606 bytes
-
-var msRegionStr string = "" + // Size: 2966 bytes
- "Pulau AscensionAndorraEmiriah Arab BersatuAfghanistanAntigua dan Barbuda" +
- "AnguillaAlbaniaArmeniaNetherlands AntillesAngolaAntartikaArgentinaSamoa " +
- "AmerikaAustriaAustraliaArubaKepulauan AlandAzerbaijanBosnia dan Herzegov" +
- "inaBarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSaint" +
- " BarthélemyBermudaBruneiBoliviaBelanda CaribbeanBrazilBahamasBhutanPulau" +
- " BouvetBotswanaBelarusBelizeKanadaKepulauan Cocos (Keeling)Congo - Kinsh" +
- "asaRepublik Afrika TengahCongo - BrazzavilleSwitzerlandCote d’IvoireKepu" +
- "lauan CookChileCameroonChinaColombiaPulau ClippertonCosta RicaCubaCape V" +
- "erdeCuracaoPulau KrismasCyprusRepublik CzechJermanDiego GarciaDjiboutiDe" +
- "nmarkDominicaRepublik DominicaAlgeriaCeuta dan MelillaEcuadorEstoniaMesi" +
- "rSahara BaratEritreaSepanyolEthiopiaKesatuan EropahFinlandFijiKepulauan " +
- "FalklandMicronesiaKepulauan FaroePerancisGabonUnited KingdomGrenadaGeorg" +
- "iaGuiana PerancisGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeGu" +
- "inea KhatulistiwaGreeceKepulauan Georgia Selatan & Sandwich SelatanGuate" +
- "malaGuamGuinea BissauGuyanaHong Kong SAR ChinaKepulauan Heard & McDonald" +
- "HondurasCroatiaHaitiHungaryKepulauan CanaryIndonesiaIrelandIsraelIsle of" +
- " ManIndiaWilayah Lautan Hindi BritishIraqIranIcelandItaliJerseyJamaicaJo" +
- "rdanJepunKenyaKyrgyzstanKembojaKiribatiComorosSaint Kitts dan NevisKorea" +
- " UtaraKorea SelatanKuwaitKepulauan CaymanKazakhstanLaosLubnanSaint Lucia" +
- "LiechtensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMaghri" +
- "biMonacoMoldovaMontenegroSaint MartinMadagaskarKepulauan MarshallMacedon" +
- "iaMaliMyanmar (Burma)MongoliaMacau SAR ChinaKepulauan Mariana UtaraMarti" +
- "niqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozam" +
- "biqueNamibiaNew CaledoniaNigerPulau NorfolkNigeriaNicaraguaBelandaNorway" +
- "NepalNauruNiueNew ZealandOmanPanamaPeruPolinesia PerancisPapua New Guine" +
- "aFilipinaPakistanPolandSaint Pierre dan MiquelonKepulauan PitcairnPuerto" +
- " RicoWilayah PalestinPortugalPalauParaguayQatarOceania TerpencilReunionR" +
- "omaniaSerbiaRusiaRwandaArab SaudiKepulauan SolomonSeychellesSudanSwedenS" +
- "ingapuraSaint HelenaSloveniaSvalbard dan Jan MayenSlovakiaSierra LeoneSa" +
- "n MarinoSenegalSomaliaSurinamSudan SelatanSao Tome dan PrincipeEl Salvad" +
- "orSint MaartenSyriaSwazilandTristan da CunhaKepulauan Turks dan CaicosCh" +
- "adWilayah Selatan PerancisTogoThailandTajikistanTokelauTimor-LesteTurkme" +
- "nistanTunisiaTongaTurkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkraineUga" +
- "ndaKepulauan Terpencil A.S.Amerika SyarikatUruguayUzbekistanKota Vatican" +
- "Saint Vincent dan GrenadinesVenezuelaKepulauan Virgin BritishKepulauan V" +
- "irgin A.S.VietnamVanuatuWallis dan FutunaSamoaKosovoYamanMayotteAfrika S" +
- "elatanZambiaZimbabweWilayah Tidak DiketahuiDuniaAfrikaAmerika UtaraAmeri" +
- "ka SelatanOceaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraAfrik" +
- "a TengahSelatan AfrikaAmerikaUtara AmerikaCaribbeanAsia TimurAsia Selata" +
- "nAsia TenggaraEropah SelatanAustralasiaMelanesiaWilayah MikronesiaPoline" +
- "siaAsiaAsia TengahAsia BaratEropahEropah TimurEropah UtaraEropah BaratAm" +
- "erika Latin"
-
-var msRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0016, 0x002a, 0x0035, 0x0048, 0x0050, 0x0057,
- 0x005e, 0x0072, 0x0078, 0x0081, 0x008a, 0x0097, 0x009e, 0x00a7,
- 0x00ac, 0x00bb, 0x00c5, 0x00db, 0x00e3, 0x00ed, 0x00f4, 0x0100,
- 0x0108, 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0140,
- 0x0151, 0x0157, 0x015e, 0x0164, 0x0170, 0x0178, 0x017f, 0x0185,
- 0x018b, 0x01a4, 0x01b4, 0x01ca, 0x01dd, 0x01e8, 0x01f7, 0x0205,
- 0x020a, 0x0212, 0x0217, 0x021f, 0x022f, 0x0239, 0x023d, 0x0247,
- 0x024e, 0x025b, 0x0261, 0x026f, 0x0275, 0x0281, 0x0289, 0x0290,
- // Entry 40 - 7F
- 0x0298, 0x02a9, 0x02b0, 0x02c1, 0x02c8, 0x02cf, 0x02d4, 0x02e0,
- 0x02e7, 0x02ef, 0x02f7, 0x0306, 0x030d, 0x0311, 0x0323, 0x032d,
- 0x033c, 0x0344, 0x0349, 0x0357, 0x035e, 0x0365, 0x0374, 0x037c,
- 0x0381, 0x038a, 0x0393, 0x0399, 0x039f, 0x03a9, 0x03bc, 0x03c2,
- 0x03ee, 0x03f7, 0x03fb, 0x0408, 0x040e, 0x0421, 0x043b, 0x0443,
- 0x044a, 0x044f, 0x0456, 0x0466, 0x046f, 0x0476, 0x047c, 0x0487,
- 0x048c, 0x04a8, 0x04ac, 0x04b0, 0x04b7, 0x04bc, 0x04c2, 0x04c9,
- 0x04cf, 0x04d4, 0x04d9, 0x04e3, 0x04ea, 0x04f2, 0x04f9, 0x050e,
- // Entry 80 - BF
- 0x0519, 0x0526, 0x052c, 0x053c, 0x0546, 0x054a, 0x0550, 0x055b,
- 0x0568, 0x0571, 0x0578, 0x057f, 0x0588, 0x0592, 0x0598, 0x059d,
- 0x05a5, 0x05ab, 0x05b2, 0x05bc, 0x05c8, 0x05d2, 0x05e4, 0x05ed,
- 0x05f1, 0x0600, 0x0608, 0x0617, 0x062e, 0x0638, 0x0642, 0x064c,
- 0x0651, 0x065a, 0x0662, 0x0668, 0x066e, 0x0676, 0x0680, 0x0687,
- 0x0694, 0x0699, 0x06a6, 0x06ad, 0x06b6, 0x06bd, 0x06c3, 0x06c8,
- 0x06cd, 0x06d1, 0x06dc, 0x06e0, 0x06e6, 0x06ea, 0x06fc, 0x070c,
- 0x0714, 0x071c, 0x0722, 0x073b, 0x074d, 0x0758, 0x0768, 0x0770,
- // Entry C0 - FF
- 0x0775, 0x077d, 0x0782, 0x0793, 0x079a, 0x07a1, 0x07a7, 0x07ac,
- 0x07b2, 0x07bc, 0x07cd, 0x07d7, 0x07dc, 0x07e2, 0x07eb, 0x07f7,
- 0x07ff, 0x0815, 0x081d, 0x0829, 0x0833, 0x083a, 0x0841, 0x0848,
- 0x0855, 0x086a, 0x0875, 0x0881, 0x0886, 0x088f, 0x089f, 0x08b9,
- 0x08bd, 0x08d5, 0x08d9, 0x08e1, 0x08eb, 0x08f2, 0x08fd, 0x0909,
- 0x0910, 0x0915, 0x091a, 0x092d, 0x0933, 0x0939, 0x0941, 0x0948,
- 0x094e, 0x0966, 0x0976, 0x097d, 0x0987, 0x0993, 0x09af, 0x09b8,
- 0x09d0, 0x09e5, 0x09ec, 0x09f3, 0x0a04, 0x0a09, 0x0a0f, 0x0a14,
- // Entry 100 - 13F
- 0x0a1b, 0x0a29, 0x0a2f, 0x0a37, 0x0a4e, 0x0a53, 0x0a59, 0x0a66,
- 0x0a75, 0x0a7c, 0x0a88, 0x0a96, 0x0aa2, 0x0aae, 0x0abb, 0x0ac9,
- 0x0ad0, 0x0add, 0x0ae6, 0x0af0, 0x0afc, 0x0b09, 0x0b17, 0x0b22,
- 0x0b2b, 0x0b3d, 0x0b46, 0x0b4a, 0x0b55, 0x0b5f, 0x0b65, 0x0b71,
- 0x0b7d, 0x0b89, 0x0b96,
-} // Size: 606 bytes
-
-var myRegionStr string = "" + // Size: 9769 bytes
- "အက်စ်စင်ရှီအွန်ကျွန်းအန်ဒိုရာယူအေအီးအာဖဂန်နစ္စတန်အန်တီဂုအာနှင့်ဘာဘုဒါအန်" +
- "ဂွီလာအဲလ်ဘာနီအာအာမေနီးယားအင်ဂိုလာအန္တာတိကအာဂျင်တီးနားအမေရိကန် စမိုအဩစတ" +
- "ြီးယားဩစတြေးလျအာရုဘာအာလန်ကျွန်းအဇာဘိုင်ဂျန်ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီ" +
- "းနားဘာဘဒိုးစ်ဘင်္ဂလားဒေ့ရှ်ဘယ်လ်ဂျီယမ်ဘာကီနာ ဖာဆိုဘူဂေးရီးယားဘာရိန်းBI" +
- "ဘီနင်စိန့်ဘာသီလီမိုင်ဘာမူဒါဘရူနိုင်းဘိုလီးဘီးယားကာရီဘီယံနယ်သာလန်ဘရာဇီး" +
- "ဘဟားမားဘူတန်ဘူဗက်ကျွန်းBWဘီလာရုစ်ဘေလီဇ်ကနေဒါကိုကိုး ကျွန်းစုကွန်ဂို-ကင" +
- "်ရှာစအလယ်ပိုင်း အာဖရိက ပြည်ထောင်စုကွန်ဂို-ဘရာဇာဗီလ်ဆွစ်ဇလန်အိုင်ဗရီကို" +
- "စ့်ကွတ် ကျွန်းစုချီလီကင်မရွန်းတရုတ်ကိုလံဘီယာကလစ်ပါတန်ကျွန်းကော့စ်တာရီက" +
- "ာကျူးဘားခေ့ပ်ဗာဒူခူရာကာအိုခရစ်စမတ် ကျွန်းဆိုက်ပရက်စ်ချက် ပြည်ထောင်စုဂျ" +
- "ာမဏီဒီအေဂိုဂရာစီအာဂျီဘူတီဒိန်းမတ်ဒိုမီနီကာဒိုမီနီကန်DZဆယ်ဥတာနှင့်မယ်လီ" +
- "လ်လာအီကွေဒေါအက်စတိုးနီးယားEGEHအီရီတရီအာစပိန်အီသီယိုးပီးယားဥရောပသမဂ္ဂဖင" +
- "်လန်ဖီဂျီဖောက်ကလန် ကျွန်းစုမိုင်ခရိုနီရှားဖာရိုး ကျွန်းစုများပြင်သစ်ဂါ" +
- "ဘွန်ယူနိုက်တက်ကင်းဒမ်းဂရီနာဒါဂျော်ဂျီယာပြင်သစ် ဂီယာနာဂွန်းဇီဂါနာဂျီဘရေ" +
- "ာ်လ်တာဂရင်းလန်းဂန်ဘီရာဂီးနီဂူအာဒီလုပ်အီကွေတာ ဂီရာနာဂရိတောင် ဂျော်ဂျီယာ" +
- " နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများဂွာတီမာလာဂူအမ်ဂီရာနာ-ဘီစ်စာဥဂူရာနာတ" +
- "ရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ ဟောင်ကောင်ဟတ်ကျွန်းနှင့်မက်ဒေါနယ်ကျွန်းစုဟွန" +
- "်ဒူးရပ်စ်ခရိုအေးရှားဟေတီဟန်ဂေရီကာနာရီကျွန်းစုအင်ဒိုနီးရှားအိုင်ယာလန်အစ" +
- "္စရေးမန်ကျွန်းအိန္ဒိယဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်အီရတ်အီရန်အိုက" +
- "်စလန်အီတလီဂျာစီဂျမေကာဂျော်ဒန်ဂျပန်KEခရူဂစ်စတန်ကမ္ဘောဒီးယားခီရီဘာတီကိုမ" +
- "ိုရိုစ်စိန့်ကစ်နှင့်နီဗီစ်မြောက်ကိုရီးယားတောင်ကိုရီးယားကူဝိတ်ကေမန် ကျွ" +
- "န်းစုကာဇက်စတန်လာအိုလက်ဘနွန်စိန့်လူစီအာလစ်ခ်ထင်စတိုင်သီရိလင်္ကာလိုင်ဘေး" +
- "ရီးယားလီဆိုသိုလစ်သူယေးနီးယားလူဇင်ဘတ်လတ်ဗီးယားLYMAမိုနာကိုမောလ်ဒိုဗာမွန" +
- "်တီနိဂရိုးစိန့်မာတင်မာဒါဂတ်စကာမာရှယ် ကျွန်းစုမာစီဒိုးနီးယားမာလီမြန်မာမ" +
- "ွန်ဂိုးလီးယားတရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ မကာအိုတောင်ပိုင်းမာရီအာနာကျွန်" +
- "းစုမာတီနီကီမောရီတာနီအာမောင့်စဲရက်မောလ်တာမော်ရေရှားစ်မော်လ်ဒိုက်မာလာဝီမ" +
- "က္ကဆီကိုမလေးရှားမိုဇန်ဘစ်နမ်မီးဘီးယားနယူး ကယ်လီဒိုနီးယားနိုင်ဂျာနောဖော" +
- "့ခ်ကျွန်းနိုင်ဂျီးရီးယားနီကာရာဂွာနယ်သာလန်နော်ဝေနီပေါနာဥူရူနီဥူအေနယူးဇီ" +
- "လန်အိုမန်ပနားမားပီရူးပြင်သစ် ပေါ်လီနေးရှားပါပူရာနယူးဂီနီဖိလစ်ပိုင်ပါကစ" +
- "္စတန်ပိုလန်စိန့်ပီအဲရီနှင့်မီကွီလွန်ပစ်တ်ကိန်းကျွန်းစုပေါ်တူရီကိုပါလက်" +
- "စတိုင်း ပိုင်နက်ပေါ်တူဂီပလောင်ပါရာဂွေးကာတာသမုဒ္ဒရာဒေသအပြင်ထွက်နေသောဒေသ" +
- "များရဲအူနီရွန်ရိုမေးနီးယားဆားဘီးယားရုရှRWဆော်ဒီအာရေးဗီးယားဆော်လမွန်ကျွ" +
- "န်းစုဆေးရှလ်SDဆွီဒင်စင်္ကာပူစိန့်ဟဲလီနာစလိုဗေးနီးယားစဗိုလ်ဘတ်နှင့်ဂျန်" +
- "မေရန်စလိုဗေးကီးယားဆီအဲရာ လီအိုနီဆော့န်မာရီနိုဆီနီဂေါဆိုမာလီယာဆူရီနိမ်း" +
- "မြောက်ဆူဒန်စိန့်တိုမီနှင့်ပရင်စီပ့်အယ်လ်ဆာဗေးဒိုးဆင့်မာအာတင်ဆီးရီးယားS" +
- "Zထရစ်တန်ဒါကွန်ဟာတခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစုချဒ်ပြင်သစ် တောင်ပိုင်း ပိုင်" +
- "နက်များတိုဂိုထိုင်းတာဂျီကစ္စတန်ထိုးခါလူအရှေ့တီမောတာခ်မီန့စ်တန်တူနီးရှာ" +
- "းတွန်ဂါတူရကီထရိုင်နီဒတ်နှင့်တိုဘာဂိုထူးဗလူထိုင်ဝမ်တန်ဇန်းနီးယားယူကရိန်" +
- "းUGယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများယူနိုက်တက်စတိတ်" +
- "ဥရုဂွေးဥဘက်ကစ္စတန်ဗာတီကန်စီတီးစိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်းစ်ဗင်နီဇွ" +
- "ဲလားဗြိတိသျှ ဗာဂျင်း ကျွန်းစုယူအက်စ် ဗာဂျင်း ကျွန်းစုဗီယက်နမ်ဗာနုအာတူဝ" +
- "ေါလစ်နှင့်ဖူထူးနားဆာမိုအာကိုဆိုဗိုယီမင်မေအိုတီတောင်အာဖရိကဇမ်ဘီယာဇင်ဘာဘ" +
- "ွေမသိ သို့မဟုတ် မရှိ သော နေရာကမ္ဘာအာဖရိကမြောက် အမေရိကတောင် အမေရိကသမုဒ္" +
- "ဒရာဒေသအနောက် အာဖရိကအလယ်ပိုင်း အမေရိကအရှေ့ပိုင်း အာဖရိကမြောက်ပိုင်း အာဖ" +
- "ရိကအလယ်ပိုင်း အာဖရိကတောင်ပိုင်း အာဖရိကအမေရိကများမြောက်ပိုင်း အမေရိကကာရ" +
- "ီဘီယံအရှေ့ပိုင်း အာရှတောင်ပိုင်း အာရှအရှေ့တောင်ပိုင်းအာရှတောင်ပိုင်း ဥ" +
- "ရောပဩစတြေးလျနှင့် နယူးဇီလန်မီလာနီးရှားမိုင်ခရိုနီရှားနယ်ပိုလီနီရှားအာရ" +
- "ှအလယ် အာရှအနောက် အာရှဥရောပအရှေ့ပိုင်း ဥရောပမြောက်ပိုင်း ဥရောပအနောက်ပို" +
- "င်း ဥရောပလက်တင်အမေရိက"
-
-var myRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x003f, 0x0057, 0x006c, 0x0093, 0x00cf, 0x00e7, 0x0105,
- 0x0123, 0x0123, 0x013b, 0x0153, 0x0177, 0x019f, 0x01ba, 0x01d2,
- 0x01e4, 0x0205, 0x0229, 0x0282, 0x029d, 0x02c7, 0x02e8, 0x030a,
- 0x032b, 0x0340, 0x0342, 0x0351, 0x0381, 0x0393, 0x03ae, 0x03d2,
- 0x0402, 0x0414, 0x0429, 0x0438, 0x0459, 0x045b, 0x0473, 0x0485,
- 0x0494, 0x04c2, 0x04ed, 0x0540, 0x0571, 0x0589, 0x05b3, 0x05d8,
- 0x05e7, 0x0602, 0x0611, 0x062c, 0x0659, 0x067d, 0x0692, 0x06ad,
- 0x06c8, 0x06f3, 0x0714, 0x0742, 0x0754, 0x077e, 0x0793, 0x07ab,
- // Entry 40 - 7F
- 0x07c6, 0x07e4, 0x07e6, 0x0822, 0x083a, 0x0864, 0x0866, 0x0868,
- 0x0883, 0x0892, 0x08bc, 0x08da, 0x08ec, 0x08fb, 0x092f, 0x095c,
- 0x0993, 0x09a8, 0x09ba, 0x09f0, 0x0a05, 0x0a23, 0x0a4b, 0x0a60,
- 0x0a6c, 0x0a90, 0x0aab, 0x0ac0, 0x0acf, 0x0aed, 0x0b15, 0x0b1e,
- 0x0bb3, 0x0bce, 0x0bdd, 0x0c05, 0x0c17, 0x0c82, 0x0cdf, 0x0d03,
- 0x0d24, 0x0d30, 0x0d45, 0x0d6f, 0x0d96, 0x0db4, 0x0dc9, 0x0de4,
- 0x0df9, 0x0e5c, 0x0e6b, 0x0e7a, 0x0e95, 0x0ea4, 0x0eb3, 0x0ec5,
- 0x0edd, 0x0eec, 0x0eee, 0x0f0c, 0x0f30, 0x0f48, 0x0f69, 0x0fa2,
- // Entry 80 - BF
- 0x0fcf, 0x0ff9, 0x100b, 0x1033, 0x104e, 0x105d, 0x1075, 0x1096,
- 0x10c0, 0x10de, 0x1108, 0x1120, 0x114a, 0x1162, 0x117d, 0x117f,
- 0x1181, 0x1199, 0x11b7, 0x11de, 0x11fc, 0x121a, 0x1245, 0x126f,
- 0x127b, 0x128d, 0x12b7, 0x1316, 0x1367, 0x137f, 0x13a0, 0x13c1,
- 0x13d6, 0x13fa, 0x141b, 0x142d, 0x1448, 0x1460, 0x147b, 0x149f,
- 0x14d6, 0x14ee, 0x151b, 0x1548, 0x1563, 0x157b, 0x158d, 0x159c,
- 0x15ae, 0x15c0, 0x15db, 0x15ed, 0x1602, 0x1611, 0x164e, 0x1678,
- 0x1696, 0x16b1, 0x16c3, 0x170e, 0x1744, 0x1765, 0x17a2, 0x17ba,
- // Entry C0 - FF
- 0x17cc, 0x17e4, 0x17f0, 0x1850, 0x186e, 0x1892, 0x18ad, 0x18b9,
- 0x18bb, 0x18ee, 0x1921, 0x1936, 0x1938, 0x194a, 0x1962, 0x1983,
- 0x19aa, 0x19ef, 0x1a16, 0x1a3e, 0x1a65, 0x1a7a, 0x1a95, 0x1ab0,
- 0x1ad1, 0x1b19, 0x1b43, 0x1b64, 0x1b7f, 0x1b81, 0x1bae, 0x1bff,
- 0x1c0b, 0x1c67, 0x1c79, 0x1c8b, 0x1caf, 0x1cc7, 0x1ce5, 0x1d0c,
- 0x1d27, 0x1d39, 0x1d48, 0x1d90, 0x1da2, 0x1dba, 0x1de1, 0x1df9,
- 0x1dfb, 0x1e91, 0x1ebe, 0x1ed3, 0x1ef4, 0x1f18, 0x1f79, 0x1f9a,
- 0x1fe1, 0x2025, 0x203d, 0x2055, 0x208e, 0x20a3, 0x20be, 0x20cd,
- // Entry 100 - 13F
- 0x20e2, 0x2103, 0x2118, 0x2130, 0x2179, 0x2188, 0x219a, 0x21bf,
- 0x21e1, 0x2202, 0x2227, 0x2258, 0x228c, 0x22c3, 0x22f4, 0x2328,
- 0x2346, 0x237d, 0x2395, 0x23c3, 0x23f1, 0x242d, 0x245e, 0x24a1,
- 0x24c2, 0x24f8, 0x2519, 0x2525, 0x253e, 0x255d, 0x256c, 0x259d,
- 0x25d1, 0x2605, 0x2629,
-} // Size: 606 bytes
-
-var neRegionStr string = "" + // Size: 9084 bytes
- "एस्केन्सन टापुअन्डोर्रासंयुक्त अरब इमिराट्सअफगानिस्तानएन्टिगुआ र बारबुडा" +
- "आङ्गुइलाअल्बानियाआर्मेनियानेदरल्याण्ड्स एण्टिलिसअङ्गोलाअन्टारतिकाअर्जे" +
- "न्टिनाअमेरिकी समोआअष्ट्रियाअष्ट्रेलियाआरूबाअलान्ड टापुहरुअजरबैजानबोस्न" +
- "िया एण्ड हर्जगोभिनियाबार्बाडोसबङ्गलादेशबेल्जियमबर्किना फासोबुल्गेरियाब" +
- "हराइनबुरूण्डीबेनिनसेन्ट बार्थालेमीबर्मुडाब्रुनाइबोलिभियाक्यारिवियन नेद" +
- "रल्याण्ड्सब्राजिलबहामासभुटानबुभेट टापुबोट्स्वानाबेलारूसबेलिजक्यानाडाको" +
- "कोस (किलिंग) टापुहरुकोङ्गो-किन्शासाकेन्द्रीय अफ्रिकी गणतन्त्रकोङ्गो - " +
- "ब्राज्जाभिल्लेस्विजरल्याण्डआइभरी कोस्टकुक टापुहरुचिलीक्यामरूनचीनकोलोम्" +
- "बियाक्लिप्पेर्टन टापुकोष्टारिकाक्युबाकेप भर्डेकुराकाओक्रिष्टमस टापुसाइ" +
- "प्रसचेक गणतन्त्रजर्मनीडियगो गार्सियाडिजिबुटीडेनमार्कडोमिनिकाडोमिनिकन ग" +
- "णतन्त्रअल्जेरियासिउटा र मेलिलाइक्वडेरइस्टोनियाइजिप्टपश्चिमी साहाराएरित" +
- "्रियास्पेनइथियोपियायुरोपियन युनियनफिन्ल्याण्डफिजीफकल्याण्ड टापुहरुमाइक" +
- "्रोनेसियाफारोर टापुहरुफ्रान्सगावोनबेलायतग्रेनाडाजर्जियाफ्रान्सेली गायन" +
- "ागुएर्नसेघानाजिब्राल्टारग्रिनल्याण्डगाम्वियागिनीग्वाडेलुपभू-मध्यीय गिन" +
- "ीग्रिसदक्षिण जर्जिया र दक्षिण स्यान्डवीच टापुहरूग्वाटेमालागुवामगिनी-बि" +
- "साउगुयानाहङकङ चिनिया समाजवादी स्वायत्त क्षेत्रहर्ड टापु एण्ड म्याकडोना" +
- "ल्ड टापुहरुहन्डुरासक्रोएशियाहैटीहङ्गेरीक्यानारी टापुहरूइन्डोनेशियाआयरल" +
- "्याण्डइजरायलआइज्ले अफ् म्यानभारतबेलायती हिन्द महासागर क्षेत्रइराकइरानआ" +
- "इस्ल्याण्डइटालीजर्सीजमाइकाजोर्डनजापानकेन्याकिर्गिस्थानकम्बोडियाकिरिबाट" +
- "ीकोमोरोससेन्ट किट्स र नेभिसउत्तर कोरियादक्षिण कोरियाकुवेतकेयमान टापुका" +
- "जाकस्तानलाओसलेबननसेन्ट लुसियालिएखटेन्स्टाइनश्रीलङ्कालाइबेरियालेसोथोलिथ" +
- "ुअनियालक्जेमबर्गलाट्भियालिबियामोरोक्कोमोनाकोमाल्डोभामोन्टेनेग्रोसेन्ट " +
- "मार्टिनमडागास्करमार्शल टापुहरुम्याकेडोनियामालीम्यान्मार (बर्मा)मङ्गोलि" +
- "यामकावो चिनिँया स्वशासित क्षेत्रउत्तरी मारिआना टापुमार्टिनिकमाउरिटानिय" +
- "ामोन्टसेर्राटमाल्टामाउरिटसमाल्दिभ्समालावीमेक्सिकोमलेसियामोजाम्बिकनामिब" +
- "ियानयाँ कालेडोनियानाइजरनोरफोल्क टापुनाइजेरियानिकारागुवानेदरल्याण्ड्सनर" +
- "्वेनेपालनाउरूनियुइन्युजिल्याण्डओमनपनामापेरूफ्रान्सेली पोलिनेसियापपुआ न" +
- "्यू गाइनियाफिलिपिन्सपाकिस्तानपोल्याण्डसेन्ट पिर्रे र मिक्केलोनपिटकाइर्" +
- "न टापुहरुपुएर्टो रिकोप्यालेस्टनी भू-भागहरुपोर्चुगलपलाउप्याराग्वेकतारबा" +
- "ह्य ओसनियारियुनियनरोमानियासर्बियारूसरवाण्डासाउदी अरबसोलोमोन टापुहरुसेच" +
- "ेलेससुडानस्विडेनसिङ्गापुरसेन्ट हेलेनास्लोभेनियासभाल्बार्ड र जान मायेनस" +
- "्लोभाकियासिएर्रा लिओनसान् मारिनोसेनेगालसोमालियासुरिनेमदक्षिणी सुडानसाओ" +
- " टोमे र प्रिन्सिपएल् साल्भाडोरसिन्ट मार्टेनसिरियास्वाजिल्याण्डट्रिस्टान " +
- "डा कुन्हातुर्क र काइकोस टापुचाडफ्रान्सेली दक्षिणी क्षेत्रहरुटोगोथाइल्य" +
- "ाण्डताजिकिस्तानतोकेलाउटिमोर-लेस्टेतुर्कमेनिस्तानट्युनिसियाटोंगाटर्कीत्" +
- "रिनिडाड एण्ड टोबागोतुभालुताइवानतान्जानियायुक्रेनयुगाण्डासंयुक्त राज्य " +
- "बाह्य टापुहरुसंयुक्त राज्यउरूग्वेउज्बेकिस्तानभेटिकन सिटीसेन्ट भिन्सेन्" +
- "ट र ग्रेनाडिन्सभेनेजुएलाबेलायती भर्जिन टापुहरुसंयुक्त राज्य भर्जिन टाप" +
- "ुहरुभिएतनामभानुआतुवालिस र फुटुनासामोआकोसोवोयेमेनमायोट्टदक्षिण अफ्रिकाज" +
- "ाम्बियाजिम्बाबेअज्ञात क्षेत्रविश्वअफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओस" +
- "नियापश्चिमी अफ्रिकाकेन्द्रीय अमेरिकापूर्वी अफ्रिकाउत्तरी अफ्रिकामध्य अ" +
- "फ्रिकादक्षिणी अफ्रिकाअमेरिकासउत्तरी अमेरिकाक्यारिबियनपूर्वी एशियादक्षि" +
- "णी एशियादक्षिण पूर्वी एशियादक्षिणी युरोपअष्ट्रालासियामेलानेसियामाइक्रो" +
- "नेसियाली क्षेत्रपोलिनेशियाएशियाकेन्द्रीय एशियापश्चिमी एशियायुरोपपूर्वी" +
- " युरोपउत्तरी युरोपपश्चिमी युरोपल्याटिन अमेरिका"
-
-var neRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0028, 0x0043, 0x007b, 0x009c, 0x00ce, 0x00e6, 0x0101,
- 0x011c, 0x015c, 0x0171, 0x018f, 0x01b0, 0x01d2, 0x01ed, 0x020e,
- 0x021d, 0x0245, 0x025d, 0x02a7, 0x02c2, 0x02dd, 0x02f5, 0x0317,
- 0x0335, 0x0347, 0x035f, 0x036e, 0x039c, 0x03b1, 0x03c6, 0x03de,
- 0x0424, 0x0439, 0x044b, 0x045a, 0x0476, 0x0494, 0x04a9, 0x04b8,
- 0x04d0, 0x050a, 0x0535, 0x057f, 0x05be, 0x05e5, 0x0604, 0x0623,
- 0x062f, 0x0647, 0x0650, 0x066e, 0x069f, 0x06bd, 0x06cf, 0x06e8,
- 0x06fd, 0x0725, 0x073a, 0x075c, 0x076e, 0x0796, 0x07ae, 0x07c6,
- // Entry 40 - 7F
- 0x07de, 0x080f, 0x082a, 0x0850, 0x0865, 0x0880, 0x0892, 0x08ba,
- 0x08d5, 0x08e4, 0x08ff, 0x092a, 0x094b, 0x0957, 0x0988, 0x09af,
- 0x09d4, 0x09e9, 0x09f8, 0x0a0a, 0x0a22, 0x0a37, 0x0a65, 0x0a7d,
- 0x0a89, 0x0aaa, 0x0ace, 0x0ae6, 0x0af2, 0x0b0d, 0x0b33, 0x0b42,
- 0x0bb6, 0x0bd4, 0x0be3, 0x0bff, 0x0c11, 0x0c78, 0x0cd9, 0x0cf1,
- 0x0d0c, 0x0d18, 0x0d2d, 0x0d5b, 0x0d7c, 0x0d9a, 0x0dac, 0x0dd8,
- 0x0de4, 0x0e35, 0x0e41, 0x0e4d, 0x0e6e, 0x0e7d, 0x0e8c, 0x0e9e,
- 0x0eb0, 0x0ebf, 0x0ed1, 0x0ef2, 0x0f0d, 0x0f25, 0x0f3a, 0x0f6d,
- // Entry 80 - BF
- 0x0f8f, 0x0fb4, 0x0fc3, 0x0fe2, 0x1000, 0x100c, 0x101b, 0x103d,
- 0x1067, 0x1082, 0x109d, 0x10af, 0x10ca, 0x10e8, 0x1100, 0x1112,
- 0x112a, 0x113c, 0x1154, 0x1178, 0x119d, 0x11b8, 0x11e0, 0x1204,
- 0x1210, 0x123d, 0x1258, 0x12ac, 0x12e1, 0x12fc, 0x131d, 0x1341,
- 0x1353, 0x1368, 0x1383, 0x1395, 0x13ad, 0x13c2, 0x13dd, 0x13f5,
- 0x1420, 0x142f, 0x1454, 0x146f, 0x148d, 0x14b4, 0x14c3, 0x14d2,
- 0x14e1, 0x14f0, 0x1517, 0x1520, 0x152f, 0x153b, 0x1578, 0x15a7,
- 0x15c2, 0x15dd, 0x15f8, 0x163a, 0x166b, 0x168d, 0x16c8, 0x16e0,
- // Entry C0 - FF
- 0x16ec, 0x170a, 0x1716, 0x1738, 0x1750, 0x1768, 0x177d, 0x1786,
- 0x179b, 0x17b4, 0x17df, 0x17f4, 0x1803, 0x1818, 0x1833, 0x1855,
- 0x1873, 0x18af, 0x18cd, 0x18ef, 0x190e, 0x1923, 0x193b, 0x1950,
- 0x1975, 0x19ab, 0x19d0, 0x19f5, 0x1a07, 0x1a2e, 0x1a63, 0x1a96,
- 0x1a9f, 0x1af2, 0x1afe, 0x1b1c, 0x1b3d, 0x1b52, 0x1b74, 0x1b9e,
- 0x1bbc, 0x1bcb, 0x1bda, 0x1c15, 0x1c27, 0x1c39, 0x1c57, 0x1c6c,
- 0x1c84, 0x1ccf, 0x1cf4, 0x1d09, 0x1d2d, 0x1d4c, 0x1d9d, 0x1db8,
- 0x1df6, 0x1e44, 0x1e59, 0x1e6e, 0x1e94, 0x1ea3, 0x1eb5, 0x1ec4,
- // Entry 100 - 13F
- 0x1ed9, 0x1f01, 0x1f19, 0x1f31, 0x1f59, 0x1f68, 0x1f7d, 0x1fa2,
- 0x1fca, 0x1fdc, 0x2007, 0x2038, 0x2060, 0x2088, 0x20aa, 0x20d5,
- 0x20ed, 0x2115, 0x2133, 0x2155, 0x217a, 0x21af, 0x21d4, 0x21fb,
- 0x2219, 0x225c, 0x227a, 0x2289, 0x22b4, 0x22d9, 0x22e8, 0x230a,
- 0x232c, 0x2351, 0x237c,
-} // Size: 606 bytes
-
-var nlRegionStr string = "" + // Size: 3081 bytes
- "AscensionAndorraVerenigde Arabische EmiratenAfghanistanAntigua en Barbud" +
- "aAnguillaAlbaniëArmeniëNederlandse AntillenAngolaAntarcticaArgentiniëAme" +
- "rikaans-SamoaOostenrijkAustraliëArubaÅlandAzerbeidzjanBosnië en Herzegov" +
- "inaBarbadosBangladeshBelgiëBurkina FasoBulgarijeBahreinBurundiBeninSaint" +
- "-BarthélemyBermudaBruneiBoliviaCaribisch NederlandBraziliëBahama’sBhutan" +
- "BouveteilandBotswanaBelarusBelizeCanadaCocoseilandenCongo-KinshasaCentra" +
- "al-Afrikaanse RepubliekCongo-BrazzavilleZwitserlandIvoorkustCookeilanden" +
- "ChiliKameroenChinaColombiaClippertonCosta RicaCubaKaapverdiëCuraçaoChris" +
- "tmaseilandCyprusTsjechiëDuitslandDiego GarciaDjiboutiDenemarkenDominicaD" +
- "ominicaanse RepubliekAlgerijeCeuta en MelillaEcuadorEstlandEgypteWesteli" +
- "jke SaharaEritreaSpanjeEthiopiëEuropese UnieFinlandFijiFalklandeilandenM" +
- "icronesiaFaeröerFrankrijkGabonVerenigd KoninkrijkGrenadaGeorgiëFrans-Guy" +
- "anaGuernseyGhanaGibraltarGroenlandGambiaGuineeGuadeloupeEquatoriaal-Guin" +
- "eaGriekenlandZuid-Georgia en Zuidelijke SandwicheilandenGuatemalaGuamGui" +
- "nee-BissauGuyanaHongkong SAR van ChinaHeard en McDonaldeilandenHondurasK" +
- "roatiëHaïtiHongarijeCanarische EilandenIndonesiëIerlandIsraëlIsle of Man" +
- "IndiaBritse Gebieden in de Indische OceaanIrakIranIJslandItaliëJerseyJam" +
- "aicaJordaniëJapanKeniaKirgiziëCambodjaKiribatiComorenSaint Kitts en Nevi" +
- "sNoord-KoreaZuid-KoreaKoeweitCaymaneilandenKazachstanLaosLibanonSaint Lu" +
- "ciaLiechtensteinSri LankaLiberiaLesothoLitouwenLuxemburgLetlandLibiëMaro" +
- "kkoMonacoMoldaviëMontenegroSaint-MartinMadagaskarMarshalleilandenMacedon" +
- "iëMaliMyanmar (Birma)MongoliëMacau SAR van ChinaNoordelijke MarianenMart" +
- "iniqueMauritaniëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMoza" +
- "mbiqueNamibiëNieuw-CaledoniëNigerNorfolkNigeriaNicaraguaNederlandNoorweg" +
- "enNepalNauruNiueNieuw-ZeelandOmanPanamaPeruFrans-PolynesiëPapoea-Nieuw-G" +
- "uineaFilipijnenPakistanPolenSaint-Pierre en MiquelonPitcairneilandenPuer" +
- "to RicoPalestijnse gebiedenPortugalPalauParaguayQataroverig OceaniëRéuni" +
- "onRoemeniëServiëRuslandRwandaSaoedi-ArabiëSalomonseilandenSeychellenSoed" +
- "anZwedenSingaporeSint-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSie" +
- "rra LeoneSan MarinoSenegalSomaliëSurinameZuid-SoedanSao Tomé en Principe" +
- "El SalvadorSint-MaartenSyriëSwazilandTristan da CunhaTurks- en Caicoseil" +
- "andenTsjaadFranse Gebieden in de zuidelijke Indische OceaanTogoThailandT" +
- "adzjikistanTokelauOost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en T" +
- "obagoTuvaluTaiwanTanzaniaOekraïneOegandaKleine afgelegen eilanden van de" +
- " Verenigde StatenVerenigde StatenUruguayOezbekistanVaticaanstadSaint Vin" +
- "cent en de GrenadinesVenezuelaBritse MaagdeneilandenAmerikaanse Maagdene" +
- "ilandenVietnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteZuid-AfrikaZ" +
- "ambiaZimbabweonbekend gebiedwereldAfrikaNoord-AmerikaZuid-AmerikaOceanië" +
- "West-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-AfrikaZuidelijk" +
- " AfrikaAmerikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZuidoo" +
- "st-AziëZuid-EuropaAustralaziëMelanesiëMicronesische regioPolynesiëAziëCe" +
- "ntraal-AziëWest-AziëEuropaOost-EuropaNoord-EuropaWest-EuropaLatijns-Amer" +
- "ika"
-
-var nlRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0059,
- 0x0061, 0x0075, 0x007b, 0x0085, 0x0090, 0x00a0, 0x00aa, 0x00b4,
- 0x00b9, 0x00bf, 0x00cb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x0106,
- 0x010f, 0x0116, 0x011d, 0x0122, 0x0133, 0x013a, 0x0140, 0x0147,
- 0x015a, 0x0163, 0x016d, 0x0173, 0x017f, 0x0187, 0x018e, 0x0194,
- 0x019a, 0x01a7, 0x01b5, 0x01d2, 0x01e3, 0x01ee, 0x01f7, 0x0203,
- 0x0208, 0x0210, 0x0215, 0x021d, 0x0227, 0x0231, 0x0235, 0x0240,
- 0x0248, 0x0257, 0x025d, 0x0266, 0x026f, 0x027b, 0x0283, 0x028d,
- // Entry 40 - 7F
- 0x0295, 0x02ab, 0x02b3, 0x02c3, 0x02ca, 0x02d1, 0x02d7, 0x02e8,
- 0x02ef, 0x02f5, 0x02fe, 0x030b, 0x0312, 0x0316, 0x0326, 0x0330,
- 0x0338, 0x0341, 0x0346, 0x0359, 0x0360, 0x0368, 0x0374, 0x037c,
- 0x0381, 0x038a, 0x0393, 0x0399, 0x039f, 0x03a9, 0x03bb, 0x03c6,
- 0x03f1, 0x03fa, 0x03fe, 0x040b, 0x0411, 0x0427, 0x0440, 0x0448,
- 0x0450, 0x0456, 0x045f, 0x0472, 0x047c, 0x0483, 0x048a, 0x0495,
- 0x049a, 0x04bf, 0x04c3, 0x04c7, 0x04ce, 0x04d5, 0x04db, 0x04e2,
- 0x04eb, 0x04f0, 0x04f5, 0x04fe, 0x0506, 0x050e, 0x0515, 0x0529,
- // Entry 80 - BF
- 0x0534, 0x053e, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0573,
- 0x0580, 0x0589, 0x0590, 0x0597, 0x059f, 0x05a8, 0x05af, 0x05b5,
- 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05e1, 0x05eb, 0x05fb, 0x0605,
- 0x0609, 0x0618, 0x0621, 0x0634, 0x0648, 0x0652, 0x065d, 0x0667,
- 0x066c, 0x0675, 0x067d, 0x0683, 0x0689, 0x0692, 0x069c, 0x06a4,
- 0x06b4, 0x06b9, 0x06c0, 0x06c7, 0x06d0, 0x06d9, 0x06e2, 0x06e7,
- 0x06ec, 0x06f0, 0x06fd, 0x0701, 0x0707, 0x070b, 0x071b, 0x072e,
- 0x0738, 0x0740, 0x0745, 0x075d, 0x076d, 0x0778, 0x078c, 0x0794,
- // Entry C0 - FF
- 0x0799, 0x07a1, 0x07a6, 0x07b5, 0x07bd, 0x07c6, 0x07cd, 0x07d4,
- 0x07da, 0x07e8, 0x07f8, 0x0802, 0x0808, 0x080e, 0x0817, 0x0822,
- 0x082b, 0x0843, 0x084c, 0x0858, 0x0862, 0x0869, 0x0871, 0x0879,
- 0x0884, 0x0899, 0x08a4, 0x08b0, 0x08b6, 0x08bf, 0x08cf, 0x08e7,
- 0x08ed, 0x091d, 0x0921, 0x0929, 0x0935, 0x093c, 0x0946, 0x0952,
- 0x095a, 0x095f, 0x0966, 0x0978, 0x097e, 0x0984, 0x098c, 0x0995,
- 0x099c, 0x09cd, 0x09dd, 0x09e4, 0x09ef, 0x09fb, 0x0a19, 0x0a22,
- 0x0a38, 0x0a53, 0x0a5a, 0x0a61, 0x0a71, 0x0a76, 0x0a7c, 0x0a81,
- // Entry 100 - 13F
- 0x0a88, 0x0a93, 0x0a99, 0x0aa1, 0x0ab0, 0x0ab6, 0x0abc, 0x0ac9,
- 0x0ad5, 0x0add, 0x0ae8, 0x0af6, 0x0b01, 0x0b0d, 0x0b1c, 0x0b2c,
- 0x0b33, 0x0b45, 0x0b55, 0x0b5f, 0x0b69, 0x0b77, 0x0b82, 0x0b8e,
- 0x0b98, 0x0bab, 0x0bb5, 0x0bba, 0x0bc8, 0x0bd2, 0x0bd8, 0x0be3,
- 0x0bef, 0x0bfa, 0x0c09,
-} // Size: 606 bytes
-
-var noRegionStr string = "" + // Size: 2836 bytes
- "AscensionAndorraDe forente arabiske emiraterAfghanistanAntigua og Barbud" +
- "aAnguillaAlbaniaArmeniaDe nederlandske antillerAngolaAntarktisArgentinaA" +
- "merikansk SamoaØsterrikeAustraliaArubaÅlandAserbajdsjanBosnia-Hercegovin" +
- "aBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint-Ba" +
- "rthélemyBermudaBruneiBoliviaKaribisk NederlandBrasilBahamasBhutanBouvetø" +
- "yaBotswanaHviterusslandBelizeCanadaKokosøyeneKongo-KinshasaDen sentralaf" +
- "rikanske republikkKongo-BrazzavilleSveitsElfenbenskystenCookøyeneChileKa" +
- "merunKinaColombiaClippertonøyaCosta RicaCubaKapp VerdeCuraçaoChristmasøy" +
- "aKyprosTsjekkiaTysklandDiego GarciaDjiboutiDanmarkDominicaDen dominikans" +
- "ke republikkAlgerieCeuta og MelillaEcuadorEstlandEgyptVest-SaharaEritrea" +
- "SpaniaEtiopiaEUFinlandFijiFalklandsøyeneMikronesiaføderasjonenFærøyeneFr" +
- "ankrikeGabonStorbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibralt" +
- "arGrønlandGambiaGuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sø" +
- "r-SandwichøyeneGuatemalaGuamGuinea-BissauGuyanaHongkong S.A.R. KinaHeard" +
- "- og McDonaldøyeneHondurasKroatiaHaitiUngarnKanariøyeneIndonesiaIrlandIs" +
- "raelManIndiaDet britiske territoriet i IndiahavetIrakIranIslandItaliaJer" +
- "seyJamaicaJordanJapanKenyaKirgisistanKambodsjaKiribatiKomoreneSaint Kitt" +
- "s og NevisNord-KoreaSør-KoreaKuwaitCaymanøyeneKasakhstanLaosLibanonSt. L" +
- "uciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLatviaLibyaMarok" +
- "koMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshalløyeneMakedoniaMal" +
- "iMyanmar (Burma)MongoliaMacao S.A.R. KinaNord-MarianeneMartiniqueMaurita" +
- "niaMontserratMaltaMauritiusMaldiveneMalawiMexicoMalaysiaMosambikNamibiaN" +
- "y-CaledoniaNigerNorfolkøyaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNe" +
- "w ZealandOmanPanamaPeruFransk PolynesiaPapua Ny-GuineaFilippinenePakista" +
- "nPolenSt. Pierre og MiquelonPitcairnPuerto RicoDet palestinske områdetPo" +
- "rtugalPalauParaguayQatarytre OseaniaRéunionRomaniaSerbiaRusslandRwandaSa" +
- "udi-ArabiaSalomonøyeneSeychelleneSudanSverigeSingaporeSt. HelenaSlovenia" +
- "Svalbard og Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinam" +
- "Sør-SudanSão Tomé og PríncipeEl SalvadorSint MaartenSyriaSwazilandTrista" +
- "n da CunhaTurks- og CaicosøyeneTsjadDe franske sørterritorierTogoThailan" +
- "dTadsjikistanTokelauØst-TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og T" +
- "obagoTuvaluTaiwanTanzaniaUkrainaUgandaUSAs ytre øyerUSAUruguayUsbekistan" +
- "VatikanstatenSt. Vincent og GrenadineneVenezuelaDe britiske jomfruøyeneD" +
- "e amerikanske jomfruøyeneVietnamVanuatuWallis og FutunaSamoaKosovoJemenM" +
- "ayotteSør-AfrikaZambiaZimbabweukjent områdeverdenAfrikaNord-AmerikaSør-A" +
- "merikaOseaniaVest-AfrikaMellom-AmerikaØst-AfrikaNord-AfrikaSentral-Afrik" +
- "aSørlige AfrikaAmerikaNordlige AmerikaKaribiaØst-AsiaSør-AsiaSørøst-Asia" +
- "Sør-EuropaAustralasiaMelanesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-As" +
- "iaEuropaØst-EuropaNord-EuropaVest-EuropaLatin-Amerika"
-
-var noRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0058,
- 0x005f, 0x0077, 0x007d, 0x0086, 0x008f, 0x009f, 0x00a9, 0x00b2,
- 0x00b7, 0x00bd, 0x00c9, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff,
- 0x0107, 0x010e, 0x0115, 0x011a, 0x012b, 0x0132, 0x0138, 0x013f,
- 0x0151, 0x0157, 0x015e, 0x0164, 0x016e, 0x0176, 0x0183, 0x0189,
- 0x018f, 0x019a, 0x01a8, 0x01c7, 0x01d8, 0x01de, 0x01ed, 0x01f7,
- 0x01fc, 0x0203, 0x0207, 0x020f, 0x021d, 0x0227, 0x022b, 0x0235,
- 0x023d, 0x024a, 0x0250, 0x0258, 0x0260, 0x026c, 0x0274, 0x027b,
- // Entry 40 - 7F
- 0x0283, 0x029d, 0x02a4, 0x02b4, 0x02bb, 0x02c2, 0x02c7, 0x02d2,
- 0x02d9, 0x02df, 0x02e6, 0x02e8, 0x02ef, 0x02f3, 0x0302, 0x0319,
- 0x0323, 0x032c, 0x0331, 0x033e, 0x0345, 0x034c, 0x0359, 0x0361,
- 0x0366, 0x036f, 0x0378, 0x037e, 0x0384, 0x038e, 0x039f, 0x03a5,
- 0x03c8, 0x03d1, 0x03d5, 0x03e2, 0x03e8, 0x03fc, 0x0414, 0x041c,
- 0x0423, 0x0428, 0x042e, 0x043a, 0x0443, 0x0449, 0x044f, 0x0452,
- 0x0457, 0x047c, 0x0480, 0x0484, 0x048a, 0x0490, 0x0496, 0x049d,
- 0x04a3, 0x04a8, 0x04ad, 0x04b8, 0x04c1, 0x04c9, 0x04d1, 0x04e5,
- // Entry 80 - BF
- 0x04ef, 0x04f9, 0x04ff, 0x050b, 0x0515, 0x0519, 0x0520, 0x0529,
- 0x0536, 0x053f, 0x0546, 0x054d, 0x0554, 0x055d, 0x0563, 0x0568,
- 0x056f, 0x0575, 0x057c, 0x0586, 0x0592, 0x059c, 0x05aa, 0x05b3,
- 0x05b7, 0x05c6, 0x05ce, 0x05df, 0x05ed, 0x05f7, 0x0601, 0x060b,
- 0x0610, 0x0619, 0x0622, 0x0628, 0x062e, 0x0636, 0x063e, 0x0645,
- 0x0651, 0x0656, 0x0661, 0x0668, 0x0671, 0x067a, 0x067f, 0x0684,
- 0x0689, 0x068d, 0x0698, 0x069c, 0x06a2, 0x06a6, 0x06b6, 0x06c5,
- 0x06d0, 0x06d8, 0x06dd, 0x06f3, 0x06fb, 0x0706, 0x071e, 0x0726,
- // Entry C0 - FF
- 0x072b, 0x0733, 0x0738, 0x0744, 0x074c, 0x0753, 0x0759, 0x0761,
- 0x0767, 0x0773, 0x0780, 0x078b, 0x0790, 0x0797, 0x07a0, 0x07aa,
- 0x07b2, 0x07c7, 0x07cf, 0x07db, 0x07e5, 0x07ec, 0x07f3, 0x07fa,
- 0x0804, 0x081b, 0x0826, 0x0832, 0x0837, 0x0840, 0x0850, 0x0866,
- 0x086b, 0x0885, 0x0889, 0x0891, 0x089d, 0x08a4, 0x08ae, 0x08ba,
- 0x08c1, 0x08c6, 0x08cc, 0x08de, 0x08e4, 0x08ea, 0x08f2, 0x08f9,
- 0x08ff, 0x090e, 0x0911, 0x0918, 0x0922, 0x092f, 0x0949, 0x0952,
- 0x096a, 0x0985, 0x098c, 0x0993, 0x09a3, 0x09a8, 0x09ae, 0x09b3,
- // Entry 100 - 13F
- 0x09ba, 0x09c5, 0x09cb, 0x09d3, 0x09e1, 0x09e7, 0x09ed, 0x09f9,
- 0x0a05, 0x0a0c, 0x0a17, 0x0a25, 0x0a30, 0x0a3b, 0x0a49, 0x0a58,
- 0x0a5f, 0x0a6f, 0x0a76, 0x0a7f, 0x0a88, 0x0a95, 0x0aa0, 0x0aab,
- 0x0ab4, 0x0abe, 0x0ac7, 0x0acb, 0x0ad7, 0x0ae0, 0x0ae6, 0x0af1,
- 0x0afc, 0x0b07, 0x0b14,
-} // Size: 606 bytes
-
-var paRegionStr string = "" + // Size: 7688 bytes
- "ਅਸੈਂਸ਼ਨ ਟਾਪੂਅੰਡੋਰਾਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤਅਫ਼ਗਾਨਿਸਤਾਨਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾਅੰਗੁਇਲਾ" +
- "ਅਲਬਾਨੀਆਅਰਮੀਨੀਆਅੰਗੋਲਾਅੰਟਾਰਕਟਿਕਾਅਰਜਨਟੀਨਾਅਮੈਰੀਕਨ ਸਮੋਆਆਸਟਰੀਆਆਸਟ੍ਰੇਲੀਆਅਰੂਬਾ" +
- "ਅਲੈਂਡ ਟਾਪੂਅਜ਼ਰਬਾਈਜਾਨਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾਬਾਰਬਾਡੋਸਬੰਗਲਾਦੇਸ਼ਬੈਲਜੀਅਮਬੁਰਕ" +
- "ੀਨਾ ਫ਼ਾਸੋਬੁਲਗਾਰੀਆਬਹਿਰੀਨਬੁਰੁੰਡੀਬੇਨਿਨਸੇਂਟ ਬਾਰਥੇਲੇਮੀਬਰਮੂਡਾਬਰੂਨੇਈਬੋਲੀਵੀਆਕੈ" +
- "ਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡਬ੍ਰਾਜ਼ੀਲਬਹਾਮਾਸਭੂਟਾਨਬੌਵੇਟ ਟਾਪੂਬੋਟਸਵਾਨਾਬੇਲਾਰੂਸਬੇਲੀਜ਼ਕੈਨੇਡ" +
- "ਾਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜਕਾਂਗੋ - ਬ੍ਰਾਜ਼" +
- "ਾਵਿਲੇਸਵਿਟਜ਼ਰਲੈਂਡਕੋਟ ਡੀਵੋਆਰਕੁੱਕ ਟਾਪੂਚਿਲੀਕੈਮਰੂਨਚੀਨਕੋਲੰਬੀਆਕਲਿੱਪਰਟਨ ਟਾਪੂਕੋ" +
- "ਸਟਾ ਰੀਕਾਕਿਊਬਾਕੇਪ ਵਰਡੇਕੁਰਾਕਾਓਕ੍ਰਿਸਮਿਸ ਟਾਪੂਸਾਇਪ੍ਰਸਚੈਕ ਗਣਰਾਜਜਰਮਨੀਡੀਇਗੋ ਗਾ" +
- "ਰਸੀਆਜ਼ੀਬੂਤੀਡੈਨਮਾਰਕਡੋਮੀਨਿਕਾਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜਅਲਜੀਰੀਆਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾਇਕਵੇਡ" +
- "ੋਰਇਸਟੋਨੀਆਮਿਸਰਪੱਛਮੀ ਸਹਾਰਾਇਰੀਟ੍ਰਿਆਸਪੇਨਇਥੋਪੀਆਯੂਰਪੀ ਯੂਨੀਅਨਫਿਨਲੈਂਡਫ਼ਿਜੀਫ਼ਾਕ" +
- "ਲੈਂਡ ਟਾਪੂਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਫੈਰੋ ਟਾਪੂਫ਼ਰਾਂਸਗਬੋਨਯੂਨਾਈਟਡ ਕਿੰਗਡਮਗ੍ਰੇਨਾਡਾਜਾਰਜੀਆਫ" +
- "਼ਰੈਂਚ ਗੁਆਨਾਗਰਨਜੀਘਾਨਾਜਿਬਰਾਲਟਰਗ੍ਰੀਨਲੈਂਡਗੈਂਬੀਆਗਿਨੀਗੁਆਡੇਲੋਪਭੂ-ਖੰਡੀ ਗਿਨੀਗ੍ਰ" +
- "ੀਸਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂਗੁਆਟੇਮਾਲਾਗੁਆਮਗਿਨੀ-ਬਿਸਾਉਗੁਯਾਨਾਹਾਂਗ" +
- " ਕਾਂਗ ਐਸਏਆਰ ਚੀਨਹਰਡ ਤੇ ਮੈਕਡੋਨਾਲਡ ਟਾਪੂਹੋਂਡੁਰਸਕਰੋਏਸ਼ੀਆਹੈਤੀਹੰਗਰੀਕੇਨਾਰੀ ਟਾਪੂਇ" +
- "ੰਡੋਨੇਸ਼ੀਆਆਇਰਲੈਂਡਇਜ਼ਰਾਈਲਆਇਲ ਆਫ ਮੈਨਭਾਰਤਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਪ੍ਰਦੇਸ਼ਇਰਾਕ" +
- "ਈਰਾਨਆਈਸਲੈਂਡਇਟਲੀਜਰਸੀਜਮਾਇਕਾਜਾਰਡਨਜਪਾਨਕੀਨੀਆਕਿਰਗਿਜ਼ਸਤਾਨਕੰਬੋਡੀਆਕਿਰਬਾਤੀਕੋਮੋਰੋ" +
- "ਸਸੈਂਟ ਕਿਟਸ ਐਂਡ ਨੇਵਿਸਉੱਤਰੀ ਕੋਰੀਆਦੱਖਣੀ ਕੋਰੀਆਕੁਵੈਤਕੇਮੈਨ ਟਾਪੂਕਜ਼ਾਖਸਤਾਨਲਾਓਸ" +
- "ਲੈਬਨਾਨਸੇਂਟ ਲੂਸੀਆਲਿਚੇਂਸਟਾਇਨਸ੍ਰੀ ਲੰਕਾਲਾਈਬੀਰੀਆਲੇਸੋਥੋਲਿਥੁਆਨੀਆਲਕਜ਼ਮਬਰਗਲਾਟਵੀ" +
- "ਆਲੀਬੀਆਮੋਰੱਕੋਮੋਨਾਕੋਮੋਲਡੋਵਾਮੋਂਟੇਨੇਗਰੋਸੇਂਟ ਮਾਰਟਿਨਮੈਡਾਗਾਸਕਰਮਾਰਸ਼ਲ ਟਾਪੂਮੈਕਡ" +
- "ੋਨੀਆਮਾਲੀਮਿਆਂਮਾਰ (ਬਰਮਾ)ਮੰਗੋਲੀਆਮਕਾਉ ਐਸਏਆਰ ਚੀਨਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂਮਾਰਟੀਨਿਕਮ" +
- "ੋਰਿਟਾਨੀਆਮੋਂਟਸੇਰਾਤਮਾਲਟਾਮੌਰਿਸ਼ਸਮਾਲਦੀਵਮਲਾਵੀਮੈਕਸੀਕੋਮਲੇਸ਼ੀਆਮੋਜ਼ਾਮਬੀਕਨਾਮੀਬੀਆ" +
- "ਨਿਊ ਕੈਲੇਡੋਨੀਆਨਾਈਜਰਨੋਰਫੌਕ ਟਾਪੂਨਾਈਜੀਰੀਆਨਿਕਾਰਾਗੁਆਨੀਦਰਲੈਂਡਨਾਰਵੇਨੇਪਾਲਨਾਉਰੂਨ" +
- "ਿਯੂਨਿਊਜ਼ੀਲੈਂਡਓਮਾਨਪਨਾਮਾਪੇਰੂਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆਪਾਪੂਆ ਨਿਊ ਗਿਨੀਫਿਲੀਪੀਂਸਪਾਕਿਸਤ" +
- "ਾਨਪੋਲੈਂਡਸੈਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨਪਿਟਕੇਰਨ ਟਾਪੂਪਿਊਰਟੋ ਰਿਕੋਫਿਲੀਸਤੀਨੀ ਖੇਤਰਪੁਰਤ" +
- "ਗਾਲਪਲਾਉਪੈਰਾਗਵੇਕਤਰਆਊਟਲਾਇੰਗ ਓਸ਼ੀਨੀਆਰਿਯੂਨੀਅਨਰੋਮਾਨੀਆਸਰਬੀਆਰੂਸਰਵਾਂਡਾਸਾਊਦੀ ਅਰ" +
- "ਬਸੋਲੋਮਨ ਟਾਪੂਸੇਸ਼ਲਸਸੂਡਾਨਸਵੀਡਨਸਿੰਗਾਪੁਰਸੇਂਟ ਹੇਲੇਨਾਸਲੋਵੇਨੀਆਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ" +
- " ਮਾਯੇਨਸਲੋਵਾਕੀਆਸਿਏਰਾ ਲਿਓਨਸੈਨ ਮਰੀਨੋਸੇਨੇਗਲਸੋਮਾਲੀਆਸੂਰੀਨਾਮਦੱਖਣੀ ਸੂਡਾਨਸਾਓ ਟੋਮ " +
- "ਅਤੇ ਪ੍ਰਿੰਸੀਪੇਅਲ ਸਲਵਾਡੋਰਸਿੰਟ ਮਾਰਟੀਨਸੀਰੀਆਸਵਾਜ਼ੀਲੈਂਡਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾਟੁਰਕ" +
- "ਸ ਅਤੇ ਕੈਕੋਸ ਟਾਪੂਚਾਡਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼ਟੋਗੋਥਾਈਲੈਂਡਤਾਜਿਕਿਸਤਾਨਟੋਕੇਲਾਉਤਿਮੋ" +
- "ਰ-ਲੇਸਤੇਤੁਰਕਮੇਨਿਸਤਾਨਟਿਊਨੀਸ਼ੀਆਟੌਂਗਾਤੁਰਕੀਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋਟੁਵਾਲੂਤਾਇਵਾਨ" +
- "ਤਨਜ਼ਾਨੀਆਯੂਕਰੇਨਯੂਗਾਂਡਾਯੂ.ਐਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂਸੰਯੁਕਤ ਰਾਜਉਰੂਗਵੇਉਜ਼ਬੇਕਿਸਤਾਨ" +
- "ਵੈਟੀਕਨ ਸਿਟੀਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸਵੇਨੇਜ਼ੂਏਲਾਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਟਾਪੂਯੂ " +
- "ਐਸ ਵਰਜਿਨ ਟਾਪੂਵੀਅਤਨਾਮਵਾਨੂਆਟੂਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾਸਾਮੋਆਕੋਸੋਵੋਯਮਨਮਾਯੋਟੀਦੱਖਣੀ ਅ" +
- "ਫਰੀਕਾਜ਼ਾਮਬੀਆਜ਼ਿੰਬਾਬਵੇਅਣਪਛਾਤਾ ਖੇਤਰਸੰਸਾਰਅਫ਼ਰੀਕਾਉੱਤਰ ਅਮਰੀਕਾਦੱਖਣੀ ਅਮਰੀਕਾਓਸ" +
- "਼ੇਨੀਆਪੱਛਮੀ ਅਫ਼ਰੀਕਾਕੇਂਦਰੀ ਅਮਰੀਕਾਪੂਰਬੀ ਅਫ਼ਰੀਕਾਉੱਤਰੀ ਅਫ਼ਰੀਕਾਮੱਧ ਅਫ਼ਰੀਕਾਦੱ" +
- "ਖਣੀ ਅਫ਼ਰੀਕਾਅਮਰੀਕਾਉੱਤਰੀ ਅਮਰੀਕਾਕੈਰੇਬੀਆਈਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਏਸ਼ੀਆਦੱਖਣ-ਪੂਰਬੀ " +
- "ਏਸ਼ੀਆਦੱਖਣੀ ਯੂਰਪਆਸਟਰੇਲੇਸ਼ੀਆਮੇਲਾਨੇਸ਼ੀਆਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਖੇਤਰਪੋਲੀਨੇਸ਼ੀਆਏਸ਼ੀਆ" +
- "ਕੇਂਦਰੀ ਏਸ਼ੀਆਪੱਛਮੀ ਏਸ਼ੀਆਯੂਰਪਪੂਰਬੀ ਯੂਰਪਉੱਤਰੀ ਯੂਰਪਪੱਛਮੀ ਯੂਰਪਲਾਤੀਨੀ ਅਮਰੀਕਾ"
-
-var paRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0022, 0x0034, 0x0063, 0x0084, 0x00b9, 0x00ce, 0x00e3,
- 0x00f8, 0x00f8, 0x010a, 0x0128, 0x0140, 0x0162, 0x0174, 0x018f,
- 0x019e, 0x01ba, 0x01d8, 0x0216, 0x022e, 0x0249, 0x025e, 0x0283,
- 0x029b, 0x02ad, 0x02c2, 0x02d1, 0x02f9, 0x030b, 0x031d, 0x0332,
- 0x0363, 0x037b, 0x038d, 0x039c, 0x03b8, 0x03d0, 0x03e5, 0x03f7,
- 0x0409, 0x043a, 0x0464, 0x049c, 0x04cf, 0x04f0, 0x050c, 0x0525,
- 0x0531, 0x0543, 0x054c, 0x0561, 0x0586, 0x05a2, 0x05b1, 0x05c7,
- 0x05dc, 0x0601, 0x0616, 0x062f, 0x063e, 0x0660, 0x0675, 0x068a,
- // Entry 40 - 7F
- 0x06a2, 0x06cd, 0x06e2, 0x0711, 0x0726, 0x073b, 0x0747, 0x0766,
- 0x077e, 0x078a, 0x079c, 0x07be, 0x07d3, 0x07e2, 0x0807, 0x082e,
- 0x0847, 0x0859, 0x0865, 0x088d, 0x08a5, 0x08b7, 0x08d9, 0x08e8,
- 0x08f4, 0x090c, 0x0927, 0x0939, 0x0945, 0x095d, 0x097d, 0x098c,
- 0x09eb, 0x0a06, 0x0a12, 0x0a2e, 0x0a40, 0x0a73, 0x0aac, 0x0ac1,
- 0x0ad9, 0x0ae5, 0x0af4, 0x0b13, 0x0b31, 0x0b46, 0x0b5b, 0x0b75,
- 0x0b81, 0x0bd2, 0x0bde, 0x0bea, 0x0bff, 0x0c0b, 0x0c17, 0x0c29,
- 0x0c38, 0x0c44, 0x0c53, 0x0c74, 0x0c89, 0x0c9e, 0x0cb3, 0x0ce6,
- // Entry 80 - BF
- 0x0d05, 0x0d24, 0x0d33, 0x0d4f, 0x0d6a, 0x0d76, 0x0d88, 0x0da4,
- 0x0dc2, 0x0ddb, 0x0df3, 0x0e05, 0x0e1d, 0x0e35, 0x0e47, 0x0e56,
- 0x0e68, 0x0e7a, 0x0e8f, 0x0ead, 0x0ecc, 0x0ee7, 0x0f06, 0x0f1e,
- 0x0f2a, 0x0f4e, 0x0f63, 0x0f89, 0x0fbb, 0x0fd3, 0x0fee, 0x1009,
- 0x1018, 0x102d, 0x103f, 0x104e, 0x1063, 0x1078, 0x1093, 0x10a8,
- 0x10cd, 0x10dc, 0x10fb, 0x1113, 0x112e, 0x1146, 0x1155, 0x1164,
- 0x1173, 0x117f, 0x119d, 0x11a9, 0x11b8, 0x11c4, 0x11f2, 0x1218,
- 0x1230, 0x1248, 0x125a, 0x1293, 0x12b5, 0x12d4, 0x12fc, 0x1311,
- // Entry C0 - FF
- 0x131d, 0x1332, 0x133b, 0x1369, 0x1381, 0x1396, 0x13a5, 0x13ae,
- 0x13c0, 0x13d9, 0x13f8, 0x140a, 0x1419, 0x1428, 0x1440, 0x145f,
- 0x1477, 0x14b0, 0x14c8, 0x14e4, 0x14fd, 0x150f, 0x1524, 0x1539,
- 0x1558, 0x1591, 0x15ad, 0x15cc, 0x15db, 0x15f9, 0x1628, 0x165e,
- 0x1667, 0x169c, 0x16a8, 0x16bd, 0x16db, 0x16f0, 0x170f, 0x1733,
- 0x174e, 0x175d, 0x176c, 0x17a4, 0x17b6, 0x17c8, 0x17e0, 0x17f2,
- 0x1807, 0x183f, 0x185b, 0x186d, 0x188e, 0x18ad, 0x18f8, 0x1916,
- 0x194b, 0x1975, 0x198a, 0x199f, 0x19cb, 0x19da, 0x19ec, 0x19f5,
- // Entry 100 - 13F
- 0x1a07, 0x1a29, 0x1a3e, 0x1a59, 0x1a7b, 0x1a8a, 0x1a9f, 0x1abe,
- 0x1ae0, 0x1af5, 0x1b1a, 0x1b3f, 0x1b64, 0x1b89, 0x1ba8, 0x1bcd,
- 0x1bdf, 0x1c01, 0x1c19, 0x1c38, 0x1c57, 0x1c83, 0x1c9f, 0x1cc0,
- 0x1cde, 0x1d15, 0x1d33, 0x1d42, 0x1d64, 0x1d83, 0x1d8f, 0x1dab,
- 0x1dc7, 0x1de3, 0x1e08,
-} // Size: 606 bytes
-
-var plRegionStr string = "" + // Size: 3161 bytes
- "Wyspa WniebowstąpieniaAndoraZjednoczone Emiraty ArabskieAfganistanAntigu" +
- "a i BarbudaAnguillaAlbaniaArmeniaAntyle HolenderskieAngolaAntarktykaArge" +
- "ntynaSamoa AmerykańskieAustriaAustraliaArubaWyspy AlandzkieAzerbejdżanBo" +
- "śnia i HercegowinaBarbadosBangladeszBelgiaBurkina FasoBułgariaBahrajnBu" +
- "rundiBeninSaint-BarthélemyBermudyBrunei DarussalamBoliwiaNiderlandy Kara" +
- "ibskieBrazyliaBahamyBhutanWyspa BouvetaBotswanaBiałoruśBelizeKanadaWyspy" +
- " KokosoweDemokratyczna Republika KongaRepublika ŚrodkowoafrykańskaKongoS" +
- "zwajcariaCôte d’IvoireWyspy CookaChileKamerunChinyKolumbiaClippertonKost" +
- "arykaKubaRepublika Zielonego PrzylądkaCuraçaoWyspa Bożego NarodzeniaCypr" +
- "CzechyNiemcyDiego GarciaDżibutiDaniaDominikaDominikanaAlgieriaCeuta i Me" +
- "lillaEkwadorEstoniaEgiptSahara ZachodniaErytreaHiszpaniaEtiopiaUnia Euro" +
- "pejskaFinlandiaFidżiFalklandyMikronezjaWyspy OwczeFrancjaGabonWielka Bry" +
- "taniaGrenadaGruzjaGujana FrancuskaGuernseyGhanaGibraltarGrenlandiaGambia" +
- "GwineaGwadelupaGwinea RównikowaGrecjaGeorgia Południowa i Sandwich Połud" +
- "niowyGwatemalaGuamGwinea BissauGujanaSRA Hongkong (Chiny)Wyspy Heard i M" +
- "cDonaldaHondurasChorwacjaHaitiWęgryWyspy KanaryjskieIndonezjaIrlandiaIzr" +
- "aelWyspa ManIndieBrytyjskie Terytorium Oceanu IndyjskiegoIrakIranIslandi" +
- "aWłochyJerseyJamajkaJordaniaJaponiaKeniaKirgistanKambodżaKiribatiKomoryS" +
- "aint Kitts i NevisKorea PółnocnaKorea PołudniowaKuwejtKajmanyKazachstanL" +
- "aosLibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitwaLuksemburgŁo" +
- "twaLibiaMarokoMonakoMołdawiaCzarnogóraSaint-MartinMadagaskarWyspy Marsha" +
- "llaMacedoniaMaliMjanma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneM" +
- "artynikaMauretaniaMontserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMoz" +
- "ambikNamibiaNowa KaledoniaNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNe" +
- "palNauruNiueNowa ZelandiaOmanPanamaPeruPolinezja FrancuskaPapua-Nowa Gwi" +
- "neaFilipinyPakistanPolskaSaint-Pierre i MiquelonPitcairnPortorykoTerytor" +
- "ia PalestyńskiePortugaliaPalauParagwajKatarOceania inneReunionRumuniaSer" +
- "biaRosjaRwandaArabia SaudyjskaWyspy SalomonaSeszeleSudanSzwecjaSingapurW" +
- "yspa Świętej HelenySłoweniaSvalbard i Jan MayenSłowacjaSierra LeoneSan M" +
- "arinoSenegalSomaliaSurinamSudan PołudniowyWyspy Świętego Tomasza i Książ" +
- "ęcaSalwadorSint MaartenSyriaSuaziTristan da CunhaTurks i CaicosCzadFran" +
- "cuskie Terytoria Południowe i AntarktyczneTogoTajlandiaTadżykistanTokela" +
- "uTimor WschodniTurkmenistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajw" +
- "anTanzaniaUkrainaUgandaDalekie Wyspy Mniejsze Stanów ZjednoczonychStany " +
- "ZjednoczoneUrugwajUzbekistanWatykanSaint Vincent i GrenadynyWenezuelaBry" +
- "tyjskie Wyspy DziewiczeWyspy Dziewicze Stanów ZjednoczonychWietnamVanuat" +
- "uWallis i FutunaSamoaKosowoJemenMajottaRepublika Południowej AfrykiZambi" +
- "aZimbabweNieznany regionświatAfrykaAmeryka PółnocnaAmeryka PołudniowaOce" +
- "aniaAfryka ZachodniaAmeryka ŚrodkowaAfryka WschodniaAfryka PółnocnaAfryk" +
- "a ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północna (USA, Kanada)KaraibyA" +
- "zja WschodniaAzja PołudniowaAzja Południowo-WschodniaEuropa PołudniowaAu" +
- "stralazjaMelanezjaRegion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja Zachod" +
- "niaEuropaEuropa WschodniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińska"
-
-var plRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0017, 0x001d, 0x0039, 0x0043, 0x0054, 0x005c, 0x0063,
- 0x006a, 0x007d, 0x0083, 0x008d, 0x0096, 0x00a9, 0x00b0, 0x00b9,
- 0x00be, 0x00cd, 0x00d9, 0x00ee, 0x00f6, 0x0100, 0x0106, 0x0112,
- 0x011b, 0x0122, 0x0129, 0x012e, 0x013f, 0x0146, 0x0157, 0x015e,
- 0x0173, 0x017b, 0x0181, 0x0187, 0x0194, 0x019c, 0x01a6, 0x01ac,
- 0x01b2, 0x01c0, 0x01dd, 0x01fb, 0x0200, 0x020a, 0x021a, 0x0225,
- 0x022a, 0x0231, 0x0236, 0x023e, 0x0248, 0x0251, 0x0255, 0x0273,
- 0x027b, 0x0293, 0x0297, 0x029d, 0x02a3, 0x02af, 0x02b7, 0x02bc,
- // Entry 40 - 7F
- 0x02c4, 0x02ce, 0x02d6, 0x02e5, 0x02ec, 0x02f3, 0x02f8, 0x0308,
- 0x030f, 0x0318, 0x031f, 0x032e, 0x0337, 0x033d, 0x0346, 0x0350,
- 0x035b, 0x0362, 0x0367, 0x0376, 0x037d, 0x0383, 0x0393, 0x039b,
- 0x03a0, 0x03a9, 0x03b3, 0x03b9, 0x03bf, 0x03c8, 0x03d9, 0x03df,
- 0x0409, 0x0412, 0x0416, 0x0423, 0x0429, 0x043d, 0x0454, 0x045c,
- 0x0465, 0x046a, 0x0470, 0x0481, 0x048a, 0x0492, 0x0498, 0x04a1,
- 0x04a6, 0x04ce, 0x04d2, 0x04d6, 0x04de, 0x04e5, 0x04eb, 0x04f2,
- 0x04fa, 0x0501, 0x0506, 0x050f, 0x0518, 0x0520, 0x0526, 0x0539,
- // Entry 80 - BF
- 0x0549, 0x055a, 0x0560, 0x0567, 0x0571, 0x0575, 0x057a, 0x0585,
- 0x0592, 0x059b, 0x05a2, 0x05a9, 0x05ae, 0x05b8, 0x05be, 0x05c3,
- 0x05c9, 0x05cf, 0x05d8, 0x05e3, 0x05ef, 0x05f9, 0x0608, 0x0611,
- 0x0615, 0x0623, 0x062b, 0x063c, 0x064e, 0x0657, 0x0661, 0x066b,
- 0x0670, 0x0679, 0x0681, 0x0687, 0x068d, 0x0694, 0x069c, 0x06a3,
- 0x06b1, 0x06b6, 0x06bd, 0x06c4, 0x06cd, 0x06d5, 0x06dd, 0x06e2,
- 0x06e7, 0x06eb, 0x06f8, 0x06fc, 0x0702, 0x0706, 0x0719, 0x072a,
- 0x0732, 0x073a, 0x0740, 0x0757, 0x075f, 0x0768, 0x077f, 0x0789,
- // Entry C0 - FF
- 0x078e, 0x0796, 0x079b, 0x07a7, 0x07ae, 0x07b5, 0x07bb, 0x07c0,
- 0x07c6, 0x07d6, 0x07e4, 0x07eb, 0x07f0, 0x07f7, 0x07ff, 0x0815,
- 0x081e, 0x0832, 0x083b, 0x0847, 0x0851, 0x0858, 0x085f, 0x0866,
- 0x0877, 0x089d, 0x08a5, 0x08b1, 0x08b6, 0x08bb, 0x08cb, 0x08d9,
- 0x08dd, 0x090c, 0x0910, 0x0919, 0x0925, 0x092c, 0x093a, 0x0946,
- 0x094d, 0x0952, 0x0958, 0x0969, 0x096f, 0x0975, 0x097d, 0x0984,
- 0x098a, 0x09b6, 0x09c7, 0x09ce, 0x09d8, 0x09df, 0x09f8, 0x0a01,
- 0x0a1b, 0x0a40, 0x0a47, 0x0a4e, 0x0a5d, 0x0a62, 0x0a68, 0x0a6d,
- // Entry 100 - 13F
- 0x0a74, 0x0a91, 0x0a97, 0x0a9f, 0x0aae, 0x0ab4, 0x0aba, 0x0acc,
- 0x0adf, 0x0ae6, 0x0af6, 0x0b07, 0x0b17, 0x0b28, 0x0b38, 0x0b4a,
- 0x0b51, 0x0b71, 0x0b78, 0x0b86, 0x0b96, 0x0bb0, 0x0bc2, 0x0bcd,
- 0x0bd6, 0x0be7, 0x0bf0, 0x0bf4, 0x0c02, 0x0c10, 0x0c16, 0x0c26,
- 0x0c37, 0x0c47, 0x0c59,
-} // Size: 606 bytes
-
-var ptRegionStr string = "" + // Size: 3176 bytes
- "Ilha de AscensãoAndorraEmirados Árabes UnidosAfeganistãoAntígua e Barbud" +
- "aAnguillaAlbâniaArmêniaAntilhas HolandesasAngolaAntártidaArgentinaSamoa " +
- "AmericanaÁustriaAustráliaArubaIlhas ÅlandAzerbaijãoBósnia e HerzegovinaB" +
- "arbadosBangladeshBélgicaBurquina FasoBulgáriaBahreinBurundiBeninSão Bart" +
- "olomeuBermudasBruneiBolíviaPaíses Baixos CaribenhosBrasilBahamasButãoIlh" +
- "a BouvetBotsuanaBielorrússiaBelizeCanadáIlhas Cocos (Keeling)Congo - Kin" +
- "shasaRepública Centro-AfricanaCongo - BrazzavilleSuíçaCosta do MarfimIlh" +
- "as CookChileRepública dos CamarõesChinaColômbiaIlha de ClippertonCosta R" +
- "icaCubaCabo VerdeCuraçaoIlha ChristmasChipreRepública TchecaAlemanhaDieg" +
- "o GarciaDjibutiDinamarcaDominicaRepública DominicanaArgéliaCeuta e Melil" +
- "haEquadorEstôniaEgitoSaara OcidentalEritreiaEspanhaEtiópiaUnião Europeia" +
- "FinlândiaFijiIlhas MalvinasMicronésiaIlhas FaroeFrançaGabãoReino UnidoGr" +
- "anadaGeórgiaGuiana FrancesaGuernseyGanaGibraltarGroenlândiaGâmbiaGuinéGu" +
- "adalupeGuiné EquatorialGréciaIlhas Geórgia do Sul e Sandwich do SulGuate" +
- "malaGuamGuiné-BissauGuianaHong Kong, RAE da ChinaIlhas Heard e McDonaldH" +
- "ondurasCroáciaHaitiHungriaIlhas CanáriasIndonésiaIrlandaIsraelIlha de Ma" +
- "nÍndiaTerritório Britânico do Oceano ÍndicoIraqueIrãIslândiaItáliaJersey" +
- "JamaicaJordâniaJapãoQuêniaQuirguistãoCambojaQuiribatiComoresSão Cristóvã" +
- "o e NevisCoreia do NorteCoreia do SulKuwaitIlhas CaymanCazaquistãoLaosLí" +
- "banoSanta LúciaLiechtensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetô" +
- "niaLíbiaMarrocosMônacoMoldáviaMontenegroSão MartinhoMadagascarIlhas Mars" +
- "hallMacedôniaMaliMianmar (Birmânia)MongóliaMacau, RAE da ChinaIlhas Mari" +
- "anas do NorteMartinicaMauritâniaMontserratMaltaMaurícioMaldivasMalawiMéx" +
- "icoMalásiaMoçambiqueNamíbiaNova CaledôniaNígerIlha NorfolkNigériaNicarág" +
- "uaHolandaNoruegaNepalNauruNiueNova ZelândiaOmãPanamáPeruPolinésia France" +
- "saPapua-Nova GuinéFilipinasPaquistãoPolôniaSaint Pierre e MiquelonIlhas " +
- "PitcairnPorto RicoTerritórios palestinosPortugalPalauParaguaiCatarOceani" +
- "a RemotaReuniãoRomêniaSérviaRússiaRuandaArábia SauditaIlhas SalomãoSeych" +
- "ellesSudãoSuéciaCingapuraSanta HelenaEslovêniaSvalbard e Jan MayenEslová" +
- "quiaSerra LeoaSan MarinoSenegalSomáliaSurinameSudão do SulSão Tomé e Prí" +
- "ncipeEl SalvadorSint MaartenSíriaSuazilândiaTristão da CunhaIlhas Turks " +
- "e CaicosChadeTerritórios Franceses do SulTogoTailândiaTajiquistãoTokelau" +
- "Timor-LesteTurcomenistãoTunísiaTongaTurquiaTrinidad e TobagoTuvaluTaiwan" +
- "TanzâniaUcrâniaUgandaIlhas Menores Distantes dos EUAEstados UnidosUrugua" +
- "iUzbequistãoCidade do VaticanoSão Vicente e GranadinasVenezuelaIlhas Vir" +
- "gens BritânicasIlhas Virgens dos EUAVietnãVanuatuWallis e FutunaSamoaKos" +
- "ovoIêmenMayotteÁfrica do SulZâmbiaZimbábueRegião desconhecidaMundoÁfrica" +
- "América do NorteAmérica do SulOceaniaÁfrica OcidentalAmérica CentralÁfri" +
- "ca OrientalÁfrica do NorteÁfrica CentralÁfrica AustralAméricasAmérica Se" +
- "tentrionalCaribeÁsia OrientalÁsia do SulSudeste AsiáticoEuropa do SulAus" +
- "tralásiaMelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia Ocide" +
- "ntalEuropaEuropa OrientalEuropa SetentrionalEuropa OcidentalAmérica Lati" +
- "na"
-
-var ptRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0011, 0x0018, 0x002f, 0x003b, 0x004d, 0x0055, 0x005d,
- 0x0065, 0x0078, 0x007e, 0x0088, 0x0091, 0x00a0, 0x00a8, 0x00b2,
- 0x00b7, 0x00c3, 0x00ce, 0x00e3, 0x00eb, 0x00f5, 0x00fd, 0x010a,
- 0x0113, 0x011a, 0x0121, 0x0126, 0x0135, 0x013d, 0x0143, 0x014b,
- 0x0164, 0x016a, 0x0171, 0x0177, 0x0182, 0x018a, 0x0197, 0x019d,
- 0x01a4, 0x01b9, 0x01c9, 0x01e3, 0x01f6, 0x01fd, 0x020c, 0x0216,
- 0x021b, 0x0233, 0x0238, 0x0241, 0x0253, 0x025d, 0x0261, 0x026b,
- 0x0273, 0x0281, 0x0287, 0x0298, 0x02a0, 0x02ac, 0x02b3, 0x02bc,
- // Entry 40 - 7F
- 0x02c4, 0x02d9, 0x02e1, 0x02f0, 0x02f7, 0x02ff, 0x0304, 0x0313,
- 0x031b, 0x0322, 0x032a, 0x0339, 0x0343, 0x0347, 0x0355, 0x0360,
- 0x036b, 0x0372, 0x0378, 0x0383, 0x038a, 0x0392, 0x03a1, 0x03a9,
- 0x03ad, 0x03b6, 0x03c2, 0x03c9, 0x03cf, 0x03d8, 0x03e9, 0x03f0,
- 0x0417, 0x0420, 0x0424, 0x0431, 0x0437, 0x044e, 0x0464, 0x046c,
- 0x0474, 0x0479, 0x0480, 0x048f, 0x0499, 0x04a0, 0x04a6, 0x04b1,
- 0x04b7, 0x04df, 0x04e5, 0x04e9, 0x04f2, 0x04f9, 0x04ff, 0x0506,
- 0x050f, 0x0515, 0x051c, 0x0528, 0x052f, 0x0538, 0x053f, 0x0557,
- // Entry 80 - BF
- 0x0566, 0x0573, 0x0579, 0x0585, 0x0591, 0x0595, 0x059c, 0x05a8,
- 0x05b5, 0x05be, 0x05c6, 0x05cc, 0x05d5, 0x05df, 0x05e7, 0x05ed,
- 0x05f5, 0x05fc, 0x0605, 0x060f, 0x061c, 0x0626, 0x0634, 0x063e,
- 0x0642, 0x0655, 0x065e, 0x0671, 0x0688, 0x0691, 0x069c, 0x06a6,
- 0x06ab, 0x06b4, 0x06bc, 0x06c2, 0x06c9, 0x06d1, 0x06dc, 0x06e4,
- 0x06f3, 0x06f9, 0x0705, 0x070d, 0x0717, 0x071e, 0x0725, 0x072a,
- 0x072f, 0x0733, 0x0741, 0x0745, 0x074c, 0x0750, 0x0763, 0x0774,
- 0x077d, 0x0787, 0x078f, 0x07a6, 0x07b4, 0x07be, 0x07d5, 0x07dd,
- // Entry C0 - FF
- 0x07e2, 0x07ea, 0x07ef, 0x07fd, 0x0805, 0x080d, 0x0814, 0x081b,
- 0x0821, 0x0830, 0x083e, 0x0848, 0x084e, 0x0855, 0x085e, 0x086a,
- 0x0874, 0x0888, 0x0893, 0x089d, 0x08a7, 0x08ae, 0x08b6, 0x08be,
- 0x08cb, 0x08e1, 0x08ec, 0x08f8, 0x08fe, 0x090a, 0x091b, 0x092f,
- 0x0934, 0x0951, 0x0955, 0x095f, 0x096b, 0x0972, 0x097d, 0x098b,
- 0x0993, 0x0998, 0x099f, 0x09b0, 0x09b6, 0x09bc, 0x09c5, 0x09cd,
- 0x09d3, 0x09f2, 0x0a00, 0x0a07, 0x0a13, 0x0a25, 0x0a3e, 0x0a47,
- 0x0a60, 0x0a75, 0x0a7c, 0x0a83, 0x0a92, 0x0a97, 0x0a9d, 0x0aa3,
- // Entry 100 - 13F
- 0x0aaa, 0x0ab8, 0x0abf, 0x0ac8, 0x0adc, 0x0ae1, 0x0ae8, 0x0af9,
- 0x0b08, 0x0b0f, 0x0b20, 0x0b30, 0x0b40, 0x0b50, 0x0b5f, 0x0b6e,
- 0x0b77, 0x0b8c, 0x0b92, 0x0ba0, 0x0bac, 0x0bbd, 0x0bca, 0x0bd6,
- 0x0be0, 0x0bf6, 0x0c00, 0x0c05, 0x0c12, 0x0c21, 0x0c27, 0x0c36,
- 0x0c49, 0x0c59, 0x0c68,
-} // Size: 606 bytes
-
-var ptPTRegionStr string = "" + // Size: 687 bytes
- "AnguilaArméniaAlandaBangladecheBarémBenimBaamasIlhas dos Cocos (Keeling)" +
- "Congo-KinshasaCongo-BrazzavilleCamarõesCuraçauIlha do NatalRepública Che" +
- "caJibutiDomínicaEstóniaIlhas FalklandIlhas FaroéGronelândiaGuameIrãoQuén" +
- "iaSão Cristóvão e NevesIlhas CaimãoListenstaineSri LancaLetóniaMónacoMad" +
- "agáscarMacedóniaMonserrateMauríciaMaláuiNova CaledóniaPaíses BaixosPolón" +
- "iaSão Pedro e MiquelãoTerritórios palestinianosOceânia InsularRoméniaSei" +
- "chelesSingapuraEslovéniaSão MarinhoSalvadorIlhas Turcas e CaicosToquelau" +
- "TurquemenistãoTrindade e TobagoIlhas Menores Afastadas dos EUAUsbequistã" +
- "oVietnameIémenMaioteZimbabuéOceâniaNorte de ÁfricaCaraíbasEuropa do Nort" +
- "e"
-
-var ptPTRegionIdx = []uint16{ // 289 elements
- // Entry 0 - 3F
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007,
- 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
- 0x000f, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x0020, 0x0020,
- 0x0020, 0x0026, 0x0026, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
- 0x002b, 0x002b, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
- 0x0031, 0x004a, 0x0058, 0x0058, 0x0069, 0x0069, 0x0069, 0x0069,
- 0x0069, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
- 0x007a, 0x0087, 0x0087, 0x0097, 0x0097, 0x0097, 0x009d, 0x009d,
- // Entry 40 - 7F
- 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00ae, 0x00ae, 0x00ae,
- 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bc, 0x00bc,
- 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
- 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
- 0x00d4, 0x00d4, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
- 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
- 0x00de, 0x00de, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00fd,
- // Entry 80 - BF
- 0x00fd, 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
- 0x0116, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0127, 0x0127,
- 0x0127, 0x012e, 0x012e, 0x012e, 0x012e, 0x0139, 0x0139, 0x0143,
- 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x014d,
- 0x014d, 0x0156, 0x0156, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d,
- 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017a, 0x017a, 0x017a,
- 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a,
- 0x017a, 0x017a, 0x0182, 0x0198, 0x0198, 0x0198, 0x01b2, 0x01b2,
- // Entry C0 - FF
- 0x01b2, 0x01b2, 0x01b2, 0x01c2, 0x01c2, 0x01ca, 0x01ca, 0x01ca,
- 0x01ca, 0x01ca, 0x01ca, 0x01d3, 0x01d3, 0x01d3, 0x01dc, 0x01dc,
- 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, 0x01f2, 0x01f2, 0x01f2,
- 0x01f2, 0x01f2, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x020f,
- 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0217, 0x0217, 0x0226,
- 0x0226, 0x0226, 0x0226, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237,
- 0x0237, 0x0256, 0x0256, 0x0256, 0x0262, 0x0262, 0x0262, 0x0262,
- 0x0262, 0x0262, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0270,
- // Entry 100 - 13F
- 0x0276, 0x0276, 0x0276, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f,
- 0x027f, 0x0287, 0x0287, 0x0287, 0x0287, 0x0297, 0x0297, 0x0297,
- 0x0297, 0x0297, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
- 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
- 0x02af,
-} // Size: 602 bytes
-
-var roRegionStr string = "" + // Size: 3238 bytes
- "Insula AscensionAndorraEmiratele Arabe UniteAfganistanAntigua și Barbuda" +
- "AnguillaAlbaniaArmeniaAntilele OlandezeAngolaAntarcticaArgentinaSamoa Am" +
- "ericanăAustriaAustraliaArubaInsulele ÅlandAzerbaidjanBosnia și Herțegovi" +
- "naBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSfântul" +
- " BartolomeuBermudaBruneiBoliviaInsulele Caraibe OlandezeBraziliaBahamasB" +
- "hutanInsula BouvetBotswanaBelarusBelizeCanadaInsulele Cocos (Keeling)Con" +
- "go - KinshasaRepublica CentrafricanăCongo - BrazzavilleElvețiaCôte d’Ivo" +
- "ireInsulele CookChileCamerunChinaColumbiaInsula ClippertonCosta RicaCuba" +
- "Capul VerdeCuraçaoInsula ChristmasCipruRepublica CehăGermaniaDiego Garci" +
- "aDjiboutiDanemarcaDominicaRepublica DominicanăAlgeriaCeuta și MelillaEcu" +
- "adorEstoniaEgiptSahara OccidentalăEritreeaSpaniaEtiopiaUniunea Europeană" +
- "FinlandaFijiInsulele FalklandMicroneziaInsulele FeroeFranțaGabonRegatul " +
- "UnitGrenadaGeorgiaGuyana FrancezăGuernseyGhanaGibraltarGroenlandaGambiaG" +
- "uineeaGuadelupaGuineea EcuatorialăGreciaGeorgia de Sud și Insulele Sandw" +
- "ich de SudGuatemalaGuamGuineea-BissauGuyanaR.A.S. Hong Kong a ChineiInsu" +
- "la Heard și Insulele McDonaldHondurasCroațiaHaitiUngariaInsulele CanareI" +
- "ndoneziaIrlandaIsraelInsula ManIndiaTeritoriul Britanic din Oceanul Indi" +
- "anIrakIranIslandaItaliaJerseyJamaicaIordaniaJaponiaKenyaKârgâzstanCambod" +
- "giaKiribatiComoreSaint Kitts și NevisCoreea de NordCoreea de SudKuweitIn" +
- "sulele CaymanKazahstanLaosLibanSfânta LuciaLiechtensteinSri LankaLiberia" +
- "LesothoLituaniaLuxemburgLetoniaLibiaMarocMonacoRepublica MoldovaMunteneg" +
- "ruSfântul MartinMadagascarInsulele MarshallMacedoniaMaliMyanmar (Birmani" +
- "a)MongoliaR.A.S. Macao a ChineiInsulele Mariane de NordMartinicaMauritan" +
- "iaMontserratMaltaMauritiusMaldiveMalawiMexicMalaysiaMozambicNamibiaNoua " +
- "CaledonieNigerInsula NorfolkNigeriaNicaraguaȚările de JosNorvegiaNepalNa" +
- "uruNiueNoua ZeelandăOmanPanamaPeruPolinezia FrancezăPapua-Noua GuineeFil" +
- "ipinePakistanPoloniaSaint-Pierre și MiquelonInsulele PitcairnPuerto Rico" +
- "Teritoriile PalestinienePortugaliaPalauParaguayQatarOceania PerifericăRé" +
- "unionRomâniaSerbiaRusiaRwandaArabia SaudităInsulele SolomonSeychellesSud" +
- "anSuediaSingaporeSfânta ElenaSloveniaSvalbard și Jan MayenSlovaciaSierra" +
- " LeoneSan MarinoSenegalSomaliaSurinameSudanul de SudSao Tome și Principe" +
- "El SalvadorSint-MaartenSiriaSwazilandTristan da CunhaInsulele Turks și C" +
- "aicosCiadTeritoriile Australe și Antarctice FrancezeTogoThailandaTadjiki" +
- "stanTokelauTimorul de EstTurkmenistanTunisiaTongaTurciaTrinidad și Tobag" +
- "oTuvaluTaiwanTanzaniaUcrainaUgandaInsulele Îndepărtate ale S.U.A.Statele" +
- " Unite ale AmericiiUruguayUzbekistanStatul Cetății VaticanuluiSaint Vinc" +
- "ent și GrenadineleVenezuelaInsulele Virgine BritaniceInsulele Virgine S." +
- "U.A.VietnamVanuatuWallis și FutunaSamoaKosovoYemenMayotteAfrica de SudZa" +
- "mbiaZimbabweRegiune necunoscutăLumeAfricaAmerica de NordAmerica de SudOc" +
- "eaniaAfrica OccidentalăAmerica CentralăAfrica OrientalăAfrica Septentrio" +
- "nalăAfrica CentralăAfrica MeridionalăAmericiAmerica SeptentrionalăCaraib" +
- "eAsia OrientalăAsia MeridionalăAsia de Sud-EstEuropa MeridionalăAustrala" +
- "siaMelaneziaRegiunea MicroneziaPolineziaAsiaAsia CentralăAsia Occidental" +
- "ăEuropaEuropa OrientalăEuropa SeptentrionalăEuropa OccidentalăAmerica L" +
- "atină"
-
-var roRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x002c, 0x0036, 0x0049, 0x0051, 0x0058,
- 0x005f, 0x0070, 0x0076, 0x0080, 0x0089, 0x0099, 0x00a0, 0x00a9,
- 0x00ae, 0x00bd, 0x00c8, 0x00df, 0x00e7, 0x00f1, 0x00f7, 0x0103,
- 0x010b, 0x0112, 0x0119, 0x011e, 0x0131, 0x0138, 0x013e, 0x0145,
- 0x015e, 0x0166, 0x016d, 0x0173, 0x0180, 0x0188, 0x018f, 0x0195,
- 0x019b, 0x01b3, 0x01c3, 0x01db, 0x01ee, 0x01f6, 0x0206, 0x0213,
- 0x0218, 0x021f, 0x0224, 0x022c, 0x023d, 0x0247, 0x024b, 0x0256,
- 0x025e, 0x026e, 0x0273, 0x0282, 0x028a, 0x0296, 0x029e, 0x02a7,
- // Entry 40 - 7F
- 0x02af, 0x02c4, 0x02cb, 0x02dc, 0x02e3, 0x02ea, 0x02ef, 0x0302,
- 0x030a, 0x0310, 0x0317, 0x0329, 0x0331, 0x0335, 0x0346, 0x0350,
- 0x035e, 0x0365, 0x036a, 0x0376, 0x037d, 0x0384, 0x0394, 0x039c,
- 0x03a1, 0x03aa, 0x03b4, 0x03ba, 0x03c1, 0x03ca, 0x03de, 0x03e4,
- 0x040f, 0x0418, 0x041c, 0x042a, 0x0430, 0x0449, 0x046b, 0x0473,
- 0x047b, 0x0480, 0x0487, 0x0496, 0x049f, 0x04a6, 0x04ac, 0x04b6,
- 0x04bb, 0x04e1, 0x04e5, 0x04e9, 0x04f0, 0x04f6, 0x04fc, 0x0503,
- 0x050b, 0x0512, 0x0517, 0x0523, 0x052c, 0x0534, 0x053a, 0x054f,
- // Entry 80 - BF
- 0x055d, 0x056a, 0x0570, 0x057f, 0x0588, 0x058c, 0x0591, 0x059e,
- 0x05ab, 0x05b4, 0x05bb, 0x05c2, 0x05ca, 0x05d3, 0x05da, 0x05df,
- 0x05e4, 0x05ea, 0x05fb, 0x0605, 0x0614, 0x061e, 0x062f, 0x0638,
- 0x063c, 0x064e, 0x0656, 0x066b, 0x0683, 0x068c, 0x0696, 0x06a0,
- 0x06a5, 0x06ae, 0x06b5, 0x06bb, 0x06c0, 0x06c8, 0x06d0, 0x06d7,
- 0x06e5, 0x06ea, 0x06f8, 0x06ff, 0x0708, 0x0717, 0x071f, 0x0724,
- 0x0729, 0x072d, 0x073b, 0x073f, 0x0745, 0x0749, 0x075c, 0x076d,
- 0x0775, 0x077d, 0x0784, 0x079d, 0x07ae, 0x07b9, 0x07d1, 0x07db,
- // Entry C0 - FF
- 0x07e0, 0x07e8, 0x07ed, 0x0800, 0x0808, 0x0810, 0x0816, 0x081b,
- 0x0821, 0x0830, 0x0840, 0x084a, 0x084f, 0x0855, 0x085e, 0x086b,
- 0x0873, 0x0889, 0x0891, 0x089d, 0x08a7, 0x08ae, 0x08b5, 0x08bd,
- 0x08cb, 0x08e0, 0x08eb, 0x08f7, 0x08fc, 0x0905, 0x0915, 0x092e,
- 0x0932, 0x095e, 0x0962, 0x096b, 0x0976, 0x097d, 0x098b, 0x0997,
- 0x099e, 0x09a3, 0x09a9, 0x09bc, 0x09c2, 0x09c8, 0x09d0, 0x09d7,
- 0x09dd, 0x09fe, 0x0a18, 0x0a1f, 0x0a29, 0x0a45, 0x0a62, 0x0a6b,
- 0x0a85, 0x0a9c, 0x0aa3, 0x0aaa, 0x0abb, 0x0ac0, 0x0ac6, 0x0acb,
- // Entry 100 - 13F
- 0x0ad2, 0x0adf, 0x0ae5, 0x0aed, 0x0b01, 0x0b05, 0x0b0b, 0x0b1a,
- 0x0b28, 0x0b2f, 0x0b42, 0x0b53, 0x0b64, 0x0b7a, 0x0b8a, 0x0b9d,
- 0x0ba4, 0x0bbb, 0x0bc2, 0x0bd1, 0x0be2, 0x0bf1, 0x0c04, 0x0c0f,
- 0x0c18, 0x0c2b, 0x0c34, 0x0c38, 0x0c46, 0x0c57, 0x0c5d, 0x0c6e,
- 0x0c84, 0x0c97, 0x0ca6,
-} // Size: 606 bytes
-
-var ruRegionStr string = "" + // Size: 5872 bytes
- "о-в ВознесенияАндорраОАЭАфганистанАнтигуа и БарбудаАнгильяАлбанияАрмения" +
- "Нидерландские Антильские о-ваАнголаАнтарктидаАргентинаАмериканское Само" +
- "аАвстрияАвстралияАрубаАландские о-ваАзербайджанБосния и ГерцеговинаБарб" +
- "адосБангладешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-Бартельм" +
- "иБермудские о-ваБруней-ДаруссаламБоливияБонэйр, Синт-Эстатиус и СабаБра" +
- "зилияБагамские о-ваБутано-в БувеБотсванаБеларусьБелизКанадаКокосовые о-" +
- "ваКонго - КиншасаЦАРКонго - БраззавильШвейцарияКот-д’Ивуаро-ва КукаЧили" +
- "КамерунКитайКолумбияо-в КлиппертонКоста-РикаКубаКабо-ВердеКюрасаоо-в Ро" +
- "ждестваКипрЧехияГерманияДиего-ГарсияДжибутиДанияДоминикаДоминиканская Р" +
- "еспубликаАлжирСеута и МелильяЭквадорЭстонияЕгипетЗападная СахараЭритрея" +
- "ИспанияЭфиопияЕвропейский союзФинляндияФиджиФолклендские о-ваФедеративн" +
- "ые Штаты МикронезииФарерские о-ваФранцияГабонВеликобританияГренадаГрузи" +
- "яФранцузская ГвианаГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭк" +
- "ваториальная ГвинеяГрецияЮжная Георгия и Южные Сандвичевы о-ваГватемала" +
- "ГуамГвинея-БисауГайанаГонконг (специальный административный район)о-ва " +
- "Херд и МакдональдГондурасХорватияГаитиВенгрияКанарские о-ваИндонезияИрл" +
- "андияИзраильо-в МэнИндияБританская территория в Индийском океанеИракИра" +
- "нИсландияИталияДжерсиЯмайкаИорданияЯпонияКенияКиргизияКамбоджаКирибатиК" +
- "оморские о-ваСент-Китс и НевисКНДРРеспублика КореяКувейтКаймановы о-ваК" +
- "азахстанЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксем" +
- "бургЛатвияЛивияМароккоМонакоМолдоваЧерногорияСен-МартенМадагаскарМаршал" +
- "ловы о-ваМакедонияМалиМьянма (Бирма)МонголияМакао (специальный админист" +
- "ративный район)Северные Марианские о-ваМартиникаМавританияМонтсерратМал" +
- "ьтаМаврикийМальдивыМалавиМексикаМалайзияМозамбикНамибияНовая КаледонияН" +
- "игеро-в НорфолкНигерияНикарагуаНидерландыНорвегияНепалНауруНиуэНовая Зе" +
- "ландияОманПанамаПеруФранцузская ПолинезияПапуа – Новая ГвинеяФилиппиныП" +
- "акистанПольшаСен-Пьер и Микелонострова ПиткэрнПуэрто-РикоПалестинские т" +
- "ерриторииПортугалияПалауПарагвайКатарВнешняя ОкеанияРеюньонРумынияСерби" +
- "яРоссияРуандаСаудовская АравияСоломоновы о-ваСейшельские о-ваСуданШвеци" +
- "яСингапуро-в Св. ЕленыСловенияШпицберген и Ян-МайенСловакияСьерра-Леоне" +
- "Сан-МариноСенегалСомалиСуринамЮжный СуданСан-Томе и ПринсипиСальвадорСи" +
- "нт-МартенСирияСвазилендТристан-да-Куньяо-ва Тёркс и КайкосЧадФранцузски" +
- "е Южные ТерриторииТогоТаиландТаджикистанТокелауВосточный ТиморТуркменис" +
- "танТунисТонгаТурцияТринидад и ТобагоТувалуТайваньТанзанияУкраинаУгандаВ" +
- "нешние малые о-ва (США)Соединенные ШтатыУругвайУзбекистанВатиканСент-Ви" +
- "нсент и ГренадиныВенесуэлаВиргинские о-ва (Британские)Виргинские о-ва (" +
- "США)ВьетнамВануатуУоллис и ФутунаСамоаКосовоЙеменМайоттаЮАРЗамбияЗимбаб" +
- "веНеизвестный регионМирАфрикаСеверная АмерикаЮжная АмерикаОкеанияЗападн" +
- "ая АфрикаЦентральная АмерикаВосточная АфрикаСеверная АфрикаЦентральная " +
- "АфрикаЮжная АфрикаАмерикаСеверная Америка – США и КанадаКарибыВосточная" +
- " АзияЮжная АзияЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикроне" +
- "зияПолинезияАзияСредняя АзияБлижний и Средний ВостокЕвропаВосточная Евр" +
- "опаСеверная ЕвропаЗападная ЕвропаЛатинская Америка"
-
-var ruRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001a, 0x0028, 0x002e, 0x0042, 0x0062, 0x0070, 0x007e,
- 0x008c, 0x00c3, 0x00cf, 0x00e3, 0x00f5, 0x0118, 0x0126, 0x0138,
- 0x0142, 0x015c, 0x0172, 0x0198, 0x01a8, 0x01ba, 0x01c8, 0x01df,
- 0x01ef, 0x01fd, 0x020b, 0x0215, 0x022e, 0x024a, 0x026b, 0x0279,
- 0x02ac, 0x02bc, 0x02d6, 0x02e0, 0x02ee, 0x02fe, 0x030e, 0x0318,
- 0x0324, 0x033e, 0x0359, 0x035f, 0x0380, 0x0392, 0x03a8, 0x03b8,
- 0x03c0, 0x03ce, 0x03d8, 0x03e8, 0x0402, 0x0415, 0x041d, 0x0430,
- 0x043e, 0x0456, 0x045e, 0x0468, 0x0478, 0x048f, 0x049d, 0x04a7,
- // Entry 40 - 7F
- 0x04b7, 0x04e6, 0x04f0, 0x050c, 0x051a, 0x0528, 0x0534, 0x0551,
- 0x055f, 0x056d, 0x057b, 0x059a, 0x05ac, 0x05b6, 0x05d6, 0x060e,
- 0x0628, 0x0636, 0x0640, 0x065c, 0x066a, 0x0676, 0x0699, 0x06a5,
- 0x06ad, 0x06bf, 0x06d3, 0x06df, 0x06eb, 0x06fd, 0x0726, 0x0732,
- 0x0776, 0x0788, 0x0790, 0x07a7, 0x07b3, 0x0806, 0x082e, 0x083e,
- 0x084e, 0x0858, 0x0866, 0x0880, 0x0892, 0x08a2, 0x08b0, 0x08bc,
- 0x08c6, 0x0912, 0x091a, 0x0922, 0x0932, 0x093e, 0x094a, 0x0956,
- 0x0966, 0x0972, 0x097c, 0x098c, 0x099c, 0x09ac, 0x09c6, 0x09e5,
- // Entry 80 - BF
- 0x09ed, 0x0a0c, 0x0a18, 0x0a32, 0x0a44, 0x0a4c, 0x0a56, 0x0a69,
- 0x0a7f, 0x0a90, 0x0a9e, 0x0aaa, 0x0ab4, 0x0ac8, 0x0ad4, 0x0ade,
- 0x0aec, 0x0af8, 0x0b06, 0x0b1a, 0x0b2d, 0x0b41, 0x0b5d, 0x0b6f,
- 0x0b77, 0x0b90, 0x0ba0, 0x0bef, 0x0c1c, 0x0c2e, 0x0c42, 0x0c56,
- 0x0c62, 0x0c72, 0x0c82, 0x0c8e, 0x0c9c, 0x0cac, 0x0cbc, 0x0cca,
- 0x0ce7, 0x0cf1, 0x0d05, 0x0d13, 0x0d25, 0x0d39, 0x0d49, 0x0d53,
- 0x0d5d, 0x0d65, 0x0d80, 0x0d88, 0x0d94, 0x0d9c, 0x0dc5, 0x0deb,
- 0x0dfd, 0x0e0d, 0x0e19, 0x0e3a, 0x0e57, 0x0e6c, 0x0e99, 0x0ead,
- // Entry C0 - FF
- 0x0eb7, 0x0ec7, 0x0ed1, 0x0eee, 0x0efc, 0x0f0a, 0x0f16, 0x0f22,
- 0x0f2e, 0x0f4f, 0x0f6b, 0x0f89, 0x0f93, 0x0f9f, 0x0faf, 0x0fc5,
- 0x0fd5, 0x0ffc, 0x100c, 0x1023, 0x1036, 0x1044, 0x1050, 0x105e,
- 0x1073, 0x1096, 0x10a8, 0x10bd, 0x10c7, 0x10d9, 0x10f7, 0x1119,
- 0x111f, 0x1155, 0x115d, 0x116b, 0x1181, 0x118f, 0x11ac, 0x11c4,
- 0x11ce, 0x11d8, 0x11e4, 0x1204, 0x1210, 0x121e, 0x122e, 0x123c,
- 0x1248, 0x1272, 0x1293, 0x12a1, 0x12b5, 0x12c3, 0x12f0, 0x1302,
- 0x1335, 0x135a, 0x1368, 0x1376, 0x1392, 0x139c, 0x13a8, 0x13b2,
- // Entry 100 - 13F
- 0x13c0, 0x13c6, 0x13d2, 0x13e2, 0x1405, 0x140b, 0x1417, 0x1436,
- 0x144f, 0x145d, 0x147a, 0x149f, 0x14be, 0x14db, 0x14fe, 0x1515,
- 0x1523, 0x155d, 0x1569, 0x1584, 0x1597, 0x15b9, 0x15d0, 0x15e6,
- 0x15f8, 0x160c, 0x161e, 0x1626, 0x163d, 0x166a, 0x1676, 0x1695,
- 0x16b2, 0x16cf, 0x16f0,
-} // Size: 606 bytes
-
-var siRegionStr string = "" + // Size: 9356 bytes
- "ඇසෙන්ෂන් දිවයිනඇන්ඩෝරාවඑක්සත් අරාබි එමිර් රාජ්\u200dයයඇෆ්ගනිස්ථානයඇන්ටිග" +
- "ුවා සහ බාබියුඩාවඇන්ගුයිලාවඇල්බේනියාවආර්මේනියාවනෙදර්ලන්ත ඇන්ටිලීසියඇන්ග" +
- "ෝලාවඇන්ටාක්ටිකාවආර්ජෙන්ටිනාවඇමරිකානු සැමෝවාවඔස්ට්\u200dරියාවඕස්ට්" +
- "\u200dරේලියාවඅරුබාවඕලන්ඩ් දූපත්අසර්බයිජානයබොස්නියාව සහ හර්සගොවීනාවබාර්බඩ" +
- "ෝස්බංග්ලාදේශයබෙල්ජියමබර්කිනා ෆාසෝබල්ගේරියාවබහරේන්බුරුන්දිබෙනින්ශාන්ත බ" +
- "ර්තලෙමිබර්මියුඩාබෲනායිබොලීවියාවකැරිබියානු නෙදර්ලන්තයබ්\u200dරසීලයබහමාස" +
- "්භූතානයබුවට් දුපත්බොට්ස්වානාබෙලරුස්බෙලීස්කැනඩාවකොකෝස් දූපත්කොංගො - කින" +
- "්ශාසාමධ්\u200dයම අප්\u200dරිකානු ජනරජයකොංගො - බ්\u200dරසාවිල්ස්විස්ටර්" +
- "ලන්තයකෝට් දි අයිවරිකුක් දූපත්චිලීකැමරූන්චීනයකොළොම්බියාවක්ලීපර්ටන් දූපත" +
- "කොස්ටරිකාවකියුබාවකේප් වර්ඩ්කුරකාවෝක්\u200dරිස්මස් දූපතසයිප්\u200dරසයචෙ" +
- "ක් ජනරජයජර්මනියදියාගෝ ගාර්සියාජිබුටිඩෙන්මාර්කයඩොමිනිකාවඩොමිනිකා ජනරජයඇ" +
- "ල්ජීරියාවසෙයුටා සහ මෙලිල්ලාඉක්වදෝරයඑස්තෝනියාවඊජිප්තුවබටහිර සහරාවඑරිත්" +
- "\u200dරියාවස්පාඤ්ඤයඉතියෝපියාවයුරෝපා සංගමයෆින්ලන්තයෆීජීෆෝක්ලන්ත දූපත්මයික" +
- "්\u200dරොනීසියාවෆැරෝ දූපත්ප්\u200dරංශයගැබොන්එක්සත් රාජධානියග්\u200dරැන" +
- "ඩාවජෝර්ජියාවප්\u200dරංශ ගයනාවගර්න්සියඝානාවජිබ්\u200dරෝල්ටාවග්\u200dරීන" +
- "්ලන්තයගැම්බියාවගිණියාවග්වෝඩලෝප්සමක ගිනියාවග්\u200dරීසියදකුණු ජෝර්ජියාව" +
- " සහ දකුණු සැන්ඩ්විච් දූපත්ගෝතමාලාවගුවාම්ගිනි බිසව්ගයනාවහොංකොං චීන විශේෂ " +
- "පරිපාලන කලාපයහර්ඩ් දූපත සහ මැක්ඩොනල්ඩ් දූපත්හොන්ඩුරාස්ක්\u200dරොඒෂියාව" +
- "හයිටිහන්ගේරියාවකැනරි සූපත්ඉන්දුනීසියාවඅයර්ලන්තයඊශ්\u200dරායලයඅයිල් ඔෆ්" +
- " මෑන්ඉන්දියාවබ්\u200dරිතාන්\u200dය ඉන්දීය සාගර බල ප්\u200dරදේශයඉරාකයඉරාන" +
- "යඅයිස්ලන්තයඉතාලියජර්සිජැමෙයිකාවජෝර්දානයජපානයකෙන්යාවකිර්ගිස්තානයකාම්බෝජ" +
- "යකිරිබතිකොමොරෝස්ශාන්ත කිට්ස් සහ නේවිස්උතුරු කොරියාවදකුණු කොරියාවකුවේටය" +
- "කේමන් දූපත්කසකස්තානයලාඕසයලෙබනනයශාන්ත ලුසියාලික්ටන්ස්ටයින්ශ්\u200dරී ලං" +
- "කාවලයිබීරියාවලෙසතෝලිතුවේනියාවලක්ශම්බර්ග්ලැට්වියාවලිබියාවමොරොක්කෝවමොනැක" +
- "ෝවමොල්ඩෝවාවමොන්ටෙනීග්\u200dරෝශාන්ත මාර්ටින්මැඩගස්කරයමාෂල් දූපත්මැසිඩෝන" +
- "ියාවමාලිමියන්මාරය (බුරුමය)මොන්ගෝලියාවමකාවු චීන විශේෂ පරිපාලන කලාපයඋතුර" +
- "ු මරියානා දූපත්මර්ටිනික්මොරිටේනියාවමොන්සෙරාට්මෝල්ටාවමුරුසියමාල දිවයිනම" +
- "ලාවිමෙක්සිකෝවමැලේසියාවමොසැම්බික්නැමීබියාවනව කැලිඩෝනියාවනයිජර්නෝෆෝක් දූ" +
- "පතනයිජීරියාවනිකරගුවාවනෙදර්ලන්තයනෝර්වේනේපාලයනාවුරුනියූනවසීලන්තයඕමානයපැන" +
- "මාවපේරුප්\u200dරංශ පොලිනීසියාවපැපුවා නිව් ගිනියාවපිලිපීනයපාකිස්තානයපෝල" +
- "න්තයශාන්ත පියරේ සහ මැකෝලන්පිට්කෙය්න් දූපත්පුවර්ටෝ රිකෝපලස්තීන රාජ්" +
- "\u200dයයපෘතුගාලයපලාවුපැරගුවේකටාර්ඈත ඕෂනියාවරීයුනියන්රුමේනියාවසර්බියාවරුස" +
- "ියාවරුවන්ඩාවසෞදි අරාබියසොලමන් දූපත්සීශෙල්ස්සූඩානයස්වීඩනයසිංගප්පූරුවශාන" +
- "්ත හෙලේනාස්ලෝවේනියාවස්වෙල්බර්ඩ් සහ ජේන් මයේන්ස්ලෝවැකියාවසියරාලියෝන්සැන" +
- "් මැරිනෝසෙනගාලයසෝමාලියාවසුරිනාමයදකුණු සුඩානයසාඕ තෝම් සහ ප්\u200dරින්සි" +
- "ප්එල් සැල්වදෝරයශාන්ත මාර්ටෙන්සිරියාවස්වාසිලන්තයට්\u200dරිස්ටන් ද කුන්හ" +
- "ාටර්ක්ස් සහ කයිකොස් දූපත්චැච්දකුණු ප්\u200dරංශ දූපත් සමූහයටොගෝතායිලන්ත" +
- "යටජිකිස්තානයටොකලාවුටිමෝර් - ලෙස්ත්ටර්ක්මෙනිස්ථානයටියුනීසියාවටොංගාතුර්ක" +
- "ියට්\u200dරිනිඩෑඩ් සහ ටොබැගෝටුවාලූතායිවානයටැන්සානියාවයුක්රේනයඋගන්ඩාවඑක" +
- "්සත් ජනපද ඈත දූපත්එක්සත් ජනපදයඋරුගුවේඋස්බෙකිස්ථානයවතිකානු නගරයශාන්ත වි" +
- "න්සන්ට් සහ ග්\u200dරෙනඩින්ස්වෙනිසියුලාවබ්\u200dරිතාන්\u200dය වර්ජින් ද" +
- "ූපත්ඇමරිකානු වර්ජින් දූපත්වියට්නාමයවනුවාටුවැලිස් සහ ෆුටුනාසැමෝවාකොසෝවෝ" +
- "යේමනයමයෝට්දකුණු අප්\u200dරිකාවසැම්බියාවසිම්බාබ්වේහඳුනා නොගත් කළාපයලෝකය" +
- "අප්\u200dරිකාවඋතුරු ඇමෙරිකාවදකුණු ඇමෙරිකාවඕෂනියාවබටහිරදිග අප්\u200dරික" +
- "ාවමධ්\u200dයම ඇමෙරිකාවපෙරදිග අප්\u200dරිකාවඋතුරුදිග අප්\u200dරිකාවමධ්" +
- "\u200dයම අප්\u200dරිකාවදකුණුදිග අප්\u200dරිකාවඇමරිකාවඋතුරුදිග ඇමෙරිකාවකැ" +
- "රීබියන්නැගෙනහිර ආසියාවදකුණු ආසියාවඅග්නිදිග ආසියාවදකුණුදිග යුරෝපයඕස්ට්" +
- "\u200dරලේෂියාවමෙලනීසියාවමයික්\u200dරෝනීසියානු කළාපයපොලිනීසියාවආසියාවමධ්" +
- "\u200dයම ආසියාවබටහිර ආසියාවයුරෝපයනැගෙනහිර යුරෝපයඋතුරු යුරෝපයබටහිර යුරෝපය" +
- "ලතින් ඇමෙරිකාව"
-
-var siRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x002b, 0x0043, 0x008b, 0x00af, 0x00ed, 0x010b, 0x0129,
- 0x0147, 0x0181, 0x0199, 0x01bd, 0x01e1, 0x020f, 0x0230, 0x0257,
- 0x0269, 0x028b, 0x02ac, 0x02f0, 0x030b, 0x0329, 0x0341, 0x0363,
- 0x0381, 0x0393, 0x03ab, 0x03bd, 0x03e5, 0x0400, 0x0412, 0x042d,
- 0x046a, 0x0482, 0x0494, 0x04a6, 0x04c5, 0x04e3, 0x04f8, 0x050a,
- 0x051c, 0x053e, 0x0568, 0x05a9, 0x05d9, 0x0603, 0x0629, 0x0645,
- 0x0651, 0x0666, 0x0672, 0x0693, 0x06be, 0x06dc, 0x06f1, 0x070d,
- 0x0722, 0x074d, 0x0768, 0x0784, 0x0799, 0x07c4, 0x07d6, 0x07f4,
- // Entry 40 - 7F
- 0x080f, 0x0837, 0x0855, 0x0887, 0x089f, 0x08bd, 0x08d5, 0x08f4,
- 0x0915, 0x092d, 0x094b, 0x096d, 0x0988, 0x0994, 0x09bc, 0x09e9,
- 0x0a05, 0x0a1a, 0x0a2c, 0x0a57, 0x0a72, 0x0a8d, 0x0aaf, 0x0ac7,
- 0x0ad6, 0x0afa, 0x0b1e, 0x0b39, 0x0b4e, 0x0b69, 0x0b88, 0x0ba0,
- 0x0c11, 0x0c29, 0x0c3b, 0x0c57, 0x0c66, 0x0cb8, 0x0d0d, 0x0d2b,
- 0x0d4c, 0x0d5b, 0x0d79, 0x0d98, 0x0dbc, 0x0dd7, 0x0df2, 0x0e18,
- 0x0e30, 0x0e91, 0x0ea0, 0x0eaf, 0x0ecd, 0x0edf, 0x0eee, 0x0f09,
- 0x0f21, 0x0f30, 0x0f45, 0x0f69, 0x0f81, 0x0f96, 0x0fae, 0x0fea,
- // Entry 80 - BF
- 0x100f, 0x1034, 0x1046, 0x1065, 0x1080, 0x108f, 0x10a1, 0x10c3,
- 0x10ed, 0x110c, 0x112a, 0x1139, 0x115a, 0x117b, 0x1196, 0x11ab,
- 0x11c6, 0x11db, 0x11f6, 0x121d, 0x1245, 0x1260, 0x127f, 0x12a0,
- 0x12ac, 0x12dc, 0x12fd, 0x134c, 0x1381, 0x139c, 0x13bd, 0x13db,
- 0x13f0, 0x1405, 0x1421, 0x1430, 0x144b, 0x1466, 0x1484, 0x149f,
- 0x14c7, 0x14d9, 0x14f8, 0x1516, 0x1531, 0x154f, 0x1561, 0x1573,
- 0x1585, 0x1591, 0x15ac, 0x15bb, 0x15cd, 0x15d9, 0x160d, 0x1642,
- 0x165a, 0x1678, 0x168d, 0x16c9, 0x16f7, 0x1719, 0x1744, 0x175c,
- // Entry C0 - FF
- 0x176b, 0x1780, 0x178f, 0x17ab, 0x17c6, 0x17e1, 0x17f9, 0x180e,
- 0x1826, 0x1845, 0x1867, 0x187f, 0x1891, 0x18a6, 0x18c7, 0x18e9,
- 0x190a, 0x194f, 0x1970, 0x1991, 0x19b0, 0x19c5, 0x19e0, 0x19f8,
- 0x1a1a, 0x1a59, 0x1a7e, 0x1aa6, 0x1abb, 0x1adc, 0x1b11, 0x1b53,
- 0x1b5f, 0x1ba1, 0x1bad, 0x1bc8, 0x1be9, 0x1bfe, 0x1c25, 0x1c52,
- 0x1c73, 0x1c82, 0x1c97, 0x1cd2, 0x1ce4, 0x1cfc, 0x1d1d, 0x1d35,
- 0x1d4a, 0x1d80, 0x1da2, 0x1db7, 0x1dde, 0x1e00, 0x1e57, 0x1e78,
- 0x1ebf, 0x1efd, 0x1f18, 0x1f2d, 0x1f59, 0x1f6b, 0x1f7d, 0x1f8c,
- // Entry 100 - 13F
- 0x1f9b, 0x1fc6, 0x1fe1, 0x1fff, 0x202e, 0x203a, 0x2055, 0x207d,
- 0x20a5, 0x20ba, 0x20ee, 0x2119, 0x2147, 0x217b, 0x21a9, 0x21dd,
- 0x21f2, 0x2223, 0x223e, 0x2269, 0x228b, 0x22b6, 0x22e1, 0x230b,
- 0x2329, 0x2369, 0x238a, 0x239c, 0x23c1, 0x23e3, 0x23f5, 0x2420,
- 0x2442, 0x2464, 0x248c,
-} // Size: 606 bytes
-
-var skRegionStr string = "" + // Size: 3211 bytes
- "AscensiónAndorraSpojené arabské emirátyAfganistanAntigua a BarbudaAnguil" +
- "laAlbánskoArménskoHolandské AntilyAngolaAntarktídaArgentínaAmerická Samo" +
- "aRakúskoAustráliaArubaÅlandyAzerbajdžanBosna a HercegovinaBarbadosBangla" +
- "déšBelgickoBurkina FasoBulharskoBahrajnBurundiBeninSvätý BartolomejBermu" +
- "dyBrunejBolíviaKaribské HolandskoBrazíliaBahamyBhutánBouvetov ostrovBots" +
- "wanaBieloruskoBelizeKanadaKokosové ostrovyKongo - KinshasaStredoafrická " +
- "republikaKongo - BrazzavilleŠvajčiarskoPobrežie SlonovinyCookove ostrovy" +
- "ČileKamerunČínaKolumbiaClippertonKostarikaKubaKapverdyCuraçaoVianočný o" +
- "strovCyprusČeská republikaNemeckoDiego GarcíaDžibutskoDánskoDominikaDomi" +
- "nikánska republikaAlžírskoCeuta a MelillaEkvádorEstónskoEgyptZápadná Sah" +
- "araEritreaŠpanielskoEtiópiaEurópska úniaFínskoFidžiFalklandyMikronéziaFa" +
- "erské ostrovyFrancúzskoGabonSpojené kráľovstvoGrenadaGruzínskoFrancúzska" +
- " GuayanaGuernseyGhanaGibraltárGrónskoGambiaGuineaGuadeloupeRovníková Gui" +
- "neaGréckoJužná Georgia a Južné Sandwichove ostrovyGuatemalaGuamGuinea-Bi" +
- "ssauGuayanaHongkong – OAO ČínyHeardov ostrov a McDonaldove ostrovyHondur" +
- "asChorvátskoHaitiMaďarskoKanárske ostrovyIndonéziaÍrskoIzraelOstrov ManI" +
- "ndiaBritské indickooceánske územieIrakIránIslandTalianskoJerseyJamajkaJo" +
- "rdánskoJaponskoKeňaKirgizskoKambodžaKiribatiKomorySvätý Krištof a NevisS" +
- "everná KóreaJužná KóreaKuvajtKajmanie ostrovyKazachstanLaosLibanonSvätá " +
- "LuciaLichtenštajnskoSrí LankaLibériaLesothoLitvaLuxemburskoLotyšskoLíbya" +
- "MarokoMonakoMoldavskoČierna HoraSvätý MartinMadagaskarMarshallove ostrov" +
- "yMacedónskoMaliMjanmarskoMongolskoMacao – OAO ČínySeverné MariányMartini" +
- "kMauritániaMontserratMaltaMauríciusMaldivyMalawiMexikoMalajziaMozambikNa" +
- "míbiaNová KaledóniaNigerNorfolkNigériaNikaraguaHolandskoNórskoNepálNauru" +
- "NiueNový ZélandOmánPanamaPeruFrancúzska PolynéziaPapua Nová GuineaFilipí" +
- "nyPakistanPoľskoSaint Pierre a MiquelonPitcairnove ostrovyPortorikoPales" +
- "tínske územiaPortugalskoPalauParaguajKatarostatné TichomorieRéunionRumun" +
- "skoSrbskoRuskoRwandaSaudská ArábiaŠalamúnove ostrovySeychelySudánŠvédsko" +
- "SingapurSvätá HelenaSlovinskoSvalbard a Jan MayenSlovenskoSierra LeoneSa" +
- "n MarínoSenegalSomálskoSurinamJužný SudánSvätý Tomáš a Princov ostrovSal" +
- "vádorSint MaartenSýriaSvazijskoTristan da CunhaTurks a CaicosČadFrancúzs" +
- "ke južné a antarktické územiaTogoThajskoTadžikistanTokelauVýchodný Timor" +
- "TurkménskoTuniskoTongaTureckoTrinidad a TobagoTuvaluTaiwanTanzániaUkraji" +
- "naUgandaMenšie odľahlé ostrovy USASpojené štátyUruguajUzbekistanVatikánS" +
- "vätý Vincent a GrenadínyVenezuelaBritské Panenské ostrovyAmerické Panens" +
- "ké ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMayotteJužná Afri" +
- "kaZambiaZimbabweneznámy regiónsvetAfrikaSeverná AmerikaJužná AmerikaOceá" +
- "niazápadná AfrikaStredná Amerikavýchodná Afrikaseverná Afrikastredná Afr" +
- "ikajužné územia AfrikyAmerikaseverné územia AmerikyKaribikvýchodná Áziaj" +
- "užná Áziajuhovýchodná Áziajužná EurópaAustraláziaMelanéziaoblasť Mikroné" +
- "ziePolynéziaÁziastredná Áziazápadná ÁziaEurópavýchodná Európaseverná Eur" +
- "ópazápadná EurópaLatinská Amerika"
-
-var skRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000a, 0x0011, 0x002b, 0x0035, 0x0046, 0x004e, 0x0057,
- 0x0060, 0x0071, 0x0077, 0x0082, 0x008c, 0x009b, 0x00a3, 0x00ad,
- 0x00b2, 0x00b9, 0x00c5, 0x00d8, 0x00e0, 0x00eb, 0x00f3, 0x00ff,
- 0x0108, 0x010f, 0x0116, 0x011b, 0x012d, 0x0134, 0x013a, 0x0142,
- 0x0155, 0x015e, 0x0164, 0x016b, 0x017a, 0x0182, 0x018c, 0x0192,
- 0x0198, 0x01a9, 0x01b9, 0x01d1, 0x01e4, 0x01f1, 0x0204, 0x0213,
- 0x0218, 0x021f, 0x0225, 0x022d, 0x0237, 0x0240, 0x0244, 0x024c,
- 0x0254, 0x0265, 0x026b, 0x027c, 0x0283, 0x0290, 0x029a, 0x02a1,
- // Entry 40 - 7F
- 0x02a9, 0x02c0, 0x02ca, 0x02d9, 0x02e1, 0x02ea, 0x02ef, 0x02ff,
- 0x0306, 0x0311, 0x0319, 0x0328, 0x032f, 0x0335, 0x033e, 0x0349,
- 0x0359, 0x0364, 0x0369, 0x037e, 0x0385, 0x038f, 0x03a2, 0x03aa,
- 0x03af, 0x03b9, 0x03c1, 0x03c7, 0x03cd, 0x03d7, 0x03e9, 0x03f0,
- 0x041d, 0x0426, 0x042a, 0x0437, 0x043e, 0x0455, 0x0479, 0x0481,
- 0x048c, 0x0491, 0x049a, 0x04ab, 0x04b5, 0x04bb, 0x04c1, 0x04cb,
- 0x04d0, 0x04f1, 0x04f5, 0x04fa, 0x0500, 0x0509, 0x050f, 0x0516,
- 0x0520, 0x0528, 0x052d, 0x0536, 0x053f, 0x0547, 0x054d, 0x0565,
- // Entry 80 - BF
- 0x0574, 0x0582, 0x0588, 0x0598, 0x05a2, 0x05a6, 0x05ad, 0x05ba,
- 0x05ca, 0x05d4, 0x05dc, 0x05e3, 0x05e8, 0x05f3, 0x05fc, 0x0602,
- 0x0608, 0x060e, 0x0617, 0x0623, 0x0631, 0x063b, 0x064e, 0x0659,
- 0x065d, 0x0667, 0x0670, 0x0684, 0x0695, 0x069d, 0x06a8, 0x06b2,
- 0x06b7, 0x06c1, 0x06c8, 0x06ce, 0x06d4, 0x06dc, 0x06e4, 0x06ec,
- 0x06fc, 0x0701, 0x0708, 0x0710, 0x0719, 0x0722, 0x0729, 0x072f,
- 0x0734, 0x0738, 0x0745, 0x074a, 0x0750, 0x0754, 0x076a, 0x077c,
- 0x0785, 0x078d, 0x0794, 0x07ab, 0x07be, 0x07c7, 0x07db, 0x07e6,
- // Entry C0 - FF
- 0x07eb, 0x07f3, 0x07f8, 0x080b, 0x0813, 0x081b, 0x0821, 0x0826,
- 0x082c, 0x083c, 0x0850, 0x0858, 0x085e, 0x0867, 0x086f, 0x087d,
- 0x0886, 0x089a, 0x08a3, 0x08af, 0x08ba, 0x08c1, 0x08ca, 0x08d1,
- 0x08df, 0x08ff, 0x0908, 0x0914, 0x091a, 0x0923, 0x0933, 0x0941,
- 0x0945, 0x096f, 0x0973, 0x097a, 0x0986, 0x098d, 0x099d, 0x09a8,
- 0x09af, 0x09b4, 0x09bb, 0x09cc, 0x09d2, 0x09d8, 0x09e1, 0x09e9,
- 0x09ef, 0x0a0c, 0x0a1c, 0x0a23, 0x0a2d, 0x0a35, 0x0a51, 0x0a5a,
- 0x0a74, 0x0a8f, 0x0a96, 0x0a9d, 0x0aac, 0x0ab1, 0x0ab7, 0x0abc,
- // Entry 100 - 13F
- 0x0ac3, 0x0ad1, 0x0ad7, 0x0adf, 0x0aef, 0x0af3, 0x0af9, 0x0b09,
- 0x0b18, 0x0b20, 0x0b30, 0x0b40, 0x0b51, 0x0b60, 0x0b6f, 0x0b85,
- 0x0b8c, 0x0ba4, 0x0bab, 0x0bbb, 0x0bc8, 0x0bdc, 0x0beb, 0x0bf7,
- 0x0c01, 0x0c14, 0x0c1e, 0x0c23, 0x0c31, 0x0c40, 0x0c47, 0x0c59,
- 0x0c69, 0x0c7a, 0x0c8b,
-} // Size: 606 bytes
-
-var slRegionStr string = "" + // Size: 3205 bytes
- "Otok AscensionAndoraZdruženi arabski emiratiAfganistanAntigva in Barbuda" +
- "AngvilaAlbanijaArmenijaNizozemski AntiliAngolaAntarktikaArgentinaAmerišk" +
- "a SamoaAvstrijaAvstralijaArubaÅlandski otokiAzerbajdžanBosna in Hercegov" +
- "inaBarbadosBangladešBelgijaBurkina FasoBolgarijaBahrajnBurundiBeninSaint" +
- " BarthélemyBermudiBrunejBolivijaNizozemski KaribiBrazilijaBahamiButanBou" +
- "vetov otokBocvanaBelorusijaBelizeKanadaKokosovi otokiDemokratična republ" +
- "ika KongoCentralnoafriška republikaKongo - BrazzavilleŠvicaSlonokoščena " +
- "obalaCookovi otokiČileKamerunKitajskaKolumbijaOtok ClippertonKostarikaKu" +
- "baZelenortski otokiCuraçaoBožični otokCiperČeškaNemčijaDiego GarciaDžibu" +
- "tiDanskaDominikaDominikanska republikaAlžirijaCeuta in MelillaEkvadorEst" +
- "onijaEgiptZahodna SaharaEritrejaŠpanijaEtiopijaEvropska unijaFinskaFidži" +
- "Falklandski otokiMikronezijaFerski otokiFrancijaGabonZdruženo kraljestvo" +
- "GrenadaGruzijaFrancoska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGv" +
- "inejaGvadalupeEkvatorialna GvinejaGrčijaJužna Georgia in Južni Sandwiche" +
- "vi otokiGvatemalaGuamGvineja BissauGvajanaPosebno administrativno območj" +
- "e LR Kitajske Hong KongHeardov otok in McDonaldovi otokiHondurasHrvaškaH" +
- "aitiMadžarskaKanarski otokiIndonezijaIrskaIzraelOtok ManIndijaBritansko " +
- "ozemlje v Indijskem oceanuIrakIranIslandijaItalijaJerseyJamajkaJordanija" +
- "JaponskaKenijaKirgizistanKambodžaKiribatiKomoriSaint Kitts in NevisSever" +
- "na KorejaJužna KorejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint Luci" +
- "aLihtenštajnŠrilankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMona" +
- "koMoldavijaČrna goraSaint MartinMadagaskarMarshallovi otokiMakedonijaMal" +
- "iMjanmar (Burma)MongolijaPosebno administrativno območje LR Kitajske Mac" +
- "aoSeverni Marianski otokiMartinikMavretanijaMontserratMaltaMauritiusMald" +
- "iviMalaviMehikaMalezijaMozambikNamibijaNova KaledonijaNigerNorfolški oto" +
- "kNigerijaNikaragvaNizozemskaNorveškaNepalNauruNiueNova ZelandijaOmanPana" +
- "maPeruFrancoska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSaint" +
- " Pierre in MiquelonPitcairnPortorikoPalestinsko ozemljePortugalskaPalauP" +
- "aragvajKatarOstala oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova Arab" +
- "ijaSalomonovi otokiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalb" +
- "ard in Jan MayenSlovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužn" +
- "i SudanSao Tome in PrincipeSalvadorSint MaartenSirijaSvaziTristan da Cun" +
- "haOtočji Turks in CaicosČadFrancosko južno ozemljeTogoTajskaTadžikistanT" +
- "okelauVzhodni TimorTurkmenistanTunizijaTongaTurčijaTrinidad in TobagoTuv" +
- "aluTajvanTanzanijaUkrajinaUgandaDruga ameriška ozemlja v Tihem oceanuZdr" +
- "užene države AmerikeUrugvajUzbekistanVatikanSaint Vincent in GrenadineVe" +
- "nezuelaBritanski Deviški otokiAmeriški Deviški otokiVietnamVanuatuWallis" +
- " in FutunaSamoaKosovoJemenMayotteJužnoafriška republikaZambijaZimbabveNe" +
- "znano ali neveljavno območjeSvetAfrikaSeverna AmerikaJužna AmerikaOceani" +
- "jaZahodna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja Afrik" +
- "aJužna AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužna Azija" +
- "Jugovzhodna AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezijamikro" +
- "nezijska regijaPolinezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna E" +
- "vropaSeverna EvropaZahodna EvropaLatinska Amerika"
-
-var slRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0014, 0x002d, 0x0037, 0x0049, 0x0050, 0x0058,
- 0x0060, 0x0071, 0x0077, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
- 0x00b0, 0x00bf, 0x00cb, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
- 0x010d, 0x0114, 0x011b, 0x0120, 0x0131, 0x0138, 0x013e, 0x0146,
- 0x0157, 0x0160, 0x0166, 0x016b, 0x0178, 0x017f, 0x0189, 0x018f,
- 0x0195, 0x01a3, 0x01c0, 0x01db, 0x01ee, 0x01f4, 0x0208, 0x0215,
- 0x021a, 0x0221, 0x0229, 0x0232, 0x0241, 0x024a, 0x024e, 0x025f,
- 0x0267, 0x0275, 0x027a, 0x0281, 0x0289, 0x0295, 0x029d, 0x02a3,
- // Entry 40 - 7F
- 0x02ab, 0x02c1, 0x02ca, 0x02da, 0x02e1, 0x02e9, 0x02ee, 0x02fc,
- 0x0304, 0x030c, 0x0314, 0x0322, 0x0328, 0x032e, 0x033f, 0x034a,
- 0x0356, 0x035e, 0x0363, 0x0377, 0x037e, 0x0385, 0x0396, 0x039e,
- 0x03a2, 0x03ab, 0x03b6, 0x03bd, 0x03c4, 0x03cd, 0x03e1, 0x03e8,
- 0x0412, 0x041b, 0x041f, 0x042d, 0x0434, 0x046a, 0x048b, 0x0493,
- 0x049b, 0x04a0, 0x04aa, 0x04b8, 0x04c2, 0x04c7, 0x04cd, 0x04d5,
- 0x04db, 0x04ff, 0x0503, 0x0507, 0x0510, 0x0517, 0x051d, 0x0524,
- 0x052d, 0x0535, 0x053b, 0x0546, 0x054f, 0x0557, 0x055d, 0x0571,
- // Entry 80 - BF
- 0x057f, 0x058c, 0x0592, 0x05a1, 0x05aa, 0x05ae, 0x05b5, 0x05c0,
- 0x05cc, 0x05d5, 0x05dd, 0x05e3, 0x05e8, 0x05f2, 0x05f9, 0x05ff,
- 0x0605, 0x060b, 0x0614, 0x061e, 0x062a, 0x0634, 0x0645, 0x064f,
- 0x0653, 0x0662, 0x066b, 0x069d, 0x06b4, 0x06bc, 0x06c7, 0x06d1,
- 0x06d6, 0x06df, 0x06e6, 0x06ec, 0x06f2, 0x06fa, 0x0702, 0x070a,
- 0x0719, 0x071e, 0x072d, 0x0735, 0x073e, 0x0748, 0x0751, 0x0756,
- 0x075b, 0x075f, 0x076d, 0x0771, 0x0777, 0x077b, 0x078f, 0x07a1,
- 0x07a9, 0x07b1, 0x07b8, 0x07d0, 0x07d8, 0x07e1, 0x07f4, 0x07ff,
- // Entry C0 - FF
- 0x0804, 0x080c, 0x0811, 0x0820, 0x0827, 0x082f, 0x0835, 0x083b,
- 0x0841, 0x0850, 0x0860, 0x0868, 0x086d, 0x0875, 0x087d, 0x0889,
- 0x0892, 0x08a7, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08dc,
- 0x08e8, 0x08fc, 0x0904, 0x0910, 0x0916, 0x091b, 0x092b, 0x0942,
- 0x0946, 0x095e, 0x0962, 0x0968, 0x0974, 0x097b, 0x0988, 0x0994,
- 0x099c, 0x09a1, 0x09a9, 0x09bb, 0x09c1, 0x09c7, 0x09d0, 0x09d8,
- 0x09de, 0x0a04, 0x0a1d, 0x0a24, 0x0a2e, 0x0a35, 0x0a4f, 0x0a58,
- 0x0a70, 0x0a88, 0x0a8f, 0x0a96, 0x0aa6, 0x0aab, 0x0ab1, 0x0ab6,
- // Entry 100 - 13F
- 0x0abd, 0x0ad5, 0x0adc, 0x0ae4, 0x0b03, 0x0b07, 0x0b0d, 0x0b1c,
- 0x0b2a, 0x0b32, 0x0b40, 0x0b4f, 0x0b5d, 0x0b6b, 0x0b79, 0x0b86,
- 0x0b8d, 0x0ba4, 0x0baa, 0x0bb7, 0x0bc3, 0x0bd4, 0x0be1, 0x0bfd,
- 0x0c07, 0x0c1b, 0x0c25, 0x0c2a, 0x0c38, 0x0c45, 0x0c4b, 0x0c59,
- 0x0c67, 0x0c75, 0x0c85,
-} // Size: 606 bytes
-
-var sqRegionStr string = "" + // Size: 3130 bytes
- "Ishulli AsenshionAndorrëEmiratet e Bashkuara ArabeAfganistanAntigua e Ba" +
- "rbudaAnguilëShqipëriArmeniAngolëAntarktikëArgjentinëSamoa AmerikaneAustr" +
- "iAustraliArubëIshujt AlandëAzerbajxhanBosnjë-HercegovinëBarbadosBanglade" +
- "shBelgjikëBurkina-FasoBullgariBahreinBurundBeninShën-BartolemeoBermudëBr" +
- "unejBoliviKaraibet holandezeBrazilBahamasButanIshujt Bove’BotsuanëBjello" +
- "rusiBelizëKanadaIshujt KokosëKongo-KinshasaRepublika Afrikano-QendroreKo" +
- "ngo-BrazavilëZvicërBregu i FildishtëIshujt KukëKiliKamerunKinëKolumbiIsh" +
- "ulli KlipërtonKosta-RikëKubëKepi i GjelbërKuraçaoIshulli i Krishtlindjes" +
- "QiproRepublika ÇekeGjermaniDiego-GarsiaXhibutDanimarkëDominikëRepublika " +
- "DominikaneAlgjeriTheuta e MelilaEkuadorEstoniEgjiptSaharaja PerëndimoreE" +
- "ritreSpanjëEtiopiBashkimi EuropianFinlandëFixhiIshujt FolklandëMikronezi" +
- "Ishujt FaroeFrancëGabonMbretëria e BashkuarGrenadëGjeorgjiGuajana France" +
- "zeGuernsejGanëGjibraltarGrenlandëGambiGuineGuadalupeGuineja EkuatorialeG" +
- "reqiXhorxha Jugore dhe Ishujt Senduiçë të JugutGuatemalëGuamGuine-BisauG" +
- "uajanëRVAK i Hong KongutIshulli Hërd dhe Ishujt MekdonaldëHondurasKroaci" +
- "HaitiHungariIshujt KanarieIndoneziIrlandëIzraelIshulli i ManitIndiTerrit" +
- "ori Britanik i Oqeanit IndianIrakIranIslandëItaliXhersejXhamajkëJordaniJ" +
- "aponiKeniaKirgistanKamboxhiaQiribatiKomoreShën-Kits dhe NevisKoreja e Ve" +
- "riutKoreja e JugutKuvajtIshujt KajmanëKazakistanLaosLibanShën-LuçiaLihtë" +
- "nshtajnSri-LankëLiberiLesotoLituaniLuksemburgLetoniLibiMarokMonakoMoldav" +
- "iMali i ZiShën-MartinMadagaskarIshujt MarshallëMaqedoniMaliMianmar (Burm" +
- "a)MongoliRVAK i MakaosIshujt e Marianës VerioreMartinikMauritaniMontsera" +
- "tMaltëMauritiusMaldiveMalaviMeksikëMalajziMozambikNamibiKaledonia e ReNi" +
- "gerIshulli NorfolkNigeriNikaraguaHolandëNorvegjiNepalNauruNiueZelanda e " +
- "ReOmanPanamaPeruPolinezia FrancezePapua Guineja e ReFilipinePakistanPolo" +
- "niShën-Peir dhe MikuelonIshujt PitkernëPorto-RikoTerritoret PalestinezeP" +
- "ortugaliPalauParaguaiKatarOqeania e Largët (Lindja e Largët)ReunionRuman" +
- "iSerbiRusiRuandëArabia SauditeIshujt SolomonëSishelSudanSuediSingaporShë" +
- "n-HelenaSlloveniSvalbard e Zhan-MajenSllovakiSiera-LeoneSan-MarinoSenega" +
- "liSomaliSurinamiSudani i JugutSao-Tome e PrinsipeEl SalvadorShën-Martin " +
- "(Sint Maarten - pjesa e Mbretërisë së Holandës)SiriSuazilandëTristan-da-" +
- "KunaIshujt Turke dhe KaikeÇadTerritoret Australiane FrancezeTogoTajlandë" +
- "TaxhikistanTokelauTimori LindorTurkmenistanTuniziTongaTurqiTrinidad e To" +
- "bagoTuvaluTajvanTanzaniUkrainëUgandëIshujt periferikë të SHBA-sëShtetet " +
- "e Bashkuara të AmerikësUruguaiUzbekistanVatikanShën-Vinsent dhe Grenadin" +
- "etVenezuelëIshujt e Virgjër BritanikëIshujt e Virgjër AmerikanëVietnamVa" +
- "nuatuUollis e FutinaSamoaKosovëJemenMajotëAfrika e JugutZambiZimbabveI p" +
- "anjohurBotaAfrikëAmerika e VeriutAmerika e JugutOqeaniAfrika Perëndimore" +
- "Amerika QendroreAfrika LindoreAfrika VerioreAfrika e MesmeAfrika JugoreA" +
- "merikëAmerika VerioreKaraibeAzia LindoreAzia JugoreAzia JuglindoreEuropa" +
- " JugoreAustralaziaMelaneziaRajoni MikronezianPolineziaAziAzia QendroreAz" +
- "ia PerëndimoreEuropëEuropa LindoreEuropa VerioreEuropa PerëndimoreAmerik" +
- "a Latine"
-
-var sqRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0011, 0x0019, 0x0033, 0x003d, 0x004e, 0x0056, 0x005f,
- 0x0065, 0x0065, 0x006c, 0x0077, 0x0082, 0x0091, 0x0097, 0x009f,
- 0x00a5, 0x00b3, 0x00be, 0x00d2, 0x00da, 0x00e4, 0x00ed, 0x00f9,
- 0x0101, 0x0108, 0x010e, 0x0113, 0x0123, 0x012b, 0x0131, 0x0137,
- 0x0149, 0x014f, 0x0156, 0x015b, 0x0169, 0x0172, 0x017c, 0x0183,
- 0x0189, 0x0197, 0x01a5, 0x01c0, 0x01d0, 0x01d7, 0x01e9, 0x01f5,
- 0x01f9, 0x0200, 0x0205, 0x020c, 0x021e, 0x0229, 0x022e, 0x023d,
- 0x0245, 0x025c, 0x0261, 0x0270, 0x0278, 0x0284, 0x028a, 0x0294,
- // Entry 40 - 7F
- 0x029d, 0x02b1, 0x02b8, 0x02c7, 0x02ce, 0x02d4, 0x02da, 0x02ef,
- 0x02f5, 0x02fc, 0x0302, 0x0313, 0x031c, 0x0321, 0x0332, 0x033b,
- 0x0347, 0x034e, 0x0353, 0x0368, 0x0370, 0x0378, 0x0388, 0x0390,
- 0x0395, 0x039f, 0x03a9, 0x03ae, 0x03b3, 0x03bc, 0x03cf, 0x03d4,
- 0x0402, 0x040c, 0x0410, 0x041b, 0x0423, 0x0435, 0x0459, 0x0461,
- 0x0467, 0x046c, 0x0473, 0x0481, 0x0489, 0x0491, 0x0497, 0x04a6,
- 0x04aa, 0x04cd, 0x04d1, 0x04d5, 0x04dd, 0x04e2, 0x04e9, 0x04f2,
- 0x04f9, 0x04ff, 0x0504, 0x050d, 0x0516, 0x051e, 0x0524, 0x0538,
- // Entry 80 - BF
- 0x0547, 0x0555, 0x055b, 0x056a, 0x0574, 0x0578, 0x057d, 0x0589,
- 0x0596, 0x05a0, 0x05a6, 0x05ac, 0x05b3, 0x05bd, 0x05c3, 0x05c7,
- 0x05cc, 0x05d2, 0x05d9, 0x05e2, 0x05ee, 0x05f8, 0x0609, 0x0611,
- 0x0615, 0x0624, 0x062b, 0x0638, 0x0652, 0x065a, 0x0663, 0x066c,
- 0x0672, 0x067b, 0x0682, 0x0688, 0x0690, 0x0697, 0x069f, 0x06a5,
- 0x06b3, 0x06b8, 0x06c7, 0x06cd, 0x06d6, 0x06de, 0x06e6, 0x06eb,
- 0x06f0, 0x06f4, 0x0700, 0x0704, 0x070a, 0x070e, 0x0720, 0x0732,
- 0x073a, 0x0742, 0x0748, 0x075f, 0x076f, 0x0779, 0x078f, 0x0798,
- // Entry C0 - FF
- 0x079d, 0x07a5, 0x07aa, 0x07ce, 0x07d5, 0x07db, 0x07e0, 0x07e4,
- 0x07eb, 0x07f9, 0x0809, 0x080f, 0x0814, 0x0819, 0x0821, 0x082d,
- 0x0835, 0x084a, 0x0852, 0x085d, 0x0867, 0x086f, 0x0875, 0x087d,
- 0x088b, 0x089e, 0x08a9, 0x08e9, 0x08ed, 0x08f8, 0x0907, 0x091d,
- 0x0921, 0x0940, 0x0944, 0x094d, 0x0958, 0x095f, 0x096c, 0x0978,
- 0x097e, 0x0983, 0x0988, 0x0999, 0x099f, 0x09a5, 0x09ac, 0x09b4,
- 0x09bb, 0x09da, 0x09fb, 0x0a02, 0x0a0c, 0x0a13, 0x0a2f, 0x0a39,
- 0x0a55, 0x0a71, 0x0a78, 0x0a7f, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f,
- // Entry 100 - 13F
- 0x0aa6, 0x0ab4, 0x0ab9, 0x0ac1, 0x0acb, 0x0acf, 0x0ad6, 0x0ae6,
- 0x0af5, 0x0afb, 0x0b0e, 0x0b1e, 0x0b2c, 0x0b3a, 0x0b48, 0x0b55,
- 0x0b5d, 0x0b6c, 0x0b73, 0x0b7f, 0x0b8a, 0x0b99, 0x0ba6, 0x0bb1,
- 0x0bba, 0x0bcc, 0x0bd5, 0x0bd8, 0x0be5, 0x0bf6, 0x0bfd, 0x0c0b,
- 0x0c19, 0x0c2c, 0x0c3a,
-} // Size: 606 bytes
-
-var srRegionStr string = "" + // Size: 5923 bytes
- "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
- "аАнгвилаАлбанијаЈерменијаХоландски АнтилиАнголаАнтарктикАргентинаАмерич" +
- "ка СамоаАустријаАустралијаАрубаОландска острваАзербејџанБосна и Херцего" +
- "винаБарбадосБангладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвет" +
- "и БартоломејБермудаБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОст" +
- "рво БувеБоцванаБелорусијаБелизеКанадаКокосова (Килингова) ОстрваКонго -" +
- " КиншасаЦентралноафричка РепубликаКонго - БразавилШвајцарскаОбала Слонов" +
- "ачеКукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаЗе" +
- "ленортска ОстрваКурасаоБожићно острвоКипарЧешкаНемачкаДијего ГарсијаЏиб" +
- "утиДанскаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстони" +
- "јаЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФо" +
- "кландска острваМикронезијаФарска ОстрваФранцускаГабонВелика БританијаГр" +
- "енадаГрузијаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамбијаГвинејаГ" +
- "ваделупеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвич ОстрваГ" +
- "ватемалаГуамГвинеја-БисаоГвајанаСАР Хонгконг (Кина)Острва Херд и Мекдон" +
- "алдХондурасХрватскаХаитиМађарскаКанарска острваИндонезијаИрскаИзраелОст" +
- "рво МанИндијаБританска територија у Индијском океануИракИранИсландИтали" +
- "јаЏерсиЈамајкаЈорданЈапанКенијаКиргистанКамбоџаКирибатиКоморска ОстрваС" +
- "ент Китс и НевисСеверна КорејаЈужна КорејаКувајтКајманска ОстрваКазахст" +
- "анЛаосЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксе" +
- "мбургЛетонијаЛибијаМарокоМонакоМолдавијаЦрна ГораСент МартинМадагаскарМ" +
- "аршалска ОстрваМакедонијаМалиМијанмар (Бурма)МонголијаСАР Макао (Кина)С" +
- "еверна Маријанска ОстрваМартиникМауританијаМонсератМалтаМаурицијусМалди" +
- "виМалавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерОстрво Норфо" +
- "кНигеријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаП" +
- "еруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен Пјер" +
- " и МикелонПиткернПорторикоПалестинске територијеПортугалПалауПарагвајКат" +
- "арОкеанија (удаљена острва)РеинионРумунијаСрбијаРусијаРуандаСаудијска А" +
- "рабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаСловенија" +
- "Свалбард и Јан МајенСловачкаСијера ЛеонеСан МариноСенегалСомалијаСурина" +
- "мЈужни СуданСао Томе и ПринципеСалвадорСвети МартинСиријаСвазилендТрист" +
- "ан да КуњаОстрва Туркс и КаикосЧадФранцуске Јужне ТериторијеТогоТајланд" +
- "ТаџикистанТокелауИсточни ТиморТуркменистанТунисТонгаТурскаТринидад и То" +
- "багоТувалуТајванТанзанијаУкрајинаУгандаУдаљена острва САДСједињене Амер" +
- "ичке ДржавеУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуелаБри" +
- "танска Девичанска ОстрваАмеричка Девичанска ОстрваВијетнамВануатуВалис " +
- "и ФутунаСамоаКосовоЈеменМајотЈужноафричка РепубликаЗамбијаЗимбабвеНепоз" +
- "нат регионсветАфрикаСеверноамерички континентЈужна АмерикаОкеанијаЗапад" +
- "на АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈ" +
- "ужна АфрикаСеверна и Јужна АмерикаСеверна АмерикаКарибиИсточна АзијаЈуж" +
- "на АзијаЈугоисточна АзијаЈужна ЕвропаАустралија и Нови ЗеландМеланезија" +
- "Микронезијски регионПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИс" +
- "точна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
-
-var srRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
- 0x00bd, 0x00dc, 0x00e8, 0x00fa, 0x010c, 0x0127, 0x0137, 0x014b,
- 0x0155, 0x0172, 0x0186, 0x01aa, 0x01ba, 0x01cc, 0x01da, 0x01f1,
- 0x0201, 0x020f, 0x021d, 0x0227, 0x0246, 0x0254, 0x0260, 0x0270,
- 0x0293, 0x029f, 0x02ab, 0x02b5, 0x02ca, 0x02d8, 0x02ec, 0x02f8,
- 0x0304, 0x0336, 0x0351, 0x0384, 0x03a1, 0x03b5, 0x03d2, 0x03eb,
- 0x03f3, 0x0401, 0x0409, 0x041b, 0x043a, 0x044c, 0x0454, 0x0477,
- 0x0485, 0x04a0, 0x04aa, 0x04b4, 0x04c2, 0x04dd, 0x04e9, 0x04f5,
- // Entry 40 - 7F
- 0x0505, 0x0530, 0x053a, 0x0554, 0x0562, 0x0572, 0x057e, 0x0599,
- 0x05a9, 0x05b7, 0x05c7, 0x05e2, 0x05ee, 0x05f6, 0x0617, 0x062d,
- 0x0646, 0x0658, 0x0662, 0x0681, 0x068f, 0x069d, 0x06be, 0x06ca,
- 0x06d2, 0x06e4, 0x06f4, 0x0702, 0x0710, 0x0722, 0x074b, 0x0755,
- 0x0798, 0x07aa, 0x07b2, 0x07cb, 0x07d9, 0x07fb, 0x0826, 0x0836,
- 0x0846, 0x0850, 0x0860, 0x087d, 0x0891, 0x089b, 0x08a7, 0x08ba,
- 0x08c6, 0x0910, 0x0918, 0x0920, 0x092c, 0x093a, 0x0944, 0x0952,
- 0x095e, 0x0968, 0x0974, 0x0986, 0x0994, 0x09a4, 0x09c1, 0x09e0,
- // Entry 80 - BF
- 0x09fb, 0x0a12, 0x0a1e, 0x0a3d, 0x0a4f, 0x0a57, 0x0a61, 0x0a78,
- 0x0a8e, 0x0a9f, 0x0aaf, 0x0abb, 0x0acd, 0x0ae1, 0x0af1, 0x0afd,
- 0x0b09, 0x0b15, 0x0b27, 0x0b38, 0x0b4d, 0x0b61, 0x0b80, 0x0b94,
- 0x0b9c, 0x0bb9, 0x0bcb, 0x0be7, 0x0c17, 0x0c27, 0x0c3d, 0x0c4d,
- 0x0c57, 0x0c6b, 0x0c79, 0x0c85, 0x0c93, 0x0ca3, 0x0cb3, 0x0cc3,
- 0x0ce0, 0x0cea, 0x0d03, 0x0d13, 0x0d25, 0x0d37, 0x0d47, 0x0d51,
- 0x0d5b, 0x0d63, 0x0d78, 0x0d80, 0x0d8c, 0x0d94, 0x0dbb, 0x0ddd,
- 0x0ded, 0x0dfd, 0x0e09, 0x0e2a, 0x0e38, 0x0e4a, 0x0e75, 0x0e85,
- // Entry C0 - FF
- 0x0e8f, 0x0e9f, 0x0ea9, 0x0ed7, 0x0ee5, 0x0ef5, 0x0f01, 0x0f0d,
- 0x0f19, 0x0f3a, 0x0f5b, 0x0f69, 0x0f73, 0x0f81, 0x0f91, 0x0fa8,
- 0x0fba, 0x0fdf, 0x0fef, 0x1006, 0x1019, 0x1027, 0x1037, 0x1045,
- 0x105a, 0x107d, 0x108d, 0x10a4, 0x10b0, 0x10c2, 0x10de, 0x1105,
- 0x110b, 0x113d, 0x1145, 0x1153, 0x1167, 0x1175, 0x118e, 0x11a6,
- 0x11b0, 0x11ba, 0x11c6, 0x11e6, 0x11f2, 0x11fe, 0x1210, 0x1220,
- 0x122c, 0x124e, 0x127e, 0x128c, 0x12a0, 0x12ae, 0x12db, 0x12ed,
- 0x1321, 0x1353, 0x1363, 0x1371, 0x138b, 0x1395, 0x13a1, 0x13ab,
- // Entry 100 - 13F
- 0x13b5, 0x13e0, 0x13ee, 0x13fe, 0x141b, 0x1423, 0x142f, 0x1460,
- 0x1479, 0x1489, 0x14a4, 0x14c5, 0x14e0, 0x14fb, 0x151a, 0x1531,
- 0x155c, 0x1579, 0x1585, 0x159e, 0x15b3, 0x15d4, 0x15eb, 0x1618,
- 0x162c, 0x1653, 0x1667, 0x1671, 0x168e, 0x16a7, 0x16b3, 0x16ce,
- 0x16e9, 0x1704, 0x1723,
-} // Size: 606 bytes
-
-var srLatnRegionStr string = "" + // Size: 3112 bytes
- "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i Barbu" +
- "daAngvilaAlbanijaJermenijaHolandski AntiliAngolaAntarktikArgentinaAmerič" +
- "ka SamoaAustrijaAustralijaArubaOlandska ostrvaAzerbejdžanBosna i Hercego" +
- "vinaBarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti" +
- " BartolomejBermudaBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstrv" +
- "o BuveBocvanaBelorusijaBelizeKanadaKokosova (Kilingova) OstrvaKongo - Ki" +
- "nšasaCentralnoafrička RepublikaKongo - BrazavilŠvajcarskaObala Slonovače" +
- "Kukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostarikaKubaZeleno" +
- "rtska OstrvaKurasaoBožićno ostrvoKiparČeškaNemačkaDijego GarsijaDžibutiD" +
- "anskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEg" +
- "ipatZapadna SaharaEritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklan" +
- "dska ostrvaMikronezijaFarska OstrvaFrancuskaGabonVelika BritanijaGrenada" +
- "GruzijaFrancuska GvajanaGurnsiGanaGibraltarGrenlandGambijaGvinejaGvadelu" +
- "peEkvatorijalna GvinejaGrčkaJužna Džordžija i Južna Sendvič OstrvaGvatem" +
- "alaGuamGvineja-BisaoGvajanaSAR Hongkong (Kina)Ostrva Herd i MekdonaldHon" +
- "durasHrvatskaHaitiMađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo Man" +
- "IndijaBritanska teritorija u Indijskom okeanuIrakIranIslandItalijaDžersi" +
- "JamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomorska OstrvaSent Kit" +
- "s i NevisSeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLi" +
- "banSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLeto" +
- "nijaLibijaMarokoMonakoMoldavijaCrna GoraSent MartinMadagaskarMaršalska O" +
- "strvaMakedonijaMaliMijanmar (Burma)MongolijaSAR Makao (Kina)Severna Mari" +
- "janska OstrvaMartinikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeks" +
- "ikoMalezijaMozambikNamibijaNova KaledonijaNigerOstrvo NorfokNigerijaNika" +
- "ragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska P" +
- "olinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSen Pjer i MikelonPitk" +
- "ernPortorikoPalestinske teritorijePortugalPalauParagvajKatarOkeanija (ud" +
- "aljena ostrva)ReinionRumunijaSrbijaRusijaRuandaSaudijska ArabijaSolomons" +
- "ka OstrvaSejšeliSudanŠvedskaSingapurSveta JelenaSlovenijaSvalbard i Jan " +
- "MajenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao " +
- "Tome i PrincipeSalvadorSveti MartinSirijaSvazilendTristan da KunjaOstrva" +
- " Turks i KaikosČadFrancuske Južne TeritorijeTogoTajlandTadžikistanTokela" +
- "uIstočni TimorTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanT" +
- "anzanijaUkrajinaUgandaUdaljena ostrva SADSjedinjene Američke DržaveUrugv" +
- "ajUzbekistanVatikanSent Vinsent i GrenadiniVenecuelaBritanska Devičanska" +
- " OstrvaAmerička Devičanska OstrvaVijetnamVanuatuValis i FutunaSamoaKosov" +
- "oJemenMajotJužnoafrička RepublikaZambijaZimbabveNepoznat regionsvetAfrik" +
- "aSevernoamerički kontinentJužna AmerikaOkeanijaZapadna AfrikaCentralna A" +
- "merikaIstočna AfrikaSeverna AfrikaCentralna AfrikaJužna AfrikaSeverna i " +
- "Južna AmerikaSeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna Az" +
- "ijaJužna EvropaAustralija i Novi ZelandMelanezijaMikronezijski regionPol" +
- "inezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna Evro" +
- "paZapadna EvropaLatinska Amerika"
-
-var srLatnRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059,
- 0x0062, 0x0072, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
- 0x00b0, 0x00bf, 0x00cb, 0x00de, 0x00e6, 0x00f0, 0x00f7, 0x0103,
- 0x010b, 0x0112, 0x0119, 0x011e, 0x012e, 0x0135, 0x013b, 0x0143,
- 0x0155, 0x015b, 0x0161, 0x0166, 0x0171, 0x0178, 0x0182, 0x0188,
- 0x018e, 0x01a9, 0x01b9, 0x01d4, 0x01e4, 0x01ef, 0x01ff, 0x020c,
- 0x0211, 0x0218, 0x021c, 0x0225, 0x0235, 0x023e, 0x0242, 0x0254,
- 0x025b, 0x026b, 0x0270, 0x0277, 0x027f, 0x028d, 0x0295, 0x029b,
- // Entry 40 - 7F
- 0x02a3, 0x02b9, 0x02bf, 0x02ce, 0x02d5, 0x02dd, 0x02e3, 0x02f1,
- 0x02f9, 0x0301, 0x0309, 0x0317, 0x031d, 0x0323, 0x0334, 0x033f,
- 0x034c, 0x0355, 0x035a, 0x036a, 0x0371, 0x0378, 0x0389, 0x038f,
- 0x0393, 0x039c, 0x03a4, 0x03ab, 0x03b2, 0x03bb, 0x03d0, 0x03d6,
- 0x0401, 0x040a, 0x040e, 0x041b, 0x0422, 0x0435, 0x044c, 0x0454,
- 0x045c, 0x0461, 0x046a, 0x0479, 0x0483, 0x0488, 0x048e, 0x0498,
- 0x049e, 0x04c5, 0x04c9, 0x04cd, 0x04d3, 0x04da, 0x04e1, 0x04e8,
- 0x04ee, 0x04f3, 0x04f9, 0x0502, 0x050b, 0x0513, 0x0522, 0x0533,
- // Entry 80 - BF
- 0x0541, 0x054e, 0x0554, 0x0564, 0x056d, 0x0571, 0x0576, 0x0582,
- 0x058e, 0x0598, 0x05a0, 0x05a6, 0x05af, 0x05b9, 0x05c1, 0x05c7,
- 0x05cd, 0x05d3, 0x05dc, 0x05e5, 0x05f0, 0x05fa, 0x060b, 0x0615,
- 0x0619, 0x0629, 0x0632, 0x0642, 0x065b, 0x0663, 0x066e, 0x0676,
- 0x067b, 0x0685, 0x068c, 0x0692, 0x0699, 0x06a1, 0x06a9, 0x06b1,
- 0x06c0, 0x06c5, 0x06d2, 0x06da, 0x06e3, 0x06ec, 0x06f5, 0x06fa,
- 0x06ff, 0x0703, 0x070e, 0x0712, 0x0718, 0x071c, 0x0730, 0x0742,
- 0x074a, 0x0752, 0x0759, 0x076b, 0x0772, 0x077b, 0x0791, 0x0799,
- // Entry C0 - FF
- 0x079e, 0x07a6, 0x07ab, 0x07c5, 0x07cc, 0x07d4, 0x07da, 0x07e0,
- 0x07e6, 0x07f7, 0x0808, 0x0810, 0x0815, 0x081d, 0x0825, 0x0831,
- 0x083a, 0x084e, 0x0857, 0x0863, 0x086d, 0x0874, 0x087c, 0x0883,
- 0x088f, 0x08a2, 0x08aa, 0x08b6, 0x08bc, 0x08c5, 0x08d5, 0x08ea,
- 0x08ee, 0x0909, 0x090d, 0x0914, 0x0920, 0x0927, 0x0935, 0x0941,
- 0x0946, 0x094b, 0x0951, 0x0962, 0x0968, 0x096e, 0x0977, 0x097f,
- 0x0985, 0x0998, 0x09b4, 0x09bb, 0x09c5, 0x09cc, 0x09e4, 0x09ed,
- 0x0a09, 0x0a25, 0x0a2d, 0x0a34, 0x0a42, 0x0a47, 0x0a4d, 0x0a52,
- // Entry 100 - 13F
- 0x0a57, 0x0a6f, 0x0a76, 0x0a7e, 0x0a8d, 0x0a91, 0x0a97, 0x0ab1,
- 0x0abf, 0x0ac7, 0x0ad5, 0x0ae6, 0x0af5, 0x0b03, 0x0b13, 0x0b20,
- 0x0b38, 0x0b47, 0x0b4d, 0x0b5b, 0x0b67, 0x0b79, 0x0b86, 0x0b9e,
- 0x0ba8, 0x0bbc, 0x0bc6, 0x0bcb, 0x0bda, 0x0be7, 0x0bed, 0x0bfc,
- 0x0c0a, 0x0c18, 0x0c28,
-} // Size: 606 bytes
-
-var svRegionStr string = "" + // Size: 2924 bytes
- "AscensionAndorraFörenade ArabemiratenAfghanistanAntigua och BarbudaAngui" +
- "llaAlbanienArmenienNederländska AntillernaAngolaAntarktisArgentinaAmerik" +
- "anska SamoaÖsterrikeAustralienArubaÅlandAzerbajdzjanBosnien och Hercegov" +
- "inaBarbadosBangladeshBelgienBurkina FasoBulgarienBahrainBurundiBeninS:t " +
- "BarthélemyBermudaBruneiBoliviaKaribiska NederländernaBrasilienBahamasBhu" +
- "tanBouvetönBotswanaVitrysslandBelizeKanadaKokosöarnaKongo-KinshasaCentra" +
- "lafrikanska republikenKongo-BrazzavilleSchweizElfenbenskustenCooköarnaCh" +
- "ileKamerunKinaColombiaClippertonönCosta RicaKubaKap VerdeCuraçaoJulönCyp" +
- "ernTjeckienTysklandDiego GarciaDjiboutiDanmarkDominicaDominikanska repub" +
- "likenAlgerietCeuta och MelillaEcuadorEstlandEgyptenVästsaharaEritreaSpan" +
- "ienEtiopienEuropeiska unionenFinlandFijiFalklandsöarnaMikronesienFäröarn" +
- "aFrankrikeGabonStorbritannienGrenadaGeorgienFranska GuyanaGuernseyGhanaG" +
- "ibraltarGrönlandGambiaGuineaGuadeloupeEkvatorialguineaGreklandSydgeorgie" +
- "n och SydsandwichöarnaGuatemalaGuamGuinea-BissauGuyanaHongkong, S.A.R. K" +
- "inaHeardön och McDonaldöarnaHondurasKroatienHaitiUngernKanarieöarnaIndon" +
- "esienIrlandIsraelIsle of ManIndienBrittiska territoriet i Indiska oceane" +
- "nIrakIranIslandItalienJerseyJamaicaJordanienJapanKenyaKirgizistanKambodj" +
- "aKiribatiKomorernaS:t Kitts och NevisNordkoreaSydkoreaKuwaitCaymanöarnaK" +
- "azakstanLaosLibanonS:t LuciaLiechtensteinSri LankaLiberiaLesothoLitauenL" +
- "uxemburgLettlandLibyenMarockoMonacoMoldavienMontenegroS:t MartinMadagask" +
- "arMarshallöarnaMakedonienMaliMyanmar (Burma)MongolietMacao, S.A.R. KinaN" +
- "ordmarianernaMartiniqueMauretanienMontserratMaltaMauritiusMaldivernaMala" +
- "wiMexikoMalaysiaMoçambiqueNamibiaNya KaledonienNigerNorfolkönNigeriaNica" +
- "raguaNederländernaNorgeNepalNauruNiueNya ZeelandOmanPanamaPeruFranska Po" +
- "lynesienPapua Nya GuineaFilippinernaPakistanPolenS:t Pierre och Miquelon" +
- "PitcairnöarnaPuerto RicoPalestinska territoriernaPortugalPalauParaguayQa" +
- "taryttre öar i OceanienRéunionRumänienSerbienRysslandRwandaSaudiarabienS" +
- "alomonöarnaSeychellernaSudanSverigeSingaporeS:t HelenaSlovenienSvalbard " +
- "och Jan MayenSlovakienSierra LeoneSan MarinoSenegalSomaliaSurinamSydsuda" +
- "nSão Tomé och PríncipeEl SalvadorSint MaartenSyrienSwazilandTristan da C" +
- "unhaTurks- och CaicosöarnaTchadFranska sydterritoriernaTogoThailandTadzj" +
- "ikistanTokelauÖsttimorTurkmenistanTunisienTongaTurkietTrinidad och Tobag" +
- "oTuvaluTaiwanTanzaniaUkrainaUgandaUSA:s yttre öarUSAUruguayUzbekistanVat" +
- "ikanstatenS:t Vincent och GrenadinernaVenezuelaBrittiska JungfruöarnaAme" +
- "rikanska JungfruöarnaVietnamVanuatuWallis- och FutunaöarnaSamoaKosovoJem" +
- "enMayotteSydafrikaZambiaZimbabweokänd regionvärldenAfrikaNordamerikaSyda" +
- "merikaOceanienVästafrikaCentralamerikaÖstafrikaNordafrikaCentralafrikasö" +
- "dra AfrikaNord- och Sydamerikanorra AmerikaKaribienÖstasienSydasienSydos" +
- "tasienSydeuropaAustralasienMelanesienMikronesiska öarnaPolynesienAsienCe" +
- "ntralasienVästasienEuropaÖsteuropaNordeuropaVästeuropaLatinamerika"
-
-var svRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x0010, 0x0026, 0x0031, 0x0044, 0x004c, 0x0054,
- 0x005c, 0x0074, 0x007a, 0x0083, 0x008c, 0x009d, 0x00a7, 0x00b1,
- 0x00b6, 0x00bc, 0x00c8, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
- 0x010d, 0x0114, 0x011b, 0x0120, 0x012f, 0x0136, 0x013c, 0x0143,
- 0x015b, 0x0164, 0x016b, 0x0171, 0x017a, 0x0182, 0x018d, 0x0193,
- 0x0199, 0x01a4, 0x01b2, 0x01ce, 0x01df, 0x01e6, 0x01f5, 0x01ff,
- 0x0204, 0x020b, 0x020f, 0x0217, 0x0224, 0x022e, 0x0232, 0x023b,
- 0x0243, 0x0249, 0x024f, 0x0257, 0x025f, 0x026b, 0x0273, 0x027a,
- // Entry 40 - 7F
- 0x0282, 0x0299, 0x02a1, 0x02b2, 0x02b9, 0x02c0, 0x02c7, 0x02d2,
- 0x02d9, 0x02e0, 0x02e8, 0x02fa, 0x0301, 0x0305, 0x0314, 0x031f,
- 0x0329, 0x0332, 0x0337, 0x0345, 0x034c, 0x0354, 0x0362, 0x036a,
- 0x036f, 0x0378, 0x0381, 0x0387, 0x038d, 0x0397, 0x03a7, 0x03af,
- 0x03d0, 0x03d9, 0x03dd, 0x03ea, 0x03f0, 0x0405, 0x0420, 0x0428,
- 0x0430, 0x0435, 0x043b, 0x0448, 0x0452, 0x0458, 0x045e, 0x0469,
- 0x046f, 0x0496, 0x049a, 0x049e, 0x04a4, 0x04ab, 0x04b1, 0x04b8,
- 0x04c1, 0x04c6, 0x04cb, 0x04d6, 0x04de, 0x04e6, 0x04ef, 0x0502,
- // Entry 80 - BF
- 0x050b, 0x0513, 0x0519, 0x0525, 0x052e, 0x0532, 0x0539, 0x0542,
- 0x054f, 0x0558, 0x055f, 0x0566, 0x056d, 0x0576, 0x057e, 0x0584,
- 0x058b, 0x0591, 0x059a, 0x05a4, 0x05ae, 0x05b8, 0x05c6, 0x05d0,
- 0x05d4, 0x05e3, 0x05ec, 0x05fe, 0x060c, 0x0616, 0x0621, 0x062b,
- 0x0630, 0x0639, 0x0643, 0x0649, 0x064f, 0x0657, 0x0662, 0x0669,
- 0x0677, 0x067c, 0x0686, 0x068d, 0x0696, 0x06a4, 0x06a9, 0x06ae,
- 0x06b3, 0x06b7, 0x06c2, 0x06c6, 0x06cc, 0x06d0, 0x06e2, 0x06f2,
- 0x06fe, 0x0706, 0x070b, 0x0722, 0x0730, 0x073b, 0x0754, 0x075c,
- // Entry C0 - FF
- 0x0761, 0x0769, 0x076e, 0x0783, 0x078b, 0x0794, 0x079b, 0x07a3,
- 0x07a9, 0x07b5, 0x07c2, 0x07ce, 0x07d3, 0x07da, 0x07e3, 0x07ed,
- 0x07f6, 0x080c, 0x0815, 0x0821, 0x082b, 0x0832, 0x0839, 0x0840,
- 0x0848, 0x0860, 0x086b, 0x0877, 0x087d, 0x0886, 0x0896, 0x08ad,
- 0x08b2, 0x08ca, 0x08ce, 0x08d6, 0x08e2, 0x08e9, 0x08f2, 0x08fe,
- 0x0906, 0x090b, 0x0912, 0x0925, 0x092b, 0x0931, 0x0939, 0x0940,
- 0x0946, 0x0956, 0x0959, 0x0960, 0x096a, 0x0977, 0x0993, 0x099c,
- 0x09b3, 0x09cc, 0x09d3, 0x09da, 0x09f2, 0x09f7, 0x09fd, 0x0a02,
- // Entry 100 - 13F
- 0x0a09, 0x0a12, 0x0a18, 0x0a20, 0x0a2d, 0x0a35, 0x0a3b, 0x0a46,
- 0x0a50, 0x0a58, 0x0a63, 0x0a71, 0x0a7b, 0x0a85, 0x0a92, 0x0a9f,
- 0x0ab3, 0x0ac0, 0x0ac8, 0x0ad1, 0x0ad9, 0x0ae4, 0x0aed, 0x0af9,
- 0x0b03, 0x0b16, 0x0b20, 0x0b25, 0x0b31, 0x0b3b, 0x0b41, 0x0b4b,
- 0x0b55, 0x0b60, 0x0b6c,
-} // Size: 606 bytes
-
-var swRegionStr string = "" + // Size: 3122 bytes
- "Kisiwa cha AscensionAndoraFalme za KiarabuAfghanistanAntigua na BarbudaA" +
- "nguillaAlbaniaArmeniaAntili za UholanziAngolaAntaktikaAjentinaSamoa ya M" +
- "arekaniAustriaAustraliaArubaVisiwa vya AlandiAzabajaniBosnia na Hezegovi" +
- "naBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareniBurundiBeninSanta" +
- "bathelemiBermudaBruneiBoliviaUholanzi ya KaribianiBraziliBahamaBhutanKis" +
- "iwa cha BouvetBotswanaBelarusiBelizeKanadaVisiwa vya Cocos (Keeling)Jamh" +
- "uri ya Kidemokrasia ya KongoJamhuri ya Afrika ya KatiKongo - Brazzaville" +
- "UswisiCôte d’IvoireVisiwa vya CookChileKameruniChinaKolombiaKisiwa cha C" +
- "lippertonKostarikaKubaKepuvedeKurakaoKisiwa cha KrismasiCyprusJamhuri ya" +
- " ChekiUjerumaniDiego GarciaJibutiDenmarkDominikaJamhuri ya DominikaAljer" +
- "iaCeuta na MelillaEkwadoEstoniaMisriSahara MagharibiEritreaHispaniaUhabe" +
- "shiUmoja wa UlayaUfiniFijiVisiwa vya FalklandMikronesiaVisiwa vya FaroeU" +
- "faransaGabonUingerezaGrenadaJojiaGwiyana ya UfaransaGuernseyGhanaJibralt" +
- "aGrinlandiGambiaGineGwadelupeGinekwetaUgirikiJojia Kusini na Visiwa vya " +
- "Sandwich KusiniGwatemalaGwamGinebisauGuyanaHong Kong SAR ChinaKisiwa cha" +
- " Heard na Visiwa vya McDonaldHondurasiKorasiaHaitiHungariaVisiwa vya Kan" +
- "ariIndonesiaAyalandiIsraeliIsle of ManIndiaEneo la Uingereza katika Baha" +
- "ri HindiIrakiIranAislandiItaliaJerseyJamaikaYordaniJapaniKenyaKirigizist" +
- "aniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniK" +
- "uwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLiechtensteinSr" +
- "i LankaLiberiaLesotoLitwaniaLuxembourgLativiaLibyaMorokoMonakoMoldovaMon" +
- "tenegroSaint MartinMadagaskaVisiwa vya MarshallMasedoniaMaliMyanmar (Bur" +
- "ma)MongoliaMacau SAR ChinaVisiwa vya Mariana vya KaskaziniMartinikiMorit" +
- "aniaMontserratiMaltaMorisiMaldivesMalawiMeksikoMalesiaMsumbijiNamibiaNyu" +
- "kaledoniaNigerKisiwa cha NorfolkNigeriaNikaragwaUholanziNorweNepalNauruN" +
- "iueNyuzilandiOmaniPanamaPeruPolinesia ya UfaransaPapua New GuineaUfilipi" +
- "noPakistaniPolandiSantapierre na MiquelonVisiwa vya PitcairnPuerto RicoM" +
- "aeneo ya PalestinaUrenoPalauParagwaiQatarOceania ya NjeRiyunioniRomaniaS" +
- "erbiaUrusiRwandaSaudiVisiwa vya SolomonShelisheliSudaniUswidiSingaporeSa" +
- "ntahelenaSloveniaSvalbard na Jan MayenSlovakiaSiera LeoniSan MarinoSeneg" +
- "aliSomaliaSurinamuSudani KusiniSão Tomé na PríncipeElsavadoSint MaartenS" +
- "yriaUswaziTristan da CunhaVisiwa vya Turki na KaikoChadMaeneo ya Kusini " +
- "ya UfaransaTogoTailandiTajikistaniTokelauTimor-LesteTurukimenistaniTunis" +
- "iaTongaUturukiTrinidad na TobagoTuvaluTaiwanTanzaniaUkrainiUgandaVisiwa " +
- "Vidogo vya Nje vya MarekaniMarekaniUrugwaiUzibekistaniVatikaniSantavisen" +
- "ti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya Virgin" +
- " vya MarekaniVietnamVanuatuWalis na FutunaSamoaKosovoYemeniMayotteAfrika" +
- " KusiniZambiaZimbabweEneo lisilojulikanaDuniaAfrikaAmerika KaskaziniAmer" +
- "ika KusiniOceaniaAfrika ya MagharibiAmerika ya KatiAfrika ya MasharikiAf" +
- "rika ya KaskaziniAfrika ya KatiAfrika ya KusiniAmerikaAmerika ya Kaskazi" +
- "niKaribianiAsia MasharikiAsia ya KusiniAsia ya Kusini MasharikiUlaya ya " +
- "KusiniAustralasiaMelanesiaEneo la MikronesiaPolynesiaAsiaAsia ya KatiAsi" +
- "a ya MagharibiUlayaUlaya ya MasharikiUlaya ya KaskaziniUlaya ya Magharib" +
- "iAmerika ya Kilatini"
-
-var swRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0014, 0x001a, 0x002a, 0x0035, 0x0047, 0x004f, 0x0056,
- 0x005d, 0x006f, 0x0075, 0x007e, 0x0086, 0x0097, 0x009e, 0x00a7,
- 0x00ac, 0x00bd, 0x00c6, 0x00da, 0x00e2, 0x00ed, 0x00f5, 0x00ff,
- 0x0107, 0x010f, 0x0116, 0x011b, 0x0129, 0x0130, 0x0136, 0x013d,
- 0x0152, 0x0159, 0x015f, 0x0165, 0x0176, 0x017e, 0x0186, 0x018c,
- 0x0192, 0x01ac, 0x01cc, 0x01e5, 0x01f8, 0x01fe, 0x020e, 0x021d,
- 0x0222, 0x022a, 0x022f, 0x0237, 0x024c, 0x0255, 0x0259, 0x0261,
- 0x0268, 0x027b, 0x0281, 0x0291, 0x029a, 0x02a6, 0x02ac, 0x02b3,
- // Entry 40 - 7F
- 0x02bb, 0x02ce, 0x02d5, 0x02e5, 0x02eb, 0x02f2, 0x02f7, 0x0307,
- 0x030e, 0x0316, 0x031e, 0x032c, 0x0331, 0x0335, 0x0348, 0x0352,
- 0x0362, 0x036a, 0x036f, 0x0378, 0x037f, 0x0384, 0x0397, 0x039f,
- 0x03a4, 0x03ac, 0x03b5, 0x03bb, 0x03bf, 0x03c8, 0x03d1, 0x03d8,
- 0x0402, 0x040b, 0x040f, 0x0418, 0x041e, 0x0431, 0x0458, 0x0461,
- 0x0468, 0x046d, 0x0475, 0x0486, 0x048f, 0x0497, 0x049e, 0x04a9,
- 0x04ae, 0x04d3, 0x04d8, 0x04dc, 0x04e4, 0x04ea, 0x04f0, 0x04f7,
- 0x04fe, 0x0504, 0x0509, 0x0516, 0x051e, 0x0526, 0x052c, 0x053f,
- // Entry 80 - BF
- 0x054e, 0x055a, 0x0561, 0x0572, 0x057d, 0x0582, 0x058a, 0x0594,
- 0x05a1, 0x05aa, 0x05b1, 0x05b7, 0x05bf, 0x05c9, 0x05d0, 0x05d5,
- 0x05db, 0x05e1, 0x05e8, 0x05f2, 0x05fe, 0x0607, 0x061a, 0x0623,
- 0x0627, 0x0636, 0x063e, 0x064d, 0x066d, 0x0676, 0x067f, 0x068a,
- 0x068f, 0x0695, 0x069d, 0x06a3, 0x06aa, 0x06b1, 0x06b9, 0x06c0,
- 0x06cc, 0x06d1, 0x06e3, 0x06ea, 0x06f3, 0x06fb, 0x0700, 0x0705,
- 0x070a, 0x070e, 0x0718, 0x071d, 0x0723, 0x0727, 0x073c, 0x074c,
- 0x0755, 0x075e, 0x0765, 0x077c, 0x078f, 0x079a, 0x07ad, 0x07b2,
- // Entry C0 - FF
- 0x07b7, 0x07bf, 0x07c4, 0x07d2, 0x07db, 0x07e2, 0x07e8, 0x07ed,
- 0x07f3, 0x07f8, 0x080a, 0x0814, 0x081a, 0x0820, 0x0829, 0x0834,
- 0x083c, 0x0851, 0x0859, 0x0864, 0x086e, 0x0876, 0x087d, 0x0885,
- 0x0892, 0x08a9, 0x08b1, 0x08bd, 0x08c2, 0x08c8, 0x08d8, 0x08f1,
- 0x08f5, 0x0911, 0x0915, 0x091d, 0x0928, 0x092f, 0x093a, 0x0949,
- 0x0950, 0x0955, 0x095c, 0x096e, 0x0974, 0x097a, 0x0982, 0x0989,
- 0x098f, 0x09b1, 0x09b9, 0x09c0, 0x09cc, 0x09d4, 0x09ed, 0x09f6,
- 0x0a15, 0x0a33, 0x0a3a, 0x0a41, 0x0a50, 0x0a55, 0x0a5b, 0x0a61,
- // Entry 100 - 13F
- 0x0a68, 0x0a75, 0x0a7b, 0x0a83, 0x0a96, 0x0a9b, 0x0aa1, 0x0ab2,
- 0x0ac0, 0x0ac7, 0x0ada, 0x0ae9, 0x0afc, 0x0b0f, 0x0b1d, 0x0b2d,
- 0x0b34, 0x0b48, 0x0b51, 0x0b5f, 0x0b6d, 0x0b85, 0x0b94, 0x0b9f,
- 0x0ba8, 0x0bba, 0x0bc3, 0x0bc7, 0x0bd3, 0x0be4, 0x0be9, 0x0bfb,
- 0x0c0d, 0x0c1f, 0x0c32,
-} // Size: 606 bytes
-
-var taRegionStr string = "" + // Size: 9580 bytes
- "அஷன்ஷியன் தீவுஅன்டோராஐக்கிய அரபு எமிரேட்ஸ்ஆப்கானிஸ்தான்ஆண்டிகுவா மற்றும்" +
- " பார்புடாஅங்குய்லாஅல்பேனியாஅர்மேனியாநெதர்லாந்து ஆண்டில்லெஸ்அங்கோலாஅண்டார" +
- "்டிகாஅர்ஜென்டினாஅமெரிக்க சமோவாஆஸ்திரியாஆஸ்திரேலியாஅரூபாஆலந்து தீவுகள்அ" +
- "சர்பைஜான்போஸ்னியா & ஹெர்ஸகோவினாபார்படோஸ்பங்களாதேஷ்பெல்ஜியம்புர்கினா ஃப" +
- "ாஸோபல்கேரியாபஹ்ரைன்புருண்டிபெனின்செயின்ட் பார்தேலெமிபெர்முடாபுரூனேய்பொ" +
- "லிவியாகரீபியன் நெதர்லாந்துபிரேசில்பஹாமாஸ்பூடான்பொவேட் தீவுகள்போட்ஸ்வான" +
- "ாபெலாரூஸ்பெலிஸ்கனடாகோகோஸ் (கீலிங்) தீவுகள்காங்கோ - கின்ஷாசாமத்திய ஆப்ர" +
- "ிக்கக் குடியரசுகாங்கோ - ப்ராஸாவில்லேஸ்விட்சர்லாந்துகோட் தி’வாயர்குக் த" +
- "ீவுகள்சிலிகேமரூன்சீனாகொலம்பியாகிலிப்பர்டன் தீவுகோஸ்டாரிகாகியூபாகேப் வெ" +
- "ர்டேகுராகவ்கிறிஸ்துமஸ் தீவுசைப்ரஸ்செக் குடியரசுஜெர்மனிடியகோ கார்ஷியாஜி" +
- "பௌட்டிடென்மார்க்டொமினிகாடொமினிகன் குடியரசுஅல்ஜீரியாசியூடா & மெலில்லாஈக" +
- "்வடார்எஸ்டோனியாஎகிப்துமேற்கு சஹாராஎரிட்ரியாஸ்பெயின்எதியோப்பியாஐரோப்பிய" +
- " யூனியன்பின்லாந்துஃபிஜிஃபாக்லாந்து தீவுகள்மைக்ரோனேஷியாஃபாரோ தீவுகள்பிரான" +
- "்ஸ்கேபான்ஐக்கிய பேரரசுகிரனெடாஜார்ஜியாபிரெஞ்சு கயானாகெர்ன்சிகானாஜிப்ரால" +
- "்டர்கிரீன்லாந்துகாம்பியாகினியாக்வாதேலோப்ஈக்வடோரியல் கினியாகிரீஸ்தென் ஜ" +
- "ியார்ஜியா மற்றும் தென் சான்ட்விச் தீவுகள்கவுதமாலாகுவாம்கினியா-பிஸ்ஸாவ்" +
- "கயானாஹாங்காங் எஸ்ஏஆர் சீனாஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்ஹோண்டூராஸ" +
- "்குரேஷியாஹைட்டிஹங்கேரிகேனரி தீவுகள்இந்தோனேஷியாஅயர்லாந்துஇஸ்ரேல்ஐல் ஆஃப" +
- "் மேன்இந்தியாபிரிட்டிஷ் இந்தியப் பெருங்கடல் பிரதேசம்ஈராக்ஈரான்ஐஸ்லாந்த" +
- "ுஇத்தாலிஜெர்சிஜமைகாஜோர்டான்ஜப்பான்கென்யாகிர்கிஸ்தான்கம்போடியாகிரிபடிகோ" +
- "மரோஸ்செயின்ட் கிட்ஸ் & நெவிஸ்வட கொரியாதென் கொரியாகுவைத்கெய்மென் தீவுகள" +
- "்கஸகஸ்தான்லாவோஸ்லெபனான்செயின்ட் லூசியாலிச்செண்ஸ்டெய்ன்இலங்கைலைபீரியாலெ" +
- "சோதோலிதுவேனியாலக்ஸ்சம்பர்க்லாட்வியாலிபியாமொராக்கோமொனாக்கோமால்டோவாமான்ட" +
- "ேனெக்ரோசெயின்ட் மார்ட்டீன்மடகாஸ்கர்மார்ஷல் தீவுகள்மாசிடோனியாமாலிமியான்" +
- "மார் (பர்மா)மங்கோலியாமகாவ் எஸ்ஏஆர் சீனாவடக்கு மரியானா தீவுகள்மார்டினிக" +
- "்மௌரிடானியாமாண்ட்செராட்மால்டாமொரிசியஸ்மாலத்தீவுமலாவிமெக்சிகோமலேசியாமொச" +
- "ாம்பிக்நமீபியாநியூ கேலிடோனியாநைஜர்நார்ஃபோக் தீவுகள்நைஜீரியாநிகரகுவாநெத" +
- "ர்லாந்துநார்வேநேபாளம்நௌருநியூநியூசிலாந்துஓமன்பனாமாபெருபிரெஞ்சு பாலினேஷ" +
- "ியாபப்புவா நியூ கினியாபிலிப்பைன்ஸ்பாகிஸ்தான்போலந்துசெயின்ட் பியர் & மி" +
- "க்வேலான்பிட்கெய்ர்ன் தீவுகள்பியூர்டோ ரிகோபாலஸ்தீனிய பிரதேசங்கள்போர்ச்ச" +
- "ுக்கல்பாலோபராகுவேகத்தார்வெளிப்புற ஓஷியானியாரீயூனியன்ருமேனியாசெர்பியாரஷ" +
- "்யாருவான்டாசவூதி அரேபியாசாலமன் தீவுகள்சீஷெல்ஸ்சூடான்ஸ்வீடன்சிங்கப்பூர்" +
- "செயின்ட் ஹெலெனாஸ்லோவேனியாஸ்வல்பார்டு & ஜான் மேயன்ஸ்லோவாகியாசியாரா லியோ" +
- "ன்சான் மரினோசெனெகல்சோமாலியாசுரினாம்தெற்கு சூடான்சாவ் தோம் & ப்ரின்சிபி" +
- "எல் சால்வடார்சின்ட் மார்டென்சிரியாஸ்வாஸிலாந்துடிரிஸ்டன் டா குன்ஹாடர்க்" +
- "ஸ் & கைகோஸ் தீவுகள்சாட்பிரெஞ்சு தெற்கு பிரதேசங்கள்டோகோதாய்லாந்துதாஜிகி" +
- "ஸ்தான்டோகேலோதைமூர்-லெஸ்தேதுர்க்மெனிஸ்தான்டுனிசியாடோங்காதுருக்கிட்ரினிட" +
- "ாட் & டொபாகோதுவாலூதைவான்தான்சானியாஉக்ரைன்உகாண்டாயூ.எஸ். வெளிப்புற தீவு" +
- "கள்அமெரிக்காஉருகுவேஉஸ்பெகிஸ்தான்வாடிகன் நகரம்செயின்ட் வின்சென்ட் & கிர" +
- "ெனடைன்ஸ்வெனிசுலாபிரிட்டீஷ் கன்னித் தீவுகள்யூ.எஸ். கன்னித் தீவுகள்வியட்" +
- "நாம்வனுவாட்டுவாலிஸ் மற்றும் ஃபுடுனாசமோவாகொசோவோஏமன்மயோட்தென் ஆப்பிரிக்க" +
- "ாஜாம்பியாஜிம்பாப்வேஅறியப்படாத பிரதேசம்உலகம்ஆப்ரிக்காவட அமெரிக்காதென் அ" +
- "மெரிக்காஓஷியானியாமேற்கு ஆப்ரிக்காமத்திய அமெரிக்காகிழக்கு ஆப்ரிக்காவடக்" +
- "கு ஆப்ரிக்காமத்திய ஆப்ரிக்காதெற்கு ஆப்ரிக்காஅமெரிக்காஸ்வடக்கு அமெரிக்க" +
- "ாகரீபியன்கிழக்கு ஆசியாதெற்கு ஆசியாதென்கிழக்கு ஆசியாதெற்கு ஐரோப்பாஆஸ்தி" +
- "ரலேசியாமெலனேஷியாமைக்ரோ நேஷியா பிரதேசம்பாலினேஷியாஆசியாமத்திய ஆசியாமேற்க" +
- "ு ஆசியாஐரோப்பாகிழக்கு ஐரோப்பாவடக்கு ஐரோப்பாமேற்கு ஐரோப்பாலத்தீன் அமெரி" +
- "க்கா"
-
-var taRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0028, 0x003d, 0x0078, 0x009f, 0x00e9, 0x0104, 0x011f,
- 0x013a, 0x017d, 0x0192, 0x01b3, 0x01d4, 0x01fc, 0x0217, 0x0238,
- 0x0247, 0x026f, 0x028d, 0x02c9, 0x02e4, 0x0302, 0x031d, 0x0345,
- 0x0360, 0x0375, 0x038d, 0x039f, 0x03d6, 0x03ee, 0x0406, 0x041e,
- 0x0458, 0x0470, 0x0485, 0x0497, 0x04bf, 0x04dd, 0x04f5, 0x0507,
- 0x0513, 0x0550, 0x057d, 0x05c7, 0x0600, 0x062d, 0x0652, 0x0674,
- 0x0680, 0x0695, 0x06a1, 0x06bc, 0x06ed, 0x070b, 0x071d, 0x073c,
- 0x0751, 0x077f, 0x0794, 0x07b9, 0x07ce, 0x07f6, 0x080e, 0x082c,
- // Entry 40 - 7F
- 0x0844, 0x0878, 0x0893, 0x08c0, 0x08d8, 0x08f3, 0x0908, 0x092a,
- 0x0945, 0x095d, 0x097e, 0x09ac, 0x09ca, 0x09d9, 0x0a10, 0x0a34,
- 0x0a59, 0x0a71, 0x0a83, 0x0aa8, 0x0abd, 0x0ad5, 0x0afd, 0x0b15,
- 0x0b21, 0x0b42, 0x0b66, 0x0b7e, 0x0b90, 0x0bae, 0x0be2, 0x0bf4,
- 0x0c77, 0x0c8f, 0x0ca1, 0x0ccc, 0x0cdb, 0x0d16, 0x0d79, 0x0d97,
- 0x0daf, 0x0dc1, 0x0dd6, 0x0dfb, 0x0e1c, 0x0e3a, 0x0e4f, 0x0e72,
- 0x0e87, 0x0ef6, 0x0f05, 0x0f14, 0x0f2f, 0x0f44, 0x0f56, 0x0f65,
- 0x0f7d, 0x0f92, 0x0fa4, 0x0fc8, 0x0fe3, 0x0ff8, 0x100d, 0x104d,
- // Entry 80 - BF
- 0x1066, 0x1085, 0x1097, 0x10c5, 0x10e0, 0x10f2, 0x1107, 0x1132,
- 0x1162, 0x1174, 0x118c, 0x119e, 0x11bc, 0x11e3, 0x11fb, 0x120d,
- 0x1225, 0x123d, 0x1255, 0x1279, 0x12b0, 0x12cb, 0x12f6, 0x1314,
- 0x1320, 0x1350, 0x136b, 0x139d, 0x13db, 0x13f9, 0x1417, 0x143b,
- 0x144d, 0x1468, 0x1483, 0x1492, 0x14aa, 0x14bf, 0x14dd, 0x14f2,
- 0x151d, 0x152c, 0x155d, 0x1575, 0x158d, 0x15ae, 0x15c0, 0x15d5,
- 0x15e1, 0x15ed, 0x1611, 0x161d, 0x162c, 0x1638, 0x166f, 0x16a4,
- 0x16c8, 0x16e6, 0x16fb, 0x1744, 0x177e, 0x17a3, 0x17e3, 0x180a,
- // Entry C0 - FF
- 0x1816, 0x182b, 0x1840, 0x1877, 0x1892, 0x18aa, 0x18c2, 0x18d1,
- 0x18e9, 0x190e, 0x1936, 0x194e, 0x1960, 0x1975, 0x1996, 0x19c1,
- 0x19df, 0x1a1f, 0x1a3d, 0x1a62, 0x1a7e, 0x1a93, 0x1aab, 0x1ac3,
- 0x1ae8, 0x1b22, 0x1b47, 0x1b72, 0x1b84, 0x1ba8, 0x1bdd, 0x1c1d,
- 0x1c29, 0x1c76, 0x1c82, 0x1ca0, 0x1cc4, 0x1cd6, 0x1cfb, 0x1d2b,
- 0x1d43, 0x1d55, 0x1d6d, 0x1da0, 0x1db2, 0x1dc4, 0x1de2, 0x1df7,
- 0x1e0c, 0x1e4f, 0x1e6a, 0x1e7f, 0x1ea6, 0x1ecb, 0x1f26, 0x1f3e,
- 0x1f88, 0x1fc5, 0x1fe0, 0x1ffb, 0x2039, 0x2048, 0x205a, 0x2066,
- // Entry 100 - 13F
- 0x2075, 0x20a3, 0x20bb, 0x20d9, 0x2110, 0x211f, 0x213a, 0x215c,
- 0x2184, 0x219f, 0x21cd, 0x21fb, 0x222c, 0x225a, 0x2288, 0x22b6,
- 0x22d7, 0x2305, 0x231d, 0x2342, 0x2364, 0x2395, 0x23bd, 0x23e1,
- 0x23fc, 0x243a, 0x2458, 0x2467, 0x2489, 0x24ab, 0x24c0, 0x24eb,
- 0x2513, 0x253b, 0x256c,
-} // Size: 606 bytes
-
-var teRegionStr string = "" + // Size: 9380 bytes
- "ఎసెషన్ దీవిఅండొర్రాయునైటెడ్ అరబ్ ఎమిరేట్స్ఆఫ్ఘనిస్తాన్ఆంటిగ్వా మరియు బార" +
- "్బుడాఆంగవిల్లాఅల్బేనియాఆర్మేనియానేదేర్లేండ్స్ అంటిల్లిస్అంగోలాఅంటార్కట" +
- "ికాఅర్జెంటీనాఅమెరికన్ సమోవాఆస్ట్రియాఆస్ట్రేలియాఅరుబాఆలేండ్ దీవులుఅజర్బ" +
- "ైజాన్బోస్నియా మరియు హెర్జెగొవీనాబార్బడోస్బంగ్లాదేశ్బెల్జియంబుర్కినా ఫా" +
- "సోబల్గేరియాబహ్రెయిన్బురుండిబెనిన్సెంట్ బర్తేలెమీబెర్ముడాబ్రూనైబొలీవియా" +
- "కరీబియన్ నెదర్లాండ్స్బ్రెజిల్బహామాస్భూటాన్బొవెట్ దీవిబోట్స్వానాబెలారస్" +
- "బెలిజ్కెనడాకోకోస్ (కీలింగ్) దీవులుకాంగో- కిన్షాసాసెంట్రల్ ఆఫ్రికన్ రిప" +
- "బ్లిక్కాంగో- బ్రాజావిల్లిస్విట్జర్లాండ్ఐవరీ కోస్ట్కుక్ దీవులుచిలీకామెర" +
- "ూన్చైనాకొలంబియాక్లిప్పర్టన్ దీవికోస్టా రికాక్యూబాకేప్ వెర్డేకురాకవోక్ర" +
- "ిస్మస్ దీవిసైప్రస్చెక్ రిపబ్లిక్జర్మనీడియాగో గార్సియాజిబౌటిడెన్మార్క్డ" +
- "ోమెనికడొమెనికన్ రిపబ్లిక్అల్జీరియాస్యూటా మరియు మెలిల్లాఈక్వడార్ఎస్టోని" +
- "యాఈజిప్ట్పడమటి సహారాఎరిట్రియాస్పెయిన్ఇథియోపియాయురోపియన్ యునియన్ఫిన్లాం" +
- "డ్ఫిజీఫాక్\u200cల్యాండ్ దీవులుమైక్రోనేశియఫారో దీవులుఫ్రాన్స్\u200cగాబన" +
- "్యునైటెడ్ కింగ్\u200cడమ్గ్రెనెడాజార్జియాఫ్రెంచ్ గియానాగ్వేర్నసేఘనాజిబ్" +
- "రాల్టార్గ్రీన్\u200cలాండ్గాంబియాగినియాగ్వాడేలోప్ఈక్వటోరియల్ గినియాగ్రీ" +
- "స్దక్షిణ జార్జియా & దక్షిణ శాండ్విచ్ దీవులుగ్వాటిమాలగ్వామ్గినియా-బిస్స" +
- "ావ్గయానాహాంకాంగ్ ఎస్ఏఆర్ చైనాహెర్డ్ & మెక్ డొనాల్డ్ దీవులుహోండురాస్క్ర" +
- "ోయేషియాహైటిహంగేరీకేనరీ దీవులుఇండోనేషియాఐర్లాండ్ఇజ్రాయిల్ఐల్ ఆఫ్ మాన్భా" +
- "రత దేశంబ్రిటీష్ భారతీయ సముద్రపు ప్రాంతంఇరాక్ఇరాన్ఐస్లాండ్ఇటలీజెర్సీజమై" +
- "కాజోర్డాన్జపాన్కెన్యాకిర్గిజిస్తాన్కంబోడియాకిరిబాటికొమొరోస్సెంట్ కిట్ట" +
- "్స్ మరియు నెవిస్ఉత్తర కొరియాదక్షిణ కొరియాకువైట్కేమాన్ దీవులుకజకస్తాన్ల" +
- "ావోస్లెబనాన్సెంట్ లూసియాలిక్టెస్టేన్శ్రీలంకలైబీరియాలెసోతోలిథువేనియాలక్" +
- "సంబర్గ్లాత్వియాలిబియామొరాక్కోమొనాకోమోల్డోవామోంటేనేగ్రోసెంట్ మార్టిన్మడ" +
- "గాస్కర్మార్షల్ దీవులుమేసిడోనియామాలిమయన్మార్ (బర్మా)మంగోలియామాకావ్ ఎస్ఏ" +
- "ఆర్ చైనాఉత్తర మరియానా దీవులుమార్టినిక్మౌరిటేనియామోంట్సేర్రాట్మాల్టామార" +
- "ిషస్మాల్దీవులుమాలావిమెక్సికోమలేషియామొజాంబిక్నమీబియాక్రొత్త కాలెడోనియాన" +
- "ైజర్నార్ఫాక్ దీవినైజీరియానికరాగువానెదర్లాండ్స్నార్వేనేపాల్నౌరునియున్యూ" +
- "జిలాండ్ఒమన్పనామాపెరూఫ్రెంచ్ పోలినిషియాపాపువా న్యు గినియాఫిలిప్పీన్స్పా" +
- "కిస్తాన్పోలాండ్సెంట్ పియెర్ మరియు మికెలాన్పిట్\u200cకెయిర్న్ దీవులుఫ్య" +
- "ూర్టో రికోపాలస్తీనియన్ ప్రాంతాలుపోర్చుగల్పలావుపరాగ్వేకతర్ఒషీనియా బయటున" +
- "్నవిరియూనియన్రోమానియాసెర్బియారష్యారువాండాసౌదీ అరేబియాసోలమన్ దీవులుసీషె" +
- "ల్స్సూడాన్స్వీడన్సింగపూర్సెంట్ హెలినాస్లోవేనియాస్వాల్బార్డ్ మరియు యాన్" +
- " మాయేన్స్లోవేకియాసియెర్రా లియాన్సాన్ మారినోసెనెగల్సోమాలియాసురినామ్దక్షిణ" +
- " సూడాన్సావోటోమ్ మరియు ప్రిన్సిపేఎల్ సాల్వడోర్సింట్ మార్టెన్సిరియాస్వాజిల" +
- "్యాండ్ట్రిస్టన్ డ కన్హాతుర్క్ మరియు కాలికోస్ దీవులుచాద్ఫ్రెంచ్ దక్షిణ " +
- "ప్రాంతాలుటోగోథాయిలాండ్తజికిస్తాన్టోకేలావ్టిమోర్-లెస్టెతుర్కమేనిస్తాన్ట" +
- "్యునీషియాటోంగాటర్కీట్రినిడాడ్ మరియు టొబాగోటువాలుతైవాన్టాంజానియాఉక్రెయి" +
- "న్ఉగాండాసంయుక్త రాజ్య అమెరికా బయట ఉన్న దీవులుఅమెరికా సంయుక్త రాష్ట్రాల" +
- "ుఉరుగువేఉజ్బెకిస్తాన్వాటికన్ నగరంసెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్వెను" +
- "జువేలాబ్రిటిష్ వర్జిన్ దీవులుయు.ఎస్. వర్జిన్ దీవులువియత్నాంవనాటువాలిస్" +
- " మరియు ఫ్యుత్యునాసమోవాకొసోవోయెమెన్మాయొట్టిదక్షిణ ఆఫ్రికాజాంబియాజింబాబ్వే" +
- "తెలియని ప్రాంతంప్రపంచంఆఫ్రికాఉత్తర అమెరికాదక్షిణ అమెరికాఒషీనియపశ్చిమ ఆ" +
- "ఫ్రికా భూభాగంమధ్యమ అమెరికాతూర్పు ఆఫ్రికాఉత్తర ఆఫ్రికామధ్యమ ఆఫ్రికాదక్ష" +
- "ిణ ఆఫ్రికా భూభాగంఅమెరికాలుఉత్తర అమెరికా భూభాగంకరిబ్బియన్తూర్పు ఆసియాదక" +
- "్షిణ ఆసియానైరుతి ఆసియాదక్షిణ యూరోప్ఆస్ట్రేలేసియామెలనేశియమైక్రోనేశియ ప్" +
- "రాంతంపాలినేషియాఆసియామధ్య ఆసియాపడమటి ఆసియాయూరోప్తూర్పు యూరోప్ఉత్తర యూరో" +
- "ప్పశ్చిమ యూరోప్లాటిన్ అమెరికా"
-
-var teRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x001f, 0x0037, 0x0078, 0x009c, 0x00dd, 0x00f8, 0x0113,
- 0x012e, 0x0174, 0x0186, 0x01a7, 0x01c5, 0x01ed, 0x0208, 0x0229,
- 0x0238, 0x025d, 0x027b, 0x02c8, 0x02e3, 0x0301, 0x0319, 0x033e,
- 0x0359, 0x0374, 0x0389, 0x039b, 0x03c6, 0x03de, 0x03f0, 0x0408,
- 0x0445, 0x045d, 0x0472, 0x0484, 0x04a3, 0x04c1, 0x04d6, 0x04e8,
- 0x04f7, 0x0534, 0x055d, 0x05aa, 0x05df, 0x0609, 0x0628, 0x0647,
- 0x0653, 0x066b, 0x0677, 0x068f, 0x06c0, 0x06df, 0x06f1, 0x0710,
- 0x0725, 0x074d, 0x0762, 0x078a, 0x079c, 0x07c7, 0x07d9, 0x07f7,
- // Entry 40 - 7F
- 0x080c, 0x0843, 0x085e, 0x0899, 0x08b1, 0x08cc, 0x08e1, 0x0900,
- 0x091b, 0x0933, 0x094e, 0x097f, 0x099a, 0x09a6, 0x09dd, 0x09fe,
- 0x0a1d, 0x0a38, 0x0a47, 0x0a7b, 0x0a93, 0x0aab, 0x0ad3, 0x0aee,
- 0x0af7, 0x0b1b, 0x0b3f, 0x0b54, 0x0b66, 0x0b84, 0x0bb8, 0x0bca,
- 0x0c39, 0x0c54, 0x0c66, 0x0c91, 0x0ca0, 0x0cdb, 0x0d28, 0x0d43,
- 0x0d61, 0x0d6d, 0x0d7f, 0x0da1, 0x0dbf, 0x0dd7, 0x0df2, 0x0e12,
- 0x0e2b, 0x0e85, 0x0e94, 0x0ea3, 0x0ebb, 0x0ec7, 0x0ed9, 0x0ee8,
- 0x0f00, 0x0f0f, 0x0f21, 0x0f4b, 0x0f63, 0x0f7b, 0x0f93, 0x0fde,
- // Entry 80 - BF
- 0x1000, 0x1025, 0x1037, 0x105c, 0x1077, 0x1089, 0x109e, 0x10c0,
- 0x10e4, 0x10f9, 0x1111, 0x1123, 0x1141, 0x115f, 0x1177, 0x1189,
- 0x11a1, 0x11b3, 0x11cb, 0x11ec, 0x1214, 0x122f, 0x1257, 0x1275,
- 0x1281, 0x12ab, 0x12c3, 0x12f8, 0x1330, 0x134e, 0x136c, 0x1393,
- 0x13a5, 0x13ba, 0x13d8, 0x13ea, 0x1402, 0x1417, 0x1432, 0x1447,
- 0x147b, 0x148a, 0x14af, 0x14c7, 0x14e2, 0x1506, 0x1518, 0x152a,
- 0x1536, 0x1542, 0x1563, 0x156f, 0x157e, 0x158a, 0x15be, 0x15f0,
- 0x1614, 0x1632, 0x1647, 0x1692, 0x16cc, 0x16f1, 0x1731, 0x174c,
- // Entry C0 - FF
- 0x175b, 0x1770, 0x177c, 0x17ad, 0x17c8, 0x17e0, 0x17f8, 0x1807,
- 0x181c, 0x183e, 0x1863, 0x187b, 0x188d, 0x18a2, 0x18ba, 0x18dc,
- 0x18fa, 0x194e, 0x196c, 0x1997, 0x19b6, 0x19cb, 0x19e3, 0x19fb,
- 0x1a20, 0x1a67, 0x1a8c, 0x1ab4, 0x1ac6, 0x1aed, 0x1b1c, 0x1b6a,
- 0x1b76, 0x1bba, 0x1bc6, 0x1be1, 0x1c02, 0x1c1a, 0x1c3f, 0x1c6c,
- 0x1c8a, 0x1c99, 0x1ca8, 0x1ce9, 0x1cfb, 0x1d0d, 0x1d28, 0x1d43,
- 0x1d55, 0x1dba, 0x1e04, 0x1e19, 0x1e40, 0x1e62, 0x1ebf, 0x1edd,
- 0x1f1e, 0x1f58, 0x1f70, 0x1f7f, 0x1fc0, 0x1fcf, 0x1fe1, 0x1ff3,
- // Entry 100 - 13F
- 0x200b, 0x2033, 0x2048, 0x2063, 0x208e, 0x20a3, 0x20b8, 0x20dd,
- 0x2105, 0x2117, 0x2152, 0x2177, 0x219f, 0x21c4, 0x21e9, 0x2224,
- 0x223f, 0x2277, 0x2295, 0x22b7, 0x22d9, 0x22fb, 0x2320, 0x2347,
- 0x235f, 0x2396, 0x23b4, 0x23c3, 0x23df, 0x23fe, 0x2410, 0x2435,
- 0x2457, 0x247c, 0x24a4,
-} // Size: 606 bytes
-
-var thRegionStr string = "" + // Size: 9078 bytes
- "เกาะแอสเซนชันอันดอร์ราสหรัฐอาหรับเอมิเรตส์อัฟกานิสถานแอนติกาและบาร์บูดาแ" +
- "องกวิลลาแอลเบเนียอาร์เมเนียเนเธอร์แลนด์แอนทิลลิสแองโกลาแอนตาร์กติกาอาร" +
- "์เจนตินาอเมริกันซามัวออสเตรียออสเตรเลียอารูบาหมู่เกาะโอลันด์อาเซอร์ไบจ" +
- "านบอสเนียและเฮอร์เซโกวีนาบาร์เบโดสบังกลาเทศเบลเยียมบูร์กินาฟาโซบัลแกเร" +
- "ียบาห์เรนบุรุนดีเบนินเซนต์บาร์เธเลมีเบอร์มิวดาบรูไนโบลิเวียเนเธอร์แลนด" +
- "์แคริบเบียนบราซิลบาฮามาสภูฏานเกาะบูเวตบอตสวานาเบลารุสเบลีซแคนาดาหมู่เก" +
- "าะโคโคส (คีลิง)คองโก-กินชาซาสาธารณรัฐแอฟริกากลางคองโก-บราซซาวิลสวิตเซอ" +
- "ร์แลนด์ไอวอรี่โคสต์หมู่เกาะคุกชิลีแคเมอรูนจีนโคลอมเบียเกาะคลิปเปอร์ตัน" +
- "คอสตาริกาคิวบาเคปเวิร์ดคูราเซาเกาะคริสต์มาสไซปรัสสาธารณรัฐเช็กเยอรมนีด" +
- "ิเอโกการ์เซียจิบูตีเดนมาร์กโดมินิกาสาธารณรัฐโดมินิกันแอลจีเรียซีโอตาแล" +
- "ะเมลิลลาเอกวาดอร์เอสโตเนียอียิปต์ซาฮาราตะวันตกเอริเทรียสเปนเอธิโอเปียส" +
- "หภาพยุโรปฟินแลนด์ฟิจิหมู่เกาะฟอล์กแลนด์ไมโครนีเซียหมู่เกาะแฟโรฝรั่งเศส" +
- "กาบองสหราชอาณาจักรเกรเนดาจอร์เจียเฟรนช์เกียนาเกิร์นซีย์กานายิบรอลตาร์ก" +
- "รีนแลนด์แกมเบียกินีกวาเดอลูปอิเควทอเรียลกินีกรีซเกาะเซาท์จอร์เจียและหม" +
- "ู่เกาะเซาท์แซนด์วิชกัวเตมาลากวมกินี-บิสเซากายอานาเขตปกครองพิเศษฮ่องกงแ" +
- "ห่งสาธารณรัฐประชาชนจีนเกาะเฮิร์ดและหมู่เกาะแมกดอนัลด์ฮอนดูรัสโครเอเชีย" +
- "เฮติฮังการีหมู่เกาะคานารีอินโดนีเซียไอร์แลนด์อิสราเอลเกาะแมนอินเดียบริ" +
- "ติชอินเดียนโอเชียนเทร์ริทอรีอิรักอิหร่านไอซ์แลนด์อิตาลีเจอร์ซีย์จาเมกา" +
- "จอร์แดนญี่ปุ่นเคนยาคีร์กีซสถานกัมพูชาคิริบาสคอโมโรสเซนต์คิตส์และเนวิสเ" +
- "กาหลีเหนือเกาหลีใต้คูเวตหมู่เกาะเคย์แมนคาซัคสถานลาวเลบานอนเซนต์ลูเซียล" +
- "ิกเตนสไตน์ศรีลังกาไลบีเรียเลโซโทลิทัวเนียลักเซมเบิร์กลัตเวียลิเบียโมร็" +
- "อกโกโมนาโกมอลโดวามอนเตเนโกรเซนต์มาตินมาดากัสการ์หมู่เกาะมาร์แชลล์มาซิโ" +
- "ดเนียมาลีเมียนม่าร์ (พม่า)มองโกเลียเขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐปร" +
- "ะชาชนจีนหมู่เกาะนอร์เทิร์นมาเรียนามาร์ตินีกมอริเตเนียมอนต์เซอร์รัตมอลต" +
- "ามอริเชียสมัลดีฟส์มาลาวีเม็กซิโกมาเลเซียโมซัมบิกนามิเบียนิวแคลิโดเนียไ" +
- "นเจอร์เกาะนอร์ฟอล์กไนจีเรียนิการากัวเนเธอร์แลนด์นอร์เวย์เนปาลนาอูรูนีอ" +
- "ูเอนิวซีแลนด์โอมานปานามาเปรูเฟรนช์โปลินีเซียปาปัวนิวกินีฟิลิปปินส์ปากี" +
- "สถานโปแลนด์แซงปีแยร์และมีเกอลงหมู่เกาะพิตแคร์นเปอร์โตริโกดินแดนปาเลสไต" +
- "น์โปรตุเกสปาเลาปารากวัยกาตาร์เอาต์ไลอิงโอเชียเนียเรอูนียงโรมาเนียเซอร์" +
- "เบียรัสเซียรวันดาซาอุดีอาระเบียหมู่เกาะโซโลมอนเซเชลส์ซูดานสวีเดนสิงคโป" +
- "ร์เซนต์เฮเลนาสโลวีเนียสฟาลบาร์และยานไมเอนสโลวะเกียเซียร์ราลีโอนซานมารี" +
- "โนเซเนกัลโซมาเลียซูรินาเมซูดานใต้เซาตูเมและปรินซิปีเอลซัลวาดอร์เซนต์มา" +
- "ร์ตินซีเรียสวาซิแลนด์ทริสตัน เดอ คูนาหมู่เกาะเติกส์และหมู่เกาะเคคอสชาด" +
- "เฟรนช์เซาเทิร์นเทร์ริทอรีส์โตโกไทยทาจิกิสถานโตเกเลาติมอร์-เลสเตเติร์กเ" +
- "มนิสถานตูนิเซียตองกาตุรกีตรินิแดดและโตเบโกตูวาลูไต้หวันแทนซาเนียยูเครน" +
- "ยูกันดาหมู่เกาะรอบนอกของสหรัฐอเมริกาสหรัฐอเมริกาอุรุกวัยอุซเบกิสถานนคร" +
- "วาติกันเซนต์วินเซนต์และเกรนาดีนส์เวเนซุเอลาหมู่เกาะบริติชเวอร์จินหมู่เ" +
- "กาะยูเอสเวอร์จินเวียดนามวานูอาตูวาลลิสและฟุตูนาซามัวโคโซโวเยเมนมายอตแอ" +
- "ฟริกาใต้แซมเบียซิมบับเวภูมิภาคที่ไม่รู้จักโลกแอฟริกาอเมริกาเหนืออเมริก" +
- "าใต้โอเชียเนียแอฟริกาตะวันตกอเมริกากลางแอฟริกาตะวันออกแอฟริกาเหนือแอฟร" +
- "ิกากลางแอฟริกาตอนใต้อเมริกาอเมริกาตอนเหนือแคริบเบียนเอเชียตะวันออกเอเช" +
- "ียใต้เอเชียตะวันออกเฉียงใต้ยุโรปใต้ออสตราเลเซียเมลานีเซียเขตไมโครนีเซี" +
- "ยโปลินีเซียเอเชียเอเชียกลางเอเชียตะวันตกยุโรปยุโรปตะวันออกยุโรปเหนือยุ" +
- "โรปตะวันตกละตินอเมริกา"
-
-var thRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0027, 0x0042, 0x007e, 0x009f, 0x00d5, 0x00f0, 0x010b,
- 0x0129, 0x0168, 0x017d, 0x01a1, 0x01c2, 0x01e9, 0x0201, 0x021f,
- 0x0231, 0x025e, 0x0282, 0x02c7, 0x02e2, 0x02fd, 0x0315, 0x0339,
- 0x0354, 0x0369, 0x037e, 0x038d, 0x03ba, 0x03d8, 0x03e7, 0x03ff,
- 0x0441, 0x0453, 0x0468, 0x0477, 0x0492, 0x04aa, 0x04bf, 0x04ce,
- 0x04e0, 0x0519, 0x053e, 0x057a, 0x05a5, 0x05cf, 0x05f3, 0x0614,
- 0x0620, 0x0638, 0x0641, 0x065c, 0x068c, 0x06a7, 0x06b6, 0x06d1,
- 0x06e6, 0x070d, 0x071f, 0x0746, 0x075b, 0x0785, 0x0797, 0x07af,
- // Entry 40 - 7F
- 0x07c7, 0x07fd, 0x0818, 0x0848, 0x0863, 0x087e, 0x0893, 0x08ba,
- 0x08d5, 0x08e1, 0x08ff, 0x091d, 0x0935, 0x0941, 0x0977, 0x0998,
- 0x09bc, 0x09d4, 0x09e3, 0x0a0a, 0x0a1f, 0x0a37, 0x0a5b, 0x0a79,
- 0x0a85, 0x0aa3, 0x0abe, 0x0ad3, 0x0adf, 0x0afa, 0x0b2a, 0x0b36,
- 0x0bb1, 0x0bcc, 0x0bd5, 0x0bf4, 0x0c09, 0x0c8a, 0x0ce7, 0x0cff,
- 0x0d1a, 0x0d26, 0x0d3b, 0x0d65, 0x0d86, 0x0da1, 0x0db9, 0x0dce,
- 0x0de3, 0x0e40, 0x0e4f, 0x0e64, 0x0e7f, 0x0e91, 0x0eac, 0x0ebe,
- 0x0ed3, 0x0ee8, 0x0ef7, 0x0f18, 0x0f2d, 0x0f42, 0x0f57, 0x0f8d,
- // Entry 80 - BF
- 0x0fae, 0x0fc9, 0x0fd8, 0x1005, 0x1020, 0x1029, 0x103e, 0x105f,
- 0x1080, 0x1098, 0x10b0, 0x10c2, 0x10dd, 0x1101, 0x1116, 0x1128,
- 0x1140, 0x1152, 0x1167, 0x1185, 0x11a3, 0x11c4, 0x11f7, 0x1215,
- 0x1221, 0x124e, 0x1269, 0x12ea, 0x1338, 0x1353, 0x1371, 0x1398,
- 0x13a7, 0x13c2, 0x13da, 0x13ec, 0x1404, 0x141c, 0x1434, 0x144c,
- 0x1473, 0x1488, 0x14af, 0x14c7, 0x14e2, 0x1506, 0x151e, 0x152d,
- 0x153f, 0x1551, 0x156f, 0x157e, 0x1590, 0x159c, 0x15cc, 0x15f0,
- 0x160e, 0x1626, 0x163b, 0x1674, 0x16a4, 0x16c5, 0x16f2, 0x170a,
- // Entry C0 - FF
- 0x1719, 0x1731, 0x1743, 0x177f, 0x1797, 0x17af, 0x17ca, 0x17df,
- 0x17f1, 0x181b, 0x1848, 0x185d, 0x186c, 0x187e, 0x1896, 0x18b7,
- 0x18d2, 0x190b, 0x1926, 0x194d, 0x1968, 0x197d, 0x1995, 0x19ad,
- 0x19c5, 0x19fb, 0x1a1f, 0x1a43, 0x1a55, 0x1a73, 0x1a9f, 0x1af9,
- 0x1b02, 0x1b53, 0x1b5f, 0x1b68, 0x1b86, 0x1b9b, 0x1bbd, 0x1be7,
- 0x1bff, 0x1c0e, 0x1c1d, 0x1c50, 0x1c62, 0x1c77, 0x1c92, 0x1ca4,
- 0x1cb9, 0x1d10, 0x1d34, 0x1d4c, 0x1d6d, 0x1d8b, 0x1dd9, 0x1df7,
- 0x1e39, 0x1e78, 0x1e90, 0x1ea8, 0x1ed5, 0x1ee4, 0x1ef6, 0x1f05,
- // Entry 100 - 13F
- 0x1f14, 0x1f32, 0x1f47, 0x1f5f, 0x1f98, 0x1fa1, 0x1fb6, 0x1fda,
- 0x1ff8, 0x2016, 0x2040, 0x2061, 0x208e, 0x20b2, 0x20d3, 0x20fa,
- 0x210f, 0x213c, 0x215a, 0x2184, 0x219f, 0x21e1, 0x21f9, 0x221d,
- 0x223b, 0x2265, 0x2283, 0x2295, 0x22b3, 0x22da, 0x22e9, 0x2310,
- 0x232e, 0x2352, 0x2376,
-} // Size: 606 bytes
-
-var trRegionStr string = "" + // Size: 3053 bytes
- "Ascension AdasıAndorraBirleşik Arap EmirlikleriAfganistanAntigua ve Barb" +
- "udaAnguillaArnavutlukErmenistanHollanda AntilleriAngolaAntarktikaArjanti" +
- "nAmerikan SamoasıAvusturyaAvustralyaArubaÅland AdalarıAzerbaycanBosna He" +
- "rsekBarbadosBangladeşBelçikaBurkina FasoBulgaristanBahreynBurundiBeninSa" +
- "int BarthelemyBermudaBruneiBolivyaKarayip HollandaBrezilyaBahamalarButan" +
- "Bouvet AdasıBotsvanaBeyaz RusyaBelizeKanadaCocos (Keeling) AdalarıKongo " +
- "- KinşasaOrta Afrika CumhuriyetiKongo - BrazavilİsviçreFildişi SahiliCoo" +
- "k AdalarıŞiliKamerunÇinKolombiyaClipperton AdasıKosta RikaKübaCape Verde" +
- "CuraçaoChristmas AdasıGüney Kıbrıs Rum KesimiÇek CumhuriyetiAlmanyaDiego" +
- " GarciaCibutiDanimarkaDominikaDominik CumhuriyetiCezayirSepte ve Melilla" +
- "EkvadorEstonyaMısırBatı SaharaEritreİspanyaEtiyopyaAvrupa BirliğiFinland" +
- "iyaFijiFalkland AdalarıMikronezyaFaroe AdalarıFransaGabonBirleşik Krallı" +
- "kGrenadaGürcistanFransız GuyanasıGuernseyGanaCebelitarıkGrönlandGambiyaG" +
- "ineGuadalupeEkvator GinesiYunanistanGüney Georgia ve Güney Sandwich Adal" +
- "arıGuatemalaGuamGine-BissauGuyanaÇin Hong Kong ÖYBHeard Adası ve McDonal" +
- "d AdalarıHondurasHırvatistanHaitiMacaristanKanarya AdalarıEndonezyaİrlan" +
- "daİsrailMan AdasıHindistanBritanya Hint Okyanusu TopraklarıIrakİranİzlan" +
- "daİtalyaJerseyJamaikaÜrdünJaponyaKenyaKırgızistanKamboçyaKiribatiKomorla" +
- "rSaint Kitts ve NevisKuzey KoreGüney KoreKuveytCayman AdalarıKazakistanL" +
- "aosLübnanSaint LuciaLiechtensteinSri LankaLiberyaLesotoLitvanyaLüksembur" +
- "gLetonyaLibyaFasMonakoMoldovaKaradağSaint MartinMadagaskarMarshall Adala" +
- "rıMakedonyaMaliMyanmar (Burma)MoğolistanÇin Makao ÖYBKuzey Mariana Adala" +
- "rıMartinikMoritanyaMontserratMaltaMauritiusMaldivlerMalaviMeksikaMalezya" +
- "MozambikNamibyaYeni KaledonyaNijerNorfolk AdasıNijeryaNikaraguaHollandaN" +
- "orveçNepalNauruNiueYeni ZelandaUmmanPanamaPeruFransız PolinezyasıPapua Y" +
- "eni GineFilipinlerPakistanPolonyaSaint Pierre ve MiquelonPitcairn Adalar" +
- "ıPorto RikoFilistin BölgeleriPortekizPalauParaguayKatarUzak OkyanusyaRé" +
- "unionRomanyaSırbistanRusyaRuandaSuudi ArabistanSolomon AdalarıSeyşellerS" +
- "udanİsveçSingapurSaint HelenaSlovenyaSvalbard ve Jan Mayen AdalarıSlovak" +
- "yaSierra LeoneSan MarinoSenegalSomaliSurinamGüney SudanSão Tomé ve Prínc" +
- "ipeEl SalvadorSint MaartenSuriyeSvazilandTristan da CunhaTurks ve Caicos" +
- " AdalarıÇadFransız Güney TopraklarıTogoTaylandTacikistanTokelauTimor-Les" +
- "teTürkmenistanTunusTongaTürkiyeTrinidad ve TobagoTuvaluTayvanTanzanyaUkr" +
- "aynaUgandaABD Uzak AdalarıABDUruguayÖzbekistanVatikanSaint Vincent ve Gr" +
- "enadinlerVenezuelaBritanya Virjin AdalarıABD Virjin AdalarıVietnamVanuat" +
- "uWallis ve Futuna AdalarıSamoaKosovaYemenMayotteGüney AfrikaZambiyaZimba" +
- "bveBilinmeyen BölgeDünyaAfrikaKuzey AmerikaGüney AmerikaOkyanusyaBatı Af" +
- "rikaOrta AmerikaDoğu AfrikaKuzey AfrikaOrta AfrikaAfrika’nın GüneyiAmeri" +
- "kaAmerika’nın KuzeyiKarayiplerDoğu AsyaGüney AsyaGüneydoğu AsyaGüney Avr" +
- "upaAvustralasyaMelanezyaMikronezya BölgesiPolinezyaAsyaOrta AsyaBatı Asy" +
- "aAvrupaDoğu AvrupaKuzey AvrupaBatı AvrupaLatin Amerika"
-
-var trRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x0031, 0x003b, 0x004d, 0x0055, 0x005f,
- 0x0069, 0x007b, 0x0081, 0x008b, 0x0093, 0x00a4, 0x00ad, 0x00b7,
- 0x00bc, 0x00cb, 0x00d5, 0x00e1, 0x00e9, 0x00f3, 0x00fb, 0x0107,
- 0x0112, 0x0119, 0x0120, 0x0125, 0x0135, 0x013c, 0x0142, 0x0149,
- 0x0159, 0x0161, 0x016a, 0x016f, 0x017c, 0x0184, 0x018f, 0x0195,
- 0x019b, 0x01b3, 0x01c3, 0x01da, 0x01ea, 0x01f3, 0x0202, 0x020f,
- 0x0214, 0x021b, 0x021f, 0x0228, 0x0239, 0x0243, 0x0248, 0x0252,
- 0x025a, 0x026a, 0x0284, 0x0294, 0x029b, 0x02a7, 0x02ad, 0x02b6,
- // Entry 40 - 7F
- 0x02be, 0x02d1, 0x02d8, 0x02e8, 0x02ef, 0x02f6, 0x02fd, 0x0309,
- 0x030f, 0x0317, 0x031f, 0x032e, 0x0338, 0x033c, 0x034d, 0x0357,
- 0x0365, 0x036b, 0x0370, 0x0382, 0x0389, 0x0393, 0x03a5, 0x03ad,
- 0x03b1, 0x03bd, 0x03c6, 0x03cd, 0x03d1, 0x03da, 0x03e8, 0x03f2,
- 0x041c, 0x0425, 0x0429, 0x0434, 0x043a, 0x044d, 0x046e, 0x0476,
- 0x0482, 0x0487, 0x0491, 0x04a1, 0x04aa, 0x04b2, 0x04b9, 0x04c3,
- 0x04cc, 0x04ee, 0x04f2, 0x04f7, 0x04ff, 0x0506, 0x050c, 0x0513,
- 0x051a, 0x0521, 0x0526, 0x0533, 0x053c, 0x0544, 0x054c, 0x0560,
- // Entry 80 - BF
- 0x056a, 0x0575, 0x057b, 0x058a, 0x0594, 0x0598, 0x059f, 0x05aa,
- 0x05b7, 0x05c0, 0x05c7, 0x05cd, 0x05d5, 0x05e0, 0x05e7, 0x05ec,
- 0x05ef, 0x05f5, 0x05fc, 0x0604, 0x0610, 0x061a, 0x062b, 0x0634,
- 0x0638, 0x0647, 0x0652, 0x0661, 0x0677, 0x067f, 0x0688, 0x0692,
- 0x0697, 0x06a0, 0x06a9, 0x06af, 0x06b6, 0x06bd, 0x06c5, 0x06cc,
- 0x06da, 0x06df, 0x06ed, 0x06f4, 0x06fd, 0x0705, 0x070c, 0x0711,
- 0x0716, 0x071a, 0x0726, 0x072b, 0x0731, 0x0735, 0x074a, 0x0759,
- 0x0763, 0x076b, 0x0772, 0x078a, 0x079b, 0x07a5, 0x07b8, 0x07c0,
- // Entry C0 - FF
- 0x07c5, 0x07cd, 0x07d2, 0x07e0, 0x07e8, 0x07ef, 0x07f9, 0x07fe,
- 0x0804, 0x0813, 0x0823, 0x082d, 0x0832, 0x0839, 0x0841, 0x084d,
- 0x0855, 0x0873, 0x087b, 0x0887, 0x0891, 0x0898, 0x089e, 0x08a5,
- 0x08b1, 0x08c8, 0x08d3, 0x08df, 0x08e5, 0x08ee, 0x08fe, 0x0916,
- 0x091a, 0x0935, 0x0939, 0x0940, 0x094a, 0x0951, 0x095c, 0x0969,
- 0x096e, 0x0973, 0x097b, 0x098d, 0x0993, 0x0999, 0x09a1, 0x09a8,
- 0x09ae, 0x09bf, 0x09c2, 0x09c9, 0x09d4, 0x09db, 0x09f7, 0x0a00,
- 0x0a18, 0x0a2b, 0x0a32, 0x0a39, 0x0a52, 0x0a57, 0x0a5d, 0x0a62,
- // Entry 100 - 13F
- 0x0a69, 0x0a76, 0x0a7d, 0x0a85, 0x0a96, 0x0a9c, 0x0aa2, 0x0aaf,
- 0x0abd, 0x0ac6, 0x0ad2, 0x0ade, 0x0aea, 0x0af6, 0x0b01, 0x0b16,
- 0x0b1d, 0x0b32, 0x0b3c, 0x0b46, 0x0b51, 0x0b61, 0x0b6e, 0x0b7a,
- 0x0b83, 0x0b96, 0x0b9f, 0x0ba3, 0x0bac, 0x0bb6, 0x0bbc, 0x0bc8,
- 0x0bd4, 0x0be0, 0x0bed,
-} // Size: 606 bytes
-
-var ukRegionStr string = "" + // Size: 6146 bytes
- "Острів ВознесінняАндорраОбʼєднані Арабські ЕміратиАфганістанАнтигуа і Ба" +
- "рбудаАнгільяАлбаніяВірменіяНідерландські Антильські ОстровиАнголаАнтарк" +
- "тикаАргентинаАмериканське СамоаАвстріяАвстраліяАрубаАландські островиАз" +
- "ербайджанБоснія і ГерцоговинаБарбадосБангладешБельгіяБуркіна-ФасоБолгар" +
- "іяБахрейнБурундіБенінСен-БартельміБермудські островиБрунейБолівіяНідерл" +
- "андські Карибські островиБразиліяБагамські ОстровиБутанОстрів БувеБотсв" +
- "анаБілорусьБелізКанадаКокосові (Кілінгові) островиКонго – КіншасаЦентра" +
- "льноафриканська РеспублікаКонго – БраззавільШвейцаріяКот-д’ІвуарОстрови" +
- " КукаЧиліКамерунКитайКолумбіяОстрів КліппертонКоста-РикаКубаКабо ВердеКю" +
- "расаоОстрів РіздваКіпрЧехіяНімеччинаДієго-ГарсіяДжибутіДаніяДомінікаДом" +
- "ініканська РеспублікаАлжирСеута і МелільяЕквадорЕстоніяЄгипетЗахідна Са" +
- "хараЕритреяІспаніяЕфіопіяЄвропейський СоюзФінляндіяФіджіФолклендські ос" +
- "тровиМікронезіяФарерські островиФранціяГабонВелика БританіяГренадаГрузі" +
- "яФранцузька ГвіанаГернсіГанаГібралтарГренландіяГамбіяГвінеяГваделупаЕкв" +
- "аторіальна ГвінеяГреціяПівденна Джорджія та Південні Сандвічеві острови" +
- "ГватемалаГуамГвінея-БісауГаянаГонконг, О.А.Р. КитаюОстрови Херд і Мак-Д" +
- "ональдГондурасХорватіяГаїтіУгорщинаКанарські островиІндонезіяІрландіяІз" +
- "раїльОстрів МенІндіяБританські території в Індійському океаніІракІранІс" +
- "ландіяІталіяДжерсіЯмайкаЙорданіяЯпоніяКеніяКиргизстанКамбоджаКірибатіКо" +
- "морські островиСент-Кітс і НевісПівнічна КореяПівденна КореяКувейтКайма" +
- "нові островиКазахстанЛаосЛіванСент-ЛюсіяЛіхтенштейнШрі-ЛанкаЛіберіяЛесо" +
- "тоЛитваЛюксембургЛатвіяЛівіяМароккоМонакоМолдоваЧорногоріяСен-МартенМад" +
- "агаскарМаршаллові ОстровиМакедоніяМаліМʼянма (Бірма)МонголіяМакао, О.А." +
- "Р КитаюПівнічні Маріанські островиМартинікаМавританіяМонтсерратМальтаМа" +
- "врикійМальдівиМалавіМексикаМалайзіяМозамбікНамібіяНова КаледоніяНігерОс" +
- "трів НорфолкНігеріяНікарагуаНідерландиНорвегіяНепалНауруНіуеНова Зеланд" +
- "іяОманПанамаПеруФранцузька ПолінезіяПапуа Нова ГвінеяФіліппіниПакистанП" +
- "ольщаСен-Пʼєр і МікелонОстрови ПіткернПуерто-РикоПалестинські території" +
- "ПортугаліяПалауПарагвайКатарВіддалені острови ОкеаніїРеюньйонРумуніяСер" +
- "біяРосіяРуандаСаудівська АравіяСоломонові ОстровиСейшельські островиСуд" +
- "анШвеціяСінгапурОстрів Святої ЄлениСловеніяОстрови Свальбард і Ян-МаєнС" +
- "ловаччинаСьєрра-ЛеонеСан-МариноСенегалСомаліСуринамПівденний СуданСан-Т" +
- "оме і ПрінсіпіСальвадорСінт-МартенСиріяСвазілендТрістан-да-КуньяОстрови" +
- " Теркс і КайкосЧадФранцузькі Південні ТериторіїТогоТаїландТаджикистанТок" +
- "елауТимор-ЛештіТуркменістанТунісТонгаТуреччинаТринідад і ТобагоТувалуТа" +
- "йваньТанзаніяУкраїнаУгандаВіддалені острови СШАСШАУругвайУзбекистанВати" +
- "канСент-Вінсент і ГренадиниВенесуелаБританські Віргінські островиВіргін" +
- "ські острови, СШАВʼєтнамВануатуВолліс і ФутунаСамоаКосовоЄменМайоттаПів" +
- "денно-Африканська РеспублікаЗамбіяЗімбабвеНевідомий регіонСвітАфрикаПів" +
- "нічна АмерикаПівденна АмерикаОкеаніяЗахідна АфрикаЦентральна АмерикаСхі" +
- "дна АфрикаПівнічна АфрикаЦентральна АфрикаПівденна АфрикаАмерикаПівнічн" +
- "а Америка (регіон)Карибський басейнСхідна АзіяПівденна АзіяПівденно-Схі" +
- "дна АзіяПівденна ЄвропаАвстралазіяМеланезіяМікронезійський регіонПоліне" +
- "зіяАзіяЦентральна АзіяЗахідна АзіяЄвропаСхідна ЄвропаПівнічна ЄвропаЗах" +
- "ідна ЄвропаЛатинська Америка"
-
-var ukRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0021, 0x002f, 0x0061, 0x0075, 0x0095, 0x00a3, 0x00b1,
- 0x00c1, 0x00ff, 0x010b, 0x011f, 0x0131, 0x0154, 0x0162, 0x0174,
- 0x017e, 0x019f, 0x01b5, 0x01db, 0x01eb, 0x01fd, 0x020b, 0x0222,
- 0x0232, 0x0240, 0x024e, 0x0258, 0x0271, 0x0294, 0x02a0, 0x02ae,
- 0x02ea, 0x02fa, 0x031b, 0x0325, 0x033a, 0x034a, 0x035a, 0x0364,
- 0x0370, 0x03a4, 0x03c1, 0x0400, 0x0423, 0x0435, 0x044b, 0x0462,
- 0x046a, 0x0478, 0x0482, 0x0492, 0x04b3, 0x04c6, 0x04ce, 0x04e1,
- 0x04ef, 0x0508, 0x0510, 0x051a, 0x052c, 0x0543, 0x0551, 0x055b,
- // Entry 40 - 7F
- 0x056b, 0x059a, 0x05a4, 0x05c0, 0x05ce, 0x05dc, 0x05e8, 0x0603,
- 0x0611, 0x061f, 0x062d, 0x064e, 0x0660, 0x066a, 0x0691, 0x06a5,
- 0x06c6, 0x06d4, 0x06de, 0x06fb, 0x0709, 0x0715, 0x0736, 0x0742,
- 0x074a, 0x075c, 0x0770, 0x077c, 0x0788, 0x079a, 0x07c1, 0x07cd,
- 0x0828, 0x083a, 0x0842, 0x0859, 0x0863, 0x0887, 0x08b7, 0x08c7,
- 0x08d7, 0x08e1, 0x08f1, 0x0912, 0x0924, 0x0934, 0x0942, 0x0955,
- 0x095f, 0x09ad, 0x09b5, 0x09bd, 0x09cd, 0x09d9, 0x09e5, 0x09f1,
- 0x0a01, 0x0a0d, 0x0a17, 0x0a2b, 0x0a3b, 0x0a4b, 0x0a6c, 0x0a8b,
- // Entry 80 - BF
- 0x0aa6, 0x0ac1, 0x0acd, 0x0aee, 0x0b00, 0x0b08, 0x0b12, 0x0b25,
- 0x0b3b, 0x0b4c, 0x0b5a, 0x0b66, 0x0b70, 0x0b84, 0x0b90, 0x0b9a,
- 0x0ba8, 0x0bb4, 0x0bc2, 0x0bd6, 0x0be9, 0x0bfd, 0x0c20, 0x0c32,
- 0x0c3a, 0x0c53, 0x0c63, 0x0c82, 0x0cb6, 0x0cc8, 0x0cdc, 0x0cf0,
- 0x0cfc, 0x0d0c, 0x0d1c, 0x0d28, 0x0d36, 0x0d46, 0x0d56, 0x0d64,
- 0x0d7f, 0x0d89, 0x0da4, 0x0db2, 0x0dc4, 0x0dd8, 0x0de8, 0x0df2,
- 0x0dfc, 0x0e04, 0x0e1d, 0x0e25, 0x0e31, 0x0e39, 0x0e60, 0x0e80,
- 0x0e92, 0x0ea2, 0x0eae, 0x0ecf, 0x0eec, 0x0f01, 0x0f2c, 0x0f40,
- // Entry C0 - FF
- 0x0f4a, 0x0f5a, 0x0f64, 0x0f94, 0x0fa4, 0x0fb2, 0x0fbe, 0x0fc8,
- 0x0fd4, 0x0ff5, 0x1018, 0x103d, 0x1047, 0x1053, 0x1063, 0x1087,
- 0x1097, 0x10c9, 0x10dd, 0x10f4, 0x1107, 0x1115, 0x1121, 0x112f,
- 0x114c, 0x116f, 0x1181, 0x1196, 0x11a0, 0x11b2, 0x11d0, 0x11f9,
- 0x11ff, 0x1237, 0x123f, 0x124d, 0x1263, 0x1271, 0x1286, 0x129e,
- 0x12a8, 0x12b2, 0x12c4, 0x12e4, 0x12f0, 0x12fe, 0x130e, 0x131c,
- 0x1328, 0x1350, 0x1356, 0x1364, 0x1378, 0x1386, 0x13b3, 0x13c5,
- 0x13fd, 0x1428, 0x1436, 0x1444, 0x1460, 0x146a, 0x1476, 0x147e,
- // Entry 100 - 13F
- 0x148c, 0x14c8, 0x14d4, 0x14e4, 0x1503, 0x150b, 0x1517, 0x1536,
- 0x1555, 0x1563, 0x157e, 0x15a1, 0x15ba, 0x15d7, 0x15f8, 0x1615,
- 0x1623, 0x1651, 0x1672, 0x1687, 0x16a0, 0x16c6, 0x16e3, 0x16f9,
- 0x170b, 0x1736, 0x1748, 0x1750, 0x176d, 0x1784, 0x1790, 0x17a9,
- 0x17c6, 0x17e1, 0x1802,
-} // Size: 606 bytes
-
-var urRegionStr string = "" + // Size: 5159 bytes
- "اسینشن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاا" +
- "لبانیہآرمینیانیدرلینڈز انٹیلیزانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹری" +
- "اآسٹریلیااروباآلینڈ آئلینڈزآذربائجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ " +
- "دیشبیلجیمبرکینا فاسوبلغاریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونئیبولی" +
- "ویاکریبیائی نیدرلینڈزبرازیلبہاماسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائ" +
- "زکینیڈاکوکوس (کیلنگ) جزائرکانگو - کنشاساوسط افریقی جمہوریہکانگو - برازا" +
- "ویلےسوئٹزر لینڈکوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکولمبیاکلپرٹن آئلینڈک" +
- "وسٹا ریکاکیوباکیپ ورڈیکیوراکاؤکرسمس آئلینڈقبرصچیک جمہوریہجرمنیڈائجو گار" +
- "سیاجبوتیڈنمارکڈومنیکاڈومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈوراسٹ" +
- "ونیامصرمغربی صحارااریٹیریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ " +
- "جزائرمائکرونیشیاجزائر فاروفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیانا" +
- "گوئرنسیگھاناجبل الطارقگرین لینڈگامبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی" +
- " جارجیا اور جنوبی سینڈوچ جزائرگواٹے مالاگوآمگنی بساؤگیاناہانگ کانگ SAR چ" +
- "ینہیئرڈ آئلینڈ اور میکڈونالڈ آئلینڈزہونڈاروسکروشیاہیتیہنگریکینری آئلینڈ" +
- "زانڈونیشیاآئرلینڈاسرائیلآئل آف مینبھارتبرطانوی ہندوستانی سمندری خطہعراق" +
- "ایرانآئس لینڈاٹلیجرسیجمائیکااردنجاپانکینیاکرغزستانکمبوڈیاکریباتیکوموروس" +
- "سینٹ کٹس اور نیویسشمالی کوریاجنوبی کوریاکویتکیمین آئلینڈزقزاخستانلاؤسلب" +
- "نانسینٹ لوسیالیشٹنسٹائنسری لنکالائبیریالیسوتھولتھوانیالگژمبرگلٹویالیبیا" +
- "مراقشموناکومالدووامونٹے نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیم" +
- "یانمار (برما)منگولیامکاؤ SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمو" +
- "نٹسیراٹمالٹاماریشسمالدیپملاویمیکسیکوملیشیاموزمبیقنامیبیانیو کلیڈونیانائ" +
- "جرنارفوک آئلینڈنائجیریانکاراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی ینڈعم" +
- "انپنامہپیروفرانسیسی پولینیشیاپاپوآ نیو گنیفلپائنیپاکستانپولینڈسینٹ پیئر" +
- " اور میکلیئونپٹکائرن جزائرپیورٹو ریکوفلسطینی خطےپرتگالپلاؤپیراگوئےقطربیر" +
- "ونی اوشیانیاری یونینرومانیاسربیاروسروانڈاسعودی عربسولومن آئلینڈزسشلیزسو" +
- "ڈانسویڈنسنگاپورسینٹ ہیلیناسلووینیاسوالبرڈ اور جان ماینسلوواکیہسیئر لیون" +
- "سان مارینوسینیگلصومالیہسورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈورسن" +
- "ٹ مارٹنشامسوازی لینڈٹرسٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنو" +
- "بی خطےٹوگوتھائی لینڈتاجکستانٹوکیلاؤتیمور لیسٹترکمانستانتیونیسیاٹونگاترک" +
- "یترینیداد اور ٹوباگوٹووالوتائیوانتنزانیہیوکرینیوگانڈاامریکہ سے باہر کے " +
- "چھوٹے جزائزریاستہائے متحدہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرین" +
- "یڈائنزوینزوئیلابرٹش ورجن آئلینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز ا" +
- "ور فیوٹیوناساموآکوسووویمنمایوٹجنوبی افریقہزامبیازمبابوےنامعلوم علاقہدنی" +
- "اافریقہشمالی امریکہجنوبی امریکہاوشیانیامغربی افریقہوسطی امریکہمشرقی افر" +
- "یقہشمالی افریقہوسطی افریقہجنوبی افریقہ کے علاقہامیریکازشمالی امریکہ کا " +
- "علاقہکریبیائیمشرقی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشیا" +
- "مالینیشیامائکرونیشیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرق" +
- "ی یورپشمالی یورپمغربی یورپلاطینی امریکہ"
-
-var urRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0019, 0x0025, 0x0043, 0x0055, 0x0079, 0x0089, 0x0097,
- 0x00a5, 0x00c6, 0x00d2, 0x00e6, 0x00f6, 0x010d, 0x0119, 0x0129,
- 0x0133, 0x014c, 0x015e, 0x0186, 0x0196, 0x01a7, 0x01b3, 0x01c8,
- 0x01d6, 0x01e0, 0x01ec, 0x01f4, 0x020d, 0x0219, 0x0225, 0x0233,
- 0x0256, 0x0262, 0x026e, 0x027a, 0x0291, 0x02a1, 0x02af, 0x02bb,
- 0x02c7, 0x02e9, 0x0302, 0x0324, 0x0343, 0x0358, 0x0370, 0x0383,
- 0x0389, 0x0395, 0x039b, 0x03a9, 0x03c2, 0x03d5, 0x03df, 0x03ee,
- 0x03fe, 0x0415, 0x041d, 0x0432, 0x043c, 0x0453, 0x045d, 0x0469,
- // Entry 40 - 7F
- 0x0477, 0x0494, 0x04a2, 0x04c2, 0x04d2, 0x04e0, 0x04e6, 0x04fb,
- 0x050b, 0x0519, 0x0529, 0x0540, 0x054d, 0x0553, 0x056c, 0x0582,
- 0x0595, 0x059f, 0x05a9, 0x05be, 0x05cc, 0x05d8, 0x05ed, 0x05fb,
- 0x0605, 0x0618, 0x0629, 0x0635, 0x063b, 0x064b, 0x0664, 0x066e,
- 0x06af, 0x06c2, 0x06ca, 0x06d9, 0x06e3, 0x06ff, 0x073f, 0x074f,
- 0x075b, 0x0763, 0x076d, 0x0786, 0x0798, 0x07a6, 0x07b4, 0x07c6,
- 0x07d0, 0x0805, 0x080d, 0x0817, 0x0826, 0x082e, 0x0836, 0x0844,
- 0x084c, 0x0856, 0x0860, 0x0870, 0x087e, 0x088c, 0x089a, 0x08bb,
- // Entry 80 - BF
- 0x08d0, 0x08e5, 0x08ed, 0x0906, 0x0916, 0x091e, 0x0928, 0x093b,
- 0x094f, 0x095e, 0x096e, 0x097c, 0x098c, 0x099a, 0x09a4, 0x09ae,
- 0x09b8, 0x09c4, 0x09d2, 0x09e7, 0x09fa, 0x0a08, 0x0a21, 0x0a2f,
- 0x0a37, 0x0a50, 0x0a5e, 0x0a71, 0x0a99, 0x0aa7, 0x0ab9, 0x0acb,
- 0x0ad5, 0x0ae1, 0x0aed, 0x0af7, 0x0b05, 0x0b11, 0x0b1f, 0x0b2d,
- 0x0b44, 0x0b4e, 0x0b67, 0x0b77, 0x0b89, 0x0b9c, 0x0ba6, 0x0bb0,
- 0x0bb8, 0x0bc0, 0x0bd1, 0x0bd9, 0x0be3, 0x0beb, 0x0c0e, 0x0c26,
- 0x0c34, 0x0c42, 0x0c4e, 0x0c77, 0x0c90, 0x0ca5, 0x0cba, 0x0cc6,
- // Entry C0 - FF
- 0x0cce, 0x0cde, 0x0ce4, 0x0d01, 0x0d10, 0x0d1e, 0x0d28, 0x0d2e,
- 0x0d3a, 0x0d4b, 0x0d66, 0x0d70, 0x0d7a, 0x0d84, 0x0d92, 0x0da7,
- 0x0db7, 0x0ddc, 0x0dec, 0x0dfd, 0x0e10, 0x0e1c, 0x0e2a, 0x0e38,
- 0x0e4d, 0x0e6e, 0x0e81, 0x0e92, 0x0e98, 0x0eab, 0x0ec7, 0x0eee,
- 0x0ef4, 0x0f16, 0x0f1e, 0x0f31, 0x0f41, 0x0f4f, 0x0f62, 0x0f76,
- 0x0f86, 0x0f90, 0x0f98, 0x0fbc, 0x0fc8, 0x0fd6, 0x0fe4, 0x0ff0,
- 0x0ffe, 0x1033, 0x1050, 0x1060, 0x1070, 0x1083, 0x10b2, 0x10c4,
- 0x10e4, 0x1108, 0x1114, 0x1122, 0x1144, 0x114e, 0x115a, 0x1160,
- // Entry 100 - 13F
- 0x116a, 0x1181, 0x118d, 0x119b, 0x11b4, 0x11bc, 0x11c8, 0x11df,
- 0x11f6, 0x1206, 0x121d, 0x1232, 0x1249, 0x1260, 0x1275, 0x129c,
- 0x12ac, 0x12d3, 0x12e3, 0x12f8, 0x130d, 0x132b, 0x133e, 0x1352,
- 0x1364, 0x1389, 0x139b, 0x13a5, 0x13b8, 0x13cd, 0x13d5, 0x13e8,
- 0x13fb, 0x140e, 0x1427,
-} // Size: 606 bytes
-
-var uzRegionStr string = "" + // Size: 3194 bytes
- "Me’roj oroliAndorraBirlashgan Arab AmirliklariAfgʻonistonAntigua va Barb" +
- "adosAngilyaAlbaniyaArmanistonAngolaAntarktidaArgentinaAmerika SamoasiAvs" +
- "triyaAvstraliyaArubaAland orollariOzarbayjonBosniya va GertsegovinaBarba" +
- "dosBangladeshBelgiyaBurkina-FasoBolgariyaBahraynBurundiBeninSen-Bartelem" +
- "iBermuda orollariBruneyBoliviyaBoneyr, Sint-Estatius va SabaBraziliyaBag" +
- "ama orollariButanBuve oroliBotsvanaBelarusBelizKanadaKokos (Kiling) orol" +
- "lariKongo – KinshasaMarkaziy Afrika RespublikasiKongo – BrazzavilShveyts" +
- "ariyaKot-d’IvuarKuk orollariChiliKamerunXitoyKolumbiyaKlipperton oroliKo" +
- "sta-RikaKubaKabo-VerdeKyurasaoRojdestvo oroliKiprChexiya RespublikasiGer" +
- "maniyaDiyego-GarsiyaJibutiDaniyaDominikaDominikan RespublikasiJazoirSeut" +
- "a va MelilyaEkvadorEstoniyaMisrG‘arbiy Sahroi KabirEritreyaIspaniyaEfiop" +
- "iyaYevropa IttifoqiFinlandiyaFijiFolklend orollariMikroneziyaFarer oroll" +
- "ariFransiyaGabonBirlashgan QirollikGrenadaGruziyaFransuz GvianasiGernsiG" +
- "anaGibraltarGrenlandiyaGambiyaGvineyaGvadelupeEkvatorial GvineyaGretsiya" +
- "Janubiy Georgiya va Janubiy Sendvich orollariGvatemalaGuamGvineya-BisauG" +
- "ayanaGonkong (Xitoy MMH)Xerd va Makdonald orollariGondurasXorvatiyaGaiti" +
- "VengriyaKanar orollariIndoneziyaIrlandiyaIsroilMen oroliHindistonBritani" +
- "yaning Hind okeanidagi hududiIroqEronIslandiyaItaliyaJersiYamaykaIordani" +
- "yaYaponiyaKeniyaQirgʻizistonKambodjaKiribatiKomor orollariSent-Kits va N" +
- "evisShimoliy KoreyaJanubiy KoreyaQuvaytKayman orollariQozogʻistonLaosLiv" +
- "anSent-LyusiyaLixtenshteynShri-LankaLiberiyaLesotoLitvaLyuksemburgLatviy" +
- "aLiviyaMarokashMonakoMoldovaChernogoriyaSent-MartinMadagaskarMarshall or" +
- "ollariMakedoniyaMaliMyanma (Birma)MongoliyaMakao (Xitoy MMH)Shimoliy Mar" +
- "iana orollariMartinikaMavritaniyaMontserratMaltaMavrikiyMaldiv orollariM" +
- "alaviMeksikaMalayziyaMozambikNamibiyaYangi KaledoniyaNigerNorfolk oroliN" +
- "igeriyaNikaraguaNiderlandiyaNorvegiyaNepalNauruNiueYangi ZelandiyaUmmonP" +
- "anamaPeruFransuz PolineziyasiPapua – Yangi GvineyaFilippinPokistonPolsha" +
- "Sent-Pyer va MikelonPitkern orollariPuerto-RikoFalastin hududiPortugaliy" +
- "aPalauParagvayQatarYondosh OkeaniyaReyunionRuminiyaSerbiyaRossiyaRuandaS" +
- "audiya ArabistoniSolomon orollariSeyshel orollariSudanShvetsiyaSingapurM" +
- "uqaddas Yelena oroliSloveniyaSvalbard va Yan-MayenSlovakiyaSyerra-LeoneS" +
- "an-MarinoSenegalSomaliSurinamJanubiy SudanSan-Tome va PrinsipiSalvadorSi" +
- "nt-MartenSuriyaSvazilendTristan-da-KunyaTurks va Kaykos orollariChadFran" +
- "suz Janubiy hududlariTogoTailandTojikistonTokelauTimorTurkmanistonTunisT" +
- "ongaTurkiyaTrinidad va TobagoTuvaluTayvanTanzaniyaUkrainaUgandaAQSH yond" +
- "osh orollariQoʻshma ShtatlarUrugvayOʻzbekistonVatikanSent-Vinsent va Gre" +
- "nadinVenesuelaBritaniya Virgin orollariAQSH Virgin orollariVyetnamVanuat" +
- "uUollis va FutunaSamoaKosovoYamanMayottaJanubiy Afrika RespublikasiZambi" +
- "yaZimbabveNoma’lum mintaqaDunyoAfrikaShimoliy AmerikaJanubiy AmerikaOkea" +
- "niyaG‘arbiy AfrikaMarkaziy AmerikaSharqiy AfrikaShimoliy AfrikaMarkaziy " +
- "AfrikaJanubiy AfrikaAmerikaShimoliy Amerika – AQSH va KanadaKarib havzas" +
- "iSharqiy OsiyoJanubiy OsiyoJanubi-sharqiy OsiyoJanubiy YevropaAvstralazi" +
- "yaMelaneziyaMikroneziya mintaqasiPolineziyaOsiyoMarkaziy OsiyoG‘arbiy Os" +
- "iyoYevropaSharqiy YevropaShimoliy YevropaG‘arbiy YevropaLotin Amerikasi"
-
-var uzRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000e, 0x0015, 0x0030, 0x003c, 0x004f, 0x0056, 0x005e,
- 0x0068, 0x0068, 0x006e, 0x0078, 0x0081, 0x0090, 0x0098, 0x00a2,
- 0x00a7, 0x00b5, 0x00bf, 0x00d6, 0x00de, 0x00e8, 0x00ef, 0x00fb,
- 0x0104, 0x010b, 0x0112, 0x0117, 0x0124, 0x0134, 0x013a, 0x0142,
- 0x015f, 0x0168, 0x0177, 0x017c, 0x0186, 0x018e, 0x0195, 0x019a,
- 0x01a0, 0x01b7, 0x01c9, 0x01e5, 0x01f8, 0x0204, 0x0211, 0x021d,
- 0x0222, 0x0229, 0x022e, 0x0237, 0x0247, 0x0251, 0x0255, 0x025f,
- 0x0267, 0x0276, 0x027a, 0x028e, 0x0297, 0x02a5, 0x02ab, 0x02b1,
- // Entry 40 - 7F
- 0x02b9, 0x02cf, 0x02d5, 0x02e5, 0x02ec, 0x02f4, 0x02f8, 0x030e,
- 0x0316, 0x031e, 0x0326, 0x0336, 0x0340, 0x0344, 0x0355, 0x0360,
- 0x036e, 0x0376, 0x037b, 0x038e, 0x0395, 0x039c, 0x03ac, 0x03b2,
- 0x03b6, 0x03bf, 0x03ca, 0x03d1, 0x03d8, 0x03e1, 0x03f3, 0x03fb,
- 0x0428, 0x0431, 0x0435, 0x0442, 0x0448, 0x045b, 0x0475, 0x047d,
- 0x0486, 0x048b, 0x0493, 0x04a1, 0x04ab, 0x04b4, 0x04ba, 0x04c3,
- 0x04cc, 0x04f0, 0x04f4, 0x04f8, 0x0501, 0x0508, 0x050d, 0x0514,
- 0x051d, 0x0525, 0x052b, 0x0538, 0x0540, 0x0548, 0x0556, 0x0568,
- // Entry 80 - BF
- 0x0577, 0x0585, 0x058b, 0x059a, 0x05a6, 0x05aa, 0x05af, 0x05bb,
- 0x05c7, 0x05d1, 0x05d9, 0x05df, 0x05e4, 0x05ef, 0x05f6, 0x05fc,
- 0x0604, 0x060a, 0x0611, 0x061d, 0x0628, 0x0632, 0x0643, 0x064d,
- 0x0651, 0x065f, 0x0668, 0x0679, 0x0692, 0x069b, 0x06a6, 0x06b0,
- 0x06b5, 0x06bd, 0x06cc, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f2,
- 0x0702, 0x0707, 0x0714, 0x071c, 0x0725, 0x0731, 0x073a, 0x073f,
- 0x0744, 0x0748, 0x0757, 0x075c, 0x0762, 0x0766, 0x077a, 0x0791,
- 0x0799, 0x07a1, 0x07a7, 0x07bb, 0x07cb, 0x07d6, 0x07e5, 0x07f0,
- // Entry C0 - FF
- 0x07f5, 0x07fd, 0x0802, 0x0812, 0x081a, 0x0822, 0x0829, 0x0830,
- 0x0836, 0x0848, 0x0858, 0x0868, 0x086d, 0x0876, 0x087e, 0x0893,
- 0x089c, 0x08b1, 0x08ba, 0x08c6, 0x08d0, 0x08d7, 0x08dd, 0x08e4,
- 0x08f1, 0x0905, 0x090d, 0x0918, 0x091e, 0x0927, 0x0937, 0x094f,
- 0x0953, 0x096c, 0x0970, 0x0977, 0x0981, 0x0988, 0x098d, 0x0999,
- 0x099e, 0x09a3, 0x09aa, 0x09bc, 0x09c2, 0x09c8, 0x09d1, 0x09d8,
- 0x09de, 0x09f3, 0x0a04, 0x0a0b, 0x0a17, 0x0a1e, 0x0a36, 0x0a3f,
- 0x0a58, 0x0a6c, 0x0a73, 0x0a7a, 0x0a8a, 0x0a8f, 0x0a95, 0x0a9a,
- // Entry 100 - 13F
- 0x0aa1, 0x0abc, 0x0ac3, 0x0acb, 0x0add, 0x0ae2, 0x0ae8, 0x0af8,
- 0x0b07, 0x0b0f, 0x0b1f, 0x0b2f, 0x0b3d, 0x0b4c, 0x0b5b, 0x0b69,
- 0x0b70, 0x0b93, 0x0ba0, 0x0bad, 0x0bba, 0x0bce, 0x0bdd, 0x0be9,
- 0x0bf3, 0x0c08, 0x0c12, 0x0c17, 0x0c25, 0x0c34, 0x0c3b, 0x0c4a,
- 0x0c5a, 0x0c6b, 0x0c7a,
-} // Size: 606 bytes
-
-var viRegionStr string = "" + // Size: 3230 bytes
- "Đảo AscensionAndorraCác Tiểu V.quốc Ả Rập T.nhấtAfghanistanAntigua và Ba" +
- "rbudaAnguillaAlbaniArmeniaTây Ấn Hà LanAngolaNam CựcArgentinaĐảo Somoa t" +
- "huộc MỹÁoÚcArubaQuần đảo ÅlandAzerbaijanBosnia và HerzegovinaBarbadosBan" +
- "gladeshBỉBurkina FasoBungariBahrainBurundiBeninSt. BarthélemyBermudaBrun" +
- "eiBoliviaCa-ri-bê Hà LanBrazilBahamasBhutanĐảo BouvetBotswanaBelarusBeli" +
- "zeCanadaQuần đảo Cocos (Keeling)Congo - KinshasaCộng hòa Trung PhiCongo " +
- "- BrazzavilleThụy SĩBờ Biển NgàQuần đảo CookChileCameroonTrung QuốcColom" +
- "biaĐảo ClippertonCosta RicaCubaCape VerdeCuraçaoĐảo Giáng SinhSípCộng hò" +
- "a SécĐứcDiego GarciaDjiboutiĐan MạchDominicaCộng hòa DominicaAlgeriaCeut" +
- "a và MelillaEcuadorEstoniaAi CậpTây SaharaEritreaTây Ban NhaEthiopiaLiên" +
- " Minh Châu ÂuPhần LanFijiQuần đảo FalklandMicronesiaQuần đảo FaroePhápGa" +
- "bonVương quốc AnhGrenadaGeorgiaGuiana thuộc PhápGuernseyGhanaGibraltarGr" +
- "eenlandGambiaGuineaGuadeloupeGuinea Xích ĐạoHy LạpQuần đảo Nam Georgia v" +
- "à Nam SandwichGuatemalaGuamGuinea-BissauGuyanaHồng Kông, Trung QuốcQuần" +
- " đảo Heard và McDonaldHondurasCroatiaHaitiHungariQuần đảo CanaryIndonesi" +
- "aAi-lenIsraelĐảo ManẤn ĐộThuộc địa Anh tại Ấn Độ DươngI-rắcIranIcelandÝJ" +
- "erseyJamaicaJordanNhật BảnKenyaKyrgyzstanCampuchiaKiribatiComorosSt. Kit" +
- "ts và NevisTriều TiênHàn QuốcCô-oétQuần đảo CaymanKazakhstanLàoLi-băngSt" +
- ". LuciaLiechtensteinSri LankaLiberiaLesothoLít-vaLuxembourgLatviaLi-biMa" +
- "-rốcMonacoMoldovaMontenegroSt. MartinMadagascarQuần đảo MarshallMacedoni" +
- "aMaliMyanmar (Miến Điện)Mông CổMacao, Trung QuốcQuần đảo Bắc MarianaMart" +
- "iniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMoza" +
- "mbiqueNamibiaNew CaledoniaNigerĐảo NorfolkNigeriaNicaraguaHà LanNa UyNep" +
- "alNauruNiueNew ZealandOmanPanamaPeruPolynesia thuộc PhápPapua New Guinea" +
- "PhilippinPakistanBa LanSaint Pierre và MiquelonQuần đảo PitcairnPuerto R" +
- "icoLãnh thổ PalestineBồ Đào NhaPalauParaguayQatarVùng xa xôi thuộc Châu " +
- "Đại DươngRéunionRomaniaSerbiaNgaRwandaẢ Rập Xê-útQuần đảo SolomonSeyche" +
- "llesSudanThụy ĐiểnSingaporeSt. HelenaSloveniaSvalbard và Jan MayenSlovak" +
- "iaSierra LeoneSan MarinoSenegalSomaliSurinameNam SudanSão Tomé và Prínci" +
- "peEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaQuần đảo Turk và " +
- "CaicosChadLãnh thổ miền nam nước PhápTogoThái LanTajikistanTokelauĐông T" +
- "imorTurkmenistanTunisiaTongaThổ Nhĩ KỳTrinidad và TobagoTuvaluĐài LoanTa" +
- "nzaniaUkrainaUgandaCác đảo nhỏ xa t.tâm thuộc MỹHoa KỳUruguayUzbekistanT" +
- "hành VaticanSt. Vincent và GrenadinesVenezuelaQuần đảo Virgin thuộc AnhQ" +
- "uần đảo Virgin thuộc MỹViệt NamVanuatuWallis và FutunaSamoaKosovoYemenMa" +
- "yotteNam PhiZambiaZimbabweVùng không xác địnhThế giớiChâu PhiBắc MỹNam M" +
- "ỹChâu Đại DươngTây PhiTrung MỹĐông PhiBắc PhiTrung PhiMiền Nam Châu Ph" +
- "iChâu MỹMiền Bắc Châu MỹCa-ri-bêĐông ÁNam ÁĐông Nam ÁNam ÂuÚc và New Zea" +
- "landMelanesiaVùng MicronesianPolynesiaChâu ÁTrung ÁTây ÁChâu ÂuĐông ÂuBắ" +
- "c ÂuTây ÂuChâu Mỹ La-tinh"
-
-var viRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0010, 0x0017, 0x003e, 0x0049, 0x005c, 0x0064, 0x006a,
- 0x0071, 0x0082, 0x0088, 0x0091, 0x009a, 0x00b3, 0x00b6, 0x00b9,
- 0x00be, 0x00d2, 0x00dc, 0x00f2, 0x00fa, 0x0104, 0x0108, 0x0114,
- 0x011b, 0x0122, 0x0129, 0x012e, 0x013d, 0x0144, 0x014a, 0x0151,
- 0x0162, 0x0168, 0x016f, 0x0175, 0x0182, 0x018a, 0x0191, 0x0197,
- 0x019d, 0x01ba, 0x01ca, 0x01df, 0x01f2, 0x01fc, 0x020c, 0x021e,
- 0x0223, 0x022b, 0x0237, 0x023f, 0x0250, 0x025a, 0x025e, 0x0268,
- 0x0270, 0x0282, 0x0286, 0x0296, 0x029c, 0x02a8, 0x02b0, 0x02bb,
- // Entry 40 - 7F
- 0x02c3, 0x02d7, 0x02de, 0x02ef, 0x02f6, 0x02fd, 0x0305, 0x0310,
- 0x0317, 0x0323, 0x032b, 0x033f, 0x0349, 0x034d, 0x0363, 0x036d,
- 0x0380, 0x0385, 0x038a, 0x039c, 0x03a3, 0x03aa, 0x03be, 0x03c6,
- 0x03cb, 0x03d4, 0x03dd, 0x03e3, 0x03e9, 0x03f3, 0x0406, 0x040e,
- 0x0438, 0x0441, 0x0445, 0x0452, 0x0458, 0x0472, 0x0492, 0x049a,
- 0x04a1, 0x04a6, 0x04ad, 0x04c1, 0x04ca, 0x04d0, 0x04d6, 0x04e0,
- 0x04ea, 0x0515, 0x051c, 0x0520, 0x0527, 0x0529, 0x052f, 0x0536,
- 0x053c, 0x0548, 0x054d, 0x0557, 0x0560, 0x0568, 0x056f, 0x0582,
- // Entry 80 - BF
- 0x058f, 0x059a, 0x05a2, 0x05b6, 0x05c0, 0x05c4, 0x05cc, 0x05d5,
- 0x05e2, 0x05eb, 0x05f2, 0x05f9, 0x0600, 0x060a, 0x0610, 0x0615,
- 0x061d, 0x0623, 0x062a, 0x0634, 0x063e, 0x0648, 0x065e, 0x0667,
- 0x066b, 0x0683, 0x068d, 0x06a0, 0x06bb, 0x06c5, 0x06cf, 0x06d9,
- 0x06de, 0x06e7, 0x06ef, 0x06f5, 0x06fb, 0x0703, 0x070d, 0x0714,
- 0x0721, 0x0726, 0x0734, 0x073b, 0x0744, 0x074b, 0x0750, 0x0755,
- 0x075a, 0x075e, 0x0769, 0x076d, 0x0773, 0x0777, 0x078e, 0x079e,
- 0x07a7, 0x07af, 0x07b5, 0x07ce, 0x07e4, 0x07ef, 0x0804, 0x0812,
- // Entry C0 - FF
- 0x0817, 0x081f, 0x0824, 0x084e, 0x0856, 0x085d, 0x0863, 0x0866,
- 0x086c, 0x087d, 0x0892, 0x089c, 0x08a1, 0x08af, 0x08b8, 0x08c2,
- 0x08ca, 0x08e0, 0x08e8, 0x08f4, 0x08fe, 0x0905, 0x090b, 0x0913,
- 0x091c, 0x0934, 0x093f, 0x094b, 0x0950, 0x0959, 0x0969, 0x0986,
- 0x098a, 0x09ae, 0x09b2, 0x09bb, 0x09c5, 0x09cc, 0x09d8, 0x09e4,
- 0x09eb, 0x09f0, 0x09ff, 0x0a12, 0x0a18, 0x0a22, 0x0a2a, 0x0a31,
- 0x0a37, 0x0a5f, 0x0a67, 0x0a6e, 0x0a78, 0x0a86, 0x0aa0, 0x0aa9,
- 0x0ac9, 0x0aea, 0x0af4, 0x0afb, 0x0b0c, 0x0b11, 0x0b17, 0x0b1c,
- // Entry 100 - 13F
- 0x0b23, 0x0b2a, 0x0b30, 0x0b38, 0x0b51, 0x0b5d, 0x0b66, 0x0b70,
- 0x0b78, 0x0b8c, 0x0b94, 0x0b9e, 0x0ba8, 0x0bb1, 0x0bba, 0x0bce,
- 0x0bd8, 0x0bef, 0x0bf8, 0x0c01, 0x0c07, 0x0c14, 0x0c1b, 0x0c2e,
- 0x0c37, 0x0c48, 0x0c51, 0x0c59, 0x0c61, 0x0c68, 0x0c71, 0x0c7b,
- 0x0c84, 0x0c8c, 0x0c9e,
-} // Size: 606 bytes
-
-var zhRegionStr string = "" + // Size: 3331 bytes
- "阿森松岛安道尔阿拉伯联合酋长国阿富汗安提瓜和巴布达安圭拉阿尔巴尼亚亚美尼亚荷属安的列斯群岛安哥拉南极洲阿根廷美属萨摩亚奥地利澳大利亚阿鲁巴奥兰群" +
- "岛阿塞拜疆波斯尼亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷兰加勒比区巴西巴哈马不丹布" +
- "维岛博茨瓦纳白俄罗斯伯利兹加拿大科科斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎" +
- "加古巴佛得角库拉索圣诞岛塞浦路斯捷克共和国德国迪戈加西亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈" +
- "拉厄立特里亚西班牙埃塞俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几" +
- "内亚瓜德罗普赤道几内亚希腊南乔治亚岛和南桑威齐群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙" +
- "利加纳利群岛印度尼西亚爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬埔寨基里巴斯科摩罗圣基茨" +
- "和尼维斯朝鲜韩国科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦黑山" +
- "法属圣马丁马达加斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西" +
- "哥马来西亚莫桑比克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲" +
- "律宾巴基斯坦波兰圣皮埃尔和密克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙" +
- "特阿拉伯所罗门群岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚斯瓦尔巴特和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比" +
- "萨尔瓦多荷属圣马丁叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土" +
- "耳其特立尼达和多巴哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿美国乌拉圭乌兹别克斯坦梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维京群岛美属维" +
- "京群岛越南瓦努阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲东非北非中非南部非洲美洲" +
- "美洲北部加勒比地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲"
-
-var zhRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063,
- 0x006f, 0x0087, 0x0090, 0x0099, 0x00a2, 0x00b1, 0x00ba, 0x00c6,
- 0x00cf, 0x00db, 0x00e7, 0x0105, 0x0111, 0x011d, 0x0126, 0x0135,
- 0x0141, 0x0147, 0x0150, 0x0156, 0x0165, 0x016e, 0x0174, 0x0180,
- 0x0192, 0x0198, 0x01a1, 0x01a7, 0x01b0, 0x01bc, 0x01c8, 0x01d1,
- 0x01da, 0x01f5, 0x0204, 0x0213, 0x0222, 0x0228, 0x0234, 0x0240,
- 0x0246, 0x024f, 0x0255, 0x0261, 0x0270, 0x027f, 0x0285, 0x028e,
- 0x0297, 0x02a0, 0x02ac, 0x02bb, 0x02c1, 0x02d3, 0x02dc, 0x02e2,
- // Entry 40 - 7F
- 0x02ee, 0x0303, 0x0312, 0x0327, 0x0333, 0x033f, 0x0345, 0x0351,
- 0x0360, 0x0369, 0x0378, 0x037e, 0x0384, 0x038a, 0x0399, 0x03ab,
- 0x03b7, 0x03bd, 0x03c3, 0x03c9, 0x03d5, 0x03e1, 0x03f0, 0x03f9,
- 0x03ff, 0x040b, 0x0414, 0x041d, 0x0426, 0x0432, 0x0441, 0x0447,
- 0x046b, 0x0477, 0x047d, 0x048c, 0x0495, 0x04b0, 0x04ce, 0x04da,
- 0x04e6, 0x04ec, 0x04f5, 0x0504, 0x0513, 0x051c, 0x0525, 0x052b,
- 0x0531, 0x0546, 0x054f, 0x0555, 0x055b, 0x0564, 0x056d, 0x0576,
- 0x057c, 0x0582, 0x058b, 0x059d, 0x05a6, 0x05b2, 0x05bb, 0x05d0,
- // Entry 80 - BF
- 0x05d6, 0x05dc, 0x05e5, 0x05f1, 0x0600, 0x0606, 0x060f, 0x061b,
- 0x062a, 0x0636, 0x0642, 0x064b, 0x0654, 0x065d, 0x0669, 0x0672,
- 0x067b, 0x0684, 0x0690, 0x0696, 0x06a5, 0x06b4, 0x06c3, 0x06cc,
- 0x06d2, 0x06d8, 0x06de, 0x06f9, 0x070e, 0x071a, 0x0729, 0x0738,
- 0x0741, 0x074d, 0x0759, 0x0762, 0x076b, 0x0777, 0x0783, 0x078f,
- 0x07a1, 0x07aa, 0x07b6, 0x07c2, 0x07ce, 0x07d4, 0x07da, 0x07e3,
- 0x07e9, 0x07ef, 0x07f8, 0x07fe, 0x0807, 0x080d, 0x0822, 0x0837,
- 0x0840, 0x084c, 0x0852, 0x0870, 0x0882, 0x088e, 0x08a0, 0x08a9,
- // Entry C0 - FF
- 0x08af, 0x08b8, 0x08c1, 0x08d6, 0x08df, 0x08eb, 0x08f7, 0x0900,
- 0x0909, 0x0918, 0x0927, 0x0930, 0x0936, 0x093c, 0x0945, 0x0951,
- 0x0960, 0x097b, 0x0987, 0x0993, 0x099f, 0x09ab, 0x09b4, 0x09bd,
- 0x09c6, 0x09de, 0x09ea, 0x09f9, 0x0a02, 0x0a0e, 0x0a2d, 0x0a48,
- 0x0a4e, 0x0a60, 0x0a66, 0x0a6c, 0x0a7b, 0x0a84, 0x0a8d, 0x0a9c,
- 0x0aa5, 0x0aab, 0x0ab4, 0x0acc, 0x0ad5, 0x0adb, 0x0ae7, 0x0af0,
- 0x0af9, 0x0b11, 0x0b17, 0x0b20, 0x0b32, 0x0b3b, 0x0b59, 0x0b65,
- 0x0b77, 0x0b89, 0x0b8f, 0x0b9b, 0x0bb0, 0x0bb9, 0x0bc2, 0x0bc8,
- // Entry 100 - 13F
- 0x0bd1, 0x0bd7, 0x0be0, 0x0bec, 0x0bf8, 0x0bfe, 0x0c04, 0x0c0d,
- 0x0c16, 0x0c1f, 0x0c25, 0x0c2e, 0x0c34, 0x0c3a, 0x0c40, 0x0c4c,
- 0x0c52, 0x0c5e, 0x0c6d, 0x0c73, 0x0c79, 0x0c82, 0x0c88, 0x0c97,
- 0x0ca6, 0x0cbe, 0x0ccd, 0x0cd3, 0x0cd9, 0x0cdf, 0x0ce5, 0x0ceb,
- 0x0cf1, 0x0cf7, 0x0d03,
-} // Size: 606 bytes
-
-var zhHantRegionStr string = "" + // Size: 3333 bytes
- "阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安圭拉阿爾巴尼亞亞美尼亞荷屬安地列斯安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞" +
- "塞拜然波士尼亞與赫塞哥維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那" +
- "白俄羅斯貝里斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓島哥" +
- "斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及" +
- "西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦納直布羅陀格陵" +
- "蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行政區赫德島和麥克唐納群島宏都拉" +
- "斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩" +
- "聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾" +
- "多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里" +
- "西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬" +
- "玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾和密克隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼" +
- "亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫勒拿島斯洛維尼亞冷岸及央麥恩群島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇" +
- "利南南蘇丹聖多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶" +
- "土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京" +
- "群島美屬維京群島越南萬那杜瓦利斯和富圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲" +
- "南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲"
-
-var zhHantRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063,
- 0x006f, 0x0081, 0x008a, 0x0093, 0x009c, 0x00ab, 0x00b4, 0x00ba,
- 0x00c9, 0x00d5, 0x00e1, 0x00ff, 0x0108, 0x0111, 0x011a, 0x0129,
- 0x0135, 0x013b, 0x0144, 0x014a, 0x0156, 0x015f, 0x0165, 0x0171,
- 0x0183, 0x0189, 0x0192, 0x0198, 0x01a1, 0x01aa, 0x01b6, 0x01bf,
- 0x01c8, 0x01e3, 0x01f8, 0x0207, 0x021c, 0x0222, 0x022e, 0x023a,
- 0x0240, 0x0249, 0x025e, 0x026a, 0x0279, 0x0288, 0x028e, 0x0297,
- 0x02a0, 0x02a9, 0x02b5, 0x02c4, 0x02ca, 0x02df, 0x02e8, 0x02ee,
- // Entry 40 - 7F
- 0x02fa, 0x030f, 0x031e, 0x0333, 0x033c, 0x0348, 0x034e, 0x035a,
- 0x0366, 0x036f, 0x037b, 0x0381, 0x0387, 0x038d, 0x039c, 0x03b4,
- 0x03c0, 0x03c6, 0x03cc, 0x03d2, 0x03de, 0x03f0, 0x03ff, 0x0408,
- 0x040e, 0x041a, 0x0423, 0x042c, 0x0435, 0x0441, 0x0450, 0x0456,
- 0x0477, 0x0483, 0x0489, 0x0498, 0x04a1, 0x04cb, 0x04e9, 0x04f5,
- 0x0504, 0x050a, 0x0513, 0x0522, 0x0528, 0x0531, 0x053a, 0x0540,
- 0x0546, 0x055b, 0x0564, 0x056a, 0x0570, 0x0579, 0x0582, 0x058b,
- 0x0591, 0x0597, 0x059d, 0x05a9, 0x05b2, 0x05be, 0x05c4, 0x05e2,
- // Entry 80 - BF
- 0x05e8, 0x05ee, 0x05f7, 0x0603, 0x060c, 0x0612, 0x061b, 0x0627,
- 0x0636, 0x0642, 0x064e, 0x0657, 0x0660, 0x0669, 0x0675, 0x067e,
- 0x0687, 0x0690, 0x069c, 0x06ab, 0x06ba, 0x06c9, 0x06d8, 0x06e1,
- 0x06e7, 0x06ed, 0x06f3, 0x071d, 0x0732, 0x0741, 0x0750, 0x0759,
- 0x0762, 0x076e, 0x077a, 0x0783, 0x078c, 0x0798, 0x07a4, 0x07b0,
- 0x07c2, 0x07c8, 0x07d4, 0x07e0, 0x07ec, 0x07f2, 0x07f8, 0x0801,
- 0x0807, 0x0810, 0x0819, 0x0825, 0x082e, 0x0834, 0x0849, 0x085e,
- 0x0867, 0x0873, 0x0879, 0x0897, 0x08a6, 0x08b2, 0x08c7, 0x08d0,
- // Entry C0 - FF
- 0x08d6, 0x08df, 0x08e5, 0x08fa, 0x0903, 0x090f, 0x091b, 0x0924,
- 0x092d, 0x093f, 0x094e, 0x0957, 0x095d, 0x0963, 0x096c, 0x097b,
- 0x098a, 0x09a2, 0x09ae, 0x09b7, 0x09c3, 0x09cf, 0x09db, 0x09e4,
- 0x09ed, 0x0a02, 0x0a0e, 0x0a1d, 0x0a26, 0x0a32, 0x0a50, 0x0a6b,
- 0x0a71, 0x0a83, 0x0a89, 0x0a8f, 0x0a98, 0x0aa7, 0x0ab0, 0x0ab9,
- 0x0ac5, 0x0acb, 0x0ad4, 0x0ae9, 0x0af2, 0x0af8, 0x0b04, 0x0b0d,
- 0x0b16, 0x0b2e, 0x0b34, 0x0b3d, 0x0b49, 0x0b52, 0x0b6a, 0x0b76,
- 0x0b88, 0x0b9a, 0x0ba0, 0x0ba9, 0x0bc4, 0x0bcd, 0x0bd6, 0x0bdc,
- // Entry 100 - 13F
- 0x0be5, 0x0beb, 0x0bf4, 0x0bfd, 0x0c09, 0x0c0f, 0x0c15, 0x0c1e,
- 0x0c27, 0x0c30, 0x0c36, 0x0c3c, 0x0c42, 0x0c48, 0x0c4e, 0x0c5a,
- 0x0c60, 0x0c66, 0x0c72, 0x0c78, 0x0c7e, 0x0c87, 0x0c8d, 0x0c9f,
- 0x0cae, 0x0cc0, 0x0ccf, 0x0cd5, 0x0cdb, 0x0ce1, 0x0ce7, 0x0ced,
- 0x0cf3, 0x0cf9, 0x0d05,
-} // Size: 606 bytes
-
-var zuRegionStr string = "" + // Size: 3578 bytes
- "i-Ascension Islandi-Andorrai-United Arab Emiratesi-Afghanistani-Antigua " +
- "and Barbudai-Anguillai-Albaniai-Armeniai-Netherlands Antillesi-Angolai-A" +
- "ntarcticai-Argentinai-American Samoai-Austriai-Australiai-Arubai-Åland I" +
- "slandsi-Azerbaijani-Bosnia ne-Herzegovinai-Barbadosi-Bangladeshi-Belgium" +
- "i-Burkina Fasoi-Bulgariai-Bahraini-Burundii-Benini-Saint Barthélemyi-Ber" +
- "mudai-Bruneii-Boliviai-Caribbean Netherlandsi-Brazili-Bahamasi-Bhutani-B" +
- "ouvet IslandiBotswanai-Belarusi-Belizei-Canadai-Cocos (Keeling) Islandsi" +
- "-Congo - Kinshasai-Central African Republici-Congo - Brazzavillei-Switze" +
- "rlandi-Côte d’Ivoirei-Cook Islandsi-Chilei-Camerooni-Chinai-Colombiai-Cl" +
- "ipperton Islandi-Costa Ricai-Cubai-Cape Verdei-Curaçaoi-Christmas Island" +
- "i-Cyprusi-Czech Republici-Germanyi-Diego Garciai-Djiboutii-Denmarki-Domi" +
- "nicai-Dominican Republici-Algeriai-Cueta ne-Melillai-Ecuadori-Estoniai-E" +
- "gypti-Western Saharai-Eritreai-Spaini-Ethiopiai-European Unioni-Finlandi" +
- "-Fijii-Falkland Islandsi-Micronesiai-Faroe Islandsi-Francei-Gaboni-Unite" +
- "d Kingdomi-Grenadai-Georgiai-French Guianai-Guernseyi-Ghanai-Gibraltari-" +
- "Greenlandi-Gambiai-Guineai-Guadeloupei-Equatorial Guineai-Greecei-South " +
- "Georgia ne-South Sandwich Islandsi-Guatemalai-Guami-Guinea-Bissaui-Guyan" +
- "ai-Hong Kong SAR Chinai-Heard Island ne-McDonald Islandsi-Hondurasi-Croa" +
- "tiai-Haitii-Hungaryi-Canary Islandsi-Indonesiai-Irelandkwa-Israeli-Isle " +
- "of Mani-Indiai-British Indian Ocean Territoryi-Iraqi-Irani-Icelandi-Ital" +
- "yi-Jerseyi-Jamaicai-Jordani-Japani-Kenyai-Kyrgyzstani-Cambodiai-Kiribati" +
- "i-Comorosi-Saint Kitts ne-Nevisi-North Koreai-South Koreai-Kuwaiti-Cayma" +
- "n Islandsi-Kazakhstani-Laosi-Lebanoni-Saint Luciai-Liechtensteini-Sri La" +
- "nkai-LiberiaiLesothoi-Lithuaniai-Luxembourgi-Latviai-Libyai-Moroccoi-Mon" +
- "acoi-Moldovai-Montenegroi-Saint Martini-Madagascari-Marshall Islandsi-Ma" +
- "cedoniaiMalii-Myanmar (Burma)i-Mongoliai-Macau SAR Chinai-Northern Maria" +
- "na Islandsi-Martiniquei-Mauritaniai-Montserrati-Maltai-Mauritiusi-Maldiv" +
- "esiMalawii-Mexicoi-Malaysiai-Mozambiquei-Namibiai-New Caledoniai-Nigeri-" +
- "Norfolk Islandi-Nigeriai-Nicaraguai-Netherlandsi-Norwayi-Nepali-Naurui-N" +
- "iuei-New Zealandi-Omani-Panamai-Perui-French Polynesiai-Papua New Guinea" +
- "i-Philippinesi-Pakistani-Polandi-Saint Pierre kanye ne-Miqueloni-Pitcair" +
- "n Islandsi-Puerto Ricoi-Palestinian Territoriesi-Portugali-Palaui-Paragu" +
- "ayi-Qatari-Outlying Oceaniai-Réunioni-Romaniai-Serbiai-Russiai-Rwandai-S" +
- "audi Arabiai-Solomon Islandsi-Seychellesi-Sudani-Swedeni-Singaporei-Sain" +
- "t Helenai-Sloveniai-Svalbard ne-Jan Mayeni-Slovakiai-Sierra Leonei-San M" +
- "arinoi-Senegali-Somaliai-Surinamei-South Sudani-São Tomé kanye ne-Prínci" +
- "pei-El Salvadori-Sint Maarteni-Syriai-Swazilandi-Tristan da Cunhai-Turks" +
- " and Caicos Islandsi-Chadi-French Southern Territoriesi-Togoi-Thailandi-" +
- "Tajikistani-Tokelaui-Timor-Lestei-Turkmenistani-Tunisiai-Tongai-Turkeyi-" +
- "Trinidad ne-Tobagoi-Tuvalui-Taiwani-Tanzaniai-Ukrainei-Ugandai-U.S. Mino" +
- "r Outlying Islandsi-United Statesi-Uruguayi-Uzbekistani-Vatican Cityi-Sa" +
- "int Vincent ne-Grenadinesi-Venezuelai-British Virgin Islandsi-U.S. Virgi" +
- "n Islandsi-Vietnami-Vanuatui-Wallis ne-Futunai-Samoai-Kosovoi-Yemeni-May" +
- "ottei-South Africai-ZambiaiZimbabweiSifunda esingaziwaumhlabai-Africai-N" +
- "orth Americai-South Americai-Oceaniai-Western Africai-Central Americai-E" +
- "astern Africai-Northern Africai-Middle Africai-Southern Africai-Americas" +
- "i-Northern Americai-Caribbeani-Eastern Asiai-Southern Asiai-South-Easter" +
- "n Asiai-Southern Europei-Australasiai-Melanesiai-Micronesian Regioni-Pol" +
- "ynesiai-Asiai-Central Asiai-Western Asiai-Europei-Eastern Europei-Northe" +
- "rn Europei-Western Europei-Latin America"
-
-var zuRegionIdx = []uint16{ // 291 elements
- // Entry 0 - 3F
- 0x0000, 0x0012, 0x001b, 0x0031, 0x003e, 0x0053, 0x005d, 0x0066,
- 0x006f, 0x0085, 0x008d, 0x0099, 0x00a4, 0x00b4, 0x00bd, 0x00c8,
- 0x00cf, 0x00df, 0x00eb, 0x0102, 0x010c, 0x0118, 0x0121, 0x012f,
- 0x0139, 0x0142, 0x014b, 0x0152, 0x0165, 0x016e, 0x0176, 0x017f,
- 0x0196, 0x019e, 0x01a7, 0x01af, 0x01be, 0x01c7, 0x01d0, 0x01d8,
- 0x01e0, 0x01f9, 0x020b, 0x0225, 0x023a, 0x0247, 0x0259, 0x0267,
- 0x026e, 0x0278, 0x027f, 0x0289, 0x029c, 0x02a8, 0x02ae, 0x02ba,
- 0x02c4, 0x02d6, 0x02de, 0x02ee, 0x02f7, 0x0305, 0x030f, 0x0318,
- // Entry 40 - 7F
- 0x0322, 0x0336, 0x033f, 0x0351, 0x035a, 0x0363, 0x036a, 0x037a,
- 0x0383, 0x038a, 0x0394, 0x03a4, 0x03ad, 0x03b3, 0x03c5, 0x03d1,
- 0x03e0, 0x03e8, 0x03ef, 0x03ff, 0x0408, 0x0411, 0x0420, 0x042a,
- 0x0431, 0x043c, 0x0447, 0x044f, 0x0457, 0x0463, 0x0476, 0x047e,
- 0x04a7, 0x04b2, 0x04b8, 0x04c7, 0x04cf, 0x04e4, 0x0506, 0x0510,
- 0x0519, 0x0520, 0x0529, 0x0539, 0x0544, 0x054d, 0x0557, 0x0564,
- 0x056b, 0x058b, 0x0591, 0x0597, 0x05a0, 0x05a7, 0x05af, 0x05b8,
- 0x05c0, 0x05c7, 0x05ce, 0x05da, 0x05e4, 0x05ee, 0x05f7, 0x060d,
- // Entry 80 - BF
- 0x061a, 0x0627, 0x062f, 0x063f, 0x064b, 0x0651, 0x065a, 0x0667,
- 0x0676, 0x0681, 0x068a, 0x0692, 0x069d, 0x06a9, 0x06b1, 0x06b8,
- 0x06c1, 0x06c9, 0x06d2, 0x06de, 0x06ec, 0x06f8, 0x070a, 0x0715,
- 0x071a, 0x072b, 0x0735, 0x0746, 0x0760, 0x076c, 0x0778, 0x0784,
- 0x078b, 0x0796, 0x07a0, 0x07a7, 0x07af, 0x07b9, 0x07c5, 0x07ce,
- 0x07dd, 0x07e4, 0x07f4, 0x07fd, 0x0808, 0x0815, 0x081d, 0x0824,
- 0x082b, 0x0831, 0x083e, 0x0844, 0x084c, 0x0852, 0x0864, 0x0876,
- 0x0883, 0x088d, 0x0895, 0x08b5, 0x08c7, 0x08d4, 0x08ed, 0x08f7,
- // Entry C0 - FF
- 0x08fe, 0x0908, 0x090f, 0x0921, 0x092b, 0x0934, 0x093c, 0x0944,
- 0x094c, 0x095a, 0x096b, 0x0977, 0x097e, 0x0986, 0x0991, 0x099f,
- 0x09a9, 0x09c0, 0x09ca, 0x09d8, 0x09e4, 0x09ed, 0x09f6, 0x0a00,
- 0x0a0d, 0x0a2c, 0x0a39, 0x0a47, 0x0a4e, 0x0a59, 0x0a6b, 0x0a85,
- 0x0a8b, 0x0aa8, 0x0aae, 0x0ab8, 0x0ac4, 0x0acd, 0x0ada, 0x0ae8,
- 0x0af1, 0x0af8, 0x0b00, 0x0b14, 0x0b1c, 0x0b24, 0x0b2e, 0x0b37,
- 0x0b3f, 0x0b5c, 0x0b6b, 0x0b74, 0x0b80, 0x0b8e, 0x0bab, 0x0bb6,
- 0x0bce, 0x0be3, 0x0bec, 0x0bf5, 0x0c07, 0x0c0e, 0x0c16, 0x0c1d,
- // Entry 100 - 13F
- 0x0c26, 0x0c34, 0x0c3c, 0x0c45, 0x0c58, 0x0c5f, 0x0c67, 0x0c76,
- 0x0c85, 0x0c8e, 0x0c9e, 0x0caf, 0x0cbf, 0x0cd0, 0x0cdf, 0x0cf0,
- 0x0cfa, 0x0d0c, 0x0d17, 0x0d25, 0x0d34, 0x0d48, 0x0d59, 0x0d66,
- 0x0d71, 0x0d85, 0x0d90, 0x0d96, 0x0da4, 0x0db2, 0x0dba, 0x0dca,
- 0x0ddb, 0x0deb, 0x0dfa,
-} // Size: 606 bytes
-
-// Total size for region: 808214 bytes (808 KB)
-
-const numSupported = 218
-
-var supported string = "" + // Size: 833 bytes
- "af|agq|ak|am|ar|ar-EG|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|bg|bm|bn|bo|b" +
- "o-IN|br|brx|bs|bs-Cyrl|ca|ce|cgg|chr|ckb|cs|cy|da|dav|de|de-CH|dje|dsb|d" +
- "ua|dyo|dz|ebu|ee|el|en|en-AU|en-GB|eo|es|es-419|es-CL|es-MX|et|eu|ewo|fa" +
- "|fa-AF|ff|fi|fil|fo|fr|fr-CA|fr-CH|fur|fy|ga|gd|gl|gsw|gu|guz|gv|ha|haw|" +
- "he|hi|hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|kde|kea|khq|ki|k" +
- "k|kkj|kl|kln|km|kn|ko|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg|lkt|ln|lo|lrc|l" +
- "t|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt|mua|my|mzn|naq|" +
- "nd|ne|nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|prg|ps|pt|pt-PT|qu" +
- "|rm|rn|ro|rof|ru|rw|rwk|sah|saq|sbp|se|se-FI|seh|ses|sg|shi|shi-Latn|si|" +
- "sk|sl|smn|sn|so|sq|sr|sr-Latn|sv|sv-FI|sw|sw-CD|ta|te|teo|th|ti|to|tr|tw" +
- "q|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|wae|xog|yav|" +
- "yi|yo|yo-BJ|zgh|zh|zh-Hant|zh-Hant-HK|zu|"
-
-// Dictionary entries of frequent languages
-var (
- af = Dictionary{ // af
- nil,
- header{afLangStr, afLangIdx},
- header{afScriptStr, afScriptIdx},
- header{afRegionStr, afRegionIdx},
- }
- am = Dictionary{ // am
- nil,
- header{amLangStr, amLangIdx},
- header{amScriptStr, amScriptIdx},
- header{amRegionStr, amRegionIdx},
- }
- ar = Dictionary{ // ar
- nil,
- header{arLangStr, arLangIdx},
- header{arScriptStr, arScriptIdx},
- header{arRegionStr, arRegionIdx},
- }
- az = Dictionary{ // az
- nil,
- header{azLangStr, azLangIdx},
- header{azScriptStr, azScriptIdx},
- header{azRegionStr, azRegionIdx},
- }
- bg = Dictionary{ // bg
- nil,
- header{bgLangStr, bgLangIdx},
- header{bgScriptStr, bgScriptIdx},
- header{bgRegionStr, bgRegionIdx},
- }
- bn = Dictionary{ // bn
- nil,
- header{bnLangStr, bnLangIdx},
- header{bnScriptStr, bnScriptIdx},
- header{bnRegionStr, bnRegionIdx},
- }
- ca = Dictionary{ // ca
- nil,
- header{caLangStr, caLangIdx},
- header{caScriptStr, caScriptIdx},
- header{caRegionStr, caRegionIdx},
- }
- cs = Dictionary{ // cs
- nil,
- header{csLangStr, csLangIdx},
- header{csScriptStr, csScriptIdx},
- header{csRegionStr, csRegionIdx},
- }
- da = Dictionary{ // da
- nil,
- header{daLangStr, daLangIdx},
- header{daScriptStr, daScriptIdx},
- header{daRegionStr, daRegionIdx},
- }
- de = Dictionary{ // de
- nil,
- header{deLangStr, deLangIdx},
- header{deScriptStr, deScriptIdx},
- header{deRegionStr, deRegionIdx},
- }
- el = Dictionary{ // el
- nil,
- header{elLangStr, elLangIdx},
- header{elScriptStr, elScriptIdx},
- header{elRegionStr, elRegionIdx},
- }
- en = Dictionary{ // en
- nil,
- header{enLangStr, enLangIdx},
- header{enScriptStr, enScriptIdx},
- header{enRegionStr, enRegionIdx},
- }
- enGB = Dictionary{ // en-GB
- &en,
- header{enGBLangStr, enGBLangIdx},
- header{enGBScriptStr, enGBScriptIdx},
- header{enGBRegionStr, enGBRegionIdx},
- }
- es = Dictionary{ // es
- nil,
- header{esLangStr, esLangIdx},
- header{esScriptStr, esScriptIdx},
- header{esRegionStr, esRegionIdx},
- }
- es419 = Dictionary{ // es-419
- &es,
- header{es419LangStr, es419LangIdx},
- header{es419ScriptStr, es419ScriptIdx},
- header{es419RegionStr, es419RegionIdx},
- }
- et = Dictionary{ // et
- nil,
- header{etLangStr, etLangIdx},
- header{etScriptStr, etScriptIdx},
- header{etRegionStr, etRegionIdx},
- }
- fa = Dictionary{ // fa
- nil,
- header{faLangStr, faLangIdx},
- header{faScriptStr, faScriptIdx},
- header{faRegionStr, faRegionIdx},
- }
- fi = Dictionary{ // fi
- nil,
- header{fiLangStr, fiLangIdx},
- header{fiScriptStr, fiScriptIdx},
- header{fiRegionStr, fiRegionIdx},
- }
- fil = Dictionary{ // fil
- nil,
- header{filLangStr, filLangIdx},
- header{filScriptStr, filScriptIdx},
- header{filRegionStr, filRegionIdx},
- }
- fr = Dictionary{ // fr
- nil,
- header{frLangStr, frLangIdx},
- header{frScriptStr, frScriptIdx},
- header{frRegionStr, frRegionIdx},
- }
- frCA = Dictionary{ // fr-CA
- &fr,
- header{frCALangStr, frCALangIdx},
- header{frCAScriptStr, frCAScriptIdx},
- header{frCARegionStr, frCARegionIdx},
- }
- gu = Dictionary{ // gu
- nil,
- header{guLangStr, guLangIdx},
- header{guScriptStr, guScriptIdx},
- header{guRegionStr, guRegionIdx},
- }
- he = Dictionary{ // he
- nil,
- header{heLangStr, heLangIdx},
- header{heScriptStr, heScriptIdx},
- header{heRegionStr, heRegionIdx},
- }
- hi = Dictionary{ // hi
- nil,
- header{hiLangStr, hiLangIdx},
- header{hiScriptStr, hiScriptIdx},
- header{hiRegionStr, hiRegionIdx},
- }
- hr = Dictionary{ // hr
- nil,
- header{hrLangStr, hrLangIdx},
- header{hrScriptStr, hrScriptIdx},
- header{hrRegionStr, hrRegionIdx},
- }
- hu = Dictionary{ // hu
- nil,
- header{huLangStr, huLangIdx},
- header{huScriptStr, huScriptIdx},
- header{huRegionStr, huRegionIdx},
- }
- hy = Dictionary{ // hy
- nil,
- header{hyLangStr, hyLangIdx},
- header{hyScriptStr, hyScriptIdx},
- header{hyRegionStr, hyRegionIdx},
- }
- id = Dictionary{ // id
- nil,
- header{idLangStr, idLangIdx},
- header{idScriptStr, idScriptIdx},
- header{idRegionStr, idRegionIdx},
- }
- is = Dictionary{ // is
- nil,
- header{isLangStr, isLangIdx},
- header{isScriptStr, isScriptIdx},
- header{isRegionStr, isRegionIdx},
- }
- it = Dictionary{ // it
- nil,
- header{itLangStr, itLangIdx},
- header{itScriptStr, itScriptIdx},
- header{itRegionStr, itRegionIdx},
- }
- ja = Dictionary{ // ja
- nil,
- header{jaLangStr, jaLangIdx},
- header{jaScriptStr, jaScriptIdx},
- header{jaRegionStr, jaRegionIdx},
- }
- ka = Dictionary{ // ka
- nil,
- header{kaLangStr, kaLangIdx},
- header{kaScriptStr, kaScriptIdx},
- header{kaRegionStr, kaRegionIdx},
- }
- kk = Dictionary{ // kk
- nil,
- header{kkLangStr, kkLangIdx},
- header{kkScriptStr, kkScriptIdx},
- header{kkRegionStr, kkRegionIdx},
- }
- km = Dictionary{ // km
- nil,
- header{kmLangStr, kmLangIdx},
- header{kmScriptStr, kmScriptIdx},
- header{kmRegionStr, kmRegionIdx},
- }
- kn = Dictionary{ // kn
- nil,
- header{knLangStr, knLangIdx},
- header{knScriptStr, knScriptIdx},
- header{knRegionStr, knRegionIdx},
- }
- ko = Dictionary{ // ko
- nil,
- header{koLangStr, koLangIdx},
- header{koScriptStr, koScriptIdx},
- header{koRegionStr, koRegionIdx},
- }
- ky = Dictionary{ // ky
- nil,
- header{kyLangStr, kyLangIdx},
- header{kyScriptStr, kyScriptIdx},
- header{kyRegionStr, kyRegionIdx},
- }
- lo = Dictionary{ // lo
- nil,
- header{loLangStr, loLangIdx},
- header{loScriptStr, loScriptIdx},
- header{loRegionStr, loRegionIdx},
- }
- lt = Dictionary{ // lt
- nil,
- header{ltLangStr, ltLangIdx},
- header{ltScriptStr, ltScriptIdx},
- header{ltRegionStr, ltRegionIdx},
- }
- lv = Dictionary{ // lv
- nil,
- header{lvLangStr, lvLangIdx},
- header{lvScriptStr, lvScriptIdx},
- header{lvRegionStr, lvRegionIdx},
- }
- mk = Dictionary{ // mk
- nil,
- header{mkLangStr, mkLangIdx},
- header{mkScriptStr, mkScriptIdx},
- header{mkRegionStr, mkRegionIdx},
- }
- ml = Dictionary{ // ml
- nil,
- header{mlLangStr, mlLangIdx},
- header{mlScriptStr, mlScriptIdx},
- header{mlRegionStr, mlRegionIdx},
- }
- mn = Dictionary{ // mn
- nil,
- header{mnLangStr, mnLangIdx},
- header{mnScriptStr, mnScriptIdx},
- header{mnRegionStr, mnRegionIdx},
- }
- mr = Dictionary{ // mr
- nil,
- header{mrLangStr, mrLangIdx},
- header{mrScriptStr, mrScriptIdx},
- header{mrRegionStr, mrRegionIdx},
- }
- ms = Dictionary{ // ms
- nil,
- header{msLangStr, msLangIdx},
- header{msScriptStr, msScriptIdx},
- header{msRegionStr, msRegionIdx},
- }
- my = Dictionary{ // my
- nil,
- header{myLangStr, myLangIdx},
- header{myScriptStr, myScriptIdx},
- header{myRegionStr, myRegionIdx},
- }
- ne = Dictionary{ // ne
- nil,
- header{neLangStr, neLangIdx},
- header{neScriptStr, neScriptIdx},
- header{neRegionStr, neRegionIdx},
- }
- nl = Dictionary{ // nl
- nil,
- header{nlLangStr, nlLangIdx},
- header{nlScriptStr, nlScriptIdx},
- header{nlRegionStr, nlRegionIdx},
- }
- no = Dictionary{ // no
- nil,
- header{noLangStr, noLangIdx},
- header{noScriptStr, noScriptIdx},
- header{noRegionStr, noRegionIdx},
- }
- pa = Dictionary{ // pa
- nil,
- header{paLangStr, paLangIdx},
- header{paScriptStr, paScriptIdx},
- header{paRegionStr, paRegionIdx},
- }
- pl = Dictionary{ // pl
- nil,
- header{plLangStr, plLangIdx},
- header{plScriptStr, plScriptIdx},
- header{plRegionStr, plRegionIdx},
- }
- pt = Dictionary{ // pt
- nil,
- header{ptLangStr, ptLangIdx},
- header{ptScriptStr, ptScriptIdx},
- header{ptRegionStr, ptRegionIdx},
- }
- ptPT = Dictionary{ // pt-PT
- &pt,
- header{ptPTLangStr, ptPTLangIdx},
- header{ptPTScriptStr, ptPTScriptIdx},
- header{ptPTRegionStr, ptPTRegionIdx},
- }
- ro = Dictionary{ // ro
- nil,
- header{roLangStr, roLangIdx},
- header{roScriptStr, roScriptIdx},
- header{roRegionStr, roRegionIdx},
- }
- ru = Dictionary{ // ru
- nil,
- header{ruLangStr, ruLangIdx},
- header{ruScriptStr, ruScriptIdx},
- header{ruRegionStr, ruRegionIdx},
- }
- si = Dictionary{ // si
- nil,
- header{siLangStr, siLangIdx},
- header{siScriptStr, siScriptIdx},
- header{siRegionStr, siRegionIdx},
- }
- sk = Dictionary{ // sk
- nil,
- header{skLangStr, skLangIdx},
- header{skScriptStr, skScriptIdx},
- header{skRegionStr, skRegionIdx},
- }
- sl = Dictionary{ // sl
- nil,
- header{slLangStr, slLangIdx},
- header{slScriptStr, slScriptIdx},
- header{slRegionStr, slRegionIdx},
- }
- sq = Dictionary{ // sq
- nil,
- header{sqLangStr, sqLangIdx},
- header{sqScriptStr, sqScriptIdx},
- header{sqRegionStr, sqRegionIdx},
- }
- sr = Dictionary{ // sr
- nil,
- header{srLangStr, srLangIdx},
- header{srScriptStr, srScriptIdx},
- header{srRegionStr, srRegionIdx},
- }
- srLatn = Dictionary{ // sr-Latn
- nil,
- header{srLatnLangStr, srLatnLangIdx},
- header{srLatnScriptStr, srLatnScriptIdx},
- header{srLatnRegionStr, srLatnRegionIdx},
- }
- sv = Dictionary{ // sv
- nil,
- header{svLangStr, svLangIdx},
- header{svScriptStr, svScriptIdx},
- header{svRegionStr, svRegionIdx},
- }
- sw = Dictionary{ // sw
- nil,
- header{swLangStr, swLangIdx},
- header{swScriptStr, swScriptIdx},
- header{swRegionStr, swRegionIdx},
- }
- ta = Dictionary{ // ta
- nil,
- header{taLangStr, taLangIdx},
- header{taScriptStr, taScriptIdx},
- header{taRegionStr, taRegionIdx},
- }
- te = Dictionary{ // te
- nil,
- header{teLangStr, teLangIdx},
- header{teScriptStr, teScriptIdx},
- header{teRegionStr, teRegionIdx},
- }
- th = Dictionary{ // th
- nil,
- header{thLangStr, thLangIdx},
- header{thScriptStr, thScriptIdx},
- header{thRegionStr, thRegionIdx},
- }
- tr = Dictionary{ // tr
- nil,
- header{trLangStr, trLangIdx},
- header{trScriptStr, trScriptIdx},
- header{trRegionStr, trRegionIdx},
- }
- uk = Dictionary{ // uk
- nil,
- header{ukLangStr, ukLangIdx},
- header{ukScriptStr, ukScriptIdx},
- header{ukRegionStr, ukRegionIdx},
- }
- ur = Dictionary{ // ur
- nil,
- header{urLangStr, urLangIdx},
- header{urScriptStr, urScriptIdx},
- header{urRegionStr, urRegionIdx},
- }
- uz = Dictionary{ // uz
- nil,
- header{uzLangStr, uzLangIdx},
- header{uzScriptStr, uzScriptIdx},
- header{uzRegionStr, uzRegionIdx},
- }
- vi = Dictionary{ // vi
- nil,
- header{viLangStr, viLangIdx},
- header{viScriptStr, viScriptIdx},
- header{viRegionStr, viRegionIdx},
- }
- zh = Dictionary{ // zh
- nil,
- header{zhLangStr, zhLangIdx},
- header{zhScriptStr, zhScriptIdx},
- header{zhRegionStr, zhRegionIdx},
- }
- zhHant = Dictionary{ // zh-Hant
- nil,
- header{zhHantLangStr, zhHantLangIdx},
- header{zhHantScriptStr, zhHantScriptIdx},
- header{zhHantRegionStr, zhHantRegionIdx},
- }
- zu = Dictionary{ // zu
- nil,
- header{zuLangStr, zuLangIdx},
- header{zuScriptStr, zuScriptIdx},
- header{zuRegionStr, zuRegionIdx},
- }
-)
-
-// Total size for 79 entries: 10112 bytes (10 KB)
-
-// Number of keys: 217
-var (
- selfIndex = tagIndex{
- "afakamarasazbebgbmbnbobrbscacecscydadedzeeeleneoeseteufafffifofrfygagdgl" +
- "gugvhahehihrhuhyidigiiisitjakakikkklkmknkokskwkylblglnloltlulvmgmkml" +
- "mnmrmsmtmyndnenlnnnoomorospaplpsptqurmrnrorurwsesgsiskslsnsosqsrsvsw" +
- "tatethtitotrugukuruzviyiyozhzu",
- "agqasaastbasbembezbrxcggchrckbdavdjedsbduadyoebuewofilfurgswguzhawhsbjgo" +
- "jmckabkamkdekeakhqkkjklnkokksbksfkshlaglktlrcluoluymasmermfemghmgomu" +
- "amznnaqnnhnusnynprgrofrwksahsaqsbpsehsesshismnteotwqtzmvaivunwaexogy" +
- "avzgh",
- "",
- }
- selfTagsLong = []string{ // 27 elements
- "ar-001",
- "az-Cyrl",
- "bs-Cyrl",
- "de-AT",
- "de-CH",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-US",
- "es-419",
- "es-ES",
- "es-MX",
- "fa-AF",
- "fr-CA",
- "fr-CH",
- "nl-BE",
- "pa-Arab",
- "pt-BR",
- "pt-PT",
- "ro-MD",
- "shi-Latn",
- "sr-Latn",
- "uz-Arab",
- "uz-Cyrl",
- "vai-Latn",
- "zh-Hans",
- "zh-Hant",
- }
-)
-
-var selfHeaders = [1]header{
- { // mul
- "AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycan diliбеларускаябългарскиbamanak" +
- "anবাংলাབོད་སྐད་brezhonegbosanskicatalàнохчийнčeštinaCymraegdanskDeut" +
- "schརྫོང་ཁEʋegbeΕλληνικάEnglishesperantoespañoleestieuskaraفارسیPulaa" +
- "rsuomiføroysktfrançaisWest-FryskGaeilgeGàidhliggalegoગુજરાતીGaelgHau" +
- "saעבריתहिन्दीhrvatskimagyarհայերենIndonesiaIgboꆈꌠꉙíslenskaitaliano日本" +
- "語ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekкыргы" +
- "зчаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyм" +
- "акедонскиമലയാളംмонголमराठीBahasa MelayuMaltiဗမာisiNdebeleनेपालीNede" +
- "rlandsnynorsknorsk bokmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRun" +
- "asimirumantschIkirundiromânăрусскийKinyarwandadavvisámegiellaSängöසි" +
- "ංහලslovenčinaslovenščinachiShonaSoomaalishqipсрпскиsvenskaKiswahil" +
- "iதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаاردوo‘zbekTi" +
- "ếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibemb" +
- "aHibenaबड़ोRukigaᏣᎳᎩکوردیی ناوەندیKitaitaZarmaciinedolnoserbšćinaduá" +
- "lájoolaKĩembuewondoFilipinofurlanSchwiizertüütschEkegusiiʻŌlelo Hawa" +
- "iʻihornjoserbšćinaNdaꞌaKimachameTaqbaylitKikambaChimakondekabuverdia" +
- "nuKoyra ciinikakɔKalenjinकोंकणीKishambaarikpaKölschKɨlaangiLakȟólʼiy" +
- "apiلۊری شومالیDholuoLuluhiaMaaKĩmĩrũkreol morisienMakuametaʼMUNDAŊما" +
- "زرونیKhoekhoegowabShwóŋò ngiembɔɔnThok NathRunyankoreprūsiskanKihor" +
- "omboKiruwaсаха тылаKisampurIshisangusenaKoyraboro senniⵜⴰⵛⵍⵃⵉⵜanarâš" +
- "kielâKitesoTasawaq senniTamaziɣt n laṭlaṣꕙꔤKyivunjoWalserOlusoganuas" +
- "ueⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةазәрбајҹан дилибосанскиÖsterreichis" +
- "ches DeutschSchweizer HochdeutschAustralian EnglishCanadian EnglishB" +
- "ritish EnglishAmerican Englishespañol latinoamericanoespañol de Espa" +
- "ñaespañol de Méxicoدریfrançais canadienfrançais suisseVlaamsپنجابیp" +
- "ortuguês do Brasilportuguês europeumoldoveneascăTashelḥiytSrpskohrva" +
- "tskiاوزبیکЎзбекVai简体中文繁體中文",
- []uint16{ // 218 elements
- // Entry 0 - 3F
- 0x0000, 0x0009, 0x000d, 0x0019, 0x0027, 0x003c, 0x004c, 0x0060,
- 0x0072, 0x007b, 0x008a, 0x00a2, 0x00ab, 0x00b3, 0x00ba, 0x00c8,
- 0x00d1, 0x00d8, 0x00dd, 0x00e4, 0x00f6, 0x00fd, 0x010d, 0x0114,
- 0x011d, 0x0125, 0x012a, 0x0131, 0x013b, 0x0141, 0x0146, 0x014f,
- 0x0158, 0x0162, 0x0169, 0x0172, 0x0178, 0x018d, 0x0192, 0x0197,
- 0x01a1, 0x01b3, 0x01bb, 0x01c1, 0x01cf, 0x01d8, 0x01dc, 0x01e5,
- 0x01ee, 0x01f6, 0x01ff, 0x0214, 0x021a, 0x022d, 0x0238, 0x0247,
- 0x0256, 0x025f, 0x0269, 0x0271, 0x0281, 0x0290, 0x0297, 0x029f,
- // Entry 40 - 7F
- 0x02a8, 0x02b1, 0x02b9, 0x02c2, 0x02ca, 0x02de, 0x02f0, 0x02fc,
- 0x030b, 0x0318, 0x031d, 0x0326, 0x0330, 0x0342, 0x034c, 0x0353,
- 0x0360, 0x0366, 0x0375, 0x037d, 0x038f, 0x0395, 0x039d, 0x03a7,
- 0x03af, 0x03b8, 0x03c0, 0x03c8, 0x03d6, 0x03e1, 0x03f1, 0x03f8,
- 0x0407, 0x0412, 0x041f, 0x0427, 0x042f, 0x0434, 0x0440, 0x0447,
- 0x0450, 0x045f, 0x0471, 0x047a, 0x0486, 0x0493, 0x049b, 0x04ab,
- 0x04bf, 0x04c7, 0x04cf, 0x04dd, 0x04e9, 0x04f7, 0x04fd, 0x0504,
- 0x0509, 0x050f, 0x0518, 0x0520, 0x0529, 0x052f, 0x053b, 0x0541,
- // Entry 80 - BF
- 0x054a, 0x0565, 0x056c, 0x0576, 0x0586, 0x058d, 0x0592, 0x0599,
- 0x059f, 0x05a7, 0x05ad, 0x05bf, 0x05c7, 0x05d8, 0x05e9, 0x05f0,
- 0x05f9, 0x0602, 0x0609, 0x0613, 0x061f, 0x062a, 0x062f, 0x0637,
- 0x0649, 0x0652, 0x0657, 0x065e, 0x0667, 0x0676, 0x068b, 0x0691,
- 0x0698, 0x069b, 0x06a4, 0x06b2, 0x06b7, 0x06bd, 0x06c4, 0x06d2,
- 0x06df, 0x06f4, 0x06fd, 0x0707, 0x0711, 0x071a, 0x0720, 0x0731,
- 0x0739, 0x0742, 0x0746, 0x0755, 0x076a, 0x0778, 0x077e, 0x078b,
- 0x07a1, 0x07a7, 0x07af, 0x07b5, 0x07bc, 0x07c2, 0x07da, 0x0806,
- // Entry C0 - FF
- 0x0823, 0x0833, 0x084c, 0x0861, 0x0873, 0x0883, 0x0892, 0x08a2,
- 0x08ba, 0x08cd, 0x08e0, 0x08e6, 0x08f8, 0x0908, 0x090e, 0x091a,
- 0x092e, 0x0940, 0x094e, 0x095a, 0x0968, 0x0974, 0x097e, 0x0981,
- 0x098d, 0x0999,
- },
- },
-}
-
-// Total size for self: 4071 bytes (4 KB)
-
-// Total table size 1949845 bytes (1904KiB); checksum: 2C9D44F
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/index.go b/Godeps/_workspace/src/golang.org/x/text/language/index.go
index c640f1e14..7fa9cc82d 100644
--- a/Godeps/_workspace/src/golang.org/x/text/language/index.go
+++ b/Godeps/_workspace/src/golang.org/x/text/language/index.go
@@ -4,11 +4,11 @@ package language
// NumCompactTags is the number of common tags. The maximum tag is
// NumCompactTags-1.
-const NumCompactTags = 742
+const NumCompactTags = 747
var specialTags = []Tag{ // 2 elements
0: {lang: 0x61, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"},
- 1: {lang: 0x9a, region: 0x132, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"},
+ 1: {lang: 0x9b, region: 0x132, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"},
} // Size: 72 bytes
var coreTags = map[uint32]uint16{
@@ -58,10 +58,10 @@ var coreTags = map[uint32]uint16{
0x01f00000: 45, // ast
0x01f0006d: 46, // ast-ES
0x02400000: 47, // az
- 0x0241d000: 48, // az-Cyrl
- 0x0241d031: 49, // az-Cyrl-AZ
- 0x0244f000: 50, // az-Latn
- 0x0244f031: 51, // az-Latn-AZ
+ 0x0241e000: 48, // az-Cyrl
+ 0x0241e031: 49, // az-Cyrl-AZ
+ 0x02452000: 50, // az-Latn
+ 0x02452031: 51, // az-Latn-AZ
0x02a00000: 52, // bas
0x02a00051: 53, // bas-CM
0x02f00000: 54, // be
@@ -86,10 +86,10 @@ var coreTags = map[uint32]uint16{
0x05300000: 73, // brx
0x05300097: 74, // brx-IN
0x05400000: 75, // bs
- 0x0541d000: 76, // bs-Cyrl
- 0x0541d032: 77, // bs-Cyrl-BA
- 0x0544f000: 78, // bs-Latn
- 0x0544f032: 79, // bs-Latn-BA
+ 0x0541e000: 76, // bs-Cyrl
+ 0x0541e032: 77, // bs-Cyrl-BA
+ 0x05452000: 78, // bs-Latn
+ 0x05452032: 79, // bs-Latn-BA
0x06100000: 80, // ca
0x06100021: 81, // ca-AD
0x0610006d: 82, // ca-ES
@@ -126,632 +126,637 @@ var coreTags = map[uint32]uint16{
0x088000d2: 113, // dje-NE
0x08b00000: 114, // dsb
0x08b0005f: 115, // dsb-DE
- 0x08e00000: 116, // dua
- 0x08e00051: 117, // dua-CM
- 0x08f00000: 118, // dv
- 0x09000000: 119, // dyo
- 0x09000112: 120, // dyo-SN
- 0x09200000: 121, // dz
- 0x09200042: 122, // dz-BT
- 0x09300000: 123, // ebu
- 0x093000a2: 124, // ebu-KE
- 0x09400000: 125, // ee
- 0x0940007e: 126, // ee-GH
- 0x09400120: 127, // ee-TG
- 0x09900000: 128, // el
- 0x0990005c: 129, // el-CY
- 0x09900085: 130, // el-GR
- 0x09a00000: 131, // en
- 0x09a00001: 132, // en-001
- 0x09a0001a: 133, // en-150
- 0x09a00024: 134, // en-AG
- 0x09a00025: 135, // en-AI
- 0x09a0002c: 136, // en-AS
- 0x09a0002d: 137, // en-AT
- 0x09a0002e: 138, // en-AU
- 0x09a00033: 139, // en-BB
- 0x09a00035: 140, // en-BE
- 0x09a00039: 141, // en-BI
- 0x09a0003c: 142, // en-BM
- 0x09a00041: 143, // en-BS
- 0x09a00045: 144, // en-BW
- 0x09a00047: 145, // en-BZ
- 0x09a00048: 146, // en-CA
- 0x09a00049: 147, // en-CC
- 0x09a0004d: 148, // en-CH
- 0x09a0004f: 149, // en-CK
- 0x09a00051: 150, // en-CM
- 0x09a0005b: 151, // en-CX
- 0x09a0005c: 152, // en-CY
- 0x09a0005f: 153, // en-DE
- 0x09a00060: 154, // en-DG
- 0x09a00062: 155, // en-DK
- 0x09a00063: 156, // en-DM
- 0x09a0006c: 157, // en-ER
- 0x09a00070: 158, // en-FI
- 0x09a00071: 159, // en-FJ
- 0x09a00072: 160, // en-FK
- 0x09a00073: 161, // en-FM
- 0x09a00079: 162, // en-GB
- 0x09a0007a: 163, // en-GD
- 0x09a0007d: 164, // en-GG
- 0x09a0007e: 165, // en-GH
- 0x09a0007f: 166, // en-GI
- 0x09a00081: 167, // en-GM
- 0x09a00088: 168, // en-GU
- 0x09a0008a: 169, // en-GY
- 0x09a0008b: 170, // en-HK
- 0x09a00094: 171, // en-IE
- 0x09a00095: 172, // en-IL
- 0x09a00096: 173, // en-IM
- 0x09a00097: 174, // en-IN
- 0x09a00098: 175, // en-IO
- 0x09a0009d: 176, // en-JE
- 0x09a0009e: 177, // en-JM
- 0x09a000a2: 178, // en-KE
- 0x09a000a5: 179, // en-KI
- 0x09a000a7: 180, // en-KN
- 0x09a000ab: 181, // en-KY
- 0x09a000af: 182, // en-LC
- 0x09a000b2: 183, // en-LR
- 0x09a000b3: 184, // en-LS
- 0x09a000bd: 185, // en-MG
- 0x09a000be: 186, // en-MH
- 0x09a000c4: 187, // en-MO
- 0x09a000c5: 188, // en-MP
- 0x09a000c8: 189, // en-MS
- 0x09a000c9: 190, // en-MT
- 0x09a000ca: 191, // en-MU
- 0x09a000cc: 192, // en-MW
- 0x09a000ce: 193, // en-MY
- 0x09a000d0: 194, // en-NA
- 0x09a000d3: 195, // en-NF
- 0x09a000d4: 196, // en-NG
- 0x09a000d7: 197, // en-NL
- 0x09a000db: 198, // en-NR
- 0x09a000dd: 199, // en-NU
- 0x09a000de: 200, // en-NZ
- 0x09a000e4: 201, // en-PG
- 0x09a000e5: 202, // en-PH
- 0x09a000e6: 203, // en-PK
- 0x09a000e9: 204, // en-PN
- 0x09a000ea: 205, // en-PR
- 0x09a000ee: 206, // en-PW
- 0x09a00105: 207, // en-RW
- 0x09a00107: 208, // en-SB
- 0x09a00108: 209, // en-SC
- 0x09a00109: 210, // en-SD
- 0x09a0010a: 211, // en-SE
- 0x09a0010b: 212, // en-SG
- 0x09a0010c: 213, // en-SH
- 0x09a0010d: 214, // en-SI
- 0x09a00110: 215, // en-SL
- 0x09a00115: 216, // en-SS
- 0x09a00119: 217, // en-SX
- 0x09a0011b: 218, // en-SZ
- 0x09a0011d: 219, // en-TC
- 0x09a00123: 220, // en-TK
- 0x09a00127: 221, // en-TO
- 0x09a0012a: 222, // en-TT
- 0x09a0012b: 223, // en-TV
- 0x09a0012d: 224, // en-TZ
- 0x09a0012f: 225, // en-UG
- 0x09a00131: 226, // en-UM
- 0x09a00132: 227, // en-US
- 0x09a00136: 228, // en-VC
- 0x09a00139: 229, // en-VG
- 0x09a0013a: 230, // en-VI
- 0x09a0013c: 231, // en-VU
- 0x09a0013f: 232, // en-WS
- 0x09a0015e: 233, // en-ZA
- 0x09a0015f: 234, // en-ZM
- 0x09a00161: 235, // en-ZW
- 0x09b00000: 236, // eo
- 0x09b00001: 237, // eo-001
- 0x09c00000: 238, // es
- 0x09c00003: 239, // es-003
- 0x09c0001e: 240, // es-419
- 0x09c0002b: 241, // es-AR
- 0x09c0003e: 242, // es-BO
- 0x09c00050: 243, // es-CL
- 0x09c00053: 244, // es-CO
- 0x09c00055: 245, // es-CR
- 0x09c00058: 246, // es-CU
- 0x09c00064: 247, // es-DO
- 0x09c00067: 248, // es-EA
- 0x09c00068: 249, // es-EC
- 0x09c0006d: 250, // es-ES
- 0x09c00084: 251, // es-GQ
- 0x09c00087: 252, // es-GT
- 0x09c0008d: 253, // es-HN
- 0x09c00092: 254, // es-IC
- 0x09c000cd: 255, // es-MX
- 0x09c000d6: 256, // es-NI
- 0x09c000e0: 257, // es-PA
- 0x09c000e2: 258, // es-PE
- 0x09c000e5: 259, // es-PH
- 0x09c000ea: 260, // es-PR
- 0x09c000ef: 261, // es-PY
- 0x09c00118: 262, // es-SV
- 0x09c00132: 263, // es-US
- 0x09c00133: 264, // es-UY
- 0x09c00138: 265, // es-VE
- 0x09e00000: 266, // et
- 0x09e00069: 267, // et-EE
- 0x0a000000: 268, // eu
- 0x0a00006d: 269, // eu-ES
- 0x0a100000: 270, // ewo
- 0x0a100051: 271, // ewo-CM
- 0x0a300000: 272, // fa
- 0x0a300023: 273, // fa-AF
- 0x0a30009a: 274, // fa-IR
- 0x0a500000: 275, // ff
- 0x0a500051: 276, // ff-CM
- 0x0a500082: 277, // ff-GN
- 0x0a5000c7: 278, // ff-MR
- 0x0a500112: 279, // ff-SN
- 0x0a700000: 280, // fi
- 0x0a700070: 281, // fi-FI
- 0x0a900000: 282, // fil
- 0x0a9000e5: 283, // fil-PH
- 0x0ac00000: 284, // fo
- 0x0ac00062: 285, // fo-DK
- 0x0ac00074: 286, // fo-FO
- 0x0ae00000: 287, // fr
- 0x0ae00035: 288, // fr-BE
- 0x0ae00036: 289, // fr-BF
- 0x0ae00039: 290, // fr-BI
- 0x0ae0003a: 291, // fr-BJ
- 0x0ae0003b: 292, // fr-BL
- 0x0ae00048: 293, // fr-CA
- 0x0ae0004a: 294, // fr-CD
- 0x0ae0004b: 295, // fr-CF
- 0x0ae0004c: 296, // fr-CG
- 0x0ae0004d: 297, // fr-CH
- 0x0ae0004e: 298, // fr-CI
- 0x0ae00051: 299, // fr-CM
- 0x0ae00061: 300, // fr-DJ
- 0x0ae00066: 301, // fr-DZ
- 0x0ae00076: 302, // fr-FR
- 0x0ae00078: 303, // fr-GA
- 0x0ae0007c: 304, // fr-GF
- 0x0ae00082: 305, // fr-GN
- 0x0ae00083: 306, // fr-GP
- 0x0ae00084: 307, // fr-GQ
- 0x0ae0008f: 308, // fr-HT
- 0x0ae000a6: 309, // fr-KM
- 0x0ae000b5: 310, // fr-LU
- 0x0ae000b8: 311, // fr-MA
- 0x0ae000b9: 312, // fr-MC
- 0x0ae000bc: 313, // fr-MF
- 0x0ae000bd: 314, // fr-MG
- 0x0ae000c1: 315, // fr-ML
- 0x0ae000c6: 316, // fr-MQ
- 0x0ae000c7: 317, // fr-MR
- 0x0ae000ca: 318, // fr-MU
- 0x0ae000d1: 319, // fr-NC
- 0x0ae000d2: 320, // fr-NE
- 0x0ae000e3: 321, // fr-PF
- 0x0ae000e8: 322, // fr-PM
- 0x0ae00100: 323, // fr-RE
- 0x0ae00105: 324, // fr-RW
- 0x0ae00108: 325, // fr-SC
- 0x0ae00112: 326, // fr-SN
- 0x0ae0011a: 327, // fr-SY
- 0x0ae0011e: 328, // fr-TD
- 0x0ae00120: 329, // fr-TG
- 0x0ae00126: 330, // fr-TN
- 0x0ae0013c: 331, // fr-VU
- 0x0ae0013d: 332, // fr-WF
- 0x0ae0015c: 333, // fr-YT
- 0x0b500000: 334, // fur
- 0x0b50009c: 335, // fur-IT
- 0x0b800000: 336, // fy
- 0x0b8000d7: 337, // fy-NL
- 0x0b900000: 338, // ga
- 0x0b900094: 339, // ga-IE
- 0x0c100000: 340, // gd
- 0x0c100079: 341, // gd-GB
- 0x0c700000: 342, // gl
- 0x0c70006d: 343, // gl-ES
- 0x0d100000: 344, // gsw
- 0x0d10004d: 345, // gsw-CH
- 0x0d100076: 346, // gsw-FR
- 0x0d1000b0: 347, // gsw-LI
- 0x0d200000: 348, // gu
- 0x0d200097: 349, // gu-IN
- 0x0d600000: 350, // guw
- 0x0d700000: 351, // guz
- 0x0d7000a2: 352, // guz-KE
- 0x0d800000: 353, // gv
- 0x0d800096: 354, // gv-IM
- 0x0db00000: 355, // ha
- 0x0db0007e: 356, // ha-GH
- 0x0db000d2: 357, // ha-NE
- 0x0db000d4: 358, // ha-NG
- 0x0dd00000: 359, // haw
- 0x0dd00132: 360, // haw-US
- 0x0df00000: 361, // he
- 0x0df00095: 362, // he-IL
- 0x0e000000: 363, // hi
- 0x0e000097: 364, // hi-IN
- 0x0ed00000: 365, // hr
- 0x0ed00032: 366, // hr-BA
- 0x0ed0008e: 367, // hr-HR
- 0x0ee00000: 368, // hsb
- 0x0ee0005f: 369, // hsb-DE
- 0x0f100000: 370, // hu
- 0x0f100090: 371, // hu-HU
- 0x0f200000: 372, // hy
- 0x0f200027: 373, // hy-AM
- 0x0f700000: 374, // id
- 0x0f700093: 375, // id-ID
- 0x0f900000: 376, // ig
- 0x0f9000d4: 377, // ig-NG
- 0x0fa00000: 378, // ii
- 0x0fa00052: 379, // ii-CN
- 0x10100000: 380, // is
- 0x1010009b: 381, // is-IS
- 0x10200000: 382, // it
- 0x1020004d: 383, // it-CH
- 0x1020009c: 384, // it-IT
- 0x10200111: 385, // it-SM
- 0x10300000: 386, // iu
- 0x10600000: 387, // ja
- 0x106000a0: 388, // ja-JP
- 0x10800000: 389, // jbo
- 0x10900000: 390, // jgo
- 0x10900051: 391, // jgo-CM
- 0x10b00000: 392, // jmc
- 0x10b0012d: 393, // jmc-TZ
- 0x10e00000: 394, // jv
- 0x11000000: 395, // ka
- 0x1100007b: 396, // ka-GE
- 0x11200000: 397, // kab
- 0x11200066: 398, // kab-DZ
- 0x11400000: 399, // kaj
- 0x11500000: 400, // kam
- 0x115000a2: 401, // kam-KE
- 0x11800000: 402, // kcg
- 0x11a00000: 403, // kde
- 0x11a0012d: 404, // kde-TZ
- 0x11c00000: 405, // kea
- 0x11c00059: 406, // kea-CV
- 0x12700000: 407, // khq
- 0x127000c1: 408, // khq-ML
- 0x12a00000: 409, // ki
- 0x12a000a2: 410, // ki-KE
- 0x12e00000: 411, // kk
- 0x12e000ac: 412, // kk-KZ
- 0x12f00000: 413, // kkj
- 0x12f00051: 414, // kkj-CM
- 0x13000000: 415, // kl
- 0x13000080: 416, // kl-GL
- 0x13100000: 417, // kln
- 0x131000a2: 418, // kln-KE
- 0x13200000: 419, // km
- 0x132000a4: 420, // km-KH
- 0x13400000: 421, // kn
- 0x13400097: 422, // kn-IN
- 0x13500000: 423, // ko
- 0x135000a8: 424, // ko-KP
- 0x135000a9: 425, // ko-KR
- 0x13700000: 426, // kok
- 0x13700097: 427, // kok-IN
- 0x14000000: 428, // ks
- 0x14000097: 429, // ks-IN
- 0x14100000: 430, // ksb
- 0x1410012d: 431, // ksb-TZ
- 0x14200000: 432, // ksf
- 0x14200051: 433, // ksf-CM
- 0x14300000: 434, // ksh
- 0x1430005f: 435, // ksh-DE
- 0x14400000: 436, // ku
- 0x14900000: 437, // kw
- 0x14900079: 438, // kw-GB
- 0x14c00000: 439, // ky
- 0x14c000a3: 440, // ky-KG
- 0x15000000: 441, // lag
- 0x1500012d: 442, // lag-TZ
- 0x15300000: 443, // lb
- 0x153000b5: 444, // lb-LU
- 0x15900000: 445, // lg
- 0x1590012f: 446, // lg-UG
- 0x16000000: 447, // lkt
- 0x16000132: 448, // lkt-US
- 0x16300000: 449, // ln
- 0x16300029: 450, // ln-AO
- 0x1630004a: 451, // ln-CD
- 0x1630004b: 452, // ln-CF
- 0x1630004c: 453, // ln-CG
- 0x16400000: 454, // lo
- 0x164000ad: 455, // lo-LA
- 0x16700000: 456, // lrc
- 0x16700099: 457, // lrc-IQ
- 0x1670009a: 458, // lrc-IR
- 0x16800000: 459, // lt
- 0x168000b4: 460, // lt-LT
- 0x16a00000: 461, // lu
- 0x16a0004a: 462, // lu-CD
- 0x16c00000: 463, // luo
- 0x16c000a2: 464, // luo-KE
- 0x16d00000: 465, // luy
- 0x16d000a2: 466, // luy-KE
- 0x16f00000: 467, // lv
- 0x16f000b6: 468, // lv-LV
- 0x17900000: 469, // mas
- 0x179000a2: 470, // mas-KE
- 0x1790012d: 471, // mas-TZ
- 0x17f00000: 472, // mer
- 0x17f000a2: 473, // mer-KE
- 0x18100000: 474, // mfe
- 0x181000ca: 475, // mfe-MU
- 0x18200000: 476, // mg
- 0x182000bd: 477, // mg-MG
- 0x18300000: 478, // mgh
- 0x183000cf: 479, // mgh-MZ
- 0x18400000: 480, // mgo
- 0x18400051: 481, // mgo-CM
- 0x18b00000: 482, // mk
- 0x18b000c0: 483, // mk-MK
- 0x18c00000: 484, // ml
- 0x18c00097: 485, // ml-IN
- 0x18e00000: 486, // mn
- 0x18e000c3: 487, // mn-MN
- 0x19500000: 488, // mr
- 0x19500097: 489, // mr-IN
- 0x19900000: 490, // ms
- 0x1990003d: 491, // ms-BN
- 0x199000ce: 492, // ms-MY
- 0x1990010b: 493, // ms-SG
- 0x19a00000: 494, // mt
- 0x19a000c9: 495, // mt-MT
- 0x19c00000: 496, // mua
- 0x19c00051: 497, // mua-CM
- 0x1a400000: 498, // my
- 0x1a4000c2: 499, // my-MM
- 0x1a800000: 500, // mzn
- 0x1a80009a: 501, // mzn-IR
- 0x1aa00000: 502, // nah
- 0x1ad00000: 503, // naq
- 0x1ad000d0: 504, // naq-NA
- 0x1ae00000: 505, // nb
- 0x1ae000d8: 506, // nb-NO
- 0x1ae0010e: 507, // nb-SJ
- 0x1b000000: 508, // nd
- 0x1b000161: 509, // nd-ZW
- 0x1b300000: 510, // ne
- 0x1b300097: 511, // ne-IN
- 0x1b3000d9: 512, // ne-NP
- 0x1bc00000: 513, // nl
- 0x1bc0002f: 514, // nl-AW
- 0x1bc00035: 515, // nl-BE
- 0x1bc0003f: 516, // nl-BQ
- 0x1bc0005a: 517, // nl-CW
- 0x1bc000d7: 518, // nl-NL
- 0x1bc00114: 519, // nl-SR
- 0x1bc00119: 520, // nl-SX
- 0x1bd00000: 521, // nmg
- 0x1bd00051: 522, // nmg-CM
- 0x1be00000: 523, // nn
- 0x1be000d8: 524, // nn-NO
- 0x1bf00000: 525, // nnh
- 0x1bf00051: 526, // nnh-CM
- 0x1c000000: 527, // no
- 0x1c400000: 528, // nqo
- 0x1c500000: 529, // nr
- 0x1c700000: 530, // nso
- 0x1c800000: 531, // nus
- 0x1c800115: 532, // nus-SS
- 0x1cb00000: 533, // ny
- 0x1cd00000: 534, // nyn
- 0x1cd0012f: 535, // nyn-UG
- 0x1d100000: 536, // om
- 0x1d10006e: 537, // om-ET
- 0x1d1000a2: 538, // om-KE
- 0x1d200000: 539, // or
- 0x1d200097: 540, // or-IN
- 0x1d300000: 541, // os
- 0x1d30007b: 542, // os-GE
- 0x1d300104: 543, // os-RU
- 0x1d500000: 544, // pa
- 0x1d505000: 545, // pa-Arab
- 0x1d5050e6: 546, // pa-Arab-PK
- 0x1d52e000: 547, // pa-Guru
- 0x1d52e097: 548, // pa-Guru-IN
- 0x1d900000: 549, // pap
- 0x1e500000: 550, // pl
- 0x1e5000e7: 551, // pl-PL
- 0x1eb00000: 552, // prg
- 0x1eb00001: 553, // prg-001
- 0x1ec00000: 554, // ps
- 0x1ec00023: 555, // ps-AF
- 0x1ed00000: 556, // pt
- 0x1ed00029: 557, // pt-AO
- 0x1ed00040: 558, // pt-BR
- 0x1ed00059: 559, // pt-CV
- 0x1ed00089: 560, // pt-GW
- 0x1ed000c4: 561, // pt-MO
- 0x1ed000cf: 562, // pt-MZ
- 0x1ed000ec: 563, // pt-PT
- 0x1ed00116: 564, // pt-ST
- 0x1ed00124: 565, // pt-TL
- 0x1ef00000: 566, // qu
- 0x1ef0003e: 567, // qu-BO
- 0x1ef00068: 568, // qu-EC
- 0x1ef000e2: 569, // qu-PE
- 0x1fa00000: 570, // rm
- 0x1fa0004d: 571, // rm-CH
- 0x1ff00000: 572, // rn
- 0x1ff00039: 573, // rn-BI
- 0x20100000: 574, // ro
- 0x201000ba: 575, // ro-MD
- 0x20100102: 576, // ro-RO
- 0x20300000: 577, // rof
- 0x2030012d: 578, // rof-TZ
- 0x20500000: 579, // ru
- 0x20500046: 580, // ru-BY
- 0x205000a3: 581, // ru-KG
- 0x205000ac: 582, // ru-KZ
- 0x205000ba: 583, // ru-MD
- 0x20500104: 584, // ru-RU
- 0x2050012e: 585, // ru-UA
- 0x20800000: 586, // rw
- 0x20800105: 587, // rw-RW
- 0x20900000: 588, // rwk
- 0x2090012d: 589, // rwk-TZ
- 0x20d00000: 590, // sah
- 0x20d00104: 591, // sah-RU
- 0x20e00000: 592, // saq
- 0x20e000a2: 593, // saq-KE
- 0x21200000: 594, // sbp
- 0x2120012d: 595, // sbp-TZ
- 0x21a00000: 596, // sdh
- 0x21b00000: 597, // se
- 0x21b00070: 598, // se-FI
- 0x21b000d8: 599, // se-NO
- 0x21b0010a: 600, // se-SE
- 0x21d00000: 601, // seh
- 0x21d000cf: 602, // seh-MZ
- 0x21f00000: 603, // ses
- 0x21f000c1: 604, // ses-ML
- 0x22000000: 605, // sg
- 0x2200004b: 606, // sg-CF
- 0x22400000: 607, // shi
- 0x2244f000: 608, // shi-Latn
- 0x2244f0b8: 609, // shi-Latn-MA
- 0x224cc000: 610, // shi-Tfng
- 0x224cc0b8: 611, // shi-Tfng-MA
- 0x22600000: 612, // si
- 0x226000b1: 613, // si-LK
- 0x22800000: 614, // sk
- 0x2280010f: 615, // sk-SK
- 0x22a00000: 616, // sl
- 0x22a0010d: 617, // sl-SI
- 0x22e00000: 618, // sma
- 0x22f00000: 619, // smi
- 0x23000000: 620, // smj
- 0x23100000: 621, // smn
- 0x23100070: 622, // smn-FI
- 0x23300000: 623, // sms
- 0x23400000: 624, // sn
- 0x23400161: 625, // sn-ZW
- 0x23600000: 626, // so
- 0x23600061: 627, // so-DJ
- 0x2360006e: 628, // so-ET
- 0x236000a2: 629, // so-KE
- 0x23600113: 630, // so-SO
- 0x23800000: 631, // sq
- 0x23800026: 632, // sq-AL
- 0x238000c0: 633, // sq-MK
- 0x2380014a: 634, // sq-XK
- 0x23900000: 635, // sr
- 0x2391d000: 636, // sr-Cyrl
- 0x2391d032: 637, // sr-Cyrl-BA
- 0x2391d0bb: 638, // sr-Cyrl-ME
- 0x2391d103: 639, // sr-Cyrl-RS
- 0x2391d14a: 640, // sr-Cyrl-XK
- 0x2394f000: 641, // sr-Latn
- 0x2394f032: 642, // sr-Latn-BA
- 0x2394f0bb: 643, // sr-Latn-ME
- 0x2394f103: 644, // sr-Latn-RS
- 0x2394f14a: 645, // sr-Latn-XK
- 0x23e00000: 646, // ss
- 0x23f00000: 647, // ssy
- 0x24000000: 648, // st
- 0x24500000: 649, // sv
- 0x24500030: 650, // sv-AX
- 0x24500070: 651, // sv-FI
- 0x2450010a: 652, // sv-SE
- 0x24600000: 653, // sw
- 0x2460004a: 654, // sw-CD
- 0x246000a2: 655, // sw-KE
- 0x2460012d: 656, // sw-TZ
- 0x2460012f: 657, // sw-UG
- 0x24d00000: 658, // syr
- 0x24f00000: 659, // ta
- 0x24f00097: 660, // ta-IN
- 0x24f000b1: 661, // ta-LK
- 0x24f000ce: 662, // ta-MY
- 0x24f0010b: 663, // ta-SG
- 0x25600000: 664, // te
- 0x25600097: 665, // te-IN
- 0x25800000: 666, // teo
- 0x258000a2: 667, // teo-KE
- 0x2580012f: 668, // teo-UG
- 0x25b00000: 669, // th
- 0x25b00121: 670, // th-TH
- 0x25f00000: 671, // ti
- 0x25f0006c: 672, // ti-ER
- 0x25f0006e: 673, // ti-ET
- 0x26000000: 674, // tig
- 0x26200000: 675, // tk
- 0x26200125: 676, // tk-TM
- 0x26900000: 677, // tn
- 0x26a00000: 678, // to
- 0x26a00127: 679, // to-TO
- 0x26d00000: 680, // tr
- 0x26d0005c: 681, // tr-CY
- 0x26d00129: 682, // tr-TR
- 0x27000000: 683, // ts
- 0x27c00000: 684, // twq
- 0x27c000d2: 685, // twq-NE
- 0x27f00000: 686, // tzm
- 0x27f000b8: 687, // tzm-MA
- 0x28100000: 688, // ug
- 0x28100052: 689, // ug-CN
- 0x28300000: 690, // uk
- 0x2830012e: 691, // uk-UA
- 0x28900000: 692, // ur
- 0x28900097: 693, // ur-IN
- 0x289000e6: 694, // ur-PK
- 0x28a00000: 695, // uz
- 0x28a05000: 696, // uz-Arab
- 0x28a05023: 697, // uz-Arab-AF
- 0x28a1d000: 698, // uz-Cyrl
- 0x28a1d134: 699, // uz-Cyrl-UZ
- 0x28a4f000: 700, // uz-Latn
- 0x28a4f134: 701, // uz-Latn-UZ
- 0x28b00000: 702, // vai
- 0x28b4f000: 703, // vai-Latn
- 0x28b4f0b2: 704, // vai-Latn-LR
- 0x28bd3000: 705, // vai-Vaii
- 0x28bd30b2: 706, // vai-Vaii-LR
- 0x28c00000: 707, // ve
- 0x28f00000: 708, // vi
- 0x28f0013b: 709, // vi-VN
- 0x29400000: 710, // vo
- 0x29400001: 711, // vo-001
- 0x29700000: 712, // vun
- 0x2970012d: 713, // vun-TZ
- 0x29800000: 714, // wa
- 0x29900000: 715, // wae
- 0x2990004d: 716, // wae-CH
- 0x2a100000: 717, // wo
- 0x2a600000: 718, // xh
- 0x2ae00000: 719, // xog
- 0x2ae0012f: 720, // xog-UG
- 0x2b400000: 721, // yav
- 0x2b400051: 722, // yav-CM
- 0x2b600000: 723, // yi
- 0x2b600001: 724, // yi-001
- 0x2b700000: 725, // yo
- 0x2b70003a: 726, // yo-BJ
- 0x2b7000d4: 727, // yo-NG
- 0x2bf00000: 728, // zgh
- 0x2bf000b8: 729, // zgh-MA
- 0x2c000000: 730, // zh
- 0x2c032000: 731, // zh-Hans
- 0x2c032052: 732, // zh-Hans-CN
- 0x2c03208b: 733, // zh-Hans-HK
- 0x2c0320c4: 734, // zh-Hans-MO
- 0x2c03210b: 735, // zh-Hans-SG
- 0x2c033000: 736, // zh-Hant
- 0x2c03308b: 737, // zh-Hant-HK
- 0x2c0330c4: 738, // zh-Hant-MO
- 0x2c03312c: 739, // zh-Hant-TW
- 0x2c200000: 740, // zu
- 0x2c20015e: 741, // zu-ZA
+ 0x08f00000: 116, // dua
+ 0x08f00051: 117, // dua-CM
+ 0x09000000: 118, // dv
+ 0x09100000: 119, // dyo
+ 0x09100112: 120, // dyo-SN
+ 0x09300000: 121, // dz
+ 0x09300042: 122, // dz-BT
+ 0x09400000: 123, // ebu
+ 0x094000a2: 124, // ebu-KE
+ 0x09500000: 125, // ee
+ 0x0950007e: 126, // ee-GH
+ 0x09500120: 127, // ee-TG
+ 0x09a00000: 128, // el
+ 0x09a0005c: 129, // el-CY
+ 0x09a00085: 130, // el-GR
+ 0x09b00000: 131, // en
+ 0x09b00001: 132, // en-001
+ 0x09b0001a: 133, // en-150
+ 0x09b00024: 134, // en-AG
+ 0x09b00025: 135, // en-AI
+ 0x09b0002c: 136, // en-AS
+ 0x09b0002d: 137, // en-AT
+ 0x09b0002e: 138, // en-AU
+ 0x09b00033: 139, // en-BB
+ 0x09b00035: 140, // en-BE
+ 0x09b00039: 141, // en-BI
+ 0x09b0003c: 142, // en-BM
+ 0x09b00041: 143, // en-BS
+ 0x09b00045: 144, // en-BW
+ 0x09b00047: 145, // en-BZ
+ 0x09b00048: 146, // en-CA
+ 0x09b00049: 147, // en-CC
+ 0x09b0004d: 148, // en-CH
+ 0x09b0004f: 149, // en-CK
+ 0x09b00051: 150, // en-CM
+ 0x09b0005b: 151, // en-CX
+ 0x09b0005c: 152, // en-CY
+ 0x09b0005f: 153, // en-DE
+ 0x09b00060: 154, // en-DG
+ 0x09b00062: 155, // en-DK
+ 0x09b00063: 156, // en-DM
+ 0x09b0006c: 157, // en-ER
+ 0x09b00070: 158, // en-FI
+ 0x09b00071: 159, // en-FJ
+ 0x09b00072: 160, // en-FK
+ 0x09b00073: 161, // en-FM
+ 0x09b00079: 162, // en-GB
+ 0x09b0007a: 163, // en-GD
+ 0x09b0007d: 164, // en-GG
+ 0x09b0007e: 165, // en-GH
+ 0x09b0007f: 166, // en-GI
+ 0x09b00081: 167, // en-GM
+ 0x09b00088: 168, // en-GU
+ 0x09b0008a: 169, // en-GY
+ 0x09b0008b: 170, // en-HK
+ 0x09b00094: 171, // en-IE
+ 0x09b00095: 172, // en-IL
+ 0x09b00096: 173, // en-IM
+ 0x09b00097: 174, // en-IN
+ 0x09b00098: 175, // en-IO
+ 0x09b0009d: 176, // en-JE
+ 0x09b0009e: 177, // en-JM
+ 0x09b000a2: 178, // en-KE
+ 0x09b000a5: 179, // en-KI
+ 0x09b000a7: 180, // en-KN
+ 0x09b000ab: 181, // en-KY
+ 0x09b000af: 182, // en-LC
+ 0x09b000b2: 183, // en-LR
+ 0x09b000b3: 184, // en-LS
+ 0x09b000bd: 185, // en-MG
+ 0x09b000be: 186, // en-MH
+ 0x09b000c4: 187, // en-MO
+ 0x09b000c5: 188, // en-MP
+ 0x09b000c8: 189, // en-MS
+ 0x09b000c9: 190, // en-MT
+ 0x09b000ca: 191, // en-MU
+ 0x09b000cc: 192, // en-MW
+ 0x09b000ce: 193, // en-MY
+ 0x09b000d0: 194, // en-NA
+ 0x09b000d3: 195, // en-NF
+ 0x09b000d4: 196, // en-NG
+ 0x09b000d7: 197, // en-NL
+ 0x09b000db: 198, // en-NR
+ 0x09b000dd: 199, // en-NU
+ 0x09b000de: 200, // en-NZ
+ 0x09b000e4: 201, // en-PG
+ 0x09b000e5: 202, // en-PH
+ 0x09b000e6: 203, // en-PK
+ 0x09b000e9: 204, // en-PN
+ 0x09b000ea: 205, // en-PR
+ 0x09b000ee: 206, // en-PW
+ 0x09b00105: 207, // en-RW
+ 0x09b00107: 208, // en-SB
+ 0x09b00108: 209, // en-SC
+ 0x09b00109: 210, // en-SD
+ 0x09b0010a: 211, // en-SE
+ 0x09b0010b: 212, // en-SG
+ 0x09b0010c: 213, // en-SH
+ 0x09b0010d: 214, // en-SI
+ 0x09b00110: 215, // en-SL
+ 0x09b00115: 216, // en-SS
+ 0x09b00119: 217, // en-SX
+ 0x09b0011b: 218, // en-SZ
+ 0x09b0011d: 219, // en-TC
+ 0x09b00123: 220, // en-TK
+ 0x09b00127: 221, // en-TO
+ 0x09b0012a: 222, // en-TT
+ 0x09b0012b: 223, // en-TV
+ 0x09b0012d: 224, // en-TZ
+ 0x09b0012f: 225, // en-UG
+ 0x09b00131: 226, // en-UM
+ 0x09b00132: 227, // en-US
+ 0x09b00136: 228, // en-VC
+ 0x09b00139: 229, // en-VG
+ 0x09b0013a: 230, // en-VI
+ 0x09b0013c: 231, // en-VU
+ 0x09b0013f: 232, // en-WS
+ 0x09b0015e: 233, // en-ZA
+ 0x09b0015f: 234, // en-ZM
+ 0x09b00161: 235, // en-ZW
+ 0x09c00000: 236, // eo
+ 0x09c00001: 237, // eo-001
+ 0x09d00000: 238, // es
+ 0x09d0001e: 239, // es-419
+ 0x09d0002b: 240, // es-AR
+ 0x09d0003e: 241, // es-BO
+ 0x09d00040: 242, // es-BR
+ 0x09d00050: 243, // es-CL
+ 0x09d00053: 244, // es-CO
+ 0x09d00055: 245, // es-CR
+ 0x09d00058: 246, // es-CU
+ 0x09d00064: 247, // es-DO
+ 0x09d00067: 248, // es-EA
+ 0x09d00068: 249, // es-EC
+ 0x09d0006d: 250, // es-ES
+ 0x09d00084: 251, // es-GQ
+ 0x09d00087: 252, // es-GT
+ 0x09d0008d: 253, // es-HN
+ 0x09d00092: 254, // es-IC
+ 0x09d000cd: 255, // es-MX
+ 0x09d000d6: 256, // es-NI
+ 0x09d000e0: 257, // es-PA
+ 0x09d000e2: 258, // es-PE
+ 0x09d000e5: 259, // es-PH
+ 0x09d000ea: 260, // es-PR
+ 0x09d000ef: 261, // es-PY
+ 0x09d00118: 262, // es-SV
+ 0x09d00132: 263, // es-US
+ 0x09d00133: 264, // es-UY
+ 0x09d00138: 265, // es-VE
+ 0x09f00000: 266, // et
+ 0x09f00069: 267, // et-EE
+ 0x0a100000: 268, // eu
+ 0x0a10006d: 269, // eu-ES
+ 0x0a200000: 270, // ewo
+ 0x0a200051: 271, // ewo-CM
+ 0x0a400000: 272, // fa
+ 0x0a400023: 273, // fa-AF
+ 0x0a40009a: 274, // fa-IR
+ 0x0a600000: 275, // ff
+ 0x0a600051: 276, // ff-CM
+ 0x0a600082: 277, // ff-GN
+ 0x0a6000c7: 278, // ff-MR
+ 0x0a600112: 279, // ff-SN
+ 0x0a800000: 280, // fi
+ 0x0a800070: 281, // fi-FI
+ 0x0aa00000: 282, // fil
+ 0x0aa000e5: 283, // fil-PH
+ 0x0ad00000: 284, // fo
+ 0x0ad00062: 285, // fo-DK
+ 0x0ad00074: 286, // fo-FO
+ 0x0af00000: 287, // fr
+ 0x0af00035: 288, // fr-BE
+ 0x0af00036: 289, // fr-BF
+ 0x0af00039: 290, // fr-BI
+ 0x0af0003a: 291, // fr-BJ
+ 0x0af0003b: 292, // fr-BL
+ 0x0af00048: 293, // fr-CA
+ 0x0af0004a: 294, // fr-CD
+ 0x0af0004b: 295, // fr-CF
+ 0x0af0004c: 296, // fr-CG
+ 0x0af0004d: 297, // fr-CH
+ 0x0af0004e: 298, // fr-CI
+ 0x0af00051: 299, // fr-CM
+ 0x0af00061: 300, // fr-DJ
+ 0x0af00066: 301, // fr-DZ
+ 0x0af00076: 302, // fr-FR
+ 0x0af00078: 303, // fr-GA
+ 0x0af0007c: 304, // fr-GF
+ 0x0af00082: 305, // fr-GN
+ 0x0af00083: 306, // fr-GP
+ 0x0af00084: 307, // fr-GQ
+ 0x0af0008f: 308, // fr-HT
+ 0x0af000a6: 309, // fr-KM
+ 0x0af000b5: 310, // fr-LU
+ 0x0af000b8: 311, // fr-MA
+ 0x0af000b9: 312, // fr-MC
+ 0x0af000bc: 313, // fr-MF
+ 0x0af000bd: 314, // fr-MG
+ 0x0af000c1: 315, // fr-ML
+ 0x0af000c6: 316, // fr-MQ
+ 0x0af000c7: 317, // fr-MR
+ 0x0af000ca: 318, // fr-MU
+ 0x0af000d1: 319, // fr-NC
+ 0x0af000d2: 320, // fr-NE
+ 0x0af000e3: 321, // fr-PF
+ 0x0af000e8: 322, // fr-PM
+ 0x0af00100: 323, // fr-RE
+ 0x0af00105: 324, // fr-RW
+ 0x0af00108: 325, // fr-SC
+ 0x0af00112: 326, // fr-SN
+ 0x0af0011a: 327, // fr-SY
+ 0x0af0011e: 328, // fr-TD
+ 0x0af00120: 329, // fr-TG
+ 0x0af00126: 330, // fr-TN
+ 0x0af0013c: 331, // fr-VU
+ 0x0af0013d: 332, // fr-WF
+ 0x0af0015c: 333, // fr-YT
+ 0x0b600000: 334, // fur
+ 0x0b60009c: 335, // fur-IT
+ 0x0b900000: 336, // fy
+ 0x0b9000d7: 337, // fy-NL
+ 0x0ba00000: 338, // ga
+ 0x0ba00094: 339, // ga-IE
+ 0x0c200000: 340, // gd
+ 0x0c200079: 341, // gd-GB
+ 0x0c800000: 342, // gl
+ 0x0c80006d: 343, // gl-ES
+ 0x0d200000: 344, // gsw
+ 0x0d20004d: 345, // gsw-CH
+ 0x0d200076: 346, // gsw-FR
+ 0x0d2000b0: 347, // gsw-LI
+ 0x0d300000: 348, // gu
+ 0x0d300097: 349, // gu-IN
+ 0x0d700000: 350, // guw
+ 0x0d800000: 351, // guz
+ 0x0d8000a2: 352, // guz-KE
+ 0x0d900000: 353, // gv
+ 0x0d900096: 354, // gv-IM
+ 0x0dc00000: 355, // ha
+ 0x0dc0007e: 356, // ha-GH
+ 0x0dc000d2: 357, // ha-NE
+ 0x0dc000d4: 358, // ha-NG
+ 0x0de00000: 359, // haw
+ 0x0de00132: 360, // haw-US
+ 0x0e000000: 361, // he
+ 0x0e000095: 362, // he-IL
+ 0x0e100000: 363, // hi
+ 0x0e100097: 364, // hi-IN
+ 0x0ee00000: 365, // hr
+ 0x0ee00032: 366, // hr-BA
+ 0x0ee0008e: 367, // hr-HR
+ 0x0ef00000: 368, // hsb
+ 0x0ef0005f: 369, // hsb-DE
+ 0x0f200000: 370, // hu
+ 0x0f200090: 371, // hu-HU
+ 0x0f300000: 372, // hy
+ 0x0f300027: 373, // hy-AM
+ 0x0f800000: 374, // id
+ 0x0f800093: 375, // id-ID
+ 0x0fa00000: 376, // ig
+ 0x0fa000d4: 377, // ig-NG
+ 0x0fb00000: 378, // ii
+ 0x0fb00052: 379, // ii-CN
+ 0x10200000: 380, // is
+ 0x1020009b: 381, // is-IS
+ 0x10300000: 382, // it
+ 0x1030004d: 383, // it-CH
+ 0x1030009c: 384, // it-IT
+ 0x10300111: 385, // it-SM
+ 0x10400000: 386, // iu
+ 0x10700000: 387, // ja
+ 0x107000a0: 388, // ja-JP
+ 0x10900000: 389, // jbo
+ 0x10a00000: 390, // jgo
+ 0x10a00051: 391, // jgo-CM
+ 0x10c00000: 392, // jmc
+ 0x10c0012d: 393, // jmc-TZ
+ 0x10f00000: 394, // jv
+ 0x11100000: 395, // ka
+ 0x1110007b: 396, // ka-GE
+ 0x11300000: 397, // kab
+ 0x11300066: 398, // kab-DZ
+ 0x11500000: 399, // kaj
+ 0x11600000: 400, // kam
+ 0x116000a2: 401, // kam-KE
+ 0x11900000: 402, // kcg
+ 0x11b00000: 403, // kde
+ 0x11b0012d: 404, // kde-TZ
+ 0x11d00000: 405, // kea
+ 0x11d00059: 406, // kea-CV
+ 0x12800000: 407, // khq
+ 0x128000c1: 408, // khq-ML
+ 0x12b00000: 409, // ki
+ 0x12b000a2: 410, // ki-KE
+ 0x12f00000: 411, // kk
+ 0x12f000ac: 412, // kk-KZ
+ 0x13000000: 413, // kkj
+ 0x13000051: 414, // kkj-CM
+ 0x13100000: 415, // kl
+ 0x13100080: 416, // kl-GL
+ 0x13200000: 417, // kln
+ 0x132000a2: 418, // kln-KE
+ 0x13300000: 419, // km
+ 0x133000a4: 420, // km-KH
+ 0x13500000: 421, // kn
+ 0x13500097: 422, // kn-IN
+ 0x13600000: 423, // ko
+ 0x136000a8: 424, // ko-KP
+ 0x136000a9: 425, // ko-KR
+ 0x13800000: 426, // kok
+ 0x13800097: 427, // kok-IN
+ 0x14100000: 428, // ks
+ 0x14100097: 429, // ks-IN
+ 0x14200000: 430, // ksb
+ 0x1420012d: 431, // ksb-TZ
+ 0x14300000: 432, // ksf
+ 0x14300051: 433, // ksf-CM
+ 0x14400000: 434, // ksh
+ 0x1440005f: 435, // ksh-DE
+ 0x14500000: 436, // ku
+ 0x14a00000: 437, // kw
+ 0x14a00079: 438, // kw-GB
+ 0x14d00000: 439, // ky
+ 0x14d000a3: 440, // ky-KG
+ 0x15100000: 441, // lag
+ 0x1510012d: 442, // lag-TZ
+ 0x15400000: 443, // lb
+ 0x154000b5: 444, // lb-LU
+ 0x15a00000: 445, // lg
+ 0x15a0012f: 446, // lg-UG
+ 0x16100000: 447, // lkt
+ 0x16100132: 448, // lkt-US
+ 0x16400000: 449, // ln
+ 0x16400029: 450, // ln-AO
+ 0x1640004a: 451, // ln-CD
+ 0x1640004b: 452, // ln-CF
+ 0x1640004c: 453, // ln-CG
+ 0x16500000: 454, // lo
+ 0x165000ad: 455, // lo-LA
+ 0x16800000: 456, // lrc
+ 0x16800099: 457, // lrc-IQ
+ 0x1680009a: 458, // lrc-IR
+ 0x16900000: 459, // lt
+ 0x169000b4: 460, // lt-LT
+ 0x16b00000: 461, // lu
+ 0x16b0004a: 462, // lu-CD
+ 0x16d00000: 463, // luo
+ 0x16d000a2: 464, // luo-KE
+ 0x16e00000: 465, // luy
+ 0x16e000a2: 466, // luy-KE
+ 0x17000000: 467, // lv
+ 0x170000b6: 468, // lv-LV
+ 0x17a00000: 469, // mas
+ 0x17a000a2: 470, // mas-KE
+ 0x17a0012d: 471, // mas-TZ
+ 0x18000000: 472, // mer
+ 0x180000a2: 473, // mer-KE
+ 0x18200000: 474, // mfe
+ 0x182000ca: 475, // mfe-MU
+ 0x18300000: 476, // mg
+ 0x183000bd: 477, // mg-MG
+ 0x18400000: 478, // mgh
+ 0x184000cf: 479, // mgh-MZ
+ 0x18500000: 480, // mgo
+ 0x18500051: 481, // mgo-CM
+ 0x18c00000: 482, // mk
+ 0x18c000c0: 483, // mk-MK
+ 0x18d00000: 484, // ml
+ 0x18d00097: 485, // ml-IN
+ 0x18f00000: 486, // mn
+ 0x18f000c3: 487, // mn-MN
+ 0x19600000: 488, // mr
+ 0x19600097: 489, // mr-IN
+ 0x19a00000: 490, // ms
+ 0x19a0003d: 491, // ms-BN
+ 0x19a000ce: 492, // ms-MY
+ 0x19a0010b: 493, // ms-SG
+ 0x19b00000: 494, // mt
+ 0x19b000c9: 495, // mt-MT
+ 0x19d00000: 496, // mua
+ 0x19d00051: 497, // mua-CM
+ 0x1a500000: 498, // my
+ 0x1a5000c2: 499, // my-MM
+ 0x1a900000: 500, // mzn
+ 0x1a90009a: 501, // mzn-IR
+ 0x1ab00000: 502, // nah
+ 0x1ae00000: 503, // naq
+ 0x1ae000d0: 504, // naq-NA
+ 0x1af00000: 505, // nb
+ 0x1af000d8: 506, // nb-NO
+ 0x1af0010e: 507, // nb-SJ
+ 0x1b100000: 508, // nd
+ 0x1b100161: 509, // nd-ZW
+ 0x1b400000: 510, // ne
+ 0x1b400097: 511, // ne-IN
+ 0x1b4000d9: 512, // ne-NP
+ 0x1bd00000: 513, // nl
+ 0x1bd0002f: 514, // nl-AW
+ 0x1bd00035: 515, // nl-BE
+ 0x1bd0003f: 516, // nl-BQ
+ 0x1bd0005a: 517, // nl-CW
+ 0x1bd000d7: 518, // nl-NL
+ 0x1bd00114: 519, // nl-SR
+ 0x1bd00119: 520, // nl-SX
+ 0x1be00000: 521, // nmg
+ 0x1be00051: 522, // nmg-CM
+ 0x1bf00000: 523, // nn
+ 0x1bf000d8: 524, // nn-NO
+ 0x1c000000: 525, // nnh
+ 0x1c000051: 526, // nnh-CM
+ 0x1c100000: 527, // no
+ 0x1c500000: 528, // nqo
+ 0x1c600000: 529, // nr
+ 0x1c800000: 530, // nso
+ 0x1c900000: 531, // nus
+ 0x1c900115: 532, // nus-SS
+ 0x1cc00000: 533, // ny
+ 0x1ce00000: 534, // nyn
+ 0x1ce0012f: 535, // nyn-UG
+ 0x1d200000: 536, // om
+ 0x1d20006e: 537, // om-ET
+ 0x1d2000a2: 538, // om-KE
+ 0x1d300000: 539, // or
+ 0x1d300097: 540, // or-IN
+ 0x1d400000: 541, // os
+ 0x1d40007b: 542, // os-GE
+ 0x1d400104: 543, // os-RU
+ 0x1d700000: 544, // pa
+ 0x1d705000: 545, // pa-Arab
+ 0x1d7050e6: 546, // pa-Arab-PK
+ 0x1d72f000: 547, // pa-Guru
+ 0x1d72f097: 548, // pa-Guru-IN
+ 0x1db00000: 549, // pap
+ 0x1e700000: 550, // pl
+ 0x1e7000e7: 551, // pl-PL
+ 0x1ed00000: 552, // prg
+ 0x1ed00001: 553, // prg-001
+ 0x1ee00000: 554, // ps
+ 0x1ee00023: 555, // ps-AF
+ 0x1ef00000: 556, // pt
+ 0x1ef00029: 557, // pt-AO
+ 0x1ef00040: 558, // pt-BR
+ 0x1ef0004d: 559, // pt-CH
+ 0x1ef00059: 560, // pt-CV
+ 0x1ef00084: 561, // pt-GQ
+ 0x1ef00089: 562, // pt-GW
+ 0x1ef000b5: 563, // pt-LU
+ 0x1ef000c4: 564, // pt-MO
+ 0x1ef000cf: 565, // pt-MZ
+ 0x1ef000ec: 566, // pt-PT
+ 0x1ef00116: 567, // pt-ST
+ 0x1ef00124: 568, // pt-TL
+ 0x1f100000: 569, // qu
+ 0x1f10003e: 570, // qu-BO
+ 0x1f100068: 571, // qu-EC
+ 0x1f1000e2: 572, // qu-PE
+ 0x1fc00000: 573, // rm
+ 0x1fc0004d: 574, // rm-CH
+ 0x20100000: 575, // rn
+ 0x20100039: 576, // rn-BI
+ 0x20300000: 577, // ro
+ 0x203000ba: 578, // ro-MD
+ 0x20300102: 579, // ro-RO
+ 0x20500000: 580, // rof
+ 0x2050012d: 581, // rof-TZ
+ 0x20700000: 582, // ru
+ 0x20700046: 583, // ru-BY
+ 0x207000a3: 584, // ru-KG
+ 0x207000ac: 585, // ru-KZ
+ 0x207000ba: 586, // ru-MD
+ 0x20700104: 587, // ru-RU
+ 0x2070012e: 588, // ru-UA
+ 0x20a00000: 589, // rw
+ 0x20a00105: 590, // rw-RW
+ 0x20b00000: 591, // rwk
+ 0x20b0012d: 592, // rwk-TZ
+ 0x20f00000: 593, // sah
+ 0x20f00104: 594, // sah-RU
+ 0x21000000: 595, // saq
+ 0x210000a2: 596, // saq-KE
+ 0x21400000: 597, // sbp
+ 0x2140012d: 598, // sbp-TZ
+ 0x21c00000: 599, // sdh
+ 0x21d00000: 600, // se
+ 0x21d00070: 601, // se-FI
+ 0x21d000d8: 602, // se-NO
+ 0x21d0010a: 603, // se-SE
+ 0x21f00000: 604, // seh
+ 0x21f000cf: 605, // seh-MZ
+ 0x22100000: 606, // ses
+ 0x221000c1: 607, // ses-ML
+ 0x22200000: 608, // sg
+ 0x2220004b: 609, // sg-CF
+ 0x22600000: 610, // shi
+ 0x22652000: 611, // shi-Latn
+ 0x226520b8: 612, // shi-Latn-MA
+ 0x226d2000: 613, // shi-Tfng
+ 0x226d20b8: 614, // shi-Tfng-MA
+ 0x22800000: 615, // si
+ 0x228000b1: 616, // si-LK
+ 0x22a00000: 617, // sk
+ 0x22a0010f: 618, // sk-SK
+ 0x22c00000: 619, // sl
+ 0x22c0010d: 620, // sl-SI
+ 0x23000000: 621, // sma
+ 0x23100000: 622, // smi
+ 0x23200000: 623, // smj
+ 0x23300000: 624, // smn
+ 0x23300070: 625, // smn-FI
+ 0x23500000: 626, // sms
+ 0x23600000: 627, // sn
+ 0x23600161: 628, // sn-ZW
+ 0x23800000: 629, // so
+ 0x23800061: 630, // so-DJ
+ 0x2380006e: 631, // so-ET
+ 0x238000a2: 632, // so-KE
+ 0x23800113: 633, // so-SO
+ 0x23a00000: 634, // sq
+ 0x23a00026: 635, // sq-AL
+ 0x23a000c0: 636, // sq-MK
+ 0x23a0014a: 637, // sq-XK
+ 0x23b00000: 638, // sr
+ 0x23b1e000: 639, // sr-Cyrl
+ 0x23b1e032: 640, // sr-Cyrl-BA
+ 0x23b1e0bb: 641, // sr-Cyrl-ME
+ 0x23b1e103: 642, // sr-Cyrl-RS
+ 0x23b1e14a: 643, // sr-Cyrl-XK
+ 0x23b52000: 644, // sr-Latn
+ 0x23b52032: 645, // sr-Latn-BA
+ 0x23b520bb: 646, // sr-Latn-ME
+ 0x23b52103: 647, // sr-Latn-RS
+ 0x23b5214a: 648, // sr-Latn-XK
+ 0x24000000: 649, // ss
+ 0x24100000: 650, // ssy
+ 0x24200000: 651, // st
+ 0x24700000: 652, // sv
+ 0x24700030: 653, // sv-AX
+ 0x24700070: 654, // sv-FI
+ 0x2470010a: 655, // sv-SE
+ 0x24800000: 656, // sw
+ 0x2480004a: 657, // sw-CD
+ 0x248000a2: 658, // sw-KE
+ 0x2480012d: 659, // sw-TZ
+ 0x2480012f: 660, // sw-UG
+ 0x24f00000: 661, // syr
+ 0x25100000: 662, // ta
+ 0x25100097: 663, // ta-IN
+ 0x251000b1: 664, // ta-LK
+ 0x251000ce: 665, // ta-MY
+ 0x2510010b: 666, // ta-SG
+ 0x25800000: 667, // te
+ 0x25800097: 668, // te-IN
+ 0x25a00000: 669, // teo
+ 0x25a000a2: 670, // teo-KE
+ 0x25a0012f: 671, // teo-UG
+ 0x25d00000: 672, // th
+ 0x25d00121: 673, // th-TH
+ 0x26100000: 674, // ti
+ 0x2610006c: 675, // ti-ER
+ 0x2610006e: 676, // ti-ET
+ 0x26200000: 677, // tig
+ 0x26400000: 678, // tk
+ 0x26400125: 679, // tk-TM
+ 0x26b00000: 680, // tn
+ 0x26c00000: 681, // to
+ 0x26c00127: 682, // to-TO
+ 0x26f00000: 683, // tr
+ 0x26f0005c: 684, // tr-CY
+ 0x26f00129: 685, // tr-TR
+ 0x27200000: 686, // ts
+ 0x27e00000: 687, // twq
+ 0x27e000d2: 688, // twq-NE
+ 0x28200000: 689, // tzm
+ 0x282000b8: 690, // tzm-MA
+ 0x28400000: 691, // ug
+ 0x28400052: 692, // ug-CN
+ 0x28600000: 693, // uk
+ 0x2860012e: 694, // uk-UA
+ 0x28c00000: 695, // ur
+ 0x28c00097: 696, // ur-IN
+ 0x28c000e6: 697, // ur-PK
+ 0x28d00000: 698, // uz
+ 0x28d05000: 699, // uz-Arab
+ 0x28d05023: 700, // uz-Arab-AF
+ 0x28d1e000: 701, // uz-Cyrl
+ 0x28d1e134: 702, // uz-Cyrl-UZ
+ 0x28d52000: 703, // uz-Latn
+ 0x28d52134: 704, // uz-Latn-UZ
+ 0x28e00000: 705, // vai
+ 0x28e52000: 706, // vai-Latn
+ 0x28e520b2: 707, // vai-Latn-LR
+ 0x28ed9000: 708, // vai-Vaii
+ 0x28ed90b2: 709, // vai-Vaii-LR
+ 0x28f00000: 710, // ve
+ 0x29200000: 711, // vi
+ 0x2920013b: 712, // vi-VN
+ 0x29700000: 713, // vo
+ 0x29700001: 714, // vo-001
+ 0x29a00000: 715, // vun
+ 0x29a0012d: 716, // vun-TZ
+ 0x29b00000: 717, // wa
+ 0x29c00000: 718, // wae
+ 0x29c0004d: 719, // wae-CH
+ 0x2a400000: 720, // wo
+ 0x2a900000: 721, // xh
+ 0x2b100000: 722, // xog
+ 0x2b10012f: 723, // xog-UG
+ 0x2b700000: 724, // yav
+ 0x2b700051: 725, // yav-CM
+ 0x2b900000: 726, // yi
+ 0x2b900001: 727, // yi-001
+ 0x2ba00000: 728, // yo
+ 0x2ba0003a: 729, // yo-BJ
+ 0x2ba000d4: 730, // yo-NG
+ 0x2bd00000: 731, // yue
+ 0x2bd0008b: 732, // yue-HK
+ 0x2c300000: 733, // zgh
+ 0x2c3000b8: 734, // zgh-MA
+ 0x2c400000: 735, // zh
+ 0x2c434000: 736, // zh-Hans
+ 0x2c434052: 737, // zh-Hans-CN
+ 0x2c43408b: 738, // zh-Hans-HK
+ 0x2c4340c4: 739, // zh-Hans-MO
+ 0x2c43410b: 740, // zh-Hans-SG
+ 0x2c435000: 741, // zh-Hant
+ 0x2c43508b: 742, // zh-Hant-HK
+ 0x2c4350c4: 743, // zh-Hant-MO
+ 0x2c43512c: 744, // zh-Hant-TW
+ 0x2c600000: 745, // zu
+ 0x2c60015e: 746, // zu-ZA
}
-// Total table size 4520 bytes (4KiB); checksum: E686101E
+// Total table size 4550 bytes (4KiB); checksum: B6D49547
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/language.go b/Godeps/_workspace/src/golang.org/x/text/language/language.go
index 8b0b0dba9..5c6dcbd94 100644
--- a/Godeps/_workspace/src/golang.org/x/text/language/language.go
+++ b/Godeps/_workspace/src/golang.org/x/text/language/language.go
@@ -347,11 +347,11 @@ func (t *Tag) remakeString() {
var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases.
b := buf[:t.genCoreBytes(buf[:])]
if extra != "" {
- diff := uint8(len(b)) - t.pVariant
+ diff := len(b) - int(t.pVariant)
b = append(b, '-')
b = append(b, extra...)
- t.pVariant += diff
- t.pExt += uint16(diff)
+ t.pVariant = uint8(int(t.pVariant) + diff)
+ t.pExt = uint16(int(t.pExt) + diff)
} else {
t.pVariant = uint8(len(b))
t.pExt = uint16(len(b))
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/tables.go b/Godeps/_workspace/src/golang.org/x/text/language/tables.go
index 5868eed53..5de0f856a 100644
--- a/Godeps/_workspace/src/golang.org/x/text/language/tables.go
+++ b/Godeps/_workspace/src/golang.org/x/text/language/tables.go
@@ -5,11 +5,11 @@ package language
import "golang.org/x/text/internal/tag"
// CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "28"
+const CLDRVersion = "29"
-const numLanguages = 8632
+const numLanguages = 8654
-const numScripts = 223
+const numScripts = 230
const numRegions = 354
@@ -18,7 +18,7 @@ type fromTo struct {
to uint16
}
-const nonCanonicalUnd = 646
+const nonCanonicalUnd = 649
const (
_af = 10
_am = 17
@@ -30,93 +30,93 @@ const (
_cs = 121
_da = 128
_de = 133
- _el = 153
- _en = 154
- _es = 156
- _et = 158
- _fa = 163
- _fi = 167
- _fil = 169
- _fr = 174
- _gu = 210
- _he = 223
- _hi = 224
- _hr = 237
- _hu = 241
- _hy = 242
- _id = 247
- _is = 257
- _it = 258
- _ja = 262
- _ka = 272
- _kk = 302
- _km = 306
- _kn = 308
- _ko = 309
- _ky = 332
- _lo = 356
- _lt = 360
- _lv = 367
- _mk = 395
- _ml = 396
- _mn = 398
- _mo = 401
- _mr = 405
- _ms = 409
- _mul = 413
- _my = 420
- _nb = 430
- _ne = 435
- _nl = 444
- _no = 448
- _pa = 469
- _pl = 485
- _pt = 493
- _ro = 513
- _ru = 517
- _sh = 547
- _si = 550
- _sk = 552
- _sl = 554
- _sq = 568
- _sr = 569
- _sv = 581
- _sw = 582
- _ta = 591
- _te = 598
- _th = 603
- _tl = 614
- _tn = 617
- _tr = 621
- _uk = 643
- _ur = 649
- _uz = 650
- _vi = 655
- _zh = 704
- _zu = 706
- _jbo = 264
- _ami = 1029
- _bnn = 1736
- _hak = 220
- _tlh = 13846
- _lb = 339
- _nv = 457
- _pwn = 11434
- _tao = 13567
- _tay = 13577
- _tsu = 14041
- _nn = 446
- _sfb = 13008
- _vgt = 15080
- _sgg = 13039
- _cmn = 2386
- _nan = 427
- _hsn = 239
+ _el = 154
+ _en = 155
+ _es = 157
+ _et = 159
+ _fa = 164
+ _fi = 168
+ _fil = 170
+ _fr = 175
+ _gu = 211
+ _he = 224
+ _hi = 225
+ _hr = 238
+ _hu = 242
+ _hy = 243
+ _id = 248
+ _is = 258
+ _it = 259
+ _ja = 263
+ _ka = 273
+ _kk = 303
+ _km = 307
+ _kn = 309
+ _ko = 310
+ _ky = 333
+ _lo = 357
+ _lt = 361
+ _lv = 368
+ _mk = 396
+ _ml = 397
+ _mn = 399
+ _mo = 402
+ _mr = 406
+ _ms = 410
+ _mul = 414
+ _my = 421
+ _nb = 431
+ _ne = 436
+ _nl = 445
+ _no = 449
+ _pa = 471
+ _pl = 487
+ _pt = 495
+ _ro = 515
+ _ru = 519
+ _sh = 549
+ _si = 552
+ _sk = 554
+ _sl = 556
+ _sq = 570
+ _sr = 571
+ _sv = 583
+ _sw = 584
+ _ta = 593
+ _te = 600
+ _th = 605
+ _tl = 616
+ _tn = 619
+ _tr = 623
+ _uk = 646
+ _ur = 652
+ _uz = 653
+ _vi = 658
+ _zh = 708
+ _zu = 710
+ _jbo = 265
+ _ami = 1033
+ _bnn = 1740
+ _hak = 221
+ _tlh = 13850
+ _lb = 340
+ _nv = 458
+ _pwn = 11438
+ _tao = 13571
+ _tay = 13581
+ _tsu = 14045
+ _nn = 447
+ _sfb = 13012
+ _vgt = 15084
+ _sgg = 13043
+ _cmn = 2390
+ _nan = 428
+ _hsn = 240
)
-const langPrivateStart = 0x2d05
+const langPrivateStart = 0x2d09
-const langPrivateEnd = 0x2f0c
+const langPrivateEnd = 0x2f10
// lang holds an alphabetically sorted list of ISO-639 language identifiers.
// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
@@ -125,7 +125,7 @@ const langPrivateEnd = 0x2f0c
// the second and third letter of the 3-letter ISO code.
// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
// For 3-byte language identifiers the 4th byte is 0.
-var lang tag.Index = "" + // Size: 2840 bytes
+var lang tag.Index = "" + // Size: 2856 bytes
"---\x00aaarabbkabr\x00ace\x00ach\x00ada\x00ady\x00aeveaeb\x00affragq\x00" +
"aho\x00akkaakk\x00aln\x00alt\x00ammhamo\x00anrgaoz\x00arraarc\x00arn\x00" +
"aro\x00arq\x00ary\x00arz\x00assmasa\x00ase\x00ast\x00atj\x00avvaawa\x00a" +
@@ -138,59 +138,59 @@ var lang tag.Index = "" + // Size: 2840 bytes
"g\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00ckb\x00cooscop" +
"\x00cps\x00crrecrj\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd" +
"\x00cuhucvhvcyymdaandak\x00dar\x00dav\x00dcc\x00deeuden\x00dgr\x00dje" +
- "\x00dnj\x00doi\x00dsb\x00dtm\x00dtp\x00dua\x00dvivdyo\x00dyu\x00dzzoebu" +
- "\x00eeweefi\x00egl\x00egy\x00eky\x00elllenngeopoes\x00\x05esu\x00etstett" +
- "\x00euusewo\x00ext\x00faasfan\x00ffulffm\x00fiinfia\x00fil\x00fit\x00fji" +
- "jfoaofon\x00frrafrc\x00frp\x00frr\x00frs\x00fud\x00fuq\x00fur\x00fuv\x00" +
- "fvr\x00fyrygalegaa\x00gag\x00gan\x00gay\x00gbm\x00gbz\x00gcr\x00gdlagez" +
- "\x00ggn\x00gil\x00gjk\x00gju\x00gllgglk\x00gnrngom\x00gon\x00gor\x00gos" +
- "\x00got\x00grc\x00grt\x00gsw\x00guujgub\x00guc\x00gur\x00guw\x00guz\x00g" +
- "vlvgvr\x00gwi\x00haauhak\x00haw\x00haz\x00heebhiinhif\x00hil\x00hlu\x00h" +
- "md\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00hrrvhsb\x00hs" +
- "n\x00htathuunhyyehzerianaiba\x00ibb\x00idndieleigboiiiiikpkikt\x00ilo" +
- "\x00inndinh\x00iodoisslittaiukuiw\x00\x03izh\x00japnjam\x00jbo\x00jgo" +
- "\x00ji\x00\x06jmc\x00jml\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac\x00kaj" +
- "\x00kam\x00kao\x00kbd\x00kcg\x00kck\x00kde\x00kdt\x00kea\x00ken\x00kfo" +
- "\x00kfr\x00kfy\x00kgonkge\x00kgp\x00kha\x00khb\x00khn\x00khq\x00kht\x00k" +
- "hw\x00kiikkiu\x00kjuakjg\x00kkazkkj\x00klalkln\x00kmhmkmb\x00knankoorkoi" +
- "\x00kok\x00kos\x00kpe\x00kraukrc\x00kri\x00krj\x00krl\x00kru\x00ksasksb" +
- "\x00ksf\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw\x00\x01kxm\x00kxp\x00k" +
- "yirlaatlab\x00lad\x00lag\x00lah\x00laj\x00lbtzlbe\x00lbw\x00lcp\x00lep" +
- "\x00lez\x00lgugliimlif\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lmn\x00lmo" +
- "\x00lninloaolol\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz" +
- "\x00lvavlwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00m" +
- "as\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00mfa\x00mfe\x00mglgmgh" +
- "\x00mgo\x00mgp\x00mgy\x00mhahmirimin\x00mis\x00mkkdmlalmls\x00mnonmni" +
- "\x00mnw\x00moolmoe\x00moh\x00mos\x00mrarmrd\x00mrj\x00mru\x00mssamtltmtr" +
- "\x00mua\x00mul\x00mus\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00myyamyv\x00m" +
- "yx\x00myz\x00mzn\x00naaunah\x00nan\x00nap\x00naq\x00nbobnch\x00nddendc" +
+ "\x00dnj\x00doi\x00dsb\x00dtm\x00dtp\x00dty\x00dua\x00dvivdyo\x00dyu\x00d" +
+ "zzoebu\x00eeweefi\x00egl\x00egy\x00eky\x00elllenngeopoes\x00\x05esu\x00e" +
+ "tstett\x00euusewo\x00ext\x00faasfan\x00ffulffm\x00fiinfia\x00fil\x00fit" +
+ "\x00fjijfoaofon\x00frrafrc\x00frp\x00frr\x00frs\x00fud\x00fuq\x00fur\x00" +
+ "fuv\x00fvr\x00fyrygalegaa\x00gag\x00gan\x00gay\x00gbm\x00gbz\x00gcr\x00g" +
+ "dlagez\x00ggn\x00gil\x00gjk\x00gju\x00gllgglk\x00gnrngom\x00gon\x00gor" +
+ "\x00gos\x00got\x00grc\x00grt\x00gsw\x00guujgub\x00guc\x00gur\x00guw\x00g" +
+ "uz\x00gvlvgvr\x00gwi\x00haauhak\x00haw\x00haz\x00heebhiinhif\x00hil\x00h" +
+ "lu\x00hmd\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00hrrvhs" +
+ "b\x00hsn\x00htathuunhyyehzerianaiba\x00ibb\x00idndieleigboiiiiikpkikt" +
+ "\x00ilo\x00inndinh\x00iodoisslittaiukuiw\x00\x03izh\x00japnjam\x00jbo" +
+ "\x00jgo\x00ji\x00\x06jmc\x00jml\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac" +
+ "\x00kaj\x00kam\x00kao\x00kbd\x00kcg\x00kck\x00kde\x00kdt\x00kea\x00ken" +
+ "\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgp\x00kha\x00khb\x00khn\x00khq\x00k" +
+ "ht\x00khw\x00kiikkiu\x00kjuakjg\x00kkazkkj\x00klalkln\x00kmhmkmb\x00knan" +
+ "koorkoi\x00kok\x00kos\x00kpe\x00kraukrc\x00kri\x00krj\x00krl\x00kru\x00k" +
+ "sasksb\x00ksf\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw\x00\x01kxm\x00kx" +
+ "p\x00kyirlaatlab\x00lad\x00lag\x00lah\x00laj\x00lbtzlbe\x00lbw\x00lcp" +
+ "\x00lep\x00lez\x00lgugliimlif\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lmn" +
+ "\x00lmo\x00lninloaolol\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy" +
+ "\x00luz\x00lvavlwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00m" +
+ "an\x00mas\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00mfa\x00mfe\x00mgl" +
+ "gmgh\x00mgo\x00mgp\x00mgy\x00mhahmirimin\x00mis\x00mkkdmlalmls\x00mnonmn" +
+ "i\x00mnw\x00moolmoe\x00moh\x00mos\x00mrarmrd\x00mrj\x00mro\x00mssamtltmt" +
+ "r\x00mua\x00mul\x00mus\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00myyamyv\x00" +
+ "myx\x00myz\x00mzn\x00naaunah\x00nan\x00nap\x00naq\x00nbobnch\x00nddendc" +
"\x00nds\x00neepnew\x00ngdongl\x00nhe\x00nhw\x00nij\x00niu\x00njo\x00nlld" +
"nmg\x00nnnonnh\x00noornod\x00noe\x00non\x00nqo\x00nrblnsk\x00nso\x00nus" +
- "\x00nvavnxq\x00nyyanym\x00nyn\x00nzi\x00occiojjiomrmorriosssotk\x00paanp" +
- "ag\x00pal\x00pam\x00pap\x00pau\x00pcd\x00pcm\x00pdc\x00pdt\x00peo\x00pfl" +
- "\x00phn\x00pilipka\x00pko\x00plolpms\x00pnt\x00pon\x00pra\x00prd\x00prg" +
- "\x00psusptorpuu\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn\x00ria\x00" +
- "rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng\x00roonrob" +
- "\x00rof\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00ryu\x00saansaf\x00s" +
- "ah\x00saq\x00sas\x00sat\x00saz\x00sbp\x00scrdsck\x00scn\x00sco\x00scs" +
- "\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga\x00sgs\x00" +
- "sh\x00\x02shi\x00shn\x00siinsid\x00sklkskr\x00sllvsli\x00sly\x00smmosma" +
- "\x00smi\x00smj\x00smn\x00smp\x00sms\x00snnasnk\x00soomsou\x00sqqisrrpsrb" +
- "\x00srn\x00srr\x00srx\x00ssswssy\x00stotstq\x00suunsuk\x00sus\x00svwesww" +
- "aswb\x00swc\x00swg\x00swv\x00sxn\x00syl\x00syr\x00szl\x00taamtaj\x00tbw" +
- "\x00tcy\x00tdd\x00tdg\x00tdh\x00teeltem\x00teo\x00tet\x00tggkthhathl\x00" +
- "thq\x00thr\x00tiirtig\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlgltly\x00tmh" +
- "\x00tnsntoontog\x00tpi\x00trurtru\x00trv\x00tssotsd\x00tsf\x00tsg\x00tsj" +
- "\x00ttatttj\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00tyahtyv\x00tzm\x00" +
- "udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx\x00urrduzzbvai\x00" +
- "veenvec\x00vep\x00viievic\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun" +
- "\x00walnwae\x00wal\x00war\x00wbp\x00wbq\x00wbr\x00wls\x00wni\x00woolwtm" +
- "\x00wuu\x00xav\x00xcr\x00xhhoxlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00x" +
- "nr\x00xog\x00xpr\x00xsa\x00xsr\x00yao\x00yap\x00yav\x00ybb\x00yiidyooryr" +
- "l\x00yua\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozmi\x00zuulzxx" +
- "\x00zza\x00\xff\xff\xff\xff"
+ "\x00nvavnxq\x00nyyanym\x00nyn\x00nzi\x00occiojjiomrmorriosssosa\x00otk" +
+ "\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pcd\x00pcm\x00pdc\x00pdt\x00p" +
+ "eo\x00pfl\x00phn\x00pilipka\x00pko\x00plolpms\x00pnt\x00pon\x00pra\x00pr" +
+ "d\x00prg\x00psusptorpuu\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn" +
+ "\x00ria\x00rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng" +
+ "\x00roonrob\x00rof\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00ryu\x00s" +
+ "aansaf\x00sah\x00saq\x00sas\x00sat\x00saz\x00sbp\x00scrdsck\x00scn\x00sc" +
+ "o\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga" +
+ "\x00sgs\x00sh\x00\x02shi\x00shn\x00siinsid\x00sklkskr\x00sllvsli\x00sly" +
+ "\x00smmosma\x00smi\x00smj\x00smn\x00smp\x00sms\x00snnasnk\x00soomsou\x00" +
+ "sqqisrrpsrb\x00srn\x00srr\x00srx\x00ssswssy\x00stotstq\x00suunsuk\x00sus" +
+ "\x00svweswwaswb\x00swc\x00swg\x00swv\x00sxn\x00syl\x00syr\x00szl\x00taam" +
+ "taj\x00tbw\x00tcy\x00tdd\x00tdg\x00tdh\x00teeltem\x00teo\x00tet\x00tggkt" +
+ "hhathl\x00thq\x00thr\x00tiirtig\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlglt" +
+ "ly\x00tmh\x00tnsntoontog\x00tpi\x00trurtru\x00trv\x00tssotsd\x00tsf\x00t" +
+ "sg\x00tsj\x00ttatttj\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00txg\x00ty" +
+ "ahtyv\x00tzm\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx" +
+ "\x00urrduzzbvai\x00veenvec\x00vep\x00viievic\x00vls\x00vmf\x00vmw\x00voo" +
+ "lvot\x00vro\x00vun\x00walnwae\x00wal\x00war\x00wbp\x00wbq\x00wbr\x00wls" +
+ "\x00wni\x00woolwtm\x00wuu\x00xav\x00xcr\x00xhhoxlc\x00xld\x00xmf\x00xmn" +
+ "\x00xmr\x00xna\x00xnr\x00xog\x00xpr\x00xsa\x00xsr\x00yao\x00yap\x00yav" +
+ "\x00ybb\x00yiidyooryrl\x00yua\x00yue\x00zahazag\x00zbl\x00zdj\x00zea\x00" +
+ "zgh\x00zhhozmi\x00zuulzxx\x00zza\x00\xff\xff\xff\xff"
-const langNoIndexOffset = 709
+const langNoIndexOffset = 713
// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
// in lookup tables. The language ids for these language codes are derived directly
@@ -241,10 +241,10 @@ var langNoIndex = [2197]uint8{
0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f,
0x56, 0x89, 0x5e, 0xb7, 0xec, 0xef, 0x03, 0x00,
0x02, 0x00, 0x00, 0x00, 0xc0, 0x77, 0xda, 0x57,
- 0x90, 0x69, 0x01, 0x2c, 0x16, 0x79, 0xe4, 0xff,
+ 0x90, 0x69, 0x01, 0x2c, 0x96, 0x79, 0xe0, 0xff,
// Entry 140 - 17F
- 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x46,
- 0x00, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x16,
+ 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x56,
+ 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x16,
0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09,
0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04,
@@ -253,7 +253,7 @@ var langNoIndex = [2197]uint8{
0x24, 0x53, 0xf5, 0xd4, 0xbd, 0xe2, 0xcd, 0x03,
// Entry 180 - 1BF
0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x17, 0x39, 0x01, 0xd9, 0x57, 0x98,
+ 0x00, 0x04, 0x17, 0x39, 0x01, 0xdd, 0x57, 0x98,
0x21, 0x98, 0xa5, 0x00, 0x00, 0x01, 0x40, 0x82,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0xb0, 0xfe,
@@ -263,7 +263,7 @@ var langNoIndex = [2197]uint8{
// Entry 1C0 - 1FF
0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,
0x04, 0x20, 0x04, 0xa6, 0x08, 0x04, 0x00, 0x08,
- 0x01, 0x50, 0x00, 0x00, 0x08, 0x11, 0x86, 0x40,
+ 0x81, 0x50, 0x00, 0x00, 0x08, 0x11, 0x86, 0x40,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x55,
0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x60,
0x3b, 0x83, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00,
@@ -273,7 +273,7 @@ var langNoIndex = [2197]uint8{
0xdf, 0xc7, 0x83, 0x82, 0xc0, 0xff, 0xdf, 0x27,
0xcf, 0x5f, 0xe7, 0x01, 0x10, 0x20, 0xb2, 0xc5,
0xa4, 0x45, 0x25, 0x9b, 0x03, 0xcf, 0xf0, 0xdf,
- 0x03, 0xc4, 0x00, 0x10, 0x01, 0x0e, 0x01, 0xe3,
+ 0x03, 0xc4, 0x08, 0x10, 0x01, 0x0e, 0x01, 0xe3,
0x92, 0x54, 0xdb, 0x38, 0xf1, 0x7f, 0xf7, 0x6d,
0xf9, 0xff, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01,
0x21, 0x12, 0x6c, 0x5f, 0xdd, 0x0f, 0x85, 0x4f,
@@ -298,10 +298,10 @@ var langNoIndex = [2197]uint8{
0x85, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,
// Entry 2C0 - 2FF
0x02, 0x50, 0x88, 0x11, 0x00, 0xd1, 0x6c, 0xee,
- 0x50, 0x03, 0x1d, 0x11, 0x69, 0x06, 0x59, 0xe9,
+ 0x50, 0x27, 0x1d, 0x11, 0x69, 0x06, 0x59, 0xe9,
0x33, 0x08, 0x00, 0x20, 0x05, 0x40, 0x10, 0x00,
0x00, 0x00, 0x50, 0x44, 0x96, 0x49, 0xd6, 0x5d,
- 0xa7, 0x81, 0x45, 0x97, 0xfb, 0x00, 0x10, 0x00,
+ 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00,
0x08, 0x00, 0x80, 0x00, 0x40, 0x45, 0x00, 0x01,
0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x04, 0x08,
0xf8, 0xeb, 0xf6, 0x39, 0xc4, 0x89, 0x16, 0x00,
@@ -309,8 +309,8 @@ var langNoIndex = [2197]uint8{
0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa2,
0x01, 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x00,
0x04, 0x10, 0xf0, 0x9d, 0x95, 0x13, 0x04, 0x80,
- 0x00, 0x00, 0xd0, 0x12, 0x40, 0x00, 0x10, 0xb0,
- 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x0a, 0x00,
+ 0x00, 0x01, 0xd0, 0x12, 0x40, 0x00, 0x10, 0xb0,
+ 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00,
0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0xc0,
0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00,
@@ -344,10 +344,10 @@ var langNoIndex = [2197]uint8{
// Entry 400 - 43F
0xd7, 0x6f, 0xff, 0xff, 0xdf, 0x7d, 0xbb, 0xff,
0xff, 0xff, 0xf7, 0xf3, 0xef, 0xff, 0xff, 0xf7,
- 0xff, 0xdf, 0xdb, 0x77, 0xff, 0xff, 0x7f, 0xff,
+ 0xff, 0xdf, 0xdb, 0x7f, 0xff, 0xff, 0x7f, 0xff,
0xff, 0xff, 0xef, 0xff, 0xbc, 0xff, 0xff, 0xfb,
0xff, 0xfb, 0xff, 0xde, 0x76, 0xbd, 0xff, 0xf7,
- 0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xf3, 0xbf,
+ 0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xf3, 0xfe,
0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xde,
0xf7, 0xbb, 0xef, 0xf7, 0xff, 0xfb, 0xbf, 0xdf,
// Entry 440 - 47F
@@ -361,7 +361,7 @@ var langNoIndex = [2197]uint8{
0xe5, 0xdf, 0x7d, 0x0f, 0xa7, 0x51, 0x04, 0x44,
// Entry 480 - 4BF
0x13, 0xd0, 0x5d, 0xaf, 0xa6, 0xfd, 0xb9, 0xff,
- 0x43, 0x5d, 0x5b, 0xff, 0xff, 0xbf, 0x3f, 0x20,
+ 0x63, 0x5d, 0x5b, 0xff, 0xff, 0xbf, 0x3f, 0x20,
0x14, 0x00, 0x57, 0x51, 0x82, 0x65, 0xf5, 0x49,
0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05,
0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04,
@@ -369,17 +369,17 @@ var langNoIndex = [2197]uint8{
0x00, 0x51, 0x60, 0x05, 0x04, 0x01, 0x00, 0x00,
0x06, 0x01, 0x20, 0x00, 0x18, 0x01, 0x92, 0xb1,
// Entry 4C0 - 4FF
- 0xfd, 0x67, 0x4b, 0x06, 0x95, 0x02, 0x57, 0xed,
+ 0xfd, 0x67, 0x4b, 0x06, 0x95, 0x06, 0x57, 0xed,
0xfb, 0x4c, 0x9d, 0x7b, 0x83, 0x04, 0x62, 0x40,
0x00, 0x15, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83,
- 0xf9, 0x5f, 0x10, 0x8c, 0xc9, 0x46, 0xde, 0xf7,
- 0x13, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+ 0xf9, 0x4f, 0x10, 0x8c, 0xc9, 0x46, 0xde, 0xf7,
+ 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,
0x01, 0x40, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x7d,
0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,
// Entry 500 - 53F
0xb0, 0xff, 0x79, 0x7a, 0x04, 0x00, 0x00, 0x49,
- 0x2d, 0x14, 0x25, 0x77, 0xed, 0xf1, 0xbf, 0xef,
+ 0x2d, 0x14, 0x27, 0x77, 0xed, 0xf1, 0xbf, 0xef,
0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xfc,
0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xf5, 0xff,
0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7f, 0x10,
@@ -408,9 +408,9 @@ var langNoIndex = [2197]uint8{
0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0x7e, 0x02,
0xaa, 0x10, 0x5d, 0xd8, 0x52, 0x00, 0x80, 0x20,
0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x02, 0x02,
- 0x09, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,
+ 0x19, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,
0x31, 0x00, 0x00, 0x00, 0x01, 0x50, 0x02, 0x20,
- 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,
0x00, 0x1f, 0xdf, 0xf2, 0xfd, 0xff, 0xfd, 0x3f,
0x9f, 0x18, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe,
// Entry 600 - 63F
@@ -425,7 +425,7 @@ var langNoIndex = [2197]uint8{
// Entry 640 - 67F
0x75, 0xc4, 0x7d, 0x81, 0x82, 0xf1, 0xd7, 0x7e,
0xff, 0xff, 0xff, 0xef, 0xff, 0xfd, 0xdd, 0xde,
- 0xbc, 0xfd, 0xf6, 0x5f, 0x7a, 0x1f, 0x40, 0x98,
+ 0xfc, 0xfd, 0xf6, 0x5f, 0x7a, 0x1f, 0x40, 0x98,
0x02, 0xff, 0xe3, 0xff, 0xf3, 0xd6, 0xf2, 0xff,
0xfb, 0xdf, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4,
0xf5, 0xbe, 0xff, 0xff, 0xf3, 0xf7, 0xff, 0xf7,
@@ -434,7 +434,7 @@ var langNoIndex = [2197]uint8{
// Entry 680 - 6BF
0x97, 0x9d, 0xff, 0xff, 0xf7, 0xcf, 0xfd, 0xbf,
0xde, 0x7f, 0x06, 0x1d, 0x57, 0xff, 0xf8, 0xda,
- 0x5d, 0xcf, 0x7d, 0x16, 0xb9, 0xea, 0x69, 0xa0,
+ 0x5d, 0xce, 0x7d, 0x16, 0xb9, 0xea, 0x69, 0xa0,
0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x48,
0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,
0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06,
@@ -466,12 +466,12 @@ var langNoIndex = [2197]uint8{
0x05, 0x04, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55,
0x97, 0x7c, 0x9f, 0x71, 0xcc, 0x78, 0xd1, 0x43,
0xf5, 0x57, 0x67, 0x14, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x2c, 0xf7, 0xdb, 0x1f, 0x50, 0x60,
+ 0x00, 0x00, 0x2c, 0xf7, 0xdb, 0x1f, 0x54, 0x60,
// Entry 780 - 7BF
0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0xaa, 0x01,
0x00, 0x00, 0x30, 0x00, 0x24, 0x44, 0x00, 0x00,
0x10, 0x03, 0x11, 0x02, 0x01, 0x00, 0x00, 0xf0,
- 0xb5, 0xff, 0xd5, 0xd7, 0xbc, 0x70, 0xd6, 0x78,
+ 0xf5, 0xff, 0xd5, 0xd7, 0xbc, 0x70, 0xd6, 0x78,
0x78, 0x15, 0x50, 0x00, 0xa4, 0x84, 0xe9, 0x41,
0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x00,
0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,
@@ -490,8 +490,8 @@ var langNoIndex = [2197]uint8{
0xbf, 0x03, 0x00, 0x00, 0x10, 0xd4, 0xa7, 0xd1,
0x54, 0x9e, 0x44, 0xdf, 0xfd, 0x8f, 0x66, 0xb3,
0x55, 0x20, 0xd4, 0xc3, 0xd8, 0x30, 0x3d, 0x80,
- 0x00, 0x00, 0x00, 0x4c, 0xd4, 0x10, 0xc5, 0x84,
- 0x6e, 0x50, 0x00, 0x22, 0x50, 0x7e, 0xbf, 0xdb,
+ 0x00, 0x00, 0x00, 0x4c, 0xd4, 0x11, 0xc5, 0x84,
+ 0x6e, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbf, 0xdb,
0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,
0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,
// Entry 840 - 87F
@@ -517,304 +517,328 @@ var altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\x
// altLangIndex is used to convert indexes in altLangISO3 to langIDs.
// Size: 12 bytes, 6 elements
var altLangIndex = [6]uint16{
- 0x0149, 0x0223, 0x0104, 0x0208, 0x009c, 0x010a,
+ 0x014a, 0x0225, 0x0105, 0x020a, 0x009d, 0x010b,
}
// langAliasMap maps langIDs to their suggested replacements.
-// Size: 556 bytes, 139 elements
-var langAliasMap = [139]fromTo{
- 0: {from: 0xfe, to: 0xf7},
- 1: {from: 0x104, to: 0xdf},
- 2: {from: 0x10a, to: 0x2b6},
- 3: {from: 0x10f, to: 0x10e},
- 4: {from: 0x191, to: 0x201},
- 5: {from: 0x1ae, to: 0x1c0},
- 6: {from: 0x223, to: 0x239},
- 7: {from: 0x266, to: 0xa9},
- 8: {from: 0x272, to: 0x250},
- 9: {from: 0x27b, to: 0xd},
- 10: {from: 0x2d1, to: 0x2d7},
- 11: {from: 0x322, to: 0x92},
- 12: {from: 0x3c3, to: 0x1c44},
- 13: {from: 0x3e4, to: 0x238},
- 14: {from: 0x3f5, to: 0x238},
- 15: {from: 0x480, to: 0x15},
- 16: {from: 0x48b, to: 0xf2},
- 17: {from: 0x4d1, to: 0x1f34},
- 18: {from: 0x546, to: 0x23},
- 19: {from: 0x54c, to: 0x272e},
- 20: {from: 0x558, to: 0x24},
- 21: {from: 0x579, to: 0xa0},
- 22: {from: 0x59f, to: 0x26},
- 23: {from: 0x5a8, to: 0x42},
- 24: {from: 0x656, to: 0xc76},
- 25: {from: 0x782, to: 0x1a4},
- 26: {from: 0x7c9, to: 0x16d},
- 27: {from: 0x7d0, to: 0x59},
- 28: {from: 0x851, to: 0x30b5},
- 29: {from: 0x8cb, to: 0x2c0},
- 30: {from: 0x908, to: 0x23ed},
- 31: {from: 0x911, to: 0x956},
- 32: {from: 0x92e, to: 0x24d},
- 33: {from: 0x94f, to: 0x3fbc},
- 34: {from: 0x952, to: 0x2c0},
- 35: {from: 0xa4c, to: 0x73},
- 36: {from: 0xa9b, to: 0x79},
- 37: {from: 0xb5b, to: 0x8a},
- 38: {from: 0xb6a, to: 0x1a1},
- 39: {from: 0xb8b, to: 0xb8e},
- 40: {from: 0xb91, to: 0x2c4},
- 41: {from: 0xc72, to: 0x1ded},
- 42: {from: 0xc81, to: 0x2c2d},
- 43: {from: 0xccc, to: 0x1bc},
- 44: {from: 0xe63, to: 0x9e},
- 45: {from: 0xe97, to: 0x178},
- 46: {from: 0xf33, to: 0xfb},
- 47: {from: 0x100c, to: 0xd},
- 48: {from: 0x11b7, to: 0xae},
- 49: {from: 0x1203, to: 0xa5},
- 50: {from: 0x12b2, to: 0xb2e},
- 51: {from: 0x12b6, to: 0x1d1},
- 52: {from: 0x12c5, to: 0x1458},
- 53: {from: 0x1313, to: 0x110},
- 54: {from: 0x1316, to: 0x85},
- 55: {from: 0x1336, to: 0x3a42},
- 56: {from: 0x13fd, to: 0xcb},
- 57: {from: 0x145b, to: 0x99},
- 58: {from: 0x1493, to: 0x278b},
- 59: {from: 0x14ab, to: 0xc9},
- 60: {from: 0x150d, to: 0x12b7},
- 61: {from: 0x159c, to: 0x1549},
- 62: {from: 0x15a9, to: 0x1686},
- 63: {from: 0x161d, to: 0x23d},
- 64: {from: 0x170c, to: 0x1a94},
- 65: {from: 0x1807, to: 0x2943},
- 66: {from: 0x181d, to: 0x101},
- 67: {from: 0x18ed, to: 0x103},
- 68: {from: 0x1919, to: 0x12a8},
- 69: {from: 0x1dd0, to: 0x1e70},
- 70: {from: 0x1ded, to: 0x18e},
- 71: {from: 0x1e76, to: 0x144},
- 72: {from: 0x1e81, to: 0x13a},
- 73: {from: 0x1e85, to: 0x121},
- 74: {from: 0x1e8c, to: 0x137},
- 75: {from: 0x1ea2, to: 0x1f7e},
- 76: {from: 0x1ec8, to: 0x146},
- 77: {from: 0x1f79, to: 0x4231},
- 78: {from: 0x1f87, to: 0x3716},
- 79: {from: 0x1ff5, to: 0x6bd},
- 80: {from: 0x20a9, to: 0x2fb9},
- 81: {from: 0x2115, to: 0x30f8},
- 82: {from: 0x2205, to: 0x16f},
- 83: {from: 0x2277, to: 0x18b},
- 84: {from: 0x2283, to: 0x188},
- 85: {from: 0x228d, to: 0x199},
- 86: {from: 0x22e3, to: 0x8ee},
- 87: {from: 0x233c, to: 0x69},
- 88: {from: 0x23d1, to: 0x178},
- 89: {from: 0x245c, to: 0x2447},
- 90: {from: 0x248c, to: 0x1f2},
- 91: {from: 0x24ba, to: 0x3a42},
- 92: {from: 0x24f8, to: 0x2447},
- 93: {from: 0x2682, to: 0x25ca},
- 94: {from: 0x26a7, to: 0x1b3},
- 95: {from: 0x28ad, to: 0x1d0},
- 96: {from: 0x298f, to: 0x1d2},
- 97: {from: 0x29d2, to: 0x3a42},
- 98: {from: 0x2a8f, to: 0x1ec},
- 99: {from: 0x2aa6, to: 0x32a},
- 100: {from: 0x2ada, to: 0xa3},
- 101: {from: 0x2adb, to: 0xa3},
- 102: {from: 0x2b92, to: 0x182},
- 103: {from: 0x2bad, to: 0x2b28},
- 104: {from: 0x2bb4, to: 0x151},
- 105: {from: 0x2bf8, to: 0x2015},
- 106: {from: 0x2c82, to: 0x2c6a},
- 107: {from: 0x2f26, to: 0x1ef},
- 108: {from: 0x30f9, to: 0x3121},
- 109: {from: 0x31bd, to: 0x201},
- 110: {from: 0x3281, to: 0x1663},
- 111: {from: 0x3379, to: 0x228},
- 112: {from: 0x33eb, to: 0x131},
- 113: {from: 0x3409, to: 0x213},
- 114: {from: 0x3490, to: 0x246},
- 115: {from: 0x35be, to: 0x2a2e},
- 116: {from: 0x35c2, to: 0x4c},
- 117: {from: 0x35c5, to: 0x2fbb},
- 118: {from: 0x35ff, to: 0x3739},
- 119: {from: 0x3625, to: 0x3d53},
- 120: {from: 0x3648, to: 0x2c2d},
- 121: {from: 0x36ef, to: 0x268},
- 122: {from: 0x38e1, to: 0xb24},
- 123: {from: 0x390b, to: 0xe8d},
- 124: {from: 0x3a2c, to: 0x28a},
- 125: {from: 0x3d50, to: 0x7f},
- 126: {from: 0x4051, to: 0x306},
- 127: {from: 0x410b, to: 0x139},
- 128: {from: 0x415e, to: 0x345e},
- 129: {from: 0x4160, to: 0x86},
- 130: {from: 0x4242, to: 0x30b5},
- 131: {from: 0x4276, to: 0x2b6},
- 132: {from: 0x435d, to: 0x219c},
- 133: {from: 0x4370, to: 0x246f},
- 134: {from: 0x43a3, to: 0x4641},
- 135: {from: 0x4441, to: 0x4433},
- 136: {from: 0x44d1, to: 0x44d8},
- 137: {from: 0x46a9, to: 0x199},
- 138: {from: 0x473a, to: 0x2ba},
+// Size: 640 bytes, 160 elements
+var langAliasMap = [160]fromTo{
+ 0: {from: 0xc4, to: 0xda},
+ 1: {from: 0xff, to: 0xf8},
+ 2: {from: 0x105, to: 0xe0},
+ 3: {from: 0x10b, to: 0x2b9},
+ 4: {from: 0x110, to: 0x10f},
+ 5: {from: 0x192, to: 0x203},
+ 6: {from: 0x1af, to: 0x1c1},
+ 7: {from: 0x225, to: 0x23b},
+ 8: {from: 0x268, to: 0xaa},
+ 9: {from: 0x274, to: 0x252},
+ 10: {from: 0x27d, to: 0xd},
+ 11: {from: 0x2d5, to: 0x2db},
+ 12: {from: 0x326, to: 0x93},
+ 13: {from: 0x3c7, to: 0x1c48},
+ 14: {from: 0x3e8, to: 0x23a},
+ 15: {from: 0x3f9, to: 0x23a},
+ 16: {from: 0x484, to: 0x15},
+ 17: {from: 0x48f, to: 0xf3},
+ 18: {from: 0x4d5, to: 0x1f38},
+ 19: {from: 0x54a, to: 0x23},
+ 20: {from: 0x550, to: 0x2732},
+ 21: {from: 0x55c, to: 0x24},
+ 22: {from: 0x57d, to: 0xa1},
+ 23: {from: 0x5a3, to: 0x26},
+ 24: {from: 0x5ac, to: 0x42},
+ 25: {from: 0x615, to: 0x5a7},
+ 26: {from: 0x65a, to: 0xc7a},
+ 27: {from: 0x786, to: 0x1a5},
+ 28: {from: 0x7cd, to: 0x16e},
+ 29: {from: 0x7d4, to: 0x59},
+ 30: {from: 0x855, to: 0x30b9},
+ 31: {from: 0x8cf, to: 0x2c4},
+ 32: {from: 0x90c, to: 0x23f1},
+ 33: {from: 0x915, to: 0x95a},
+ 34: {from: 0x932, to: 0x24f},
+ 35: {from: 0x953, to: 0x3fc0},
+ 36: {from: 0x956, to: 0x2c4},
+ 37: {from: 0x995, to: 0x2b3e},
+ 38: {from: 0x9c5, to: 0x2f18},
+ 39: {from: 0xa50, to: 0x73},
+ 40: {from: 0xa9f, to: 0x79},
+ 41: {from: 0xb5f, to: 0x8a},
+ 42: {from: 0xb6e, to: 0x1a2},
+ 43: {from: 0xb8f, to: 0xb92},
+ 44: {from: 0xb95, to: 0x2c8},
+ 45: {from: 0xc76, to: 0x1df1},
+ 46: {from: 0xc85, to: 0x2c31},
+ 47: {from: 0xcd0, to: 0x1bd},
+ 48: {from: 0xe67, to: 0x9f},
+ 49: {from: 0xe9b, to: 0x179},
+ 50: {from: 0xf37, to: 0xfc},
+ 51: {from: 0x1010, to: 0xd},
+ 52: {from: 0x11bb, to: 0xaf},
+ 53: {from: 0x1207, to: 0xa6},
+ 54: {from: 0x12b6, to: 0xb32},
+ 55: {from: 0x12ba, to: 0x1d2},
+ 56: {from: 0x12c9, to: 0x145c},
+ 57: {from: 0x1317, to: 0x111},
+ 58: {from: 0x131a, to: 0x85},
+ 59: {from: 0x133a, to: 0x3a46},
+ 60: {from: 0x1401, to: 0xcc},
+ 61: {from: 0x145f, to: 0x9a},
+ 62: {from: 0x1497, to: 0x278f},
+ 63: {from: 0x14af, to: 0xca},
+ 64: {from: 0x14be, to: 0xcd6},
+ 65: {from: 0x1511, to: 0x12bb},
+ 66: {from: 0x15a0, to: 0x154d},
+ 67: {from: 0x15ad, to: 0x168a},
+ 68: {from: 0x1621, to: 0x23f},
+ 69: {from: 0x1710, to: 0x1a98},
+ 70: {from: 0x180b, to: 0x2947},
+ 71: {from: 0x1821, to: 0x102},
+ 72: {from: 0x18f1, to: 0x104},
+ 73: {from: 0x191d, to: 0x12ac},
+ 74: {from: 0x1dcf, to: 0x3548},
+ 75: {from: 0x1dd4, to: 0x1e74},
+ 76: {from: 0x1df1, to: 0x18f},
+ 77: {from: 0x1e7a, to: 0x145},
+ 78: {from: 0x1e85, to: 0x13b},
+ 79: {from: 0x1e89, to: 0x122},
+ 80: {from: 0x1e90, to: 0x138},
+ 81: {from: 0x1ea6, to: 0x1f82},
+ 82: {from: 0x1ecc, to: 0x147},
+ 83: {from: 0x1f30, to: 0x8d},
+ 84: {from: 0x1f65, to: 0x12f8},
+ 85: {from: 0x1f7d, to: 0x4235},
+ 86: {from: 0x1f8b, to: 0x371a},
+ 87: {from: 0x1fc4, to: 0x8d},
+ 88: {from: 0x1fce, to: 0x8d},
+ 89: {from: 0x1ff9, to: 0x6c1},
+ 90: {from: 0x20ad, to: 0x2fbd},
+ 91: {from: 0x2119, to: 0x30fc},
+ 92: {from: 0x2209, to: 0x170},
+ 93: {from: 0x227b, to: 0x18c},
+ 94: {from: 0x2287, to: 0x189},
+ 95: {from: 0x2291, to: 0x19a},
+ 96: {from: 0x22e7, to: 0x8f2},
+ 97: {from: 0x2340, to: 0x69},
+ 98: {from: 0x23d5, to: 0x179},
+ 99: {from: 0x2460, to: 0x244b},
+ 100: {from: 0x2490, to: 0x1f4},
+ 101: {from: 0x24be, to: 0x3a46},
+ 102: {from: 0x24fc, to: 0x244b},
+ 103: {from: 0x2520, to: 0x40ef},
+ 104: {from: 0x2686, to: 0x25ce},
+ 105: {from: 0x26ab, to: 0x1b4},
+ 106: {from: 0x271d, to: 0x2b3e},
+ 107: {from: 0x28b1, to: 0x1d1},
+ 108: {from: 0x2993, to: 0x1d3},
+ 109: {from: 0x29d6, to: 0x3a46},
+ 110: {from: 0x2a93, to: 0x1ee},
+ 111: {from: 0x2aaa, to: 0x32e},
+ 112: {from: 0x2ade, to: 0xa4},
+ 113: {from: 0x2adf, to: 0xa4},
+ 114: {from: 0x2b96, to: 0x183},
+ 115: {from: 0x2b9f, to: 0x1763},
+ 116: {from: 0x2bb1, to: 0x2b2c},
+ 117: {from: 0x2bb8, to: 0x152},
+ 118: {from: 0x2beb, to: 0x37},
+ 119: {from: 0x2bfc, to: 0x2019},
+ 120: {from: 0x2c37, to: 0x2c32},
+ 121: {from: 0x2c86, to: 0x2c6e},
+ 122: {from: 0x2f2a, to: 0x1f1},
+ 123: {from: 0x30fd, to: 0x3125},
+ 124: {from: 0x31c1, to: 0x203},
+ 125: {from: 0x3285, to: 0x1667},
+ 126: {from: 0x337d, to: 0x22a},
+ 127: {from: 0x33ef, to: 0x132},
+ 128: {from: 0x340d, to: 0x215},
+ 129: {from: 0x3494, to: 0x248},
+ 130: {from: 0x3557, to: 0x8d},
+ 131: {from: 0x35ad, to: 0x3689},
+ 132: {from: 0x35c2, to: 0x2a32},
+ 133: {from: 0x35c6, to: 0x4c},
+ 134: {from: 0x35c9, to: 0x2fbf},
+ 135: {from: 0x3603, to: 0x373d},
+ 136: {from: 0x3629, to: 0x3d57},
+ 137: {from: 0x363c, to: 0x376e},
+ 138: {from: 0x364b, to: 0x1d3b},
+ 139: {from: 0x364c, to: 0x2c31},
+ 140: {from: 0x36f3, to: 0x26a},
+ 141: {from: 0x38e5, to: 0xb28},
+ 142: {from: 0x390f, to: 0xe91},
+ 143: {from: 0x3a30, to: 0x28d},
+ 144: {from: 0x3d54, to: 0x7f},
+ 145: {from: 0x3f9f, to: 0x828},
+ 146: {from: 0x4055, to: 0x30a},
+ 147: {from: 0x4090, to: 0x3cf7},
+ 148: {from: 0x410f, to: 0x13a},
+ 149: {from: 0x4162, to: 0x3462},
+ 150: {from: 0x4164, to: 0x86},
+ 151: {from: 0x4246, to: 0x30b9},
+ 152: {from: 0x427a, to: 0x2b9},
+ 153: {from: 0x4361, to: 0x21a0},
+ 154: {from: 0x4374, to: 0x2473},
+ 155: {from: 0x43a7, to: 0x4645},
+ 156: {from: 0x4445, to: 0x4437},
+ 157: {from: 0x44d5, to: 0x44dc},
+ 158: {from: 0x46ad, to: 0x19a},
+ 159: {from: 0x473e, to: 0x2be},
}
-// Size: 139 bytes, 139 elements
-var langAliasTypes = [139]langAliasType{
+// Size: 160 bytes, 160 elements
+var langAliasTypes = [160]langAliasType{
// Entry 0 - 3F
- 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, 1, 1,
- 2, 0, 1, 0, 1, 2, 1, 1, 0, 2, 1, 1, 0, 2, 0, 0,
- 1, 0, 1, 1, 2, 1, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1,
- 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, 1,
+ 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0, 2,
+ 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 2,
+ 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1,
// Entry 40 - 7F
- 0, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1,
- 0, 0, 1, 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1,
- 1, 0, 1, 0, 2, 1, 1, 0, 1, 0, 0, 1, 1, 2, 0, 2,
- 1, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0, 1,
+ 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 1, 1, 1, 1,
+ 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 2, 2,
+ 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0,
+ 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 2, 1,
// Entry 80 - BF
- 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1,
+ 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,
+ 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1,
}
const (
- _Latn = 79
- _Hani = 48
- _Hans = 50
- _Hant = 51
- _Qaaa = 125
- _Qaai = 133
- _Qabx = 174
- _Zinh = 218
- _Zyyy = 222
- _Zzzz = 223
+ _Latn = 82
+ _Hani = 50
+ _Hans = 52
+ _Hant = 53
+ _Qaaa = 131
+ _Qaai = 139
+ _Qabx = 180
+ _Zinh = 224
+ _Zyyy = 229
+ _Zzzz = 230
)
// script is an alphabetically sorted list of ISO 15924 codes. The index
// of the script in the string, divided by 4, is the internal scriptID.
-var script tag.Index = "" + // Size: 900 bytes
- "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBlisBopoBrah" +
- "BraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyh" +
- "EgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHangHaniHanoHansHantHatrHebr" +
- "HiraHluwHmngHrktHungIndsItalJavaJpanJurcKaliKanaKharKhmrKhojKitlKitsKnda" +
- "KoreKpelKthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMand" +
- "ManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkoo" +
- "NshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiQaaa" +
- "QaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaas" +
- "QaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabk" +
- "QablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSara" +
- "SarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrjSyrnTagbTakrTale" +
- "TaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeo" +
- "XsuxYiiiZinhZmthZsymZxxxZyyyZzzz\xff\xff\xff\xff"
+var script tag.Index = "" + // Size: 928 bytes
+ "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" +
+ "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgyd" +
+ "EgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" +
+ "HatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKanaKharKhmrKhoj" +
+ "KitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepcLimbLinaLinbLisuLoma" +
+ "LyciLydiMahjMandManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymr" +
+ "NarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlp" +
+ "PhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" +
+ "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" +
+ "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" +
+ "QabxRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrc" +
+ "SyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirh" +
+ "UgarVaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff" +
+ "\xff"
// suppressScript is an index from langID to the dominant script for that language,
// if it exists. If a script is given, it should be suppressed from the language tag.
-// Size: 709 bytes, 709 elements
-var suppressScript = [709]uint8{
+// Size: 713 bytes, 713 elements
+var suppressScript = [713]uint8{
// Entry 0 - 3F
- 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x26, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x27, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d,
+ 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 40 - 7F
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
// Entry 80 - BF
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xce,
- 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x2c, 0x4f, 0x4f, 0x4f, 0x00, 0x4f, 0x00,
- 0x4f, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00, 0x4f, 0x00,
- 0x00, 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0xd4, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x2d, 0x52, 0x52, 0x52, 0x00, 0x52,
+ 0x00, 0x52, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x52,
+ 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry C0 - FF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35,
- 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00,
- 0x4f, 0x4f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
- // Entry 100 - 13F
- 0x00, 0x4f, 0x4f, 0x00, 0x35, 0x00, 0x3e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x2e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x37, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52,
+ 0x00, 0x52, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+ // Entry 100 - 13F
+ 0x00, 0x00, 0x52, 0x52, 0x00, 0x37, 0x00, 0x41,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00,
- 0x4f, 0x00, 0x43, 0x00, 0x47, 0x48, 0x00, 0x1f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
+ 0x00, 0x52, 0x00, 0x46, 0x00, 0x4a, 0x4b, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 140 - 17F
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x4f, 0x4c, 0x00, 0x00, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
// Entry 180 - 1BF
- 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x1d, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
- 0x00, 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
- 0x4f, 0x00, 0x4f, 0x1f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00,
+ 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52,
+ 0x00, 0x52, 0x00, 0x52, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52,
// Entry 1C0 - 1FF
- 0x4f, 0x00, 0x00, 0x00, 0x6b, 0x4f, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x70, 0x00, 0x00, 0x2e, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x52, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x75, 0x00, 0x00, 0x00, 0x2f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0x4f, 0x00, 0x4f,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x52,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
// Entry 200 - 23F
- 0x00, 0x4f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x1e,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc1, 0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x52,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00,
- 0x4f, 0x00, 0x4f, 0x00, 0x00, 0x4f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 240 - 27F
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x4f,
- 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x26,
- 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x4f, 0x00,
- 0x4f, 0x4f, 0x4f, 0x00, 0x4f, 0x4f, 0x00, 0x00,
- 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52,
+ 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd0, 0x52, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00,
+ 0x00, 0x27, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+ 0x52, 0x00, 0x52, 0x52, 0x52, 0x00, 0x52, 0x52,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
// Entry 280 - 2BF
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x05, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x52,
+ 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+ 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 2C0 - 2FF
- 0x00, 0x00, 0x4f, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
+ 0x00,
}
const (
@@ -1079,81 +1103,88 @@ var fromM49 = [332]uint16{
0xc957, 0xcb58, 0xcd59, 0xcf62,
}
-// Size: 1311 bytes
+// Size: 1444 bytes
var variantIndex = map[string]uint8{
"1606nict": 0x0,
"1694acad": 0x1,
"1901": 0x2,
"1959acad": 0x3,
- "1994": 0x3f,
+ "1994": 0x45,
"1996": 0x4,
- "alalc97": 0x41,
- "aluku": 0x5,
- "arevela": 0x6,
- "arevmda": 0x7,
- "baku1926": 0x8,
- "balanka": 0x9,
- "barla": 0xa,
- "bauddha": 0xb,
- "biscayan": 0xc,
- "biske": 0x3a,
- "bohoric": 0xd,
- "boont": 0xe,
- "dajnko": 0xf,
- "ekavsk": 0x10,
- "emodeng": 0x11,
- "fonipa": 0x42,
- "fonupa": 0x43,
- "fonxsamp": 0x44,
- "hepburn": 0x12,
- "heploc": 0x40,
- "hognorsk": 0x13,
- "ijekavsk": 0x14,
- "itihasa": 0x15,
- "jauer": 0x16,
- "jyutping": 0x17,
- "kkcor": 0x18,
- "kociewie": 0x19,
- "kscor": 0x1a,
- "laukika": 0x1b,
- "lipaw": 0x3b,
- "luna1918": 0x1c,
- "metelko": 0x1d,
- "monoton": 0x1e,
- "ndyuka": 0x1f,
- "nedis": 0x20,
- "njiva": 0x3c,
- "nulik": 0x21,
- "osojs": 0x3d,
- "oxendict": 0x22,
- "pamaka": 0x23,
- "petr1708": 0x24,
- "pinyin": 0x25,
- "polyton": 0x26,
- "puter": 0x27,
- "rigik": 0x28,
- "rozaj": 0x29,
- "rumgr": 0x2a,
- "scotland": 0x2b,
- "scouse": 0x2c,
- "solba": 0x3e,
- "sotav": 0x2d,
- "surmiran": 0x2e,
- "sursilv": 0x2f,
- "sutsilv": 0x30,
- "tarask": 0x31,
- "uccor": 0x32,
- "ucrcor": 0x33,
- "ulster": 0x34,
- "unifon": 0x35,
- "vaidika": 0x36,
- "valencia": 0x37,
- "vallader": 0x38,
- "wadegile": 0x39,
+ "abl1943": 0x5,
+ "alalc97": 0x47,
+ "aluku": 0x6,
+ "ao1990": 0x7,
+ "arevela": 0x8,
+ "arevmda": 0x9,
+ "baku1926": 0xa,
+ "balanka": 0xb,
+ "barla": 0xc,
+ "basiceng": 0xd,
+ "bauddha": 0xe,
+ "biscayan": 0xf,
+ "biske": 0x40,
+ "bohoric": 0x10,
+ "boont": 0x11,
+ "colb1945": 0x12,
+ "cornu": 0x13,
+ "dajnko": 0x14,
+ "ekavsk": 0x15,
+ "emodeng": 0x16,
+ "fonipa": 0x48,
+ "fonupa": 0x49,
+ "fonxsamp": 0x4a,
+ "hepburn": 0x17,
+ "heploc": 0x46,
+ "hognorsk": 0x18,
+ "ijekavsk": 0x19,
+ "itihasa": 0x1a,
+ "jauer": 0x1b,
+ "jyutping": 0x1c,
+ "kkcor": 0x1d,
+ "kociewie": 0x1e,
+ "kscor": 0x1f,
+ "laukika": 0x20,
+ "lipaw": 0x41,
+ "luna1918": 0x21,
+ "metelko": 0x22,
+ "monoton": 0x23,
+ "ndyuka": 0x24,
+ "nedis": 0x25,
+ "newfound": 0x26,
+ "njiva": 0x42,
+ "nulik": 0x27,
+ "osojs": 0x43,
+ "oxendict": 0x28,
+ "pamaka": 0x29,
+ "petr1708": 0x2a,
+ "pinyin": 0x2b,
+ "polyton": 0x2c,
+ "puter": 0x2d,
+ "rigik": 0x2e,
+ "rozaj": 0x2f,
+ "rumgr": 0x30,
+ "scotland": 0x31,
+ "scouse": 0x32,
+ "simple": 0x4b,
+ "solba": 0x44,
+ "sotav": 0x33,
+ "surmiran": 0x34,
+ "sursilv": 0x35,
+ "sutsilv": 0x36,
+ "tarask": 0x37,
+ "uccor": 0x38,
+ "ucrcor": 0x39,
+ "ulster": 0x3a,
+ "unifon": 0x3b,
+ "vaidika": 0x3c,
+ "valencia": 0x3d,
+ "vallader": 0x3e,
+ "wadegile": 0x3f,
}
// variantNumSpecialized is the number of specialized variants in variants.
-const variantNumSpecialized = 65
+const variantNumSpecialized = 71
// nRegionGroups is the number of region groups.
const nRegionGroups = 32
@@ -1165,139 +1196,147 @@ type likelyLangRegion struct {
// likelyScript is a lookup table, indexed by scriptID, for the most likely
// languages and regions given a script.
-// Size: 900 bytes, 225 elements
-var likelyScript = [225]likelyLangRegion{
- 3: {lang: 0x158, region: 0x104},
+// Size: 928 bytes, 232 elements
+var likelyScript = [232]likelyLangRegion{
+ 1: {lang: 0xa6, region: 0x82},
+ 3: {lang: 0x159, region: 0x104},
4: {lang: 0xc, region: 0x97},
5: {lang: 0x15, region: 0x6a},
7: {lang: 0x16, region: 0x9a},
- 8: {lang: 0xf2, region: 0x27},
+ 8: {lang: 0xf3, region: 0x27},
9: {lang: 0x8, region: 0x9a},
10: {lang: 0x27, region: 0x93},
11: {lang: 0x2b, region: 0x51},
12: {lang: 0x55, region: 0xb2},
13: {lang: 0x2c, region: 0x93},
14: {lang: 0x4b, region: 0x34},
- 16: {lang: 0x2c0, region: 0x12c},
- 17: {lang: 0x1e3, region: 0x97},
- 18: {lang: 0xae, region: 0x76},
- 19: {lang: 0x5b, region: 0x93},
- 20: {lang: 0x47, region: 0xe5},
- 21: {lang: 0x63, region: 0x34},
- 22: {lang: 0x73, region: 0x48},
- 23: {lang: 0x2a5, region: 0x129},
- 24: {lang: 0x6e, region: 0x13b},
- 25: {lang: 0x6c, region: 0x132},
- 27: {lang: 0x71, region: 0x6a},
- 28: {lang: 0xcf, region: 0x5c},
- 29: {lang: 0x205, region: 0x104},
- 31: {lang: 0xe0, region: 0x97},
- 33: {lang: 0xae, region: 0x76},
- 36: {lang: 0x97, region: 0x6a},
- 37: {lang: 0x238, region: 0x26},
- 38: {lang: 0x11, region: 0x6e},
- 40: {lang: 0x110, region: 0x7b},
- 41: {lang: 0x7d, region: 0x37},
- 42: {lang: 0xce, region: 0x12e},
- 43: {lang: 0x20b, region: 0x97},
- 44: {lang: 0x99, region: 0x85},
- 45: {lang: 0xd2, region: 0x97},
- 46: {lang: 0x1d5, region: 0x97},
- 47: {lang: 0x135, region: 0xa9},
- 48: {lang: 0x2c0, region: 0x52},
- 49: {lang: 0xe8, region: 0xe5},
- 50: {lang: 0x2c0, region: 0x52},
- 51: {lang: 0x2c0, region: 0x12c},
- 52: {lang: 0x18a, region: 0x99},
- 53: {lang: 0xdf, region: 0x95},
- 54: {lang: 0x106, region: 0xa0},
- 55: {lang: 0xe3, region: 0x129},
- 56: {lang: 0xe7, region: 0xad},
- 58: {lang: 0xf1, region: 0x90},
- 60: {lang: 0x9f, region: 0x9c},
- 61: {lang: 0x10e, region: 0x93},
- 62: {lang: 0x106, region: 0xa0},
- 64: {lang: 0x98, region: 0xc2},
- 65: {lang: 0x106, region: 0xa0},
- 66: {lang: 0x1e9, region: 0xe6},
- 67: {lang: 0x132, region: 0xa4},
- 68: {lang: 0x218, region: 0x97},
- 71: {lang: 0x134, region: 0x97},
- 72: {lang: 0x135, region: 0xa9},
- 74: {lang: 0x3c, region: 0x97},
- 75: {lang: 0x1c1, region: 0x121},
- 76: {lang: 0x164, region: 0xad},
- 80: {lang: 0x157, region: 0x97},
- 81: {lang: 0x15b, region: 0x97},
- 82: {lang: 0x14e, region: 0x85},
- 83: {lang: 0xcf, region: 0x85},
- 84: {lang: 0x15d, region: 0x52},
- 86: {lang: 0x2a7, region: 0x129},
- 87: {lang: 0x2a8, region: 0x129},
- 88: {lang: 0xe0, region: 0x97},
- 89: {lang: 0x1a7, region: 0x9a},
- 90: {lang: 0x2aa, region: 0x52},
- 93: {lang: 0x17e, region: 0x110},
- 94: {lang: 0x2ab, region: 0x109},
- 95: {lang: 0x2ab, region: 0x109},
- 96: {lang: 0x18c, region: 0x97},
- 97: {lang: 0x195, region: 0x97},
- 98: {lang: 0x18e, region: 0x52},
- 100: {lang: 0x198, region: 0x34},
- 101: {lang: 0x18f, region: 0x97},
- 102: {lang: 0x229, region: 0xe6},
- 103: {lang: 0x1a4, region: 0xc2},
- 104: {lang: 0x2ac, region: 0x106},
- 105: {lang: 0x16, region: 0x9f},
- 107: {lang: 0x178, region: 0x82},
- 109: {lang: 0x221, region: 0x94},
- 110: {lang: 0x210, region: 0x97},
- 111: {lang: 0x1d4, region: 0xc3},
- 112: {lang: 0x1d2, region: 0x97},
- 114: {lang: 0x236, region: 0x113},
- 115: {lang: 0x16, region: 0x11a},
- 116: {lang: 0x7c, region: 0xc2},
- 117: {lang: 0x146, region: 0x104},
- 118: {lang: 0x171, region: 0x52},
- 119: {lang: 0x1d7, region: 0x9a},
- 120: {lang: 0x1d7, region: 0x52},
- 122: {lang: 0x1e1, region: 0xae},
- 123: {lang: 0xe4, region: 0x52},
- 124: {lang: 0x2af, region: 0x9a},
- 175: {lang: 0x1f4, region: 0x93},
- 177: {lang: 0x1c3, region: 0x10a},
- 178: {lang: 0x232, region: 0x95},
- 180: {lang: 0x2b0, region: 0x15b},
- 181: {lang: 0x211, region: 0x97},
- 182: {lang: 0x1e, region: 0x132},
- 183: {lang: 0x9a, region: 0x79},
- 184: {lang: 0x20b, region: 0x97},
- 185: {lang: 0x20b, region: 0x97},
- 186: {lang: 0x218, region: 0x97},
- 187: {lang: 0x226, region: 0xb1},
- 188: {lang: 0x23a, region: 0x97},
- 189: {lang: 0x242, region: 0x93},
- 190: {lang: 0x24c, region: 0x34},
- 191: {lang: 0x24d, region: 0x99},
- 195: {lang: 0x251, region: 0xe5},
- 196: {lang: 0x8a, region: 0x97},
- 197: {lang: 0x253, region: 0x52},
- 198: {lang: 0x125, region: 0x52},
- 199: {lang: 0x24f, region: 0x97},
- 201: {lang: 0x48, region: 0x13b},
- 202: {lang: 0x256, region: 0x97},
- 204: {lang: 0x2bf, region: 0xb8},
- 205: {lang: 0xa9, region: 0xe5},
- 206: {lang: 0x8f, region: 0xcb},
- 207: {lang: 0x25b, region: 0x121},
- 208: {lang: 0x4c, region: 0x52},
- 209: {lang: 0x176, region: 0x97},
- 210: {lang: 0x282, region: 0x11a},
- 211: {lang: 0x28b, region: 0xb2},
- 213: {lang: 0xeb, region: 0x97},
- 215: {lang: 0x1df, region: 0x9a},
- 216: {lang: 0xe, region: 0x99},
- 217: {lang: 0xfa, region: 0x52},
+ 15: {lang: 0x20d, region: 0x97},
+ 17: {lang: 0x2c4, region: 0x12c},
+ 18: {lang: 0x1e5, region: 0x97},
+ 19: {lang: 0xaf, region: 0x76},
+ 20: {lang: 0x5b, region: 0x93},
+ 21: {lang: 0x47, region: 0xe5},
+ 22: {lang: 0x63, region: 0x34},
+ 23: {lang: 0x73, region: 0x48},
+ 24: {lang: 0x2a8, region: 0x129},
+ 25: {lang: 0x6e, region: 0x13b},
+ 26: {lang: 0x6c, region: 0x132},
+ 28: {lang: 0x71, region: 0x6a},
+ 29: {lang: 0xd0, region: 0x5c},
+ 30: {lang: 0x207, region: 0x104},
+ 32: {lang: 0xe1, region: 0x97},
+ 34: {lang: 0xaf, region: 0x76},
+ 37: {lang: 0x98, region: 0x6a},
+ 38: {lang: 0x23a, region: 0x26},
+ 39: {lang: 0x11, region: 0x6e},
+ 41: {lang: 0x111, region: 0x7b},
+ 42: {lang: 0x7d, region: 0x37},
+ 43: {lang: 0xcf, region: 0x12e},
+ 44: {lang: 0x20d, region: 0x97},
+ 45: {lang: 0x9a, region: 0x85},
+ 46: {lang: 0xd3, region: 0x97},
+ 47: {lang: 0x1d7, region: 0x97},
+ 48: {lang: 0x2c4, region: 0x12c},
+ 49: {lang: 0x136, region: 0xa9},
+ 50: {lang: 0x2c4, region: 0x52},
+ 51: {lang: 0xe9, region: 0xe5},
+ 52: {lang: 0x2c4, region: 0x52},
+ 53: {lang: 0x2c4, region: 0x12c},
+ 54: {lang: 0x18b, region: 0x99},
+ 55: {lang: 0xe0, region: 0x95},
+ 56: {lang: 0x107, region: 0xa0},
+ 57: {lang: 0xe4, region: 0x129},
+ 58: {lang: 0xe8, region: 0xad},
+ 60: {lang: 0xf2, region: 0x90},
+ 62: {lang: 0xa0, region: 0x9c},
+ 63: {lang: 0x136, region: 0xa9},
+ 64: {lang: 0x10f, region: 0x93},
+ 65: {lang: 0x107, region: 0xa0},
+ 67: {lang: 0x99, region: 0xc2},
+ 68: {lang: 0x107, region: 0xa0},
+ 69: {lang: 0x1eb, region: 0xe6},
+ 70: {lang: 0x133, region: 0xa4},
+ 71: {lang: 0x21a, region: 0x97},
+ 74: {lang: 0x135, region: 0x97},
+ 75: {lang: 0x136, region: 0xa9},
+ 77: {lang: 0x40, region: 0x97},
+ 78: {lang: 0x1c2, region: 0x121},
+ 79: {lang: 0x165, region: 0xad},
+ 84: {lang: 0x158, region: 0x97},
+ 85: {lang: 0x15c, region: 0x97},
+ 86: {lang: 0x14f, region: 0x85},
+ 87: {lang: 0xd0, region: 0x85},
+ 88: {lang: 0x15e, region: 0x52},
+ 90: {lang: 0x2aa, region: 0x129},
+ 91: {lang: 0x2ab, region: 0x129},
+ 92: {lang: 0xe1, region: 0x97},
+ 93: {lang: 0x1a8, region: 0x9a},
+ 94: {lang: 0x2ad, region: 0x52},
+ 95: {lang: 0x4c, region: 0x52},
+ 97: {lang: 0x17f, region: 0x110},
+ 98: {lang: 0x2ae, region: 0x109},
+ 99: {lang: 0x2ae, region: 0x109},
+ 100: {lang: 0x18d, region: 0x97},
+ 101: {lang: 0x196, region: 0x97},
+ 102: {lang: 0x18f, region: 0x52},
+ 104: {lang: 0x199, region: 0x34},
+ 105: {lang: 0x190, region: 0x97},
+ 106: {lang: 0x22b, region: 0xe6},
+ 107: {lang: 0x1a5, region: 0xc2},
+ 108: {lang: 0x2af, region: 0x106},
+ 109: {lang: 0x16, region: 0x9f},
+ 110: {lang: 0x1b5, region: 0xd9},
+ 112: {lang: 0x179, region: 0x82},
+ 114: {lang: 0x223, region: 0x94},
+ 115: {lang: 0x212, region: 0x97},
+ 116: {lang: 0x1d6, region: 0xc3},
+ 117: {lang: 0x1d3, region: 0x97},
+ 118: {lang: 0x1d5, region: 0x132},
+ 119: {lang: 0x238, region: 0x113},
+ 120: {lang: 0x16, region: 0x11a},
+ 121: {lang: 0x7c, region: 0xc2},
+ 122: {lang: 0x147, region: 0x104},
+ 123: {lang: 0x172, region: 0x52},
+ 124: {lang: 0x1d9, region: 0x9a},
+ 125: {lang: 0x1d9, region: 0x52},
+ 127: {lang: 0x1e3, region: 0xae},
+ 129: {lang: 0xe5, region: 0x52},
+ 130: {lang: 0x2b2, region: 0x9a},
+ 181: {lang: 0x1f6, region: 0x93},
+ 183: {lang: 0x1c4, region: 0x10a},
+ 184: {lang: 0x234, region: 0x95},
+ 186: {lang: 0x2b3, region: 0x15b},
+ 187: {lang: 0x213, region: 0x97},
+ 188: {lang: 0x1e, region: 0x132},
+ 189: {lang: 0x9b, region: 0x79},
+ 190: {lang: 0x20d, region: 0x97},
+ 191: {lang: 0x20d, region: 0x97},
+ 192: {lang: 0x21a, region: 0x97},
+ 193: {lang: 0x228, region: 0xb1},
+ 194: {lang: 0x23c, region: 0x97},
+ 195: {lang: 0x244, region: 0x93},
+ 196: {lang: 0x24e, region: 0x34},
+ 197: {lang: 0x24f, region: 0x99},
+ 201: {lang: 0x253, region: 0xe5},
+ 202: {lang: 0x8a, region: 0x97},
+ 203: {lang: 0x255, region: 0x52},
+ 204: {lang: 0x126, region: 0x52},
+ 205: {lang: 0x251, region: 0x97},
+ 206: {lang: 0x27f, region: 0x52},
+ 207: {lang: 0x48, region: 0x13b},
+ 208: {lang: 0x258, region: 0x97},
+ 210: {lang: 0x2c3, region: 0xb8},
+ 211: {lang: 0xaa, region: 0xe5},
+ 212: {lang: 0x90, region: 0xcb},
+ 213: {lang: 0x25d, region: 0x121},
+ 214: {lang: 0x4c, region: 0x52},
+ 215: {lang: 0x177, region: 0x97},
+ 216: {lang: 0x285, region: 0x11a},
+ 217: {lang: 0x28e, region: 0xb2},
+ 219: {lang: 0xec, region: 0x97},
+ 221: {lang: 0x1e1, region: 0x9a},
+ 222: {lang: 0xe, region: 0x99},
+ 223: {lang: 0xfb, region: 0x52},
}
type likelyScriptRegion struct {
@@ -1310,798 +1349,807 @@ type likelyScriptRegion struct {
// scripts and regions given incomplete information. If more entries exist for a
// given language, region and script are the index and size respectively
// of the list in likelyLangList.
-// Size: 2836 bytes, 709 elements
-var likelyLang = [709]likelyScriptRegion{
- 0: {region: 0x132, script: 0x4f, flags: 0x0},
- 1: {region: 0x6e, script: 0x4f, flags: 0x0},
- 2: {region: 0x7b, script: 0x1d, flags: 0x0},
- 3: {region: 0x7e, script: 0x4f, flags: 0x0},
- 4: {region: 0x93, script: 0x4f, flags: 0x0},
- 5: {region: 0x12f, script: 0x4f, flags: 0x0},
- 6: {region: 0x7e, script: 0x4f, flags: 0x0},
- 7: {region: 0x104, script: 0x1d, flags: 0x0},
+// Size: 2852 bytes, 713 elements
+var likelyLang = [713]likelyScriptRegion{
+ 0: {region: 0x132, script: 0x52, flags: 0x0},
+ 1: {region: 0x6e, script: 0x52, flags: 0x0},
+ 2: {region: 0x7b, script: 0x1e, flags: 0x0},
+ 3: {region: 0x7e, script: 0x52, flags: 0x0},
+ 4: {region: 0x93, script: 0x52, flags: 0x0},
+ 5: {region: 0x12f, script: 0x52, flags: 0x0},
+ 6: {region: 0x7e, script: 0x52, flags: 0x0},
+ 7: {region: 0x104, script: 0x1e, flags: 0x0},
8: {region: 0x9a, script: 0x9, flags: 0x0},
9: {region: 0x126, script: 0x5, flags: 0x0},
- 10: {region: 0x15e, script: 0x4f, flags: 0x0},
- 11: {region: 0x51, script: 0x4f, flags: 0x0},
+ 10: {region: 0x15e, script: 0x52, flags: 0x0},
+ 11: {region: 0x51, script: 0x52, flags: 0x0},
12: {region: 0x97, script: 0x4, flags: 0x0},
- 13: {region: 0x7e, script: 0x4f, flags: 0x0},
- 14: {region: 0x99, script: 0xd8, flags: 0x0},
- 15: {region: 0x14a, script: 0x4f, flags: 0x0},
- 16: {region: 0x104, script: 0x1d, flags: 0x0},
- 17: {region: 0x6e, script: 0x26, flags: 0x0},
- 18: {region: 0xd4, script: 0x4f, flags: 0x0},
- 20: {region: 0x93, script: 0x4f, flags: 0x0},
+ 13: {region: 0x7e, script: 0x52, flags: 0x0},
+ 14: {region: 0x99, script: 0xde, flags: 0x0},
+ 15: {region: 0x14a, script: 0x52, flags: 0x0},
+ 16: {region: 0x104, script: 0x1e, flags: 0x0},
+ 17: {region: 0x6e, script: 0x27, flags: 0x0},
+ 18: {region: 0xd4, script: 0x52, flags: 0x0},
+ 20: {region: 0x93, script: 0x52, flags: 0x0},
21: {region: 0x6a, script: 0x5, flags: 0x0},
22: {region: 0x0, script: 0x3, flags: 0x1},
- 23: {region: 0x50, script: 0x4f, flags: 0x0},
- 24: {region: 0x3e, script: 0x4f, flags: 0x0},
+ 23: {region: 0x50, script: 0x52, flags: 0x0},
+ 24: {region: 0x3e, script: 0x52, flags: 0x0},
25: {region: 0x66, script: 0x5, flags: 0x0},
26: {region: 0xb8, script: 0x5, flags: 0x0},
27: {region: 0x6a, script: 0x5, flags: 0x0},
28: {region: 0x97, script: 0xe, flags: 0x0},
- 29: {region: 0x12d, script: 0x4f, flags: 0x0},
- 30: {region: 0x132, script: 0xb6, flags: 0x0},
- 31: {region: 0x6d, script: 0x4f, flags: 0x0},
- 32: {region: 0x48, script: 0x4f, flags: 0x0},
- 33: {region: 0x104, script: 0x1d, flags: 0x0},
- 34: {region: 0x97, script: 0x1f, flags: 0x0},
- 35: {region: 0x3e, script: 0x4f, flags: 0x0},
+ 29: {region: 0x12d, script: 0x52, flags: 0x0},
+ 30: {region: 0x132, script: 0xbc, flags: 0x0},
+ 31: {region: 0x6d, script: 0x52, flags: 0x0},
+ 32: {region: 0x48, script: 0x52, flags: 0x0},
+ 33: {region: 0x104, script: 0x1e, flags: 0x0},
+ 34: {region: 0x97, script: 0x20, flags: 0x0},
+ 35: {region: 0x3e, script: 0x52, flags: 0x0},
36: {region: 0x3, script: 0x5, flags: 0x1},
- 37: {region: 0x104, script: 0x1d, flags: 0x0},
+ 37: {region: 0x104, script: 0x1e, flags: 0x0},
38: {region: 0xe6, script: 0x5, flags: 0x0},
- 39: {region: 0x93, script: 0x4f, flags: 0x0},
- 40: {region: 0xd9, script: 0x1f, flags: 0x0},
- 41: {region: 0x2d, script: 0x4f, flags: 0x0},
- 42: {region: 0x51, script: 0x4f, flags: 0x0},
+ 39: {region: 0x93, script: 0x52, flags: 0x0},
+ 40: {region: 0xd9, script: 0x20, flags: 0x0},
+ 41: {region: 0x2d, script: 0x52, flags: 0x0},
+ 42: {region: 0x51, script: 0x52, flags: 0x0},
43: {region: 0x51, script: 0xb, flags: 0x0},
- 44: {region: 0x93, script: 0x4f, flags: 0x0},
- 45: {region: 0x51, script: 0x4f, flags: 0x0},
- 46: {region: 0x4e, script: 0x4f, flags: 0x0},
- 47: {region: 0x46, script: 0x1d, flags: 0x0},
+ 44: {region: 0x93, script: 0x52, flags: 0x0},
+ 45: {region: 0x51, script: 0x52, flags: 0x0},
+ 46: {region: 0x4e, script: 0x52, flags: 0x0},
+ 47: {region: 0x46, script: 0x1e, flags: 0x0},
48: {region: 0x109, script: 0x5, flags: 0x0},
- 49: {region: 0x15f, script: 0x4f, flags: 0x0},
- 50: {region: 0x93, script: 0x4f, flags: 0x0},
- 51: {region: 0x12d, script: 0x4f, flags: 0x0},
- 52: {region: 0x51, script: 0x4f, flags: 0x0},
- 53: {region: 0x97, script: 0xc7, flags: 0x0},
+ 49: {region: 0x15f, script: 0x52, flags: 0x0},
+ 50: {region: 0x93, script: 0x52, flags: 0x0},
+ 51: {region: 0x12d, script: 0x52, flags: 0x0},
+ 52: {region: 0x51, script: 0x52, flags: 0x0},
+ 53: {region: 0x97, script: 0xcd, flags: 0x0},
54: {region: 0xe6, script: 0x5, flags: 0x0},
- 55: {region: 0x97, script: 0x1f, flags: 0x0},
- 56: {region: 0x37, script: 0x1d, flags: 0x0},
- 57: {region: 0x97, script: 0x1f, flags: 0x0},
+ 55: {region: 0x97, script: 0x20, flags: 0x0},
+ 56: {region: 0x37, script: 0x1e, flags: 0x0},
+ 57: {region: 0x97, script: 0x20, flags: 0x0},
58: {region: 0xe6, script: 0x5, flags: 0x0},
- 59: {region: 0x129, script: 0x2c, flags: 0x0},
- 60: {region: 0x97, script: 0x4a, flags: 0x0},
- 61: {region: 0x97, script: 0x1f, flags: 0x0},
- 62: {region: 0x97, script: 0x1f, flags: 0x0},
- 63: {region: 0xe5, script: 0x4f, flags: 0x0},
- 64: {region: 0x97, script: 0x1f, flags: 0x0},
- 65: {region: 0x13c, script: 0x4f, flags: 0x0},
- 66: {region: 0xe5, script: 0x4f, flags: 0x0},
- 67: {region: 0xd4, script: 0x4f, flags: 0x0},
- 68: {region: 0x97, script: 0x1f, flags: 0x0},
- 69: {region: 0x93, script: 0x4f, flags: 0x0},
- 70: {region: 0x51, script: 0x4f, flags: 0x0},
- 71: {region: 0xe5, script: 0x4f, flags: 0x0},
- 72: {region: 0x13b, script: 0xc9, flags: 0x0},
- 73: {region: 0xc1, script: 0x4f, flags: 0x0},
- 74: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 59: {region: 0x129, script: 0x2d, flags: 0x0},
+ 61: {region: 0x97, script: 0x20, flags: 0x0},
+ 62: {region: 0x97, script: 0x20, flags: 0x0},
+ 63: {region: 0xe5, script: 0x52, flags: 0x0},
+ 64: {region: 0x97, script: 0x20, flags: 0x0},
+ 65: {region: 0x13c, script: 0x52, flags: 0x0},
+ 66: {region: 0xe5, script: 0x52, flags: 0x0},
+ 67: {region: 0xd4, script: 0x52, flags: 0x0},
+ 68: {region: 0x97, script: 0x20, flags: 0x0},
+ 69: {region: 0x93, script: 0x52, flags: 0x0},
+ 70: {region: 0x51, script: 0x52, flags: 0x0},
+ 71: {region: 0xe5, script: 0x52, flags: 0x0},
+ 72: {region: 0x13b, script: 0xcf, flags: 0x0},
+ 73: {region: 0xc1, script: 0x52, flags: 0x0},
+ 74: {region: 0xc1, script: 0x52, flags: 0x0},
75: {region: 0x34, script: 0xe, flags: 0x0},
- 76: {region: 0x52, script: 0xd0, flags: 0x0},
+ 76: {region: 0x52, script: 0xd6, flags: 0x0},
77: {region: 0x97, script: 0xe, flags: 0x0},
78: {region: 0x9a, script: 0x5, flags: 0x0},
- 79: {region: 0x4e, script: 0x4f, flags: 0x0},
- 80: {region: 0x76, script: 0x4f, flags: 0x0},
- 81: {region: 0x97, script: 0x1f, flags: 0x0},
+ 79: {region: 0x4e, script: 0x52, flags: 0x0},
+ 80: {region: 0x76, script: 0x52, flags: 0x0},
+ 81: {region: 0x97, script: 0x20, flags: 0x0},
82: {region: 0xe6, script: 0x5, flags: 0x0},
- 83: {region: 0x97, script: 0x1f, flags: 0x0},
- 84: {region: 0x32, script: 0x4f, flags: 0x0},
+ 83: {region: 0x97, script: 0x20, flags: 0x0},
+ 84: {region: 0x32, script: 0x52, flags: 0x0},
85: {region: 0xb2, script: 0xc, flags: 0x0},
- 86: {region: 0x51, script: 0x4f, flags: 0x0},
- 87: {region: 0xe5, script: 0x4f, flags: 0x0},
- 88: {region: 0xe6, script: 0x1f, flags: 0x0},
- 89: {region: 0x104, script: 0x1d, flags: 0x0},
- 90: {region: 0x15c, script: 0x4f, flags: 0x0},
- 91: {region: 0x93, script: 0x4f, flags: 0x0},
- 92: {region: 0x51, script: 0x4f, flags: 0x0},
- 93: {region: 0x84, script: 0x4f, flags: 0x0},
- 94: {region: 0x6c, script: 0x26, flags: 0x0},
- 95: {region: 0x51, script: 0x4f, flags: 0x0},
- 96: {region: 0xc1, script: 0x4f, flags: 0x0},
- 97: {region: 0x6d, script: 0x4f, flags: 0x0},
- 98: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 86: {region: 0x51, script: 0x52, flags: 0x0},
+ 87: {region: 0xe5, script: 0x52, flags: 0x0},
+ 88: {region: 0xe6, script: 0x20, flags: 0x0},
+ 89: {region: 0x104, script: 0x1e, flags: 0x0},
+ 90: {region: 0x15c, script: 0x52, flags: 0x0},
+ 91: {region: 0x93, script: 0x52, flags: 0x0},
+ 92: {region: 0x51, script: 0x52, flags: 0x0},
+ 93: {region: 0x84, script: 0x52, flags: 0x0},
+ 94: {region: 0x6c, script: 0x27, flags: 0x0},
+ 95: {region: 0x51, script: 0x52, flags: 0x0},
+ 96: {region: 0xc1, script: 0x52, flags: 0x0},
+ 97: {region: 0x6d, script: 0x52, flags: 0x0},
+ 98: {region: 0xd4, script: 0x52, flags: 0x0},
99: {region: 0x8, script: 0x2, flags: 0x1},
- 100: {region: 0x104, script: 0x1d, flags: 0x0},
- 101: {region: 0xe5, script: 0x4f, flags: 0x0},
- 102: {region: 0x12f, script: 0x4f, flags: 0x0},
- 103: {region: 0x88, script: 0x4f, flags: 0x0},
- 104: {region: 0x73, script: 0x4f, flags: 0x0},
- 105: {region: 0x104, script: 0x1d, flags: 0x0},
- 106: {region: 0x132, script: 0x4f, flags: 0x0},
- 107: {region: 0x48, script: 0x4f, flags: 0x0},
- 108: {region: 0x132, script: 0x19, flags: 0x0},
+ 100: {region: 0x104, script: 0x1e, flags: 0x0},
+ 101: {region: 0xe5, script: 0x52, flags: 0x0},
+ 102: {region: 0x12f, script: 0x52, flags: 0x0},
+ 103: {region: 0x88, script: 0x52, flags: 0x0},
+ 104: {region: 0x73, script: 0x52, flags: 0x0},
+ 105: {region: 0x104, script: 0x1e, flags: 0x0},
+ 106: {region: 0x132, script: 0x52, flags: 0x0},
+ 107: {region: 0x48, script: 0x52, flags: 0x0},
+ 108: {region: 0x132, script: 0x1a, flags: 0x0},
109: {region: 0xa4, script: 0x5, flags: 0x0},
- 110: {region: 0x13b, script: 0x18, flags: 0x0},
+ 110: {region: 0x13b, script: 0x19, flags: 0x0},
111: {region: 0x99, script: 0x5, flags: 0x0},
- 112: {region: 0x76, script: 0x4f, flags: 0x0},
- 113: {region: 0x6a, script: 0x1b, flags: 0x0},
- 114: {region: 0xe5, script: 0x4f, flags: 0x0},
- 115: {region: 0x48, script: 0x16, flags: 0x0},
- 116: {region: 0x48, script: 0x16, flags: 0x0},
- 117: {region: 0x48, script: 0x16, flags: 0x0},
- 118: {region: 0x48, script: 0x16, flags: 0x0},
- 119: {region: 0x48, script: 0x16, flags: 0x0},
- 120: {region: 0x108, script: 0x4f, flags: 0x0},
- 121: {region: 0x5d, script: 0x4f, flags: 0x0},
- 122: {region: 0xe7, script: 0x4f, flags: 0x0},
- 123: {region: 0x48, script: 0x16, flags: 0x0},
- 124: {region: 0xc2, script: 0x74, flags: 0x0},
+ 112: {region: 0x76, script: 0x52, flags: 0x0},
+ 113: {region: 0x6a, script: 0x1c, flags: 0x0},
+ 114: {region: 0xe5, script: 0x52, flags: 0x0},
+ 115: {region: 0x48, script: 0x17, flags: 0x0},
+ 116: {region: 0x48, script: 0x17, flags: 0x0},
+ 117: {region: 0x48, script: 0x17, flags: 0x0},
+ 118: {region: 0x48, script: 0x17, flags: 0x0},
+ 119: {region: 0x48, script: 0x17, flags: 0x0},
+ 120: {region: 0x108, script: 0x52, flags: 0x0},
+ 121: {region: 0x5d, script: 0x52, flags: 0x0},
+ 122: {region: 0xe7, script: 0x52, flags: 0x0},
+ 123: {region: 0x48, script: 0x17, flags: 0x0},
+ 124: {region: 0xc2, script: 0x79, flags: 0x0},
125: {region: 0xa, script: 0x2, flags: 0x1},
- 126: {region: 0x104, script: 0x1d, flags: 0x0},
- 127: {region: 0x79, script: 0x4f, flags: 0x0},
- 128: {region: 0x62, script: 0x4f, flags: 0x0},
- 129: {region: 0x132, script: 0x4f, flags: 0x0},
- 130: {region: 0x104, script: 0x1d, flags: 0x0},
- 131: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 126: {region: 0x104, script: 0x1e, flags: 0x0},
+ 127: {region: 0x79, script: 0x52, flags: 0x0},
+ 128: {region: 0x62, script: 0x52, flags: 0x0},
+ 129: {region: 0x132, script: 0x52, flags: 0x0},
+ 130: {region: 0x104, script: 0x1e, flags: 0x0},
+ 131: {region: 0xa2, script: 0x52, flags: 0x0},
132: {region: 0x97, script: 0x5, flags: 0x0},
- 133: {region: 0x5f, script: 0x4f, flags: 0x0},
- 134: {region: 0x48, script: 0x4f, flags: 0x0},
- 135: {region: 0x48, script: 0x4f, flags: 0x0},
- 136: {region: 0xd2, script: 0x4f, flags: 0x0},
- 137: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 133: {region: 0x5f, script: 0x52, flags: 0x0},
+ 134: {region: 0x48, script: 0x52, flags: 0x0},
+ 135: {region: 0x48, script: 0x52, flags: 0x0},
+ 136: {region: 0xd2, script: 0x52, flags: 0x0},
+ 137: {region: 0x4e, script: 0x52, flags: 0x0},
138: {region: 0x97, script: 0x5, flags: 0x0},
- 139: {region: 0x5f, script: 0x4f, flags: 0x0},
- 140: {region: 0xc1, script: 0x4f, flags: 0x0},
- 141: {region: 0xce, script: 0x4f, flags: 0x0},
- 142: {region: 0x51, script: 0x4f, flags: 0x0},
- 143: {region: 0xcb, script: 0xce, flags: 0x0},
- 144: {region: 0x112, script: 0x4f, flags: 0x0},
- 145: {region: 0x36, script: 0x4f, flags: 0x0},
- 146: {region: 0x42, script: 0xd0, flags: 0x0},
- 147: {region: 0xa2, script: 0x4f, flags: 0x0},
- 148: {region: 0x7e, script: 0x4f, flags: 0x0},
- 149: {region: 0xd4, script: 0x4f, flags: 0x0},
- 150: {region: 0x9c, script: 0x4f, flags: 0x0},
- 151: {region: 0x6a, script: 0x24, flags: 0x0},
- 152: {region: 0xc2, script: 0x40, flags: 0x0},
- 153: {region: 0x85, script: 0x2c, flags: 0x0},
- 154: {region: 0xc, script: 0x2, flags: 0x1},
- 155: {region: 0x1, script: 0x4f, flags: 0x0},
- 156: {region: 0x6d, script: 0x4f, flags: 0x0},
- 157: {region: 0x132, script: 0x4f, flags: 0x0},
- 158: {region: 0x69, script: 0x4f, flags: 0x0},
- 159: {region: 0x9c, script: 0x3c, flags: 0x0},
- 160: {region: 0x6d, script: 0x4f, flags: 0x0},
- 161: {region: 0x51, script: 0x4f, flags: 0x0},
- 162: {region: 0x6d, script: 0x4f, flags: 0x0},
- 163: {region: 0x9a, script: 0x5, flags: 0x0},
- 164: {region: 0x84, script: 0x4f, flags: 0x0},
- 165: {region: 0x112, script: 0x4f, flags: 0x0},
- 166: {region: 0xc1, script: 0x4f, flags: 0x0},
- 167: {region: 0x70, script: 0x4f, flags: 0x0},
- 168: {region: 0x109, script: 0x5, flags: 0x0},
- 169: {region: 0xe5, script: 0x4f, flags: 0x0},
- 170: {region: 0x10a, script: 0x4f, flags: 0x0},
- 171: {region: 0x71, script: 0x4f, flags: 0x0},
- 172: {region: 0x74, script: 0x4f, flags: 0x0},
- 173: {region: 0x3a, script: 0x4f, flags: 0x0},
- 174: {region: 0x76, script: 0x4f, flags: 0x0},
- 175: {region: 0x132, script: 0x4f, flags: 0x0},
- 176: {region: 0x76, script: 0x4f, flags: 0x0},
- 177: {region: 0x5f, script: 0x4f, flags: 0x0},
- 178: {region: 0x5f, script: 0x4f, flags: 0x0},
- 179: {region: 0x13d, script: 0x4f, flags: 0x0},
- 180: {region: 0xd2, script: 0x4f, flags: 0x0},
- 181: {region: 0x9c, script: 0x4f, flags: 0x0},
- 182: {region: 0xd4, script: 0x4f, flags: 0x0},
- 183: {region: 0x109, script: 0x4f, flags: 0x0},
- 184: {region: 0xd7, script: 0x4f, flags: 0x0},
- 185: {region: 0x94, script: 0x4f, flags: 0x0},
- 186: {region: 0x7e, script: 0x4f, flags: 0x0},
- 187: {region: 0xba, script: 0x4f, flags: 0x0},
- 188: {region: 0x52, script: 0x32, flags: 0x0},
- 189: {region: 0x93, script: 0x4f, flags: 0x0},
- 190: {region: 0x97, script: 0x1f, flags: 0x0},
- 191: {region: 0x9a, script: 0x5, flags: 0x0},
- 192: {region: 0x7c, script: 0x4f, flags: 0x0},
- 193: {region: 0x79, script: 0x4f, flags: 0x0},
- 194: {region: 0x6e, script: 0x26, flags: 0x0},
- 195: {region: 0xd9, script: 0x1f, flags: 0x0},
- 196: {region: 0xa5, script: 0x4f, flags: 0x0},
- 197: {region: 0xe6, script: 0x5, flags: 0x0},
+ 139: {region: 0x5f, script: 0x52, flags: 0x0},
+ 140: {region: 0xc1, script: 0x52, flags: 0x0},
+ 141: {region: 0xce, script: 0x52, flags: 0x0},
+ 142: {region: 0xd9, script: 0x20, flags: 0x0},
+ 143: {region: 0x51, script: 0x52, flags: 0x0},
+ 144: {region: 0xcb, script: 0xd4, flags: 0x0},
+ 145: {region: 0x112, script: 0x52, flags: 0x0},
+ 146: {region: 0x36, script: 0x52, flags: 0x0},
+ 147: {region: 0x42, script: 0xd6, flags: 0x0},
+ 148: {region: 0xa2, script: 0x52, flags: 0x0},
+ 149: {region: 0x7e, script: 0x52, flags: 0x0},
+ 150: {region: 0xd4, script: 0x52, flags: 0x0},
+ 151: {region: 0x9c, script: 0x52, flags: 0x0},
+ 152: {region: 0x6a, script: 0x25, flags: 0x0},
+ 153: {region: 0xc2, script: 0x43, flags: 0x0},
+ 154: {region: 0x85, script: 0x2d, flags: 0x0},
+ 155: {region: 0xc, script: 0x2, flags: 0x1},
+ 156: {region: 0x1, script: 0x52, flags: 0x0},
+ 157: {region: 0x6d, script: 0x52, flags: 0x0},
+ 158: {region: 0x132, script: 0x52, flags: 0x0},
+ 159: {region: 0x69, script: 0x52, flags: 0x0},
+ 160: {region: 0x9c, script: 0x3e, flags: 0x0},
+ 161: {region: 0x6d, script: 0x52, flags: 0x0},
+ 162: {region: 0x51, script: 0x52, flags: 0x0},
+ 163: {region: 0x6d, script: 0x52, flags: 0x0},
+ 164: {region: 0x9a, script: 0x5, flags: 0x0},
+ 165: {region: 0x84, script: 0x52, flags: 0x0},
+ 166: {region: 0xe, script: 0x2, flags: 0x1},
+ 167: {region: 0xc1, script: 0x52, flags: 0x0},
+ 168: {region: 0x70, script: 0x52, flags: 0x0},
+ 169: {region: 0x109, script: 0x5, flags: 0x0},
+ 170: {region: 0xe5, script: 0x52, flags: 0x0},
+ 171: {region: 0x10a, script: 0x52, flags: 0x0},
+ 172: {region: 0x71, script: 0x52, flags: 0x0},
+ 173: {region: 0x74, script: 0x52, flags: 0x0},
+ 174: {region: 0x3a, script: 0x52, flags: 0x0},
+ 175: {region: 0x76, script: 0x52, flags: 0x0},
+ 176: {region: 0x132, script: 0x52, flags: 0x0},
+ 177: {region: 0x76, script: 0x52, flags: 0x0},
+ 178: {region: 0x5f, script: 0x52, flags: 0x0},
+ 179: {region: 0x5f, script: 0x52, flags: 0x0},
+ 180: {region: 0x13d, script: 0x52, flags: 0x0},
+ 181: {region: 0xd2, script: 0x52, flags: 0x0},
+ 182: {region: 0x9c, script: 0x52, flags: 0x0},
+ 183: {region: 0xd4, script: 0x52, flags: 0x0},
+ 184: {region: 0x109, script: 0x52, flags: 0x0},
+ 185: {region: 0xd7, script: 0x52, flags: 0x0},
+ 186: {region: 0x94, script: 0x52, flags: 0x0},
+ 187: {region: 0x7e, script: 0x52, flags: 0x0},
+ 188: {region: 0xba, script: 0x52, flags: 0x0},
+ 189: {region: 0x52, script: 0x34, flags: 0x0},
+ 190: {region: 0x93, script: 0x52, flags: 0x0},
+ 191: {region: 0x97, script: 0x20, flags: 0x0},
+ 192: {region: 0x9a, script: 0x5, flags: 0x0},
+ 193: {region: 0x7c, script: 0x52, flags: 0x0},
+ 194: {region: 0x79, script: 0x52, flags: 0x0},
+ 195: {region: 0x6e, script: 0x27, flags: 0x0},
+ 196: {region: 0xd9, script: 0x20, flags: 0x0},
+ 197: {region: 0xa5, script: 0x52, flags: 0x0},
198: {region: 0xe6, script: 0x5, flags: 0x0},
- 199: {region: 0x6d, script: 0x4f, flags: 0x0},
- 200: {region: 0x9a, script: 0x5, flags: 0x0},
- 201: {region: 0xef, script: 0x4f, flags: 0x0},
- 202: {region: 0x97, script: 0x1f, flags: 0x0},
- 203: {region: 0x97, script: 0xca, flags: 0x0},
- 204: {region: 0x93, script: 0x4f, flags: 0x0},
- 205: {region: 0xd7, script: 0x4f, flags: 0x0},
- 206: {region: 0x12e, script: 0x2a, flags: 0x0},
- 207: {region: 0xe, script: 0x2, flags: 0x1},
- 208: {region: 0x97, script: 0xe, flags: 0x0},
- 209: {region: 0x4d, script: 0x4f, flags: 0x0},
- 210: {region: 0x97, script: 0x2d, flags: 0x0},
- 211: {region: 0x40, script: 0x4f, flags: 0x0},
- 212: {region: 0x53, script: 0x4f, flags: 0x0},
- 213: {region: 0x7e, script: 0x4f, flags: 0x0},
- 215: {region: 0xa2, script: 0x4f, flags: 0x0},
- 216: {region: 0x96, script: 0x4f, flags: 0x0},
- 217: {region: 0xd9, script: 0x1f, flags: 0x0},
- 218: {region: 0x48, script: 0x4f, flags: 0x0},
- 219: {region: 0x10, script: 0x3, flags: 0x1},
- 220: {region: 0x52, script: 0x32, flags: 0x0},
- 221: {region: 0x132, script: 0x4f, flags: 0x0},
- 222: {region: 0x23, script: 0x5, flags: 0x0},
- 223: {region: 0x95, script: 0x35, flags: 0x0},
- 224: {region: 0x97, script: 0x1f, flags: 0x0},
- 225: {region: 0x71, script: 0x4f, flags: 0x0},
- 226: {region: 0xe5, script: 0x4f, flags: 0x0},
- 227: {region: 0x129, script: 0x37, flags: 0x0},
- 228: {region: 0x52, script: 0x7b, flags: 0x0},
- 229: {region: 0xe6, script: 0x5, flags: 0x0},
- 230: {region: 0x97, script: 0x1f, flags: 0x0},
- 231: {region: 0xad, script: 0x38, flags: 0x0},
- 232: {region: 0xe5, script: 0x4f, flags: 0x0},
- 233: {region: 0xe6, script: 0x5, flags: 0x0},
- 234: {region: 0xe4, script: 0x4f, flags: 0x0},
- 235: {region: 0x97, script: 0x1f, flags: 0x0},
- 236: {region: 0x97, script: 0x1f, flags: 0x0},
- 237: {region: 0x8e, script: 0x4f, flags: 0x0},
- 238: {region: 0x5f, script: 0x4f, flags: 0x0},
- 239: {region: 0x52, script: 0x32, flags: 0x0},
- 240: {region: 0x8f, script: 0x4f, flags: 0x0},
- 241: {region: 0x90, script: 0x4f, flags: 0x0},
- 242: {region: 0x27, script: 0x8, flags: 0x0},
- 243: {region: 0xd0, script: 0x4f, flags: 0x0},
- 244: {region: 0x76, script: 0x4f, flags: 0x0},
- 245: {region: 0xce, script: 0x4f, flags: 0x0},
- 246: {region: 0xd4, script: 0x4f, flags: 0x0},
- 247: {region: 0x93, script: 0x4f, flags: 0x0},
- 249: {region: 0xd4, script: 0x4f, flags: 0x0},
- 250: {region: 0x52, script: 0xd9, flags: 0x0},
- 251: {region: 0x132, script: 0x4f, flags: 0x0},
- 252: {region: 0x48, script: 0x4f, flags: 0x0},
- 253: {region: 0xe5, script: 0x4f, flags: 0x0},
- 254: {region: 0x93, script: 0x4f, flags: 0x0},
- 255: {region: 0x104, script: 0x1d, flags: 0x0},
- 257: {region: 0x9b, script: 0x4f, flags: 0x0},
- 258: {region: 0x9c, script: 0x4f, flags: 0x0},
- 259: {region: 0x48, script: 0x16, flags: 0x0},
- 260: {region: 0x95, script: 0x35, flags: 0x0},
- 261: {region: 0x104, script: 0x4f, flags: 0x0},
- 262: {region: 0xa0, script: 0x3e, flags: 0x0},
- 263: {region: 0x9e, script: 0x4f, flags: 0x0},
- 265: {region: 0x51, script: 0x4f, flags: 0x0},
- 266: {region: 0x12e, script: 0x35, flags: 0x0},
- 267: {region: 0x12d, script: 0x4f, flags: 0x0},
- 268: {region: 0xd9, script: 0x1f, flags: 0x0},
- 269: {region: 0x62, script: 0x4f, flags: 0x0},
- 270: {region: 0x93, script: 0x4f, flags: 0x0},
- 271: {region: 0x93, script: 0x4f, flags: 0x0},
- 272: {region: 0x7b, script: 0x28, flags: 0x0},
- 273: {region: 0x134, script: 0x1d, flags: 0x0},
- 274: {region: 0x66, script: 0x4f, flags: 0x0},
- 275: {region: 0xc2, script: 0x4f, flags: 0x0},
- 276: {region: 0xd4, script: 0x4f, flags: 0x0},
- 277: {region: 0xa2, script: 0x4f, flags: 0x0},
- 278: {region: 0xc1, script: 0x4f, flags: 0x0},
- 279: {region: 0x104, script: 0x1d, flags: 0x0},
- 280: {region: 0xd4, script: 0x4f, flags: 0x0},
- 281: {region: 0x161, script: 0x4f, flags: 0x0},
- 282: {region: 0x12d, script: 0x4f, flags: 0x0},
- 283: {region: 0x121, script: 0xcf, flags: 0x0},
- 284: {region: 0x59, script: 0x4f, flags: 0x0},
- 285: {region: 0x51, script: 0x4f, flags: 0x0},
- 286: {region: 0x4e, script: 0x4f, flags: 0x0},
- 287: {region: 0x97, script: 0x1f, flags: 0x0},
- 288: {region: 0x97, script: 0x1f, flags: 0x0},
- 289: {region: 0x4a, script: 0x4f, flags: 0x0},
- 290: {region: 0x93, script: 0x4f, flags: 0x0},
- 291: {region: 0x40, script: 0x4f, flags: 0x0},
- 292: {region: 0x97, script: 0x4f, flags: 0x0},
- 293: {region: 0x52, script: 0xc6, flags: 0x0},
- 294: {region: 0x97, script: 0x1f, flags: 0x0},
- 295: {region: 0xc1, script: 0x4f, flags: 0x0},
- 296: {region: 0x97, script: 0x67, flags: 0x0},
- 297: {region: 0xe6, script: 0x5, flags: 0x0},
- 298: {region: 0xa2, script: 0x4f, flags: 0x0},
- 299: {region: 0x129, script: 0x4f, flags: 0x0},
- 300: {region: 0xd0, script: 0x4f, flags: 0x0},
- 301: {region: 0xad, script: 0x4c, flags: 0x0},
- 302: {region: 0x13, script: 0x6, flags: 0x1},
- 303: {region: 0x51, script: 0x4f, flags: 0x0},
- 304: {region: 0x80, script: 0x4f, flags: 0x0},
- 305: {region: 0xa2, script: 0x4f, flags: 0x0},
- 306: {region: 0xa4, script: 0x43, flags: 0x0},
- 307: {region: 0x29, script: 0x4f, flags: 0x0},
- 308: {region: 0x97, script: 0x47, flags: 0x0},
- 309: {region: 0xa9, script: 0x48, flags: 0x0},
- 310: {region: 0x104, script: 0x1d, flags: 0x0},
- 311: {region: 0x97, script: 0x1f, flags: 0x0},
- 312: {region: 0x73, script: 0x4f, flags: 0x0},
- 313: {region: 0xb2, script: 0x4f, flags: 0x0},
- 315: {region: 0x104, script: 0x1d, flags: 0x0},
- 316: {region: 0x110, script: 0x4f, flags: 0x0},
- 317: {region: 0xe5, script: 0x4f, flags: 0x0},
- 318: {region: 0x104, script: 0x4f, flags: 0x0},
- 319: {region: 0x97, script: 0x1f, flags: 0x0},
- 320: {region: 0x97, script: 0x5, flags: 0x0},
- 321: {region: 0x12d, script: 0x4f, flags: 0x0},
- 322: {region: 0x51, script: 0x4f, flags: 0x0},
- 323: {region: 0x5f, script: 0x4f, flags: 0x0},
- 324: {region: 0x19, script: 0x3, flags: 0x1},
- 325: {region: 0x104, script: 0x1d, flags: 0x0},
- 326: {region: 0x104, script: 0x1d, flags: 0x0},
- 327: {region: 0x93, script: 0x4f, flags: 0x0},
- 328: {region: 0xe6, script: 0x5, flags: 0x0},
- 329: {region: 0x79, script: 0x4f, flags: 0x0},
- 330: {region: 0x121, script: 0xcf, flags: 0x0},
- 331: {region: 0xe6, script: 0x5, flags: 0x0},
- 332: {region: 0x1c, script: 0x5, flags: 0x1},
- 333: {region: 0x135, script: 0x4f, flags: 0x0},
- 334: {region: 0x85, script: 0x52, flags: 0x0},
- 335: {region: 0x95, script: 0x35, flags: 0x0},
- 336: {region: 0x12d, script: 0x4f, flags: 0x0},
- 337: {region: 0xe6, script: 0x5, flags: 0x0},
- 338: {region: 0x12f, script: 0x4f, flags: 0x0},
- 339: {region: 0xb5, script: 0x4f, flags: 0x0},
- 340: {region: 0x104, script: 0x1d, flags: 0x0},
- 341: {region: 0x93, script: 0x4f, flags: 0x0},
- 342: {region: 0x52, script: 0xcf, flags: 0x0},
- 343: {region: 0x97, script: 0x50, flags: 0x0},
- 344: {region: 0x104, script: 0x1d, flags: 0x0},
- 345: {region: 0x12f, script: 0x4f, flags: 0x0},
- 346: {region: 0xd7, script: 0x4f, flags: 0x0},
- 347: {region: 0x21, script: 0x2, flags: 0x1},
- 348: {region: 0x9c, script: 0x4f, flags: 0x0},
- 349: {region: 0x52, script: 0x54, flags: 0x0},
- 350: {region: 0x93, script: 0x4f, flags: 0x0},
- 351: {region: 0x9a, script: 0x5, flags: 0x0},
- 352: {region: 0x132, script: 0x4f, flags: 0x0},
- 353: {region: 0x97, script: 0xca, flags: 0x0},
- 354: {region: 0x9c, script: 0x4f, flags: 0x0},
- 355: {region: 0x4a, script: 0x4f, flags: 0x0},
- 356: {region: 0xad, script: 0x4c, flags: 0x0},
- 357: {region: 0x4a, script: 0x4f, flags: 0x0},
- 358: {region: 0x15f, script: 0x4f, flags: 0x0},
- 359: {region: 0x9a, script: 0x5, flags: 0x0},
- 360: {region: 0xb4, script: 0x4f, flags: 0x0},
- 361: {region: 0xb6, script: 0x4f, flags: 0x0},
- 362: {region: 0x4a, script: 0x4f, flags: 0x0},
- 363: {region: 0x4a, script: 0x4f, flags: 0x0},
- 364: {region: 0xa2, script: 0x4f, flags: 0x0},
- 365: {region: 0xa2, script: 0x4f, flags: 0x0},
- 366: {region: 0x9a, script: 0x5, flags: 0x0},
- 367: {region: 0xb6, script: 0x4f, flags: 0x0},
- 368: {region: 0x121, script: 0xcf, flags: 0x0},
- 369: {region: 0x52, script: 0x32, flags: 0x0},
- 370: {region: 0x129, script: 0x4f, flags: 0x0},
- 371: {region: 0x93, script: 0x4f, flags: 0x0},
- 372: {region: 0x51, script: 0x4f, flags: 0x0},
- 373: {region: 0x97, script: 0x1f, flags: 0x0},
- 374: {region: 0x97, script: 0x1f, flags: 0x0},
- 375: {region: 0x93, script: 0x4f, flags: 0x0},
- 376: {region: 0x23, script: 0x3, flags: 0x1},
- 377: {region: 0xa2, script: 0x4f, flags: 0x0},
- 378: {region: 0xcd, script: 0x4f, flags: 0x0},
- 379: {region: 0x104, script: 0x1d, flags: 0x0},
- 380: {region: 0xe5, script: 0x4f, flags: 0x0},
- 381: {region: 0x93, script: 0x4f, flags: 0x0},
- 382: {region: 0x110, script: 0x4f, flags: 0x0},
- 383: {region: 0xa2, script: 0x4f, flags: 0x0},
- 384: {region: 0x121, script: 0x5, flags: 0x0},
- 385: {region: 0xca, script: 0x4f, flags: 0x0},
- 386: {region: 0xbd, script: 0x4f, flags: 0x0},
- 387: {region: 0xcf, script: 0x4f, flags: 0x0},
- 388: {region: 0x51, script: 0x4f, flags: 0x0},
- 389: {region: 0xd9, script: 0x1f, flags: 0x0},
- 390: {region: 0x12d, script: 0x4f, flags: 0x0},
- 391: {region: 0xbe, script: 0x4f, flags: 0x0},
- 392: {region: 0xde, script: 0x4f, flags: 0x0},
- 393: {region: 0x93, script: 0x4f, flags: 0x0},
- 394: {region: 0x99, script: 0x34, flags: 0x0},
- 395: {region: 0xc0, script: 0x1d, flags: 0x0},
- 396: {region: 0x97, script: 0x60, flags: 0x0},
- 397: {region: 0x109, script: 0x4f, flags: 0x0},
- 398: {region: 0x26, script: 0x3, flags: 0x1},
- 399: {region: 0x97, script: 0xe, flags: 0x0},
- 400: {region: 0xc2, script: 0x67, flags: 0x0},
- 402: {region: 0x48, script: 0x4f, flags: 0x0},
- 403: {region: 0x48, script: 0x4f, flags: 0x0},
- 404: {region: 0x36, script: 0x4f, flags: 0x0},
- 405: {region: 0x97, script: 0x1f, flags: 0x0},
- 406: {region: 0xd9, script: 0x1f, flags: 0x0},
- 407: {region: 0x104, script: 0x1d, flags: 0x0},
- 408: {region: 0x34, script: 0x64, flags: 0x0},
- 409: {region: 0x29, script: 0x3, flags: 0x1},
- 410: {region: 0xc9, script: 0x4f, flags: 0x0},
- 411: {region: 0x97, script: 0x1f, flags: 0x0},
- 412: {region: 0x51, script: 0x4f, flags: 0x0},
- 414: {region: 0x132, script: 0x4f, flags: 0x0},
- 415: {region: 0xe6, script: 0x5, flags: 0x0},
- 416: {region: 0xc1, script: 0x4f, flags: 0x0},
- 417: {region: 0x97, script: 0x1f, flags: 0x0},
- 418: {region: 0x93, script: 0x4f, flags: 0x0},
- 419: {region: 0x161, script: 0x4f, flags: 0x0},
- 420: {region: 0xc2, script: 0x67, flags: 0x0},
- 421: {region: 0x104, script: 0x1d, flags: 0x0},
- 422: {region: 0x12f, script: 0x4f, flags: 0x0},
- 423: {region: 0x9a, script: 0x59, flags: 0x0},
- 424: {region: 0x9a, script: 0x5, flags: 0x0},
- 425: {region: 0xdb, script: 0x4f, flags: 0x0},
- 427: {region: 0x52, script: 0x32, flags: 0x0},
- 428: {region: 0x9c, script: 0x4f, flags: 0x0},
- 429: {region: 0xd0, script: 0x4f, flags: 0x0},
- 430: {region: 0xd8, script: 0x4f, flags: 0x0},
- 431: {region: 0xcd, script: 0x4f, flags: 0x0},
- 432: {region: 0x161, script: 0x4f, flags: 0x0},
- 433: {region: 0xcf, script: 0x4f, flags: 0x0},
- 434: {region: 0x5f, script: 0x4f, flags: 0x0},
- 435: {region: 0xd9, script: 0x1f, flags: 0x0},
- 436: {region: 0xd9, script: 0x1f, flags: 0x0},
- 437: {region: 0xd0, script: 0x4f, flags: 0x0},
- 438: {region: 0xcf, script: 0x4f, flags: 0x0},
- 439: {region: 0xcd, script: 0x4f, flags: 0x0},
- 440: {region: 0xcd, script: 0x4f, flags: 0x0},
- 441: {region: 0x93, script: 0x4f, flags: 0x0},
- 442: {region: 0xdd, script: 0x4f, flags: 0x0},
- 443: {region: 0x97, script: 0x4f, flags: 0x0},
- 444: {region: 0xd7, script: 0x4f, flags: 0x0},
- 445: {region: 0x51, script: 0x4f, flags: 0x0},
- 446: {region: 0xd8, script: 0x4f, flags: 0x0},
- 447: {region: 0x51, script: 0x4f, flags: 0x0},
- 448: {region: 0xd8, script: 0x4f, flags: 0x0},
- 449: {region: 0x121, script: 0x4b, flags: 0x0},
- 450: {region: 0x97, script: 0x1f, flags: 0x0},
- 451: {region: 0x10a, script: 0xb1, flags: 0x0},
- 452: {region: 0x82, script: 0x6b, flags: 0x0},
- 453: {region: 0x15e, script: 0x4f, flags: 0x0},
- 454: {region: 0x48, script: 0x16, flags: 0x0},
- 455: {region: 0x15e, script: 0x4f, flags: 0x0},
- 456: {region: 0x115, script: 0x4f, flags: 0x0},
- 457: {region: 0x132, script: 0x4f, flags: 0x0},
- 458: {region: 0x52, script: 0x4f, flags: 0x0},
- 459: {region: 0xcc, script: 0x4f, flags: 0x0},
- 460: {region: 0x12d, script: 0x4f, flags: 0x0},
- 461: {region: 0x12f, script: 0x4f, flags: 0x0},
- 462: {region: 0x7e, script: 0x4f, flags: 0x0},
- 463: {region: 0x76, script: 0x4f, flags: 0x0},
- 465: {region: 0x6e, script: 0x4f, flags: 0x0},
- 466: {region: 0x97, script: 0x70, flags: 0x0},
- 467: {region: 0x7b, script: 0x1d, flags: 0x0},
- 468: {region: 0xc3, script: 0x6f, flags: 0x0},
- 469: {region: 0x2c, script: 0x3, flags: 0x1},
- 470: {region: 0xe5, script: 0x4f, flags: 0x0},
- 471: {region: 0x2f, script: 0x2, flags: 0x1},
- 472: {region: 0xe5, script: 0x4f, flags: 0x0},
- 473: {region: 0x2f, script: 0x4f, flags: 0x0},
- 474: {region: 0xee, script: 0x4f, flags: 0x0},
- 475: {region: 0x76, script: 0x4f, flags: 0x0},
- 476: {region: 0xd4, script: 0x4f, flags: 0x0},
- 477: {region: 0x132, script: 0x4f, flags: 0x0},
- 478: {region: 0x48, script: 0x4f, flags: 0x0},
- 479: {region: 0x9a, script: 0xd7, flags: 0x0},
- 480: {region: 0x5f, script: 0x4f, flags: 0x0},
- 481: {region: 0xae, script: 0x7a, flags: 0x0},
- 483: {region: 0x97, script: 0x11, flags: 0x0},
- 484: {region: 0xa2, script: 0x4f, flags: 0x0},
- 485: {region: 0xe7, script: 0x4f, flags: 0x0},
- 486: {region: 0x9c, script: 0x4f, flags: 0x0},
- 487: {region: 0x85, script: 0x2c, flags: 0x0},
- 488: {region: 0x73, script: 0x4f, flags: 0x0},
- 489: {region: 0xe6, script: 0x42, flags: 0x0},
- 490: {region: 0x9a, script: 0x5, flags: 0x0},
- 491: {region: 0x1, script: 0x4f, flags: 0x0},
- 492: {region: 0x23, script: 0x5, flags: 0x0},
- 493: {region: 0x40, script: 0x4f, flags: 0x0},
- 494: {region: 0x78, script: 0x4f, flags: 0x0},
- 495: {region: 0xe2, script: 0x4f, flags: 0x0},
- 496: {region: 0x87, script: 0x4f, flags: 0x0},
- 497: {region: 0x68, script: 0x4f, flags: 0x0},
- 498: {region: 0x97, script: 0x1f, flags: 0x0},
- 499: {region: 0x100, script: 0x4f, flags: 0x0},
- 500: {region: 0x93, script: 0x4f, flags: 0x0},
- 501: {region: 0x9c, script: 0x4f, flags: 0x0},
- 502: {region: 0x97, script: 0x4f, flags: 0x0},
- 503: {region: 0x31, script: 0x2, flags: 0x1},
- 504: {region: 0xd9, script: 0x1f, flags: 0x0},
- 505: {region: 0x34, script: 0xe, flags: 0x0},
- 506: {region: 0x4d, script: 0x4f, flags: 0x0},
- 507: {region: 0x70, script: 0x4f, flags: 0x0},
- 508: {region: 0x4d, script: 0x4f, flags: 0x0},
- 509: {region: 0x9a, script: 0x5, flags: 0x0},
- 510: {region: 0x10a, script: 0x4f, flags: 0x0},
- 511: {region: 0x39, script: 0x4f, flags: 0x0},
- 512: {region: 0xcf, script: 0x4f, flags: 0x0},
- 513: {region: 0x102, script: 0x4f, flags: 0x0},
- 514: {region: 0x93, script: 0x4f, flags: 0x0},
- 515: {region: 0x12d, script: 0x4f, flags: 0x0},
- 516: {region: 0x71, script: 0x4f, flags: 0x0},
- 517: {region: 0x104, script: 0x1d, flags: 0x0},
- 518: {region: 0x12e, script: 0x1d, flags: 0x0},
- 519: {region: 0x107, script: 0x4f, flags: 0x0},
- 520: {region: 0x105, script: 0x4f, flags: 0x0},
- 521: {region: 0x12d, script: 0x4f, flags: 0x0},
- 522: {region: 0xa0, script: 0x41, flags: 0x0},
- 523: {region: 0x97, script: 0x1f, flags: 0x0},
- 524: {region: 0x7e, script: 0x4f, flags: 0x0},
- 525: {region: 0x104, script: 0x1d, flags: 0x0},
- 526: {region: 0xa2, script: 0x4f, flags: 0x0},
- 527: {region: 0x93, script: 0x4f, flags: 0x0},
- 528: {region: 0x97, script: 0x4f, flags: 0x0},
- 529: {region: 0x97, script: 0xb5, flags: 0x0},
- 530: {region: 0x12d, script: 0x4f, flags: 0x0},
- 531: {region: 0x9c, script: 0x4f, flags: 0x0},
- 532: {region: 0x97, script: 0x1f, flags: 0x0},
- 533: {region: 0x9c, script: 0x4f, flags: 0x0},
- 534: {region: 0x79, script: 0x4f, flags: 0x0},
- 535: {region: 0x48, script: 0x4f, flags: 0x0},
- 536: {region: 0x33, script: 0x4, flags: 0x1},
- 537: {region: 0x9c, script: 0x4f, flags: 0x0},
- 538: {region: 0x9a, script: 0x5, flags: 0x0},
- 539: {region: 0xd8, script: 0x4f, flags: 0x0},
- 540: {region: 0x4e, script: 0x4f, flags: 0x0},
- 541: {region: 0xcf, script: 0x4f, flags: 0x0},
- 542: {region: 0xcd, script: 0x4f, flags: 0x0},
- 543: {region: 0xc1, script: 0x4f, flags: 0x0},
- 544: {region: 0x4b, script: 0x4f, flags: 0x0},
- 545: {region: 0x94, script: 0x6d, flags: 0x0},
- 546: {region: 0xb4, script: 0x4f, flags: 0x0},
- 548: {region: 0xb8, script: 0xcc, flags: 0x0},
- 549: {region: 0xc2, script: 0x67, flags: 0x0},
- 550: {region: 0xb1, script: 0xbb, flags: 0x0},
- 551: {region: 0x6e, script: 0x4f, flags: 0x0},
- 552: {region: 0x10f, script: 0x4f, flags: 0x0},
- 553: {region: 0xe6, script: 0x5, flags: 0x0},
- 554: {region: 0x10d, script: 0x4f, flags: 0x0},
- 555: {region: 0xe7, script: 0x4f, flags: 0x0},
- 556: {region: 0x93, script: 0x4f, flags: 0x0},
- 557: {region: 0x13f, script: 0x4f, flags: 0x0},
- 558: {region: 0x10a, script: 0x4f, flags: 0x0},
- 560: {region: 0x10a, script: 0x4f, flags: 0x0},
- 561: {region: 0x70, script: 0x4f, flags: 0x0},
- 562: {region: 0x95, script: 0xb2, flags: 0x0},
- 563: {region: 0x70, script: 0x4f, flags: 0x0},
- 564: {region: 0x161, script: 0x4f, flags: 0x0},
- 565: {region: 0xc1, script: 0x4f, flags: 0x0},
- 566: {region: 0x113, script: 0x4f, flags: 0x0},
- 567: {region: 0x121, script: 0xcf, flags: 0x0},
- 568: {region: 0x26, script: 0x4f, flags: 0x0},
- 569: {region: 0x37, script: 0x5, flags: 0x1},
- 570: {region: 0x97, script: 0xbc, flags: 0x0},
- 571: {region: 0x114, script: 0x4f, flags: 0x0},
- 572: {region: 0x112, script: 0x4f, flags: 0x0},
- 573: {region: 0x97, script: 0x1f, flags: 0x0},
- 574: {region: 0x15e, script: 0x4f, flags: 0x0},
- 575: {region: 0x6c, script: 0x4f, flags: 0x0},
- 576: {region: 0x15e, script: 0x4f, flags: 0x0},
- 577: {region: 0x5f, script: 0x4f, flags: 0x0},
- 578: {region: 0x93, script: 0x4f, flags: 0x0},
- 579: {region: 0x12d, script: 0x4f, flags: 0x0},
- 580: {region: 0x82, script: 0x4f, flags: 0x0},
- 581: {region: 0x10a, script: 0x4f, flags: 0x0},
- 582: {region: 0x12d, script: 0x4f, flags: 0x0},
- 583: {region: 0x15c, script: 0x5, flags: 0x0},
- 584: {region: 0x4a, script: 0x4f, flags: 0x0},
- 585: {region: 0x5f, script: 0x4f, flags: 0x0},
- 586: {region: 0x97, script: 0x1f, flags: 0x0},
- 587: {region: 0x93, script: 0x4f, flags: 0x0},
- 588: {region: 0x34, script: 0xe, flags: 0x0},
- 589: {region: 0x99, script: 0xbf, flags: 0x0},
- 590: {region: 0xe7, script: 0x4f, flags: 0x0},
- 591: {region: 0x97, script: 0xc7, flags: 0x0},
- 592: {region: 0xd9, script: 0x1f, flags: 0x0},
- 593: {region: 0xe5, script: 0x4f, flags: 0x0},
- 594: {region: 0x97, script: 0x47, flags: 0x0},
- 595: {region: 0x52, script: 0xc5, flags: 0x0},
- 596: {region: 0xd9, script: 0x1f, flags: 0x0},
- 597: {region: 0xd9, script: 0x1f, flags: 0x0},
- 598: {region: 0x97, script: 0xca, flags: 0x0},
- 599: {region: 0x110, script: 0x4f, flags: 0x0},
- 600: {region: 0x12f, script: 0x4f, flags: 0x0},
- 601: {region: 0x124, script: 0x4f, flags: 0x0},
- 602: {region: 0x3c, script: 0x3, flags: 0x1},
- 603: {region: 0x121, script: 0xcf, flags: 0x0},
- 604: {region: 0xd9, script: 0x1f, flags: 0x0},
- 605: {region: 0xd9, script: 0x1f, flags: 0x0},
- 606: {region: 0xd9, script: 0x1f, flags: 0x0},
- 607: {region: 0x6e, script: 0x26, flags: 0x0},
- 608: {region: 0x6c, script: 0x26, flags: 0x0},
- 609: {region: 0xd4, script: 0x4f, flags: 0x0},
- 610: {region: 0x125, script: 0x4f, flags: 0x0},
- 611: {region: 0x123, script: 0x4f, flags: 0x0},
- 612: {region: 0x31, script: 0x4f, flags: 0x0},
- 613: {region: 0xd9, script: 0x1f, flags: 0x0},
- 614: {region: 0xe5, script: 0x4f, flags: 0x0},
- 615: {region: 0x31, script: 0x4f, flags: 0x0},
- 616: {region: 0xd2, script: 0x4f, flags: 0x0},
- 617: {region: 0x15e, script: 0x4f, flags: 0x0},
- 618: {region: 0x127, script: 0x4f, flags: 0x0},
- 619: {region: 0xcc, script: 0x4f, flags: 0x0},
- 620: {region: 0xe4, script: 0x4f, flags: 0x0},
- 621: {region: 0x129, script: 0x4f, flags: 0x0},
- 622: {region: 0x129, script: 0x4f, flags: 0x0},
- 623: {region: 0x12c, script: 0x4f, flags: 0x0},
- 624: {region: 0x15e, script: 0x4f, flags: 0x0},
- 625: {region: 0x85, script: 0x2c, flags: 0x0},
- 626: {region: 0xd9, script: 0x1f, flags: 0x0},
- 627: {region: 0xe5, script: 0x4f, flags: 0x0},
- 628: {region: 0x42, script: 0xd0, flags: 0x0},
- 629: {region: 0x104, script: 0x1d, flags: 0x0},
- 630: {region: 0x12f, script: 0x4f, flags: 0x0},
- 631: {region: 0x121, script: 0xcf, flags: 0x0},
- 632: {region: 0x31, script: 0x4f, flags: 0x0},
- 633: {region: 0xcc, script: 0x4f, flags: 0x0},
- 634: {region: 0x12b, script: 0x4f, flags: 0x0},
- 636: {region: 0xd2, script: 0x4f, flags: 0x0},
- 637: {region: 0xe3, script: 0x4f, flags: 0x0},
- 638: {region: 0x104, script: 0x1d, flags: 0x0},
- 639: {region: 0xb8, script: 0x4f, flags: 0x0},
- 640: {region: 0x104, script: 0x1d, flags: 0x0},
- 641: {region: 0x3f, script: 0x4, flags: 0x1},
- 642: {region: 0x11a, script: 0xd2, flags: 0x0},
- 643: {region: 0x12e, script: 0x1d, flags: 0x0},
- 644: {region: 0x73, script: 0x4f, flags: 0x0},
- 645: {region: 0x29, script: 0x4f, flags: 0x0},
- 647: {region: 0x43, script: 0x3, flags: 0x1},
- 648: {region: 0x97, script: 0xe, flags: 0x0},
- 649: {region: 0xe6, script: 0x5, flags: 0x0},
- 650: {region: 0x46, script: 0x4, flags: 0x1},
- 651: {region: 0xb2, script: 0xd3, flags: 0x0},
- 652: {region: 0x15e, script: 0x4f, flags: 0x0},
- 653: {region: 0x9c, script: 0x4f, flags: 0x0},
- 654: {region: 0x104, script: 0x4f, flags: 0x0},
- 655: {region: 0x13b, script: 0x4f, flags: 0x0},
- 656: {region: 0x119, script: 0x4f, flags: 0x0},
- 657: {region: 0x35, script: 0x4f, flags: 0x0},
- 658: {region: 0x5f, script: 0x4f, flags: 0x0},
- 659: {region: 0xcf, script: 0x4f, flags: 0x0},
- 660: {region: 0x1, script: 0x4f, flags: 0x0},
- 661: {region: 0x104, script: 0x4f, flags: 0x0},
- 662: {region: 0x69, script: 0x4f, flags: 0x0},
- 663: {region: 0x12d, script: 0x4f, flags: 0x0},
- 664: {region: 0x35, script: 0x4f, flags: 0x0},
- 665: {region: 0x4d, script: 0x4f, flags: 0x0},
- 666: {region: 0x6e, script: 0x26, flags: 0x0},
- 667: {region: 0xe5, script: 0x4f, flags: 0x0},
- 668: {region: 0x2e, script: 0x4f, flags: 0x0},
- 669: {region: 0x97, script: 0xca, flags: 0x0},
- 670: {region: 0x97, script: 0x1f, flags: 0x0},
- 671: {region: 0x13d, script: 0x4f, flags: 0x0},
- 672: {region: 0xa6, script: 0x5, flags: 0x0},
- 673: {region: 0x112, script: 0x4f, flags: 0x0},
- 674: {region: 0x97, script: 0x1f, flags: 0x0},
- 675: {region: 0x52, script: 0x32, flags: 0x0},
- 676: {region: 0x40, script: 0x4f, flags: 0x0},
- 677: {region: 0x129, script: 0x17, flags: 0x0},
- 678: {region: 0x15e, script: 0x4f, flags: 0x0},
- 679: {region: 0x129, script: 0x56, flags: 0x0},
- 680: {region: 0x129, script: 0x57, flags: 0x0},
- 681: {region: 0x7b, script: 0x28, flags: 0x0},
- 682: {region: 0x52, script: 0x5a, flags: 0x0},
- 683: {region: 0x109, script: 0x5e, flags: 0x0},
- 684: {region: 0x106, script: 0x68, flags: 0x0},
- 685: {region: 0x97, script: 0x1f, flags: 0x0},
- 686: {region: 0x12f, script: 0x4f, flags: 0x0},
- 687: {region: 0x9a, script: 0x7c, flags: 0x0},
- 688: {region: 0x15b, script: 0xb4, flags: 0x0},
- 689: {region: 0xd9, script: 0x1f, flags: 0x0},
- 690: {region: 0xcf, script: 0x4f, flags: 0x0},
- 691: {region: 0x73, script: 0x4f, flags: 0x0},
- 692: {region: 0x51, script: 0x4f, flags: 0x0},
- 693: {region: 0x51, script: 0x4f, flags: 0x0},
- 694: {region: 0x1, script: 0x35, flags: 0x0},
- 695: {region: 0xd4, script: 0x4f, flags: 0x0},
- 696: {region: 0x40, script: 0x4f, flags: 0x0},
- 697: {region: 0xcd, script: 0x4f, flags: 0x0},
- 698: {region: 0x52, script: 0x4f, flags: 0x0},
- 699: {region: 0x109, script: 0x4f, flags: 0x0},
- 701: {region: 0xa6, script: 0x5, flags: 0x0},
- 702: {region: 0xd7, script: 0x4f, flags: 0x0},
- 703: {region: 0xb8, script: 0xcc, flags: 0x0},
- 704: {region: 0x4a, script: 0x13, flags: 0x1},
- 705: {region: 0xce, script: 0x4f, flags: 0x0},
- 706: {region: 0x15e, script: 0x4f, flags: 0x0},
- 708: {region: 0x129, script: 0x4f, flags: 0x0},
+ 199: {region: 0xe6, script: 0x5, flags: 0x0},
+ 200: {region: 0x6d, script: 0x52, flags: 0x0},
+ 201: {region: 0x9a, script: 0x5, flags: 0x0},
+ 202: {region: 0xef, script: 0x52, flags: 0x0},
+ 203: {region: 0x97, script: 0x20, flags: 0x0},
+ 204: {region: 0x97, script: 0xd0, flags: 0x0},
+ 205: {region: 0x93, script: 0x52, flags: 0x0},
+ 206: {region: 0xd7, script: 0x52, flags: 0x0},
+ 207: {region: 0x12e, script: 0x2b, flags: 0x0},
+ 208: {region: 0x10, script: 0x2, flags: 0x1},
+ 209: {region: 0x97, script: 0xe, flags: 0x0},
+ 210: {region: 0x4d, script: 0x52, flags: 0x0},
+ 211: {region: 0x97, script: 0x2e, flags: 0x0},
+ 212: {region: 0x40, script: 0x52, flags: 0x0},
+ 213: {region: 0x53, script: 0x52, flags: 0x0},
+ 214: {region: 0x7e, script: 0x52, flags: 0x0},
+ 216: {region: 0xa2, script: 0x52, flags: 0x0},
+ 217: {region: 0x96, script: 0x52, flags: 0x0},
+ 218: {region: 0xd9, script: 0x20, flags: 0x0},
+ 219: {region: 0x48, script: 0x52, flags: 0x0},
+ 220: {region: 0x12, script: 0x3, flags: 0x1},
+ 221: {region: 0x52, script: 0x34, flags: 0x0},
+ 222: {region: 0x132, script: 0x52, flags: 0x0},
+ 223: {region: 0x23, script: 0x5, flags: 0x0},
+ 224: {region: 0x95, script: 0x37, flags: 0x0},
+ 225: {region: 0x97, script: 0x20, flags: 0x0},
+ 226: {region: 0x71, script: 0x52, flags: 0x0},
+ 227: {region: 0xe5, script: 0x52, flags: 0x0},
+ 228: {region: 0x129, script: 0x39, flags: 0x0},
+ 229: {region: 0x52, script: 0x81, flags: 0x0},
+ 230: {region: 0xe6, script: 0x5, flags: 0x0},
+ 231: {region: 0x97, script: 0x20, flags: 0x0},
+ 232: {region: 0xad, script: 0x3a, flags: 0x0},
+ 233: {region: 0xe5, script: 0x52, flags: 0x0},
+ 234: {region: 0xe6, script: 0x5, flags: 0x0},
+ 235: {region: 0xe4, script: 0x52, flags: 0x0},
+ 236: {region: 0x97, script: 0x20, flags: 0x0},
+ 237: {region: 0x97, script: 0x20, flags: 0x0},
+ 238: {region: 0x8e, script: 0x52, flags: 0x0},
+ 239: {region: 0x5f, script: 0x52, flags: 0x0},
+ 240: {region: 0x52, script: 0x34, flags: 0x0},
+ 241: {region: 0x8f, script: 0x52, flags: 0x0},
+ 242: {region: 0x90, script: 0x52, flags: 0x0},
+ 243: {region: 0x27, script: 0x8, flags: 0x0},
+ 244: {region: 0xd0, script: 0x52, flags: 0x0},
+ 245: {region: 0x76, script: 0x52, flags: 0x0},
+ 246: {region: 0xce, script: 0x52, flags: 0x0},
+ 247: {region: 0xd4, script: 0x52, flags: 0x0},
+ 248: {region: 0x93, script: 0x52, flags: 0x0},
+ 250: {region: 0xd4, script: 0x52, flags: 0x0},
+ 251: {region: 0x52, script: 0xdf, flags: 0x0},
+ 252: {region: 0x132, script: 0x52, flags: 0x0},
+ 253: {region: 0x48, script: 0x52, flags: 0x0},
+ 254: {region: 0xe5, script: 0x52, flags: 0x0},
+ 255: {region: 0x93, script: 0x52, flags: 0x0},
+ 256: {region: 0x104, script: 0x1e, flags: 0x0},
+ 258: {region: 0x9b, script: 0x52, flags: 0x0},
+ 259: {region: 0x9c, script: 0x52, flags: 0x0},
+ 260: {region: 0x48, script: 0x17, flags: 0x0},
+ 261: {region: 0x95, script: 0x37, flags: 0x0},
+ 262: {region: 0x104, script: 0x52, flags: 0x0},
+ 263: {region: 0xa0, script: 0x41, flags: 0x0},
+ 264: {region: 0x9e, script: 0x52, flags: 0x0},
+ 266: {region: 0x51, script: 0x52, flags: 0x0},
+ 267: {region: 0x12e, script: 0x37, flags: 0x0},
+ 268: {region: 0x12d, script: 0x52, flags: 0x0},
+ 269: {region: 0xd9, script: 0x20, flags: 0x0},
+ 270: {region: 0x62, script: 0x52, flags: 0x0},
+ 271: {region: 0x93, script: 0x52, flags: 0x0},
+ 272: {region: 0x93, script: 0x52, flags: 0x0},
+ 273: {region: 0x7b, script: 0x29, flags: 0x0},
+ 274: {region: 0x134, script: 0x1e, flags: 0x0},
+ 275: {region: 0x66, script: 0x52, flags: 0x0},
+ 276: {region: 0xc2, script: 0x52, flags: 0x0},
+ 277: {region: 0xd4, script: 0x52, flags: 0x0},
+ 278: {region: 0xa2, script: 0x52, flags: 0x0},
+ 279: {region: 0xc1, script: 0x52, flags: 0x0},
+ 280: {region: 0x104, script: 0x1e, flags: 0x0},
+ 281: {region: 0xd4, script: 0x52, flags: 0x0},
+ 282: {region: 0x161, script: 0x52, flags: 0x0},
+ 283: {region: 0x12d, script: 0x52, flags: 0x0},
+ 284: {region: 0x121, script: 0xd5, flags: 0x0},
+ 285: {region: 0x59, script: 0x52, flags: 0x0},
+ 286: {region: 0x51, script: 0x52, flags: 0x0},
+ 287: {region: 0x4e, script: 0x52, flags: 0x0},
+ 288: {region: 0x97, script: 0x20, flags: 0x0},
+ 289: {region: 0x97, script: 0x20, flags: 0x0},
+ 290: {region: 0x4a, script: 0x52, flags: 0x0},
+ 291: {region: 0x93, script: 0x52, flags: 0x0},
+ 292: {region: 0x40, script: 0x52, flags: 0x0},
+ 293: {region: 0x97, script: 0x52, flags: 0x0},
+ 294: {region: 0x52, script: 0xcc, flags: 0x0},
+ 295: {region: 0x97, script: 0x20, flags: 0x0},
+ 296: {region: 0xc1, script: 0x52, flags: 0x0},
+ 297: {region: 0x97, script: 0x6b, flags: 0x0},
+ 298: {region: 0xe6, script: 0x5, flags: 0x0},
+ 299: {region: 0xa2, script: 0x52, flags: 0x0},
+ 300: {region: 0x129, script: 0x52, flags: 0x0},
+ 301: {region: 0xd0, script: 0x52, flags: 0x0},
+ 302: {region: 0xad, script: 0x4f, flags: 0x0},
+ 303: {region: 0x15, script: 0x6, flags: 0x1},
+ 304: {region: 0x51, script: 0x52, flags: 0x0},
+ 305: {region: 0x80, script: 0x52, flags: 0x0},
+ 306: {region: 0xa2, script: 0x52, flags: 0x0},
+ 307: {region: 0xa4, script: 0x46, flags: 0x0},
+ 308: {region: 0x29, script: 0x52, flags: 0x0},
+ 309: {region: 0x97, script: 0x4a, flags: 0x0},
+ 310: {region: 0xa9, script: 0x4b, flags: 0x0},
+ 311: {region: 0x104, script: 0x1e, flags: 0x0},
+ 312: {region: 0x97, script: 0x20, flags: 0x0},
+ 313: {region: 0x73, script: 0x52, flags: 0x0},
+ 314: {region: 0xb2, script: 0x52, flags: 0x0},
+ 316: {region: 0x104, script: 0x1e, flags: 0x0},
+ 317: {region: 0x110, script: 0x52, flags: 0x0},
+ 318: {region: 0xe5, script: 0x52, flags: 0x0},
+ 319: {region: 0x104, script: 0x52, flags: 0x0},
+ 320: {region: 0x97, script: 0x20, flags: 0x0},
+ 321: {region: 0x97, script: 0x5, flags: 0x0},
+ 322: {region: 0x12d, script: 0x52, flags: 0x0},
+ 323: {region: 0x51, script: 0x52, flags: 0x0},
+ 324: {region: 0x5f, script: 0x52, flags: 0x0},
+ 325: {region: 0x1b, script: 0x3, flags: 0x1},
+ 326: {region: 0x104, script: 0x1e, flags: 0x0},
+ 327: {region: 0x104, script: 0x1e, flags: 0x0},
+ 328: {region: 0x93, script: 0x52, flags: 0x0},
+ 329: {region: 0xe6, script: 0x5, flags: 0x0},
+ 330: {region: 0x79, script: 0x52, flags: 0x0},
+ 331: {region: 0x121, script: 0xd5, flags: 0x0},
+ 332: {region: 0xe6, script: 0x5, flags: 0x0},
+ 333: {region: 0x1e, script: 0x5, flags: 0x1},
+ 334: {region: 0x135, script: 0x52, flags: 0x0},
+ 335: {region: 0x85, script: 0x56, flags: 0x0},
+ 336: {region: 0x95, script: 0x37, flags: 0x0},
+ 337: {region: 0x12d, script: 0x52, flags: 0x0},
+ 338: {region: 0xe6, script: 0x5, flags: 0x0},
+ 339: {region: 0x12f, script: 0x52, flags: 0x0},
+ 340: {region: 0xb5, script: 0x52, flags: 0x0},
+ 341: {region: 0x104, script: 0x1e, flags: 0x0},
+ 342: {region: 0x93, script: 0x52, flags: 0x0},
+ 343: {region: 0x52, script: 0xd5, flags: 0x0},
+ 344: {region: 0x97, script: 0x54, flags: 0x0},
+ 345: {region: 0x104, script: 0x1e, flags: 0x0},
+ 346: {region: 0x12f, script: 0x52, flags: 0x0},
+ 347: {region: 0xd7, script: 0x52, flags: 0x0},
+ 348: {region: 0x23, script: 0x2, flags: 0x1},
+ 349: {region: 0x9c, script: 0x52, flags: 0x0},
+ 350: {region: 0x52, script: 0x58, flags: 0x0},
+ 351: {region: 0x93, script: 0x52, flags: 0x0},
+ 352: {region: 0x9a, script: 0x5, flags: 0x0},
+ 353: {region: 0x132, script: 0x52, flags: 0x0},
+ 354: {region: 0x97, script: 0xd0, flags: 0x0},
+ 355: {region: 0x9c, script: 0x52, flags: 0x0},
+ 356: {region: 0x4a, script: 0x52, flags: 0x0},
+ 357: {region: 0xad, script: 0x4f, flags: 0x0},
+ 358: {region: 0x4a, script: 0x52, flags: 0x0},
+ 359: {region: 0x15f, script: 0x52, flags: 0x0},
+ 360: {region: 0x9a, script: 0x5, flags: 0x0},
+ 361: {region: 0xb4, script: 0x52, flags: 0x0},
+ 362: {region: 0xb6, script: 0x52, flags: 0x0},
+ 363: {region: 0x4a, script: 0x52, flags: 0x0},
+ 364: {region: 0x4a, script: 0x52, flags: 0x0},
+ 365: {region: 0xa2, script: 0x52, flags: 0x0},
+ 366: {region: 0xa2, script: 0x52, flags: 0x0},
+ 367: {region: 0x9a, script: 0x5, flags: 0x0},
+ 368: {region: 0xb6, script: 0x52, flags: 0x0},
+ 369: {region: 0x121, script: 0xd5, flags: 0x0},
+ 370: {region: 0x52, script: 0x34, flags: 0x0},
+ 371: {region: 0x129, script: 0x52, flags: 0x0},
+ 372: {region: 0x93, script: 0x52, flags: 0x0},
+ 373: {region: 0x51, script: 0x52, flags: 0x0},
+ 374: {region: 0x97, script: 0x20, flags: 0x0},
+ 375: {region: 0x97, script: 0x20, flags: 0x0},
+ 376: {region: 0x93, script: 0x52, flags: 0x0},
+ 377: {region: 0x25, script: 0x3, flags: 0x1},
+ 378: {region: 0xa2, script: 0x52, flags: 0x0},
+ 379: {region: 0xcd, script: 0x52, flags: 0x0},
+ 380: {region: 0x104, script: 0x1e, flags: 0x0},
+ 381: {region: 0xe5, script: 0x52, flags: 0x0},
+ 382: {region: 0x93, script: 0x52, flags: 0x0},
+ 383: {region: 0x110, script: 0x52, flags: 0x0},
+ 384: {region: 0xa2, script: 0x52, flags: 0x0},
+ 385: {region: 0x121, script: 0x5, flags: 0x0},
+ 386: {region: 0xca, script: 0x52, flags: 0x0},
+ 387: {region: 0xbd, script: 0x52, flags: 0x0},
+ 388: {region: 0xcf, script: 0x52, flags: 0x0},
+ 389: {region: 0x51, script: 0x52, flags: 0x0},
+ 390: {region: 0xd9, script: 0x20, flags: 0x0},
+ 391: {region: 0x12d, script: 0x52, flags: 0x0},
+ 392: {region: 0xbe, script: 0x52, flags: 0x0},
+ 393: {region: 0xde, script: 0x52, flags: 0x0},
+ 394: {region: 0x93, script: 0x52, flags: 0x0},
+ 395: {region: 0x99, script: 0x36, flags: 0x0},
+ 396: {region: 0xc0, script: 0x1e, flags: 0x0},
+ 397: {region: 0x97, script: 0x64, flags: 0x0},
+ 398: {region: 0x109, script: 0x52, flags: 0x0},
+ 399: {region: 0x28, script: 0x3, flags: 0x1},
+ 400: {region: 0x97, script: 0xe, flags: 0x0},
+ 401: {region: 0xc2, script: 0x6b, flags: 0x0},
+ 403: {region: 0x48, script: 0x52, flags: 0x0},
+ 404: {region: 0x48, script: 0x52, flags: 0x0},
+ 405: {region: 0x36, script: 0x52, flags: 0x0},
+ 406: {region: 0x97, script: 0x20, flags: 0x0},
+ 407: {region: 0xd9, script: 0x20, flags: 0x0},
+ 408: {region: 0x104, script: 0x1e, flags: 0x0},
+ 409: {region: 0x34, script: 0x68, flags: 0x0},
+ 410: {region: 0x2b, script: 0x3, flags: 0x1},
+ 411: {region: 0xc9, script: 0x52, flags: 0x0},
+ 412: {region: 0x97, script: 0x20, flags: 0x0},
+ 413: {region: 0x51, script: 0x52, flags: 0x0},
+ 415: {region: 0x132, script: 0x52, flags: 0x0},
+ 416: {region: 0xe6, script: 0x5, flags: 0x0},
+ 417: {region: 0xc1, script: 0x52, flags: 0x0},
+ 418: {region: 0x97, script: 0x20, flags: 0x0},
+ 419: {region: 0x93, script: 0x52, flags: 0x0},
+ 420: {region: 0x161, script: 0x52, flags: 0x0},
+ 421: {region: 0xc2, script: 0x6b, flags: 0x0},
+ 422: {region: 0x104, script: 0x1e, flags: 0x0},
+ 423: {region: 0x12f, script: 0x52, flags: 0x0},
+ 424: {region: 0x9a, script: 0x5d, flags: 0x0},
+ 425: {region: 0x9a, script: 0x5, flags: 0x0},
+ 426: {region: 0xdb, script: 0x52, flags: 0x0},
+ 428: {region: 0x52, script: 0x34, flags: 0x0},
+ 429: {region: 0x9c, script: 0x52, flags: 0x0},
+ 430: {region: 0xd0, script: 0x52, flags: 0x0},
+ 431: {region: 0xd8, script: 0x52, flags: 0x0},
+ 432: {region: 0xcd, script: 0x52, flags: 0x0},
+ 433: {region: 0x161, script: 0x52, flags: 0x0},
+ 434: {region: 0xcf, script: 0x52, flags: 0x0},
+ 435: {region: 0x5f, script: 0x52, flags: 0x0},
+ 436: {region: 0xd9, script: 0x20, flags: 0x0},
+ 437: {region: 0xd9, script: 0x20, flags: 0x0},
+ 438: {region: 0xd0, script: 0x52, flags: 0x0},
+ 439: {region: 0xcf, script: 0x52, flags: 0x0},
+ 440: {region: 0xcd, script: 0x52, flags: 0x0},
+ 441: {region: 0xcd, script: 0x52, flags: 0x0},
+ 442: {region: 0x93, script: 0x52, flags: 0x0},
+ 443: {region: 0xdd, script: 0x52, flags: 0x0},
+ 444: {region: 0x97, script: 0x52, flags: 0x0},
+ 445: {region: 0xd7, script: 0x52, flags: 0x0},
+ 446: {region: 0x51, script: 0x52, flags: 0x0},
+ 447: {region: 0xd8, script: 0x52, flags: 0x0},
+ 448: {region: 0x51, script: 0x52, flags: 0x0},
+ 449: {region: 0xd8, script: 0x52, flags: 0x0},
+ 450: {region: 0x121, script: 0x4e, flags: 0x0},
+ 451: {region: 0x97, script: 0x20, flags: 0x0},
+ 452: {region: 0x10a, script: 0xb7, flags: 0x0},
+ 453: {region: 0x82, script: 0x70, flags: 0x0},
+ 454: {region: 0x15e, script: 0x52, flags: 0x0},
+ 455: {region: 0x48, script: 0x17, flags: 0x0},
+ 456: {region: 0x15e, script: 0x52, flags: 0x0},
+ 457: {region: 0x115, script: 0x52, flags: 0x0},
+ 458: {region: 0x132, script: 0x52, flags: 0x0},
+ 459: {region: 0x52, script: 0x52, flags: 0x0},
+ 460: {region: 0xcc, script: 0x52, flags: 0x0},
+ 461: {region: 0x12d, script: 0x52, flags: 0x0},
+ 462: {region: 0x12f, script: 0x52, flags: 0x0},
+ 463: {region: 0x7e, script: 0x52, flags: 0x0},
+ 464: {region: 0x76, script: 0x52, flags: 0x0},
+ 466: {region: 0x6e, script: 0x52, flags: 0x0},
+ 467: {region: 0x97, script: 0x75, flags: 0x0},
+ 468: {region: 0x7b, script: 0x1e, flags: 0x0},
+ 469: {region: 0x132, script: 0x76, flags: 0x0},
+ 470: {region: 0xc3, script: 0x74, flags: 0x0},
+ 471: {region: 0x2e, script: 0x3, flags: 0x1},
+ 472: {region: 0xe5, script: 0x52, flags: 0x0},
+ 473: {region: 0x31, script: 0x2, flags: 0x1},
+ 474: {region: 0xe5, script: 0x52, flags: 0x0},
+ 475: {region: 0x2f, script: 0x52, flags: 0x0},
+ 476: {region: 0xee, script: 0x52, flags: 0x0},
+ 477: {region: 0x76, script: 0x52, flags: 0x0},
+ 478: {region: 0xd4, script: 0x52, flags: 0x0},
+ 479: {region: 0x132, script: 0x52, flags: 0x0},
+ 480: {region: 0x48, script: 0x52, flags: 0x0},
+ 481: {region: 0x9a, script: 0xdd, flags: 0x0},
+ 482: {region: 0x5f, script: 0x52, flags: 0x0},
+ 483: {region: 0xae, script: 0x7f, flags: 0x0},
+ 485: {region: 0x97, script: 0x12, flags: 0x0},
+ 486: {region: 0xa2, script: 0x52, flags: 0x0},
+ 487: {region: 0xe7, script: 0x52, flags: 0x0},
+ 488: {region: 0x9c, script: 0x52, flags: 0x0},
+ 489: {region: 0x85, script: 0x2d, flags: 0x0},
+ 490: {region: 0x73, script: 0x52, flags: 0x0},
+ 491: {region: 0xe6, script: 0x45, flags: 0x0},
+ 492: {region: 0x9a, script: 0x5, flags: 0x0},
+ 493: {region: 0x1, script: 0x52, flags: 0x0},
+ 494: {region: 0x23, script: 0x5, flags: 0x0},
+ 495: {region: 0x40, script: 0x52, flags: 0x0},
+ 496: {region: 0x78, script: 0x52, flags: 0x0},
+ 497: {region: 0xe2, script: 0x52, flags: 0x0},
+ 498: {region: 0x87, script: 0x52, flags: 0x0},
+ 499: {region: 0x68, script: 0x52, flags: 0x0},
+ 500: {region: 0x97, script: 0x20, flags: 0x0},
+ 501: {region: 0x100, script: 0x52, flags: 0x0},
+ 502: {region: 0x93, script: 0x52, flags: 0x0},
+ 503: {region: 0x9c, script: 0x52, flags: 0x0},
+ 504: {region: 0x97, script: 0x52, flags: 0x0},
+ 505: {region: 0x33, script: 0x2, flags: 0x1},
+ 506: {region: 0xd9, script: 0x20, flags: 0x0},
+ 507: {region: 0x34, script: 0xe, flags: 0x0},
+ 508: {region: 0x4d, script: 0x52, flags: 0x0},
+ 509: {region: 0x70, script: 0x52, flags: 0x0},
+ 510: {region: 0x4d, script: 0x52, flags: 0x0},
+ 511: {region: 0x9a, script: 0x5, flags: 0x0},
+ 512: {region: 0x10a, script: 0x52, flags: 0x0},
+ 513: {region: 0x39, script: 0x52, flags: 0x0},
+ 514: {region: 0xcf, script: 0x52, flags: 0x0},
+ 515: {region: 0x102, script: 0x52, flags: 0x0},
+ 516: {region: 0x93, script: 0x52, flags: 0x0},
+ 517: {region: 0x12d, script: 0x52, flags: 0x0},
+ 518: {region: 0x71, script: 0x52, flags: 0x0},
+ 519: {region: 0x104, script: 0x1e, flags: 0x0},
+ 520: {region: 0x12e, script: 0x1e, flags: 0x0},
+ 521: {region: 0x107, script: 0x52, flags: 0x0},
+ 522: {region: 0x105, script: 0x52, flags: 0x0},
+ 523: {region: 0x12d, script: 0x52, flags: 0x0},
+ 524: {region: 0xa0, script: 0x44, flags: 0x0},
+ 525: {region: 0x97, script: 0x20, flags: 0x0},
+ 526: {region: 0x7e, script: 0x52, flags: 0x0},
+ 527: {region: 0x104, script: 0x1e, flags: 0x0},
+ 528: {region: 0xa2, script: 0x52, flags: 0x0},
+ 529: {region: 0x93, script: 0x52, flags: 0x0},
+ 530: {region: 0x97, script: 0x52, flags: 0x0},
+ 531: {region: 0x97, script: 0xbb, flags: 0x0},
+ 532: {region: 0x12d, script: 0x52, flags: 0x0},
+ 533: {region: 0x9c, script: 0x52, flags: 0x0},
+ 534: {region: 0x97, script: 0x20, flags: 0x0},
+ 535: {region: 0x9c, script: 0x52, flags: 0x0},
+ 536: {region: 0x79, script: 0x52, flags: 0x0},
+ 537: {region: 0x48, script: 0x52, flags: 0x0},
+ 538: {region: 0x35, script: 0x4, flags: 0x1},
+ 539: {region: 0x9c, script: 0x52, flags: 0x0},
+ 540: {region: 0x9a, script: 0x5, flags: 0x0},
+ 541: {region: 0xd8, script: 0x52, flags: 0x0},
+ 542: {region: 0x4e, script: 0x52, flags: 0x0},
+ 543: {region: 0xcf, script: 0x52, flags: 0x0},
+ 544: {region: 0xcd, script: 0x52, flags: 0x0},
+ 545: {region: 0xc1, script: 0x52, flags: 0x0},
+ 546: {region: 0x4b, script: 0x52, flags: 0x0},
+ 547: {region: 0x94, script: 0x72, flags: 0x0},
+ 548: {region: 0xb4, script: 0x52, flags: 0x0},
+ 550: {region: 0xb8, script: 0xd2, flags: 0x0},
+ 551: {region: 0xc2, script: 0x6b, flags: 0x0},
+ 552: {region: 0xb1, script: 0xc1, flags: 0x0},
+ 553: {region: 0x6e, script: 0x52, flags: 0x0},
+ 554: {region: 0x10f, script: 0x52, flags: 0x0},
+ 555: {region: 0xe6, script: 0x5, flags: 0x0},
+ 556: {region: 0x10d, script: 0x52, flags: 0x0},
+ 557: {region: 0xe7, script: 0x52, flags: 0x0},
+ 558: {region: 0x93, script: 0x52, flags: 0x0},
+ 559: {region: 0x13f, script: 0x52, flags: 0x0},
+ 560: {region: 0x10a, script: 0x52, flags: 0x0},
+ 562: {region: 0x10a, script: 0x52, flags: 0x0},
+ 563: {region: 0x70, script: 0x52, flags: 0x0},
+ 564: {region: 0x95, script: 0xb8, flags: 0x0},
+ 565: {region: 0x70, script: 0x52, flags: 0x0},
+ 566: {region: 0x161, script: 0x52, flags: 0x0},
+ 567: {region: 0xc1, script: 0x52, flags: 0x0},
+ 568: {region: 0x113, script: 0x52, flags: 0x0},
+ 569: {region: 0x121, script: 0xd5, flags: 0x0},
+ 570: {region: 0x26, script: 0x52, flags: 0x0},
+ 571: {region: 0x39, script: 0x5, flags: 0x1},
+ 572: {region: 0x97, script: 0xc2, flags: 0x0},
+ 573: {region: 0x114, script: 0x52, flags: 0x0},
+ 574: {region: 0x112, script: 0x52, flags: 0x0},
+ 575: {region: 0x97, script: 0x20, flags: 0x0},
+ 576: {region: 0x15e, script: 0x52, flags: 0x0},
+ 577: {region: 0x6c, script: 0x52, flags: 0x0},
+ 578: {region: 0x15e, script: 0x52, flags: 0x0},
+ 579: {region: 0x5f, script: 0x52, flags: 0x0},
+ 580: {region: 0x93, script: 0x52, flags: 0x0},
+ 581: {region: 0x12d, script: 0x52, flags: 0x0},
+ 582: {region: 0x82, script: 0x52, flags: 0x0},
+ 583: {region: 0x10a, script: 0x52, flags: 0x0},
+ 584: {region: 0x12d, script: 0x52, flags: 0x0},
+ 585: {region: 0x15c, script: 0x5, flags: 0x0},
+ 586: {region: 0x4a, script: 0x52, flags: 0x0},
+ 587: {region: 0x5f, script: 0x52, flags: 0x0},
+ 588: {region: 0x97, script: 0x20, flags: 0x0},
+ 589: {region: 0x93, script: 0x52, flags: 0x0},
+ 590: {region: 0x34, script: 0xe, flags: 0x0},
+ 591: {region: 0x99, script: 0xc5, flags: 0x0},
+ 592: {region: 0xe7, script: 0x52, flags: 0x0},
+ 593: {region: 0x97, script: 0xcd, flags: 0x0},
+ 594: {region: 0xd9, script: 0x20, flags: 0x0},
+ 595: {region: 0xe5, script: 0x52, flags: 0x0},
+ 596: {region: 0x97, script: 0x4a, flags: 0x0},
+ 597: {region: 0x52, script: 0xcb, flags: 0x0},
+ 598: {region: 0xd9, script: 0x20, flags: 0x0},
+ 599: {region: 0xd9, script: 0x20, flags: 0x0},
+ 600: {region: 0x97, script: 0xd0, flags: 0x0},
+ 601: {region: 0x110, script: 0x52, flags: 0x0},
+ 602: {region: 0x12f, script: 0x52, flags: 0x0},
+ 603: {region: 0x124, script: 0x52, flags: 0x0},
+ 604: {region: 0x3e, script: 0x3, flags: 0x1},
+ 605: {region: 0x121, script: 0xd5, flags: 0x0},
+ 606: {region: 0xd9, script: 0x20, flags: 0x0},
+ 607: {region: 0xd9, script: 0x20, flags: 0x0},
+ 608: {region: 0xd9, script: 0x20, flags: 0x0},
+ 609: {region: 0x6e, script: 0x27, flags: 0x0},
+ 610: {region: 0x6c, script: 0x27, flags: 0x0},
+ 611: {region: 0xd4, script: 0x52, flags: 0x0},
+ 612: {region: 0x125, script: 0x52, flags: 0x0},
+ 613: {region: 0x123, script: 0x52, flags: 0x0},
+ 614: {region: 0x31, script: 0x52, flags: 0x0},
+ 615: {region: 0xd9, script: 0x20, flags: 0x0},
+ 616: {region: 0xe5, script: 0x52, flags: 0x0},
+ 617: {region: 0x31, script: 0x52, flags: 0x0},
+ 618: {region: 0xd2, script: 0x52, flags: 0x0},
+ 619: {region: 0x15e, script: 0x52, flags: 0x0},
+ 620: {region: 0x127, script: 0x52, flags: 0x0},
+ 621: {region: 0xcc, script: 0x52, flags: 0x0},
+ 622: {region: 0xe4, script: 0x52, flags: 0x0},
+ 623: {region: 0x129, script: 0x52, flags: 0x0},
+ 624: {region: 0x129, script: 0x52, flags: 0x0},
+ 625: {region: 0x12c, script: 0x52, flags: 0x0},
+ 626: {region: 0x15e, script: 0x52, flags: 0x0},
+ 627: {region: 0x85, script: 0x2d, flags: 0x0},
+ 628: {region: 0xd9, script: 0x20, flags: 0x0},
+ 629: {region: 0xe5, script: 0x52, flags: 0x0},
+ 630: {region: 0x42, script: 0xd6, flags: 0x0},
+ 631: {region: 0x104, script: 0x1e, flags: 0x0},
+ 632: {region: 0x12f, script: 0x52, flags: 0x0},
+ 633: {region: 0x121, script: 0xd5, flags: 0x0},
+ 634: {region: 0x31, script: 0x52, flags: 0x0},
+ 635: {region: 0xcc, script: 0x52, flags: 0x0},
+ 636: {region: 0x12b, script: 0x52, flags: 0x0},
+ 638: {region: 0xd2, script: 0x52, flags: 0x0},
+ 639: {region: 0x52, script: 0xce, flags: 0x0},
+ 640: {region: 0xe3, script: 0x52, flags: 0x0},
+ 641: {region: 0x104, script: 0x1e, flags: 0x0},
+ 642: {region: 0xb8, script: 0x52, flags: 0x0},
+ 643: {region: 0x104, script: 0x1e, flags: 0x0},
+ 644: {region: 0x41, script: 0x4, flags: 0x1},
+ 645: {region: 0x11a, script: 0xd8, flags: 0x0},
+ 646: {region: 0x12e, script: 0x1e, flags: 0x0},
+ 647: {region: 0x73, script: 0x52, flags: 0x0},
+ 648: {region: 0x29, script: 0x52, flags: 0x0},
+ 650: {region: 0x45, script: 0x3, flags: 0x1},
+ 651: {region: 0x97, script: 0xe, flags: 0x0},
+ 652: {region: 0xe6, script: 0x5, flags: 0x0},
+ 653: {region: 0x48, script: 0x4, flags: 0x1},
+ 654: {region: 0xb2, script: 0xd9, flags: 0x0},
+ 655: {region: 0x15e, script: 0x52, flags: 0x0},
+ 656: {region: 0x9c, script: 0x52, flags: 0x0},
+ 657: {region: 0x104, script: 0x52, flags: 0x0},
+ 658: {region: 0x13b, script: 0x52, flags: 0x0},
+ 659: {region: 0x119, script: 0x52, flags: 0x0},
+ 660: {region: 0x35, script: 0x52, flags: 0x0},
+ 661: {region: 0x5f, script: 0x52, flags: 0x0},
+ 662: {region: 0xcf, script: 0x52, flags: 0x0},
+ 663: {region: 0x1, script: 0x52, flags: 0x0},
+ 664: {region: 0x104, script: 0x52, flags: 0x0},
+ 665: {region: 0x69, script: 0x52, flags: 0x0},
+ 666: {region: 0x12d, script: 0x52, flags: 0x0},
+ 667: {region: 0x35, script: 0x52, flags: 0x0},
+ 668: {region: 0x4d, script: 0x52, flags: 0x0},
+ 669: {region: 0x6e, script: 0x27, flags: 0x0},
+ 670: {region: 0xe5, script: 0x52, flags: 0x0},
+ 671: {region: 0x2e, script: 0x52, flags: 0x0},
+ 672: {region: 0x97, script: 0xd0, flags: 0x0},
+ 673: {region: 0x97, script: 0x20, flags: 0x0},
+ 674: {region: 0x13d, script: 0x52, flags: 0x0},
+ 675: {region: 0xa6, script: 0x5, flags: 0x0},
+ 676: {region: 0x112, script: 0x52, flags: 0x0},
+ 677: {region: 0x97, script: 0x20, flags: 0x0},
+ 678: {region: 0x52, script: 0x34, flags: 0x0},
+ 679: {region: 0x40, script: 0x52, flags: 0x0},
+ 680: {region: 0x129, script: 0x18, flags: 0x0},
+ 681: {region: 0x15e, script: 0x52, flags: 0x0},
+ 682: {region: 0x129, script: 0x5a, flags: 0x0},
+ 683: {region: 0x129, script: 0x5b, flags: 0x0},
+ 684: {region: 0x7b, script: 0x29, flags: 0x0},
+ 685: {region: 0x52, script: 0x5e, flags: 0x0},
+ 686: {region: 0x109, script: 0x62, flags: 0x0},
+ 687: {region: 0x106, script: 0x6c, flags: 0x0},
+ 688: {region: 0x97, script: 0x20, flags: 0x0},
+ 689: {region: 0x12f, script: 0x52, flags: 0x0},
+ 690: {region: 0x9a, script: 0x82, flags: 0x0},
+ 691: {region: 0x15b, script: 0xba, flags: 0x0},
+ 692: {region: 0xd9, script: 0x20, flags: 0x0},
+ 693: {region: 0xcf, script: 0x52, flags: 0x0},
+ 694: {region: 0x73, script: 0x52, flags: 0x0},
+ 695: {region: 0x51, script: 0x52, flags: 0x0},
+ 696: {region: 0x51, script: 0x52, flags: 0x0},
+ 697: {region: 0x1, script: 0x37, flags: 0x0},
+ 698: {region: 0xd4, script: 0x52, flags: 0x0},
+ 699: {region: 0x40, script: 0x52, flags: 0x0},
+ 700: {region: 0xcd, script: 0x52, flags: 0x0},
+ 701: {region: 0x4c, script: 0x3, flags: 0x1},
+ 702: {region: 0x52, script: 0x52, flags: 0x0},
+ 703: {region: 0x109, script: 0x52, flags: 0x0},
+ 705: {region: 0xa6, script: 0x5, flags: 0x0},
+ 706: {region: 0xd7, script: 0x52, flags: 0x0},
+ 707: {region: 0xb8, script: 0xd2, flags: 0x0},
+ 708: {region: 0x4f, script: 0x14, flags: 0x1},
+ 709: {region: 0xce, script: 0x52, flags: 0x0},
+ 710: {region: 0x15e, script: 0x52, flags: 0x0},
+ 712: {region: 0x129, script: 0x52, flags: 0x0},
}
// likelyLangList holds lists info associated with likelyLang.
-// Size: 372 bytes, 93 elements
-var likelyLangList = [93]likelyScriptRegion{
+// Size: 396 bytes, 99 elements
+var likelyLangList = [99]likelyScriptRegion{
0: {region: 0x9a, script: 0x7, flags: 0x0},
- 1: {region: 0x9f, script: 0x69, flags: 0x2},
- 2: {region: 0x11a, script: 0x73, flags: 0x2},
- 3: {region: 0x31, script: 0x4f, flags: 0x0},
+ 1: {region: 0x9f, script: 0x6d, flags: 0x2},
+ 2: {region: 0x11a, script: 0x78, flags: 0x2},
+ 3: {region: 0x31, script: 0x52, flags: 0x0},
4: {region: 0x99, script: 0x5, flags: 0x4},
5: {region: 0x9a, script: 0x5, flags: 0x4},
- 6: {region: 0x104, script: 0x1d, flags: 0x4},
+ 6: {region: 0x104, script: 0x1e, flags: 0x4},
7: {region: 0x9a, script: 0x5, flags: 0x2},
8: {region: 0x97, script: 0xe, flags: 0x0},
- 9: {region: 0x34, script: 0x15, flags: 0x2},
- 10: {region: 0x104, script: 0x1d, flags: 0x0},
- 11: {region: 0x37, script: 0x29, flags: 0x2},
- 12: {region: 0x132, script: 0x4f, flags: 0x0},
- 13: {region: 0x79, script: 0xb7, flags: 0x2},
- 14: {region: 0x5c, script: 0x1c, flags: 0x0},
- 15: {region: 0x85, script: 0x53, flags: 0x2},
- 16: {region: 0xd4, script: 0x4f, flags: 0x0},
- 17: {region: 0x51, script: 0x5, flags: 0x4},
- 18: {region: 0x109, script: 0x5, flags: 0x4},
- 19: {region: 0xac, script: 0x1d, flags: 0x0},
- 20: {region: 0x23, script: 0x5, flags: 0x4},
- 21: {region: 0x52, script: 0x5, flags: 0x4},
- 22: {region: 0x9a, script: 0x5, flags: 0x4},
- 23: {region: 0xc3, script: 0x5, flags: 0x4},
- 24: {region: 0x52, script: 0x5, flags: 0x2},
- 25: {region: 0x129, script: 0x4f, flags: 0x0},
- 26: {region: 0xae, script: 0x5, flags: 0x4},
- 27: {region: 0x99, script: 0x5, flags: 0x2},
- 28: {region: 0xa3, script: 0x1d, flags: 0x0},
- 29: {region: 0x52, script: 0x5, flags: 0x4},
- 30: {region: 0x129, script: 0x4f, flags: 0x4},
- 31: {region: 0x52, script: 0x5, flags: 0x2},
- 32: {region: 0x129, script: 0x4f, flags: 0x2},
- 33: {region: 0xd9, script: 0x1f, flags: 0x0},
- 34: {region: 0x97, script: 0x51, flags: 0x2},
- 35: {region: 0x81, script: 0x4f, flags: 0x0},
- 36: {region: 0x82, script: 0x6b, flags: 0x4},
- 37: {region: 0x82, script: 0x6b, flags: 0x2},
- 38: {region: 0xc3, script: 0x1d, flags: 0x0},
- 39: {region: 0x52, script: 0x62, flags: 0x4},
- 40: {region: 0x52, script: 0x62, flags: 0x2},
- 41: {region: 0xce, script: 0x4f, flags: 0x0},
- 42: {region: 0x49, script: 0x5, flags: 0x4},
- 43: {region: 0x93, script: 0x5, flags: 0x4},
- 44: {region: 0x97, script: 0x2e, flags: 0x0},
- 45: {region: 0xe6, script: 0x5, flags: 0x4},
- 46: {region: 0xe6, script: 0x5, flags: 0x2},
- 47: {region: 0x9a, script: 0x77, flags: 0x0},
- 48: {region: 0x52, script: 0x78, flags: 0x2},
- 49: {region: 0xb8, script: 0xcc, flags: 0x0},
- 50: {region: 0xd7, script: 0x4f, flags: 0x4},
- 51: {region: 0xe6, script: 0x5, flags: 0x0},
- 52: {region: 0x97, script: 0x1f, flags: 0x2},
- 53: {region: 0x97, script: 0x44, flags: 0x2},
- 54: {region: 0x97, script: 0xba, flags: 0x2},
- 55: {region: 0x103, script: 0x1d, flags: 0x0},
- 56: {region: 0xbb, script: 0x4f, flags: 0x4},
- 57: {region: 0x102, script: 0x4f, flags: 0x4},
- 58: {region: 0x104, script: 0x4f, flags: 0x4},
- 59: {region: 0x129, script: 0x4f, flags: 0x4},
- 60: {region: 0x122, script: 0x1d, flags: 0x0},
- 61: {region: 0xe6, script: 0x5, flags: 0x4},
- 62: {region: 0xe6, script: 0x5, flags: 0x2},
- 63: {region: 0x52, script: 0x5, flags: 0x0},
- 64: {region: 0xac, script: 0x1d, flags: 0x4},
- 65: {region: 0xc3, script: 0x1d, flags: 0x4},
- 66: {region: 0xac, script: 0x1d, flags: 0x2},
- 67: {region: 0x97, script: 0xe, flags: 0x0},
- 68: {region: 0xd9, script: 0x1f, flags: 0x4},
- 69: {region: 0xd9, script: 0x1f, flags: 0x2},
- 70: {region: 0x134, script: 0x4f, flags: 0x0},
- 71: {region: 0x23, script: 0x5, flags: 0x4},
- 72: {region: 0x52, script: 0x1d, flags: 0x4},
- 73: {region: 0x23, script: 0x5, flags: 0x2},
- 74: {region: 0x52, script: 0x32, flags: 0x0},
- 75: {region: 0x2e, script: 0x33, flags: 0x4},
- 76: {region: 0x3d, script: 0x33, flags: 0x4},
- 77: {region: 0x79, script: 0x33, flags: 0x4},
- 78: {region: 0x7c, script: 0x33, flags: 0x4},
- 79: {region: 0x8b, script: 0x33, flags: 0x4},
- 80: {region: 0x93, script: 0x33, flags: 0x4},
- 81: {region: 0xc4, script: 0x33, flags: 0x4},
- 82: {region: 0xce, script: 0x33, flags: 0x4},
- 83: {region: 0xe0, script: 0x33, flags: 0x4},
- 84: {region: 0xe3, script: 0x33, flags: 0x4},
- 85: {region: 0xe5, script: 0x33, flags: 0x4},
- 86: {region: 0x114, script: 0x33, flags: 0x4},
- 87: {region: 0x121, script: 0x33, flags: 0x4},
- 88: {region: 0x12c, script: 0x33, flags: 0x4},
- 89: {region: 0x132, script: 0x33, flags: 0x4},
- 90: {region: 0x13b, script: 0x33, flags: 0x4},
- 91: {region: 0x12c, script: 0x10, flags: 0x2},
- 92: {region: 0x12c, script: 0x33, flags: 0x2},
+ 9: {region: 0x34, script: 0x16, flags: 0x2},
+ 10: {region: 0x104, script: 0x1e, flags: 0x0},
+ 11: {region: 0x37, script: 0x2a, flags: 0x2},
+ 12: {region: 0x132, script: 0x52, flags: 0x0},
+ 13: {region: 0x79, script: 0xbd, flags: 0x2},
+ 14: {region: 0x112, script: 0x52, flags: 0x0},
+ 15: {region: 0x82, script: 0x1, flags: 0x2},
+ 16: {region: 0x5c, script: 0x1d, flags: 0x0},
+ 17: {region: 0x85, script: 0x57, flags: 0x2},
+ 18: {region: 0xd4, script: 0x52, flags: 0x0},
+ 19: {region: 0x51, script: 0x5, flags: 0x4},
+ 20: {region: 0x109, script: 0x5, flags: 0x4},
+ 21: {region: 0xac, script: 0x1e, flags: 0x0},
+ 22: {region: 0x23, script: 0x5, flags: 0x4},
+ 23: {region: 0x52, script: 0x5, flags: 0x4},
+ 24: {region: 0x9a, script: 0x5, flags: 0x4},
+ 25: {region: 0xc3, script: 0x5, flags: 0x4},
+ 26: {region: 0x52, script: 0x5, flags: 0x2},
+ 27: {region: 0x129, script: 0x52, flags: 0x0},
+ 28: {region: 0xae, script: 0x5, flags: 0x4},
+ 29: {region: 0x99, script: 0x5, flags: 0x2},
+ 30: {region: 0xa3, script: 0x1e, flags: 0x0},
+ 31: {region: 0x52, script: 0x5, flags: 0x4},
+ 32: {region: 0x129, script: 0x52, flags: 0x4},
+ 33: {region: 0x52, script: 0x5, flags: 0x2},
+ 34: {region: 0x129, script: 0x52, flags: 0x2},
+ 35: {region: 0xd9, script: 0x20, flags: 0x0},
+ 36: {region: 0x97, script: 0x55, flags: 0x2},
+ 37: {region: 0x81, script: 0x52, flags: 0x0},
+ 38: {region: 0x82, script: 0x70, flags: 0x4},
+ 39: {region: 0x82, script: 0x70, flags: 0x2},
+ 40: {region: 0xc3, script: 0x1e, flags: 0x0},
+ 41: {region: 0x52, script: 0x66, flags: 0x4},
+ 42: {region: 0x52, script: 0x66, flags: 0x2},
+ 43: {region: 0xce, script: 0x52, flags: 0x0},
+ 44: {region: 0x49, script: 0x5, flags: 0x4},
+ 45: {region: 0x93, script: 0x5, flags: 0x4},
+ 46: {region: 0x97, script: 0x2f, flags: 0x0},
+ 47: {region: 0xe6, script: 0x5, flags: 0x4},
+ 48: {region: 0xe6, script: 0x5, flags: 0x2},
+ 49: {region: 0x9a, script: 0x7c, flags: 0x0},
+ 50: {region: 0x52, script: 0x7d, flags: 0x2},
+ 51: {region: 0xb8, script: 0xd2, flags: 0x0},
+ 52: {region: 0xd7, script: 0x52, flags: 0x4},
+ 53: {region: 0xe6, script: 0x5, flags: 0x0},
+ 54: {region: 0x97, script: 0x20, flags: 0x2},
+ 55: {region: 0x97, script: 0x47, flags: 0x2},
+ 56: {region: 0x97, script: 0xc0, flags: 0x2},
+ 57: {region: 0x103, script: 0x1e, flags: 0x0},
+ 58: {region: 0xbb, script: 0x52, flags: 0x4},
+ 59: {region: 0x102, script: 0x52, flags: 0x4},
+ 60: {region: 0x104, script: 0x52, flags: 0x4},
+ 61: {region: 0x129, script: 0x52, flags: 0x4},
+ 62: {region: 0x122, script: 0x1e, flags: 0x0},
+ 63: {region: 0xe6, script: 0x5, flags: 0x4},
+ 64: {region: 0xe6, script: 0x5, flags: 0x2},
+ 65: {region: 0x52, script: 0x5, flags: 0x0},
+ 66: {region: 0xac, script: 0x1e, flags: 0x4},
+ 67: {region: 0xc3, script: 0x1e, flags: 0x4},
+ 68: {region: 0xac, script: 0x1e, flags: 0x2},
+ 69: {region: 0x97, script: 0xe, flags: 0x0},
+ 70: {region: 0xd9, script: 0x20, flags: 0x4},
+ 71: {region: 0xd9, script: 0x20, flags: 0x2},
+ 72: {region: 0x134, script: 0x52, flags: 0x0},
+ 73: {region: 0x23, script: 0x5, flags: 0x4},
+ 74: {region: 0x52, script: 0x1e, flags: 0x4},
+ 75: {region: 0x23, script: 0x5, flags: 0x2},
+ 76: {region: 0x8b, script: 0x35, flags: 0x0},
+ 77: {region: 0x52, script: 0x34, flags: 0x4},
+ 78: {region: 0x52, script: 0x34, flags: 0x2},
+ 79: {region: 0x52, script: 0x34, flags: 0x0},
+ 80: {region: 0x2e, script: 0x35, flags: 0x4},
+ 81: {region: 0x3d, script: 0x35, flags: 0x4},
+ 82: {region: 0x79, script: 0x35, flags: 0x4},
+ 83: {region: 0x7c, script: 0x35, flags: 0x4},
+ 84: {region: 0x8b, script: 0x35, flags: 0x4},
+ 85: {region: 0x93, script: 0x35, flags: 0x4},
+ 86: {region: 0xc4, script: 0x35, flags: 0x4},
+ 87: {region: 0xce, script: 0x35, flags: 0x4},
+ 88: {region: 0xe0, script: 0x35, flags: 0x4},
+ 89: {region: 0xe3, script: 0x35, flags: 0x4},
+ 90: {region: 0xe5, script: 0x35, flags: 0x4},
+ 91: {region: 0x114, script: 0x35, flags: 0x4},
+ 92: {region: 0x121, script: 0x35, flags: 0x4},
+ 93: {region: 0x12c, script: 0x35, flags: 0x4},
+ 94: {region: 0x132, script: 0x35, flags: 0x4},
+ 95: {region: 0x13b, script: 0x35, flags: 0x4},
+ 96: {region: 0x12c, script: 0x11, flags: 0x2},
+ 97: {region: 0x12c, script: 0x30, flags: 0x2},
+ 98: {region: 0x12c, script: 0x35, flags: 0x2},
}
type likelyLangScript struct {
@@ -2117,304 +2165,305 @@ type likelyLangScript struct {
// TODO: exclude containers and user-definable regions from the list.
// Size: 1420 bytes, 355 elements
var likelyRegion = [355]likelyLangScript{
- 33: {lang: 0x61, script: 0x4f, flags: 0x0},
+ 33: {lang: 0x61, script: 0x52, flags: 0x0},
34: {lang: 0x15, script: 0x5, flags: 0x0},
35: {lang: 0x0, script: 0x2, flags: 0x1},
38: {lang: 0x2, script: 0x2, flags: 0x1},
39: {lang: 0x4, script: 0x2, flags: 0x1},
- 41: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 42: {lang: 0x0, script: 0x4f, flags: 0x0},
- 43: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 44: {lang: 0x22d, script: 0x4f, flags: 0x0},
- 45: {lang: 0x85, script: 0x4f, flags: 0x0},
- 47: {lang: 0x1bc, script: 0x4f, flags: 0x0},
- 48: {lang: 0x245, script: 0x4f, flags: 0x0},
- 49: {lang: 0x24, script: 0x4f, flags: 0x0},
+ 41: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 42: {lang: 0x0, script: 0x52, flags: 0x0},
+ 43: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 44: {lang: 0x22f, script: 0x52, flags: 0x0},
+ 45: {lang: 0x85, script: 0x52, flags: 0x0},
+ 47: {lang: 0x1bd, script: 0x52, flags: 0x0},
+ 48: {lang: 0x247, script: 0x52, flags: 0x0},
+ 49: {lang: 0x24, script: 0x52, flags: 0x0},
50: {lang: 0x6, script: 0x2, flags: 0x1},
52: {lang: 0x4b, script: 0xe, flags: 0x0},
- 53: {lang: 0x1bc, script: 0x4f, flags: 0x0},
- 54: {lang: 0xae, script: 0x4f, flags: 0x0},
- 55: {lang: 0x38, script: 0x1d, flags: 0x0},
+ 53: {lang: 0x1bd, script: 0x52, flags: 0x0},
+ 54: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 55: {lang: 0x38, script: 0x1e, flags: 0x0},
56: {lang: 0x15, script: 0x5, flags: 0x0},
- 57: {lang: 0x1ff, script: 0x4f, flags: 0x0},
- 58: {lang: 0xae, script: 0x4f, flags: 0x0},
- 59: {lang: 0xae, script: 0x4f, flags: 0x0},
- 61: {lang: 0x199, script: 0x4f, flags: 0x0},
- 62: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 63: {lang: 0x1d9, script: 0x4f, flags: 0x0},
- 64: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 57: {lang: 0x201, script: 0x52, flags: 0x0},
+ 58: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 59: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 61: {lang: 0x19a, script: 0x52, flags: 0x0},
+ 62: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 63: {lang: 0x1db, script: 0x52, flags: 0x0},
+ 64: {lang: 0x1ef, script: 0x52, flags: 0x0},
66: {lang: 0x8, script: 0x2, flags: 0x1},
- 68: {lang: 0x0, script: 0x4f, flags: 0x0},
- 70: {lang: 0x2f, script: 0x1d, flags: 0x0},
- 72: {lang: 0x2b6, script: 0x35, flags: 0x2},
- 73: {lang: 0x199, script: 0x5, flags: 0x2},
- 74: {lang: 0x246, script: 0x4f, flags: 0x0},
- 75: {lang: 0xae, script: 0x4f, flags: 0x0},
- 76: {lang: 0xae, script: 0x4f, flags: 0x0},
- 77: {lang: 0x85, script: 0x4f, flags: 0x0},
- 78: {lang: 0xae, script: 0x4f, flags: 0x0},
- 80: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 81: {lang: 0xae, script: 0x4f, flags: 0x0},
- 82: {lang: 0xa, script: 0x4, flags: 0x1},
- 83: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 84: {lang: 0x0, script: 0x4f, flags: 0x0},
- 85: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 88: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 89: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 90: {lang: 0x1d9, script: 0x4f, flags: 0x0},
- 92: {lang: 0xe, script: 0x2, flags: 0x1},
- 93: {lang: 0x79, script: 0x4f, flags: 0x0},
- 95: {lang: 0x85, script: 0x4f, flags: 0x0},
- 97: {lang: 0x1, script: 0x4f, flags: 0x0},
- 98: {lang: 0x80, script: 0x4f, flags: 0x0},
- 100: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 102: {lang: 0x10, script: 0x2, flags: 0x1},
- 103: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 104: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 105: {lang: 0x9e, script: 0x4f, flags: 0x0},
+ 68: {lang: 0x0, script: 0x52, flags: 0x0},
+ 70: {lang: 0x2f, script: 0x1e, flags: 0x0},
+ 72: {lang: 0x2b9, script: 0x37, flags: 0x2},
+ 73: {lang: 0x19a, script: 0x5, flags: 0x2},
+ 74: {lang: 0x248, script: 0x52, flags: 0x0},
+ 75: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 76: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 77: {lang: 0x85, script: 0x52, flags: 0x0},
+ 78: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 80: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 81: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 82: {lang: 0xa, script: 0x5, flags: 0x1},
+ 83: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 84: {lang: 0x0, script: 0x52, flags: 0x0},
+ 85: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 88: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 89: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 90: {lang: 0x1db, script: 0x52, flags: 0x0},
+ 92: {lang: 0xf, script: 0x2, flags: 0x1},
+ 93: {lang: 0x79, script: 0x52, flags: 0x0},
+ 95: {lang: 0x85, script: 0x52, flags: 0x0},
+ 97: {lang: 0x1, script: 0x52, flags: 0x0},
+ 98: {lang: 0x80, script: 0x52, flags: 0x0},
+ 100: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 102: {lang: 0x11, script: 0x2, flags: 0x1},
+ 103: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 104: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 105: {lang: 0x9f, script: 0x52, flags: 0x0},
106: {lang: 0x15, script: 0x5, flags: 0x0},
107: {lang: 0x15, script: 0x5, flags: 0x0},
- 108: {lang: 0x25f, script: 0x26, flags: 0x0},
- 109: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 110: {lang: 0x12, script: 0x2, flags: 0x1},
- 112: {lang: 0xa7, script: 0x4f, flags: 0x0},
- 113: {lang: 0xe1, script: 0x1f, flags: 0x2},
- 116: {lang: 0xac, script: 0x4f, flags: 0x0},
- 118: {lang: 0xae, script: 0x4f, flags: 0x0},
- 120: {lang: 0xae, script: 0x4f, flags: 0x0},
- 121: {lang: 0x14, script: 0x2, flags: 0x1},
- 123: {lang: 0x16, script: 0x3, flags: 0x1},
- 124: {lang: 0xae, script: 0x4f, flags: 0x0},
- 126: {lang: 0xd, script: 0x4f, flags: 0x0},
- 128: {lang: 0x130, script: 0x4f, flags: 0x0},
- 130: {lang: 0xae, script: 0x4f, flags: 0x0},
- 131: {lang: 0xae, script: 0x4f, flags: 0x0},
- 132: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 133: {lang: 0x19, script: 0x2, flags: 0x1},
- 134: {lang: 0x0, script: 0x4f, flags: 0x0},
- 135: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 137: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 139: {lang: 0x2c0, script: 0x33, flags: 0x0},
- 140: {lang: 0x0, script: 0x4f, flags: 0x0},
- 141: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 142: {lang: 0xed, script: 0x4f, flags: 0x0},
- 143: {lang: 0xf0, script: 0x4f, flags: 0x0},
- 144: {lang: 0xf1, script: 0x4f, flags: 0x0},
- 146: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 147: {lang: 0x1b, script: 0x2, flags: 0x1},
- 149: {lang: 0xdf, script: 0x35, flags: 0x0},
- 151: {lang: 0x1d, script: 0x3, flags: 0x1},
+ 108: {lang: 0x261, script: 0x27, flags: 0x0},
+ 109: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 110: {lang: 0x13, script: 0x2, flags: 0x1},
+ 112: {lang: 0xa8, script: 0x52, flags: 0x0},
+ 113: {lang: 0xe2, script: 0x20, flags: 0x2},
+ 116: {lang: 0xad, script: 0x52, flags: 0x0},
+ 118: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 120: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 121: {lang: 0x15, script: 0x2, flags: 0x1},
+ 123: {lang: 0x17, script: 0x3, flags: 0x1},
+ 124: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 126: {lang: 0xd, script: 0x52, flags: 0x0},
+ 128: {lang: 0x131, script: 0x52, flags: 0x0},
+ 130: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 131: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 132: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 133: {lang: 0x1a, script: 0x2, flags: 0x1},
+ 134: {lang: 0x0, script: 0x52, flags: 0x0},
+ 135: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 137: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 139: {lang: 0x2c4, script: 0x35, flags: 0x0},
+ 140: {lang: 0x0, script: 0x52, flags: 0x0},
+ 141: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 142: {lang: 0xee, script: 0x52, flags: 0x0},
+ 143: {lang: 0xf1, script: 0x52, flags: 0x0},
+ 144: {lang: 0xf2, script: 0x52, flags: 0x0},
+ 146: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 147: {lang: 0x1c, script: 0x2, flags: 0x1},
+ 149: {lang: 0xe0, script: 0x37, flags: 0x0},
+ 151: {lang: 0x1e, script: 0x3, flags: 0x1},
153: {lang: 0x15, script: 0x5, flags: 0x0},
- 154: {lang: 0x20, script: 0x2, flags: 0x1},
- 155: {lang: 0x101, script: 0x4f, flags: 0x0},
- 156: {lang: 0x102, script: 0x4f, flags: 0x0},
+ 154: {lang: 0x21, script: 0x2, flags: 0x1},
+ 155: {lang: 0x102, script: 0x52, flags: 0x0},
+ 156: {lang: 0x103, script: 0x52, flags: 0x0},
159: {lang: 0x15, script: 0x5, flags: 0x0},
- 160: {lang: 0x106, script: 0x3e, flags: 0x0},
- 162: {lang: 0x246, script: 0x4f, flags: 0x0},
- 163: {lang: 0x14c, script: 0x1d, flags: 0x0},
- 164: {lang: 0x22, script: 0x3, flags: 0x1},
- 166: {lang: 0x25, script: 0x2, flags: 0x1},
- 168: {lang: 0x135, script: 0x48, flags: 0x0},
- 169: {lang: 0x135, script: 0x48, flags: 0x0},
+ 160: {lang: 0x107, script: 0x41, flags: 0x0},
+ 162: {lang: 0x248, script: 0x52, flags: 0x0},
+ 163: {lang: 0x14d, script: 0x1e, flags: 0x0},
+ 164: {lang: 0x23, script: 0x3, flags: 0x1},
+ 166: {lang: 0x26, script: 0x2, flags: 0x1},
+ 168: {lang: 0x136, script: 0x4b, flags: 0x0},
+ 169: {lang: 0x136, script: 0x4b, flags: 0x0},
170: {lang: 0x15, script: 0x5, flags: 0x0},
- 172: {lang: 0x205, script: 0x1d, flags: 0x0},
- 173: {lang: 0x27, script: 0x2, flags: 0x1},
+ 172: {lang: 0x207, script: 0x1e, flags: 0x0},
+ 173: {lang: 0x28, script: 0x2, flags: 0x1},
174: {lang: 0x15, script: 0x5, flags: 0x0},
- 176: {lang: 0x85, script: 0x4f, flags: 0x0},
- 177: {lang: 0x226, script: 0xbb, flags: 0x0},
- 179: {lang: 0x240, script: 0x4f, flags: 0x0},
- 180: {lang: 0x168, script: 0x4f, flags: 0x0},
- 181: {lang: 0xae, script: 0x4f, flags: 0x0},
- 182: {lang: 0x16f, script: 0x4f, flags: 0x0},
+ 176: {lang: 0x85, script: 0x52, flags: 0x0},
+ 177: {lang: 0x228, script: 0xc1, flags: 0x0},
+ 179: {lang: 0x242, script: 0x52, flags: 0x0},
+ 180: {lang: 0x169, script: 0x52, flags: 0x0},
+ 181: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 182: {lang: 0x170, script: 0x52, flags: 0x0},
183: {lang: 0x15, script: 0x5, flags: 0x0},
- 184: {lang: 0x29, script: 0x2, flags: 0x1},
- 185: {lang: 0xae, script: 0x4f, flags: 0x0},
- 186: {lang: 0x2b, script: 0x2, flags: 0x1},
- 187: {lang: 0x239, script: 0x4f, flags: 0x0},
- 188: {lang: 0xae, script: 0x4f, flags: 0x0},
- 189: {lang: 0x182, script: 0x4f, flags: 0x0},
- 192: {lang: 0x2d, script: 0x2, flags: 0x1},
- 193: {lang: 0x49, script: 0x4f, flags: 0x0},
- 194: {lang: 0x2f, script: 0x2, flags: 0x1},
- 195: {lang: 0x31, script: 0x2, flags: 0x1},
- 196: {lang: 0x33, script: 0x2, flags: 0x1},
- 198: {lang: 0xae, script: 0x4f, flags: 0x0},
- 199: {lang: 0x35, script: 0x2, flags: 0x1},
- 201: {lang: 0x19a, script: 0x4f, flags: 0x0},
- 202: {lang: 0x37, script: 0x3, flags: 0x1},
- 203: {lang: 0x8f, script: 0xce, flags: 0x0},
- 205: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 206: {lang: 0x199, script: 0x4f, flags: 0x0},
- 207: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 208: {lang: 0xa, script: 0x4f, flags: 0x0},
- 209: {lang: 0xae, script: 0x4f, flags: 0x0},
- 210: {lang: 0xdb, script: 0x4f, flags: 0x0},
- 212: {lang: 0xdb, script: 0x5, flags: 0x2},
- 214: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 215: {lang: 0x1bc, script: 0x4f, flags: 0x0},
- 216: {lang: 0x1ae, script: 0x4f, flags: 0x0},
- 217: {lang: 0x1b3, script: 0x1f, flags: 0x0},
+ 184: {lang: 0x2a, script: 0x2, flags: 0x1},
+ 185: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 186: {lang: 0x2c, script: 0x2, flags: 0x1},
+ 187: {lang: 0x23b, script: 0x52, flags: 0x0},
+ 188: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 189: {lang: 0x183, script: 0x52, flags: 0x0},
+ 192: {lang: 0x2e, script: 0x2, flags: 0x1},
+ 193: {lang: 0x49, script: 0x52, flags: 0x0},
+ 194: {lang: 0x30, script: 0x2, flags: 0x1},
+ 195: {lang: 0x32, script: 0x2, flags: 0x1},
+ 196: {lang: 0x34, script: 0x2, flags: 0x1},
+ 198: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 199: {lang: 0x36, script: 0x2, flags: 0x1},
+ 201: {lang: 0x19b, script: 0x52, flags: 0x0},
+ 202: {lang: 0x38, script: 0x3, flags: 0x1},
+ 203: {lang: 0x90, script: 0xd4, flags: 0x0},
+ 205: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 206: {lang: 0x19a, script: 0x52, flags: 0x0},
+ 207: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 208: {lang: 0xa, script: 0x52, flags: 0x0},
+ 209: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 210: {lang: 0xdc, script: 0x52, flags: 0x0},
+ 212: {lang: 0xdc, script: 0x5, flags: 0x2},
+ 214: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 215: {lang: 0x1bd, script: 0x52, flags: 0x0},
+ 216: {lang: 0x1af, script: 0x52, flags: 0x0},
+ 217: {lang: 0x1b4, script: 0x20, flags: 0x0},
223: {lang: 0x15, script: 0x5, flags: 0x0},
- 224: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 226: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 227: {lang: 0xae, script: 0x4f, flags: 0x0},
- 228: {lang: 0x26c, script: 0x4f, flags: 0x0},
- 229: {lang: 0xa9, script: 0x4f, flags: 0x0},
- 230: {lang: 0x3a, script: 0x3, flags: 0x1},
- 231: {lang: 0x3d, script: 0x2, flags: 0x1},
- 232: {lang: 0xae, script: 0x4f, flags: 0x0},
- 234: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 224: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 226: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 227: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 228: {lang: 0x26e, script: 0x52, flags: 0x0},
+ 229: {lang: 0xaa, script: 0x52, flags: 0x0},
+ 230: {lang: 0x3b, script: 0x3, flags: 0x1},
+ 231: {lang: 0x3e, script: 0x2, flags: 0x1},
+ 232: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 234: {lang: 0x9d, script: 0x52, flags: 0x0},
235: {lang: 0x15, script: 0x5, flags: 0x0},
- 236: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 238: {lang: 0x1da, script: 0x4f, flags: 0x0},
- 239: {lang: 0xc9, script: 0x4f, flags: 0x0},
+ 236: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 238: {lang: 0x1dc, script: 0x52, flags: 0x0},
+ 239: {lang: 0xca, script: 0x52, flags: 0x0},
241: {lang: 0x15, script: 0x5, flags: 0x0},
- 256: {lang: 0xae, script: 0x4f, flags: 0x0},
- 258: {lang: 0x3f, script: 0x2, flags: 0x1},
- 259: {lang: 0x239, script: 0x1d, flags: 0x0},
- 260: {lang: 0x41, script: 0x2, flags: 0x1},
- 261: {lang: 0x208, script: 0x4f, flags: 0x0},
+ 256: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 258: {lang: 0x40, script: 0x2, flags: 0x1},
+ 259: {lang: 0x23b, script: 0x1e, flags: 0x0},
+ 260: {lang: 0x42, script: 0x2, flags: 0x1},
+ 261: {lang: 0x20a, script: 0x52, flags: 0x0},
262: {lang: 0x15, script: 0x5, flags: 0x0},
- 264: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 264: {lang: 0xaf, script: 0x52, flags: 0x0},
265: {lang: 0x15, script: 0x5, flags: 0x0},
- 266: {lang: 0x43, script: 0x2, flags: 0x1},
- 269: {lang: 0x22a, script: 0x4f, flags: 0x0},
- 270: {lang: 0x1ae, script: 0x4f, flags: 0x0},
- 271: {lang: 0x45, script: 0x2, flags: 0x1},
- 273: {lang: 0x102, script: 0x4f, flags: 0x0},
- 274: {lang: 0xae, script: 0x4f, flags: 0x0},
- 275: {lang: 0x236, script: 0x4f, flags: 0x0},
- 276: {lang: 0x1bc, script: 0x4f, flags: 0x0},
- 278: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 280: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 282: {lang: 0x47, script: 0x2, flags: 0x1},
- 286: {lang: 0xae, script: 0x4f, flags: 0x0},
- 287: {lang: 0xae, script: 0x4f, flags: 0x0},
- 288: {lang: 0xae, script: 0x4f, flags: 0x0},
- 289: {lang: 0x49, script: 0x3, flags: 0x1},
- 290: {lang: 0x4c, script: 0x2, flags: 0x1},
- 291: {lang: 0x263, script: 0x4f, flags: 0x0},
- 292: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 293: {lang: 0x262, script: 0x4f, flags: 0x0},
- 294: {lang: 0x4e, script: 0x2, flags: 0x1},
- 295: {lang: 0x26a, script: 0x4f, flags: 0x0},
- 297: {lang: 0x50, script: 0x4, flags: 0x1},
- 299: {lang: 0x27a, script: 0x4f, flags: 0x0},
- 300: {lang: 0x54, script: 0x2, flags: 0x1},
- 301: {lang: 0x246, script: 0x4f, flags: 0x0},
- 302: {lang: 0x56, script: 0x3, flags: 0x1},
- 303: {lang: 0x246, script: 0x4f, flags: 0x0},
- 306: {lang: 0x2b6, script: 0x35, flags: 0x2},
- 307: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 308: {lang: 0x28a, script: 0x4f, flags: 0x0},
- 309: {lang: 0x102, script: 0x4f, flags: 0x0},
- 312: {lang: 0x9c, script: 0x4f, flags: 0x0},
- 315: {lang: 0x28f, script: 0x4f, flags: 0x0},
- 316: {lang: 0x41, script: 0x4f, flags: 0x0},
- 317: {lang: 0xae, script: 0x4f, flags: 0x0},
- 319: {lang: 0x22d, script: 0x4f, flags: 0x0},
- 330: {lang: 0x59, script: 0x2, flags: 0x1},
+ 266: {lang: 0x44, script: 0x2, flags: 0x1},
+ 269: {lang: 0x22c, script: 0x52, flags: 0x0},
+ 270: {lang: 0x1af, script: 0x52, flags: 0x0},
+ 271: {lang: 0x46, script: 0x2, flags: 0x1},
+ 273: {lang: 0x103, script: 0x52, flags: 0x0},
+ 274: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 275: {lang: 0x238, script: 0x52, flags: 0x0},
+ 276: {lang: 0x1bd, script: 0x52, flags: 0x0},
+ 278: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 280: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 282: {lang: 0x48, script: 0x2, flags: 0x1},
+ 286: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 287: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 288: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 289: {lang: 0x4a, script: 0x3, flags: 0x1},
+ 290: {lang: 0x4d, script: 0x2, flags: 0x1},
+ 291: {lang: 0x265, script: 0x52, flags: 0x0},
+ 292: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 293: {lang: 0x264, script: 0x52, flags: 0x0},
+ 294: {lang: 0x4f, script: 0x2, flags: 0x1},
+ 295: {lang: 0x26c, script: 0x52, flags: 0x0},
+ 297: {lang: 0x51, script: 0x4, flags: 0x1},
+ 299: {lang: 0x27c, script: 0x52, flags: 0x0},
+ 300: {lang: 0x55, script: 0x2, flags: 0x1},
+ 301: {lang: 0x248, script: 0x52, flags: 0x0},
+ 302: {lang: 0x57, script: 0x3, flags: 0x1},
+ 303: {lang: 0x248, script: 0x52, flags: 0x0},
+ 306: {lang: 0x2b9, script: 0x37, flags: 0x2},
+ 307: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 308: {lang: 0x28d, script: 0x52, flags: 0x0},
+ 309: {lang: 0x103, script: 0x52, flags: 0x0},
+ 312: {lang: 0x9d, script: 0x52, flags: 0x0},
+ 315: {lang: 0x292, script: 0x52, flags: 0x0},
+ 316: {lang: 0x41, script: 0x52, flags: 0x0},
+ 317: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 319: {lang: 0x22f, script: 0x52, flags: 0x0},
+ 330: {lang: 0x5a, script: 0x2, flags: 0x1},
347: {lang: 0x15, script: 0x5, flags: 0x0},
- 348: {lang: 0x5b, script: 0x2, flags: 0x1},
- 353: {lang: 0x234, script: 0x4f, flags: 0x0},
+ 348: {lang: 0x5c, script: 0x2, flags: 0x1},
+ 353: {lang: 0x236, script: 0x52, flags: 0x0},
}
// likelyRegionList holds lists info associated with likelyRegion.
-// Size: 372 bytes, 93 elements
-var likelyRegionList = [93]likelyLangScript{
- 0: {lang: 0xa3, script: 0x5, flags: 0x0},
- 1: {lang: 0x262, script: 0x4f, flags: 0x0},
- 2: {lang: 0x238, script: 0x4f, flags: 0x0},
- 3: {lang: 0x18b, script: 0x1d, flags: 0x0},
- 4: {lang: 0xf2, script: 0x8, flags: 0x0},
- 5: {lang: 0x144, script: 0x4f, flags: 0x0},
- 6: {lang: 0x54, script: 0x4f, flags: 0x0},
- 7: {lang: 0x239, script: 0x1d, flags: 0x0},
- 8: {lang: 0x92, script: 0xd0, flags: 0x0},
- 9: {lang: 0x1b3, script: 0x1f, flags: 0x0},
- 10: {lang: 0x2c0, script: 0x32, flags: 0x0},
- 11: {lang: 0x281, script: 0x5, flags: 0x0},
- 12: {lang: 0x2ba, script: 0x4f, flags: 0x0},
- 13: {lang: 0x156, script: 0xcf, flags: 0x0},
- 14: {lang: 0x99, script: 0x2c, flags: 0x0},
- 15: {lang: 0x26d, script: 0x4f, flags: 0x0},
- 16: {lang: 0x15, script: 0x5, flags: 0x0},
- 17: {lang: 0xae, script: 0x4f, flags: 0x0},
- 18: {lang: 0x11, script: 0x26, flags: 0x0},
- 19: {lang: 0x9a, script: 0x4f, flags: 0x0},
- 20: {lang: 0x140, script: 0x5, flags: 0x2},
- 21: {lang: 0x2b6, script: 0x35, flags: 0x2},
- 22: {lang: 0x110, script: 0x28, flags: 0x0},
- 23: {lang: 0x2, script: 0x1d, flags: 0x0},
- 24: {lang: 0x144, script: 0x4f, flags: 0x0},
- 25: {lang: 0x99, script: 0x2c, flags: 0x0},
- 26: {lang: 0x18b, script: 0x1d, flags: 0x0},
- 27: {lang: 0xf7, script: 0x4f, flags: 0x0},
- 28: {lang: 0x199, script: 0x5, flags: 0x0},
- 29: {lang: 0xe0, script: 0x1f, flags: 0x0},
- 30: {lang: 0x289, script: 0x5, flags: 0x0},
- 31: {lang: 0x128, script: 0x67, flags: 0x0},
- 32: {lang: 0xa3, script: 0x5, flags: 0x0},
- 33: {lang: 0x262, script: 0x4f, flags: 0x0},
- 34: {lang: 0x132, script: 0x43, flags: 0x0},
- 35: {lang: 0x6d, script: 0x5, flags: 0x0},
- 36: {lang: 0x11b, script: 0xcf, flags: 0x0},
- 37: {lang: 0x15, script: 0x5, flags: 0x0},
- 38: {lang: 0xae, script: 0x4f, flags: 0x0},
- 39: {lang: 0x164, script: 0x4c, flags: 0x0},
- 40: {lang: 0x11b, script: 0xcf, flags: 0x0},
- 41: {lang: 0x15, script: 0x5, flags: 0x0},
- 42: {lang: 0xae, script: 0x4f, flags: 0x0},
- 43: {lang: 0x201, script: 0x4f, flags: 0x0},
- 44: {lang: 0x283, script: 0x1d, flags: 0x0},
- 45: {lang: 0x18b, script: 0x1d, flags: 0x0},
- 46: {lang: 0x238, script: 0x4f, flags: 0x0},
- 47: {lang: 0x1a4, script: 0x67, flags: 0x0},
- 48: {lang: 0x113, script: 0x4f, flags: 0x0},
- 49: {lang: 0x18e, script: 0x1d, flags: 0x0},
- 50: {lang: 0x12e, script: 0x5, flags: 0x0},
- 51: {lang: 0x2c0, script: 0x33, flags: 0x0},
- 52: {lang: 0x1ed, script: 0x4f, flags: 0x0},
- 53: {lang: 0x15, script: 0x5, flags: 0x0},
- 54: {lang: 0xae, script: 0x4f, flags: 0x0},
- 55: {lang: 0x181, script: 0x4f, flags: 0x0},
- 56: {lang: 0x289, script: 0x5, flags: 0x0},
- 57: {lang: 0x40, script: 0x1f, flags: 0x0},
- 58: {lang: 0x289, script: 0x5, flags: 0x0},
- 59: {lang: 0x289, script: 0x5, flags: 0x0},
- 60: {lang: 0x58, script: 0x1f, flags: 0x0},
- 61: {lang: 0x1e5, script: 0x4f, flags: 0x0},
- 62: {lang: 0x2f, script: 0x1d, flags: 0x0},
- 63: {lang: 0x201, script: 0x4f, flags: 0x0},
- 64: {lang: 0x38, script: 0x1d, flags: 0x0},
- 65: {lang: 0x205, script: 0x1d, flags: 0x0},
- 66: {lang: 0x13e, script: 0x4f, flags: 0x0},
- 67: {lang: 0x245, script: 0x4f, flags: 0x0},
- 68: {lang: 0x2b6, script: 0x35, flags: 0x0},
- 69: {lang: 0x228, script: 0x4f, flags: 0x0},
- 70: {lang: 0x283, script: 0x1d, flags: 0x0},
- 71: {lang: 0x15, script: 0x5, flags: 0x0},
- 72: {lang: 0xae, script: 0x4f, flags: 0x0},
- 73: {lang: 0x25b, script: 0xcf, flags: 0x0},
- 74: {lang: 0x180, script: 0x5, flags: 0x0},
- 75: {lang: 0x190, script: 0x67, flags: 0x0},
- 76: {lang: 0x25a, script: 0x1d, flags: 0x0},
- 77: {lang: 0xa3, script: 0x5, flags: 0x0},
- 78: {lang: 0x15, script: 0x5, flags: 0x0},
- 79: {lang: 0xae, script: 0x4f, flags: 0x0},
- 80: {lang: 0x26d, script: 0x4f, flags: 0x0},
- 81: {lang: 0x24, script: 0x5, flags: 0x0},
- 82: {lang: 0x117, script: 0x1d, flags: 0x0},
- 83: {lang: 0x3b, script: 0x2c, flags: 0x0},
- 84: {lang: 0x2c0, script: 0x33, flags: 0x0},
- 85: {lang: 0x26f, script: 0x4f, flags: 0x0},
- 86: {lang: 0x283, script: 0x1d, flags: 0x0},
- 87: {lang: 0x2b6, script: 0x35, flags: 0x0},
- 88: {lang: 0x1e5, script: 0x4f, flags: 0x0},
- 89: {lang: 0x238, script: 0x4f, flags: 0x0},
- 90: {lang: 0x239, script: 0x1d, flags: 0x0},
- 91: {lang: 0xae, script: 0x4f, flags: 0x0},
- 92: {lang: 0x247, script: 0x5, flags: 0x0},
+// Size: 376 bytes, 94 elements
+var likelyRegionList = [94]likelyLangScript{
+ 0: {lang: 0xa4, script: 0x5, flags: 0x0},
+ 1: {lang: 0x264, script: 0x52, flags: 0x0},
+ 2: {lang: 0x23a, script: 0x52, flags: 0x0},
+ 3: {lang: 0x18c, script: 0x1e, flags: 0x0},
+ 4: {lang: 0xf3, script: 0x8, flags: 0x0},
+ 5: {lang: 0x145, script: 0x52, flags: 0x0},
+ 6: {lang: 0x54, script: 0x52, flags: 0x0},
+ 7: {lang: 0x23b, script: 0x1e, flags: 0x0},
+ 8: {lang: 0x93, script: 0xd6, flags: 0x0},
+ 9: {lang: 0x1b4, script: 0x20, flags: 0x0},
+ 10: {lang: 0x2c4, script: 0x34, flags: 0x0},
+ 11: {lang: 0x284, script: 0x5, flags: 0x0},
+ 12: {lang: 0x2bd, script: 0x35, flags: 0x0},
+ 13: {lang: 0x2be, script: 0x52, flags: 0x0},
+ 14: {lang: 0x157, script: 0xd5, flags: 0x0},
+ 15: {lang: 0x9a, script: 0x2d, flags: 0x0},
+ 16: {lang: 0x26f, script: 0x52, flags: 0x0},
+ 17: {lang: 0x15, script: 0x5, flags: 0x0},
+ 18: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 19: {lang: 0x11, script: 0x27, flags: 0x0},
+ 20: {lang: 0x9b, script: 0x52, flags: 0x0},
+ 21: {lang: 0x141, script: 0x5, flags: 0x2},
+ 22: {lang: 0x2b9, script: 0x37, flags: 0x2},
+ 23: {lang: 0x111, script: 0x29, flags: 0x0},
+ 24: {lang: 0x2, script: 0x1e, flags: 0x0},
+ 25: {lang: 0x145, script: 0x52, flags: 0x0},
+ 26: {lang: 0x9a, script: 0x2d, flags: 0x0},
+ 27: {lang: 0x18c, script: 0x1e, flags: 0x0},
+ 28: {lang: 0xf8, script: 0x52, flags: 0x0},
+ 29: {lang: 0x19a, script: 0x5, flags: 0x0},
+ 30: {lang: 0xe1, script: 0x20, flags: 0x0},
+ 31: {lang: 0x28c, script: 0x5, flags: 0x0},
+ 32: {lang: 0x129, script: 0x6b, flags: 0x0},
+ 33: {lang: 0xa4, script: 0x5, flags: 0x0},
+ 34: {lang: 0x264, script: 0x52, flags: 0x0},
+ 35: {lang: 0x133, script: 0x46, flags: 0x0},
+ 36: {lang: 0x6d, script: 0x5, flags: 0x0},
+ 37: {lang: 0x11c, script: 0xd5, flags: 0x0},
+ 38: {lang: 0x15, script: 0x5, flags: 0x0},
+ 39: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 40: {lang: 0x165, script: 0x4f, flags: 0x0},
+ 41: {lang: 0x11c, script: 0xd5, flags: 0x0},
+ 42: {lang: 0x15, script: 0x5, flags: 0x0},
+ 43: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 44: {lang: 0x203, script: 0x52, flags: 0x0},
+ 45: {lang: 0x286, script: 0x1e, flags: 0x0},
+ 46: {lang: 0x18c, script: 0x1e, flags: 0x0},
+ 47: {lang: 0x23a, script: 0x52, flags: 0x0},
+ 48: {lang: 0x1a5, script: 0x6b, flags: 0x0},
+ 49: {lang: 0x114, script: 0x52, flags: 0x0},
+ 50: {lang: 0x18f, script: 0x1e, flags: 0x0},
+ 51: {lang: 0x12f, script: 0x5, flags: 0x0},
+ 52: {lang: 0x2c4, script: 0x35, flags: 0x0},
+ 53: {lang: 0x1ef, script: 0x52, flags: 0x0},
+ 54: {lang: 0x15, script: 0x5, flags: 0x0},
+ 55: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 56: {lang: 0x182, script: 0x52, flags: 0x0},
+ 57: {lang: 0x28c, script: 0x5, flags: 0x0},
+ 58: {lang: 0x40, script: 0x20, flags: 0x0},
+ 59: {lang: 0x28c, script: 0x5, flags: 0x0},
+ 60: {lang: 0x28c, script: 0x5, flags: 0x0},
+ 61: {lang: 0x58, script: 0x20, flags: 0x0},
+ 62: {lang: 0x1e7, script: 0x52, flags: 0x0},
+ 63: {lang: 0x2f, script: 0x1e, flags: 0x0},
+ 64: {lang: 0x203, script: 0x52, flags: 0x0},
+ 65: {lang: 0x38, script: 0x1e, flags: 0x0},
+ 66: {lang: 0x207, script: 0x1e, flags: 0x0},
+ 67: {lang: 0x13f, script: 0x52, flags: 0x0},
+ 68: {lang: 0x247, script: 0x52, flags: 0x0},
+ 69: {lang: 0x2b9, script: 0x37, flags: 0x0},
+ 70: {lang: 0x22a, script: 0x52, flags: 0x0},
+ 71: {lang: 0x286, script: 0x1e, flags: 0x0},
+ 72: {lang: 0x15, script: 0x5, flags: 0x0},
+ 73: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 74: {lang: 0x25d, script: 0xd5, flags: 0x0},
+ 75: {lang: 0x181, script: 0x5, flags: 0x0},
+ 76: {lang: 0x191, script: 0x6b, flags: 0x0},
+ 77: {lang: 0x25c, script: 0x1e, flags: 0x0},
+ 78: {lang: 0xa4, script: 0x5, flags: 0x0},
+ 79: {lang: 0x15, script: 0x5, flags: 0x0},
+ 80: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 81: {lang: 0x26f, script: 0x52, flags: 0x0},
+ 82: {lang: 0x24, script: 0x5, flags: 0x0},
+ 83: {lang: 0x118, script: 0x1e, flags: 0x0},
+ 84: {lang: 0x3b, script: 0x2d, flags: 0x0},
+ 85: {lang: 0x2c4, script: 0x35, flags: 0x0},
+ 86: {lang: 0x271, script: 0x52, flags: 0x0},
+ 87: {lang: 0x286, script: 0x1e, flags: 0x0},
+ 88: {lang: 0x2b9, script: 0x37, flags: 0x0},
+ 89: {lang: 0x1e7, script: 0x52, flags: 0x0},
+ 90: {lang: 0x23a, script: 0x52, flags: 0x0},
+ 91: {lang: 0x23b, script: 0x1e, flags: 0x0},
+ 92: {lang: 0xaf, script: 0x52, flags: 0x0},
+ 93: {lang: 0x249, script: 0x5, flags: 0x0},
}
type likelyTag struct {
@@ -2425,37 +2474,37 @@ type likelyTag struct {
// Size: 192 bytes, 32 elements
var likelyRegionGroup = [32]likelyTag{
- 1: {lang: 0x9a, region: 0xd4, script: 0x4f},
- 2: {lang: 0x9a, region: 0x132, script: 0x4f},
- 3: {lang: 0x1ed, region: 0x40, script: 0x4f},
- 4: {lang: 0x9a, region: 0x2e, script: 0x4f},
- 5: {lang: 0x9a, region: 0xd4, script: 0x4f},
- 6: {lang: 0x9c, region: 0xcd, script: 0x4f},
- 7: {lang: 0x246, region: 0x12d, script: 0x4f},
+ 1: {lang: 0x9b, region: 0xd4, script: 0x52},
+ 2: {lang: 0x9b, region: 0x132, script: 0x52},
+ 3: {lang: 0x1ef, region: 0x40, script: 0x52},
+ 4: {lang: 0x9b, region: 0x2e, script: 0x52},
+ 5: {lang: 0x9b, region: 0xd4, script: 0x52},
+ 6: {lang: 0x9d, region: 0xcd, script: 0x52},
+ 7: {lang: 0x248, region: 0x12d, script: 0x52},
8: {lang: 0x15, region: 0x6a, script: 0x5},
- 9: {lang: 0x246, region: 0x4a, script: 0x4f},
- 10: {lang: 0x9a, region: 0x15e, script: 0x4f},
- 11: {lang: 0x9a, region: 0x132, script: 0x4f},
- 12: {lang: 0x9a, region: 0x132, script: 0x4f},
- 13: {lang: 0x9c, region: 0x58, script: 0x4f},
- 14: {lang: 0x2c0, region: 0x52, script: 0x32},
- 15: {lang: 0xe0, region: 0x97, script: 0x1f},
- 16: {lang: 0xf7, region: 0x93, script: 0x4f},
- 17: {lang: 0x102, region: 0x9c, script: 0x4f},
- 18: {lang: 0x9a, region: 0x2e, script: 0x4f},
- 19: {lang: 0x9a, region: 0xe4, script: 0x4f},
- 20: {lang: 0x9a, region: 0x88, script: 0x4f},
- 21: {lang: 0x22d, region: 0x13f, script: 0x4f},
- 22: {lang: 0x2c0, region: 0x52, script: 0x32},
- 23: {lang: 0x28a, region: 0x134, script: 0x4f},
+ 9: {lang: 0x248, region: 0x4a, script: 0x52},
+ 10: {lang: 0x9b, region: 0x15e, script: 0x52},
+ 11: {lang: 0x9b, region: 0x132, script: 0x52},
+ 12: {lang: 0x9b, region: 0x132, script: 0x52},
+ 13: {lang: 0x9d, region: 0x58, script: 0x52},
+ 14: {lang: 0x2c4, region: 0x52, script: 0x34},
+ 15: {lang: 0xe1, region: 0x97, script: 0x20},
+ 16: {lang: 0xf8, region: 0x93, script: 0x52},
+ 17: {lang: 0x103, region: 0x9c, script: 0x52},
+ 18: {lang: 0x9b, region: 0x2e, script: 0x52},
+ 19: {lang: 0x9b, region: 0xe4, script: 0x52},
+ 20: {lang: 0x9b, region: 0x88, script: 0x52},
+ 21: {lang: 0x22f, region: 0x13f, script: 0x52},
+ 22: {lang: 0x2c4, region: 0x52, script: 0x34},
+ 23: {lang: 0x28d, region: 0x134, script: 0x52},
24: {lang: 0x15, region: 0x106, script: 0x5},
- 25: {lang: 0x205, region: 0x104, script: 0x1d},
- 26: {lang: 0x205, region: 0x104, script: 0x1d},
- 27: {lang: 0x9a, region: 0x79, script: 0x4f},
- 28: {lang: 0x85, region: 0x5f, script: 0x4f},
- 29: {lang: 0x9c, region: 0x1e, script: 0x4f},
- 30: {lang: 0x9a, region: 0x98, script: 0x4f},
- 31: {lang: 0x9a, region: 0x79, script: 0x4f},
+ 25: {lang: 0x207, region: 0x104, script: 0x1e},
+ 26: {lang: 0x207, region: 0x104, script: 0x1e},
+ 27: {lang: 0x9b, region: 0x79, script: 0x52},
+ 28: {lang: 0x85, region: 0x5f, script: 0x52},
+ 29: {lang: 0x9d, region: 0x1e, script: 0x52},
+ 30: {lang: 0x9b, region: 0x98, script: 0x52},
+ 31: {lang: 0x9b, region: 0x79, script: 0x52},
}
type mutualIntelligibility struct {
@@ -2477,134 +2526,134 @@ type scriptIntelligibility struct {
// whether the intelligibility goes one or both ways.
// Size: 708 bytes, 118 elements
var matchLang = [118]mutualIntelligibility{
- 0: {want: 0x1c0, have: 0x1ae, conf: 0x2, oneway: false},
- 1: {want: 0x144, have: 0x6f, conf: 0x2, oneway: false},
- 2: {want: 0xed, have: 0x54, conf: 0x2, oneway: false},
- 3: {want: 0x223, have: 0x54, conf: 0x2, oneway: false},
- 4: {want: 0x239, have: 0x54, conf: 0x2, oneway: false},
- 5: {want: 0x223, have: 0xed, conf: 0x2, oneway: false},
- 6: {want: 0x239, have: 0xed, conf: 0x2, oneway: false},
- 7: {want: 0x223, have: 0x239, conf: 0x2, oneway: false},
- 8: {want: 0x23f, have: 0x1, conf: 0x2, oneway: false},
- 9: {want: 0xd1, have: 0x85, conf: 0x2, oneway: true},
- 10: {want: 0x153, have: 0x85, conf: 0x2, oneway: true},
- 11: {want: 0x80, have: 0x1c0, conf: 0x2, oneway: false},
- 12: {want: 0x80, have: 0x1ae, conf: 0x2, oneway: false},
- 13: {want: 0x6f, have: 0x144, conf: 0x2, oneway: false},
- 14: {want: 0x2, have: 0x205, conf: 0x2, oneway: true},
- 15: {want: 0x5, have: 0x9a, conf: 0x2, oneway: true},
- 16: {want: 0xa, have: 0x1bc, conf: 0x2, oneway: true},
- 17: {want: 0xd, have: 0x9a, conf: 0x2, oneway: true},
- 18: {want: 0x23, have: 0x9c, conf: 0x2, oneway: true},
- 19: {want: 0x24, have: 0x205, conf: 0x2, oneway: true},
- 20: {want: 0x2f, have: 0x205, conf: 0x2, oneway: true},
- 21: {want: 0x31, have: 0x9a, conf: 0x2, oneway: true},
- 22: {want: 0x3c, have: 0xe0, conf: 0x2, oneway: true},
- 23: {want: 0x4b, have: 0x9a, conf: 0x2, oneway: true},
- 24: {want: 0x50, have: 0xae, conf: 0x2, oneway: true},
- 25: {want: 0x65, have: 0xa9, conf: 0x2, oneway: true},
- 26: {want: 0x6c, have: 0x9a, conf: 0x2, oneway: true},
+ 0: {want: 0x1c1, have: 0x1af, conf: 0x2, oneway: false},
+ 1: {want: 0x145, have: 0x6f, conf: 0x2, oneway: false},
+ 2: {want: 0xee, have: 0x54, conf: 0x2, oneway: false},
+ 3: {want: 0x225, have: 0x54, conf: 0x2, oneway: false},
+ 4: {want: 0x23b, have: 0x54, conf: 0x2, oneway: false},
+ 5: {want: 0x225, have: 0xee, conf: 0x2, oneway: false},
+ 6: {want: 0x23b, have: 0xee, conf: 0x2, oneway: false},
+ 7: {want: 0x225, have: 0x23b, conf: 0x2, oneway: false},
+ 8: {want: 0x241, have: 0x1, conf: 0x2, oneway: false},
+ 9: {want: 0xd2, have: 0x85, conf: 0x2, oneway: true},
+ 10: {want: 0x154, have: 0x85, conf: 0x2, oneway: true},
+ 11: {want: 0x80, have: 0x1c1, conf: 0x2, oneway: false},
+ 12: {want: 0x80, have: 0x1af, conf: 0x2, oneway: false},
+ 13: {want: 0x6f, have: 0x145, conf: 0x2, oneway: false},
+ 14: {want: 0x2, have: 0x207, conf: 0x2, oneway: true},
+ 15: {want: 0x5, have: 0x9b, conf: 0x2, oneway: true},
+ 16: {want: 0xa, have: 0x1bd, conf: 0x2, oneway: true},
+ 17: {want: 0xd, have: 0x9b, conf: 0x2, oneway: true},
+ 18: {want: 0x23, have: 0x9d, conf: 0x2, oneway: true},
+ 19: {want: 0x24, have: 0x207, conf: 0x2, oneway: true},
+ 20: {want: 0x2f, have: 0x207, conf: 0x2, oneway: true},
+ 21: {want: 0x31, have: 0x9b, conf: 0x2, oneway: true},
+ 22: {want: 0x3c, have: 0xe1, conf: 0x2, oneway: true},
+ 23: {want: 0x4b, have: 0x9b, conf: 0x2, oneway: true},
+ 24: {want: 0x50, have: 0xaf, conf: 0x2, oneway: true},
+ 25: {want: 0x65, have: 0xaa, conf: 0x2, oneway: true},
+ 26: {want: 0x6c, have: 0x9b, conf: 0x2, oneway: true},
27: {want: 0x6f, have: 0x15, conf: 0x2, oneway: true},
- 28: {want: 0x70, have: 0xae, conf: 0x2, oneway: true},
- 29: {want: 0x78, have: 0xae, conf: 0x2, oneway: true},
- 30: {want: 0x7f, have: 0x9a, conf: 0x2, oneway: true},
- 31: {want: 0x94, have: 0x9a, conf: 0x2, oneway: true},
- 32: {want: 0x9b, have: 0x9a, conf: 0x2, oneway: true},
- 33: {want: 0x9e, have: 0xa7, conf: 0x2, oneway: true},
- 34: {want: 0xa0, have: 0x9c, conf: 0x2, oneway: true},
- 35: {want: 0xac, have: 0x80, conf: 0x2, oneway: true},
- 36: {want: 0xb8, have: 0x1bc, conf: 0x2, oneway: true},
- 37: {want: 0xb9, have: 0x9a, conf: 0x2, oneway: true},
- 38: {want: 0xba, have: 0x9a, conf: 0x2, oneway: true},
- 39: {want: 0xc1, have: 0x9a, conf: 0x2, oneway: true},
- 40: {want: 0xc7, have: 0x9c, conf: 0x2, oneway: true},
- 41: {want: 0xc9, have: 0x9c, conf: 0x2, oneway: true},
- 42: {want: 0xd2, have: 0xe0, conf: 0x2, oneway: true},
- 43: {want: 0xdb, have: 0x9a, conf: 0x2, oneway: true},
- 44: {want: 0xdd, have: 0x9a, conf: 0x2, oneway: true},
- 45: {want: 0xf0, have: 0xae, conf: 0x2, oneway: true},
- 46: {want: 0xf2, have: 0x205, conf: 0x2, oneway: true},
- 47: {want: 0xf4, have: 0x9a, conf: 0x2, oneway: true},
- 48: {want: 0xf9, have: 0x9a, conf: 0x2, oneway: true},
- 49: {want: 0x101, have: 0x9a, conf: 0x2, oneway: true},
- 50: {want: 0x10e, have: 0xf7, conf: 0x2, oneway: true},
- 51: {want: 0x110, have: 0x9a, conf: 0x2, oneway: true},
- 52: {want: 0x121, have: 0xae, conf: 0x2, oneway: true},
- 53: {want: 0x12e, have: 0x205, conf: 0x2, oneway: true},
- 54: {want: 0x132, have: 0x9a, conf: 0x2, oneway: true},
- 55: {want: 0x134, have: 0x9a, conf: 0x2, oneway: true},
- 56: {want: 0x13c, have: 0x9a, conf: 0x2, oneway: true},
- 57: {want: 0x144, have: 0x26d, conf: 0x2, oneway: true},
- 58: {want: 0x14c, have: 0x205, conf: 0x2, oneway: true},
- 59: {want: 0x14d, have: 0x102, conf: 0x2, oneway: true},
- 60: {want: 0x159, have: 0x9a, conf: 0x2, oneway: true},
- 61: {want: 0x163, have: 0xae, conf: 0x2, oneway: true},
- 62: {want: 0x164, have: 0x9a, conf: 0x2, oneway: true},
- 63: {want: 0x166, have: 0x9a, conf: 0x2, oneway: true},
- 64: {want: 0x16b, have: 0xae, conf: 0x2, oneway: true},
- 65: {want: 0x181, have: 0x9a, conf: 0x2, oneway: true},
- 66: {want: 0x182, have: 0xae, conf: 0x2, oneway: true},
- 67: {want: 0x188, have: 0x9a, conf: 0x2, oneway: true},
- 68: {want: 0x18b, have: 0x38, conf: 0x2, oneway: true},
- 69: {want: 0x18c, have: 0x9a, conf: 0x2, oneway: true},
- 70: {want: 0x18e, have: 0x205, conf: 0x2, oneway: true},
- 71: {want: 0x195, have: 0xe0, conf: 0x2, oneway: true},
- 72: {want: 0x199, have: 0xf7, conf: 0x2, oneway: true},
- 73: {want: 0x19a, have: 0x9a, conf: 0x2, oneway: true},
- 74: {want: 0x1a4, have: 0x9a, conf: 0x2, oneway: true},
- 75: {want: 0x1b3, have: 0x9a, conf: 0x2, oneway: true},
- 76: {want: 0x1be, have: 0x1ae, conf: 0x2, oneway: false},
- 77: {want: 0x1be, have: 0x1c0, conf: 0x2, oneway: true},
- 78: {want: 0x1c7, have: 0x9a, conf: 0x2, oneway: true},
- 79: {want: 0x1cb, have: 0x9a, conf: 0x2, oneway: true},
- 80: {want: 0x1cd, have: 0x9a, conf: 0x2, oneway: true},
- 81: {want: 0x1cf, have: 0xae, conf: 0x2, oneway: true},
- 82: {want: 0x1d1, have: 0x9a, conf: 0x2, oneway: true},
- 83: {want: 0x1d2, have: 0x9a, conf: 0x2, oneway: true},
- 84: {want: 0x1d5, have: 0x9a, conf: 0x2, oneway: true},
- 85: {want: 0x1dc, have: 0x9a, conf: 0x2, oneway: true},
- 86: {want: 0x1ec, have: 0x9a, conf: 0x2, oneway: true},
- 87: {want: 0x1ef, have: 0x9c, conf: 0x2, oneway: true},
- 88: {want: 0x1fa, have: 0x85, conf: 0x2, oneway: true},
- 89: {want: 0x1ff, have: 0x9a, conf: 0x2, oneway: true},
- 90: {want: 0x208, have: 0xae, conf: 0x2, oneway: true},
- 91: {want: 0x20b, have: 0xe0, conf: 0x2, oneway: true},
- 92: {want: 0x218, have: 0x9a, conf: 0x2, oneway: true},
- 93: {want: 0x226, have: 0x9a, conf: 0x2, oneway: true},
- 94: {want: 0x234, have: 0x9a, conf: 0x2, oneway: true},
- 95: {want: 0x236, have: 0x9a, conf: 0x2, oneway: true},
- 96: {want: 0x238, have: 0x9a, conf: 0x2, oneway: true},
- 97: {want: 0x240, have: 0x9a, conf: 0x2, oneway: true},
- 98: {want: 0x242, have: 0xf7, conf: 0x2, oneway: true},
- 99: {want: 0x246, have: 0x9a, conf: 0x2, oneway: true},
- 100: {want: 0x24f, have: 0x9a, conf: 0x2, oneway: true},
- 101: {want: 0x256, have: 0x9a, conf: 0x2, oneway: true},
- 102: {want: 0x25a, have: 0x205, conf: 0x2, oneway: true},
- 103: {want: 0x25f, have: 0x9a, conf: 0x2, oneway: true},
- 104: {want: 0x262, have: 0x205, conf: 0x2, oneway: true},
- 105: {want: 0x3616, have: 0x9a, conf: 0x2, oneway: true},
- 106: {want: 0x269, have: 0x9a, conf: 0x2, oneway: true},
- 107: {want: 0x26a, have: 0x9a, conf: 0x2, oneway: true},
- 108: {want: 0x275, have: 0x205, conf: 0x2, oneway: true},
- 109: {want: 0x279, have: 0x9a, conf: 0x2, oneway: true},
- 110: {want: 0x281, have: 0x2c0, conf: 0x2, oneway: true},
- 111: {want: 0x289, have: 0x9a, conf: 0x2, oneway: true},
- 112: {want: 0x28a, have: 0x205, conf: 0x2, oneway: true},
- 113: {want: 0x2a1, have: 0xae, conf: 0x2, oneway: true},
- 114: {want: 0x2a6, have: 0x9a, conf: 0x2, oneway: true},
- 115: {want: 0x2b6, have: 0x9a, conf: 0x2, oneway: true},
- 116: {want: 0x2b7, have: 0x9a, conf: 0x2, oneway: true},
- 117: {want: 0x2c2, have: 0x9a, conf: 0x2, oneway: true},
+ 28: {want: 0x70, have: 0xaf, conf: 0x2, oneway: true},
+ 29: {want: 0x78, have: 0xaf, conf: 0x2, oneway: true},
+ 30: {want: 0x7f, have: 0x9b, conf: 0x2, oneway: true},
+ 31: {want: 0x95, have: 0x9b, conf: 0x2, oneway: true},
+ 32: {want: 0x9c, have: 0x9b, conf: 0x2, oneway: true},
+ 33: {want: 0x9f, have: 0xa8, conf: 0x2, oneway: true},
+ 34: {want: 0xa1, have: 0x9d, conf: 0x2, oneway: true},
+ 35: {want: 0xad, have: 0x80, conf: 0x2, oneway: true},
+ 36: {want: 0xb9, have: 0x1bd, conf: 0x2, oneway: true},
+ 37: {want: 0xba, have: 0x9b, conf: 0x2, oneway: true},
+ 38: {want: 0xbb, have: 0x9b, conf: 0x2, oneway: true},
+ 39: {want: 0xc2, have: 0x9b, conf: 0x2, oneway: true},
+ 40: {want: 0xc8, have: 0x9d, conf: 0x2, oneway: true},
+ 41: {want: 0xca, have: 0x9d, conf: 0x2, oneway: true},
+ 42: {want: 0xd3, have: 0xe1, conf: 0x2, oneway: true},
+ 43: {want: 0xdc, have: 0x9b, conf: 0x2, oneway: true},
+ 44: {want: 0xde, have: 0x9b, conf: 0x2, oneway: true},
+ 45: {want: 0xf1, have: 0xaf, conf: 0x2, oneway: true},
+ 46: {want: 0xf3, have: 0x207, conf: 0x2, oneway: true},
+ 47: {want: 0xf5, have: 0x9b, conf: 0x2, oneway: true},
+ 48: {want: 0xfa, have: 0x9b, conf: 0x2, oneway: true},
+ 49: {want: 0x102, have: 0x9b, conf: 0x2, oneway: true},
+ 50: {want: 0x10f, have: 0xf8, conf: 0x2, oneway: true},
+ 51: {want: 0x111, have: 0x9b, conf: 0x2, oneway: true},
+ 52: {want: 0x122, have: 0xaf, conf: 0x2, oneway: true},
+ 53: {want: 0x12f, have: 0x207, conf: 0x2, oneway: true},
+ 54: {want: 0x133, have: 0x9b, conf: 0x2, oneway: true},
+ 55: {want: 0x135, have: 0x9b, conf: 0x2, oneway: true},
+ 56: {want: 0x13d, have: 0x9b, conf: 0x2, oneway: true},
+ 57: {want: 0x145, have: 0x26f, conf: 0x2, oneway: true},
+ 58: {want: 0x14d, have: 0x207, conf: 0x2, oneway: true},
+ 59: {want: 0x14e, have: 0x103, conf: 0x2, oneway: true},
+ 60: {want: 0x15a, have: 0x9b, conf: 0x2, oneway: true},
+ 61: {want: 0x164, have: 0xaf, conf: 0x2, oneway: true},
+ 62: {want: 0x165, have: 0x9b, conf: 0x2, oneway: true},
+ 63: {want: 0x167, have: 0x9b, conf: 0x2, oneway: true},
+ 64: {want: 0x16c, have: 0xaf, conf: 0x2, oneway: true},
+ 65: {want: 0x182, have: 0x9b, conf: 0x2, oneway: true},
+ 66: {want: 0x183, have: 0xaf, conf: 0x2, oneway: true},
+ 67: {want: 0x189, have: 0x9b, conf: 0x2, oneway: true},
+ 68: {want: 0x18c, have: 0x38, conf: 0x2, oneway: true},
+ 69: {want: 0x18d, have: 0x9b, conf: 0x2, oneway: true},
+ 70: {want: 0x18f, have: 0x207, conf: 0x2, oneway: true},
+ 71: {want: 0x196, have: 0xe1, conf: 0x2, oneway: true},
+ 72: {want: 0x19a, have: 0xf8, conf: 0x2, oneway: true},
+ 73: {want: 0x19b, have: 0x9b, conf: 0x2, oneway: true},
+ 74: {want: 0x1a5, have: 0x9b, conf: 0x2, oneway: true},
+ 75: {want: 0x1b4, have: 0x9b, conf: 0x2, oneway: true},
+ 76: {want: 0x1bf, have: 0x1af, conf: 0x2, oneway: false},
+ 77: {want: 0x1bf, have: 0x1c1, conf: 0x2, oneway: true},
+ 78: {want: 0x1c8, have: 0x9b, conf: 0x2, oneway: true},
+ 79: {want: 0x1cc, have: 0x9b, conf: 0x2, oneway: true},
+ 80: {want: 0x1ce, have: 0x9b, conf: 0x2, oneway: true},
+ 81: {want: 0x1d0, have: 0xaf, conf: 0x2, oneway: true},
+ 82: {want: 0x1d2, have: 0x9b, conf: 0x2, oneway: true},
+ 83: {want: 0x1d3, have: 0x9b, conf: 0x2, oneway: true},
+ 84: {want: 0x1d7, have: 0x9b, conf: 0x2, oneway: true},
+ 85: {want: 0x1de, have: 0x9b, conf: 0x2, oneway: true},
+ 86: {want: 0x1ee, have: 0x9b, conf: 0x2, oneway: true},
+ 87: {want: 0x1f1, have: 0x9d, conf: 0x2, oneway: true},
+ 88: {want: 0x1fc, have: 0x85, conf: 0x2, oneway: true},
+ 89: {want: 0x201, have: 0x9b, conf: 0x2, oneway: true},
+ 90: {want: 0x20a, have: 0xaf, conf: 0x2, oneway: true},
+ 91: {want: 0x20d, have: 0xe1, conf: 0x2, oneway: true},
+ 92: {want: 0x21a, have: 0x9b, conf: 0x2, oneway: true},
+ 93: {want: 0x228, have: 0x9b, conf: 0x2, oneway: true},
+ 94: {want: 0x236, have: 0x9b, conf: 0x2, oneway: true},
+ 95: {want: 0x238, have: 0x9b, conf: 0x2, oneway: true},
+ 96: {want: 0x23a, have: 0x9b, conf: 0x2, oneway: true},
+ 97: {want: 0x242, have: 0x9b, conf: 0x2, oneway: true},
+ 98: {want: 0x244, have: 0xf8, conf: 0x2, oneway: true},
+ 99: {want: 0x248, have: 0x9b, conf: 0x2, oneway: true},
+ 100: {want: 0x251, have: 0x9b, conf: 0x2, oneway: true},
+ 101: {want: 0x258, have: 0x9b, conf: 0x2, oneway: true},
+ 102: {want: 0x25c, have: 0x207, conf: 0x2, oneway: true},
+ 103: {want: 0x261, have: 0x9b, conf: 0x2, oneway: true},
+ 104: {want: 0x264, have: 0x207, conf: 0x2, oneway: true},
+ 105: {want: 0x361a, have: 0x9b, conf: 0x2, oneway: true},
+ 106: {want: 0x26b, have: 0x9b, conf: 0x2, oneway: true},
+ 107: {want: 0x26c, have: 0x9b, conf: 0x2, oneway: true},
+ 108: {want: 0x277, have: 0x207, conf: 0x2, oneway: true},
+ 109: {want: 0x27b, have: 0x9b, conf: 0x2, oneway: true},
+ 110: {want: 0x284, have: 0x2c4, conf: 0x2, oneway: true},
+ 111: {want: 0x28c, have: 0x9b, conf: 0x2, oneway: true},
+ 112: {want: 0x28d, have: 0x207, conf: 0x2, oneway: true},
+ 113: {want: 0x2a4, have: 0xaf, conf: 0x2, oneway: true},
+ 114: {want: 0x2a9, have: 0x9b, conf: 0x2, oneway: true},
+ 115: {want: 0x2b9, have: 0x9b, conf: 0x2, oneway: true},
+ 116: {want: 0x2ba, have: 0x9b, conf: 0x2, oneway: true},
+ 117: {want: 0x2c6, have: 0x9b, conf: 0x2, oneway: true},
}
// matchScript holds pairs of scriptIDs where readers of one script
// can typically also read the other. Each is associated with a confidence.
// Size: 24 bytes, 4 elements
var matchScript = [4]scriptIntelligibility{
- 0: {lang: 0x239, want: 0x4f, have: 0x1d, conf: 0x2},
- 1: {lang: 0x239, want: 0x1d, have: 0x4f, conf: 0x2},
- 2: {lang: 0x0, want: 0x32, have: 0x33, conf: 0x1},
- 3: {lang: 0x0, want: 0x33, have: 0x32, conf: 0x1},
+ 0: {lang: 0x23b, want: 0x52, have: 0x1e, conf: 0x2},
+ 1: {lang: 0x23b, want: 0x1e, have: 0x52, conf: 0x2},
+ 2: {lang: 0x0, want: 0x34, have: 0x35, conf: 0x1},
+ 3: {lang: 0x0, want: 0x35, have: 0x34, conf: 0x1},
}
// Size: 128 bytes, 32 elements
@@ -2663,7 +2712,7 @@ var regionInclusion = [355]uint8{
// Entry 100 - 13F
0x2e, 0x20, 0x2d, 0x22, 0x32, 0x2e, 0x23, 0x3a,
0x2e, 0x38, 0x37, 0x30, 0x2c, 0x39, 0x2b, 0x2d,
- 0x2c, 0x22, 0x2c, 0x2e, 0x27, 0x38, 0x26, 0x32,
+ 0x2c, 0x22, 0x2c, 0x2e, 0x27, 0x2e, 0x26, 0x32,
0x33, 0x25, 0x23, 0x31, 0x21, 0x25, 0x26, 0x21,
0x2c, 0x30, 0x3c, 0x28, 0x30, 0x3c, 0x38, 0x28,
0x30, 0x23, 0x25, 0x28, 0x35, 0x2e, 0x32, 0x2e,
@@ -2730,13 +2779,13 @@ type parentRel struct {
fromRegion []uint16
}
-// Size: 404 bytes, 5 elements
+// Size: 412 bytes, 5 elements
var parents = [5]parentRel{
- 0: {lang: 0x9a, script: 0x0, maxScript: 0x4f, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x71, 0x72, 0x73, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x81, 0x8a, 0x8b, 0x94, 0x95, 0x96, 0x97, 0x98, 0x9d, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc4, 0xc8, 0xc9, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xde, 0xe4, 0xe5, 0xe6, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x10b, 0x10c, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x139, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}},
- 1: {lang: 0x9a, script: 0x0, maxScript: 0x4f, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x70, 0xd7, 0x10a, 0x10d}},
- 2: {lang: 0x9c, script: 0x0, maxScript: 0x4f, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}},
- 3: {lang: 0x1ed, script: 0x0, maxScript: 0x4f, toRegion: 0xec, fromRegion: []uint16{0x29, 0x59, 0x89, 0xc4, 0xcf, 0x116, 0x124}},
- 4: {lang: 0x2c0, script: 0x33, maxScript: 0x33, toRegion: 0x8b, fromRegion: []uint16{0xc4}},
+ 0: {lang: 0x9b, script: 0x0, maxScript: 0x52, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x71, 0x72, 0x73, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x81, 0x8a, 0x8b, 0x94, 0x95, 0x96, 0x97, 0x98, 0x9d, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc4, 0xc8, 0xc9, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xde, 0xe4, 0xe5, 0xe6, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x10b, 0x10c, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x139, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}},
+ 1: {lang: 0x9b, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x70, 0xd7, 0x10a, 0x10d}},
+ 2: {lang: 0x9d, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}},
+ 3: {lang: 0x1ef, script: 0x0, maxScript: 0x52, toRegion: 0xec, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x84, 0x89, 0xb5, 0xc4, 0xcf, 0x116, 0x124}},
+ 4: {lang: 0x2c4, script: 0x35, maxScript: 0x35, toRegion: 0x8b, fromRegion: []uint16{0xc4}},
}
-// Total table size 19949 bytes (19KiB); checksum: 13F4A4EF
+// Total table size 20315 bytes (19KiB); checksum: C16EF251
diff --git a/Godeps/_workspace/src/golang.org/x/text/transform/transform.go b/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
index f79b461b8..51862b02b 100644
--- a/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
+++ b/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
@@ -207,7 +207,9 @@ func (w *Writer) Write(data []byte) (n int, err error) {
return n, werr
}
src = src[nSrc:]
- if w.n > 0 && len(src) <= n {
+ if w.n == 0 {
+ n += nSrc
+ } else if len(src) <= n {
// Enough bytes from w.src have been consumed. We make src point
// to data instead to reduce the copying.
w.n = 0
@@ -216,35 +218,46 @@ func (w *Writer) Write(data []byte) (n int, err error) {
if n < len(data) && (err == nil || err == ErrShortSrc) {
continue
}
- } else {
- n += nSrc
}
- switch {
- case err == ErrShortDst && (nDst > 0 || nSrc > 0):
- case err == ErrShortSrc && len(src) < len(w.src):
- m := copy(w.src, src)
- // If w.n > 0, bytes from data were already copied to w.src and n
- // was already set to the number of bytes consumed.
- if w.n == 0 {
- n += m
+ switch err {
+ case ErrShortDst:
+ // This error is okay as long as we are making progress.
+ if nDst > 0 || nSrc > 0 {
+ continue
+ }
+ case ErrShortSrc:
+ if len(src) < len(w.src) {
+ m := copy(w.src, src)
+ // If w.n > 0, bytes from data were already copied to w.src and n
+ // was already set to the number of bytes consumed.
+ if w.n == 0 {
+ n += m
+ }
+ w.n = m
+ err = nil
+ } else if nDst > 0 || nSrc > 0 {
+ // Not enough buffer to store the remainder. Keep processing as
+ // long as there is progress. Without this case, transforms that
+ // require a lookahead larger than the buffer may result in an
+ // error. This is not something one may expect to be common in
+ // practice, but it may occur when buffers are set to small
+ // sizes during testing.
+ continue
+ }
+ case nil:
+ if w.n > 0 {
+ err = errInconsistentByteCount
}
- w.n = m
- return n, nil
- case err == nil && w.n > 0:
- return n, errInconsistentByteCount
- default:
- return n, err
}
+ return n, err
}
}
// Close implements the io.Closer interface.
func (w *Writer) Close() error {
- for src := w.src[:w.n]; len(src) > 0; {
+ src := w.src[:w.n]
+ for {
nDst, nSrc, err := w.t.Transform(w.dst, src, true)
- if nDst == 0 {
- return err
- }
if _, werr := w.w.Write(w.dst[:nDst]); werr != nil {
return werr
}
@@ -253,7 +266,6 @@ func (w *Writer) Close() error {
}
src = src[nSrc:]
}
- return nil
}
type nop struct{ NopResetter }
@@ -493,7 +505,9 @@ func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err err
// of b to the start of the new slice.
func grow(b []byte, n int) []byte {
m := len(b)
- if m <= 256 {
+ if m <= 32 {
+ m = 64
+ } else if m <= 256 {
m *= 2
} else {
m += m >> 1
@@ -508,86 +522,103 @@ const initialBufSize = 128
// String returns a string with the result of converting s[:n] using t, where
// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.
func String(t Transformer, s string) (result string, n int, err error) {
+ t.Reset()
if s == "" {
- return "", 0, nil
+ // Fast path for the common case for empty input. Results in about a
+ // 86% reduction of running time for BenchmarkStringLowerEmpty.
+ if _, _, err := t.Transform(nil, nil, true); err == nil {
+ return "", 0, nil
+ }
}
- t.Reset()
-
// Allocate only once. Note that both dst and src escape when passed to
// Transform.
buf := [2 * initialBufSize]byte{}
dst := buf[:initialBufSize:initialBufSize]
src := buf[initialBufSize : 2*initialBufSize]
- // Avoid allocation if the transformed string is identical to the original.
- // After this loop, pDst will point to the furthest point in s for which it
- // could be detected that t gives equal results, src[:nSrc] will
- // indicated the last processed chunk of s for which the output is not equal
- // and dst[:nDst] will be the transform of this chunk.
- var nDst, nSrc int
- pDst := 0 // Used as index in both src and dst in this loop.
+ // The input string s is transformed in multiple chunks (starting with a
+ // chunk size of initialBufSize). nDst and nSrc are per-chunk (or
+ // per-Transform-call) indexes, pDst and pSrc are overall indexes.
+ nDst, nSrc := 0, 0
+ pDst, pSrc := 0, 0
+
+ // pPrefix is the length of a common prefix: the first pPrefix bytes of the
+ // result will equal the first pPrefix bytes of s. It is not guaranteed to
+ // be the largest such value, but if pPrefix, len(result) and len(s) are
+ // all equal after the final transform (i.e. calling Transform with atEOF
+ // being true returned nil error) then we don't need to allocate a new
+ // result string.
+ pPrefix := 0
for {
- n := copy(src, s[pDst:])
- nDst, nSrc, err = t.Transform(dst, src[:n], pDst+n == len(s))
-
- // Note 1: we will not enter the loop with pDst == len(s) and we will
- // not end the loop with it either. So if nSrc is 0, this means there is
- // some kind of error from which we cannot recover given the current
- // buffer sizes. We will give up in this case.
- // Note 2: it is not entirely correct to simply do a bytes.Equal as
- // a Transformer may buffer internally. It will work in most cases,
- // though, and no harm is done if it doesn't work.
+ // Invariant: pDst == pPrefix && pSrc == pPrefix.
+
+ n := copy(src, s[pSrc:])
+ nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))
+ pDst += nDst
+ pSrc += nSrc
+
// TODO: let transformers implement an optional Spanner interface, akin
// to norm's QuickSpan. This would even allow us to avoid any allocation.
- if nSrc == 0 || !bytes.Equal(dst[:nDst], src[:nSrc]) {
+ if !bytes.Equal(dst[:nDst], src[:nSrc]) {
break
}
-
- if pDst += nDst; pDst == len(s) {
- return s, pDst, nil
+ pPrefix = pSrc
+ if err == ErrShortDst {
+ // A buffer can only be short if a transformer modifies its input.
+ break
+ } else if err == ErrShortSrc {
+ if nSrc == 0 {
+ // No progress was made.
+ break
+ }
+ // Equal so far and !atEOF, so continue checking.
+ } else if err != nil || pPrefix == len(s) {
+ return string(s[:pPrefix]), pPrefix, err
}
}
-
- // Move the bytes seen so far to dst.
- pSrc := pDst + nSrc
- if pDst+nDst <= initialBufSize {
- copy(dst[pDst:], dst[:nDst])
- } else {
- b := make([]byte, len(s)+nDst-nSrc)
- copy(b[pDst:], dst[:nDst])
- dst = b
+ // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.
+
+ // We have transformed the first pSrc bytes of the input s to become pDst
+ // transformed bytes. Those transformed bytes are discontiguous: the first
+ // pPrefix of them equal s[:pPrefix] and the last nDst of them equal
+ // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so
+ // that they become one contiguous slice: dst[:pDst].
+ if pPrefix != 0 {
+ newDst := dst
+ if pDst > len(newDst) {
+ newDst = make([]byte, len(s)+nDst-nSrc)
+ }
+ copy(newDst[pPrefix:pDst], dst[:nDst])
+ copy(newDst[:pPrefix], s[:pPrefix])
+ dst = newDst
}
- copy(dst, s[:pDst])
- pDst += nDst
- if err != nil && err != ErrShortDst && err != ErrShortSrc {
+ // Prevent duplicate Transform calls with atEOF being true at the end of
+ // the input. Also return if we have an unrecoverable error.
+ if (err == nil && pSrc == len(s)) ||
+ (err != nil && err != ErrShortDst && err != ErrShortSrc) {
return string(dst[:pDst]), pSrc, err
}
- // Complete the string with the remainder.
+ // Transform the remaining input, growing dst and src buffers as necessary.
for {
n := copy(src, s[pSrc:])
- nDst, nSrc, err = t.Transform(dst[pDst:], src[:n], pSrc+n == len(s))
+ nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], pSrc+n == len(s))
pDst += nDst
pSrc += nSrc
- switch err {
- case nil:
- if pSrc == len(s) {
- return string(dst[:pDst]), pSrc, nil
- }
- case ErrShortDst:
- // Do not grow as long as we can make progress. This may avoid
- // excessive allocations.
+ // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can
+ // make progress. This may avoid excessive allocations.
+ if err == ErrShortDst {
if nDst == 0 {
dst = grow(dst, pDst)
}
- case ErrShortSrc:
+ } else if err == ErrShortSrc {
if nSrc == 0 {
src = grow(src, 0)
}
- default:
+ } else if err != nil || pSrc == len(s) {
return string(dst[:pDst]), pSrc, err
}
}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/enclosing.go b/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/enclosing.go
index 340c9e6cd..6b7052b89 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/enclosing.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/enclosing.go
@@ -509,7 +509,10 @@ func NodeDescription(n ast.Node) string {
return "fall-through statement"
}
case *ast.CallExpr:
- return "function call (or conversion)"
+ if len(n.Args) == 1 && !n.Ellipsis.IsValid() {
+ return "function call (or conversion)"
+ }
+ return "function call"
case *ast.CaseClause:
return "case clause"
case *ast.ChanType:
diff --git a/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/imports.go b/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/imports.go
index c2e2b58e6..a47bcfa3f 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/imports.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/go/ast/astutil/imports.go
@@ -143,6 +143,30 @@ func AddNamedImport(fset *token.FileSet, f *ast.File, name, ipath string) (added
}
f.Imports = append(f.Imports, newImport)
+
+ if len(f.Decls) <= 1 {
+ return true
+ }
+
+ // Merge all the import declarations into the first one.
+ var first *ast.GenDecl
+ for i, decl := range f.Decls {
+ gen, ok := decl.(*ast.GenDecl)
+ if !ok || gen.Tok != token.IMPORT || declImports(gen, "C") {
+ continue
+ }
+ if first == nil {
+ first = gen
+ continue // Don't touch the first one.
+ }
+ // Move the imports of the other import declaration to the first one.
+ for _, spec := range gen.Specs {
+ spec.(*ast.ImportSpec).Path.ValuePos = first.Pos()
+ first.Specs = append(first.Specs, spec)
+ }
+ f.Decls = append(f.Decls[:i], f.Decls[i+1:]...)
+ }
+
return true
}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk.go
new file mode 100644
index 000000000..157c79225
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk.go
@@ -0,0 +1,172 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// A faster implementation of filepath.Walk.
+//
+// filepath.Walk's design necessarily calls os.Lstat on each file,
+// even if the caller needs less info. And goimports only need to know
+// the type of each file. The kernel interface provides the type in
+// the Readdir call but the standard library ignored it.
+// fastwalk_unix.go contains a fork of the syscall routines.
+//
+// See golang.org/issue/16399
+
+package imports
+
+import (
+ "errors"
+ "os"
+ "path/filepath"
+ "runtime"
+)
+
+// traverseLink is a sentinel error for fastWalk, similar to filepath.SkipDir.
+var traverseLink = errors.New("traverse symlink, assuming target is a directory")
+
+// fastWalk walks the file tree rooted at root, calling walkFn for
+// each file or directory in the tree, including root.
+//
+// If fastWalk returns filepath.SkipDir, the directory is skipped.
+//
+// Unlike filepath.Walk:
+// * file stat calls must be done by the user.
+// The only provided metadata is the file type, which does not include
+// any permission bits.
+// * multiple goroutines stat the filesystem concurrently. The provided
+// walkFn must be safe for concurrent use.
+// * fastWalk can follow symlinks if walkFn returns the traverseLink
+// sentinel error. It is the walkFn's responsibility to prevent
+// fastWalk from going into symlink cycles.
+func fastWalk(root string, walkFn func(path string, typ os.FileMode) error) error {
+ // TODO(bradfitz): make numWorkers configurable? We used a
+ // minimum of 4 to give the kernel more info about multiple
+ // things we want, in hopes its I/O scheduling can take
+ // advantage of that. Hopefully most are in cache. Maybe 4 is
+ // even too low of a minimum. Profile more.
+ numWorkers := 4
+ if n := runtime.NumCPU(); n > numWorkers {
+ numWorkers = n
+ }
+ w := &walker{
+ fn: walkFn,
+ enqueuec: make(chan walkItem, numWorkers), // buffered for performance
+ workc: make(chan walkItem, numWorkers), // buffered for performance
+ donec: make(chan struct{}),
+
+ // buffered for correctness & not leaking goroutines:
+ resc: make(chan error, numWorkers),
+ }
+ defer close(w.donec)
+ // TODO(bradfitz): start the workers as needed? maybe not worth it.
+ for i := 0; i < numWorkers; i++ {
+ go w.doWork()
+ }
+ todo := []walkItem{{dir: root}}
+ out := 0
+ for {
+ workc := w.workc
+ var workItem walkItem
+ if len(todo) == 0 {
+ workc = nil
+ } else {
+ workItem = todo[len(todo)-1]
+ }
+ select {
+ case workc <- workItem:
+ todo = todo[:len(todo)-1]
+ out++
+ case it := <-w.enqueuec:
+ todo = append(todo, it)
+ case err := <-w.resc:
+ out--
+ if err != nil {
+ return err
+ }
+ if out == 0 && len(todo) == 0 {
+ // It's safe to quit here, as long as the buffered
+ // enqueue channel isn't also readable, which might
+ // happen if the worker sends both another unit of
+ // work and its result before the other select was
+ // scheduled and both w.resc and w.enqueuec were
+ // readable.
+ select {
+ case it := <-w.enqueuec:
+ todo = append(todo, it)
+ default:
+ return nil
+ }
+ }
+ }
+ }
+}
+
+// doWork reads directories as instructed (via workc) and runs the
+// user's callback function.
+func (w *walker) doWork() {
+ for {
+ select {
+ case <-w.donec:
+ return
+ case it := <-w.workc:
+ w.resc <- w.walk(it.dir, !it.callbackDone)
+ }
+ }
+}
+
+type walker struct {
+ fn func(path string, typ os.FileMode) error
+
+ donec chan struct{} // closed on fastWalk's return
+ workc chan walkItem // to workers
+ enqueuec chan walkItem // from workers
+ resc chan error // from workers
+}
+
+type walkItem struct {
+ dir string
+ callbackDone bool // callback already called; don't do it again
+}
+
+func (w *walker) enqueue(it walkItem) {
+ select {
+ case w.enqueuec <- it:
+ case <-w.donec:
+ }
+}
+
+func (w *walker) onDirEnt(dirName, baseName string, typ os.FileMode) error {
+ joined := dirName + string(os.PathSeparator) + baseName
+ if typ == os.ModeDir {
+ w.enqueue(walkItem{dir: joined})
+ return nil
+ }
+
+ err := w.fn(joined, typ)
+ if typ == os.ModeSymlink {
+ if err == traverseLink {
+ // Set callbackDone so we don't call it twice for both the
+ // symlink-as-symlink and the symlink-as-directory later:
+ w.enqueue(walkItem{dir: joined, callbackDone: true})
+ return nil
+ }
+ if err == filepath.SkipDir {
+ // Permit SkipDir on symlinks too.
+ return nil
+ }
+ }
+ return err
+}
+func (w *walker) walk(root string, runUserCallback bool) error {
+ if runUserCallback {
+ err := w.fn(root, os.ModeDir)
+ if err == filepath.SkipDir {
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ }
+
+ return readDir(root, w.onDirEnt)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_fileno.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_fileno.go
new file mode 100644
index 000000000..f1fd64949
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_fileno.go
@@ -0,0 +1,13 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build freebsd openbsd netbsd
+
+package imports
+
+import "syscall"
+
+func direntInode(dirent *syscall.Dirent) uint64 {
+ return uint64(dirent.Fileno)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_ino.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_ino.go
new file mode 100644
index 000000000..ee85bc4dd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_dirent_ino.go
@@ -0,0 +1,13 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,!appengine darwin
+
+package imports
+
+import "syscall"
+
+func direntInode(dirent *syscall.Dirent) uint64 {
+ return uint64(dirent.Ino)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_portable.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_portable.go
new file mode 100644
index 000000000..6c2658347
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_portable.go
@@ -0,0 +1,29 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build appengine !linux,!darwin,!freebsd,!openbsd,!netbsd
+
+package imports
+
+import (
+ "io/ioutil"
+ "os"
+)
+
+// readDir calls fn for each directory entry in dirName.
+// It does not descend into directories or follow symlinks.
+// If fn returns a non-nil error, readDir returns with that error
+// immediately.
+func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
+ fis, err := ioutil.ReadDir(dirName)
+ if err != nil {
+ return err
+ }
+ for _, fi := range fis {
+ if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_unix.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_unix.go
new file mode 100644
index 000000000..5854233db
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fastwalk_unix.go
@@ -0,0 +1,122 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,!appengine darwin freebsd openbsd netbsd
+
+package imports
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "syscall"
+ "unsafe"
+)
+
+const blockSize = 8 << 10
+
+// unknownFileMode is a sentinel (and bogus) os.FileMode
+// value used to represent a syscall.DT_UNKNOWN Dirent.Type.
+const unknownFileMode os.FileMode = os.ModeNamedPipe | os.ModeSocket | os.ModeDevice
+
+func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
+ fd, err := syscall.Open(dirName, 0, 0)
+ if err != nil {
+ return err
+ }
+ defer syscall.Close(fd)
+
+ // The buffer must be at least a block long.
+ buf := make([]byte, blockSize) // stack-allocated; doesn't escape
+ bufp := 0 // starting read position in buf
+ nbuf := 0 // end valid data in buf
+ for {
+ if bufp >= nbuf {
+ bufp = 0
+ nbuf, err = syscall.ReadDirent(fd, buf)
+ if err != nil {
+ return os.NewSyscallError("readdirent", err)
+ }
+ if nbuf <= 0 {
+ return nil
+ }
+ }
+ consumed, name, typ := parseDirEnt(buf[bufp:nbuf])
+ bufp += consumed
+ if name == "" || name == "." || name == ".." {
+ continue
+ }
+ // Fallback for filesystems (like old XFS) that don't
+ // support Dirent.Type and have DT_UNKNOWN (0) there
+ // instead.
+ if typ == unknownFileMode {
+ fi, err := os.Lstat(dirName + "/" + name)
+ if err != nil {
+ // It got deleted in the meantime.
+ if os.IsNotExist(err) {
+ continue
+ }
+ return err
+ }
+ typ = fi.Mode() & os.ModeType
+ }
+ if err := fn(dirName, name, typ); err != nil {
+ return err
+ }
+ }
+}
+
+func parseDirEnt(buf []byte) (consumed int, name string, typ os.FileMode) {
+ // golang.org/issue/15653
+ dirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0]))
+ if v := unsafe.Offsetof(dirent.Reclen) + unsafe.Sizeof(dirent.Reclen); uintptr(len(buf)) < v {
+ panic(fmt.Sprintf("buf size of %d smaller than dirent header size %d", len(buf), v))
+ }
+ if len(buf) < int(dirent.Reclen) {
+ panic(fmt.Sprintf("buf size %d < record length %d", len(buf), dirent.Reclen))
+ }
+ consumed = int(dirent.Reclen)
+ if direntInode(dirent) == 0 { // File absent in directory.
+ return
+ }
+ switch dirent.Type {
+ case syscall.DT_REG:
+ typ = 0
+ case syscall.DT_DIR:
+ typ = os.ModeDir
+ case syscall.DT_LNK:
+ typ = os.ModeSymlink
+ case syscall.DT_BLK:
+ typ = os.ModeDevice
+ case syscall.DT_FIFO:
+ typ = os.ModeNamedPipe
+ case syscall.DT_SOCK:
+ typ = os.ModeSocket
+ case syscall.DT_UNKNOWN:
+ typ = unknownFileMode
+ default:
+ // Skip weird things.
+ // It's probably a DT_WHT (http://lwn.net/Articles/325369/)
+ // or something. Revisit if/when this package is moved outside
+ // of goimports. goimports only cares about regular files,
+ // symlinks, and directories.
+ return
+ }
+
+ nameBuf := (*[unsafe.Sizeof(dirent.Name)]byte)(unsafe.Pointer(&dirent.Name[0]))
+ nameLen := bytes.IndexByte(nameBuf[:], 0)
+ if nameLen < 0 {
+ panic("failed to find terminating 0 byte in dirent")
+ }
+
+ // Special cases for common things:
+ if nameLen == 1 && nameBuf[0] == '.' {
+ name = "."
+ } else if nameLen == 2 && nameBuf[0] == '.' && nameBuf[1] == '.' {
+ name = ".."
+ } else {
+ name = string(nameBuf[:nameLen])
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/fix.go b/Godeps/_workspace/src/golang.org/x/tools/imports/fix.go
index 4fc50570d..a241c2976 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/imports/fix.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/fix.go
@@ -5,24 +5,47 @@
package imports
import (
+ "bufio"
+ "bytes"
"fmt"
"go/ast"
"go/build"
"go/parser"
"go/token"
+ "io/ioutil"
+ "log"
"os"
"path"
"path/filepath"
+ "sort"
"strings"
"sync"
"golang.org/x/tools/go/ast/astutil"
)
+// Debug controls verbose logging.
+var Debug = false
+
+var (
+ inTests = false // set true by fix_test.go; if false, no need to use testMu
+ testMu sync.RWMutex // guards globals reset by tests; used only if inTests
+)
+
+// If set, LocalPrefix instructs Process to sort import paths with the given
+// prefix into another group after 3rd-party packages.
+var LocalPrefix string
+
// importToGroup is a list of functions which map from an import path to
// a group number.
var importToGroup = []func(importPath string) (num int, ok bool){
func(importPath string) (num int, ok bool) {
+ if LocalPrefix != "" && strings.HasPrefix(importPath, LocalPrefix) {
+ return 3, true
+ }
+ return
+ },
+ func(importPath string) (num int, ok bool) {
if strings.HasPrefix(importPath, "appengine") {
return 2, true
}
@@ -45,6 +68,62 @@ func importGroup(importPath string) int {
return 0
}
+// packageInfo is a summary of features found in a package.
+type packageInfo struct {
+ Globals map[string]bool // symbol => true
+}
+
+// dirPackageInfo gets information from other files in the package.
+func dirPackageInfo(srcDir, filename string) (*packageInfo, error) {
+ considerTests := strings.HasSuffix(filename, "_test.go")
+
+ // Handle file from stdin
+ if _, err := os.Stat(filename); err != nil {
+ if os.IsNotExist(err) {
+ return &packageInfo{}, nil
+ }
+ return nil, err
+ }
+
+ fileBase := filepath.Base(filename)
+ packageFileInfos, err := ioutil.ReadDir(srcDir)
+ if err != nil {
+ return nil, err
+ }
+
+ info := &packageInfo{Globals: make(map[string]bool)}
+ for _, fi := range packageFileInfos {
+ if fi.Name() == fileBase || !strings.HasSuffix(fi.Name(), ".go") {
+ continue
+ }
+ if !considerTests && strings.HasSuffix(fi.Name(), "_test.go") {
+ continue
+ }
+
+ fileSet := token.NewFileSet()
+ root, err := parser.ParseFile(fileSet, filepath.Join(srcDir, fi.Name()), nil, 0)
+ if err != nil {
+ continue
+ }
+
+ for _, decl := range root.Decls {
+ genDecl, ok := decl.(*ast.GenDecl)
+ if !ok {
+ continue
+ }
+
+ for _, spec := range genDecl.Specs {
+ valueSpec, ok := spec.(*ast.ValueSpec)
+ if !ok {
+ continue
+ }
+ info.Globals[valueSpec.Names[0].Name] = true
+ }
+ }
+ }
+ return info, nil
+}
+
func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []string, err error) {
// refs are a set of possible package references currently unsatisfied by imports.
// first key: either base package (e.g. "fmt") or renamed package
@@ -54,6 +133,18 @@ func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []stri
// decls are the current package imports. key is base package or renamed package.
decls := make(map[string]*ast.ImportSpec)
+ abs, err := filepath.Abs(filename)
+ if err != nil {
+ return nil, err
+ }
+ srcDir := filepath.Dir(abs)
+ if Debug {
+ log.Printf("fixImports(filename=%q), abs=%q, srcDir=%q ...", filename, abs, srcDir)
+ }
+
+ var packageInfo *packageInfo
+ var loadedPackageInfo bool
+
// collect potential uses of packages.
var visitor visitFn
visitor = visitFn(func(node ast.Node) ast.Visitor {
@@ -64,10 +155,14 @@ func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []stri
case *ast.ImportSpec:
if v.Name != nil {
decls[v.Name.Name] = v
- } else {
- local := importPathToName(strings.Trim(v.Path.Value, `\"`))
- decls[local] = v
+ break
}
+ ipath := strings.Trim(v.Path.Value, `"`)
+ if ipath == "C" {
+ break
+ }
+ local := importPathToName(ipath, srcDir)
+ decls[local] = v
case *ast.SelectorExpr:
xident, ok := v.X.(*ast.Ident)
if !ok {
@@ -81,7 +176,11 @@ func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []stri
if refs[pkgName] == nil {
refs[pkgName] = make(map[string]bool)
}
- if decls[pkgName] == nil {
+ if !loadedPackageInfo {
+ loadedPackageInfo = true
+ packageInfo, _ = dirPackageInfo(srcDir, filename)
+ }
+ if decls[pkgName] == nil && (packageInfo == nil || !packageInfo.Globals[pkgName]) {
refs[pkgName][v.Sel.Name] = true
}
}
@@ -108,18 +207,22 @@ func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []stri
astutil.DeleteNamedImport(fset, f, name, ipath)
}
+ for pkgName, symbols := range refs {
+ if len(symbols) == 0 {
+ // skip over packages already imported
+ delete(refs, pkgName)
+ }
+ }
+
// Search for imports matching potential package references.
searches := 0
type result struct {
- ipath string
- name string
+ ipath string // import path (if err == nil)
+ name string // optional name to rename import as
err error
}
results := make(chan result)
for pkgName, symbols := range refs {
- if len(symbols) == 0 {
- continue // skip over packages already imported
- }
go func(pkgName string, symbols map[string]bool) {
ipath, rename, err := findImport(pkgName, symbols, filename)
r := result{ipath: ipath, err: err}
@@ -149,34 +252,131 @@ func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []stri
}
// importPathToName returns the package name for the given import path.
-var importPathToName = importPathToNameGoPath
+var importPathToName func(importPath, srcDir string) (packageName string) = importPathToNameGoPath
// importPathToNameBasic assumes the package name is the base of import path.
-func importPathToNameBasic(importPath string) (packageName string) {
+func importPathToNameBasic(importPath, srcDir string) (packageName string) {
return path.Base(importPath)
}
// importPathToNameGoPath finds out the actual package name, as declared in its .go files.
// If there's a problem, it falls back to using importPathToNameBasic.
-func importPathToNameGoPath(importPath string) (packageName string) {
- if buildPkg, err := build.Import(importPath, "", 0); err == nil {
- return buildPkg.Name
- } else {
- return importPathToNameBasic(importPath)
+func importPathToNameGoPath(importPath, srcDir string) (packageName string) {
+ // Fast path for standard library without going to disk.
+ if pkg, ok := stdImportPackage[importPath]; ok {
+ return pkg
+ }
+
+ pkgName, err := importPathToNameGoPathParse(importPath, srcDir)
+ if Debug {
+ log.Printf("importPathToNameGoPathParse(%q, srcDir=%q) = %q, %v", importPath, srcDir, pkgName, err)
+ }
+ if err == nil {
+ return pkgName
+ }
+ return importPathToNameBasic(importPath, srcDir)
+}
+
+// importPathToNameGoPathParse is a faster version of build.Import if
+// the only thing desired is the package name. It uses build.FindOnly
+// to find the directory and then only parses one file in the package,
+// trusting that the files in the directory are consistent.
+func importPathToNameGoPathParse(importPath, srcDir string) (packageName string, err error) {
+ buildPkg, err := build.Import(importPath, srcDir, build.FindOnly)
+ if err != nil {
+ return "", err
+ }
+ d, err := os.Open(buildPkg.Dir)
+ if err != nil {
+ return "", err
+ }
+ names, err := d.Readdirnames(-1)
+ d.Close()
+ if err != nil {
+ return "", err
+ }
+ sort.Strings(names) // to have predictable behavior
+ var lastErr error
+ var nfile int
+ for _, name := range names {
+ if !strings.HasSuffix(name, ".go") {
+ continue
+ }
+ if strings.HasSuffix(name, "_test.go") {
+ continue
+ }
+ nfile++
+ fullFile := filepath.Join(buildPkg.Dir, name)
+
+ fset := token.NewFileSet()
+ f, err := parser.ParseFile(fset, fullFile, nil, parser.PackageClauseOnly)
+ if err != nil {
+ lastErr = err
+ continue
+ }
+ pkgName := f.Name.Name
+ if pkgName == "documentation" {
+ // Special case from go/build.ImportDir, not
+ // handled by ctx.MatchFile.
+ continue
+ }
+ if pkgName == "main" {
+ // Also skip package main, assuming it's a +build ignore generator or example.
+ // Since you can't import a package main anyway, there's no harm here.
+ continue
+ }
+ return pkgName, nil
+ }
+ if lastErr != nil {
+ return "", lastErr
+ }
+ return "", fmt.Errorf("no importable package found in %d Go files", nfile)
+}
+
+var stdImportPackage = map[string]string{} // "net/http" => "http"
+
+func init() {
+ // Nothing in the standard library has a package name not
+ // matching its import base name.
+ for _, pkg := range stdlib {
+ if _, ok := stdImportPackage[pkg]; !ok {
+ stdImportPackage[pkg] = path.Base(pkg)
+ }
}
}
+// Directory-scanning state.
+var (
+ // scanGoRootOnce guards calling scanGoRoot (for $GOROOT)
+ scanGoRootOnce sync.Once
+ // scanGoPathOnce guards calling scanGoPath (for $GOPATH)
+ scanGoPathOnce sync.Once
+
+ // populateIgnoreOnce guards calling populateIgnore
+ populateIgnoreOnce sync.Once
+ ignoredDirs []os.FileInfo
+
+ dirScanMu sync.RWMutex
+ dirScan map[string]*pkg // abs dir path => *pkg
+)
+
type pkg struct {
- importpath string // full pkg import path, e.g. "net/http"
- dir string // absolute file path to pkg directory e.g. "/usr/lib/go/src/fmt"
+ dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
+ importPath string // full pkg import path ("net/http", "foo/bar/vendor/a/b")
+ importPathShort string // vendorless import path ("net/http", "a/b")
}
-var pkgIndexOnce sync.Once
+// byImportPathShortLength sorts by the short import path length, breaking ties on the
+// import string itself.
+type byImportPathShortLength []*pkg
+
+func (s byImportPathShortLength) Len() int { return len(s) }
+func (s byImportPathShortLength) Less(i, j int) bool {
+ vi, vj := s[i].importPathShort, s[j].importPathShort
+ return len(vi) < len(vj) || (len(vi) == len(vj) && vi < vj)
-var pkgIndex struct {
- sync.Mutex
- m map[string][]pkg // shortname => []pkg, e.g "http" => "net/http"
}
+func (s byImportPathShortLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
// gate is a semaphore for limiting concurrency.
type gate chan struct{}
@@ -184,194 +384,512 @@ type gate chan struct{}
func (g gate) enter() { g <- struct{}{} }
func (g gate) leave() { <-g }
-// fsgate protects the OS & filesystem from too much concurrency.
-// Too much disk I/O -> too many threads -> swapping and bad scheduling.
-var fsgate = make(gate, 8)
-
-func loadPkgIndex() {
- pkgIndex.Lock()
- pkgIndex.m = make(map[string][]pkg)
- pkgIndex.Unlock()
+var visitedSymlinks struct {
+ sync.Mutex
+ m map[string]struct{}
+}
- var wg sync.WaitGroup
- for _, path := range build.Default.SrcDirs() {
- fsgate.enter()
- f, err := os.Open(path)
- if err != nil {
- fsgate.leave()
- fmt.Fprint(os.Stderr, err)
+// guarded by populateIgnoreOnce; populates ignoredDirs.
+func populateIgnore() {
+ for _, srcDir := range build.Default.SrcDirs() {
+ if srcDir == filepath.Join(build.Default.GOROOT, "src") {
continue
}
- children, err := f.Readdir(-1)
- f.Close()
- fsgate.leave()
+ populateIgnoredDirs(srcDir)
+ }
+}
+
+// populateIgnoredDirs reads an optional config file at <path>/.goimportsignore
+// of relative directories to ignore when scanning for go files.
+// The provided path is one of the $GOPATH entries with "src" appended.
+func populateIgnoredDirs(path string) {
+ file := filepath.Join(path, ".goimportsignore")
+ slurp, err := ioutil.ReadFile(file)
+ if Debug {
if err != nil {
- fmt.Fprint(os.Stderr, err)
+ log.Print(err)
+ } else {
+ log.Printf("Read %s", file)
+ }
+ }
+ if err != nil {
+ return
+ }
+ bs := bufio.NewScanner(bytes.NewReader(slurp))
+ for bs.Scan() {
+ line := strings.TrimSpace(bs.Text())
+ if line == "" || strings.HasPrefix(line, "#") {
continue
}
- for _, child := range children {
- if child.IsDir() {
- wg.Add(1)
- go func(path, name string) {
- defer wg.Done()
- loadPkg(&wg, path, name)
- }(path, child.Name())
+ full := filepath.Join(path, line)
+ if fi, err := os.Stat(full); err == nil {
+ ignoredDirs = append(ignoredDirs, fi)
+ if Debug {
+ log.Printf("Directory added to ignore list: %s", full)
}
+ } else if Debug {
+ log.Printf("Error statting entry in .goimportsignore: %v", err)
}
}
- wg.Wait()
}
-func loadPkg(wg *sync.WaitGroup, root, pkgrelpath string) {
- importpath := filepath.ToSlash(pkgrelpath)
- dir := filepath.Join(root, importpath)
+func skipDir(fi os.FileInfo) bool {
+ for _, ignoredDir := range ignoredDirs {
+ if os.SameFile(fi, ignoredDir) {
+ return true
+ }
+ }
+ return false
+}
- fsgate.enter()
- defer fsgate.leave()
- pkgDir, err := os.Open(dir)
+// shouldTraverse reports whether the symlink fi should, found in dir,
+// should be followed. It makes sure symlinks were never visited
+// before to avoid symlink loops.
+func shouldTraverse(dir string, fi os.FileInfo) bool {
+ path := filepath.Join(dir, fi.Name())
+ target, err := filepath.EvalSymlinks(path)
if err != nil {
- return
+ if !os.IsNotExist(err) {
+ fmt.Fprintln(os.Stderr, err)
+ }
+ return false
}
- children, err := pkgDir.Readdir(-1)
- pkgDir.Close()
+ ts, err := os.Stat(target)
if err != nil {
- return
+ fmt.Fprintln(os.Stderr, err)
+ return false
+ }
+ if !ts.IsDir() {
+ return false
+ }
+
+ realParent, err := filepath.EvalSymlinks(dir)
+ if err != nil {
+ fmt.Fprint(os.Stderr, err)
+ return false
}
- // hasGo tracks whether a directory actually appears to be a
- // Go source code directory. If $GOPATH == $HOME, and
- // $HOME/src has lots of other large non-Go projects in it,
- // then the calls to importPathToName below can be expensive.
- hasGo := false
- for _, child := range children {
- // Avoid .foo, _foo, and testdata directory trees.
- name := child.Name()
- if name == "" || name[0] == '.' || name[0] == '_' || name == "testdata" {
+ realPath := filepath.Join(realParent, fi.Name())
+ visitedSymlinks.Lock()
+ defer visitedSymlinks.Unlock()
+ if visitedSymlinks.m == nil {
+ visitedSymlinks.m = make(map[string]struct{})
+ }
+ if _, ok := visitedSymlinks.m[realPath]; ok {
+ return false
+ }
+ visitedSymlinks.m[realPath] = struct{}{}
+ return true
+}
+
+var testHookScanDir = func(dir string) {}
+
+var scanGoRootDone = make(chan struct{}) // closed when scanGoRoot is done
+
+func scanGoRoot() {
+ go func() {
+ scanGoDirs(true)
+ close(scanGoRootDone)
+ }()
+}
+
+func scanGoPath() { scanGoDirs(false) }
+
+func scanGoDirs(goRoot bool) {
+ if Debug {
+ which := "$GOROOT"
+ if !goRoot {
+ which = "$GOPATH"
+ }
+ log.Printf("scanning " + which)
+ defer log.Printf("scanned " + which)
+ }
+ dirScanMu.Lock()
+ if dirScan == nil {
+ dirScan = make(map[string]*pkg)
+ }
+ dirScanMu.Unlock()
+
+ for _, srcDir := range build.Default.SrcDirs() {
+ isGoroot := srcDir == filepath.Join(build.Default.GOROOT, "src")
+ if isGoroot != goRoot {
continue
}
- if strings.HasSuffix(name, ".go") {
- hasGo = true
+ testHookScanDir(srcDir)
+ walkFn := func(path string, typ os.FileMode) error {
+ dir := filepath.Dir(path)
+ if typ.IsRegular() {
+ if dir == srcDir {
+ // Doesn't make sense to have regular files
+ // directly in your $GOPATH/src or $GOROOT/src.
+ return nil
+ }
+ if !strings.HasSuffix(path, ".go") {
+ return nil
+ }
+ dirScanMu.Lock()
+ if _, dup := dirScan[dir]; !dup {
+ importpath := filepath.ToSlash(dir[len(srcDir)+len("/"):])
+ dirScan[dir] = &pkg{
+ importPath: importpath,
+ importPathShort: vendorlessImportPath(importpath),
+ dir: dir,
+ }
+ }
+ dirScanMu.Unlock()
+ return nil
+ }
+ if typ == os.ModeDir {
+ base := filepath.Base(path)
+ if base == "" || base[0] == '.' || base[0] == '_' ||
+ base == "testdata" || base == "node_modules" {
+ return filepath.SkipDir
+ }
+ fi, err := os.Lstat(path)
+ if err == nil && skipDir(fi) {
+ if Debug {
+ log.Printf("skipping directory %q under %s", fi.Name(), dir)
+ }
+ return filepath.SkipDir
+ }
+ return nil
+ }
+ if typ == os.ModeSymlink {
+ base := filepath.Base(path)
+ if strings.HasPrefix(base, ".#") {
+ // Emacs noise.
+ return nil
+ }
+ fi, err := os.Lstat(path)
+ if err != nil {
+ // Just ignore it.
+ return nil
+ }
+ if shouldTraverse(dir, fi) {
+ return traverseLink
+ }
+ }
+ return nil
}
- if child.IsDir() {
- wg.Add(1)
- go func(root, name string) {
- defer wg.Done()
- loadPkg(wg, root, name)
- }(root, filepath.Join(importpath, name))
+ if err := fastWalk(srcDir, walkFn); err != nil {
+ log.Printf("goimports: scanning directory %v: %v", srcDir, err)
}
}
- if hasGo {
- shortName := importPathToName(importpath)
- pkgIndex.Lock()
- pkgIndex.m[shortName] = append(pkgIndex.m[shortName], pkg{
- importpath: importpath,
- dir: dir,
- })
- pkgIndex.Unlock()
- }
+}
+// vendorlessImportPath returns the devendorized version of the provided import path.
+// e.g. "foo/bar/vendor/a/b" => "a/b"
+func vendorlessImportPath(ipath string) string {
+ // Devendorize for use in import statement.
+ if i := strings.LastIndex(ipath, "/vendor/"); i >= 0 {
+ return ipath[i+len("/vendor/"):]
+ }
+ if strings.HasPrefix(ipath, "vendor/") {
+ return ipath[len("vendor/"):]
+ }
+ return ipath
}
-// loadExports returns a list exports for a package.
-var loadExports = loadExportsGoPath
+// loadExports returns the set of exported symbols in the package at dir.
+// It returns nil on error or if the package name in dir does not match expectPackage.
+var loadExports func(expectPackage, dir string) map[string]bool = loadExportsGoPath
-func loadExportsGoPath(dir string) map[string]bool {
+func loadExportsGoPath(expectPackage, dir string) map[string]bool {
+ if Debug {
+ log.Printf("loading exports in dir %s (seeking package %s)", dir, expectPackage)
+ }
exports := make(map[string]bool)
- buildPkg, err := build.ImportDir(dir, 0)
- if err != nil {
- if strings.Contains(err.Error(), "no buildable Go source files in") {
- return nil
+
+ ctx := build.Default
+
+ // ReadDir is like ioutil.ReadDir, but only returns *.go files
+ // and filters out _test.go files since they're not relevant
+ // and only slow things down.
+ ctx.ReadDir = func(dir string) (notTests []os.FileInfo, err error) {
+ all, err := ioutil.ReadDir(dir)
+ if err != nil {
+ return nil, err
}
- fmt.Fprintf(os.Stderr, "could not import %q: %v\n", dir, err)
+ notTests = all[:0]
+ for _, fi := range all {
+ name := fi.Name()
+ if strings.HasSuffix(name, ".go") && !strings.HasSuffix(name, "_test.go") {
+ notTests = append(notTests, fi)
+ }
+ }
+ return notTests, nil
+ }
+
+ files, err := ctx.ReadDir(dir)
+ if err != nil {
+ log.Print(err)
return nil
}
+
fset := token.NewFileSet()
- for _, files := range [...][]string{buildPkg.GoFiles, buildPkg.CgoFiles} {
- for _, file := range files {
- f, err := parser.ParseFile(fset, filepath.Join(dir, file), nil, 0)
- if err != nil {
- fmt.Fprintf(os.Stderr, "could not parse %q: %v\n", file, err)
- continue
+
+ for _, fi := range files {
+ match, err := ctx.MatchFile(dir, fi.Name())
+ if err != nil || !match {
+ continue
+ }
+ fullFile := filepath.Join(dir, fi.Name())
+ f, err := parser.ParseFile(fset, fullFile, nil, 0)
+ if err != nil {
+ if Debug {
+ log.Printf("Parsing %s: %v", fullFile, err)
}
- for name := range f.Scope.Objects {
- if ast.IsExported(name) {
- exports[name] = true
- }
+ return nil
+ }
+ pkgName := f.Name.Name
+ if pkgName == "documentation" {
+ // Special case from go/build.ImportDir, not
+ // handled by ctx.MatchFile.
+ continue
+ }
+ if pkgName != expectPackage {
+ if Debug {
+ log.Printf("scan of dir %v is not expected package %v (actually %v)", dir, expectPackage, pkgName)
+ }
+ return nil
+ }
+ for name := range f.Scope.Objects {
+ if ast.IsExported(name) {
+ exports[name] = true
}
}
}
+
+ if Debug {
+ exportList := make([]string, 0, len(exports))
+ for k := range exports {
+ exportList = append(exportList, k)
+ }
+ sort.Strings(exportList)
+ log.Printf("loaded exports in dir %v (package %v): %v", dir, expectPackage, strings.Join(exportList, ", "))
+ }
return exports
}
// findImport searches for a package with the given symbols.
-// If no package is found, findImport returns "".
-// Declared as a variable rather than a function so goimports can be easily
-// extended by adding a file with an init function.
-var findImport = findImportGoPath
+// If no package is found, findImport returns ("", false, nil)
+//
+// This is declared as a variable rather than a function so goimports
+// can be easily extended by adding a file with an init function.
+//
+// The rename value tells goimports whether to use the package name as
+// a local qualifier in an import. For example, if findImports("pkg",
+// "X") returns ("foo/bar", rename=true), then goimports adds the
+// import line:
+// import pkg "foo/bar"
+// to satisfy uses of pkg.X in the file.
+var findImport func(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) = findImportGoPath
+
+// findImportGoPath is the normal implementation of findImport.
+// (Some companies have their own internally.)
+func findImportGoPath(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) {
+ if inTests {
+ testMu.RLock()
+ defer testMu.RUnlock()
+ }
-func findImportGoPath(pkgName string, symbols map[string]bool, filename string) (string, bool, error) {
// Fast path for the standard library.
// In the common case we hopefully never have to scan the GOPATH, which can
// be slow with moving disks.
if pkg, rename, ok := findImportStdlib(pkgName, symbols); ok {
return pkg, rename, nil
}
+ if pkgName == "rand" && symbols["Read"] {
+ // Special-case rand.Read.
+ //
+ // If findImportStdlib didn't find it above, don't go
+ // searching for it, lest it find and pick math/rand
+ // in GOROOT (new as of Go 1.6)
+ //
+ // crypto/rand is the safer choice.
+ return "", false, nil
+ }
// TODO(sameer): look at the import lines for other Go files in the
// local directory, since the user is likely to import the same packages
// in the current Go file. Return rename=true when the other Go files
// use a renamed package that's also used in the current file.
- pkgIndexOnce.Do(loadPkgIndex)
+ // Read all the $GOPATH/src/.goimportsignore files before scanning directories.
+ populateIgnoreOnce.Do(populateIgnore)
+
+ // Start scanning the $GOROOT asynchronously, then run the
+ // GOPATH scan synchronously if needed, and then wait for the
+ // $GOROOT to finish.
+ //
+ // TODO(bradfitz): run each $GOPATH entry async. But nobody
+ // really has more than one anyway, so low priority.
+ scanGoRootOnce.Do(scanGoRoot) // async
+ if !fileInDir(filename, build.Default.GOROOT) {
+ scanGoPathOnce.Do(scanGoPath) // blocking
+ }
+ <-scanGoRootDone
- // Collect exports for packages with matching names.
- var (
- wg sync.WaitGroup
- mu sync.Mutex
- shortest string
- )
- pkgIndex.Lock()
- for _, pkg := range pkgIndex.m[pkgName] {
- if !canUse(filename, pkg.dir) {
- continue
+ // Find candidate packages, looking only at their directory names first.
+ var candidates []*pkg
+ for _, pkg := range dirScan {
+ if pkgIsCandidate(filename, pkgName, pkg) {
+ candidates = append(candidates, pkg)
+ }
+ }
+
+ // Sort the candidates by their import package length,
+ // assuming that shorter package names are better than long
+ // ones. Note that this sorts by the de-vendored name, so
+ // there's no "penalty" for vendoring.
+ sort.Sort(byImportPathShortLength(candidates))
+ if Debug {
+ for i, pkg := range candidates {
+ log.Printf("%s candidate %d/%d: %v", pkgName, i+1, len(candidates), pkg.importPathShort)
}
- wg.Add(1)
- go func(importpath, dir string) {
- defer wg.Done()
- exports := loadExports(dir)
- if exports == nil {
+ }
+
+ // Collect exports for packages with matching names.
+
+ done := make(chan struct{}) // closed when we find the answer
+ defer close(done)
+
+ rescv := make([]chan *pkg, len(candidates))
+ for i := range candidates {
+ rescv[i] = make(chan *pkg)
+ }
+ const maxConcurrentPackageImport = 4
+ loadExportsSem := make(chan struct{}, maxConcurrentPackageImport)
+
+ go func() {
+ for i, pkg := range candidates {
+ select {
+ case loadExportsSem <- struct{}{}:
+ select {
+ case <-done:
+ default:
+ }
+ case <-done:
return
}
- // If it doesn't have the right symbols, stop.
- for symbol := range symbols {
- if !exports[symbol] {
- return
+ pkg := pkg
+ resc := rescv[i]
+ go func() {
+ if inTests {
+ testMu.RLock()
+ defer testMu.RUnlock()
}
- }
+ defer func() { <-loadExportsSem }()
+ exports := loadExports(pkgName, pkg.dir)
+
+ // If it doesn't have the right
+ // symbols, send nil to mean no match.
+ for symbol := range symbols {
+ if !exports[symbol] {
+ pkg = nil
+ break
+ }
+ }
+ select {
+ case resc <- pkg:
+ case <-done:
+ }
+ }()
+ }
+ }()
+ for _, resc := range rescv {
+ pkg := <-resc
+ if pkg == nil {
+ continue
+ }
+ // If the package name in the source doesn't match the import path's base,
+ // return true so the rewriter adds a name (import foo "github.com/bar/go-foo")
+ needsRename := path.Base(pkg.importPath) != pkgName
+ return pkg.importPathShort, needsRename, nil
+ }
+ return "", false, nil
+}
- // Devendorize for use in import statement.
- if i := strings.LastIndex(importpath, "/vendor/"); i >= 0 {
- importpath = importpath[i+len("/vendor/"):]
- } else if strings.HasPrefix(importpath, "vendor/") {
- importpath = importpath[len("vendor/"):]
- }
+// pkgIsCandidate reports whether pkg is a candidate for satisfying the
+// finding which package pkgIdent in the file named by filename is trying
+// to refer to.
+//
+// This check is purely lexical and is meant to be as fast as possible
+// because it's run over all $GOPATH directories to filter out poor
+// candidates in order to limit the CPU and I/O later parsing the
+// exports in candidate packages.
+//
+// filename is the file being formatted.
+// pkgIdent is the package being searched for, like "client" (if
+// searching for "client.New")
+func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool {
+ // Check "internal" and "vendor" visibility:
+ if !canUse(filename, pkg.dir) {
+ return false
+ }
- // Save as the answer.
- // If there are multiple candidates, the shortest wins,
- // to prefer "bytes" over "github.com/foo/bytes".
- mu.Lock()
- if shortest == "" || len(importpath) < len(shortest) || len(importpath) == len(shortest) && importpath < shortest {
- shortest = importpath
- }
- mu.Unlock()
- }(pkg.importpath, pkg.dir)
+ // Speed optimization to minimize disk I/O:
+ // the last two components on disk must contain the
+ // package name somewhere.
+ //
+ // This permits mismatch naming like directory
+ // "go-foo" being package "foo", or "pkg.v3" being "pkg",
+ // or directory "google.golang.org/api/cloudbilling/v1"
+ // being package "cloudbilling", but doesn't
+ // permit a directory "foo" to be package
+ // "bar", which is strongly discouraged
+ // anyway. There's no reason goimports needs
+ // to be slow just to accomodate that.
+ lastTwo := lastTwoComponents(pkg.importPathShort)
+ if strings.Contains(lastTwo, pkgIdent) {
+ return true
+ }
+ if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) {
+ lastTwo = lowerASCIIAndRemoveHyphen(lastTwo)
+ if strings.Contains(lastTwo, pkgIdent) {
+ return true
+ }
}
- pkgIndex.Unlock()
- wg.Wait()
- return shortest, false, nil
+ return false
+}
+
+func hasHyphenOrUpperASCII(s string) bool {
+ for i := 0; i < len(s); i++ {
+ b := s[i]
+ if b == '-' || ('A' <= b && b <= 'Z') {
+ return true
+ }
+ }
+ return false
}
+func lowerASCIIAndRemoveHyphen(s string) (ret string) {
+ buf := make([]byte, 0, len(s))
+ for i := 0; i < len(s); i++ {
+ b := s[i]
+ switch {
+ case b == '-':
+ continue
+ case 'A' <= b && b <= 'Z':
+ buf = append(buf, b+('a'-'A'))
+ default:
+ buf = append(buf, b)
+ }
+ }
+ return string(buf)
+}
+
+// canUse reports whether the package in dir is usable from filename,
+// respecting the Go "internal" and "vendor" visibility rules.
func canUse(filename, dir string) bool {
+ // Fast path check, before any allocations. If it doesn't contain vendor
+ // or internal, it's not tricky:
+ // Note that this can false-negative on directories like "notinternal",
+ // but we check it correctly below. This is just a fast path.
+ if !strings.Contains(dir, "vendor") && !strings.Contains(dir, "internal") {
+ return true
+ }
+
dirSlash := filepath.ToSlash(dir)
if !strings.Contains(dirSlash, "/vendor/") && !strings.Contains(dirSlash, "/internal/") && !strings.HasSuffix(dirSlash, "/internal") {
return true
@@ -382,11 +900,15 @@ func canUse(filename, dir string) bool {
// or bar/vendor or bar/internal.
// After stripping all the leading ../, the only okay place to see vendor or internal
// is at the very beginning of the path.
- abs, err := filepath.Abs(filename)
+ absfile, err := filepath.Abs(filename)
if err != nil {
return false
}
- rel, err := filepath.Rel(abs, dir)
+ absdir, err := filepath.Abs(dir)
+ if err != nil {
+ return false
+ }
+ rel, err := filepath.Rel(absfile, absdir)
if err != nil {
return false
}
@@ -397,6 +919,21 @@ func canUse(filename, dir string) bool {
return !strings.Contains(relSlash, "/vendor/") && !strings.Contains(relSlash, "/internal/") && !strings.HasSuffix(relSlash, "/internal")
}
+// lastTwoComponents returns at most the last two path components
+// of v, using either / or \ as the path separator.
+func lastTwoComponents(v string) string {
+ nslash := 0
+ for i := len(v) - 1; i >= 0; i-- {
+ if v[i] == '/' || v[i] == '\\' {
+ nslash++
+ if nslash == 2 {
+ return v[i:]
+ }
+ }
+ }
+ return v
+}
+
type visitFn func(node ast.Node) ast.Visitor
func (fn visitFn) Visit(node ast.Node) ast.Visitor {
@@ -405,8 +942,12 @@ func (fn visitFn) Visit(node ast.Node) ast.Visitor {
func findImportStdlib(shortPkg string, symbols map[string]bool) (importPath string, rename, ok bool) {
for symbol := range symbols {
- path := stdlib[shortPkg+"."+symbol]
+ key := shortPkg + "." + symbol
+ path := stdlib[key]
if path == "" {
+ if key == "rand.Read" {
+ continue
+ }
return "", false, false
}
if importPath != "" && importPath != path {
@@ -415,5 +956,20 @@ func findImportStdlib(shortPkg string, symbols map[string]bool) (importPath stri
}
importPath = path
}
+ if importPath == "" && shortPkg == "rand" && symbols["Read"] {
+ return "crypto/rand", false, true
+ }
return importPath, false, importPath != ""
}
+
+// fileInDir reports whether the provided file path looks like
+// it's in dir. (without hitting the filesystem)
+func fileInDir(file, dir string) bool {
+ rest := strings.TrimPrefix(file, dir)
+ if len(rest) == len(file) {
+ // dir is not a prefix of file.
+ return false
+ }
+ // Check for boundary: either nothing (file == dir), or a slash.
+ return len(rest) == 0 || rest[0] == '/' || rest[0] == '\\'
+}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/imports.go b/Godeps/_workspace/src/golang.org/x/tools/imports/imports.go
index 099684ae6..7c6c1b653 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/imports/imports.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/imports.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:generate go run mkstdlib.go
+
// Package imports implements a Go pretty-printer (like package "go/format")
// that also adds or removes import statements as necessary.
package imports
@@ -31,6 +33,8 @@ type Options struct {
Comments bool // Print comments (true if nil *Options provided)
TabIndent bool // Use tabs for indent (true if nil *Options provided)
TabWidth int // Tab width (8 if nil *Options provided)
+
+ FormatOnly bool // Disable the insertion and deletion of imports
}
// Process formats and adjusts imports for the provided file.
@@ -50,9 +54,11 @@ func Process(filename string, src []byte, opt *Options) ([]byte, error) {
return nil, err
}
- _, err = fixImports(fileSet, file, filename)
- if err != nil {
- return nil, err
+ if !opt.FormatOnly {
+ _, err = fixImports(fileSet, file, filename)
+ if err != nil {
+ return nil, err
+ }
}
sortImports(fileSet, file)
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/mkstdlib.go b/Godeps/_workspace/src/golang.org/x/tools/imports/mkstdlib.go
index e2dca7600..1e559e9f5 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/imports/mkstdlib.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/mkstdlib.go
@@ -11,6 +11,7 @@ import (
"fmt"
"go/format"
"io"
+ "io/ioutil"
"log"
"os"
"path"
@@ -49,6 +50,8 @@ func main() {
mustOpen(api("go1.3.txt")),
mustOpen(api("go1.4.txt")),
mustOpen(api("go1.5.txt")),
+ mustOpen(api("go1.6.txt")),
+ mustOpen(api("go1.7.txt")),
)
sc := bufio.NewScanner(f)
fullImport := map[string]string{} // "zip.NewReader" => "archive/zip"
@@ -84,10 +87,17 @@ func main() {
outf("\t%q: %q,\n", key, fullImport[key])
}
}
+ outf("\n")
+ for _, sym := range [...]string{"Alignof", "ArbitraryType", "Offsetof", "Pointer", "Sizeof"} {
+ outf("\t%q: %q,\n", "unsafe."+sym, "unsafe")
+ }
outf("}\n")
fmtbuf, err := format.Source(buf.Bytes())
if err != nil {
log.Fatal(err)
}
- os.Stdout.Write(fmtbuf)
+ err = ioutil.WriteFile("zstdlib.go", fmtbuf, 0666)
+ if err != nil {
+ log.Fatal(err)
+ }
}
diff --git a/Godeps/_workspace/src/golang.org/x/tools/imports/zstdlib.go b/Godeps/_workspace/src/golang.org/x/tools/imports/zstdlib.go
index 39eb3c74b..28835da03 100644
--- a/Godeps/_workspace/src/golang.org/x/tools/imports/zstdlib.go
+++ b/Godeps/_workspace/src/golang.org/x/tools/imports/zstdlib.go
@@ -16,6 +16,10 @@ var stdlib = map[string]string{
"ascii85.NewDecoder": "encoding/ascii85",
"ascii85.NewEncoder": "encoding/ascii85",
"asn1.BitString": "encoding/asn1",
+ "asn1.ClassApplication": "encoding/asn1",
+ "asn1.ClassContextSpecific": "encoding/asn1",
+ "asn1.ClassPrivate": "encoding/asn1",
+ "asn1.ClassUniversal": "encoding/asn1",
"asn1.Enumerated": "encoding/asn1",
"asn1.Flag": "encoding/asn1",
"asn1.Marshal": "encoding/asn1",
@@ -24,6 +28,21 @@ var stdlib = map[string]string{
"asn1.RawValue": "encoding/asn1",
"asn1.StructuralError": "encoding/asn1",
"asn1.SyntaxError": "encoding/asn1",
+ "asn1.TagBitString": "encoding/asn1",
+ "asn1.TagBoolean": "encoding/asn1",
+ "asn1.TagEnum": "encoding/asn1",
+ "asn1.TagGeneralString": "encoding/asn1",
+ "asn1.TagGeneralizedTime": "encoding/asn1",
+ "asn1.TagIA5String": "encoding/asn1",
+ "asn1.TagInteger": "encoding/asn1",
+ "asn1.TagOID": "encoding/asn1",
+ "asn1.TagOctetString": "encoding/asn1",
+ "asn1.TagPrintableString": "encoding/asn1",
+ "asn1.TagSequence": "encoding/asn1",
+ "asn1.TagSet": "encoding/asn1",
+ "asn1.TagT61String": "encoding/asn1",
+ "asn1.TagUTCTime": "encoding/asn1",
+ "asn1.TagUTF8String": "encoding/asn1",
"asn1.Unmarshal": "encoding/asn1",
"asn1.UnmarshalWithParams": "encoding/asn1",
"ast.ArrayType": "go/ast",
@@ -212,6 +231,7 @@ var stdlib = map[string]string{
"binary.Write": "encoding/binary",
"bufio.ErrAdvanceTooFar": "bufio",
"bufio.ErrBufferFull": "bufio",
+ "bufio.ErrFinalToken": "bufio",
"bufio.ErrInvalidUnreadByte": "bufio",
"bufio.ErrInvalidUnreadRune": "bufio",
"bufio.ErrNegativeAdvance": "bufio",
@@ -238,6 +258,7 @@ var stdlib = map[string]string{
"build.Context": "go/build",
"build.Default": "go/build",
"build.FindOnly": "go/build",
+ "build.IgnoreVendor": "go/build",
"build.Import": "go/build",
"build.ImportComment": "go/build",
"build.ImportDir": "go/build",
@@ -250,6 +271,8 @@ var stdlib = map[string]string{
"bytes.Buffer": "bytes",
"bytes.Compare": "bytes",
"bytes.Contains": "bytes",
+ "bytes.ContainsAny": "bytes",
+ "bytes.ContainsRune": "bytes",
"bytes.Count": "bytes",
"bytes.Equal": "bytes",
"bytes.EqualFold": "bytes",
@@ -363,6 +386,8 @@ var stdlib = map[string]string{
"color.NRGBA64": "image/color",
"color.NRGBA64Model": "image/color",
"color.NRGBAModel": "image/color",
+ "color.NYCbCrA": "image/color",
+ "color.NYCbCrAModel": "image/color",
"color.Opaque": "image/color",
"color.Palette": "image/color",
"color.RGBA": "image/color",
@@ -406,9 +431,22 @@ var stdlib = map[string]string{
"constant.Sign": "go/constant",
"constant.String": "go/constant",
"constant.StringVal": "go/constant",
+ "constant.ToComplex": "go/constant",
+ "constant.ToFloat": "go/constant",
+ "constant.ToInt": "go/constant",
"constant.Uint64Val": "go/constant",
"constant.UnaryOp": "go/constant",
"constant.Unknown": "go/constant",
+ "context.Background": "context",
+ "context.CancelFunc": "context",
+ "context.Canceled": "context",
+ "context.Context": "context",
+ "context.DeadlineExceeded": "context",
+ "context.TODO": "context",
+ "context.WithCancel": "context",
+ "context.WithDeadline": "context",
+ "context.WithTimeout": "context",
+ "context.WithValue": "context",
"cookiejar.Jar": "net/http/cookiejar",
"cookiejar.New": "net/http/cookiejar",
"cookiejar.Options": "net/http/cookiejar",
@@ -473,6 +511,7 @@ var stdlib = map[string]string{
"debug.SetMaxStack": "runtime/debug",
"debug.SetMaxThreads": "runtime/debug",
"debug.SetPanicOnFault": "runtime/debug",
+ "debug.SetTraceback": "runtime/debug",
"debug.Stack": "runtime/debug",
"debug.WriteHeapDump": "runtime/debug",
"des.BlockSize": "crypto/des",
@@ -634,6 +673,7 @@ var stdlib = map[string]string{
"dwarf.ClassReferenceSig": "debug/dwarf",
"dwarf.ClassString": "debug/dwarf",
"dwarf.ClassStringAlt": "debug/dwarf",
+ "dwarf.ClassUnknown": "debug/dwarf",
"dwarf.CommonType": "debug/dwarf",
"dwarf.ComplexType": "debug/dwarf",
"dwarf.Data": "debug/dwarf",
@@ -732,7 +772,15 @@ var stdlib = map[string]string{
"ecdsa.Sign": "crypto/ecdsa",
"ecdsa.Verify": "crypto/ecdsa",
"elf.ARM_MAGIC_TRAMP_NUMBER": "debug/elf",
+ "elf.COMPRESS_HIOS": "debug/elf",
+ "elf.COMPRESS_HIPROC": "debug/elf",
+ "elf.COMPRESS_LOOS": "debug/elf",
+ "elf.COMPRESS_LOPROC": "debug/elf",
+ "elf.COMPRESS_ZLIB": "debug/elf",
+ "elf.Chdr32": "debug/elf",
+ "elf.Chdr64": "debug/elf",
"elf.Class": "debug/elf",
+ "elf.CompressionType": "debug/elf",
"elf.DF_BIND_NOW": "debug/elf",
"elf.DF_ORIGIN": "debug/elf",
"elf.DF_STATIC_TLS": "debug/elf",
@@ -944,6 +992,68 @@ var stdlib = map[string]string{
"elf.R_386_TLS_LE_32": "debug/elf",
"elf.R_386_TLS_TPOFF": "debug/elf",
"elf.R_386_TLS_TPOFF32": "debug/elf",
+ "elf.R_390": "debug/elf",
+ "elf.R_390_12": "debug/elf",
+ "elf.R_390_16": "debug/elf",
+ "elf.R_390_20": "debug/elf",
+ "elf.R_390_32": "debug/elf",
+ "elf.R_390_64": "debug/elf",
+ "elf.R_390_8": "debug/elf",
+ "elf.R_390_COPY": "debug/elf",
+ "elf.R_390_GLOB_DAT": "debug/elf",
+ "elf.R_390_GOT12": "debug/elf",
+ "elf.R_390_GOT16": "debug/elf",
+ "elf.R_390_GOT20": "debug/elf",
+ "elf.R_390_GOT32": "debug/elf",
+ "elf.R_390_GOT64": "debug/elf",
+ "elf.R_390_GOTENT": "debug/elf",
+ "elf.R_390_GOTOFF": "debug/elf",
+ "elf.R_390_GOTOFF16": "debug/elf",
+ "elf.R_390_GOTOFF64": "debug/elf",
+ "elf.R_390_GOTPC": "debug/elf",
+ "elf.R_390_GOTPCDBL": "debug/elf",
+ "elf.R_390_GOTPLT12": "debug/elf",
+ "elf.R_390_GOTPLT16": "debug/elf",
+ "elf.R_390_GOTPLT20": "debug/elf",
+ "elf.R_390_GOTPLT32": "debug/elf",
+ "elf.R_390_GOTPLT64": "debug/elf",
+ "elf.R_390_GOTPLTENT": "debug/elf",
+ "elf.R_390_GOTPLTOFF16": "debug/elf",
+ "elf.R_390_GOTPLTOFF32": "debug/elf",
+ "elf.R_390_GOTPLTOFF64": "debug/elf",
+ "elf.R_390_JMP_SLOT": "debug/elf",
+ "elf.R_390_NONE": "debug/elf",
+ "elf.R_390_PC16": "debug/elf",
+ "elf.R_390_PC16DBL": "debug/elf",
+ "elf.R_390_PC32": "debug/elf",
+ "elf.R_390_PC32DBL": "debug/elf",
+ "elf.R_390_PC64": "debug/elf",
+ "elf.R_390_PLT16DBL": "debug/elf",
+ "elf.R_390_PLT32": "debug/elf",
+ "elf.R_390_PLT32DBL": "debug/elf",
+ "elf.R_390_PLT64": "debug/elf",
+ "elf.R_390_RELATIVE": "debug/elf",
+ "elf.R_390_TLS_DTPMOD": "debug/elf",
+ "elf.R_390_TLS_DTPOFF": "debug/elf",
+ "elf.R_390_TLS_GD32": "debug/elf",
+ "elf.R_390_TLS_GD64": "debug/elf",
+ "elf.R_390_TLS_GDCALL": "debug/elf",
+ "elf.R_390_TLS_GOTIE12": "debug/elf",
+ "elf.R_390_TLS_GOTIE20": "debug/elf",
+ "elf.R_390_TLS_GOTIE32": "debug/elf",
+ "elf.R_390_TLS_GOTIE64": "debug/elf",
+ "elf.R_390_TLS_IE32": "debug/elf",
+ "elf.R_390_TLS_IE64": "debug/elf",
+ "elf.R_390_TLS_IEENT": "debug/elf",
+ "elf.R_390_TLS_LDCALL": "debug/elf",
+ "elf.R_390_TLS_LDM32": "debug/elf",
+ "elf.R_390_TLS_LDM64": "debug/elf",
+ "elf.R_390_TLS_LDO32": "debug/elf",
+ "elf.R_390_TLS_LDO64": "debug/elf",
+ "elf.R_390_TLS_LE32": "debug/elf",
+ "elf.R_390_TLS_LE64": "debug/elf",
+ "elf.R_390_TLS_LOAD": "debug/elf",
+ "elf.R_390_TLS_TPOFF": "debug/elf",
"elf.R_AARCH64": "debug/elf",
"elf.R_AARCH64_ABS16": "debug/elf",
"elf.R_AARCH64_ABS32": "debug/elf",
@@ -1129,6 +1239,55 @@ var stdlib = map[string]string{
"elf.R_ARM_XPC25": "debug/elf",
"elf.R_INFO": "debug/elf",
"elf.R_INFO32": "debug/elf",
+ "elf.R_MIPS": "debug/elf",
+ "elf.R_MIPS_16": "debug/elf",
+ "elf.R_MIPS_26": "debug/elf",
+ "elf.R_MIPS_32": "debug/elf",
+ "elf.R_MIPS_64": "debug/elf",
+ "elf.R_MIPS_ADD_IMMEDIATE": "debug/elf",
+ "elf.R_MIPS_CALL16": "debug/elf",
+ "elf.R_MIPS_CALL_HI16": "debug/elf",
+ "elf.R_MIPS_CALL_LO16": "debug/elf",
+ "elf.R_MIPS_DELETE": "debug/elf",
+ "elf.R_MIPS_GOT16": "debug/elf",
+ "elf.R_MIPS_GOT_DISP": "debug/elf",
+ "elf.R_MIPS_GOT_HI16": "debug/elf",
+ "elf.R_MIPS_GOT_LO16": "debug/elf",
+ "elf.R_MIPS_GOT_OFST": "debug/elf",
+ "elf.R_MIPS_GOT_PAGE": "debug/elf",
+ "elf.R_MIPS_GPREL16": "debug/elf",
+ "elf.R_MIPS_GPREL32": "debug/elf",
+ "elf.R_MIPS_HI16": "debug/elf",
+ "elf.R_MIPS_HIGHER": "debug/elf",
+ "elf.R_MIPS_HIGHEST": "debug/elf",
+ "elf.R_MIPS_INSERT_A": "debug/elf",
+ "elf.R_MIPS_INSERT_B": "debug/elf",
+ "elf.R_MIPS_JALR": "debug/elf",
+ "elf.R_MIPS_LITERAL": "debug/elf",
+ "elf.R_MIPS_LO16": "debug/elf",
+ "elf.R_MIPS_NONE": "debug/elf",
+ "elf.R_MIPS_PC16": "debug/elf",
+ "elf.R_MIPS_PJUMP": "debug/elf",
+ "elf.R_MIPS_REL16": "debug/elf",
+ "elf.R_MIPS_REL32": "debug/elf",
+ "elf.R_MIPS_RELGOT": "debug/elf",
+ "elf.R_MIPS_SCN_DISP": "debug/elf",
+ "elf.R_MIPS_SHIFT5": "debug/elf",
+ "elf.R_MIPS_SHIFT6": "debug/elf",
+ "elf.R_MIPS_SUB": "debug/elf",
+ "elf.R_MIPS_TLS_DTPMOD32": "debug/elf",
+ "elf.R_MIPS_TLS_DTPMOD64": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL32": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL64": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL_HI16": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL_LO16": "debug/elf",
+ "elf.R_MIPS_TLS_GD": "debug/elf",
+ "elf.R_MIPS_TLS_GOTTPREL": "debug/elf",
+ "elf.R_MIPS_TLS_LDM": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL32": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL64": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL_HI16": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL_LO16": "debug/elf",
"elf.R_PPC": "debug/elf",
"elf.R_PPC64": "debug/elf",
"elf.R_PPC64_ADDR14": "debug/elf",
@@ -1382,6 +1541,7 @@ var stdlib = map[string]string{
"elf.Rela32": "debug/elf",
"elf.Rela64": "debug/elf",
"elf.SHF_ALLOC": "debug/elf",
+ "elf.SHF_COMPRESSED": "debug/elf",
"elf.SHF_EXECINSTR": "debug/elf",
"elf.SHF_GROUP": "debug/elf",
"elf.SHF_INFO_LINK": "debug/elf",
@@ -1491,6 +1651,7 @@ var stdlib = map[string]string{
"errors.New": "errors",
"exec.Cmd": "os/exec",
"exec.Command": "os/exec",
+ "exec.CommandContext": "os/exec",
"exec.ErrNotFound": "os/exec",
"exec.Error": "os/exec",
"exec.ExitError": "os/exec",
@@ -1580,6 +1741,7 @@ var stdlib = map[string]string{
"flate.BestSpeed": "compress/flate",
"flate.CorruptInputError": "compress/flate",
"flate.DefaultCompression": "compress/flate",
+ "flate.HuffmanOnly": "compress/flate",
"flate.InternalError": "compress/flate",
"flate.NewReader": "compress/flate",
"flate.NewReaderDict": "compress/flate",
@@ -1714,7 +1876,9 @@ var stdlib = map[string]string{
"http.ErrNotMultipart": "net/http",
"http.ErrNotSupported": "net/http",
"http.ErrShortBody": "net/http",
+ "http.ErrSkipAltProtocol": "net/http",
"http.ErrUnexpectedTrailer": "net/http",
+ "http.ErrUseLastResponse": "net/http",
"http.ErrWriteAfterFlush": "net/http",
"http.Error": "net/http",
"http.File": "net/http",
@@ -1731,7 +1895,17 @@ var stdlib = map[string]string{
"http.Hijacker": "net/http",
"http.ListenAndServe": "net/http",
"http.ListenAndServeTLS": "net/http",
+ "http.LocalAddrContextKey": "net/http",
"http.MaxBytesReader": "net/http",
+ "http.MethodConnect": "net/http",
+ "http.MethodDelete": "net/http",
+ "http.MethodGet": "net/http",
+ "http.MethodHead": "net/http",
+ "http.MethodOptions": "net/http",
+ "http.MethodPatch": "net/http",
+ "http.MethodPost": "net/http",
+ "http.MethodPut": "net/http",
+ "http.MethodTrace": "net/http",
"http.NewFileTransport": "net/http",
"http.NewRequest": "net/http",
"http.NewServeMux": "net/http",
@@ -1757,6 +1931,7 @@ var stdlib = map[string]string{
"http.ServeFile": "net/http",
"http.ServeMux": "net/http",
"http.Server": "net/http",
+ "http.ServerContextKey": "net/http",
"http.SetCookie": "net/http",
"http.StateActive": "net/http",
"http.StateClosed": "net/http",
@@ -1764,34 +1939,47 @@ var stdlib = map[string]string{
"http.StateIdle": "net/http",
"http.StateNew": "net/http",
"http.StatusAccepted": "net/http",
+ "http.StatusAlreadyReported": "net/http",
"http.StatusBadGateway": "net/http",
"http.StatusBadRequest": "net/http",
"http.StatusConflict": "net/http",
"http.StatusContinue": "net/http",
"http.StatusCreated": "net/http",
"http.StatusExpectationFailed": "net/http",
+ "http.StatusFailedDependency": "net/http",
"http.StatusForbidden": "net/http",
"http.StatusFound": "net/http",
"http.StatusGatewayTimeout": "net/http",
"http.StatusGone": "net/http",
"http.StatusHTTPVersionNotSupported": "net/http",
+ "http.StatusIMUsed": "net/http",
+ "http.StatusInsufficientStorage": "net/http",
"http.StatusInternalServerError": "net/http",
"http.StatusLengthRequired": "net/http",
+ "http.StatusLocked": "net/http",
+ "http.StatusLoopDetected": "net/http",
"http.StatusMethodNotAllowed": "net/http",
"http.StatusMovedPermanently": "net/http",
+ "http.StatusMultiStatus": "net/http",
"http.StatusMultipleChoices": "net/http",
+ "http.StatusNetworkAuthenticationRequired": "net/http",
"http.StatusNoContent": "net/http",
"http.StatusNonAuthoritativeInfo": "net/http",
"http.StatusNotAcceptable": "net/http",
+ "http.StatusNotExtended": "net/http",
"http.StatusNotFound": "net/http",
"http.StatusNotImplemented": "net/http",
"http.StatusNotModified": "net/http",
"http.StatusOK": "net/http",
"http.StatusPartialContent": "net/http",
"http.StatusPaymentRequired": "net/http",
+ "http.StatusPermanentRedirect": "net/http",
"http.StatusPreconditionFailed": "net/http",
+ "http.StatusPreconditionRequired": "net/http",
+ "http.StatusProcessing": "net/http",
"http.StatusProxyAuthRequired": "net/http",
"http.StatusRequestEntityTooLarge": "net/http",
+ "http.StatusRequestHeaderFieldsTooLarge": "net/http",
"http.StatusRequestTimeout": "net/http",
"http.StatusRequestURITooLong": "net/http",
"http.StatusRequestedRangeNotSatisfiable": "net/http",
@@ -1802,20 +1990,34 @@ var stdlib = map[string]string{
"http.StatusTeapot": "net/http",
"http.StatusTemporaryRedirect": "net/http",
"http.StatusText": "net/http",
+ "http.StatusTooManyRequests": "net/http",
"http.StatusUnauthorized": "net/http",
+ "http.StatusUnavailableForLegalReasons": "net/http",
+ "http.StatusUnprocessableEntity": "net/http",
"http.StatusUnsupportedMediaType": "net/http",
+ "http.StatusUpgradeRequired": "net/http",
"http.StatusUseProxy": "net/http",
+ "http.StatusVariantAlsoNegotiates": "net/http",
"http.StripPrefix": "net/http",
"http.TimeFormat": "net/http",
"http.TimeoutHandler": "net/http",
"http.Transport": "net/http",
"httptest.DefaultRemoteAddr": "net/http/httptest",
"httptest.NewRecorder": "net/http/httptest",
+ "httptest.NewRequest": "net/http/httptest",
"httptest.NewServer": "net/http/httptest",
"httptest.NewTLSServer": "net/http/httptest",
"httptest.NewUnstartedServer": "net/http/httptest",
"httptest.ResponseRecorder": "net/http/httptest",
"httptest.Server": "net/http/httptest",
+ "httptrace.ClientTrace": "net/http/httptrace",
+ "httptrace.ContextClientTrace": "net/http/httptrace",
+ "httptrace.DNSDoneInfo": "net/http/httptrace",
+ "httptrace.DNSStartInfo": "net/http/httptrace",
+ "httptrace.GotConnInfo": "net/http/httptrace",
+ "httptrace.WithClientTrace": "net/http/httptrace",
+ "httptrace.WroteRequestInfo": "net/http/httptrace",
+ "httputil.BufferPool": "net/http/httputil",
"httputil.ClientConn": "net/http/httputil",
"httputil.DumpRequest": "net/http/httputil",
"httputil.DumpRequestOut": "net/http/httputil",
@@ -1845,6 +2047,7 @@ var stdlib = map[string]string{
"image.Image": "image",
"image.NRGBA": "image",
"image.NRGBA64": "image",
+ "image.NYCbCrA": "image",
"image.NewAlpha": "image",
"image.NewAlpha16": "image",
"image.NewCMYK": "image",
@@ -1852,6 +2055,7 @@ var stdlib = map[string]string{
"image.NewGray16": "image",
"image.NewNRGBA": "image",
"image.NewNRGBA64": "image",
+ "image.NewNYCbCrA": "image",
"image.NewPaletted": "image",
"image.NewRGBA": "image",
"image.NewRGBA64": "image",
@@ -1917,6 +2121,9 @@ var stdlib = map[string]string{
"io.RuneReader": "io",
"io.RuneScanner": "io",
"io.SectionReader": "io",
+ "io.SeekCurrent": "io",
+ "io.SeekEnd": "io",
+ "io.SeekStart": "io",
"io.Seeker": "io",
"io.TeeReader": "io",
"io.WriteCloser": "io",
@@ -2549,19 +2756,19 @@ var stdlib = map[string]string{
"rand.Float32": "math/rand",
"rand.Float64": "math/rand",
// "rand.Int" is ambiguous
- "rand.Int31": "math/rand",
- "rand.Int31n": "math/rand",
- "rand.Int63": "math/rand",
- "rand.Int63n": "math/rand",
- "rand.Intn": "math/rand",
- "rand.New": "math/rand",
- "rand.NewSource": "math/rand",
- "rand.NewZipf": "math/rand",
- "rand.NormFloat64": "math/rand",
- "rand.Perm": "math/rand",
- "rand.Prime": "crypto/rand",
- "rand.Rand": "math/rand",
- "rand.Read": "crypto/rand",
+ "rand.Int31": "math/rand",
+ "rand.Int31n": "math/rand",
+ "rand.Int63": "math/rand",
+ "rand.Int63n": "math/rand",
+ "rand.Intn": "math/rand",
+ "rand.New": "math/rand",
+ "rand.NewSource": "math/rand",
+ "rand.NewZipf": "math/rand",
+ "rand.NormFloat64": "math/rand",
+ "rand.Perm": "math/rand",
+ "rand.Prime": "crypto/rand",
+ "rand.Rand": "math/rand",
+ // "rand.Read" is ambiguous
"rand.Reader": "crypto/rand",
"rand.Seed": "math/rand",
"rand.Source": "math/rand",
@@ -2622,6 +2829,7 @@ var stdlib = map[string]string{
"reflect.StringHeader": "reflect",
"reflect.Struct": "reflect",
"reflect.StructField": "reflect",
+ "reflect.StructOf": "reflect",
"reflect.StructTag": "reflect",
"reflect.TypeOf": "reflect",
"reflect.Uint": "reflect",
@@ -2700,8 +2908,11 @@ var stdlib = map[string]string{
"runtime.CPUProfile": "runtime",
"runtime.Caller": "runtime",
"runtime.Callers": "runtime",
+ "runtime.CallersFrames": "runtime",
"runtime.Compiler": "runtime",
"runtime.Error": "runtime",
+ "runtime.Frame": "runtime",
+ "runtime.Frames": "runtime",
"runtime.Func": "runtime",
"runtime.FuncForPC": "runtime",
"runtime.GC": "runtime",
@@ -2712,6 +2923,7 @@ var stdlib = map[string]string{
"runtime.Goexit": "runtime",
"runtime.GoroutineProfile": "runtime",
"runtime.Gosched": "runtime",
+ "runtime.KeepAlive": "runtime",
"runtime.LockOSThread": "runtime",
"runtime.MemProfile": "runtime",
"runtime.MemProfileRate": "runtime",
@@ -2724,6 +2936,7 @@ var stdlib = map[string]string{
"runtime.ReadTrace": "runtime",
"runtime.SetBlockProfileRate": "runtime",
"runtime.SetCPUProfileRate": "runtime",
+ "runtime.SetCgoTraceback": "runtime",
"runtime.SetFinalizer": "runtime",
"runtime.Stack": "runtime",
"runtime.StackRecord": "runtime",
@@ -2837,7 +3050,9 @@ var stdlib = map[string]string{
"strconv.AppendQuote": "strconv",
"strconv.AppendQuoteRune": "strconv",
"strconv.AppendQuoteRuneToASCII": "strconv",
+ "strconv.AppendQuoteRuneToGraphic": "strconv",
"strconv.AppendQuoteToASCII": "strconv",
+ "strconv.AppendQuoteToGraphic": "strconv",
"strconv.AppendUint": "strconv",
"strconv.Atoi": "strconv",
"strconv.CanBackquote": "strconv",
@@ -2848,6 +3063,7 @@ var stdlib = map[string]string{
"strconv.FormatInt": "strconv",
"strconv.FormatUint": "strconv",
"strconv.IntSize": "strconv",
+ "strconv.IsGraphic": "strconv",
"strconv.IsPrint": "strconv",
"strconv.Itoa": "strconv",
"strconv.NumError": "strconv",
@@ -2858,7 +3074,9 @@ var stdlib = map[string]string{
"strconv.Quote": "strconv",
"strconv.QuoteRune": "strconv",
"strconv.QuoteRuneToASCII": "strconv",
+ "strconv.QuoteRuneToGraphic": "strconv",
"strconv.QuoteToASCII": "strconv",
+ "strconv.QuoteToGraphic": "strconv",
"strconv.Unquote": "strconv",
"strconv.UnquoteChar": "strconv",
"strings.Compare": "strings",
@@ -8206,12 +8424,14 @@ var stdlib = map[string]string{
"template.ErrSlashAmbig": "html/template",
"template.Error": "html/template",
"template.ErrorCode": "html/template",
+ "template.ExecError": "text/template",
// "template.FuncMap" is ambiguous
"template.HTML": "html/template",
"template.HTMLAttr": "html/template",
// "template.HTMLEscape" is ambiguous
// "template.HTMLEscapeString" is ambiguous
// "template.HTMLEscaper" is ambiguous
+ // "template.IsTrue" is ambiguous
"template.JS": "html/template",
// "template.JSEscape" is ambiguous
// "template.JSEscapeString" is ambiguous
@@ -8345,6 +8565,11 @@ var stdlib = map[string]string{
"tls.NewLRUClientSessionCache": "crypto/tls",
"tls.NewListener": "crypto/tls",
"tls.NoClientCert": "crypto/tls",
+ "tls.RecordHeaderError": "crypto/tls",
+ "tls.RenegotiateFreelyAsClient": "crypto/tls",
+ "tls.RenegotiateNever": "crypto/tls",
+ "tls.RenegotiateOnceAsClient": "crypto/tls",
+ "tls.RenegotiationSupport": "crypto/tls",
"tls.RequestClientCert": "crypto/tls",
"tls.RequireAndVerifyClientCert": "crypto/tls",
"tls.RequireAnyClientCert": "crypto/tls",
@@ -8363,7 +8588,9 @@ var stdlib = map[string]string{
"tls.TLS_FALLBACK_SCSV": "crypto/tls",
"tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls",
"tls.TLS_RSA_WITH_AES_128_CBC_SHA": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls",
"tls.TLS_RSA_WITH_AES_256_CBC_SHA": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls",
"tls.TLS_RSA_WITH_RC4_128_SHA": "crypto/tls",
"tls.VerifyClientCertIfGiven": "crypto/tls",
"tls.VersionSSL30": "crypto/tls",
@@ -8494,7 +8721,9 @@ var stdlib = map[string]string{
"types.Id": "go/types",
"types.Identical": "go/types",
"types.Implements": "go/types",
+ "types.ImportMode": "go/types",
"types.Importer": "go/types",
+ "types.ImporterFrom": "go/types",
"types.Info": "go/types",
"types.Initializer": "go/types",
"types.Int": "go/types",
@@ -8593,6 +8822,7 @@ var stdlib = map[string]string{
"types.WriteSignature": "go/types",
"types.WriteType": "go/types",
"unicode.ASCII_Hex_Digit": "unicode",
+ "unicode.Adlam": "unicode",
"unicode.Ahom": "unicode",
"unicode.Anatolian_Hieroglyphs": "unicode",
"unicode.Arabic": "unicode",
@@ -8604,6 +8834,7 @@ var stdlib = map[string]string{
"unicode.Bassa_Vah": "unicode",
"unicode.Batak": "unicode",
"unicode.Bengali": "unicode",
+ "unicode.Bhaiksuki": "unicode",
"unicode.Bidi_Control": "unicode",
"unicode.Bopomofo": "unicode",
"unicode.Brahmi": "unicode",
@@ -8715,6 +8946,7 @@ var stdlib = map[string]string{
"unicode.Malayalam": "unicode",
"unicode.Mandaic": "unicode",
"unicode.Manichaean": "unicode",
+ "unicode.Marchen": "unicode",
"unicode.Mark": "unicode",
"unicode.MaxASCII": "unicode",
"unicode.MaxCase": "unicode",
@@ -8737,6 +8969,7 @@ var stdlib = map[string]string{
"unicode.Nabataean": "unicode",
"unicode.Nd": "unicode",
"unicode.New_Tai_Lue": "unicode",
+ "unicode.Newa": "unicode",
"unicode.Nko": "unicode",
"unicode.Nl": "unicode",
"unicode.No": "unicode",
@@ -8752,6 +8985,7 @@ var stdlib = map[string]string{
"unicode.Old_South_Arabian": "unicode",
"unicode.Old_Turkic": "unicode",
"unicode.Oriya": "unicode",
+ "unicode.Osage": "unicode",
"unicode.Osmanya": "unicode",
"unicode.Other": "unicode",
"unicode.Other_Alphabetic": "unicode",
@@ -8776,6 +9010,7 @@ var stdlib = map[string]string{
"unicode.Phoenician": "unicode",
"unicode.Pi": "unicode",
"unicode.Po": "unicode",
+ "unicode.Prepended_Concatenation_Mark": "unicode",
"unicode.PrintRanges": "unicode",
"unicode.Properties": "unicode",
"unicode.Ps": "unicode",
@@ -8795,6 +9030,7 @@ var stdlib = map[string]string{
"unicode.Saurashtra": "unicode",
"unicode.Sc": "unicode",
"unicode.Scripts": "unicode",
+ "unicode.Sentence_Terminal": "unicode",
"unicode.Sharada": "unicode",
"unicode.Shavian": "unicode",
"unicode.Siddham": "unicode",
@@ -8819,6 +9055,7 @@ var stdlib = map[string]string{
"unicode.Tai_Viet": "unicode",
"unicode.Takri": "unicode",
"unicode.Tamil": "unicode",
+ "unicode.Tangut": "unicode",
"unicode.Telugu": "unicode",
"unicode.Terminal_Punctuation": "unicode",
"unicode.Thaana": "unicode",
@@ -8850,6 +9087,7 @@ var stdlib = map[string]string{
"unicode.Zs": "unicode",
"url.Error": "net/url",
"url.EscapeError": "net/url",
+ "url.InvalidHostError": "net/url",
"url.Parse": "net/url",
"url.ParseQuery": "net/url",
"url.ParseRequestURI": "net/url",
@@ -8861,8 +9099,13 @@ var stdlib = map[string]string{
"url.Userinfo": "net/url",
"url.Values": "net/url",
"user.Current": "os/user",
+ "user.Group": "os/user",
"user.Lookup": "os/user",
+ "user.LookupGroup": "os/user",
+ "user.LookupGroupId": "os/user",
"user.LookupId": "os/user",
+ "user.UnknownGroupError": "os/user",
+ "user.UnknownGroupIdError": "os/user",
"user.UnknownUserError": "os/user",
"user.UnknownUserIdError": "os/user",
"user.User": "os/user",
@@ -8925,6 +9168,7 @@ var stdlib = map[string]string{
"x509.HostnameError": "crypto/x509",
"x509.IncompatibleUsage": "crypto/x509",
"x509.IncorrectPasswordError": "crypto/x509",
+ "x509.InsecureAlgorithmError": "crypto/x509",
"x509.InvalidReason": "crypto/x509",
"x509.IsEncryptedPEMBlock": "crypto/x509",
"x509.KeyUsage": "crypto/x509",
@@ -8966,6 +9210,7 @@ var stdlib = map[string]string{
"x509.SHA384WithRSA": "crypto/x509",
"x509.SHA512WithRSA": "crypto/x509",
"x509.SignatureAlgorithm": "crypto/x509",
+ "x509.SystemCertPool": "crypto/x509",
"x509.SystemRootsError": "crypto/x509",
"x509.TooManyIntermediates": "crypto/x509",
"x509.UnhandledCriticalExtension": "crypto/x509",
@@ -9035,4 +9280,10 @@ var stdlib = map[string]string{
"zlib.NoCompression": "compress/zlib",
"zlib.Resetter": "compress/zlib",
"zlib.Writer": "compress/zlib",
+
+ "unsafe.Alignof": "unsafe",
+ "unsafe.ArbitraryType": "unsafe",
+ "unsafe.Offsetof": "unsafe",
+ "unsafe.Pointer": "unsafe",
+ "unsafe.Sizeof": "unsafe",
}
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/.gitignore b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/.gitignore
new file mode 100644
index 000000000..00268614f
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/.gitignore
@@ -0,0 +1,22 @@
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/LICENSE.txt b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/LICENSE.txt
new file mode 100644
index 000000000..a4a11046c
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/LICENSE.txt
@@ -0,0 +1,8 @@
+The MIT License (MIT)
+Copyright (c) 2013 npipe authors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/README.md b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/README.md
new file mode 100644
index 000000000..420a4d16c
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/README.md
@@ -0,0 +1,308 @@
+npipe [![Build status](https://ci.appveyor.com/api/projects/status/00vuepirsot29qwi)](https://ci.appveyor.com/project/natefinch/npipe) [![GoDoc](https://godoc.org/gopkg.in/natefinch/npipe.v2?status.svg)](https://godoc.org/gopkg.in/natefinch/npipe.v2)
+=====
+Package npipe provides a pure Go wrapper around Windows named pipes.
+
+Windows named pipe documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365780
+
+Note that the code lives at https://github.com/natefinch/npipe (v2 branch)
+but should be imported as gopkg.in/natefinch/npipe.v2 (the package name is
+still npipe).
+
+npipe provides an interface based on stdlib's net package, with Dial, Listen,
+and Accept functions, as well as associated implementations of net.Conn and
+net.Listener. It supports rpc over the connection.
+
+### Notes
+* Deadlines for reading/writing to the connection are only functional in Windows Vista/Server 2008 and above, due to limitations with the Windows API.
+
+* The pipes support byte mode only (no support for message mode)
+
+### Examples
+The Dial function connects a client to a named pipe:
+
+
+ conn, err := npipe.Dial(`\\.\pipe\mypipename`)
+ if err != nil {
+ <handle error>
+ }
+ fmt.Fprintf(conn, "Hi server!\n")
+ msg, err := bufio.NewReader(conn).ReadString('\n')
+ ...
+
+The Listen function creates servers:
+
+
+ ln, err := npipe.Listen(`\\.\pipe\mypipename`)
+ if err != nil {
+ // handle error
+ }
+ for {
+ conn, err := ln.Accept()
+ if err != nil {
+ // handle error
+ continue
+ }
+ go handleConnection(conn)
+ }
+
+
+
+
+
+## Variables
+``` go
+var ErrClosed = PipeError{"Pipe has been closed.", false}
+```
+ErrClosed is the error returned by PipeListener.Accept when Close is called
+on the PipeListener.
+
+
+
+## type PipeAddr
+``` go
+type PipeAddr string
+```
+PipeAddr represents the address of a named pipe.
+
+
+
+
+
+
+
+
+
+
+
+### func (PipeAddr) Network
+``` go
+func (a PipeAddr) Network() string
+```
+Network returns the address's network name, "pipe".
+
+
+
+### func (PipeAddr) String
+``` go
+func (a PipeAddr) String() string
+```
+String returns the address of the pipe
+
+
+
+## type PipeConn
+``` go
+type PipeConn struct {
+ // contains filtered or unexported fields
+}
+```
+PipeConn is the implementation of the net.Conn interface for named pipe connections.
+
+
+
+
+
+
+
+
+
+### func Dial
+``` go
+func Dial(address string) (*PipeConn, error)
+```
+Dial connects to a named pipe with the given address. If the specified pipe is not available,
+it will wait indefinitely for the pipe to become available.
+
+The address must be of the form \\.\\pipe\<name> for local pipes and \\<computer>\pipe\<name>
+for remote pipes.
+
+Dial will return a PipeError if you pass in a badly formatted pipe name.
+
+Examples:
+
+
+ // local pipe
+ conn, err := Dial(`\\.\pipe\mypipename`)
+
+ // remote pipe
+ conn, err := Dial(`\\othercomp\pipe\mypipename`)
+
+
+### func DialTimeout
+``` go
+func DialTimeout(address string, timeout time.Duration) (*PipeConn, error)
+```
+DialTimeout acts like Dial, but will time out after the duration of timeout
+
+
+
+
+### func (\*PipeConn) Close
+``` go
+func (c *PipeConn) Close() error
+```
+Close closes the connection.
+
+
+
+### func (\*PipeConn) LocalAddr
+``` go
+func (c *PipeConn) LocalAddr() net.Addr
+```
+LocalAddr returns the local network address.
+
+
+
+### func (\*PipeConn) Read
+``` go
+func (c *PipeConn) Read(b []byte) (int, error)
+```
+Read implements the net.Conn Read method.
+
+
+
+### func (\*PipeConn) RemoteAddr
+``` go
+func (c *PipeConn) RemoteAddr() net.Addr
+```
+RemoteAddr returns the remote network address.
+
+
+
+### func (\*PipeConn) SetDeadline
+``` go
+func (c *PipeConn) SetDeadline(t time.Time) error
+```
+SetDeadline implements the net.Conn SetDeadline method.
+Note that timeouts are only supported on Windows Vista/Server 2008 and above
+
+
+
+### func (\*PipeConn) SetReadDeadline
+``` go
+func (c *PipeConn) SetReadDeadline(t time.Time) error
+```
+SetReadDeadline implements the net.Conn SetReadDeadline method.
+Note that timeouts are only supported on Windows Vista/Server 2008 and above
+
+
+
+### func (\*PipeConn) SetWriteDeadline
+``` go
+func (c *PipeConn) SetWriteDeadline(t time.Time) error
+```
+SetWriteDeadline implements the net.Conn SetWriteDeadline method.
+Note that timeouts are only supported on Windows Vista/Server 2008 and above
+
+
+
+### func (\*PipeConn) Write
+``` go
+func (c *PipeConn) Write(b []byte) (int, error)
+```
+Write implements the net.Conn Write method.
+
+
+
+## type PipeError
+``` go
+type PipeError struct {
+ // contains filtered or unexported fields
+}
+```
+PipeError is an error related to a call to a pipe
+
+
+
+
+
+
+
+
+
+
+
+### func (PipeError) Error
+``` go
+func (e PipeError) Error() string
+```
+Error implements the error interface
+
+
+
+### func (PipeError) Temporary
+``` go
+func (e PipeError) Temporary() bool
+```
+Temporary implements net.AddrError.Temporary()
+
+
+
+### func (PipeError) Timeout
+``` go
+func (e PipeError) Timeout() bool
+```
+Timeout implements net.AddrError.Timeout()
+
+
+
+## type PipeListener
+``` go
+type PipeListener struct {
+ // contains filtered or unexported fields
+}
+```
+PipeListener is a named pipe listener. Clients should typically
+use variables of type net.Listener instead of assuming named pipe.
+
+
+
+
+
+
+
+
+
+### func Listen
+``` go
+func Listen(address string) (*PipeListener, error)
+```
+Listen returns a new PipeListener that will listen on a pipe with the given
+address. The address must be of the form \\.\pipe\<name>
+
+Listen will return a PipeError for an incorrectly formatted pipe name.
+
+
+
+
+### func (\*PipeListener) Accept
+``` go
+func (l *PipeListener) Accept() (net.Conn, error)
+```
+Accept implements the Accept method in the net.Listener interface; it
+waits for the next call and returns a generic net.Conn.
+
+
+
+### func (\*PipeListener) AcceptPipe
+``` go
+func (l *PipeListener) AcceptPipe() (*PipeConn, error)
+```
+AcceptPipe accepts the next incoming call and returns the new connection.
+
+
+
+### func (\*PipeListener) Addr
+``` go
+func (l *PipeListener) Addr() net.Addr
+```
+Addr returns the listener's network address, a PipeAddr.
+
+
+
+### func (\*PipeListener) Close
+``` go
+func (l *PipeListener) Close() error
+```
+Close stops listening on the address.
+Already Accepted connections are not closed.
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/doc.go b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/doc.go
new file mode 100644
index 000000000..3445773b4
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/doc.go
@@ -0,0 +1,50 @@
+// Copyright 2013 Nate Finch. All rights reserved.
+// Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+// Package npipe provides a pure Go wrapper around Windows named pipes.
+//
+// !! Note, this package is Windows-only. There is no code to compile on linux.
+//
+// Windows named pipe documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365780
+//
+// Note that the code lives at https://github.com/natefinch/npipe (v2 branch)
+// but should be imported as gopkg.in/natefinch/npipe.v2 (the package name is
+// still npipe).
+//
+// npipe provides an interface based on stdlib's net package, with Dial, Listen,
+// and Accept functions, as well as associated implementations of net.Conn and
+// net.Listener. It supports rpc over the connection.
+//
+// Notes
+//
+// * Deadlines for reading/writing to the connection are only functional in Windows Vista/Server 2008 and above, due to limitations with the Windows API.
+//
+// * The pipes support byte mode only (no support for message mode)
+//
+// Examples
+//
+// The Dial function connects a client to a named pipe:
+// conn, err := npipe.Dial(`\\.\pipe\mypipename`)
+// if err != nil {
+// <handle error>
+// }
+// fmt.Fprintf(conn, "Hi server!\n")
+// msg, err := bufio.NewReader(conn).ReadString('\n')
+// ...
+//
+// The Listen function creates servers:
+//
+// ln, err := npipe.Listen(`\\.\pipe\mypipename`)
+// if err != nil {
+// // handle error
+// }
+// for {
+// conn, err := ln.Accept()
+// if err != nil {
+// // handle error
+// continue
+// }
+// go handleConnection(conn)
+// }
+package npipe
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/npipe_windows.go b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/npipe_windows.go
new file mode 100755
index 000000000..5e7cf13ee
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/npipe_windows.go
@@ -0,0 +1,531 @@
+package npipe
+
+//sys createNamedPipe(name *uint16, openMode uint32, pipeMode uint32, maxInstances uint32, outBufSize uint32, inBufSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateNamedPipeW
+//sys connectNamedPipe(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) = ConnectNamedPipe
+//sys disconnectNamedPipe(handle syscall.Handle) (err error) = DisconnectNamedPipe
+//sys waitNamedPipe(name *uint16, timeout uint32) (err error) = WaitNamedPipeW
+//sys createEvent(sa *syscall.SecurityAttributes, manualReset bool, initialState bool, name *uint16) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateEventW
+//sys getOverlappedResult(handle syscall.Handle, overlapped *syscall.Overlapped, transferred *uint32, wait bool) (err error) = GetOverlappedResult
+//sys cancelIoEx(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) = CancelIoEx
+
+import (
+ "fmt"
+ "io"
+ "net"
+ "sync"
+ "syscall"
+ "time"
+)
+
+const (
+ // openMode
+ pipe_access_duplex = 0x3
+ pipe_access_inbound = 0x1
+ pipe_access_outbound = 0x2
+
+ // openMode write flags
+ file_flag_first_pipe_instance = 0x00080000
+ file_flag_write_through = 0x80000000
+ file_flag_overlapped = 0x40000000
+
+ // openMode ACL flags
+ write_dac = 0x00040000
+ write_owner = 0x00080000
+ access_system_security = 0x01000000
+
+ // pipeMode
+ pipe_type_byte = 0x0
+ pipe_type_message = 0x4
+
+ // pipeMode read mode flags
+ pipe_readmode_byte = 0x0
+ pipe_readmode_message = 0x2
+
+ // pipeMode wait mode flags
+ pipe_wait = 0x0
+ pipe_nowait = 0x1
+
+ // pipeMode remote-client mode flags
+ pipe_accept_remote_clients = 0x0
+ pipe_reject_remote_clients = 0x8
+
+ pipe_unlimited_instances = 255
+
+ nmpwait_wait_forever = 0xFFFFFFFF
+
+ // the two not-an-errors below occur if a client connects to the pipe between
+ // the server's CreateNamedPipe and ConnectNamedPipe calls.
+ error_no_data syscall.Errno = 0xE8
+ error_pipe_connected syscall.Errno = 0x217
+ error_pipe_busy syscall.Errno = 0xE7
+ error_sem_timeout syscall.Errno = 0x79
+
+ error_bad_pathname syscall.Errno = 0xA1
+ error_invalid_name syscall.Errno = 0x7B
+
+ error_io_incomplete syscall.Errno = 0x3e4
+)
+
+var _ net.Conn = (*PipeConn)(nil)
+var _ net.Listener = (*PipeListener)(nil)
+
+// ErrClosed is the error returned by PipeListener.Accept when Close is called
+// on the PipeListener.
+var ErrClosed = PipeError{"Pipe has been closed.", false}
+
+// PipeError is an error related to a call to a pipe
+type PipeError struct {
+ msg string
+ timeout bool
+}
+
+// Error implements the error interface
+func (e PipeError) Error() string {
+ return e.msg
+}
+
+// Timeout implements net.AddrError.Timeout()
+func (e PipeError) Timeout() bool {
+ return e.timeout
+}
+
+// Temporary implements net.AddrError.Temporary()
+func (e PipeError) Temporary() bool {
+ return false
+}
+
+// Dial connects to a named pipe with the given address. If the specified pipe is not available,
+// it will wait indefinitely for the pipe to become available.
+//
+// The address must be of the form \\.\\pipe\<name> for local pipes and \\<computer>\pipe\<name>
+// for remote pipes.
+//
+// Dial will return a PipeError if you pass in a badly formatted pipe name.
+//
+// Examples:
+// // local pipe
+// conn, err := Dial(`\\.\pipe\mypipename`)
+//
+// // remote pipe
+// conn, err := Dial(`\\othercomp\pipe\mypipename`)
+func Dial(address string) (*PipeConn, error) {
+ for {
+ conn, err := dial(address, nmpwait_wait_forever)
+ if err == nil {
+ return conn, nil
+ }
+ if isPipeNotReady(err) {
+ <-time.After(100 * time.Millisecond)
+ continue
+ }
+ return nil, err
+ }
+}
+
+// DialTimeout acts like Dial, but will time out after the duration of timeout
+func DialTimeout(address string, timeout time.Duration) (*PipeConn, error) {
+ deadline := time.Now().Add(timeout)
+
+ now := time.Now()
+ for now.Before(deadline) {
+ millis := uint32(deadline.Sub(now) / time.Millisecond)
+ conn, err := dial(address, millis)
+ if err == nil {
+ return conn, nil
+ }
+ if err == error_sem_timeout {
+ // This is WaitNamedPipe's timeout error, so we know we're done
+ return nil, PipeError{fmt.Sprintf(
+ "Timed out waiting for pipe '%s' to come available", address), true}
+ }
+ if isPipeNotReady(err) {
+ left := deadline.Sub(time.Now())
+ retry := 100 * time.Millisecond
+ if left > retry {
+ <-time.After(retry)
+ } else {
+ <-time.After(left - time.Millisecond)
+ }
+ now = time.Now()
+ continue
+ }
+ return nil, err
+ }
+ return nil, PipeError{fmt.Sprintf(
+ "Timed out waiting for pipe '%s' to come available", address), true}
+}
+
+// isPipeNotReady checks the error to see if it indicates the pipe is not ready
+func isPipeNotReady(err error) bool {
+ // Pipe Busy means another client just grabbed the open pipe end,
+ // and the server hasn't made a new one yet.
+ // File Not Found means the server hasn't created the pipe yet.
+ // Neither is a fatal error.
+
+ return err == syscall.ERROR_FILE_NOT_FOUND || err == error_pipe_busy
+}
+
+// newOverlapped creates a structure used to track asynchronous
+// I/O requests that have been issued.
+func newOverlapped() (*syscall.Overlapped, error) {
+ event, err := createEvent(nil, true, true, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &syscall.Overlapped{HEvent: event}, nil
+}
+
+// waitForCompletion waits for an asynchronous I/O request referred to by overlapped to complete.
+// This function returns the number of bytes transferred by the operation and an error code if
+// applicable (nil otherwise).
+func waitForCompletion(handle syscall.Handle, overlapped *syscall.Overlapped) (uint32, error) {
+ _, err := syscall.WaitForSingleObject(overlapped.HEvent, syscall.INFINITE)
+ if err != nil {
+ return 0, err
+ }
+ var transferred uint32
+ err = getOverlappedResult(handle, overlapped, &transferred, true)
+ return transferred, err
+}
+
+// dial is a helper to initiate a connection to a named pipe that has been started by a server.
+// The timeout is only enforced if the pipe server has already created the pipe, otherwise
+// this function will return immediately.
+func dial(address string, timeout uint32) (*PipeConn, error) {
+ name, err := syscall.UTF16PtrFromString(string(address))
+ if err != nil {
+ return nil, err
+ }
+ // If at least one instance of the pipe has been created, this function
+ // will wait timeout milliseconds for it to become available.
+ // It will return immediately regardless of timeout, if no instances
+ // of the named pipe have been created yet.
+ // If this returns with no error, there is a pipe available.
+ if err := waitNamedPipe(name, timeout); err != nil {
+ if err == error_bad_pathname {
+ // badly formatted pipe name
+ return nil, badAddr(address)
+ }
+ return nil, err
+ }
+ pathp, err := syscall.UTF16PtrFromString(address)
+ if err != nil {
+ return nil, err
+ }
+ handle, err := syscall.CreateFile(pathp, syscall.GENERIC_READ|syscall.GENERIC_WRITE,
+ uint32(syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE), nil, syscall.OPEN_EXISTING,
+ syscall.FILE_FLAG_OVERLAPPED, 0)
+ if err != nil {
+ return nil, err
+ }
+ return &PipeConn{handle: handle, addr: PipeAddr(address)}, nil
+}
+
+// Listen returns a new PipeListener that will listen on a pipe with the given
+// address. The address must be of the form \\.\pipe\<name>
+//
+// Listen will return a PipeError for an incorrectly formatted pipe name.
+func Listen(address string) (*PipeListener, error) {
+ handle, err := createPipe(address, true)
+ if err == error_invalid_name {
+ return nil, badAddr(address)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ return &PipeListener{
+ addr: PipeAddr(address),
+ handle: handle,
+ }, nil
+}
+
+// PipeListener is a named pipe listener. Clients should typically
+// use variables of type net.Listener instead of assuming named pipe.
+type PipeListener struct {
+ mu sync.Mutex
+
+ addr PipeAddr
+ handle syscall.Handle
+ closed bool
+
+ // acceptHandle contains the current handle waiting for
+ // an incoming connection or nil.
+ acceptHandle syscall.Handle
+ // acceptOverlapped is set before waiting on a connection.
+ // If not waiting, it is nil.
+ acceptOverlapped *syscall.Overlapped
+}
+
+// Accept implements the Accept method in the net.Listener interface; it
+// waits for the next call and returns a generic net.Conn.
+func (l *PipeListener) Accept() (net.Conn, error) {
+ c, err := l.AcceptPipe()
+ for err == error_no_data {
+ // Ignore clients that connect and immediately disconnect.
+ c, err = l.AcceptPipe()
+ }
+ if err != nil {
+ return nil, err
+ }
+ return c, nil
+}
+
+// AcceptPipe accepts the next incoming call and returns the new connection.
+// It might return an error if a client connected and immediately cancelled
+// the connection.
+func (l *PipeListener) AcceptPipe() (*PipeConn, error) {
+ if l == nil {
+ return nil, syscall.EINVAL
+ }
+
+ l.mu.Lock()
+ defer l.mu.Unlock()
+
+ if l.addr == "" || l.closed {
+ return nil, syscall.EINVAL
+ }
+
+ // the first time we call accept, the handle will have been created by the Listen
+ // call. This is to prevent race conditions where the client thinks the server
+ // isn't listening because it hasn't actually called create yet. After the first time, we'll
+ // have to create a new handle each time
+ handle := l.handle
+ if handle == 0 {
+ var err error
+ handle, err = createPipe(string(l.addr), false)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ l.handle = 0
+ }
+
+ overlapped, err := newOverlapped()
+ if err != nil {
+ return nil, err
+ }
+ defer syscall.CloseHandle(overlapped.HEvent)
+ err = connectNamedPipe(handle, overlapped)
+ if err == nil || err == error_pipe_connected {
+ return &PipeConn{handle: handle, addr: l.addr}, nil
+ }
+
+ if err == error_io_incomplete || err == syscall.ERROR_IO_PENDING {
+ l.acceptOverlapped = overlapped
+ l.acceptHandle = handle
+ // unlock here so close can function correctly while we wait (we'll
+ // get relocked via the defer below, before the original defer
+ // unlock happens.)
+ l.mu.Unlock()
+ defer func() {
+ l.mu.Lock()
+ l.acceptOverlapped = nil
+ l.acceptHandle = 0
+ // unlock is via defer above.
+ }()
+ _, err = waitForCompletion(handle, overlapped)
+ }
+ if err == syscall.ERROR_OPERATION_ABORTED {
+ // Return error compatible to net.Listener.Accept() in case the
+ // listener was closed.
+ return nil, ErrClosed
+ }
+ if err != nil {
+ return nil, err
+ }
+ return &PipeConn{handle: handle, addr: l.addr}, nil
+}
+
+// Close stops listening on the address.
+// Already Accepted connections are not closed.
+func (l *PipeListener) Close() error {
+ l.mu.Lock()
+ defer l.mu.Unlock()
+
+ if l.closed {
+ return nil
+ }
+ l.closed = true
+ if l.handle != 0 {
+ err := disconnectNamedPipe(l.handle)
+ if err != nil {
+ return err
+ }
+ err = syscall.CloseHandle(l.handle)
+ if err != nil {
+ return err
+ }
+ l.handle = 0
+ }
+ if l.acceptOverlapped != nil && l.acceptHandle != 0 {
+ // Cancel the pending IO. This call does not block, so it is safe
+ // to hold onto the mutex above.
+ if err := cancelIoEx(l.acceptHandle, l.acceptOverlapped); err != nil {
+ return err
+ }
+ err := syscall.CloseHandle(l.acceptOverlapped.HEvent)
+ if err != nil {
+ return err
+ }
+ l.acceptOverlapped.HEvent = 0
+ err = syscall.CloseHandle(l.acceptHandle)
+ if err != nil {
+ return err
+ }
+ l.acceptHandle = 0
+ }
+ return nil
+}
+
+// Addr returns the listener's network address, a PipeAddr.
+func (l *PipeListener) Addr() net.Addr { return l.addr }
+
+// PipeConn is the implementation of the net.Conn interface for named pipe connections.
+type PipeConn struct {
+ handle syscall.Handle
+ addr PipeAddr
+
+ // these aren't actually used yet
+ readDeadline *time.Time
+ writeDeadline *time.Time
+}
+
+type iodata struct {
+ n uint32
+ err error
+}
+
+// completeRequest looks at iodata to see if a request is pending. If so, it waits for it to either complete or to
+// abort due to hitting the specified deadline. Deadline may be set to nil to wait forever. If no request is pending,
+// the content of iodata is returned.
+func (c *PipeConn) completeRequest(data iodata, deadline *time.Time, overlapped *syscall.Overlapped) (int, error) {
+ if data.err == error_io_incomplete || data.err == syscall.ERROR_IO_PENDING {
+ var timer <-chan time.Time
+ if deadline != nil {
+ if timeDiff := deadline.Sub(time.Now()); timeDiff > 0 {
+ timer = time.After(timeDiff)
+ }
+ }
+ done := make(chan iodata)
+ go func() {
+ n, err := waitForCompletion(c.handle, overlapped)
+ done <- iodata{n, err}
+ }()
+ select {
+ case data = <-done:
+ case <-timer:
+ syscall.CancelIoEx(c.handle, overlapped)
+ data = iodata{0, timeout(c.addr.String())}
+ }
+ }
+ // Windows will produce ERROR_BROKEN_PIPE upon closing
+ // a handle on the other end of a connection. Go RPC
+ // expects an io.EOF error in this case.
+ if data.err == syscall.ERROR_BROKEN_PIPE {
+ data.err = io.EOF
+ }
+ return int(data.n), data.err
+}
+
+// Read implements the net.Conn Read method.
+func (c *PipeConn) Read(b []byte) (int, error) {
+ // Use ReadFile() rather than Read() because the latter
+ // contains a workaround that eats ERROR_BROKEN_PIPE.
+ overlapped, err := newOverlapped()
+ if err != nil {
+ return 0, err
+ }
+ defer syscall.CloseHandle(overlapped.HEvent)
+ var n uint32
+ err = syscall.ReadFile(c.handle, b, &n, overlapped)
+ return c.completeRequest(iodata{n, err}, c.readDeadline, overlapped)
+}
+
+// Write implements the net.Conn Write method.
+func (c *PipeConn) Write(b []byte) (int, error) {
+ overlapped, err := newOverlapped()
+ if err != nil {
+ return 0, err
+ }
+ defer syscall.CloseHandle(overlapped.HEvent)
+ var n uint32
+ err = syscall.WriteFile(c.handle, b, &n, overlapped)
+ return c.completeRequest(iodata{n, err}, c.writeDeadline, overlapped)
+}
+
+// Close closes the connection.
+func (c *PipeConn) Close() error {
+ return syscall.CloseHandle(c.handle)
+}
+
+// LocalAddr returns the local network address.
+func (c *PipeConn) LocalAddr() net.Addr {
+ return c.addr
+}
+
+// RemoteAddr returns the remote network address.
+func (c *PipeConn) RemoteAddr() net.Addr {
+ // not sure what to do here, we don't have remote addr....
+ return c.addr
+}
+
+// SetDeadline implements the net.Conn SetDeadline method.
+// Note that timeouts are only supported on Windows Vista/Server 2008 and above
+func (c *PipeConn) SetDeadline(t time.Time) error {
+ c.SetReadDeadline(t)
+ c.SetWriteDeadline(t)
+ return nil
+}
+
+// SetReadDeadline implements the net.Conn SetReadDeadline method.
+// Note that timeouts are only supported on Windows Vista/Server 2008 and above
+func (c *PipeConn) SetReadDeadline(t time.Time) error {
+ c.readDeadline = &t
+ return nil
+}
+
+// SetWriteDeadline implements the net.Conn SetWriteDeadline method.
+// Note that timeouts are only supported on Windows Vista/Server 2008 and above
+func (c *PipeConn) SetWriteDeadline(t time.Time) error {
+ c.writeDeadline = &t
+ return nil
+}
+
+// PipeAddr represents the address of a named pipe.
+type PipeAddr string
+
+// Network returns the address's network name, "pipe".
+func (a PipeAddr) Network() string { return "pipe" }
+
+// String returns the address of the pipe
+func (a PipeAddr) String() string {
+ return string(a)
+}
+
+// createPipe is a helper function to make sure we always create pipes
+// with the same arguments, since subsequent calls to create pipe need
+// to use the same arguments as the first one. If first is set, fail
+// if the pipe already exists.
+func createPipe(address string, first bool) (syscall.Handle, error) {
+ n, err := syscall.UTF16PtrFromString(address)
+ if err != nil {
+ return 0, err
+ }
+ mode := uint32(pipe_access_duplex | syscall.FILE_FLAG_OVERLAPPED)
+ if first {
+ mode |= file_flag_first_pipe_instance
+ }
+ return createNamedPipe(n,
+ mode,
+ pipe_type_byte,
+ pipe_unlimited_instances,
+ 512, 512, 0, nil)
+}
+
+func badAddr(addr string) PipeError {
+ return PipeError{fmt.Sprintf("Invalid pipe address '%s'.", addr), false}
+}
+func timeout(addr string) PipeError {
+ return PipeError{fmt.Sprintf("Pipe IO timed out waiting for '%s'", addr), true}
+}
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_386.go b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_386.go
new file mode 100644
index 000000000..c283e6cf9
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_386.go
@@ -0,0 +1,124 @@
+// +build windows
+// go build mksyscall_windows.go && ./mksyscall_windows npipe_windows.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package npipe
+
+import "unsafe"
+import "syscall"
+
+var (
+ modkernel32 = syscall.NewLazyDLL("kernel32.dll")
+
+ procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW")
+ procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe")
+ procDisconnectNamedPipe = modkernel32.NewProc("DisconnectNamedPipe")
+ procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW")
+ procCreateEventW = modkernel32.NewProc("CreateEventW")
+ procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
+ procCancelIoEx = modkernel32.NewProc("CancelIoEx")
+)
+
+func createNamedPipe(name *uint16, openMode uint32, pipeMode uint32, maxInstances uint32, outBufSize uint32, inBufSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) {
+ r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(openMode), uintptr(pipeMode), uintptr(maxInstances), uintptr(outBufSize), uintptr(inBufSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0)
+ handle = syscall.Handle(r0)
+ if handle == syscall.InvalidHandle {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func cancelIoEx(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func connectNamedPipe(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func disconnectNamedPipe(handle syscall.Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procDisconnectNamedPipe.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func waitNamedPipe(name *uint16, timeout uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func createEvent(sa *syscall.SecurityAttributes, manualReset bool, initialState bool, name *uint16) (handle syscall.Handle, err error) {
+ var _p0 uint32
+ if manualReset {
+ _p0 = 1
+ } else {
+ _p0 = 0
+ }
+ var _p1 uint32
+ if initialState {
+ _p1 = 1
+ } else {
+ _p1 = 0
+ }
+ r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(sa)), uintptr(_p0), uintptr(_p1), uintptr(unsafe.Pointer(name)), 0, 0)
+ handle = syscall.Handle(r0)
+ if handle == syscall.InvalidHandle {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func getOverlappedResult(handle syscall.Handle, overlapped *syscall.Overlapped, transferred *uint32, wait bool) (err error) {
+ var _p0 uint32
+ if wait {
+ _p0 = 1
+ } else {
+ _p0 = 0
+ }
+ r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transferred)), uintptr(_p0), 0, 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_amd64.go b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_amd64.go
new file mode 100644
index 000000000..c283e6cf9
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/natefinch/npipe.v2/znpipe_windows_amd64.go
@@ -0,0 +1,124 @@
+// +build windows
+// go build mksyscall_windows.go && ./mksyscall_windows npipe_windows.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package npipe
+
+import "unsafe"
+import "syscall"
+
+var (
+ modkernel32 = syscall.NewLazyDLL("kernel32.dll")
+
+ procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW")
+ procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe")
+ procDisconnectNamedPipe = modkernel32.NewProc("DisconnectNamedPipe")
+ procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW")
+ procCreateEventW = modkernel32.NewProc("CreateEventW")
+ procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
+ procCancelIoEx = modkernel32.NewProc("CancelIoEx")
+)
+
+func createNamedPipe(name *uint16, openMode uint32, pipeMode uint32, maxInstances uint32, outBufSize uint32, inBufSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) {
+ r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(openMode), uintptr(pipeMode), uintptr(maxInstances), uintptr(outBufSize), uintptr(inBufSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0)
+ handle = syscall.Handle(r0)
+ if handle == syscall.InvalidHandle {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func cancelIoEx(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func connectNamedPipe(handle syscall.Handle, overlapped *syscall.Overlapped) (err error) {
+ r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func disconnectNamedPipe(handle syscall.Handle) (err error) {
+ r1, _, e1 := syscall.Syscall(procDisconnectNamedPipe.Addr(), 1, uintptr(handle), 0, 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func waitNamedPipe(name *uint16, timeout uint32) (err error) {
+ r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func createEvent(sa *syscall.SecurityAttributes, manualReset bool, initialState bool, name *uint16) (handle syscall.Handle, err error) {
+ var _p0 uint32
+ if manualReset {
+ _p0 = 1
+ } else {
+ _p0 = 0
+ }
+ var _p1 uint32
+ if initialState {
+ _p1 = 1
+ } else {
+ _p1 = 0
+ }
+ r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(sa)), uintptr(_p0), uintptr(_p1), uintptr(unsafe.Pointer(name)), 0, 0)
+ handle = syscall.Handle(r0)
+ if handle == syscall.InvalidHandle {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
+
+func getOverlappedResult(handle syscall.Handle, overlapped *syscall.Overlapped, transferred *uint32, wait bool) (err error) {
+ var _p0 uint32
+ if wait {
+ _p0 = 1
+ } else {
+ _p0 = 0
+ }
+ r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transferred)), uintptr(_p0), 0, 0)
+ if r1 == 0 {
+ if e1 != 0 {
+ err = error(e1)
+ } else {
+ err = syscall.EINVAL
+ }
+ }
+ return
+}
diff --git a/Makefile b/Makefile
index 148cb5758..6cb64e8a4 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,8 @@
# with Go source code. If you know what GOPATH is then you probably
# don't need to bother with make.
-.PHONY: geth geth-cross evm all test xgo clean
-.PHONY: geth-linux geth-linux-386 geth-linux-amd64
+.PHONY: geth geth-cross evm all test clean
+.PHONY: geth-linux geth-linux-386 geth-linux-amd64 geth-linux-mips64 geth-linux-mips64le
.PHONY: geth-linux-arm geth-linux-arm-5 geth-linux-arm-6 geth-linux-arm-7 geth-linux-arm64
.PHONY: geth-darwin geth-darwin-386 geth-darwin-amd64
.PHONY: geth-windows geth-windows-386 geth-windows-amd64
@@ -33,24 +33,21 @@ clean:
# Cross Compilation Targets (xgo)
-xgo:
- build/env.sh go get github.com/karalabe/xgo
-
geth-cross: geth-linux geth-darwin geth-windows geth-android geth-ios
@echo "Full cross compilation done:"
@ls -ld $(GOBIN)/geth-*
-geth-linux: geth-linux-386 geth-linux-amd64 geth-linux-arm
+geth-linux: geth-linux-386 geth-linux-amd64 geth-linux-arm geth-linux-mips64 geth-linux-mips64le
@echo "Linux cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-*
-geth-linux-386: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/386 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-386:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/386 -v ./cmd/geth
@echo "Linux 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep 386
-geth-linux-amd64: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/amd64 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-amd64:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/amd64 -v ./cmd/geth
@echo "Linux amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep amd64
@@ -58,37 +55,47 @@ geth-linux-arm: geth-linux-arm-5 geth-linux-arm-6 geth-linux-arm-7 geth-linux-ar
@echo "Linux ARM cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm
-geth-linux-arm-5: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-5 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-arm-5:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-5 -v ./cmd/geth
@echo "Linux ARMv5 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-5
-geth-linux-arm-6: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-6 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-arm-6:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-6 -v ./cmd/geth
@echo "Linux ARMv6 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-6
-geth-linux-arm-7: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-7 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-arm-7:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm-7 -v ./cmd/geth
@echo "Linux ARMv7 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-7
-geth-linux-arm64: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm64 -v $(shell build/flags.sh) ./cmd/geth
+geth-linux-arm64:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/arm64 -v ./cmd/geth
@echo "Linux ARM64 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm64
+geth-linux-mips64:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/mips64 -v ./cmd/geth
+ @echo "Linux MIPS64 cross compilation done:"
+ @ls -ld $(GOBIN)/geth-linux-* | grep mips64
+
+geth-linux-mips64le:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=linux/mips64le -v ./cmd/geth
+ @echo "Linux MIPS64le cross compilation done:"
+ @ls -ld $(GOBIN)/geth-linux-* | grep mips64le
+
geth-darwin: geth-darwin-386 geth-darwin-amd64
@echo "Darwin cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-*
-geth-darwin-386: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=darwin/386 -v $(shell build/flags.sh) ./cmd/geth
+geth-darwin-386:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=darwin/386 -v ./cmd/geth
@echo "Darwin 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-* | grep 386
-geth-darwin-amd64: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=darwin/amd64 -v $(shell build/flags.sh) ./cmd/geth
+geth-darwin-amd64:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=darwin/amd64 -v ./cmd/geth
@echo "Darwin amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-* | grep amd64
@@ -96,22 +103,22 @@ geth-windows: geth-windows-386 geth-windows-amd64
@echo "Windows cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-*
-geth-windows-386: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=windows/386 -v $(shell build/flags.sh) ./cmd/geth
+geth-windows-386:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=windows/386 -v ./cmd/geth
@echo "Windows 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-* | grep 386
-geth-windows-amd64: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=windows/amd64 -v $(shell build/flags.sh) ./cmd/geth
+geth-windows-amd64:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=windows/amd64 -v ./cmd/geth
@echo "Windows amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-* | grep amd64
-geth-android: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=android-21/aar -v $(shell build/flags.sh) ./cmd/geth
+geth-android:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=android-21/aar -v ./cmd/geth
@echo "Android cross compilation done:"
@ls -ld $(GOBIN)/geth-android-*
-geth-ios: xgo
- build/env.sh $(GOBIN)/xgo --go=$(GO) --dest=$(GOBIN) --targets=ios-7.0/framework -v $(shell build/flags.sh) ./cmd/geth
+geth-ios:
+ build/env.sh go run build/ci.go xgo --go=$(GO) --dest=$(GOBIN) --targets=ios-7.0/framework -v ./cmd/geth
@echo "iOS framework cross compilation done:"
@ls -ld $(GOBIN)/geth-ios-*
diff --git a/README.md b/README.md
index 60ce814ba..e454a30af 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ The go-ethereum project comes with several wrappers/executables found in the `cm
| `abigen` | Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) with expanded functionality if the contract bytecode is also available. However it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) wiki page for details. |
| `bootnode` | Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks. |
| `disasm` | Bytecode disassembler to convert EVM (Ethereum Virtual Machine) bytecode into more user friendly assembly-like opcodes (e.g. `echo "6001" | disasm`). For details on the individual opcodes, please see pages 22-30 of the [Ethereum Yellow Paper](http://gavwood.com/paper.pdf). |
-| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow insolated, fine graned debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug`). |
+| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow insolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug`). |
| `gethrpctest` | Developer utility tool to support our [ethereum/rpc-test](https://github.com/ethereum/rpc-tests) test suite which validates baseline conformity to the [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) specs. Please see the [test suite's readme](https://github.com/ethereum/rpc-tests/blob/master/README.md) for details. |
| `rlpdump` | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://github.com/ethereum/wiki/wiki/RLP)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`). |
@@ -113,6 +113,18 @@ always use separate accounts for play-money and real-money. Unless you manually
will by default correctly separate the two networks and will not make any accounts available between
them.*
+#### Docker quick start
+
+One of the quickest ways to get Ethereum up and running on your machine is by using Docker:
+
+```
+docker run -d --name ethereum-node -v /Users/alice/ethereum:/root \
+ -p 8545:8545 -p 30303:30303 \
+ ethereum/client-go --fast --cache=512
+```
+
+This will start geth in fast sync mode with a DB memory allowance of 512MB just as the above command does. It will also create a persistent volume in your home directory for saving your blockchain as well as map the default ports. There is also an `alpine` tag available for a slim version of the image.
+
### Programatically interfacing Geth nodes
As a developer, sooner rather than later you'll want to start interacting with Geth and the Ethereum
diff --git a/accounts/abi/bind/backend.go b/accounts/abi/bind/backend.go
index bec742c29..a4e90914f 100644
--- a/accounts/abi/bind/backend.go
+++ b/accounts/abi/bind/backend.go
@@ -20,28 +20,52 @@ import (
"errors"
"math/big"
+ "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"golang.org/x/net/context"
)
-// ErrNoCode is returned by call and transact operations for which the requested
-// recipient contract to operate on does not exist in the state db or does not
-// have any code associated with it (i.e. suicided).
-var ErrNoCode = errors.New("no contract code at given address")
+var (
+ // ErrNoCode is returned by call and transact operations for which the requested
+ // recipient contract to operate on does not exist in the state db or does not
+ // have any code associated with it (i.e. suicided).
+ ErrNoCode = errors.New("no contract code at given address")
+
+ // This error is raised when attempting to perform a pending state action
+ // on a backend that doesn't implement PendingContractCaller.
+ ErrNoPendingState = errors.New("backend does not support pending state")
+
+ // This error is returned by WaitDeployed if contract creation leaves an
+ // empty contract behind.
+ ErrNoCodeAfterDeploy = errors.New("no contract code after deployment")
+)
// ContractCaller defines the methods needed to allow operating with contract on a read
// only basis.
type ContractCaller interface {
- // HasCode checks if the contract at the given address has any code associated
- // with it or not. This is needed to differentiate between contract internal
- // errors and the local chain being out of sync.
- HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error)
+ // CodeAt returns the code of the given account. This is needed to differentiate
+ // between contract internal errors and the local chain being out of sync.
+ CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
+ // ContractCall executes an Ethereum contract call with the specified data as the
+ // input.
+ CallContract(ctx context.Context, call ethereum.CallMsg, blockNumber *big.Int) ([]byte, error)
+}
- // ContractCall executes an Ethereum contract call with the specified data as
- // the input. The pending flag requests execution against the pending block, not
- // the stable head of the chain.
- ContractCall(ctx context.Context, contract common.Address, data []byte, pending bool) ([]byte, error)
+// DeployBackend wraps the operations needed by WaitMined and WaitDeployed.
+type DeployBackend interface {
+ TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
+ CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
+}
+
+// PendingContractCaller defines methods to perform contract calls on the pending state.
+// Call will try to discover this interface when access to the pending state is requested.
+// If the backend does not support the pending state, Call returns ErrNoPendingState.
+type PendingContractCaller interface {
+ // PendingCodeAt returns the code of the given account in the pending state.
+ PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error)
+ // PendingCallContract executes an Ethereum contract call against the pending state.
+ PendingCallContract(ctx context.Context, call ethereum.CallMsg) ([]byte, error)
}
// ContractTransactor defines the methods needed to allow operating with contract
@@ -49,64 +73,25 @@ type ContractCaller interface {
// used when the user does not provide some needed values, but rather leaves it up
// to the transactor to decide.
type ContractTransactor interface {
- // PendingAccountNonce retrieves the current pending nonce associated with an
- // account.
- PendingAccountNonce(ctx context.Context, account common.Address) (uint64, error)
-
+ // PendingCodeAt returns the code of the given account in the pending state.
+ PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
+ // PendingNonceAt retrieves the current pending nonce associated with an account.
+ PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
// execution of a transaction.
SuggestGasPrice(ctx context.Context) (*big.Int, error)
-
- // HasCode checks if the contract at the given address has any code associated
- // with it or not. This is needed to differentiate between contract internal
- // errors and the local chain being out of sync.
- HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error)
-
- // EstimateGasLimit tries to estimate the gas needed to execute a specific
+ // EstimateGas tries to estimate the gas needed to execute a specific
// transaction based on the current pending state of the backend blockchain.
// There is no guarantee that this is the true gas limit requirement as other
// transactions may be added or removed by miners, but it should provide a basis
// for setting a reasonable default.
- EstimateGasLimit(ctx context.Context, sender common.Address, contract *common.Address, value *big.Int, data []byte) (*big.Int, error)
-
+ EstimateGas(ctx context.Context, call ethereum.CallMsg) (usedGas *big.Int, err error)
// SendTransaction injects the transaction into the pending pool for execution.
SendTransaction(ctx context.Context, tx *types.Transaction) error
}
-// ContractBackend defines the methods needed to allow operating with contract
-// on a read-write basis.
-//
-// This interface is essentially the union of ContractCaller and ContractTransactor
-// but due to a bug in the Go compiler (https://github.com/golang/go/issues/6977),
-// we cannot simply list it as the two interfaces. The other solution is to add a
-// third interface containing the common methods, but that convolutes the user API
-// as it introduces yet another parameter to require for initialization.
+// ContractBackend defines the methods needed to work with contracts on a read-write basis.
type ContractBackend interface {
- // HasCode checks if the contract at the given address has any code associated
- // with it or not. This is needed to differentiate between contract internal
- // errors and the local chain being out of sync.
- HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error)
-
- // ContractCall executes an Ethereum contract call with the specified data as
- // the input. The pending flag requests execution against the pending block, not
- // the stable head of the chain.
- ContractCall(ctx context.Context, contract common.Address, data []byte, pending bool) ([]byte, error)
-
- // PendingAccountNonce retrieves the current pending nonce associated with an
- // account.
- PendingAccountNonce(ctx context.Context, account common.Address) (uint64, error)
-
- // SuggestGasPrice retrieves the currently suggested gas price to allow a timely
- // execution of a transaction.
- SuggestGasPrice(ctx context.Context) (*big.Int, error)
-
- // EstimateGasLimit tries to estimate the gas needed to execute a specific
- // transaction based on the current pending state of the backend blockchain.
- // There is no guarantee that this is the true gas limit requirement as other
- // transactions may be added or removed by miners, but it should provide a basis
- // for setting a reasonable default.
- EstimateGasLimit(ctx context.Context, sender common.Address, contract *common.Address, value *big.Int, data []byte) (*big.Int, error)
-
- // SendTransaction injects the transaction into the pending pool for execution.
- SendTransaction(ctx context.Context, tx *types.Transaction) error
+ ContractCaller
+ ContractTransactor
}
diff --git a/accounts/abi/bind/backends/nil.go b/accounts/abi/bind/backends/nil.go
deleted file mode 100644
index 54b222f1f..000000000
--- a/accounts/abi/bind/backends/nil.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2016 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package backends
-
-import (
- "math/big"
-
- "github.com/ethereum/go-ethereum/accounts/abi/bind"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/types"
- "golang.org/x/net/context"
-)
-
-// This nil assignment ensures compile time that nilBackend implements bind.ContractBackend.
-var _ bind.ContractBackend = (*nilBackend)(nil)
-
-// nilBackend implements bind.ContractBackend, but panics on any method call.
-// Its sole purpose is to support the binding tests to construct the generated
-// wrappers without calling any methods on them.
-type nilBackend struct{}
-
-func (*nilBackend) ContractCall(context.Context, common.Address, []byte, bool) ([]byte, error) {
- panic("not implemented")
-}
-func (*nilBackend) EstimateGasLimit(context.Context, common.Address, *common.Address, *big.Int, []byte) (*big.Int, error) {
- panic("not implemented")
-}
-func (*nilBackend) HasCode(context.Context, common.Address, bool) (bool, error) {
- panic("not implemented")
-}
-func (*nilBackend) SuggestGasPrice(context.Context) (*big.Int, error) { panic("not implemented") }
-func (*nilBackend) PendingAccountNonce(context.Context, common.Address) (uint64, error) {
- panic("not implemented")
-}
-func (*nilBackend) SendTransaction(context.Context, *types.Transaction) error {
- panic("not implemented")
-}
-
-// NewNilBackend creates a new binding backend that can be used for instantiation
-// but will panic on any invocation. Its sole purpose is to help testing.
-func NewNilBackend() bind.ContractBackend {
- return new(nilBackend)
-}
diff --git a/accounts/abi/bind/backends/remote.go b/accounts/abi/bind/backends/remote.go
deleted file mode 100644
index 4793143e4..000000000
--- a/accounts/abi/bind/backends/remote.go
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2016 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package backends
-
-import (
- "encoding/json"
- "fmt"
- "math/big"
- "sync"
- "sync/atomic"
-
- "github.com/ethereum/go-ethereum/accounts/abi/bind"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/rlp"
- "github.com/ethereum/go-ethereum/rpc"
- "golang.org/x/net/context"
-)
-
-// This nil assignment ensures compile time that rpcBackend implements bind.ContractBackend.
-var _ bind.ContractBackend = (*rpcBackend)(nil)
-
-// rpcBackend implements bind.ContractBackend, and acts as the data provider to
-// Ethereum contracts bound to Go structs. It uses an RPC connection to delegate
-// all its functionality.
-//
-// Note: The current implementation is a blocking one. This should be replaced
-// by a proper async version when a real RPC client is created.
-type rpcBackend struct {
- client rpc.Client // RPC client connection to interact with an API server
- autoid uint32 // ID number to use for the next API request
- lock sync.Mutex // Singleton access until we get to request multiplexing
-}
-
-// NewRPCBackend creates a new binding backend to an RPC provider that can be
-// used to interact with remote contracts.
-func NewRPCBackend(client rpc.Client) bind.ContractBackend {
- return &rpcBackend{
- client: client,
- }
-}
-
-// request is a JSON RPC request package assembled internally from the client
-// method calls.
-type request struct {
- JSONRPC string `json:"jsonrpc"` // Version of the JSON RPC protocol, always set to 2.0
- ID int `json:"id"` // Auto incrementing ID number for this request
- Method string `json:"method"` // Remote procedure name to invoke on the server
- Params []interface{} `json:"params"` // List of parameters to pass through (keep types simple)
-}
-
-// response is a JSON RPC response package sent back from the API server.
-type response struct {
- JSONRPC string `json:"jsonrpc"` // Version of the JSON RPC protocol, always set to 2.0
- ID int `json:"id"` // Auto incrementing ID number for this request
- Error *failure `json:"error"` // Any error returned by the remote side
- Result json.RawMessage `json:"result"` // Whatever the remote side sends us in reply
-}
-
-// failure is a JSON RPC response error field sent back from the API server.
-type failure struct {
- Code int `json:"code"` // JSON RPC error code associated with the failure
- Message string `json:"message"` // Specific error message of the failure
-}
-
-// request forwards an API request to the RPC server, and parses the response.
-//
-// This is currently painfully non-concurrent, but it will have to do until we
-// find the time for niceties like this :P
-func (b *rpcBackend) request(ctx context.Context, method string, params []interface{}) (json.RawMessage, error) {
- b.lock.Lock()
- defer b.lock.Unlock()
-
- if ctx == nil {
- ctx = context.Background()
- }
-
- // Ugly hack to serialize an empty list properly
- if params == nil {
- params = []interface{}{}
- }
- // Assemble the request object
- reqID := int(atomic.AddUint32(&b.autoid, 1))
- req := &request{
- JSONRPC: "2.0",
- ID: reqID,
- Method: method,
- Params: params,
- }
- if err := b.client.Send(req); err != nil {
- return nil, err
- }
- res := new(response)
- errc := make(chan error, 1)
- go func() {
- errc <- b.client.Recv(res)
- }()
- select {
- case err := <-errc:
- if err != nil {
- return nil, err
- }
- case <-ctx.Done():
- return nil, ctx.Err()
- }
- if res.Error != nil {
- if res.Error.Message == bind.ErrNoCode.Error() {
- return nil, bind.ErrNoCode
- }
- return nil, fmt.Errorf("remote error: %s", res.Error.Message)
- }
- return res.Result, nil
-}
-
-// HasCode implements ContractVerifier.HasCode by retrieving any code associated
-// with the contract from the remote node, and checking its size.
-func (b *rpcBackend) HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error) {
- // Execute the RPC code retrieval
- block := "latest"
- if pending {
- block = "pending"
- }
- res, err := b.request(ctx, "eth_getCode", []interface{}{contract.Hex(), block})
- if err != nil {
- return false, err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return false, err
- }
- // Convert the response back to a Go byte slice and return
- return len(common.FromHex(hex)) > 0, nil
-}
-
-// ContractCall implements ContractCaller.ContractCall, delegating the execution of
-// a contract call to the remote node, returning the reply to for local processing.
-func (b *rpcBackend) ContractCall(ctx context.Context, contract common.Address, data []byte, pending bool) ([]byte, error) {
- // Pack up the request into an RPC argument
- args := struct {
- To common.Address `json:"to"`
- Data string `json:"data"`
- }{
- To: contract,
- Data: common.ToHex(data),
- }
- // Execute the RPC call and retrieve the response
- block := "latest"
- if pending {
- block = "pending"
- }
- res, err := b.request(ctx, "eth_call", []interface{}{args, block})
- if err != nil {
- return nil, err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return nil, err
- }
- // Convert the response back to a Go byte slice and return
- return common.FromHex(hex), nil
-}
-
-// PendingAccountNonce implements ContractTransactor.PendingAccountNonce, delegating
-// the current account nonce retrieval to the remote node.
-func (b *rpcBackend) PendingAccountNonce(ctx context.Context, account common.Address) (uint64, error) {
- res, err := b.request(ctx, "eth_getTransactionCount", []interface{}{account.Hex(), "pending"})
- if err != nil {
- return 0, err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return 0, err
- }
- nonce, ok := new(big.Int).SetString(hex, 0)
- if !ok {
- return 0, fmt.Errorf("invalid nonce hex: %s", hex)
- }
- return nonce.Uint64(), nil
-}
-
-// SuggestGasPrice implements ContractTransactor.SuggestGasPrice, delegating the
-// gas price oracle request to the remote node.
-func (b *rpcBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error) {
- res, err := b.request(ctx, "eth_gasPrice", nil)
- if err != nil {
- return nil, err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return nil, err
- }
- price, ok := new(big.Int).SetString(hex, 0)
- if !ok {
- return nil, fmt.Errorf("invalid price hex: %s", hex)
- }
- return price, nil
-}
-
-// EstimateGasLimit implements ContractTransactor.EstimateGasLimit, delegating
-// the gas estimation to the remote node.
-func (b *rpcBackend) EstimateGasLimit(ctx context.Context, sender common.Address, contract *common.Address, value *big.Int, data []byte) (*big.Int, error) {
- // Pack up the request into an RPC argument
- args := struct {
- From common.Address `json:"from"`
- To *common.Address `json:"to"`
- Value *rpc.HexNumber `json:"value"`
- Data string `json:"data"`
- }{
- From: sender,
- To: contract,
- Data: common.ToHex(data),
- Value: rpc.NewHexNumber(value),
- }
- // Execute the RPC call and retrieve the response
- res, err := b.request(ctx, "eth_estimateGas", []interface{}{args})
- if err != nil {
- return nil, err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return nil, err
- }
- estimate, ok := new(big.Int).SetString(hex, 0)
- if !ok {
- return nil, fmt.Errorf("invalid estimate hex: %s", hex)
- }
- return estimate, nil
-}
-
-// SendTransaction implements ContractTransactor.SendTransaction, delegating the
-// raw transaction injection to the remote node.
-func (b *rpcBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error {
- data, err := rlp.EncodeToBytes(tx)
- if err != nil {
- return err
- }
- res, err := b.request(ctx, "eth_sendRawTransaction", []interface{}{common.ToHex(data)})
- if err != nil {
- return err
- }
- var hex string
- if err := json.Unmarshal(res, &hex); err != nil {
- return err
- }
- return nil
-}
diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go
index 9bce3f988..29b4e8ea3 100644
--- a/accounts/abi/bind/backends/simulated.go
+++ b/accounts/abi/bind/backends/simulated.go
@@ -17,8 +17,12 @@
package backends
import (
+ "errors"
+ "fmt"
"math/big"
+ "sync"
+ "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -36,12 +40,15 @@ var chainConfig = &core.ChainConfig{HomesteadBlock: big.NewInt(0)}
// This nil assignment ensures compile time that SimulatedBackend implements bind.ContractBackend.
var _ bind.ContractBackend = (*SimulatedBackend)(nil)
+var errBlockNumberUnsupported = errors.New("SimulatedBackend cannot access blocks other than the latest block")
+
// SimulatedBackend implements bind.ContractBackend, simulating a blockchain in
// the background. Its main purpose is to allow easily testing contract bindings.
type SimulatedBackend struct {
database ethdb.Database // In memory database to store our testing data
blockchain *core.BlockChain // Ethereum blockchain to handle the consensus
+ mu sync.Mutex
pendingBlock *types.Block // Currently pending block that will be imported on request
pendingState *state.StateDB // Currently pending state that will be the active on on request
}
@@ -52,85 +59,133 @@ func NewSimulatedBackend(accounts ...core.GenesisAccount) *SimulatedBackend {
database, _ := ethdb.NewMemDatabase()
core.WriteGenesisBlockForTesting(database, accounts...)
blockchain, _ := core.NewBlockChain(database, chainConfig, new(core.FakePow), new(event.TypeMux))
-
- backend := &SimulatedBackend{
- database: database,
- blockchain: blockchain,
- }
- backend.Rollback()
-
+ backend := &SimulatedBackend{database: database, blockchain: blockchain}
+ backend.rollback()
return backend
}
// Commit imports all the pending transactions as a single block and starts a
// fresh new state.
func (b *SimulatedBackend) Commit() {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
if _, err := b.blockchain.InsertChain([]*types.Block{b.pendingBlock}); err != nil {
panic(err) // This cannot happen unless the simulator is wrong, fail in that case
}
- b.Rollback()
+ b.rollback()
}
// Rollback aborts all pending transactions, reverting to the last committed state.
func (b *SimulatedBackend) Rollback() {
- blocks, _ := core.GenerateChain(b.blockchain.CurrentBlock(), b.database, 1, func(int, *core.BlockGen) {})
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ b.rollback()
+}
+func (b *SimulatedBackend) rollback() {
+ blocks, _ := core.GenerateChain(nil, b.blockchain.CurrentBlock(), b.database, 1, func(int, *core.BlockGen) {})
b.pendingBlock = blocks[0]
b.pendingState, _ = state.New(b.pendingBlock.Root(), b.database)
}
-// HasCode implements ContractVerifier.HasCode, checking whether there is any
-// code associated with a certain account in the blockchain.
-func (b *SimulatedBackend) HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error) {
- if pending {
- return len(b.pendingState.GetCode(contract)) > 0, nil
+// CodeAt returns the code associated with a certain account in the blockchain.
+func (b *SimulatedBackend) CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
+ return nil, errBlockNumberUnsupported
}
statedb, _ := b.blockchain.State()
- return len(statedb.GetCode(contract)) > 0, nil
-}
-
-// ContractCall implements ContractCaller.ContractCall, executing the specified
-// contract with the given input data.
-func (b *SimulatedBackend) ContractCall(ctx context.Context, contract common.Address, data []byte, pending bool) ([]byte, error) {
- // Create a copy of the current state db to screw around with
- var (
- block *types.Block
- statedb *state.StateDB
- )
- if pending {
- block, statedb = b.pendingBlock, b.pendingState.Copy()
- } else {
- block = b.blockchain.CurrentBlock()
- statedb, _ = b.blockchain.State()
+ return statedb.GetCode(contract), nil
+}
+
+// BalanceAt returns the wei balance of a certain account in the blockchain.
+func (b *SimulatedBackend) BalanceAt(ctx context.Context, contract common.Address, blockNumber *big.Int) (*big.Int, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
+ return nil, errBlockNumberUnsupported
}
- // If there's no code to interact with, respond with an appropriate error
- if code := statedb.GetCode(contract); len(code) == 0 {
- return nil, bind.ErrNoCode
+ statedb, _ := b.blockchain.State()
+ return statedb.GetBalance(contract), nil
+}
+
+// NonceAt returns the nonce of a certain account in the blockchain.
+func (b *SimulatedBackend) NonceAt(ctx context.Context, contract common.Address, blockNumber *big.Int) (uint64, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
+ return 0, errBlockNumberUnsupported
}
- // Set infinite balance to the a fake caller account
- from := statedb.GetOrNewStateObject(common.Address{})
- from.SetBalance(common.MaxBig)
+ statedb, _ := b.blockchain.State()
+ return statedb.GetNonce(contract), nil
+}
+
+// StorageAt returns the value of key in the storage of an account in the blockchain.
+func (b *SimulatedBackend) StorageAt(ctx context.Context, contract common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
- // Assemble the call invocation to measure the gas usage
- msg := callmsg{
- from: from,
- to: &contract,
- gasPrice: new(big.Int),
- gasLimit: common.MaxBig,
- value: new(big.Int),
- data: data,
+ if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
+ return nil, errBlockNumberUnsupported
}
- // Execute the call and return
- vmenv := core.NewEnv(statedb, chainConfig, b.blockchain, msg, block.Header(), vm.Config{})
- gaspool := new(core.GasPool).AddGas(common.MaxBig)
+ statedb, _ := b.blockchain.State()
+ if obj := statedb.GetStateObject(contract); obj != nil {
+ val := obj.GetState(key)
+ return val[:], nil
+ }
+ return nil, nil
+}
+
+// TransactionReceipt returns the receipt of a transaction.
+func (b *SimulatedBackend) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) {
+ return core.GetReceipt(b.database, txHash), nil
+}
- out, _, err := core.ApplyMessage(vmenv, msg, gaspool)
- return out, err
+// PendingCodeAt returns the code associated with an account in the pending state.
+func (b *SimulatedBackend) PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ return b.pendingState.GetCode(contract), nil
}
-// PendingAccountNonce implements ContractTransactor.PendingAccountNonce, retrieving
+// CallContract executes a contract call.
+func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
+ return nil, errBlockNumberUnsupported
+ }
+ state, err := b.blockchain.State()
+ if err != nil {
+ return nil, err
+ }
+ rval, _, err := b.callContract(ctx, call, b.blockchain.CurrentBlock(), state)
+ return rval, err
+}
+
+// PendingCallContract executes a contract call on the pending state.
+func (b *SimulatedBackend) PendingCallContract(ctx context.Context, call ethereum.CallMsg) ([]byte, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ rval, _, err := b.callContract(ctx, call, b.pendingBlock, b.pendingState.Copy())
+ return rval, err
+}
+
+// PendingNonceAt implements PendingStateReader.PendingNonceAt, retrieving
// the nonce currently pending for the account.
-func (b *SimulatedBackend) PendingAccountNonce(ctx context.Context, account common.Address) (uint64, error) {
+func (b *SimulatedBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
return b.pendingState.GetOrNewStateObject(account).Nonce(), nil
}
@@ -140,46 +195,56 @@ func (b *SimulatedBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error
return big.NewInt(1), nil
}
-// EstimateGasLimit implements ContractTransactor.EstimateGasLimit, executing the
-// requested code against the currently pending block/state and returning the used
-// gas.
-func (b *SimulatedBackend) EstimateGasLimit(ctx context.Context, sender common.Address, contract *common.Address, value *big.Int, data []byte) (*big.Int, error) {
- // Create a copy of the currently pending state db to screw around with
- var (
- block = b.pendingBlock
- statedb = b.pendingState.Copy()
- )
- // If there's no code to interact with, respond with an appropriate error
- if contract != nil {
- if code := statedb.GetCode(*contract); len(code) == 0 {
- return nil, bind.ErrNoCode
- }
- }
- // Set infinite balance to the a fake caller account
- from := statedb.GetOrNewStateObject(sender)
- from.SetBalance(common.MaxBig)
+// EstimateGas executes the requested code against the currently pending block/state and
+// returns the used amount of gas.
+func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMsg) (*big.Int, error) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
- // Assemble the call invocation to measure the gas usage
- msg := callmsg{
- from: from,
- to: contract,
- gasPrice: new(big.Int),
- gasLimit: common.MaxBig,
- value: value,
- data: data,
+ _, gas, err := b.callContract(ctx, call, b.pendingBlock, b.pendingState.Copy())
+ return gas, err
+}
+
+// callContract implemens common code between normal and pending contract calls.
+// state is modified during execution, make sure to copy it if necessary.
+func (b *SimulatedBackend) callContract(ctx context.Context, call ethereum.CallMsg, block *types.Block, statedb *state.StateDB) ([]byte, *big.Int, error) {
+ // Ensure message is initialized properly.
+ if call.GasPrice == nil {
+ call.GasPrice = big.NewInt(1)
+ }
+ if call.Gas == nil || call.Gas.BitLen() == 0 {
+ call.Gas = big.NewInt(50000000)
}
- // Execute the call and return
+ if call.Value == nil {
+ call.Value = new(big.Int)
+ }
+ // Set infinite balance to the fake caller account.
+ from := statedb.GetOrNewStateObject(call.From)
+ from.SetBalance(common.MaxBig)
+ // Execute the call.
+ msg := callmsg{call}
vmenv := core.NewEnv(statedb, chainConfig, b.blockchain, msg, block.Header(), vm.Config{})
gaspool := new(core.GasPool).AddGas(common.MaxBig)
-
- _, gas, _, err := core.NewStateTransition(vmenv, msg, gaspool).TransitionDb()
- return gas, err
+ ret, gasUsed, _, err := core.NewStateTransition(vmenv, msg, gaspool).TransitionDb()
+ return ret, gasUsed, err
}
-// SendTransaction implements ContractTransactor.SendTransaction, delegating the raw
-// transaction injection to the remote node.
+// SendTransaction updates the pending block to include the given transaction.
+// It panics if the transaction is invalid.
func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error {
- blocks, _ := core.GenerateChain(b.blockchain.CurrentBlock(), b.database, 1, func(number int, block *core.BlockGen) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ sender, err := tx.From()
+ if err != nil {
+ panic(fmt.Errorf("invalid transaction: %v", err))
+ }
+ nonce := b.pendingState.GetNonce(sender)
+ if tx.Nonce() != nonce {
+ panic(fmt.Errorf("invalid transaction nonce: got %d, want %d", tx.Nonce(), nonce))
+ }
+
+ blocks, _ := core.GenerateChain(nil, b.blockchain.CurrentBlock(), b.database, 1, func(number int, block *core.BlockGen) {
for _, tx := range b.pendingBlock.Transactions() {
block.AddTx(tx)
}
@@ -187,26 +252,20 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transa
})
b.pendingBlock = blocks[0]
b.pendingState, _ = state.New(b.pendingBlock.Root(), b.database)
-
return nil
}
// callmsg implements core.Message to allow passing it as a transaction simulator.
type callmsg struct {
- from *state.StateObject
- to *common.Address
- gasLimit *big.Int
- gasPrice *big.Int
- value *big.Int
- data []byte
+ ethereum.CallMsg
}
-func (m callmsg) From() (common.Address, error) { return m.from.Address(), nil }
-func (m callmsg) FromFrontier() (common.Address, error) { return m.from.Address(), nil }
+func (m callmsg) From() (common.Address, error) { return m.CallMsg.From, nil }
+func (m callmsg) FromFrontier() (common.Address, error) { return m.CallMsg.From, nil }
func (m callmsg) Nonce() uint64 { return 0 }
func (m callmsg) CheckNonce() bool { return false }
-func (m callmsg) To() *common.Address { return m.to }
-func (m callmsg) GasPrice() *big.Int { return m.gasPrice }
-func (m callmsg) Gas() *big.Int { return m.gasLimit }
-func (m callmsg) Value() *big.Int { return m.value }
-func (m callmsg) Data() []byte { return m.data }
+func (m callmsg) To() *common.Address { return m.CallMsg.To }
+func (m callmsg) GasPrice() *big.Int { return m.CallMsg.GasPrice }
+func (m callmsg) Gas() *big.Int { return m.CallMsg.Gas }
+func (m callmsg) Value() *big.Int { return m.CallMsg.Value }
+func (m callmsg) Data() []byte { return m.CallMsg.Data }
diff --git a/accounts/abi/bind/base.go b/accounts/abi/bind/base.go
index 80948d3f1..965f51e85 100644
--- a/accounts/abi/bind/base.go
+++ b/accounts/abi/bind/base.go
@@ -20,8 +20,8 @@ import (
"errors"
"fmt"
"math/big"
- "sync/atomic"
+ "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
@@ -62,9 +62,6 @@ type BoundContract struct {
abi abi.ABI // Reflect based ABI to access the correct Ethereum methods
caller ContractCaller // Read interface to interact with the blockchain
transactor ContractTransactor // Write interface to interact with the blockchain
-
- latestHasCode uint32 // Cached verification that the latest state contains code for this contract
- pendingHasCode uint32 // Cached verification that the pending state contains code for this contract
}
// NewBoundContract creates a low level contract interface through which calls
@@ -105,25 +102,42 @@ func (c *BoundContract) Call(opts *CallOpts, result interface{}, method string,
if opts == nil {
opts = new(CallOpts)
}
- // Make sure we have a contract to operate on, and bail out otherwise
- if (opts.Pending && atomic.LoadUint32(&c.pendingHasCode) == 0) || (!opts.Pending && atomic.LoadUint32(&c.latestHasCode) == 0) {
- if code, err := c.caller.HasCode(opts.Context, c.address, opts.Pending); err != nil {
- return err
- } else if !code {
- return ErrNoCode
- }
- if opts.Pending {
- atomic.StoreUint32(&c.pendingHasCode, 1)
- } else {
- atomic.StoreUint32(&c.latestHasCode, 1)
- }
- }
// Pack the input, call and unpack the results
input, err := c.abi.Pack(method, params...)
if err != nil {
return err
}
- output, err := c.caller.ContractCall(opts.Context, c.address, input, opts.Pending)
+ var (
+ msg = ethereum.CallMsg{To: &c.address, Data: input}
+ ctx = ensureContext(opts.Context)
+ code []byte
+ output []byte
+ )
+ if opts.Pending {
+ pb, ok := c.caller.(PendingContractCaller)
+ if !ok {
+ return ErrNoPendingState
+ }
+ output, err = pb.PendingCallContract(ctx, msg)
+ if err == nil && len(output) == 0 {
+ // Make sure we have a contract to operate on, and bail out otherwise.
+ if code, err = pb.PendingCodeAt(ctx, c.address); err != nil {
+ return err
+ } else if len(code) == 0 {
+ return ErrNoCode
+ }
+ }
+ } else {
+ output, err = c.caller.CallContract(ctx, msg, nil)
+ if err == nil && len(output) == 0 {
+ // Make sure we have a contract to operate on, and bail out otherwise.
+ if code, err = c.caller.CodeAt(ctx, c.address, nil); err != nil {
+ return err
+ } else if len(code) == 0 {
+ return ErrNoCode
+ }
+ }
+ }
if err != nil {
return err
}
@@ -158,7 +172,7 @@ func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, i
}
nonce := uint64(0)
if opts.Nonce == nil {
- nonce, err = c.transactor.PendingAccountNonce(opts.Context, opts.From)
+ nonce, err = c.transactor.PendingNonceAt(ensureContext(opts.Context), opts.From)
if err != nil {
return nil, fmt.Errorf("failed to retrieve account nonce: %v", err)
}
@@ -168,7 +182,7 @@ func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, i
// Figure out the gas allowance and gas price values
gasPrice := opts.GasPrice
if gasPrice == nil {
- gasPrice, err = c.transactor.SuggestGasPrice(opts.Context)
+ gasPrice, err = c.transactor.SuggestGasPrice(ensureContext(opts.Context))
if err != nil {
return nil, fmt.Errorf("failed to suggest gas price: %v", err)
}
@@ -176,18 +190,18 @@ func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, i
gasLimit := opts.GasLimit
if gasLimit == nil {
// Gas estimation cannot succeed without code for method invocations
- if contract != nil && atomic.LoadUint32(&c.pendingHasCode) == 0 {
- if code, err := c.transactor.HasCode(opts.Context, c.address, true); err != nil {
+ if contract != nil {
+ if code, err := c.transactor.PendingCodeAt(ensureContext(opts.Context), c.address); err != nil {
return nil, err
- } else if !code {
+ } else if len(code) == 0 {
return nil, ErrNoCode
}
- atomic.StoreUint32(&c.pendingHasCode, 1)
}
// If the contract surely has code (or code is not needed), estimate the transaction
- gasLimit, err = c.transactor.EstimateGasLimit(opts.Context, opts.From, contract, value, input)
+ msg := ethereum.CallMsg{From: opts.From, To: contract, Value: value, Data: input}
+ gasLimit, err = c.transactor.EstimateGas(ensureContext(opts.Context), msg)
if err != nil {
- return nil, fmt.Errorf("failed to exstimate gas needed: %v", err)
+ return nil, fmt.Errorf("failed to estimate gas needed: %v", err)
}
}
// Create the transaction, sign it and schedule it for execution
@@ -204,8 +218,15 @@ func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, i
if err != nil {
return nil, err
}
- if err := c.transactor.SendTransaction(opts.Context, signedTx); err != nil {
+ if err := c.transactor.SendTransaction(ensureContext(opts.Context), signedTx); err != nil {
return nil, err
}
return signedTx, nil
}
+
+func ensureContext(ctx context.Context) context.Context {
+ if ctx == nil {
+ return context.TODO()
+ }
+ return ctx
+}
diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go
index a80560821..67c09c3ad 100644
--- a/accounts/abi/bind/bind_test.go
+++ b/accounts/abi/bind/bind_test.go
@@ -44,13 +44,13 @@ var bindTests = []struct {
`606060405260068060106000396000f3606060405200`,
`[]`,
`
- if b, err := NewEmpty(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewEmpty(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("combined binding (%v) nil or error (%v) not nil", b, nil)
}
- if b, err := NewEmptyCaller(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewEmptyCaller(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("caller binding (%v) nil or error (%v) not nil", b, nil)
}
- if b, err := NewEmptyTransactor(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewEmptyTransactor(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("transactor binding (%v) nil or error (%v) not nil", b, nil)
}
`,
@@ -62,7 +62,7 @@ var bindTests = []struct {
`60606040526040516107fd3803806107fd83398101604052805160805160a05160c051929391820192909101600160a060020a0333166000908152600360209081526040822086905581548551838052601f6002600019610100600186161502019093169290920482018390047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390810193919290918801908390106100e857805160ff19168380011785555b506101189291505b8082111561017157600081556001016100b4565b50506002805460ff19168317905550505050610658806101a56000396000f35b828001600101855582156100ac579182015b828111156100ac5782518260005055916020019190600101906100fa565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061017557805160ff19168380011785555b506100c89291506100b4565b5090565b82800160010185558215610165579182015b8281111561016557825182600050559160200191906001019061018756606060405236156100775760e060020a600035046306fdde03811461007f57806323b872dd146100dc578063313ce5671461010e57806370a082311461011a57806395d89b4114610132578063a9059cbb1461018e578063cae9ca51146101bd578063dc3080f21461031c578063dd62ed3e14610341575b610365610002565b61036760008054602060026001831615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104eb5780601f106104c0576101008083540402835291602001916104eb565b6103d5600435602435604435600160a060020a038316600090815260036020526040812054829010156104f357610002565b6103e760025460ff1681565b6103d560043560036020526000908152604090205481565b610367600180546020600282841615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104eb5780601f106104c0576101008083540402835291602001916104eb565b610365600435602435600160a060020a033316600090815260036020526040902054819010156103f157610002565b60806020604435600481810135601f8101849004909302840160405260608381526103d5948235946024803595606494939101919081908382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156102f25780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546103d59081565b60046020818152903560009081526040808220909252602435815220546103d59081565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6060908152602090f35b600160a060020a03821660009081526040902054808201101561041357610002565b806003600050600033600160a060020a03168152602001908152602001600020600082828250540392505081905550806003600050600084600160a060020a0316815260200190815260200160002060008282825054019250508190555081600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b820191906000526020600020905b8154815290600101906020018083116104ce57829003601f168201915b505050505081565b600160a060020a03831681526040812054808301101561051257610002565b600160a060020a0380851680835260046020908152604080852033949094168086529382528085205492855260058252808520938552929052908220548301111561055c57610002565b816003600050600086600160a060020a03168152602001908152602001600020600082828250540392505081905550816003600050600085600160a060020a03168152602001908152602001600020600082828250540192505081905550816005600050600086600160a060020a03168152602001908152602001600020600050600033600160a060020a0316815260200190815260200160002060008282825054019250508190555082600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3939250505056`,
`[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"spentAllowance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"decimalUnits","type":"uint8"},{"name":"tokenSymbol","type":"string"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]`,
`
- if b, err := NewToken(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewToken(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil)
}
`,
@@ -73,7 +73,7 @@ var bindTests = []struct {
`606060408190526007805460ff1916905560a0806105a883396101006040529051608051915160c05160e05160008054600160a060020a03199081169095178155670de0b6b3a7640000958602600155603c9093024201600355930260045560058054909216909217905561052f90819061007990396000f36060604052361561006c5760e060020a600035046301cb3b20811461008257806329dcb0cf1461014457806338af3eed1461014d5780636e66f6e91461015f5780637a3a0e84146101715780637b3e5e7b1461017a578063a035b1fe14610183578063dc0d3dff1461018c575b61020060075460009060ff161561032357610002565b61020060035460009042106103205760025460015490106103cb576002548154600160a060020a0316908290606082818181858883f150915460025460408051600160a060020a039390931683526020830191909152818101869052517fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6945090819003909201919050a15b60405160008054600160a060020a039081169230909116319082818181858883f150506007805460ff1916600117905550505050565b6103a160035481565b6103ab600054600160a060020a031681565b6103ab600554600160a060020a031681565b6103a160015481565b6103a160025481565b6103a160045481565b6103be60043560068054829081101561000257506000526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101547ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d409190910154600160a060020a03919091169082565b005b505050815481101561000257906000526020600020906002020160005060008201518160000160006101000a815481600160a060020a030219169083021790555060208201518160010160005055905050806002600082828250540192505081905550600560009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360046000505484046040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506000604051808303816000876161da5a03f11561000257505060408051600160a060020a03331681526020810184905260018183015290517fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf692509081900360600190a15b50565b5060a0604052336060908152346080819052600680546001810180835592939282908280158290116102025760020281600202836000526020600020918201910161020291905b8082111561039d57805473ffffffffffffffffffffffffffffffffffffffff19168155600060019190910190815561036a565b5090565b6060908152602090f35b600160a060020a03166060908152602090f35b6060918252608052604090f35b5b60065481101561010e576006805482908110156100025760009182526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600680549254600160a060020a0316928490811015610002576002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40015460405190915082818181858883f19350505050507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf660066000508281548110156100025760008290526002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01548154600160a060020a039190911691908490811015610002576002027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40015460408051600160a060020a0394909416845260208401919091526000838201525191829003606001919050a16001016103cc56`,
`[{"constant":false,"inputs":[],"name":"checkGoalReached","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"tokenReward","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"fundingGoal","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"amountRaised","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"funders","outputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"type":"function"},{"inputs":[{"name":"ifSuccessfulSendTo","type":"address"},{"name":"fundingGoalInEthers","type":"uint256"},{"name":"durationInMinutes","type":"uint256"},{"name":"etherCostOfEachToken","type":"uint256"},{"name":"addressOfTokenUsedAsReward","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"isContribution","type":"bool"}],"name":"FundTransfer","type":"event"}]`,
`
- if b, err := NewCrowdsale(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewCrowdsale(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil)
}
`,
@@ -84,7 +84,7 @@ var bindTests = []struct {
`606060405260405160808061145f833960e06040529051905160a05160c05160008054600160a060020a03191633179055600184815560028490556003839055600780549182018082558280158290116100b8576003028160030283600052602060002091820191016100b891906101c8565b50506060919091015160029190910155600160a060020a0381166000146100a65760008054600160a060020a031916821790555b505050506111f18061026e6000396000f35b505060408051608081018252600080825260208281018290528351908101845281815292820192909252426060820152600780549194509250811015610002579081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889050815181546020848101517401000000000000000000000000000000000000000002600160a060020a03199290921690921760a060020a60ff021916178255604083015180516001848101805460008281528690209195600293821615610100026000190190911692909204601f9081018390048201949192919091019083901061023e57805160ff19168380011785555b50610072929150610226565b5050600060028201556001015b8082111561023a578054600160a860020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061020c57506101bb565b601f0160209004906000526020600020908101906101bb91905b8082111561023a5760008155600101610226565b5090565b828001600101855582156101af579182015b828111156101af57825182600050559160200191906001019061025056606060405236156100b95760e060020a6000350463013cf08b81146100bb578063237e9492146101285780633910682114610281578063400e3949146102995780635daf08ca146102a257806369bd34361461032f5780638160f0b5146103385780638da5cb5b146103415780639644fcbd14610353578063aa02a90f146103be578063b1050da5146103c7578063bcca1fd3146104b5578063d3c0715b146104dc578063eceb29451461058d578063f2fde38b1461067b575b005b61069c6004356004805482908110156100025790600052602060002090600a02016000506005810154815460018301546003840154600485015460068601546007870154600160a060020a03959095169750929560020194919360ff828116946101009093041692919089565b60408051602060248035600481810135601f81018590048502860185019096528585526107759581359591946044949293909201918190840183828082843750949650505050505050600060006004600050848154811015610002575090527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e600a8402908101547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101904210806101e65750600481015460ff165b8061026757508060000160009054906101000a9004600160a060020a03168160010160005054846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f15090500193505050506040518091039020816007016000505414155b8061027757506001546005820154105b1561109257610002565b61077560043560066020526000908152604090205481565b61077560055481565b61078760043560078054829081101561000257506000526003026000805160206111d18339815191528101547fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a820154600160a060020a0382169260a060020a90920460ff16917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689019084565b61077560025481565b61077560015481565b610830600054600160a060020a031681565b604080516020604435600481810135601f81018490048402850184019095528484526100b9948135946024803595939460649492939101918190840183828082843750949650505050505050600080548190600160a060020a03908116339091161461084d57610002565b61077560035481565b604080516020604435600481810135601f8101849004840285018401909552848452610775948135946024803595939460649492939101918190840183828082843750506040805160209735808a0135601f81018a90048a0283018a019093528282529698976084979196506024909101945090925082915084018382808284375094965050505050505033600160a060020a031660009081526006602052604081205481908114806104ab5750604081205460078054909190811015610002579082526003026000805160206111d1833981519152015460a060020a900460ff16155b15610ce557610002565b6100b960043560243560443560005433600160a060020a03908116911614610b1857610002565b604080516020604435600481810135601f810184900484028501840190955284845261077594813594602480359593946064949293910191819084018382808284375094965050505050505033600160a060020a031660009081526006602052604081205481908114806105835750604081205460078054909190811015610002579082526003026000805160206111d18339815191520181505460a060020a900460ff16155b15610f1d57610002565b604080516020606435600481810135601f81018490048402850184019095528484526107759481359460248035956044359560849492019190819084018382808284375094965050505050505060006000600460005086815481101561000257908252600a027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01815090508484846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f150905001935050505060405180910390208160070160005054149150610cdc565b6100b960043560005433600160a060020a03908116911614610f0857610002565b604051808a600160a060020a031681526020018981526020018060200188815260200187815260200186815260200185815260200184815260200183815260200182810382528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561075e5780601f106107335761010080835404028352916020019161075e565b820191906000526020600020905b81548152906001019060200180831161074157829003601f168201915b50509a505050505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a038616815260208101859052606081018390526080918101828152845460026001821615610100026000190190911604928201839052909160a08301908590801561081e5780601f106107f35761010080835404028352916020019161081e565b820191906000526020600020905b81548152906001019060200180831161080157829003601f168201915b50509550505050505060405180910390f35b60408051600160a060020a03929092168252519081900360200190f35b600160a060020a03851660009081526006602052604081205414156108a957604060002060078054918290556001820180825582801582901161095c5760030281600302836000526020600020918201910161095c9190610a4f565b600160a060020a03851660009081526006602052604090205460078054919350908390811015610002575060005250600381026000805160206111d183398151915201805474ff0000000000000000000000000000000000000000191660a060020a85021781555b60408051600160a060020a03871681526020810186905281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a15050505050565b505050915081506080604051908101604052808681526020018581526020018481526020014281526020015060076000508381548110156100025790600052602060002090600302016000508151815460208481015160a060020a02600160a060020a03199290921690921774ff00000000000000000000000000000000000000001916178255604083015180516001848101805460008281528690209195600293821615610100026000190190911692909204601f90810183900482019491929190910190839010610ad357805160ff19168380011785555b50610b03929150610abb565b5050600060028201556001015b80821115610acf57805474ffffffffffffffffffffffffffffffffffffffffff1916815560018181018054600080835592600290821615610100026000190190911604601f819010610aa15750610a42565b601f016020900490600052602060002090810190610a4291905b80821115610acf5760008155600101610abb565b5090565b82800160010185558215610a36579182015b82811115610a36578251826000505591602001919060010190610ae5565b50506060919091015160029190910155610911565b600183905560028290556003819055604080518481526020810184905280820183905290517fa439d3fa452be5e0e1e24a8145e715f4fd8b9c08c96a42fd82a855a85e5d57de9181900360600190a1505050565b50508585846040518084600160a060020a0316606060020a0281526014018381526020018280519060200190808383829060006004602084601f0104600f02600301f150905001935050505060405180910390208160070160005081905550600260005054603c024201816003016000508190555060008160040160006101000a81548160ff0219169083021790555060008160040160016101000a81548160ff02191690830217905550600081600501600050819055507f646fec02522b41e7125cfc859a64fd4f4cefd5dc3b6237ca0abe251ded1fa881828787876040518085815260200184600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610cc45780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1600182016005555b50949350505050565b6004805460018101808355909190828015829011610d1c57600a0281600a028360005260206000209182019101610d1c9190610db8565b505060048054929450918491508110156100025790600052602060002090600a02016000508054600160a060020a031916871781556001818101879055855160028381018054600082815260209081902096975091959481161561010002600019011691909104601f90810182900484019391890190839010610ed857805160ff19168380011785555b50610b6c929150610abb565b50506001015b80821115610acf578054600160a060020a03191681556000600182810182905560028381018054848255909281161561010002600019011604601f819010610e9c57505b5060006003830181905560048301805461ffff191690556005830181905560068301819055600783018190556008830180548282559082526020909120610db2916002028101905b80821115610acf57805474ffffffffffffffffffffffffffffffffffffffffff1916815560018181018054600080835592600290821615610100026000190190911604601f819010610eba57505b5050600101610e44565b601f016020900490600052602060002090810190610dfc9190610abb565b601f016020900490600052602060002090810190610e929190610abb565b82800160010185558215610da6579182015b82811115610da6578251826000505591602001919060010190610eea565b60008054600160a060020a0319168217905550565b600480548690811015610002576000918252600a027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260098201602052604090205490915060ff1660011415610f8457610002565b33600160a060020a031660009081526009820160205260409020805460ff1916600190811790915560058201805490910190558315610fcd576006810180546001019055610fda565b6006810180546000190190555b7fc34f869b7ff431b034b7b9aea9822dac189a685e0b015c7d1be3add3f89128e8858533866040518085815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1509392505050565b6006810154600354901315611158578060000160009054906101000a9004600160a060020a0316600160a060020a03168160010160005054670de0b6b3a76400000284604051808280519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156111225780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f15050505060048101805460ff191660011761ff00191661010017905561116d565b60048101805460ff191660011761ff00191690555b60068101546005820154600483015460408051888152602081019490945283810192909252610100900460ff166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a1509291505056a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688`,
`[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"proposals","outputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"description","type":"string"},{"name":"votingDeadline","type":"uint256"},{"name":"executed","type":"bool"},{"name":"proposalPassed","type":"bool"},{"name":"numberOfVotes","type":"uint256"},{"name":"currentResult","type":"int256"},{"name":"proposalHash","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"transactionBytecode","type":"bytes"}],"name":"executeProposal","outputs":[{"name":"result","type":"int256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"memberId","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"numProposals","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"members","outputs":[{"name":"member","type":"address"},{"name":"canVote","type":"bool"},{"name":"name","type":"string"},{"name":"memberSince","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"debatingPeriodInMinutes","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"minimumQuorum","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"targetMember","type":"address"},{"name":"canVote","type":"bool"},{"name":"memberName","type":"string"}],"name":"changeMembership","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"majorityMargin","outputs":[{"name":"","type":"int256"}],"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"etherAmount","type":"uint256"},{"name":"JobDescription","type":"string"},{"name":"transactionBytecode","type":"bytes"}],"name":"newProposal","outputs":[{"name":"proposalID","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"minimumQuorumForProposals","type":"uint256"},{"name":"minutesForDebate","type":"uint256"},{"name":"marginOfVotesForMajority","type":"int256"}],"name":"changeVotingRules","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"supportsProposal","type":"bool"},{"name":"justificationText","type":"string"}],"name":"vote","outputs":[{"name":"voteID","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"proposalNumber","type":"uint256"},{"name":"beneficiary","type":"address"},{"name":"etherAmount","type":"uint256"},{"name":"transactionBytecode","type":"bytes"}],"name":"checkProposalCode","outputs":[{"name":"codeChecksOut","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"type":"function"},{"inputs":[{"name":"minimumQuorumForProposals","type":"uint256"},{"name":"minutesForDebate","type":"uint256"},{"name":"marginOfVotesForMajority","type":"int256"},{"name":"congressLeader","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"description","type":"string"}],"name":"ProposalAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"position","type":"bool"},{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"justification","type":"string"}],"name":"Voted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"proposalID","type":"uint256"},{"indexed":false,"name":"result","type":"int256"},{"indexed":false,"name":"quorum","type":"uint256"},{"indexed":false,"name":"active","type":"bool"}],"name":"ProposalTallied","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"member","type":"address"},{"indexed":false,"name":"isMember","type":"bool"}],"name":"MembershipChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minimumQuorum","type":"uint256"},{"indexed":false,"name":"debatingPeriodInMinutes","type":"uint256"},{"indexed":false,"name":"majorityMargin","type":"int256"}],"name":"ChangeOfRules","type":"event"}]`,
`
- if b, err := NewDAO(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ if b, err := NewDAO(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil)
}
`,
@@ -102,7 +102,7 @@ var bindTests = []struct {
{"type":"function","name":"mixedInputs","constant":true,"inputs":[{"name":"","type":"string"},{"name":"str","type":"string"}],"outputs":[]}
]
`,
- `if b, err := NewInputChecker(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ `if b, err := NewInputChecker(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil)
} else if false { // Don't run, just compile and test types
var err error
@@ -130,7 +130,7 @@ var bindTests = []struct {
{"type":"function","name":"mixedOutputs","constant":true,"inputs":[],"outputs":[{"name":"","type":"string"},{"name":"str","type":"string"}]}
]
`,
- `if b, err := NewOutputChecker(common.Address{}, backends.NewNilBackend()); b == nil || err != nil {
+ `if b, err := NewOutputChecker(common.Address{}, nil); b == nil || err != nil {
t.Fatalf("binding (%v) nil or error (%v) not nil", b, nil)
} else if false { // Don't run, just compile and test types
var str1, str2 string
@@ -376,7 +376,7 @@ func TestBindings(t *testing.T) {
t.Skip("go sdk not found for testing")
}
// Skip the test if the go-ethereum sources are symlinked (https://github.com/golang/go/issues/14845)
- linkTestCode := fmt.Sprintf("package linktest\nfunc CheckSymlinks(){\nfmt.Println(backends.NewNilBackend())\n}")
+ linkTestCode := fmt.Sprintf("package linktest\nfunc CheckSymlinks(){\nfmt.Println(backends.NewSimulatedBackend())\n}")
linkTestDeps, err := imports.Process("", []byte(linkTestCode), nil)
if err != nil {
t.Fatalf("failed check for goimports symlink bug: %v", err)
diff --git a/accounts/abi/bind/template.go b/accounts/abi/bind/template.go
index 72998bb6d..523122213 100644
--- a/accounts/abi/bind/template.go
+++ b/accounts/abi/bind/template.go
@@ -127,7 +127,7 @@ package {{.Package}}
// New{{.Type}} creates a new instance of {{.Type}}, bound to a specific deployed contract.
func New{{.Type}}(address common.Address, backend bind.ContractBackend) (*{{.Type}}, error) {
- contract, err := bind{{.Type}}(address, backend.(bind.ContractCaller), backend.(bind.ContractTransactor))
+ contract, err := bind{{.Type}}(address, backend, backend)
if err != nil {
return nil, err
}
diff --git a/accounts/abi/bind/util.go b/accounts/abi/bind/util.go
new file mode 100644
index 000000000..bbb6d6a75
--- /dev/null
+++ b/accounts/abi/bind/util.go
@@ -0,0 +1,76 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package bind
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "golang.org/x/net/context"
+)
+
+// WaitMined waits for tx to be mined on the blockchain.
+// It stops waiting when the context is canceled.
+func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*types.Receipt, error) {
+ queryTicker := time.NewTicker(1 * time.Second)
+ defer queryTicker.Stop()
+ loghash := tx.Hash().Hex()[:8]
+ for {
+ receipt, err := b.TransactionReceipt(ctx, tx.Hash())
+ if receipt != nil {
+ return receipt, nil
+ }
+ if err != nil {
+ glog.V(logger.Detail).Infof("tx %x error: %v", loghash, err)
+ } else {
+ glog.V(logger.Detail).Infof("tx %x not yet mined...", loghash)
+ }
+ // Wait for the next round.
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ case <-queryTicker.C:
+ }
+ }
+}
+
+// WaitDeployed waits for a contract deployment transaction and returns the on-chain
+// contract address when it is mined. It stops waiting when ctx is canceled.
+func WaitDeployed(ctx context.Context, b DeployBackend, tx *types.Transaction) (common.Address, error) {
+ if tx.To() != nil {
+ return common.Address{}, fmt.Errorf("tx is not contract creation")
+ }
+ receipt, err := WaitMined(ctx, b, tx)
+ if err != nil {
+ return common.Address{}, err
+ }
+ if receipt.ContractAddress == (common.Address{}) {
+ return common.Address{}, fmt.Errorf("zero address")
+ }
+ // Check that code has indeed been deployed at the address.
+ // This matters on pre-Homestead chains: OOG in the constructor
+ // could leave an empty account behind.
+ code, err := b.CodeAt(ctx, receipt.ContractAddress, nil)
+ if err == nil && len(code) == 0 {
+ err = ErrNoCodeAfterDeploy
+ }
+ return receipt.ContractAddress, err
+}
diff --git a/accounts/abi/bind/util_test.go b/accounts/abi/bind/util_test.go
new file mode 100644
index 000000000..192fa4f4c
--- /dev/null
+++ b/accounts/abi/bind/util_test.go
@@ -0,0 +1,93 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package bind_test
+
+import (
+ "math/big"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+ "golang.org/x/net/context"
+)
+
+var testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
+
+var waitDeployedTests = map[string]struct {
+ code string
+ gas *big.Int
+ wantAddress common.Address
+ wantErr error
+}{
+ "successful deploy": {
+ code: `6060604052600a8060106000396000f360606040526008565b00`,
+ gas: big.NewInt(3000000),
+ wantAddress: common.HexToAddress("0x3a220f351252089d385b29beca14e27f204c296a"),
+ },
+ "empty code": {
+ code: ``,
+ gas: big.NewInt(300000),
+ wantErr: bind.ErrNoCodeAfterDeploy,
+ wantAddress: common.HexToAddress("0x3a220f351252089d385b29beca14e27f204c296a"),
+ },
+}
+
+func TestWaitDeployed(t *testing.T) {
+ for name, test := range waitDeployedTests {
+ backend := backends.NewSimulatedBackend(core.GenesisAccount{
+ Address: crypto.PubkeyToAddress(testKey.PublicKey),
+ Balance: big.NewInt(10000000000),
+ })
+
+ // Create the transaction.
+ tx := types.NewContractCreation(0, big.NewInt(0), test.gas, big.NewInt(1), common.FromHex(test.code))
+ tx, _ = tx.SignECDSA(testKey)
+
+ // Wait for it to get mined in the background.
+ var (
+ err error
+ address common.Address
+ mined = make(chan struct{})
+ ctx = context.Background()
+ )
+ go func() {
+ address, err = bind.WaitDeployed(ctx, backend, tx)
+ close(mined)
+ }()
+
+ // Send and mine the transaction.
+ backend.SendTransaction(ctx, tx)
+ backend.Commit()
+
+ select {
+ case <-mined:
+ if err != test.wantErr {
+ t.Errorf("test %q: error mismatch: got %q, want %q", name, err, test.wantErr)
+ }
+ if address != test.wantAddress {
+ t.Errorf("test %q: unexpected contract address %s", name, address.Hex())
+ }
+ case <-time.After(2 * time.Second):
+ t.Errorf("test %q: timeout", name)
+ }
+ }
+}
diff --git a/accounts/account_manager.go b/accounts/account_manager.go
index 982a2ca6e..bfb7556d6 100644
--- a/accounts/account_manager.go
+++ b/accounts/account_manager.go
@@ -34,8 +34,6 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/p2p"
- "github.com/ethereum/go-ethereum/rpc"
)
var (
@@ -342,23 +340,3 @@ func zeroKey(k *ecdsa.PrivateKey) {
b[i] = 0
}
}
-
-// APIs implements node.Service
-func (am *Manager) APIs() []rpc.API {
- return nil
-}
-
-// Protocols implements node.Service
-func (am *Manager) Protocols() []p2p.Protocol {
- return nil
-}
-
-// Start implements node.Service
-func (am *Manager) Start(srvr *p2p.Server) error {
- return nil
-}
-
-// Stop implements node.Service
-func (am *Manager) Stop() error {
- return nil
-}
diff --git a/appveyor.yml b/appveyor.yml
index 89d3dfe3d..0b1c919d8 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -6,26 +6,28 @@ clone_depth: 5
version: "{branch}.{build}"
environment:
global:
+ # Go stuff
GOPATH: c:\gopath
-
-# cache choco package files so we don't hit sourceforge all
-# the time.
-cache:
- - c:\cache
+ GO: c:\go\bin\go
+ GOROOT: c:\go
+ CC: C:\msys64\mingw64\bin\gcc.exe
+ # MSYS2 stuff
+ MSYS2_ARCH: x86_64
+ MSYSTEM: MINGW64
+ PATH: C:\msys64\mingw64\bin\;%PATH%
install:
- - cmd: choco install --cache c:\cache golang mingw | find /v "Extracting "
- - refreshenv
- - cd c:\gopath\src\github.com\ethereum\go-ethereum
+ - "%GO% version"
+ - "%CC% --version"
build_script:
- - go run build\ci.go install
+ - "%GO% run build\\ci.go install"
test_script:
- - go run build\ci.go test -vet -coverage
+ - "%GO% run build\\ci.go test -vet -coverage"
after_build:
- - go run build\ci.go archive -type zip
+ - "%GO% run build\\ci.go archive -type zip"
artifacts:
- path: geth-*.zip
diff --git a/build/ci.go b/build/ci.go
index 33d97c182..3011a6976 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -28,6 +28,7 @@ Available commands are:
archive [ -type zip|tar ] -- archives build artefacts
importkeys -- imports signing keys from env
debsrc [ -sign key-id ] [ -upload dest ] -- creates a debian source package
+ xgo [ options ] -- cross builds according to options
For all commands, -n prevents execution of external programs (dry run mode).
@@ -121,6 +122,8 @@ func main() {
doDebianSource(os.Args[2:])
case "travis-debsrc":
doTravisDebianSource(os.Args[2:])
+ case "xgo":
+ doXgo(os.Args[2:])
default:
log.Fatal("unknown command ", os.Args[1])
}
@@ -463,3 +466,32 @@ func stageDebianSource(tmpdir string, meta debMetadata) (pkgdir string) {
return pkgdir
}
+
+// Cross compilation
+
+func doXgo(cmdline []string) {
+ // Make sure xgo is available for cross compilation
+ gogetxgo := goTool("get", "github.com/karalabe/xgo")
+ build.MustRun(gogetxgo)
+
+ // Execute the actual cross compilation
+ pkg := cmdline[len(cmdline)-1]
+ args := append(cmdline[:len(cmdline)-1], makeBuildFlags("")...)
+
+ build.MustRun(xgoTool(append(args, pkg)...))
+}
+
+func xgoTool(args ...string) *exec.Cmd {
+ cmd := exec.Command(filepath.Join(GOBIN, "xgo"), args...)
+ cmd.Env = []string{
+ "GOPATH=" + build.GOPATH(),
+ "GOBIN=" + GOBIN,
+ }
+ for _, e := range os.Environ() {
+ if strings.HasPrefix(e, "GOPATH=") || strings.HasPrefix(e, "GOBIN=") {
+ continue
+ }
+ cmd.Env = append(cmd.Env, e)
+ }
+ return cmd
+}
diff --git a/build/flags.sh b/build/flags.sh
deleted file mode 100755
index e021dbad4..000000000
--- a/build/flags.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-set -e
-
-if [ ! -f "build/env.sh" ]; then
- echo "$0 must be run from the root of the repository."
- exit 2
-fi
-
-# Since Go 1.5, the separator char for link time assignments
-# is '=' and using ' ' prints a warning. However, Go < 1.5 does
-# not support using '='.
-sep=$(go version | awk '{ if ($3 >= "go1.5" || index($3, "devel")) print "="; else print " "; }' -)
-
-# set gitCommit when running from a Git checkout.
-if [ -f ".git/HEAD" ]; then
- echo "-ldflags '-X main.gitCommit$sep$(git rev-parse HEAD)'"
-fi
-
-if [ ! -z "$GO_OPENCL" ]; then
- echo "-tags opencl"
-fi
diff --git a/build/update-license.go b/build/update-license.go
index 803f7e8fd..f83a2b34b 100644
--- a/build/update-license.go
+++ b/build/update-license.go
@@ -50,6 +50,10 @@ var (
"crypto/sha3/", "crypto/ecies/", "logger/glog/",
"crypto/secp256k1/curve.go",
"trie/arc.go",
+ // don't license generated files
+ "contracts/chequebook/contract/",
+ "contracts/ens/contract/",
+ "contracts/release/contract.go",
}
// paths with this prefix are licensed as GPL. all other files are LGPL.
diff --git a/circle.yml b/circle.yml
new file mode 100644
index 000000000..39ff5d83c
--- /dev/null
+++ b/circle.yml
@@ -0,0 +1,32 @@
+machine:
+ services:
+ - docker
+
+dependencies:
+ cache_directories:
+ - "~/.ethash" # Cache the ethash DAG generated by hive for consecutive builds
+ - "~/.docker" # Cache all docker images manually to avoid lengthy rebuilds
+ override:
+ # Restore all previously cached docker images
+ - mkdir -p ~/.docker
+ - for img in `ls ~/.docker`; do docker load -i ~/.docker/$img; done
+
+ # Pull in and hive, restore cached ethash DAGs and do a dry run
+ - go get -u github.com/karalabe/hive
+ - (cd ~/.go_workspace/src/github.com/karalabe/hive && mkdir -p workspace/ethash/ ~/.ethash)
+ - (cd ~/.go_workspace/src/github.com/karalabe/hive && cp -r ~/.ethash/. workspace/ethash/)
+ - (cd ~/.go_workspace/src/github.com/karalabe/hive && hive --docker-noshell --client=NONE --test=. --sim=. --loglevel=6)
+
+ # Cache all the docker images and the ethash DAGs
+ - for img in `docker images | grep -v "^<none>" | tail -n +2 | awk '{print $1}'`; do docker save $img > ~/.docker/`echo $img | tr '/' ':'`.tar; done
+ - cp -r ~/.go_workspace/src/github.com/karalabe/hive/workspace/ethash/. ~/.ethash
+
+test:
+ override:
+ # Build Geth and move into a known folder
+ - make geth
+ - cp ./build/bin/geth $HOME/geth
+
+ # Run hive and move all generated logs into the public artifacts folder
+ - (cd ~/.go_workspace/src/github.com/karalabe/hive && hive --docker-noshell --client=go-ethereum:local --override=$HOME/geth --test=. --sim=.)
+ - cp -r ~/.go_workspace/src/github.com/karalabe/hive/workspace/logs/* $CIRCLE_ARTIFACTS
diff --git a/cmd/abigen/main.go b/cmd/abigen/main.go
index f36391351..9c9ab6d31 100644
--- a/cmd/abigen/main.go
+++ b/cmd/abigen/main.go
@@ -68,18 +68,7 @@ func main() {
for _, kind := range strings.Split(*excFlag, ",") {
exclude[strings.ToLower(kind)] = true
}
- // Build the Solidity source into bindable components
- solc, err := compiler.New(*solcFlag)
- if err != nil {
- fmt.Printf("Failed to locate Solidity compiler: %v\n", err)
- os.Exit(-1)
- }
- source, err := ioutil.ReadFile(*solFlag)
- if err != nil {
- fmt.Printf("Failed to read Soldity source code: %v\n", err)
- os.Exit(-1)
- }
- contracts, err := solc.Compile(string(source))
+ contracts, err := compiler.CompileSolidity(*solcFlag, *solFlag)
if err != nil {
fmt.Printf("Failed to build Solidity contract: %v\n", err)
os.Exit(-1)
diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go
index 7d3f9fdb3..40d3cdc17 100644
--- a/cmd/bootnode/main.go
+++ b/cmd/bootnode/main.go
@@ -20,6 +20,7 @@ package main
import (
"crypto/ecdsa"
"flag"
+ "fmt"
"os"
"github.com/ethereum/go-ethereum/cmd/utils"
@@ -32,7 +33,8 @@ import (
func main() {
var (
listenAddr = flag.String("addr", ":30301", "listen address")
- genKey = flag.String("genkey", "", "generate a node key and quit")
+ genKey = flag.String("genkey", "", "generate a node key")
+ writeAddr = flag.Bool("writeaddress", false, "write out the node's pubkey hash and quit")
nodeKeyFile = flag.String("nodekey", "", "private key filename")
nodeKeyHex = flag.String("nodekeyhex", "", "private key as hex (for testing)")
natdesc = flag.String("nat", "none", "port mapping mechanism (any|none|upnp|pmp|extip:<IP>)")
@@ -45,22 +47,19 @@ func main() {
glog.SetToStderr(true)
flag.Parse()
- if *genKey != "" {
- key, err := crypto.GenerateKey()
- if err != nil {
- utils.Fatalf("could not generate key: %v", err)
- }
- if err := crypto.SaveECDSA(*genKey, key); err != nil {
- utils.Fatalf("%v", err)
- }
- os.Exit(0)
- }
-
natm, err := nat.Parse(*natdesc)
if err != nil {
utils.Fatalf("-nat: %v", err)
}
switch {
+ case *genKey != "":
+ nodeKey, err = crypto.GenerateKey()
+ if err != nil {
+ utils.Fatalf("could not generate key: %v", err)
+ }
+ if err = crypto.SaveECDSA(*genKey, nodeKey); err != nil {
+ utils.Fatalf("%v", err)
+ }
case *nodeKeyFile == "" && *nodeKeyHex == "":
utils.Fatalf("Use -nodekey or -nodekeyhex to specify a private key")
case *nodeKeyFile != "" && *nodeKeyHex != "":
@@ -75,6 +74,11 @@ func main() {
}
}
+ if *writeAddr {
+ fmt.Printf("%v\n", discover.PubkeyID(&nodeKey.PublicKey))
+ os.Exit(0)
+ }
+
if _, err := discover.ListenUDP(nodeKey, *listenAddr, natm, ""); err != nil {
utils.Fatalf("%v", err)
}
diff --git a/cmd/ethtest/main.go b/cmd/ethtest/main.go
index e0ad0a7ea..71465fb55 100644
--- a/cmd/ethtest/main.go
+++ b/cmd/ethtest/main.go
@@ -74,9 +74,9 @@ func runTestWithReader(test string, r io.Reader) error {
var err error
switch strings.ToLower(test) {
case "bk", "block", "blocktest", "blockchaintest", "blocktests", "blockchaintests":
- err = tests.RunBlockTestWithReader(params.MainNetHomesteadBlock, r, skipTests)
+ err = tests.RunBlockTestWithReader(params.MainNetHomesteadBlock, params.MainNetDAOForkBlock, r, skipTests)
case "st", "state", "statetest", "statetests":
- rs := tests.RuleSet{HomesteadBlock: params.MainNetHomesteadBlock}
+ rs := tests.RuleSet{HomesteadBlock: params.MainNetHomesteadBlock, DAOForkBlock: params.MainNetDAOForkBlock, DAOForkSupport: true}
err = tests.RunStateTestWithReader(rs, r, skipTests)
case "tx", "transactiontest", "transactiontests":
err = tests.RunTransactionTestsWithReader(r, skipTests)
diff --git a/cmd/evm/main.go b/cmd/evm/main.go
index aa48f6ede..3f44e0f3c 100644
--- a/cmd/evm/main.go
+++ b/cmd/evm/main.go
@@ -35,8 +35,11 @@ import (
"gopkg.in/urfave/cli.v1"
)
+var gitCommit = "" // Git SHA1 commit hash of the release (set via linker flags)
+
var (
- app *cli.App
+ app = utils.NewApp(gitCommit, "the evm command line interface")
+
DebugFlag = cli.BoolFlag{
Name: "debug",
Usage: "output full trace logs",
@@ -91,7 +94,6 @@ var (
)
func init() {
- app = utils.NewApp("0.2", "the evm command line interface")
app.Flags = []cli.Flag{
CreateFlag,
DebugFlag,
@@ -117,10 +119,13 @@ func run(ctx *cli.Context) error {
statedb, _ := state.New(common.Hash{}, db)
sender := statedb.CreateAccount(common.StringToAddress("sender"))
+ logger := vm.NewStructLogger(nil)
+
vmenv := NewEnv(statedb, common.StringToAddress("evmuser"), common.Big(ctx.GlobalString(ValueFlag.Name)), vm.Config{
Debug: ctx.GlobalBool(DebugFlag.Name),
ForceJit: ctx.GlobalBool(ForceJitFlag.Name),
EnableJit: !ctx.GlobalBool(DisableJitFlag.Name),
+ Tracer: logger,
})
tstart := time.Now()
@@ -157,7 +162,7 @@ func run(ctx *cli.Context) error {
statedb.Commit()
fmt.Println(string(statedb.Dump()))
}
- vm.StdErrFormat(vmenv.StructLogs())
+ vm.StdErrFormat(logger.StructLogs())
if ctx.GlobalBool(SysStatFlag.Name) {
var mem runtime.MemStats
@@ -209,7 +214,6 @@ func NewEnv(state *state.StateDB, transactor common.Address, value *big.Int, cfg
value: value,
time: big.NewInt(time.Now().Unix()),
}
- cfg.Logger.Collector = env
env.evm = vm.New(env, cfg)
return env
@@ -242,12 +246,6 @@ func (self *VMEnv) GetHash(n uint64) common.Hash {
}
return common.Hash{}
}
-func (self *VMEnv) AddStructLog(log vm.StructLog) {
- self.logs = append(self.logs, log)
-}
-func (self *VMEnv) StructLogs() []vm.StructLog {
- return self.logs
-}
func (self *VMEnv) AddLog(log *vm.Log) {
self.state.AddLog(log)
}
diff --git a/cmd/geth/accountcmd.go b/cmd/geth/accountcmd.go
index 7fea16a25..2d70dcc2c 100644
--- a/cmd/geth/accountcmd.go
+++ b/cmd/geth/accountcmd.go
@@ -168,8 +168,8 @@ nodes.
)
func accountList(ctx *cli.Context) error {
- accman := utils.MakeAccountManager(ctx)
- for i, acct := range accman.Accounts() {
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
+ for i, acct := range stack.AccountManager().Accounts() {
fmt.Printf("Account #%d: {%x} %s\n", i, acct.Address, acct.File)
}
return nil
@@ -261,10 +261,10 @@ func ambiguousAddrRecovery(am *accounts.Manager, err *accounts.AmbiguousAddrErro
// accountCreate creates a new account into the keystore defined by the CLI flags.
func accountCreate(ctx *cli.Context) error {
- accman := utils.MakeAccountManager(ctx)
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
password := getPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
- account, err := accman.NewAccount(password)
+ account, err := stack.AccountManager().NewAccount(password)
if err != nil {
utils.Fatalf("Failed to create account: %v", err)
}
@@ -278,11 +278,10 @@ func accountUpdate(ctx *cli.Context) error {
if len(ctx.Args()) == 0 {
utils.Fatalf("No accounts specified to update")
}
- accman := utils.MakeAccountManager(ctx)
-
- account, oldPassword := unlockAccount(ctx, accman, ctx.Args().First(), 0, nil)
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
+ account, oldPassword := unlockAccount(ctx, stack.AccountManager(), ctx.Args().First(), 0, nil)
newPassword := getPassPhrase("Please give a new password. Do not forget this password.", true, 0, nil)
- if err := accman.Update(account, oldPassword, newPassword); err != nil {
+ if err := stack.AccountManager().Update(account, oldPassword, newPassword); err != nil {
utils.Fatalf("Could not update the account: %v", err)
}
return nil
@@ -298,10 +297,9 @@ func importWallet(ctx *cli.Context) error {
utils.Fatalf("Could not read wallet file: %v", err)
}
- accman := utils.MakeAccountManager(ctx)
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
passphrase := getPassPhrase("", false, 0, utils.MakePasswordList(ctx))
-
- acct, err := accman.ImportPreSaleKey(keyJson, passphrase)
+ acct, err := stack.AccountManager().ImportPreSaleKey(keyJson, passphrase)
if err != nil {
utils.Fatalf("%v", err)
}
@@ -318,9 +316,9 @@ func accountImport(ctx *cli.Context) error {
if err != nil {
utils.Fatalf("Failed to load the private key: %v", err)
}
- accman := utils.MakeAccountManager(ctx)
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
passphrase := getPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
- acct, err := accman.ImportECDSA(key, passphrase)
+ acct, err := stack.AccountManager().ImportECDSA(key, passphrase)
if err != nil {
utils.Fatalf("Could not create the account: %v", err)
}
diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index 321551ce0..54984d6e0 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -76,6 +76,9 @@ func importChain(ctx *cli.Context) error {
if len(ctx.Args()) != 1 {
utils.Fatalf("This command requires an argument.")
}
+ if ctx.GlobalBool(utils.TestNetFlag.Name) {
+ state.StartingNonce = 1048576 // (2**20)
+ }
chain, chainDb := utils.MakeChain(ctx)
start := time.Now()
err := utils.ImportChain(chain, ctx.Args().First())
diff --git a/cmd/geth/consolecmd.go b/cmd/geth/consolecmd.go
index 257050a62..92d6f7f86 100644
--- a/cmd/geth/consolecmd.go
+++ b/cmd/geth/consolecmd.go
@@ -19,9 +19,12 @@ package main
import (
"os"
"os/signal"
+ "strings"
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/console"
+ "github.com/ethereum/go-ethereum/node"
+ "github.com/ethereum/go-ethereum/rpc"
"gopkg.in/urfave/cli.v1"
)
@@ -62,7 +65,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
// same time.
func localConsole(ctx *cli.Context) error {
// Create and start the node based on the CLI flags
- node := utils.MakeSystemNode(clientIdentifier, verString, relConfig, makeDefaultExtra(), ctx)
+ node := makeFullNode(ctx)
startNode(ctx, node)
defer node.Stop()
@@ -99,7 +102,7 @@ func localConsole(ctx *cli.Context) error {
// console to it.
func remoteConsole(ctx *cli.Context) error {
// Attach to a remotely running geth instance and start the JavaScript console
- client, err := utils.NewRemoteRPCClient(ctx)
+ client, err := dialRPC(ctx.Args().First())
if err != nil {
utils.Fatalf("Unable to attach to remote geth: %v", err)
}
@@ -127,12 +130,26 @@ func remoteConsole(ctx *cli.Context) error {
return nil
}
+// dialRPC returns a RPC client which connects to the given endpoint.
+// The check for empty endpoint implements the defaulting logic
+// for "geth attach" and "geth monitor" with no argument.
+func dialRPC(endpoint string) (*rpc.Client, error) {
+ if endpoint == "" {
+ endpoint = node.DefaultIPCEndpoint()
+ } else if strings.HasPrefix(endpoint, "rpc:") || strings.HasPrefix(endpoint, "ipc:") {
+ // Backwards compatibility with geth < 1.5 which required
+ // these prefixes.
+ endpoint = endpoint[4:]
+ }
+ return rpc.Dial(endpoint)
+}
+
// ephemeralConsole starts a new geth node, attaches an ephemeral JavaScript
// console to it, and each of the files specified as arguments and tears the
// everything down.
func ephemeralConsole(ctx *cli.Context) error {
// Create and start the node based on the CLI flags
- node := utils.MakeSystemNode(clientIdentifier, verString, relConfig, makeDefaultExtra(), ctx)
+ node := makeFullNode(ctx)
startNode(ctx, node)
defer node.Stop()
diff --git a/cmd/geth/consolecmd_test.go b/cmd/geth/consolecmd_test.go
index e0e549e12..3f09c0414 100644
--- a/cmd/geth/consolecmd_test.go
+++ b/cmd/geth/consolecmd_test.go
@@ -28,6 +28,7 @@ import (
"testing"
"time"
+ "github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/rpc"
)
@@ -45,7 +46,7 @@ func TestConsoleWelcome(t *testing.T) {
// Gather all the infos the welcome message needs to contain
geth.setTemplateFunc("goos", func() string { return runtime.GOOS })
geth.setTemplateFunc("gover", runtime.Version)
- geth.setTemplateFunc("gethver", func() string { return verString })
+ geth.setTemplateFunc("gethver", func() string { return utils.Version })
geth.setTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) })
geth.setTemplateFunc("apis", func() []string {
apis := append(strings.Split(rpc.DefaultIPCApis, ","), rpc.MetadataApi)
@@ -131,7 +132,7 @@ func testAttachWelcome(t *testing.T, geth *testgeth, endpoint string) {
// Gather all the infos the welcome message needs to contain
attach.setTemplateFunc("goos", func() string { return runtime.GOOS })
attach.setTemplateFunc("gover", runtime.Version)
- attach.setTemplateFunc("gethver", func() string { return verString })
+ attach.setTemplateFunc("gethver", func() string { return utils.Version })
attach.setTemplateFunc("etherbase", func() string { return geth.Etherbase })
attach.setTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) })
attach.setTemplateFunc("ipc", func() bool { return strings.HasPrefix(endpoint, "ipc") })
diff --git a/cmd/geth/dao_test.go b/cmd/geth/dao_test.go
new file mode 100644
index 000000000..7058fb385
--- /dev/null
+++ b/cmd/geth/dao_test.go
@@ -0,0 +1,232 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of go-ethereum.
+//
+// go-ethereum is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// go-ethereum is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
+
+package main
+
+import (
+ "io/ioutil"
+ "math/big"
+ "os"
+ "path/filepath"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/ethdb"
+ "github.com/ethereum/go-ethereum/params"
+)
+
+// Genesis block for nodes which don't care about the DAO fork (i.e. not configured)
+var daoOldGenesis = `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {}
+}`
+
+// Genesis block for nodes which actively oppose the DAO fork
+var daoNoForkGenesis = `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {
+ "daoForkBlock" : 314,
+ "daoForkSupport" : false
+ }
+}`
+
+// Genesis block for nodes which actively support the DAO fork
+var daoProForkGenesis = `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {
+ "daoForkBlock" : 314,
+ "daoForkSupport" : true
+ }
+}`
+
+var daoGenesisHash = common.HexToHash("5e1fc79cb4ffa4739177b5408045cd5d51c6cf766133f23f7cd72ee1f8d790e0")
+var daoGenesisForkBlock = big.NewInt(314)
+
+// Tests that the DAO hard-fork number and the nodes support/opposition is correctly
+// set in the database after various initialization procedures and invocations.
+func TestDAODefaultMainnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, "", [][2]bool{{false, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOSupportMainnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, "", [][2]bool{{true, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOOpposeMainnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, "", [][2]bool{{false, true}}, params.MainNetDAOForkBlock, false)
+}
+func TestDAOSwitchToSupportMainnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, "", [][2]bool{{false, true}, {true, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOSwitchToOpposeMainnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, "", [][2]bool{{true, false}, {false, true}}, params.MainNetDAOForkBlock, false)
+}
+func TestDAODefaultTestnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, true, "", [][2]bool{{false, false}}, params.TestNetDAOForkBlock, true)
+}
+func TestDAOSupportTestnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, true, "", [][2]bool{{true, false}}, params.TestNetDAOForkBlock, true)
+}
+func TestDAOOpposeTestnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, true, "", [][2]bool{{false, true}}, params.TestNetDAOForkBlock, false)
+}
+func TestDAOSwitchToSupportTestnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, true, "", [][2]bool{{false, true}, {true, false}}, params.TestNetDAOForkBlock, true)
+}
+func TestDAOSwitchToOpposeTestnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, true, "", [][2]bool{{true, false}, {false, true}}, params.TestNetDAOForkBlock, false)
+}
+func TestDAOInitOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{}, nil, false)
+}
+func TestDAODefaultOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{{false, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOSupportOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{{true, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOOpposeOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{{false, true}}, params.MainNetDAOForkBlock, false)
+}
+func TestDAOSwitchToSupportOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{{false, true}, {true, false}}, params.MainNetDAOForkBlock, true)
+}
+func TestDAOSwitchToOpposeOldPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoOldGenesis, [][2]bool{{true, false}, {false, true}}, params.MainNetDAOForkBlock, false)
+}
+func TestDAOInitNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{}, daoGenesisForkBlock, false)
+}
+func TestDAODefaultNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{{false, false}}, daoGenesisForkBlock, false)
+}
+func TestDAOSupportNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{{true, false}}, daoGenesisForkBlock, true)
+}
+func TestDAOOpposeNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{{false, true}}, daoGenesisForkBlock, false)
+}
+func TestDAOSwitchToSupportNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{{false, true}, {true, false}}, daoGenesisForkBlock, true)
+}
+func TestDAOSwitchToOpposeNoForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoNoForkGenesis, [][2]bool{{true, false}, {false, true}}, daoGenesisForkBlock, false)
+}
+func TestDAOInitProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{}, daoGenesisForkBlock, true)
+}
+func TestDAODefaultProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{{false, false}}, daoGenesisForkBlock, true)
+}
+func TestDAOSupportProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{{true, false}}, daoGenesisForkBlock, true)
+}
+func TestDAOOpposeProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{{false, true}}, daoGenesisForkBlock, false)
+}
+func TestDAOSwitchToSupportProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{{false, true}, {true, false}}, daoGenesisForkBlock, true)
+}
+func TestDAOSwitchToOpposeProForkPrivnet(t *testing.T) {
+ testDAOForkBlockNewChain(t, false, daoProForkGenesis, [][2]bool{{true, false}, {false, true}}, daoGenesisForkBlock, false)
+}
+
+func testDAOForkBlockNewChain(t *testing.T, testnet bool, genesis string, votes [][2]bool, expectBlock *big.Int, expectVote bool) {
+ // Create a temporary data directory to use and inspect later
+ datadir := tmpdir(t)
+ defer os.RemoveAll(datadir)
+
+ // Start a Geth instance with the requested flags set and immediately terminate
+ if genesis != "" {
+ json := filepath.Join(datadir, "genesis.json")
+ if err := ioutil.WriteFile(json, []byte(genesis), 0600); err != nil {
+ t.Fatalf("failed to write genesis file: %v", err)
+ }
+ runGeth(t, "--datadir", datadir, "init", json).cmd.Wait()
+ }
+ for _, vote := range votes {
+ args := []string{"--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none", "--ipcdisable", "--datadir", datadir}
+ if testnet {
+ args = append(args, "--testnet")
+ }
+ if vote[0] {
+ args = append(args, "--support-dao-fork")
+ }
+ if vote[1] {
+ args = append(args, "--oppose-dao-fork")
+ }
+ geth := runGeth(t, append(args, []string{"--exec", "2+2", "console"}...)...)
+ geth.cmd.Wait()
+ }
+ // Retrieve the DAO config flag from the database
+ path := filepath.Join(datadir, "chaindata")
+ if testnet && genesis == "" {
+ path = filepath.Join(datadir, "testnet", "chaindata")
+ }
+ db, err := ethdb.NewLDBDatabase(path, 0, 0)
+ if err != nil {
+ t.Fatalf("failed to open test database: %v", err)
+ }
+ defer db.Close()
+
+ genesisHash := common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3")
+ if testnet {
+ genesisHash = common.HexToHash("0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303")
+ }
+ if genesis != "" {
+ genesisHash = daoGenesisHash
+ }
+ config, err := core.GetChainConfig(db, genesisHash)
+ if err != nil {
+ t.Fatalf("failed to retrieve chain config: %v", err)
+ }
+ // Validate the DAO hard-fork block number against the expected value
+ if config.DAOForkBlock == nil {
+ if expectBlock != nil {
+ t.Errorf("dao hard-fork block mismatch: have nil, want %v", expectBlock)
+ }
+ } else if expectBlock == nil {
+ t.Errorf("dao hard-fork block mismatch: have %v, want nil", config.DAOForkBlock)
+ } else if config.DAOForkBlock.Cmp(expectBlock) != 0 {
+ t.Errorf("dao hard-fork block mismatch: have %v, want %v", config.DAOForkBlock, expectBlock)
+ }
+ if config.DAOForkSupport != expectVote {
+ t.Errorf("dao hard-fork support mismatch: have %v, want %v", config.DAOForkSupport, expectVote)
+ }
+}
diff --git a/cmd/geth/genesis_test.go b/cmd/geth/genesis_test.go
new file mode 100644
index 000000000..6c3ca7298
--- /dev/null
+++ b/cmd/geth/genesis_test.go
@@ -0,0 +1,110 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of go-ethereum.
+//
+// go-ethereum is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// go-ethereum is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
+
+package main
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+var customGenesisTests = []struct {
+ genesis string
+ query string
+ result string
+}{
+ // Plain genesis file without anything extra
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00"
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+ // Genesis file with an empty chain configuration (ensure missing fields work)
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {}
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+ // Genesis file with specific chain configurations
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {
+ "homesteadBlock" : 314,
+ "daoForkBlock" : 141,
+ "daoForkSupport" : true
+ },
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+}
+
+// Tests that initializing Geth with a custom genesis block and chain definitions
+// work properly.
+func TestCustomGenesis(t *testing.T) {
+ for i, tt := range customGenesisTests {
+ // Create a temporary data directory to use and inspect later
+ datadir := tmpdir(t)
+ defer os.RemoveAll(datadir)
+
+ // Initialize the data directory with the custom genesis block
+ json := filepath.Join(datadir, "genesis.json")
+ if err := ioutil.WriteFile(json, []byte(tt.genesis), 0600); err != nil {
+ t.Fatalf("test %d: failed to write genesis file: %v", i, err)
+ }
+ runGeth(t, "--datadir", datadir, "init", json).cmd.Wait()
+
+ // Query the custom genesis block
+ geth := runGeth(t,
+ "--datadir", datadir, "--maxpeers", "0", "--port", "0",
+ "--nodiscover", "--nat", "none", "--ipcdisable",
+ "--exec", tt.query, "console")
+ geth.expectRegexp(tt.result)
+ geth.expectExit()
+ }
+}
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index cb43f8769..a7b332d0f 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -29,11 +29,12 @@ import (
"time"
"github.com/ethereum/ethash"
- "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/console"
+ "github.com/ethereum/go-ethereum/contracts/release"
"github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/internal/debug"
@@ -41,50 +42,24 @@ import (
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/params"
- "github.com/ethereum/go-ethereum/release"
- "github.com/ethereum/go-ethereum/rlp"
"gopkg.in/urfave/cli.v1"
)
const (
- clientIdentifier = "Geth" // Client identifier to advertise over the network
- versionMajor = 1 // Major version component of the current release
- versionMinor = 5 // Minor version component of the current release
- versionPatch = 0 // Patch version component of the current release
- versionMeta = "unstable" // Version metadata to append to the version string
-
- versionOracle = "0xfa7b9770ca4cb04296cac84f37736d4041251cdf" // Ethereum address of the Geth release oracle
+ clientIdentifier = "Geth" // Client identifier to advertise over the network
)
var (
- gitCommit string // Git SHA1 commit hash of the release (set via linker flags)
- verString string // Combined textual representation of all the version components
- relConfig release.Config // Structured version information and release oracle config
- app *cli.App
+ // Git SHA1 commit hash of the release (set via linker flags)
+ gitCommit = ""
+ // Ethereum address of the Geth release oracle.
+ relOracle = common.HexToAddress("0xfa7b9770ca4cb04296cac84f37736d4041251cdf")
+ // The app that holds all commands and flags.
+ app = utils.NewApp(gitCommit, "the go-ethereum command line interface")
)
func init() {
- // Construct the textual version string from the individual components
- verString = fmt.Sprintf("%d.%d.%d", versionMajor, versionMinor, versionPatch)
- if versionMeta != "" {
- verString += "-" + versionMeta
- }
- if gitCommit != "" {
- verString += "-" + gitCommit[:8]
- }
- // Construct the version release oracle configuration
- relConfig.Oracle = common.HexToAddress(versionOracle)
-
- relConfig.Major = uint32(versionMajor)
- relConfig.Minor = uint32(versionMinor)
- relConfig.Patch = uint32(versionPatch)
-
- commit, _ := hex.DecodeString(gitCommit)
- copy(relConfig.Commit[:], commit)
-
// Initialize the CLI app and start Geth
- app = utils.NewApp(verString, "the go-ethereum command line interface")
app.Action = geth
app.HideVersion = true // we have a command to print the version
app.Commands = []cli.Command{
@@ -144,17 +119,20 @@ This is a destructive action and changes the network in which you will be
participating.
`,
},
+ {
+ Action: license,
+ Name: "license",
+ Usage: "displays geth's license information",
+ },
}
app.Flags = []cli.Flag{
utils.IdentityFlag,
utils.UnlockedAccountFlag,
utils.PasswordFileFlag,
- utils.GenesisFileFlag,
utils.BootnodesFlag,
utils.DataDirFlag,
utils.KeyStoreDirFlag,
- utils.BlockchainVersionFlag,
utils.OlympicFlag,
utils.FastSyncFlag,
utils.CacheFlag,
@@ -165,6 +143,8 @@ participating.
utils.MaxPendingPeersFlag,
utils.EtherbaseFlag,
utils.GasPriceFlag,
+ utils.SupportDAOFork,
+ utils.OpposeDAOFork,
utils.MinerThreadsFlag,
utils.MiningEnabledFlag,
utils.MiningGPUFlag,
@@ -225,12 +205,6 @@ participating.
eth.EnableBadBlockReporting = true
utils.SetupNetwork(ctx)
-
- // Deprecation warning.
- if ctx.GlobalIsSet(utils.GenesisFileFlag.Name) {
- common.PrintDepricationWarning("--genesis is deprecated. Switch to use 'geth init /path/to/file'")
- }
-
return nil
}
@@ -249,34 +223,13 @@ func main() {
}
}
-func makeDefaultExtra() []byte {
- var clientInfo = struct {
- Version uint
- Name string
- GoVersion string
- Os string
- }{uint(versionMajor<<16 | versionMinor<<8 | versionPatch), clientIdentifier, runtime.Version(), runtime.GOOS}
- extra, err := rlp.EncodeToBytes(clientInfo)
- if err != nil {
- glog.V(logger.Warn).Infoln("error setting canonical miner information:", err)
- }
-
- if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() {
- glog.V(logger.Warn).Infoln("error setting canonical miner information: extra exceeds", params.MaximumExtraDataSize)
- glog.V(logger.Debug).Infof("extra: %x\n", extra)
- return nil
- }
- return extra
-}
-
// geth is the main entry point into the system if no special subcommand is ran.
// It creates a default node based on the command line arguments and runs it in
// blocking mode, waiting for it to be shut down.
func geth(ctx *cli.Context) error {
- node := utils.MakeSystemNode(clientIdentifier, verString, relConfig, makeDefaultExtra(), ctx)
+ node := makeFullNode(ctx)
startNode(ctx, node)
node.Wait()
-
return nil
}
@@ -288,6 +241,10 @@ func initGenesis(ctx *cli.Context) error {
utils.Fatalf("must supply path to genesis JSON file")
}
+ if ctx.GlobalBool(utils.TestNetFlag.Name) {
+ state.StartingNonce = 1048576 // (2**20)
+ }
+
chainDb, err := ethdb.NewLDBDatabase(filepath.Join(utils.MustMakeDataDir(ctx), "chaindata"), 0, 0)
if err != nil {
utils.Fatalf("could not open database: %v", err)
@@ -306,22 +263,48 @@ func initGenesis(ctx *cli.Context) error {
return nil
}
+func makeFullNode(ctx *cli.Context) *node.Node {
+ stack := utils.MakeNode(ctx, clientIdentifier, gitCommit)
+ utils.RegisterEthService(ctx, stack, utils.MakeDefaultExtraData(clientIdentifier))
+
+ // Whisper must be explicitly enabled, but is auto-enabled in --dev mode.
+ shhEnabled := ctx.GlobalBool(utils.WhisperEnabledFlag.Name)
+ shhAutoEnabled := !ctx.GlobalIsSet(utils.WhisperEnabledFlag.Name) && ctx.GlobalIsSet(utils.DevModeFlag.Name)
+ if shhEnabled || shhAutoEnabled {
+ utils.RegisterShhService(stack)
+ }
+
+ // Add the release oracle service so it boots along with node.
+ if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
+ config := release.Config{
+ Oracle: relOracle,
+ Major: uint32(utils.VersionMajor),
+ Minor: uint32(utils.VersionMinor),
+ Patch: uint32(utils.VersionPatch),
+ }
+ commit, _ := hex.DecodeString(gitCommit)
+ copy(config.Commit[:], commit)
+ return release.NewReleaseService(ctx, config)
+ }); err != nil {
+ utils.Fatalf("Failed to register the Geth release oracle service: %v", err)
+ }
+
+ return stack
+}
+
// startNode boots up the system node and all registered protocols, after which
// it unlocks any requested accounts, and starts the RPC/IPC interfaces and the
// miner.
func startNode(ctx *cli.Context, stack *node.Node) {
// Report geth version
- glog.V(logger.Info).Infof("instance: Geth/%s/%s/%s\n", verString, runtime.Version(), runtime.GOOS)
+ glog.V(logger.Info).Infof("instance: Geth/%s/%s/%s\n", utils.Version, runtime.Version(), runtime.GOOS)
+
// Start up the node itself
utils.StartNode(stack)
// Unlock any account specifically requested
- var accman *accounts.Manager
- if err := stack.Service(&accman); err != nil {
- utils.Fatalf("ethereum service not running: %v", err)
- }
+ accman := stack.AccountManager()
passwords := utils.MakePasswordList(ctx)
-
accounts := strings.Split(ctx.GlobalString(utils.UnlockedAccountFlag.Name), ",")
for i, account := range accounts {
if trimmed := strings.TrimSpace(account); trimmed != "" {
@@ -397,7 +380,10 @@ func gpubench(ctx *cli.Context) error {
func version(c *cli.Context) error {
fmt.Println(clientIdentifier)
- fmt.Println("Version:", verString)
+ fmt.Println("Version:", utils.Version)
+ if gitCommit != "" {
+ fmt.Println("Git Commit:", gitCommit)
+ }
fmt.Println("Protocol Versions:", eth.ProtocolVersions)
fmt.Println("Network Id:", c.GlobalInt(utils.NetworkIdFlag.Name))
fmt.Println("Go Version:", runtime.Version())
@@ -407,3 +393,21 @@ func version(c *cli.Context) error {
return nil
}
+
+func license(c *cli.Context) error {
+ fmt.Println(`Geth is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Geth is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with geth. If not, see <http://www.gnu.org/licenses/>.
+`)
+
+ return nil
+}
diff --git a/cmd/geth/monitorcmd.go b/cmd/geth/monitorcmd.go
index 11fdca89c..d1490dce2 100644
--- a/cmd/geth/monitorcmd.go
+++ b/cmd/geth/monitorcmd.go
@@ -21,11 +21,10 @@ import (
"math"
"reflect"
"runtime"
+ "sort"
"strings"
"time"
- "sort"
-
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
@@ -36,7 +35,7 @@ import (
var (
monitorCommandAttachFlag = cli.StringFlag{
Name: "attach",
- Value: "ipc:" + node.DefaultIPCEndpoint(),
+ Value: node.DefaultIPCEndpoint(),
Usage: "API endpoint to attach to",
}
monitorCommandRowsFlag = cli.IntFlag{
@@ -69,12 +68,12 @@ to display multiple metrics simultaneously.
// monitor starts a terminal UI based monitoring tool for the requested metrics.
func monitor(ctx *cli.Context) error {
var (
- client rpc.Client
+ client *rpc.Client
err error
)
// Attach to an Ethereum node over IPC or RPC
endpoint := ctx.String(monitorCommandAttachFlag.Name)
- if client, err = utils.NewRemoteRPCClientFromString(endpoint); err != nil {
+ if client, err = dialRPC(endpoint); err != nil {
utils.Fatalf("Unable to attach to geth node: %v", err)
}
defer client.Close()
@@ -159,30 +158,10 @@ func monitor(ctx *cli.Context) error {
// retrieveMetrics contacts the attached geth node and retrieves the entire set
// of collected system metrics.
-func retrieveMetrics(client rpc.Client) (map[string]interface{}, error) {
- req := map[string]interface{}{
- "id": new(int64),
- "method": "debug_metrics",
- "jsonrpc": "2.0",
- "params": []interface{}{true},
- }
-
- if err := client.Send(req); err != nil {
- return nil, err
- }
-
- var res rpc.JSONSuccessResponse
- if err := client.Recv(&res); err != nil {
- return nil, err
- }
-
- if res.Result != nil {
- if mets, ok := res.Result.(map[string]interface{}); ok {
- return mets, nil
- }
- }
-
- return nil, fmt.Errorf("unable to retrieve metrics")
+func retrieveMetrics(client *rpc.Client) (map[string]interface{}, error) {
+ var metrics map[string]interface{}
+ err := client.Call(&metrics, "debug_metrics", true)
+ return metrics, err
}
// resolveMetrics takes a list of input metric patterns, and resolves each to one
@@ -270,7 +249,7 @@ func fetchMetric(metrics map[string]interface{}, metric string) float64 {
// refreshCharts retrieves a next batch of metrics, and inserts all the new
// values into the active datasets and charts
-func refreshCharts(client rpc.Client, metrics []string, data [][]float64, units []int, charts []*termui.LineChart, ctx *cli.Context, footer *termui.Par) (realign bool) {
+func refreshCharts(client *rpc.Client, metrics []string, data [][]float64, units []int, charts []*termui.LineChart, ctx *cli.Context, footer *termui.Par) (realign bool) {
values, err := retrieveMetrics(client)
for i, metric := range metrics {
if len(data) < 512 {
diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go
index e7ef9e2c7..dc1788aad 100644
--- a/cmd/geth/usage.go
+++ b/cmd/geth/usage.go
@@ -30,6 +30,8 @@ import (
var AppHelpTemplate = `NAME:
{{.App.Name}} - {{.App.Usage}}
+ Copyright 2013-2016 The go-ethereum Authors
+
USAGE:
{{.App.HelpName}} [options]{{if .App.Commands}} command [command options]{{end}} {{if .App.ArgsUsage}}{{.App.ArgsUsage}}{{else}}[arguments...]{{end}}
{{if .App.Version}}
@@ -68,12 +70,10 @@ var AppHelpFlagGroups = []flagGroup{
utils.OlympicFlag,
utils.TestNetFlag,
utils.DevModeFlag,
- utils.GenesisFileFlag,
utils.IdentityFlag,
utils.FastSyncFlag,
utils.LightKDFFlag,
utils.CacheFlag,
- utils.BlockchainVersionFlag,
},
},
{
diff --git a/cmd/gethrpctest/main.go b/cmd/gethrpctest/main.go
index 2e07e9426..d267dbf58 100644
--- a/cmd/gethrpctest/main.go
+++ b/cmd/gethrpctest/main.go
@@ -19,12 +19,10 @@ package main
import (
"flag"
- "io/ioutil"
"log"
"os"
"os/signal"
- "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/crypto"
@@ -61,14 +59,8 @@ func main() {
if !found {
log.Fatalf("Requested test (%s) not found within suite", *testName)
}
- // Create the protocol stack to run the test with
- keydir, err := ioutil.TempDir("", "")
- if err != nil {
- log.Fatalf("Failed to create temporary keystore directory: %v", err)
- }
- defer os.RemoveAll(keydir)
- stack, err := MakeSystemNode(keydir, *testKey, test)
+ stack, err := MakeSystemNode(*testKey, test)
if err != nil {
log.Fatalf("Failed to assemble test stack: %v", err)
}
@@ -92,23 +84,24 @@ func main() {
// MakeSystemNode configures a protocol stack for the RPC tests based on a given
// keystore path and initial pre-state.
-func MakeSystemNode(keydir string, privkey string, test *tests.BlockTest) (*node.Node, error) {
+func MakeSystemNode(privkey string, test *tests.BlockTest) (*node.Node, error) {
// Create a networkless protocol stack
stack, err := node.New(&node.Config{
- IPCPath: node.DefaultIPCEndpoint(),
- HTTPHost: common.DefaultHTTPHost,
- HTTPPort: common.DefaultHTTPPort,
- HTTPModules: []string{"admin", "db", "eth", "debug", "miner", "net", "shh", "txpool", "personal", "web3"},
- WSHost: common.DefaultWSHost,
- WSPort: common.DefaultWSPort,
- WSModules: []string{"admin", "db", "eth", "debug", "miner", "net", "shh", "txpool", "personal", "web3"},
- NoDiscovery: true,
+ UseLightweightKDF: true,
+ IPCPath: node.DefaultIPCEndpoint(),
+ HTTPHost: common.DefaultHTTPHost,
+ HTTPPort: common.DefaultHTTPPort,
+ HTTPModules: []string{"admin", "db", "eth", "debug", "miner", "net", "shh", "txpool", "personal", "web3"},
+ WSHost: common.DefaultWSHost,
+ WSPort: common.DefaultWSPort,
+ WSModules: []string{"admin", "db", "eth", "debug", "miner", "net", "shh", "txpool", "personal", "web3"},
+ NoDiscovery: true,
})
if err != nil {
return nil, err
}
// Create the keystore and inject an unlocked account if requested
- accman := accounts.NewPlaintextManager(keydir)
+ accman := stack.AccountManager()
if len(privkey) > 0 {
key, err := crypto.HexToECDSA(privkey)
if err != nil {
@@ -131,7 +124,6 @@ func MakeSystemNode(keydir string, privkey string, test *tests.BlockTest) (*node
TestGenesisState: db,
TestGenesisBlock: test.Genesis,
ChainConfig: &core.ChainConfig{HomesteadBlock: params.MainNetHomesteadBlock},
- AccountManager: accman,
}
if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) { return eth.New(ctx, ethConf) }); err != nil {
return nil, err
diff --git a/cmd/utils/client.go b/cmd/utils/client.go
deleted file mode 100644
index cc9647580..000000000
--- a/cmd/utils/client.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of go-ethereum.
-//
-// go-ethereum is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// go-ethereum is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
-
-package utils
-
-import (
- "fmt"
- "strings"
-
- "github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/rpc"
- "gopkg.in/urfave/cli.v1"
-)
-
-// NewRemoteRPCClient returns a RPC client which connects to a running geth instance.
-// Depending on the given context this can either be a IPC or a HTTP client.
-func NewRemoteRPCClient(ctx *cli.Context) (rpc.Client, error) {
- if ctx.Args().Present() {
- endpoint := ctx.Args().First()
- return NewRemoteRPCClientFromString(endpoint)
- }
- // use IPC by default
- return rpc.NewIPCClient(node.DefaultIPCEndpoint())
-}
-
-// NewRemoteRPCClientFromString returns a RPC client which connects to the given
-// endpoint. It must start with either `ipc:` or `rpc:` (HTTP).
-func NewRemoteRPCClientFromString(endpoint string) (rpc.Client, error) {
- if strings.HasPrefix(endpoint, "ipc:") {
- return rpc.NewIPCClient(endpoint[4:])
- }
- if strings.HasPrefix(endpoint, "rpc:") {
- return rpc.NewHTTPClient(endpoint[4:])
- }
- if strings.HasPrefix(endpoint, "http://") {
- return rpc.NewHTTPClient(endpoint)
- }
- if strings.HasPrefix(endpoint, "ws:") {
- return rpc.NewWSClient(endpoint)
- }
- return nil, fmt.Errorf("invalid endpoint")
-}
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 38ba3a9ba..3ab556a8f 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -47,7 +47,6 @@ import (
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/pow"
- "github.com/ethereum/go-ethereum/release"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/whisper"
"gopkg.in/urfave/cli.v1"
@@ -80,13 +79,16 @@ OPTIONS:
}
// NewApp creates an app with sane defaults.
-func NewApp(version, usage string) *cli.App {
+func NewApp(gitCommit, usage string) *cli.App {
app := cli.NewApp()
app.Name = filepath.Base(os.Args[0])
app.Author = ""
//app.Authors = nil
app.Email = ""
- app.Version = version
+ app.Version = Version
+ if gitCommit != "" {
+ app.Version += "-" + gitCommit[:8]
+ }
app.Usage = usage
return app
}
@@ -126,10 +128,6 @@ var (
Name: "dev",
Usage: "Developer mode: pre-configured private network with several debugging flags",
}
- GenesisFileFlag = cli.StringFlag{
- Name: "genesis",
- Usage: "Insert/overwrite the genesis block (JSON format)",
- }
IdentityFlag = cli.StringFlag{
Name: "identity",
Usage: "Custom node name",
@@ -148,11 +146,6 @@ var (
Usage: "Megabytes of memory allocated to internal caching (min 16MB / database forced)",
Value: 128,
}
- BlockchainVersionFlag = cli.IntFlag{
- Name: "blockchainversion",
- Usage: "Blockchain version (integer)",
- Value: core.BlockChainVersion,
- }
FastSyncFlag = cli.BoolFlag{
Name: "fast",
Usage: "Enable fast syncing through state downloads",
@@ -161,6 +154,15 @@ var (
Name: "lightkdf",
Usage: "Reduce key-derivation RAM & CPU usage at some expense of KDF strength",
}
+ // Fork settings
+ SupportDAOFork = cli.BoolFlag{
+ Name: "support-dao-fork",
+ Usage: "Updates the chain rules to support the DAO hard-fork",
+ }
+ OpposeDAOFork = cli.BoolFlag{
+ Name: "oppose-dao-fork",
+ Usage: "Updates the chain rules to oppose the DAO hard-fork",
+ }
// Miner settings
// TODO: refactor CPU vs GPU mining flags
MiningEnabledFlag = cli.BoolFlag{
@@ -408,16 +410,6 @@ func MustMakeDataDir(ctx *cli.Context) string {
return ""
}
-// MakeKeyStoreDir resolves the folder to use for storing the account keys from the
-// set command line flags, returning the explicitly requested path, or one inside
-// the data directory otherwise.
-func MakeKeyStoreDir(datadir string, ctx *cli.Context) string {
- if path := ctx.GlobalString(KeyStoreDirFlag.Name); path != "" {
- return path
- }
- return filepath.Join(datadir, "keystore")
-}
-
// MakeIPCPath creates an IPC path configuration from the set command line flags,
// returning an empty string if IPC was explicitly disabled, or the set path.
func MakeIPCPath(ctx *cli.Context) string {
@@ -534,20 +526,6 @@ func MakeWSRpcHost(ctx *cli.Context) string {
return ctx.GlobalString(WSListenAddrFlag.Name)
}
-// MakeGenesisBlock loads up a genesis block from an input file specified in the
-// command line, or returns the empty string if none set.
-func MakeGenesisBlock(ctx *cli.Context) string {
- genesis := ctx.GlobalString(GenesisFileFlag.Name)
- if genesis == "" {
- return ""
- }
- data, err := ioutil.ReadFile(genesis)
- if err != nil {
- Fatalf("Failed to load custom genesis file: %v", err)
- }
- return string(data)
-}
-
// MakeDatabaseHandles raises out the number of allowed file handles per process
// for Geth and returns half of the allowance to assign to the database.
func MakeDatabaseHandles() int {
@@ -564,20 +542,6 @@ func MakeDatabaseHandles() int {
return limit / 2 // Leave half for networking and other stuff
}
-// MakeAccountManager creates an account manager from set command line flags.
-func MakeAccountManager(ctx *cli.Context) *accounts.Manager {
- // Create the keystore crypto primitive, light if requested
- scryptN := accounts.StandardScryptN
- scryptP := accounts.StandardScryptP
- if ctx.GlobalBool(LightKDFFlag.Name) {
- scryptN = accounts.LightScryptN
- scryptP = accounts.LightScryptP
- }
- datadir := MustMakeDataDir(ctx)
- keydir := MakeKeyStoreDir(datadir, ctx)
- return accounts.NewManager(keydir, scryptN, scryptP)
-}
-
// MakeAddress converts an account specified directly as a hex encoded string or
// a key index in the key store to an internal account representation.
func MakeAddress(accman *accounts.Manager, account string) (accounts.Account, error) {
@@ -640,9 +604,53 @@ func MakePasswordList(ctx *cli.Context) []string {
return lines
}
-// MakeSystemNode sets up a local node, configures the services to launch and
-// assembles the P2P protocol stack.
-func MakeSystemNode(name, version string, relconf release.Config, extra []byte, ctx *cli.Context) *node.Node {
+// MakeNode configures a node with no services from command line flags.
+func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node {
+ vsn := Version
+ if gitCommit != "" {
+ vsn += "-" + gitCommit[:8]
+ }
+
+ config := &node.Config{
+ DataDir: MustMakeDataDir(ctx),
+ KeyStoreDir: ctx.GlobalString(KeyStoreDirFlag.Name),
+ UseLightweightKDF: ctx.GlobalBool(LightKDFFlag.Name),
+ PrivateKey: MakeNodeKey(ctx),
+ Name: MakeNodeName(name, vsn, ctx),
+ NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name),
+ BootstrapNodes: MakeBootstrapNodes(ctx),
+ ListenAddr: MakeListenAddress(ctx),
+ NAT: MakeNAT(ctx),
+ MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
+ MaxPendingPeers: ctx.GlobalInt(MaxPendingPeersFlag.Name),
+ IPCPath: MakeIPCPath(ctx),
+ HTTPHost: MakeHTTPRpcHost(ctx),
+ HTTPPort: ctx.GlobalInt(RPCPortFlag.Name),
+ HTTPCors: ctx.GlobalString(RPCCORSDomainFlag.Name),
+ HTTPModules: MakeRPCModules(ctx.GlobalString(RPCApiFlag.Name)),
+ WSHost: MakeWSRpcHost(ctx),
+ WSPort: ctx.GlobalInt(WSPortFlag.Name),
+ WSOrigins: ctx.GlobalString(WSAllowedOriginsFlag.Name),
+ WSModules: MakeRPCModules(ctx.GlobalString(WSApiFlag.Name)),
+ }
+ if ctx.GlobalBool(DevModeFlag.Name) {
+ if !ctx.GlobalIsSet(DataDirFlag.Name) {
+ config.DataDir = filepath.Join(os.TempDir(), "/ethereum_dev_mode")
+ }
+ // --dev mode does not need p2p networking.
+ config.MaxPeers = 0
+ config.ListenAddr = ":0"
+ }
+ stack, err := node.New(config)
+ if err != nil {
+ Fatalf("Failed to create the protocol stack: %v", err)
+ }
+ return stack
+}
+
+// RegisterEthService configures eth.Ethereum from command line flags and adds it to the
+// given node.
+func RegisterEthService(ctx *cli.Context, stack *node.Node, extra []byte) {
// Avoid conflicting network flags
networks, netFlags := 0, []cli.BoolFlag{DevModeFlag, TestNetFlag, OlympicFlag}
for _, flag := range netFlags {
@@ -653,29 +661,6 @@ func MakeSystemNode(name, version string, relconf release.Config, extra []byte,
if networks > 1 {
Fatalf("The %v flags are mutually exclusive", netFlags)
}
- // Configure the node's service container
- stackConf := &node.Config{
- DataDir: MustMakeDataDir(ctx),
- PrivateKey: MakeNodeKey(ctx),
- Name: MakeNodeName(name, version, ctx),
- NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name),
- BootstrapNodes: MakeBootstrapNodes(ctx),
- ListenAddr: MakeListenAddress(ctx),
- NAT: MakeNAT(ctx),
- MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
- MaxPendingPeers: ctx.GlobalInt(MaxPendingPeersFlag.Name),
- IPCPath: MakeIPCPath(ctx),
- HTTPHost: MakeHTTPRpcHost(ctx),
- HTTPPort: ctx.GlobalInt(RPCPortFlag.Name),
- HTTPCors: ctx.GlobalString(RPCCORSDomainFlag.Name),
- HTTPModules: MakeRPCModules(ctx.GlobalString(RPCApiFlag.Name)),
- WSHost: MakeWSRpcHost(ctx),
- WSPort: ctx.GlobalInt(WSPortFlag.Name),
- WSOrigins: ctx.GlobalString(WSAllowedOriginsFlag.Name),
- WSModules: MakeRPCModules(ctx.GlobalString(WSApiFlag.Name)),
- }
- // Configure the Ethereum service
- accman := MakeAccountManager(ctx)
// initialise new random number generator
rand := rand.New(rand.NewSource(time.Now().UnixNano()))
@@ -688,15 +673,12 @@ func MakeSystemNode(name, version string, relconf release.Config, extra []byte,
}
ethConf := &eth.Config{
+ Etherbase: MakeEtherbase(stack.AccountManager(), ctx),
ChainConfig: MustMakeChainConfig(ctx),
- Genesis: MakeGenesisBlock(ctx),
FastSync: ctx.GlobalBool(FastSyncFlag.Name),
- BlockChainVersion: ctx.GlobalInt(BlockchainVersionFlag.Name),
DatabaseCache: ctx.GlobalInt(CacheFlag.Name),
DatabaseHandles: MakeDatabaseHandles(),
NetworkId: ctx.GlobalInt(NetworkIdFlag.Name),
- AccountManager: accman,
- Etherbase: MakeEtherbase(accman, ctx),
MinerThreads: ctx.GlobalInt(MinerThreadsFlag.Name),
ExtraData: MakeMinerExtra(extra, ctx),
NatSpec: ctx.GlobalBool(NatspecEnabledFlag.Name),
@@ -713,8 +695,6 @@ func MakeSystemNode(name, version string, relconf release.Config, extra []byte,
SolcPath: ctx.GlobalString(SolcPathFlag.Name),
AutoDAG: ctx.GlobalBool(AutoDAGFlag.Name) || ctx.GlobalBool(MiningEnabledFlag.Name),
}
- // Configure the Whisper service
- shhEnable := ctx.GlobalBool(WhisperEnabledFlag.Name)
// Override any default configs in dev mode or the test net
switch {
@@ -722,70 +702,35 @@ func MakeSystemNode(name, version string, relconf release.Config, extra []byte,
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
ethConf.NetworkId = 1
}
- if !ctx.GlobalIsSet(GenesisFileFlag.Name) {
- ethConf.Genesis = core.OlympicGenesisBlock()
- }
+ ethConf.Genesis = core.OlympicGenesisBlock()
case ctx.GlobalBool(TestNetFlag.Name):
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
ethConf.NetworkId = 2
}
- if !ctx.GlobalIsSet(GenesisFileFlag.Name) {
- ethConf.Genesis = core.TestNetGenesisBlock()
- }
+ ethConf.Genesis = core.TestNetGenesisBlock()
state.StartingNonce = 1048576 // (2**20)
case ctx.GlobalBool(DevModeFlag.Name):
- // Override the base network stack configs
- if !ctx.GlobalIsSet(DataDirFlag.Name) {
- stackConf.DataDir = filepath.Join(os.TempDir(), "/ethereum_dev_mode")
- }
- if !ctx.GlobalIsSet(MaxPeersFlag.Name) {
- stackConf.MaxPeers = 0
- }
- if !ctx.GlobalIsSet(ListenPortFlag.Name) {
- stackConf.ListenAddr = ":0"
- }
- // Override the Ethereum protocol configs
- if !ctx.GlobalIsSet(GenesisFileFlag.Name) {
- ethConf.Genesis = core.OlympicGenesisBlock()
- }
+ ethConf.Genesis = core.OlympicGenesisBlock()
if !ctx.GlobalIsSet(GasPriceFlag.Name) {
ethConf.GasPrice = new(big.Int)
}
- if !ctx.GlobalIsSet(WhisperEnabledFlag.Name) {
- shhEnable = true
- }
ethConf.PowTest = true
}
- // Assemble and return the protocol stack
- stack, err := node.New(stackConf)
- if err != nil {
- Fatalf("Failed to create the protocol stack: %v", err)
- }
-
- if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
- return accman, nil
- }); err != nil {
- Fatalf("Failed to register the account manager service: %v", err)
- }
if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
return eth.New(ctx, ethConf)
}); err != nil {
Fatalf("Failed to register the Ethereum service: %v", err)
}
- if shhEnable {
- if err := stack.Register(func(*node.ServiceContext) (node.Service, error) { return whisper.New(), nil }); err != nil {
- Fatalf("Failed to register the Whisper service: %v", err)
- }
- }
- if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
- return release.NewReleaseService(ctx, relconf)
- }); err != nil {
- Fatalf("Failed to register the Geth release oracle service: %v", err)
+}
+
+// RegisterShhService configures whisper and adds it to the given node.
+func RegisterShhService(stack *node.Node) {
+ if err := stack.Register(func(*node.ServiceContext) (node.Service, error) { return whisper.New(), nil }); err != nil {
+ Fatalf("Failed to register the Whisper service: %v", err)
}
- return stack
}
// SetupNetwork configures the system for either the main net or some test network.
@@ -813,24 +758,45 @@ func MustMakeChainConfig(ctx *cli.Context) *core.ChainConfig {
// MustMakeChainConfigFromDb reads the chain configuration from the given database.
func MustMakeChainConfigFromDb(ctx *cli.Context, db ethdb.Database) *core.ChainConfig {
- genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0), 0)
+ // If the chain is already initialized, use any existing chain configs
+ config := new(core.ChainConfig)
+ genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0), 0)
if genesis != nil {
- // Existing genesis block, use stored config if available.
storedConfig, err := core.GetChainConfig(db, genesis.Hash())
- if err == nil {
- return storedConfig
- } else if err != core.ChainConfigNotFoundErr {
+ switch err {
+ case nil:
+ config = storedConfig
+ case core.ChainConfigNotFoundErr:
+ // No configs found, use empty, will populate below
+ default:
Fatalf("Could not make chain configuration: %v", err)
}
}
- var homesteadBlockNo *big.Int
- if ctx.GlobalBool(TestNetFlag.Name) {
- homesteadBlockNo = params.TestNetHomesteadBlock
- } else {
- homesteadBlockNo = params.MainNetHomesteadBlock
+ // Set any missing fields due to them being unset or system upgrade
+ if config.HomesteadBlock == nil {
+ if ctx.GlobalBool(TestNetFlag.Name) {
+ config.HomesteadBlock = params.TestNetHomesteadBlock
+ } else {
+ config.HomesteadBlock = params.MainNetHomesteadBlock
+ }
+ }
+ if config.DAOForkBlock == nil {
+ if ctx.GlobalBool(TestNetFlag.Name) {
+ config.DAOForkBlock = params.TestNetDAOForkBlock
+ } else {
+ config.DAOForkBlock = params.MainNetDAOForkBlock
+ }
+ config.DAOForkSupport = true
+ }
+ // Force override any existing configs if explicitly requested
+ switch {
+ case ctx.GlobalBool(SupportDAOFork.Name):
+ config.DAOForkSupport = true
+ case ctx.GlobalBool(OpposeDAOFork.Name):
+ config.DAOForkSupport = false
}
- return &core.ChainConfig{HomesteadBlock: homesteadBlockNo}
+ return config
}
// MakeChainDatabase open an LevelDB using the flags passed to the client and will hard crash if it fails.
diff --git a/cmd/utils/version.go b/cmd/utils/version.go
new file mode 100644
index 000000000..03633d694
--- /dev/null
+++ b/cmd/utils/version.go
@@ -0,0 +1,64 @@
+// Copyright 2014 The go-ethereum Authors
+// This file is part of go-ethereum.
+//
+// go-ethereum is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// go-ethereum is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
+
+// Package utils contains internal helper functions for go-ethereum commands.
+package utils
+
+import (
+ "fmt"
+ "runtime"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/params"
+ "github.com/ethereum/go-ethereum/rlp"
+)
+
+const (
+ VersionMajor = 1 // Major version component of the current release
+ VersionMinor = 5 // Minor version component of the current release
+ VersionPatch = 0 // Patch version component of the current release
+ VersionMeta = "unstable" // Version metadata to append to the version string
+)
+
+// Version holds the textual version string.
+var Version = func() string {
+ v := fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch)
+ if VersionMeta != "" {
+ v += "-" + VersionMeta
+ }
+ return v
+}()
+
+// MakeDefaultExtraData returns the default Ethereum block extra data blob.
+func MakeDefaultExtraData(clientIdentifier string) []byte {
+ var clientInfo = struct {
+ Version uint
+ Name string
+ GoVersion string
+ Os string
+ }{uint(VersionMajor<<16 | VersionMinor<<8 | VersionPatch), clientIdentifier, runtime.Version(), runtime.GOOS}
+ extra, err := rlp.EncodeToBytes(clientInfo)
+ if err != nil {
+ glog.V(logger.Warn).Infoln("error setting canonical miner information:", err)
+ }
+ if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() {
+ glog.V(logger.Warn).Infoln("error setting canonical miner information: extra exceeds", params.MaximumExtraDataSize)
+ glog.V(logger.Debug).Infof("extra: %x\n", extra)
+ return nil
+ }
+ return extra
+}
diff --git a/common/compiler/solidity.go b/common/compiler/solidity.go
index 6a5bfecd8..b682107d9 100644
--- a/common/compiler/solidity.go
+++ b/common/compiler/solidity.go
@@ -14,6 +14,7 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+// Package compiler wraps the Solidity compiler executable (solc).
package compiler
import (
@@ -21,42 +22,23 @@ import (
"encoding/json"
"errors"
"fmt"
+ "io"
"io/ioutil"
"os"
"os/exec"
- "path/filepath"
"regexp"
"strings"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/logger/glog"
)
var (
versionRegexp = regexp.MustCompile("[0-9]+\\.[0-9]+\\.[0-9]+")
- legacyRegexp = regexp.MustCompile("0\\.(9\\..*|1\\.[01])")
- paramsLegacy = []string{
- "--binary", // Request to output the contract in binary (hexadecimal).
- "file", //
- "--json-abi", // Request to output the contract's JSON ABI interface.
- "file", //
- "--natspec-user", // Request to output the contract's Natspec user documentation.
- "file", //
- "--natspec-dev", // Request to output the contract's Natspec developer documentation.
- "file",
- "--add-std",
- "1",
- }
- paramsNew = []string{
- "--bin", // Request to output the contract in binary (hexadecimal).
- "--abi", // Request to output the contract's JSON ABI interface.
- "--userdoc", // Request to output the contract's Natspec user documentation.
- "--devdoc", // Request to output the contract's Natspec developer documentation.
+ solcParams = []string{
+ "--combined-json", "bin,abi,userdoc,devdoc",
"--add-std", // include standard lib contracts
"--optimize", // code optimizer switched on
- "-o", // output directory
}
)
@@ -76,135 +58,112 @@ type ContractInfo struct {
DeveloperDoc interface{} `json:"developerDoc"`
}
+// Solidity contains information about the solidity compiler.
type Solidity struct {
- solcPath string
- version string
- fullVersion string
- legacy bool
+ Path, Version, FullVersion string
}
-func New(solcPath string) (sol *Solidity, err error) {
- // set default solc
- if len(solcPath) == 0 {
- solcPath = "solc"
- }
- solcPath, err = exec.LookPath(solcPath)
- if err != nil {
- return
- }
+// --combined-output format
+type solcOutput struct {
+ Contracts map[string]struct{ Bin, Abi, Devdoc, Userdoc string }
+ Version string
+}
- cmd := exec.Command(solcPath, "--version")
+// SolidityVersion runs solc and parses its version output.
+func SolidityVersion(solc string) (*Solidity, error) {
+ if solc == "" {
+ solc = "solc"
+ }
var out bytes.Buffer
+ cmd := exec.Command(solc, "--version")
cmd.Stdout = &out
- err = cmd.Run()
- if err != nil {
- return
+ if err := cmd.Run(); err != nil {
+ return nil, err
}
-
- fullVersion := out.String()
- version := versionRegexp.FindString(fullVersion)
- legacy := legacyRegexp.MatchString(version)
-
- sol = &Solidity{
- solcPath: solcPath,
- version: version,
- fullVersion: fullVersion,
- legacy: legacy,
+ s := &Solidity{
+ Path: cmd.Path,
+ FullVersion: out.String(),
+ Version: versionRegexp.FindString(out.String()),
}
- glog.V(logger.Info).Infoln(sol.Info())
- return
-}
-
-func (sol *Solidity) Info() string {
- return fmt.Sprintf("%s\npath: %s", sol.fullVersion, sol.solcPath)
-}
-
-func (sol *Solidity) Version() string {
- return sol.version
+ return s, nil
}
-// Compile builds and returns all the contracts contained within a source string.
-func (sol *Solidity) Compile(source string) (map[string]*Contract, error) {
- // Short circuit if no source code was specified
+// CompileSolidityString builds and returns all the contracts contained within a source string.
+func CompileSolidityString(solc, source string) (map[string]*Contract, error) {
if len(source) == 0 {
return nil, errors.New("solc: empty source string")
}
- // Create a safe place to dump compilation output
- wd, err := ioutil.TempDir("", "solc")
+ if solc == "" {
+ solc = "solc"
+ }
+ // Write source to a temporary file. Compiling stdin used to be supported
+ // but seems to produce an exception with solc 0.3.5.
+ infile, err := ioutil.TempFile("", "geth-compile-solidity")
if err != nil {
- return nil, fmt.Errorf("solc: failed to create temporary build folder: %v", err)
+ return nil, err
+ }
+ defer os.Remove(infile.Name())
+ if _, err := io.WriteString(infile, source); err != nil {
+ return nil, err
+ }
+ if err := infile.Close(); err != nil {
+ return nil, err
}
- defer os.RemoveAll(wd)
- // Assemble the compiler command, change to the temp folder and capture any errors
- stderr := new(bytes.Buffer)
+ return CompileSolidity(solc, infile.Name())
+}
- var params []string
- if sol.legacy {
- params = paramsLegacy
- } else {
- params = paramsNew
- params = append(params, wd)
+// CompileSolidity compiles all given Solidity source files.
+func CompileSolidity(solc string, sourcefiles ...string) (map[string]*Contract, error) {
+ if len(sourcefiles) == 0 {
+ return nil, errors.New("solc: no source ")
+ }
+ source, err := slurpFiles(sourcefiles)
+ if err != nil {
+ return nil, err
+ }
+ if solc == "" {
+ solc = "solc"
}
- compilerOptions := strings.Join(params, " ")
-
- cmd := exec.Command(sol.solcPath, params...)
- cmd.Stdin = strings.NewReader(source)
- cmd.Stderr = stderr
+ var stderr, stdout bytes.Buffer
+ args := append(solcParams, "--")
+ cmd := exec.Command(solc, append(args, sourcefiles...)...)
+ cmd.Stderr = &stderr
+ cmd.Stdout = &stdout
if err := cmd.Run(); err != nil {
- return nil, fmt.Errorf("solc: %v\n%s", err, string(stderr.Bytes()))
+ return nil, fmt.Errorf("solc: %v\n%s", err, stderr.Bytes())
}
- // Sanity check that something was actually built
- matches, _ := filepath.Glob(filepath.Join(wd, "*.bin*"))
- if len(matches) < 1 {
- return nil, fmt.Errorf("solc: no build results found")
+ var output solcOutput
+ if err := json.Unmarshal(stdout.Bytes(), &output); err != nil {
+ return nil, err
}
- // Compilation succeeded, assemble and return the contracts
- contracts := make(map[string]*Contract)
- for _, path := range matches {
- _, file := filepath.Split(path)
- base := strings.Split(file, ".")[0]
-
- // Parse the individual compilation results (code binary, ABI definitions, user and dev docs)
- var binary []byte
- binext := ".bin"
- if sol.legacy {
- binext = ".binary"
- }
- if binary, err = ioutil.ReadFile(filepath.Join(wd, base+binext)); err != nil {
- return nil, fmt.Errorf("solc: error reading compiler output for code: %v", err)
- }
+ shortVersion := versionRegexp.FindString(output.Version)
+ // Compilation succeeded, assemble and return the contracts.
+ contracts := make(map[string]*Contract)
+ for name, info := range output.Contracts {
+ // Parse the individual compilation results.
var abi interface{}
- if blob, err := ioutil.ReadFile(filepath.Join(wd, base+".abi")); err != nil {
- return nil, fmt.Errorf("solc: error reading abi definition: %v", err)
- } else if err = json.Unmarshal(blob, &abi); err != nil {
- return nil, fmt.Errorf("solc: error parsing abi definition: %v", err)
+ if err := json.Unmarshal([]byte(info.Abi), &abi); err != nil {
+ return nil, fmt.Errorf("solc: error reading abi definition (%v)", err)
}
-
var userdoc interface{}
- if blob, err := ioutil.ReadFile(filepath.Join(wd, base+".docuser")); err != nil {
+ if err := json.Unmarshal([]byte(info.Userdoc), &userdoc); err != nil {
return nil, fmt.Errorf("solc: error reading user doc: %v", err)
- } else if err = json.Unmarshal(blob, &userdoc); err != nil {
- return nil, fmt.Errorf("solc: error parsing user doc: %v", err)
}
-
var devdoc interface{}
- if blob, err := ioutil.ReadFile(filepath.Join(wd, base+".docdev")); err != nil {
+ if err := json.Unmarshal([]byte(info.Devdoc), &devdoc); err != nil {
return nil, fmt.Errorf("solc: error reading dev doc: %v", err)
- } else if err = json.Unmarshal(blob, &devdoc); err != nil {
- return nil, fmt.Errorf("solc: error parsing dev doc: %v", err)
}
- // Assemble the final contract
- contracts[base] = &Contract{
- Code: "0x" + string(binary),
+ contracts[name] = &Contract{
+ Code: "0x" + info.Bin,
Info: ContractInfo{
Source: source,
Language: "Solidity",
- LanguageVersion: sol.version,
- CompilerVersion: sol.version,
- CompilerOptions: compilerOptions,
+ LanguageVersion: shortVersion,
+ CompilerVersion: shortVersion,
+ CompilerOptions: strings.Join(solcParams, " "),
AbiDefinition: abi,
UserDoc: userdoc,
DeveloperDoc: devdoc,
@@ -214,12 +173,24 @@ func (sol *Solidity) Compile(source string) (map[string]*Contract, error) {
return contracts, nil
}
-func SaveInfo(info *ContractInfo, filename string) (contenthash common.Hash, err error) {
+func slurpFiles(files []string) (string, error) {
+ var concat bytes.Buffer
+ for _, file := range files {
+ content, err := ioutil.ReadFile(file)
+ if err != nil {
+ return "", err
+ }
+ concat.Write(content)
+ }
+ return concat.String(), nil
+}
+
+// SaveInfo serializes info to the given file and returns its Keccak256 hash.
+func SaveInfo(info *ContractInfo, filename string) (common.Hash, error) {
infojson, err := json.Marshal(info)
if err != nil {
- return
+ return common.Hash{}, err
}
- contenthash = common.BytesToHash(crypto.Keccak256(infojson))
- err = ioutil.WriteFile(filename, infojson, 0600)
- return
+ contenthash := common.BytesToHash(crypto.Keccak256(infojson))
+ return contenthash, ioutil.WriteFile(filename, infojson, 0600)
}
diff --git a/common/compiler/solidity_test.go b/common/compiler/solidity_test.go
index 7109b1ec4..e4d96bd01 100644
--- a/common/compiler/solidity_test.go
+++ b/common/compiler/solidity_test.go
@@ -26,10 +26,9 @@ import (
"github.com/ethereum/go-ethereum/common"
)
-const solcVersion = "0.1.1"
-
-var (
- source = `
+const (
+ supportedSolcVersion = "0.3.5"
+ testSource = `
contract test {
/// @notice Will multiply ` + "`a`" + ` by 7.
function multiply(uint a) returns(uint d) {
@@ -37,61 +36,57 @@ contract test {
}
}
`
- code = "0x6060604052606d8060116000396000f30060606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146037576035565b005b6046600480359060200150605c565b6040518082815260200191505060405180910390f35b60006007820290506068565b91905056"
- info = `{"source":"\ncontract test {\n /// @notice Will multiply ` + "`a`" + ` by 7.\n function multiply(uint a) returns(uint d) {\n return a * 7;\n }\n}\n","language":"Solidity","languageVersion":"0.1.1","compilerVersion":"0.1.1","compilerOptions":"--binary file --json-abi file --natspec-user file --natspec-dev file --add-std 1","abiDefinition":[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"type":"function"}],"userDoc":{"methods":{"multiply(uint256)":{"notice":"Will multiply ` + "`a`" + ` by 7."}}},"developerDoc":{"methods":{}}}`
-
- infohash = common.HexToHash("0x9f3803735e7f16120c5a140ab3f02121fd3533a9655c69b33a10e78752cc49b0")
+ testCode = "0x6060604052602a8060106000396000f3606060405260e060020a6000350463c6888fa18114601a575b005b6007600435026060908152602090f3"
+ testInfo = `{"source":"\ncontract test {\n /// @notice Will multiply ` + "`a`" + ` by 7.\n function multiply(uint a) returns(uint d) {\n return a * 7;\n }\n}\n","language":"Solidity","languageVersion":"0.1.1","compilerVersion":"0.1.1","compilerOptions":"--binary file --json-abi file --natspec-user file --natspec-dev file --add-std 1","abiDefinition":[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"type":"function"}],"userDoc":{"methods":{"multiply(uint256)":{"notice":"Will multiply ` + "`a`" + ` by 7."}}},"developerDoc":{"methods":{}}}`
)
-func TestCompiler(t *testing.T) {
- sol, err := New("")
+func skipUnsupported(t *testing.T) {
+ sol, err := SolidityVersion("")
if err != nil {
- t.Skipf("solc not found: %v", err)
- } else if sol.Version() != solcVersion {
- t.Skipf("WARNING: a newer version of solc found (%v, expect %v)", sol.Version(), solcVersion)
- }
- contracts, err := sol.Compile(source)
- if err != nil {
- t.Errorf("error compiling source. result %v: %v", contracts, err)
+ t.Skip(err)
return
}
+ if sol.Version != supportedSolcVersion {
+ t.Skipf("unsupported version of solc found (%v, expect %v)", sol.Version, supportedSolcVersion)
+ }
+}
+func TestCompiler(t *testing.T) {
+ skipUnsupported(t)
+ contracts, err := CompileSolidityString("", testSource)
+ if err != nil {
+ t.Fatalf("error compiling source. result %v: %v", contracts, err)
+ }
if len(contracts) != 1 {
t.Errorf("one contract expected, got %d", len(contracts))
}
-
- if contracts["test"].Code != code {
- t.Errorf("wrong code, expected\n%s, got\n%s", code, contracts["test"].Code)
+ c, ok := contracts["test"]
+ if !ok {
+ t.Fatal("info for contract 'test' not present in result")
+ }
+ if c.Code != testCode {
+ t.Errorf("wrong code: expected\n%s, got\n%s", testCode, c.Code)
+ }
+ if c.Info.Source != testSource {
+ t.Error("wrong source")
+ }
+ if c.Info.CompilerVersion != supportedSolcVersion {
+ t.Errorf("wrong version: expected %q, got %q", supportedSolcVersion, c.Info.CompilerVersion)
}
-
}
func TestCompileError(t *testing.T) {
- sol, err := New("")
- if err != nil || sol.version != solcVersion {
- t.Skip("solc not found: skip")
- } else if sol.Version() != solcVersion {
- t.Skip("WARNING: skipping due to a newer version of solc found (%v, expect %v)", sol.Version(), solcVersion)
- }
- contracts, err := sol.Compile(source[2:])
+ skipUnsupported(t)
+ contracts, err := CompileSolidityString("", testSource[4:])
if err == nil {
t.Errorf("error expected compiling source. got none. result %v", contracts)
- return
- }
-}
-
-func TestNoCompiler(t *testing.T) {
- _, err := New("/path/to/solc")
- if err != nil {
- t.Logf("solidity quits with error: %v", err)
- } else {
- t.Errorf("no solc installed, but got no error")
}
+ t.Logf("error: %v", err)
}
func TestSaveInfo(t *testing.T) {
var cinfo ContractInfo
- err := json.Unmarshal([]byte(info), &cinfo)
+ err := json.Unmarshal([]byte(testInfo), &cinfo)
if err != nil {
t.Errorf("%v", err)
}
@@ -105,10 +100,11 @@ func TestSaveInfo(t *testing.T) {
if err != nil {
t.Errorf("error reading '%v': %v", filename, err)
}
- if string(got) != info {
- t.Errorf("incorrect info.json extracted, expected:\n%s\ngot\n%s", info, string(got))
+ if string(got) != testInfo {
+ t.Errorf("incorrect info.json extracted, expected:\n%s\ngot\n%s", testInfo, string(got))
}
- if cinfohash != infohash {
- t.Errorf("content hash for info is incorrect. expected %v, got %v", infohash.Hex(), cinfohash.Hex())
+ wantHash := common.HexToHash("0x9f3803735e7f16120c5a140ab3f02121fd3533a9655c69b33a10e78752cc49b0")
+ if cinfohash != wantHash {
+ t.Errorf("content hash for info is incorrect. expected %v, got %v", wantHash.Hex(), cinfohash.Hex())
}
}
diff --git a/common/natspec/natspec_js.go b/common/natspec/natspec_js.go
index 2b30d31d3..0375bb4d5 100644
--- a/common/natspec/natspec_js.go
+++ b/common/natspec/natspec_js.go
@@ -787,7 +787,7 @@ var findIndex = function (array, callback) {
};
/**
- * Should be called to get sting from it's hex representation
+ * Should be called to get sting from its hex representation
*
* @method toAscii
* @param {String} string in hex
@@ -865,7 +865,7 @@ var extractTypeName = function (name) {
};
/**
- * Converts value to it's decimal representation in string
+ * Converts value to its decimal representation in string
*
* @method toDecimal
* @param {String|Number|BigNumber}
@@ -876,7 +876,7 @@ var toDecimal = function (value) {
};
/**
- * Converts value to it's hex representation
+ * Converts value to its hex representation
*
* @method fromDecimal
* @param {String|Number|BigNumber}
@@ -890,7 +890,7 @@ var fromDecimal = function (value) {
};
/**
- * Auto converts any given value into it's hex representation.
+ * Auto converts any given value into its hex representation.
*
* And even stringifys objects before.
*
diff --git a/console/bridge.go b/console/bridge.go
index b23e06837..22ed7192b 100644
--- a/console/bridge.go
+++ b/console/bridge.go
@@ -31,13 +31,13 @@ import (
// bridge is a collection of JavaScript utility methods to bride the .js runtime
// environment and the Go RPC connection backing the remote method calls.
type bridge struct {
- client rpc.Client // RPC client to execute Ethereum requests through
+ client *rpc.Client // RPC client to execute Ethereum requests through
prompter UserPrompter // Input prompter to allow interactive user feedback
printer io.Writer // Output writer to serialize any display strings to
}
// newBridge creates a new JavaScript wrapper around an RPC client.
-func newBridge(client rpc.Client, prompter UserPrompter, printer io.Writer) *bridge {
+func newBridge(client *rpc.Client, prompter UserPrompter, printer io.Writer) *bridge {
return &bridge{
client: client,
prompter: prompter,
@@ -188,88 +188,86 @@ func (b *bridge) SleepBlocks(call otto.FunctionCall) (response otto.Value) {
return otto.FalseValue()
}
-// Send will serialize the first argument, send it to the node and returns the response.
+type jsonrpcCall struct {
+ Id int64
+ Method string
+ Params []interface{}
+}
+
+// Send implements the web3 provider "send" method.
func (b *bridge) Send(call otto.FunctionCall) (response otto.Value) {
- // Ensure that we've got a batch request (array) or a single request (object)
- arg := call.Argument(0).Object()
- if arg == nil || (arg.Class() != "Array" && arg.Class() != "Object") {
- throwJSException("request must be an object or array")
- }
- // Convert the otto VM arguments to Go values
- data, err := call.Otto.Call("JSON.stringify", nil, arg)
+ // Remarshal the request into a Go value.
+ JSON, _ := call.Otto.Object("JSON")
+ reqVal, err := JSON.Call("stringify", call.Argument(0))
if err != nil {
throwJSException(err.Error())
}
- reqjson, err := data.ToString()
- if err != nil {
- throwJSException(err.Error())
- }
-
var (
- reqs []rpc.JSONRequest
- batch = true
+ rawReq = []byte(reqVal.String())
+ reqs []jsonrpcCall
+ batch bool
)
- if err = json.Unmarshal([]byte(reqjson), &reqs); err != nil {
- // single request?
- reqs = make([]rpc.JSONRequest, 1)
- if err = json.Unmarshal([]byte(reqjson), &reqs[0]); err != nil {
- throwJSException("invalid request")
- }
+ if rawReq[0] == '[' {
+ batch = true
+ json.Unmarshal(rawReq, &reqs)
+ } else {
batch = false
+ reqs = make([]jsonrpcCall, 1)
+ json.Unmarshal(rawReq, &reqs[0])
}
- // Iteratively execute the requests
- call.Otto.Set("response_len", len(reqs))
- call.Otto.Run("var ret_response = new Array(response_len);")
- for i, req := range reqs {
- // Execute the RPC request and parse the reply
- if err = b.client.Send(&req); err != nil {
- return newErrorResponse(call, -32603, err.Error(), req.Id)
- }
- result := make(map[string]interface{})
- if err = b.client.Recv(&result); err != nil {
- return newErrorResponse(call, -32603, err.Error(), req.Id)
+ // Execute the requests.
+ resps, _ := call.Otto.Object("new Array()")
+ for _, req := range reqs {
+ resp, _ := call.Otto.Object(`({"jsonrpc":"2.0"})`)
+ resp.Set("id", req.Id)
+ var result json.RawMessage
+ err = b.client.Call(&result, req.Method, req.Params...)
+ switch err := err.(type) {
+ case nil:
+ if result == nil {
+ // Special case null because it is decoded as an empty
+ // raw message for some reason.
+ resp.Set("result", otto.NullValue())
+ } else {
+ resultVal, err := JSON.Call("parse", string(result))
+ if err != nil {
+ resp = newErrorResponse(call, -32603, err.Error(), &req.Id).Object()
+ } else {
+ resp.Set("result", resultVal)
+ }
+ }
+ case rpc.Error:
+ resp.Set("error", map[string]interface{}{
+ "code": err.ErrorCode(),
+ "message": err.Error(),
+ })
+ default:
+ resp = newErrorResponse(call, -32603, err.Error(), &req.Id).Object()
}
- // Feed the reply back into the JavaScript runtime environment
- id, _ := result["id"]
- jsonver, _ := result["jsonrpc"]
-
- call.Otto.Set("ret_id", id)
- call.Otto.Set("ret_jsonrpc", jsonver)
- call.Otto.Set("response_idx", i)
+ resps.Call("push", resp)
+ }
- if res, ok := result["result"]; ok {
- payload, _ := json.Marshal(res)
- call.Otto.Set("ret_result", string(payload))
- response, err = call.Otto.Run(`
- ret_response[response_idx] = { jsonrpc: ret_jsonrpc, id: ret_id, result: JSON.parse(ret_result) };
- `)
- continue
- }
- if res, ok := result["error"]; ok {
- payload, _ := json.Marshal(res)
- call.Otto.Set("ret_result", string(payload))
- response, err = call.Otto.Run(`
- ret_response[response_idx] = { jsonrpc: ret_jsonrpc, id: ret_id, error: JSON.parse(ret_result) };
- `)
- continue
- }
- return newErrorResponse(call, -32603, fmt.Sprintf("Invalid response"), new(int64))
+ // Return the responses either to the callback (if supplied)
+ // or directly as the return value.
+ if batch {
+ response = resps.Value()
+ } else {
+ response, _ = resps.Get("0")
}
- // Convert single requests back from batch ones
- if !batch {
- call.Otto.Run("ret_response = ret_response[0];")
+ if fn := call.Argument(1); fn.Class() == "Function" {
+ fn.Call(otto.NullValue(), otto.NullValue(), response)
+ return otto.UndefinedValue()
}
- // Execute any registered callbacks
- if call.Argument(1).IsObject() {
- call.Otto.Set("callback", call.Argument(1))
- call.Otto.Run(`
- if (Object.prototype.toString.call(callback) == '[object Function]') {
- callback(null, ret_response);
- }
- `)
- }
- return
+ return response
+}
+
+func newErrorResponse(call otto.FunctionCall, code int, msg string, id interface{}) otto.Value {
+ // Bundle the error into a JSON RPC call response
+ m := map[string]interface{}{"version": "2.0", "id": id, "error": map[string]interface{}{"code": code, msg: msg}}
+ res, _ := json.Marshal(m)
+ val, _ := call.Otto.Run("(" + string(res) + ")")
+ return val
}
// throwJSException panics on an otto.Value. The Otto VM will recover from the
@@ -281,37 +279,3 @@ func throwJSException(msg interface{}) otto.Value {
}
panic(val)
}
-
-// newErrorResponse creates a JSON RPC error response for a specific request id,
-// containing the specified error code and error message. Beside returning the
-// error to the caller, it also sets the ret_error and ret_response JavaScript
-// variables.
-func newErrorResponse(call otto.FunctionCall, code int, msg string, id interface{}) (response otto.Value) {
- // Bundle the error into a JSON RPC call response
- res := rpc.JSONErrResponse{
- Version: rpc.JSONRPCVersion,
- Id: id,
- Error: rpc.JSONError{
- Code: code,
- Message: msg,
- },
- }
- // Serialize the error response into JavaScript variables
- errObj, err := json.Marshal(res.Error)
- if err != nil {
- glog.V(logger.Error).Infof("Failed to serialize JSON RPC error: %v", err)
- }
- resObj, err := json.Marshal(res)
- if err != nil {
- glog.V(logger.Error).Infof("Failed to serialize JSON RPC error response: %v", err)
- }
-
- if _, err = call.Otto.Run("ret_error = " + string(errObj)); err != nil {
- glog.V(logger.Error).Infof("Failed to set `ret_error` to the occurred error: %v", err)
- }
- resVal, err := call.Otto.Run("ret_response = " + string(resObj))
- if err != nil {
- glog.V(logger.Error).Infof("Failed to set `ret_response` to the JSON RPC response: %v", err)
- }
- return resVal
-}
diff --git a/console/console.go b/console/console.go
index 00d1fea1d..f224f0c2e 100644
--- a/console/console.go
+++ b/console/console.go
@@ -52,7 +52,7 @@ const DefaultPrompt = "> "
type Config struct {
DataDir string // Data directory to store the console history at
DocRoot string // Filesystem path from where to load JavaScript files from
- Client rpc.Client // RPC client to execute Ethereum requests through
+ Client *rpc.Client // RPC client to execute Ethereum requests through
Prompt string // Input prompt prefix string (defaults to DefaultPrompt)
Prompter UserPrompter // Input prompter to allow interactive user feedback (defaults to TerminalPrompter)
Printer io.Writer // Output writer to serialize any display strings to (defaults to os.Stdout)
@@ -63,7 +63,7 @@ type Config struct {
// JavaScript console attached to a running node via an external or in-process RPC
// client.
type Console struct {
- client rpc.Client // RPC client to execute Ethereum requests through
+ client *rpc.Client // RPC client to execute Ethereum requests through
jsre *jsre.JSRE // JavaScript runtime environment running the interpreter
prompt string // Input prompt prefix string
prompter UserPrompter // Input prompter to allow interactive user feedback
diff --git a/console/console_test.go b/console/console_test.go
index 7738d0c44..fd3459139 100644
--- a/console/console_test.go
+++ b/console/console_test.go
@@ -23,12 +23,10 @@ import (
"io/ioutil"
"math/big"
"os"
- "path/filepath"
"strings"
"testing"
"time"
- "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/eth"
@@ -92,18 +90,16 @@ func newTester(t *testing.T, confOverride func(*eth.Config)) *tester {
if err != nil {
t.Fatalf("failed to create temporary keystore: %v", err)
}
- accman := accounts.NewPlaintextManager(filepath.Join(workspace, "keystore"))
// Create a networkless protocol stack and start an Ethereum service within
- stack, err := node.New(&node.Config{DataDir: workspace, Name: testInstance, NoDiscovery: true})
+ stack, err := node.New(&node.Config{DataDir: workspace, UseLightweightKDF: true, Name: testInstance, NoDiscovery: true})
if err != nil {
t.Fatalf("failed to create node: %v", err)
}
ethConf := &eth.Config{
- ChainConfig: &core.ChainConfig{HomesteadBlock: new(big.Int)},
- Etherbase: common.HexToAddress(testAddress),
- AccountManager: accman,
- PowTest: true,
+ ChainConfig: &core.ChainConfig{HomesteadBlock: new(big.Int)},
+ Etherbase: common.HexToAddress(testAddress),
+ PowTest: true,
}
if confOverride != nil {
confOverride(ethConf)
diff --git a/containers/docker/develop-alpine/Dockerfile b/containers/docker/develop-alpine/Dockerfile
index 6b00bf253..f3247d178 100644
--- a/containers/docker/develop-alpine/Dockerfile
+++ b/containers/docker/develop-alpine/Dockerfile
@@ -1,12 +1,11 @@
-FROM alpine:3.3
+FROM alpine:3.4
RUN \
- apk add --update go git make gcc musl-dev && \
- git clone https://github.com/ethereum/go-ethereum && \
- (cd go-ethereum && git checkout develop) && \
- (cd go-ethereum && make geth) && \
- cp go-ethereum/build/bin/geth /geth && \
- apk del go git make gcc musl-dev && \
+ apk add --update go git make gcc musl-dev && \
+ git clone --depth 1 --branch develop https://github.com/ethereum/go-ethereum && \
+ (cd go-ethereum && make geth) && \
+ cp go-ethereum/build/bin/geth /geth && \
+ apk del go git make gcc musl-dev && \
rm -rf /go-ethereum && rm -rf /var/cache/apk/*
EXPOSE 8545
diff --git a/containers/docker/master-alpine/Dockerfile b/containers/docker/master-alpine/Dockerfile
index ade4caf6f..3393c4337 100644
--- a/containers/docker/master-alpine/Dockerfile
+++ b/containers/docker/master-alpine/Dockerfile
@@ -1,11 +1,11 @@
-FROM alpine:3.3
+FROM alpine:3.4
RUN \
- apk add --update go git make gcc musl-dev && \
- git clone https://github.com/ethereum/go-ethereum && \
- (cd go-ethereum && make geth) && \
- cp go-ethereum/build/bin/geth /geth && \
- apk del go git make gcc musl-dev && \
+ apk add --update go git make gcc musl-dev && \
+ git clone --depth 1 https://github.com/ethereum/go-ethereum && \
+ (cd go-ethereum && make geth) && \
+ cp go-ethereum/build/bin/geth /geth && \
+ apk del go git make gcc musl-dev && \
rm -rf /go-ethereum && rm -rf /var/cache/apk/*
EXPOSE 8545
diff --git a/contracts/chequebook/api.go b/contracts/chequebook/api.go
new file mode 100644
index 000000000..b2b2365f3
--- /dev/null
+++ b/contracts/chequebook/api.go
@@ -0,0 +1,68 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package chequebook
+
+import (
+ "errors"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+const Version = "1.0"
+
+var errNoChequebook = errors.New("no chequebook")
+
+type Api struct {
+ chequebookf func() *Chequebook
+}
+
+func NewApi(ch func() *Chequebook) *Api {
+ return &Api{ch}
+}
+
+func (self *Api) Balance() (string, error) {
+ ch := self.chequebookf()
+ if ch == nil {
+ return "", errNoChequebook
+ }
+ return ch.Balance().String(), nil
+}
+
+func (self *Api) Issue(beneficiary common.Address, amount *big.Int) (cheque *Cheque, err error) {
+ ch := self.chequebookf()
+ if ch == nil {
+ return nil, errNoChequebook
+ }
+ return ch.Issue(beneficiary, amount)
+}
+
+func (self *Api) Cash(cheque *Cheque) (txhash string, err error) {
+ ch := self.chequebookf()
+ if ch == nil {
+ return "", errNoChequebook
+ }
+ return ch.Cash(cheque)
+}
+
+func (self *Api) Deposit(amount *big.Int) (txhash string, err error) {
+ ch := self.chequebookf()
+ if ch == nil {
+ return "", errNoChequebook
+ }
+ return ch.Deposit(amount)
+}
diff --git a/contracts/chequebook/cheque.go b/contracts/chequebook/cheque.go
new file mode 100644
index 000000000..5ece1391b
--- /dev/null
+++ b/contracts/chequebook/cheque.go
@@ -0,0 +1,642 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// Package chequebook package wraps the 'chequebook' Ethereum smart contract.
+//
+// The functions in this package allow using chequebook for
+// issuing, receiving, verifying cheques in ether; (auto)cashing cheques in ether
+// as well as (auto)depositing ether to the chequebook contract.
+package chequebook
+
+//go:generate abigen --sol contract/chequebook.sol --pkg contract --out contract/chequebook.go
+//go:generate go run ./gencode.go
+
+import (
+ "bytes"
+ "crypto/ecdsa"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "math/big"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/contracts/chequebook/contract"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/services/swap/swap"
+ "golang.org/x/net/context"
+)
+
+// TODO(zelig): watch peer solvency and notify of bouncing cheques
+// TODO(zelig): enable paying with cheque by signing off
+
+// Some functionality require interacting with the blockchain:
+// * setting current balance on peer's chequebook
+// * sending the transaction to cash the cheque
+// * depositing ether to the chequebook
+// * watching incoming ether
+
+var (
+ gasToCash = big.NewInt(2000000) // gas cost of a cash transaction using chequebook
+ // gasToDeploy = big.NewInt(3000000)
+)
+
+// Backend wraps all methods required for chequebook operation.
+type Backend interface {
+ bind.ContractBackend
+ TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
+ BalanceAt(ctx context.Context, address common.Address, blockNum *big.Int) (*big.Int, error)
+}
+
+// Cheque represents a payment promise to a single beneficiary.
+type Cheque struct {
+ Contract common.Address // address of chequebook, needed to avoid cross-contract submission
+ Beneficiary common.Address
+ Amount *big.Int // cumulative amount of all funds sent
+ Sig []byte // signature Sign(Keccak256(contract, beneficiary, amount), prvKey)
+}
+
+func (self *Cheque) String() string {
+ return fmt.Sprintf("contract: %s, beneficiary: %s, amount: %v, signature: %x", self.Contract.Hex(), self.Beneficiary.Hex(), self.Amount, self.Sig)
+}
+
+type Params struct {
+ ContractCode, ContractAbi string
+}
+
+var ContractParams = &Params{contract.ChequebookBin, contract.ChequebookABI}
+
+// Chequebook can create and sign cheques from a single contract to multiple beneficiaries.
+// It is the outgoing payment handler for peer to peer micropayments.
+type Chequebook struct {
+ path string // path to chequebook file
+ prvKey *ecdsa.PrivateKey // private key to sign cheque with
+ lock sync.Mutex //
+ backend Backend // blockchain API
+ quit chan bool // when closed causes autodeposit to stop
+ owner common.Address // owner address (derived from pubkey)
+ contract *contract.Chequebook // abigen binding
+ session *contract.ChequebookSession // abigen binding with Tx Opts
+
+ // persisted fields
+ balance *big.Int // not synced with blockchain
+ contractAddr common.Address // contract address
+ sent map[common.Address]*big.Int //tallies for beneficiarys
+
+ txhash string // tx hash of last deposit tx
+ threshold *big.Int // threshold that triggers autodeposit if not nil
+ buffer *big.Int // buffer to keep on top of balance for fork protection
+}
+
+func (self *Chequebook) String() string {
+ return fmt.Sprintf("contract: %s, owner: %s, balance: %v, signer: %x", self.contractAddr.Hex(), self.owner.Hex(), self.balance, self.prvKey.PublicKey)
+}
+
+// NewChequebook creates a new Chequebook.
+func NewChequebook(path string, contractAddr common.Address, prvKey *ecdsa.PrivateKey, backend Backend) (self *Chequebook, err error) {
+ balance := new(big.Int)
+ sent := make(map[common.Address]*big.Int)
+
+ chbook, err := contract.NewChequebook(contractAddr, backend)
+ if err != nil {
+ return nil, err
+ }
+ transactOpts := bind.NewKeyedTransactor(prvKey)
+ session := &contract.ChequebookSession{
+ Contract: chbook,
+ TransactOpts: *transactOpts,
+ }
+
+ self = &Chequebook{
+ prvKey: prvKey,
+ balance: balance,
+ contractAddr: contractAddr,
+ sent: sent,
+ path: path,
+ backend: backend,
+ owner: transactOpts.From,
+ contract: chbook,
+ session: session,
+ }
+
+ if (contractAddr != common.Address{}) {
+ self.setBalanceFromBlockChain()
+ glog.V(logger.Detail).Infof("new chequebook initialised from %s (owner: %v, balance: %s)", contractAddr.Hex(), self.owner.Hex(), self.balance.String())
+ }
+ return
+}
+
+func (self *Chequebook) setBalanceFromBlockChain() {
+ balance, err := self.backend.BalanceAt(context.TODO(), self.contractAddr, nil)
+ if err != nil {
+ glog.V(logger.Error).Infof("can't get balance: %v", err)
+ } else {
+ self.balance.Set(balance)
+ }
+}
+
+// LoadChequebook loads a chequebook from disk (file path).
+func LoadChequebook(path string, prvKey *ecdsa.PrivateKey, backend Backend, checkBalance bool) (self *Chequebook, err error) {
+ var data []byte
+ data, err = ioutil.ReadFile(path)
+ if err != nil {
+ return
+ }
+
+ self, _ = NewChequebook(path, common.Address{}, prvKey, backend)
+
+ err = json.Unmarshal(data, self)
+ if err != nil {
+ return nil, err
+ }
+ if checkBalance {
+ self.setBalanceFromBlockChain()
+ }
+
+ glog.V(logger.Detail).Infof("loaded chequebook (%s, owner: %v, balance: %v) initialised from %v", self.contractAddr.Hex(), self.owner.Hex(), self.balance, path)
+
+ return
+}
+
+// chequebookFile is the JSON representation of a chequebook.
+type chequebookFile struct {
+ Balance string
+ Contract string
+ Owner string
+ Sent map[string]string
+}
+
+// UnmarshalJSON deserialises a chequebook.
+func (self *Chequebook) UnmarshalJSON(data []byte) error {
+ var file chequebookFile
+ err := json.Unmarshal(data, &file)
+ if err != nil {
+ return err
+ }
+ _, ok := self.balance.SetString(file.Balance, 10)
+ if !ok {
+ return fmt.Errorf("cumulative amount sent: unable to convert string to big integer: %v", file.Balance)
+ }
+ self.contractAddr = common.HexToAddress(file.Contract)
+ for addr, sent := range file.Sent {
+ self.sent[common.HexToAddress(addr)], ok = new(big.Int).SetString(sent, 10)
+ if !ok {
+ return fmt.Errorf("beneficiary %v cumulative amount sent: unable to convert string to big integer: %v", addr, sent)
+ }
+ }
+ return nil
+}
+
+// MarshalJSON serialises a chequebook.
+func (self *Chequebook) MarshalJSON() ([]byte, error) {
+ var file = &chequebookFile{
+ Balance: self.balance.String(),
+ Contract: self.contractAddr.Hex(),
+ Owner: self.owner.Hex(),
+ Sent: make(map[string]string),
+ }
+ for addr, sent := range self.sent {
+ file.Sent[addr.Hex()] = sent.String()
+ }
+ return json.Marshal(file)
+}
+
+// Save persists the chequebook on disk, remembering balance, contract address and
+// cumulative amount of funds sent for each beneficiary.
+func (self *Chequebook) Save() (err error) {
+ data, err := json.MarshalIndent(self, "", " ")
+ if err != nil {
+ return err
+ }
+ glog.V(logger.Detail).Infof("saving chequebook (%s) to %v", self.contractAddr.Hex(), self.path)
+
+ return ioutil.WriteFile(self.path, data, os.ModePerm)
+}
+
+// Stop quits the autodeposit go routine to terminate
+func (self *Chequebook) Stop() {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ if self.quit != nil {
+ close(self.quit)
+ self.quit = nil
+ }
+}
+
+// Issue creates a cheque signed by the chequebook owner's private key. The
+// signer commits to a contract (one that they own), a beneficiary and amount.
+func (self *Chequebook) Issue(beneficiary common.Address, amount *big.Int) (ch *Cheque, err error) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ if amount.Cmp(common.Big0) <= 0 {
+ return nil, fmt.Errorf("amount must be greater than zero (%v)", amount)
+ }
+ if self.balance.Cmp(amount) < 0 {
+ err = fmt.Errorf("insufficent funds to issue cheque for amount: %v. balance: %v", amount, self.balance)
+ } else {
+ var sig []byte
+ sent, found := self.sent[beneficiary]
+ if !found {
+ sent = new(big.Int)
+ self.sent[beneficiary] = sent
+ }
+ sum := new(big.Int).Set(sent)
+ sum.Add(sum, amount)
+
+ sig, err = crypto.Sign(sigHash(self.contractAddr, beneficiary, sum), self.prvKey)
+ if err == nil {
+ ch = &Cheque{
+ Contract: self.contractAddr,
+ Beneficiary: beneficiary,
+ Amount: sum,
+ Sig: sig,
+ }
+ sent.Set(sum)
+ self.balance.Sub(self.balance, amount) // subtract amount from balance
+ }
+ }
+
+ // auto deposit if threshold is set and balance is less then threshold
+ // note this is called even if issueing cheque fails
+ // so we reattempt depositing
+ if self.threshold != nil {
+ if self.balance.Cmp(self.threshold) < 0 {
+ send := new(big.Int).Sub(self.buffer, self.balance)
+ self.deposit(send)
+ }
+ }
+
+ return
+}
+
+// Cash is a convenience method to cash any cheque.
+func (self *Chequebook) Cash(ch *Cheque) (txhash string, err error) {
+ return ch.Cash(self.session)
+}
+
+// data to sign: contract address, beneficiary, cumulative amount of funds ever sent
+func sigHash(contract, beneficiary common.Address, sum *big.Int) []byte {
+ bigamount := sum.Bytes()
+ if len(bigamount) > 32 {
+ return nil
+ }
+ var amount32 [32]byte
+ copy(amount32[32-len(bigamount):32], bigamount)
+ input := append(contract.Bytes(), beneficiary.Bytes()...)
+ input = append(input, amount32[:]...)
+ return crypto.Keccak256(input)
+}
+
+// Balance returns the current balance of the chequebook.
+func (self *Chequebook) Balance() *big.Int {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return new(big.Int).Set(self.balance)
+}
+
+// Owner returns the owner account of the chequebook.
+func (self *Chequebook) Owner() common.Address {
+ return self.owner
+}
+
+// Address returns the on-chain contract address of the chequebook.
+func (self *Chequebook) Address() common.Address {
+ return self.contractAddr
+}
+
+// Deposit deposits money to the chequebook account.
+func (self *Chequebook) Deposit(amount *big.Int) (string, error) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return self.deposit(amount)
+}
+
+// deposit deposits amount to the chequebook account.
+// The caller must hold self.lock.
+func (self *Chequebook) deposit(amount *big.Int) (string, error) {
+ // since the amount is variable here, we do not use sessions
+ depositTransactor := bind.NewKeyedTransactor(self.prvKey)
+ depositTransactor.Value = amount
+ chbookRaw := &contract.ChequebookRaw{Contract: self.contract}
+ tx, err := chbookRaw.Transfer(depositTransactor)
+ if err != nil {
+ glog.V(logger.Warn).Infof("error depositing %d wei to chequebook (%s, balance: %v, target: %v): %v", amount, self.contractAddr.Hex(), self.balance, self.buffer, err)
+ return "", err
+ }
+ // assume that transaction is actually successful, we add the amount to balance right away
+ self.balance.Add(self.balance, amount)
+ glog.V(logger.Detail).Infof("deposited %d wei to chequebook (%s, balance: %v, target: %v)", amount, self.contractAddr.Hex(), self.balance, self.buffer)
+ return tx.Hash().Hex(), nil
+}
+
+// AutoDeposit (re)sets interval time and amount which triggers sending funds to the
+// chequebook. Contract backend needs to be set if threshold is not less than buffer, then
+// deposit will be triggered on every new cheque issued.
+func (self *Chequebook) AutoDeposit(interval time.Duration, threshold, buffer *big.Int) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ self.threshold = threshold
+ self.buffer = buffer
+ self.autoDeposit(interval)
+}
+
+// autoDeposit starts a goroutine that periodically sends funds to the chequebook
+// contract caller holds the lock the go routine terminates if Chequebook.quit is closed.
+func (self *Chequebook) autoDeposit(interval time.Duration) {
+ if self.quit != nil {
+ close(self.quit)
+ self.quit = nil
+ }
+ // if threshold >= balance autodeposit after every cheque issued
+ if interval == time.Duration(0) || self.threshold != nil && self.buffer != nil && self.threshold.Cmp(self.buffer) >= 0 {
+ return
+ }
+
+ ticker := time.NewTicker(interval)
+ self.quit = make(chan bool)
+ quit := self.quit
+ go func() {
+ FOR:
+ for {
+ select {
+ case <-quit:
+ break FOR
+ case <-ticker.C:
+ self.lock.Lock()
+ if self.balance.Cmp(self.buffer) < 0 {
+ amount := new(big.Int).Sub(self.buffer, self.balance)
+ txhash, err := self.deposit(amount)
+ if err == nil {
+ self.txhash = txhash
+ }
+ }
+ self.lock.Unlock()
+ }
+ }
+ }()
+ return
+}
+
+// Outbox can issue cheques from a single contract to a single beneficiary.
+type Outbox struct {
+ chequeBook *Chequebook
+ beneficiary common.Address
+}
+
+// NewOutbox creates an outbox.
+func NewOutbox(chbook *Chequebook, beneficiary common.Address) *Outbox {
+ return &Outbox{chbook, beneficiary}
+}
+
+// Issue creates cheque.
+func (self *Outbox) Issue(amount *big.Int) (swap.Promise, error) {
+ return self.chequeBook.Issue(self.beneficiary, amount)
+}
+
+// AutoDeposit enables auto-deposits on the underlying chequebook.
+func (self *Outbox) AutoDeposit(interval time.Duration, threshold, buffer *big.Int) {
+ self.chequeBook.AutoDeposit(interval, threshold, buffer)
+}
+
+// Stop helps satisfy the swap.OutPayment interface.
+func (self *Outbox) Stop() {}
+
+// String implements fmt.Stringer.
+func (self *Outbox) String() string {
+ return fmt.Sprintf("chequebook: %v, beneficiary: %s, balance: %v", self.chequeBook.Address().Hex(), self.beneficiary.Hex(), self.chequeBook.Balance())
+}
+
+// Inbox can deposit, verify and cash cheques from a single contract to a single
+// beneficiary. It is the incoming payment handler for peer to peer micropayments.
+type Inbox struct {
+ lock sync.Mutex
+ contract common.Address // peer's chequebook contract
+ beneficiary common.Address // local peer's receiving address
+ sender common.Address // local peer's address to send cashing tx from
+ signer *ecdsa.PublicKey // peer's public key
+ txhash string // tx hash of last cashing tx
+ abigen bind.ContractBackend // blockchain API
+ session *contract.ChequebookSession // abi contract backend with tx opts
+ quit chan bool // when closed causes autocash to stop
+ maxUncashed *big.Int // threshold that triggers autocashing
+ cashed *big.Int // cumulative amount cashed
+ cheque *Cheque // last cheque, nil if none yet received
+}
+
+// NewInbox creates an Inbox. An Inboxes is not persisted, the cumulative sum is updated
+// from blockchain when first cheque is received.
+func NewInbox(prvKey *ecdsa.PrivateKey, contractAddr, beneficiary common.Address, signer *ecdsa.PublicKey, abigen bind.ContractBackend) (self *Inbox, err error) {
+ if signer == nil {
+ return nil, fmt.Errorf("signer is null")
+ }
+ chbook, err := contract.NewChequebook(contractAddr, abigen)
+ if err != nil {
+ return nil, err
+ }
+ transactOpts := bind.NewKeyedTransactor(prvKey)
+ transactOpts.GasLimit = gasToCash
+ session := &contract.ChequebookSession{
+ Contract: chbook,
+ TransactOpts: *transactOpts,
+ }
+ sender := transactOpts.From
+
+ self = &Inbox{
+ contract: contractAddr,
+ beneficiary: beneficiary,
+ sender: sender,
+ signer: signer,
+ session: session,
+ cashed: new(big.Int).Set(common.Big0),
+ }
+ glog.V(logger.Detail).Infof("initialised inbox (%s -> %s) expected signer: %x", self.contract.Hex(), self.beneficiary.Hex(), crypto.FromECDSAPub(signer))
+ return
+}
+
+func (self *Inbox) String() string {
+ return fmt.Sprintf("chequebook: %v, beneficiary: %s, balance: %v", self.contract.Hex(), self.beneficiary.Hex(), self.cheque.Amount)
+}
+
+// Stop quits the autocash goroutine.
+func (self *Inbox) Stop() {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ if self.quit != nil {
+ close(self.quit)
+ self.quit = nil
+ }
+}
+
+// Cash attempts to cash the current cheque.
+func (self *Inbox) Cash() (txhash string, err error) {
+ if self.cheque != nil {
+ txhash, err = self.cheque.Cash(self.session)
+ glog.V(logger.Detail).Infof("cashing cheque (total: %v) on chequebook (%s) sending to %v", self.cheque.Amount, self.contract.Hex(), self.beneficiary.Hex())
+ self.cashed = self.cheque.Amount
+ }
+ return
+}
+
+// AutoCash (re)sets maximum time and amount which triggers cashing of the last uncashed
+// cheque if maxUncashed is set to 0, then autocash on receipt.
+func (self *Inbox) AutoCash(cashInterval time.Duration, maxUncashed *big.Int) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ self.maxUncashed = maxUncashed
+ self.autoCash(cashInterval)
+}
+
+// autoCash starts a loop that periodically clears the last check
+// if the peer is trusted. Clearing period could be 24h or a week.
+//
+// The caller must hold self.lock.
+func (self *Inbox) autoCash(cashInterval time.Duration) {
+ if self.quit != nil {
+ close(self.quit)
+ self.quit = nil
+ }
+ // if maxUncashed is set to 0, then autocash on receipt
+ if cashInterval == time.Duration(0) || self.maxUncashed != nil && self.maxUncashed.Cmp(common.Big0) == 0 {
+ return
+ }
+
+ ticker := time.NewTicker(cashInterval)
+ self.quit = make(chan bool)
+ quit := self.quit
+ go func() {
+ FOR:
+ for {
+ select {
+ case <-quit:
+ break FOR
+ case <-ticker.C:
+ self.lock.Lock()
+ if self.cheque != nil && self.cheque.Amount.Cmp(self.cashed) != 0 {
+ txhash, err := self.Cash()
+ if err == nil {
+ self.txhash = txhash
+ }
+ }
+ self.lock.Unlock()
+ }
+ }
+ }()
+ return
+}
+
+// Receive is called to deposit the latest cheque to the incoming Inbox.
+// The given promise must be a *Cheque.
+func (self *Inbox) Receive(promise swap.Promise) (*big.Int, error) {
+ ch := promise.(*Cheque)
+
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ var sum *big.Int
+ if self.cheque == nil {
+ // the sum is checked against the blockchain once a check is received
+ tally, err := self.session.Sent(self.beneficiary)
+ if err != nil {
+ return nil, fmt.Errorf("inbox: error calling backend to set amount: %v", err)
+ }
+ sum = tally
+ } else {
+ sum = self.cheque.Amount
+ }
+
+ amount, err := ch.Verify(self.signer, self.contract, self.beneficiary, sum)
+ var uncashed *big.Int
+ if err == nil {
+ self.cheque = ch
+
+ if self.maxUncashed != nil {
+ uncashed = new(big.Int).Sub(ch.Amount, self.cashed)
+ if self.maxUncashed.Cmp(uncashed) < 0 {
+ self.Cash()
+ }
+ }
+ glog.V(logger.Detail).Infof("received cheque of %v wei in inbox (%s, uncashed: %v)", amount, self.contract.Hex(), uncashed)
+ }
+
+ return amount, err
+}
+
+// Verify verifies cheque for signer, contract, beneficiary, amount, valid signature.
+func (self *Cheque) Verify(signerKey *ecdsa.PublicKey, contract, beneficiary common.Address, sum *big.Int) (*big.Int, error) {
+ glog.V(logger.Detail).Infof("verify cheque: %v - sum: %v", self, sum)
+ if sum == nil {
+ return nil, fmt.Errorf("invalid amount")
+ }
+
+ if self.Beneficiary != beneficiary {
+ return nil, fmt.Errorf("beneficiary mismatch: %v != %v", self.Beneficiary.Hex(), beneficiary.Hex())
+ }
+ if self.Contract != contract {
+ return nil, fmt.Errorf("contract mismatch: %v != %v", self.Contract.Hex(), contract.Hex())
+ }
+
+ amount := new(big.Int).Set(self.Amount)
+ if sum != nil {
+ amount.Sub(amount, sum)
+ if amount.Cmp(common.Big0) <= 0 {
+ return nil, fmt.Errorf("incorrect amount: %v <= 0", amount)
+ }
+ }
+
+ pubKey, err := crypto.SigToPub(sigHash(self.Contract, beneficiary, self.Amount), self.Sig)
+ if err != nil {
+ return nil, fmt.Errorf("invalid signature: %v", err)
+ }
+ if !bytes.Equal(crypto.FromECDSAPub(pubKey), crypto.FromECDSAPub(signerKey)) {
+ return nil, fmt.Errorf("signer mismatch: %x != %x", crypto.FromECDSAPub(pubKey), crypto.FromECDSAPub(signerKey))
+ }
+ return amount, nil
+}
+
+// v/r/s representation of signature
+func sig2vrs(sig []byte) (v byte, r, s [32]byte) {
+ v = sig[64] + 27
+ copy(r[:], sig[:32])
+ copy(s[:], sig[32:64])
+ return
+}
+
+// Cash cashes the cheque by sending an Ethereum transaction.
+func (self *Cheque) Cash(session *contract.ChequebookSession) (string, error) {
+ v, r, s := sig2vrs(self.Sig)
+ tx, err := session.Cash(self.Beneficiary, self.Amount, v, r, s)
+ if err != nil {
+ return "", err
+ }
+ return tx.Hash().Hex(), nil
+}
+
+// ValidateCode checks that the on-chain code at address matches the expected chequebook
+// contract code. This is used to detect suicided chequebooks.
+func ValidateCode(ctx context.Context, b Backend, address common.Address) (ok bool, err error) {
+ code, err := b.CodeAt(ctx, address, nil)
+ if err != nil {
+ return false, err
+ }
+ return bytes.Equal(code, common.FromHex(contract.ContractDeployedCode)), nil
+}
diff --git a/contracts/chequebook/cheque_test.go b/contracts/chequebook/cheque_test.go
new file mode 100644
index 000000000..e35a21cc5
--- /dev/null
+++ b/contracts/chequebook/cheque_test.go
@@ -0,0 +1,528 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package chequebook
+
+import (
+ "crypto/ecdsa"
+ "math/big"
+ "os"
+ "path/filepath"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/contracts/chequebook/contract"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+var (
+ key0, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
+ key1, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a")
+ key2, _ = crypto.HexToECDSA("49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee")
+ addr0 = crypto.PubkeyToAddress(key0.PublicKey)
+ addr1 = crypto.PubkeyToAddress(key1.PublicKey)
+ addr2 = crypto.PubkeyToAddress(key2.PublicKey)
+)
+
+func newTestBackend() *backends.SimulatedBackend {
+ return backends.NewSimulatedBackend(
+ core.GenesisAccount{Address: addr0, Balance: big.NewInt(1000000000)},
+ core.GenesisAccount{Address: addr1, Balance: big.NewInt(1000000000)},
+ core.GenesisAccount{Address: addr2, Balance: big.NewInt(1000000000)},
+ )
+}
+
+func deploy(prvKey *ecdsa.PrivateKey, amount *big.Int, backend *backends.SimulatedBackend) (common.Address, error) {
+ deployTransactor := bind.NewKeyedTransactor(prvKey)
+ deployTransactor.Value = amount
+ addr, _, _, err := contract.DeployChequebook(deployTransactor, backend)
+ if err != nil {
+ return common.Address{}, err
+ }
+ backend.Commit()
+ return addr, nil
+}
+
+func TestIssueAndReceive(t *testing.T) {
+ path := filepath.Join(os.TempDir(), "chequebook-test.json")
+ backend := newTestBackend()
+ addr0, err := deploy(key0, big.NewInt(0), backend)
+ if err != nil {
+ t.Fatalf("deploy contract: expected no error, got %v", err)
+ }
+ chbook, err := NewChequebook(path, addr0, key0, backend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ chbook.sent[addr1] = new(big.Int).SetUint64(42)
+ amount := common.Big1
+ ch, err := chbook.Issue(addr1, amount)
+ if err == nil {
+ t.Fatalf("expected insufficient funds error, got none")
+ }
+
+ chbook.balance = new(big.Int).Set(common.Big1)
+ if chbook.Balance().Cmp(common.Big1) != 0 {
+ t.Fatalf("expected: %v, got %v", "0", chbook.Balance())
+ }
+
+ ch, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ if chbook.Balance().Cmp(common.Big0) != 0 {
+ t.Errorf("expected: %v, got %v", "0", chbook.Balance())
+ }
+
+ chbox, err := NewInbox(key1, addr0, addr1, &key0.PublicKey, backend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ received, err := chbox.Receive(ch)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ if received.Cmp(big.NewInt(43)) != 0 {
+ t.Errorf("expected: %v, got %v", "43", received)
+ }
+
+}
+
+func TestCheckbookFile(t *testing.T) {
+ path := filepath.Join(os.TempDir(), "chequebook-test.json")
+ backend := newTestBackend()
+ chbook, err := NewChequebook(path, addr0, key0, backend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ chbook.sent[addr1] = new(big.Int).SetUint64(42)
+ chbook.balance = new(big.Int).Set(common.Big1)
+
+ chbook.Save()
+
+ chbook, err = LoadChequebook(path, key0, backend, false)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ if chbook.Balance().Cmp(common.Big1) != 0 {
+ t.Errorf("expected: %v, got %v", "0", chbook.Balance())
+ }
+
+ ch, err := chbook.Issue(addr1, common.Big1)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ if ch.Amount.Cmp(new(big.Int).SetUint64(43)) != 0 {
+ t.Errorf("expected: %v, got %v", "0", ch.Amount)
+ }
+
+ err = chbook.Save()
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+}
+
+func TestVerifyErrors(t *testing.T) {
+ path0 := filepath.Join(os.TempDir(), "chequebook-test-0.json")
+ backend := newTestBackend()
+ contr0, err := deploy(key0, common.Big2, backend)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ }
+ chbook0, err := NewChequebook(path0, contr0, key0, backend)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ }
+
+ path1 := filepath.Join(os.TempDir(), "chequebook-test-1.json")
+ contr1, err := deploy(key1, common.Big2, backend)
+ chbook1, err := NewChequebook(path1, contr1, key1, backend)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ }
+
+ chbook0.sent[addr1] = new(big.Int).SetUint64(42)
+ chbook0.balance = new(big.Int).Set(common.Big2)
+ chbook1.balance = new(big.Int).Set(common.Big1)
+ amount := common.Big1
+ ch0, err := chbook0.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ time.Sleep(5)
+ chbox, err := NewInbox(key1, contr0, addr1, &key0.PublicKey, backend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ received, err := chbox.Receive(ch0)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ if received.Cmp(big.NewInt(43)) != 0 {
+ t.Errorf("expected: %v, got %v", "43", received)
+ }
+
+ ch1, err := chbook0.Issue(addr2, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ received, err = chbox.Receive(ch1)
+ t.Logf("correct error: %v", err)
+ if err == nil {
+ t.Fatalf("expected receiver error, got none")
+ }
+
+ ch2, err := chbook1.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ received, err = chbox.Receive(ch2)
+ t.Logf("correct error: %v", err)
+ if err == nil {
+ t.Fatalf("expected sender error, got none")
+ }
+
+ _, err = chbook1.Issue(addr1, new(big.Int).SetInt64(-1))
+ t.Logf("correct error: %v", err)
+ if err == nil {
+ t.Fatalf("expected incorrect amount error, got none")
+ }
+
+ received, err = chbox.Receive(ch0)
+ t.Logf("correct error: %v", err)
+ if err == nil {
+ t.Fatalf("expected incorrect amount error, got none")
+ }
+
+}
+
+func TestDeposit(t *testing.T) {
+ path0 := filepath.Join(os.TempDir(), "chequebook-test-0.json")
+ backend := newTestBackend()
+ contr0, err := deploy(key0, new(big.Int), backend)
+ chbook, err := NewChequebook(path0, contr0, key0, backend)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ }
+
+ balance := new(big.Int).SetUint64(42)
+ chbook.Deposit(balance)
+ backend.Commit()
+ if chbook.balance.Cmp(balance) != 0 {
+ t.Fatalf("expected balance %v, got %v", balance, chbook.balance)
+ }
+
+ amount := common.Big1
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ exp := new(big.Int).SetUint64(41)
+ if chbook.balance.Cmp(exp) != 0 {
+ t.Fatalf("expected balance %v, got %v", exp, chbook.balance)
+ }
+
+ // autodeposit on each issue
+ chbook.AutoDeposit(0, balance, balance)
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ if chbook.balance.Cmp(balance) != 0 {
+ t.Fatalf("expected balance %v, got %v", balance, chbook.balance)
+ }
+
+ // autodeposit off
+ chbook.AutoDeposit(0, common.Big0, balance)
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ exp = new(big.Int).SetUint64(40)
+ if chbook.balance.Cmp(exp) != 0 {
+ t.Fatalf("expected balance %v, got %v", exp, chbook.balance)
+ }
+
+ // autodeposit every 10ms if new cheque issued
+ interval := 30 * time.Millisecond
+ chbook.AutoDeposit(interval, common.Big1, balance)
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ exp = new(big.Int).SetUint64(38)
+ if chbook.balance.Cmp(exp) != 0 {
+ t.Fatalf("expected balance %v, got %v", exp, chbook.balance)
+ }
+
+ time.Sleep(3 * interval)
+ backend.Commit()
+ if chbook.balance.Cmp(balance) != 0 {
+ t.Fatalf("expected balance %v, got %v", balance, chbook.balance)
+ }
+
+ exp = new(big.Int).SetUint64(40)
+ chbook.AutoDeposit(4*interval, exp, balance)
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ time.Sleep(3 * interval)
+ backend.Commit()
+ if chbook.balance.Cmp(exp) != 0 {
+ t.Fatalf("expected balance %v, got %v", exp, chbook.balance)
+ }
+
+ _, err = chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ time.Sleep(1 * interval)
+ backend.Commit()
+
+ if chbook.balance.Cmp(balance) != 0 {
+ t.Fatalf("expected balance %v, got %v", balance, chbook.balance)
+ }
+
+ chbook.AutoDeposit(1*interval, common.Big0, balance)
+ chbook.Stop()
+
+ _, err = chbook.Issue(addr1, common.Big1)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ _, err = chbook.Issue(addr1, common.Big2)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ time.Sleep(1 * interval)
+ backend.Commit()
+
+ exp = new(big.Int).SetUint64(39)
+ if chbook.balance.Cmp(exp) != 0 {
+ t.Fatalf("expected balance %v, got %v", exp, chbook.balance)
+ }
+
+}
+
+func TestCash(t *testing.T) {
+ path := filepath.Join(os.TempDir(), "chequebook-test.json")
+ backend := newTestBackend()
+ contr0, err := deploy(key0, common.Big2, backend)
+ chbook, err := NewChequebook(path, contr0, key0, backend)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ }
+ chbook.sent[addr1] = new(big.Int).SetUint64(42)
+ amount := common.Big1
+ chbook.balance = new(big.Int).Set(common.Big1)
+ ch, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ chbox, err := NewInbox(key1, contr0, addr1, &key0.PublicKey, backend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ // cashing latest cheque
+ _, err = chbox.Receive(ch)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ _, err = ch.Cash(chbook.session)
+ backend.Commit()
+
+ chbook.balance = new(big.Int).Set(common.Big3)
+ ch0, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ ch1, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ interval := 10 * time.Millisecond
+ // setting autocash with interval of 10ms
+ chbox.AutoCash(interval, nil)
+ _, err = chbox.Receive(ch0)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ _, err = chbox.Receive(ch1)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ // expBalance := big.NewInt(2)
+ // gotBalance := backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+ // after 3x interval time and 2 cheques received, exactly one cashing tx is sent
+ time.Sleep(4 * interval)
+ backend.Commit()
+
+ // expBalance = big.NewInt(4)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ // after stopping autocash no more tx are sent
+ ch2, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ chbox.Stop()
+ _, err = chbox.Receive(ch2)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ time.Sleep(2 * interval)
+ backend.Commit()
+ // expBalance = big.NewInt(4)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ // autocash below 1
+ chbook.balance = big.NewInt(2)
+ chbox.AutoCash(0, common.Big1)
+
+ ch3, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ // expBalance = big.NewInt(4)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ ch4, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ _, err = chbox.Receive(ch3)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ _, err = chbox.Receive(ch4)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+
+ // 2 checks of amount 1 received, exactly 1 tx is sent
+ // expBalance = big.NewInt(6)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ // autochash on receipt when maxUncashed is 0
+ chbook.balance = new(big.Int).Set(common.Big2)
+ chbox.AutoCash(0, common.Big0)
+
+ ch5, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ // expBalance = big.NewInt(5)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ ch6, err := chbook.Issue(addr1, amount)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+
+ _, err = chbox.Receive(ch5)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ // expBalance = big.NewInt(4)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+ _, err = chbox.Receive(ch6)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ backend.Commit()
+ // expBalance = big.NewInt(6)
+ // gotBalance = backend.BalanceAt(addr1)
+ // if gotBalance.Cmp(expBalance) != 0 {
+ // t.Fatalf("expected beneficiary balance %v, got %v", expBalance, gotBalance)
+ // }
+
+}
diff --git a/contracts/chequebook/contract/chequebook.go b/contracts/chequebook/contract/chequebook.go
new file mode 100644
index 000000000..47090152c
--- /dev/null
+++ b/contracts/chequebook/contract/chequebook.go
@@ -0,0 +1,541 @@
+// This file is an automatically generated Go binding. Do not modify as any
+// change will likely be lost upon the next re-generation!
+
+package contract
+
+import (
+ "math/big"
+ "strings"
+
+ "github.com/ethereum/go-ethereum/accounts/abi"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+// ChequebookABI is the input ABI used to generate the binding from.
+const ChequebookABI = `[{"constant":false,"inputs":[],"name":"kill","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"sent","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"},{"name":"sig_v","type":"uint8"},{"name":"sig_r","type":"bytes32"},{"name":"sig_s","type":"bytes32"}],"name":"cash","outputs":[],"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"deadbeat","type":"address"}],"name":"Overdraft","type":"event"}]`
+
+// ChequebookBin is the compiled bytecode used for deploying new contracts.
+const ChequebookBin = `0x606060405260008054600160a060020a031916331790556101ff806100246000396000f3606060405260e060020a600035046341c0e1b581146100315780637bf786f814610059578063fbf788d614610071575b005b61002f60005433600160a060020a03908116911614156100bd57600054600160a060020a0316ff5b6100ab60043560016020526000908152604090205481565b61002f600435602435604435606435608435600160a060020a03851660009081526001602052604081205485116100bf575b505050505050565b60408051918252519081900360200190f35b565b50604080516c0100000000000000000000000030600160a060020a0390811682028352881602601482015260288101869052815190819003604801812080825260ff861660208381019190915282840186905260608301859052925190926001926080818101939182900301816000866161da5a03f11561000257505060405151600054600160a060020a0390811691161461015a576100a3565b600160a060020a038681166000908152600160205260409020543090911631908603106101b357604060008181208790559051600160a060020a0388169190819081818181818881f1935050505015156100a357610002565b60005460408051600160a060020a03929092168252517f2250e2993c15843b32621c89447cc589ee7a9f049c026986e545d3c2c0c6f9789181900360200190a185600160a060020a0316ff`
+
+// DeployChequebook deploys a new Ethereum contract, binding an instance of Chequebook to it.
+func DeployChequebook(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Chequebook, error) {
+ parsed, err := abi.JSON(strings.NewReader(ChequebookABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ChequebookBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &Chequebook{ChequebookCaller: ChequebookCaller{contract: contract}, ChequebookTransactor: ChequebookTransactor{contract: contract}}, nil
+}
+
+// Chequebook is an auto generated Go binding around an Ethereum contract.
+type Chequebook struct {
+ ChequebookCaller // Read-only binding to the contract
+ ChequebookTransactor // Write-only binding to the contract
+}
+
+// ChequebookCaller is an auto generated read-only Go binding around an Ethereum contract.
+type ChequebookCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ChequebookTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type ChequebookTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ChequebookSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type ChequebookSession struct {
+ Contract *Chequebook // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ChequebookCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type ChequebookCallerSession struct {
+ Contract *ChequebookCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// ChequebookTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type ChequebookTransactorSession struct {
+ Contract *ChequebookTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ChequebookRaw is an auto generated low-level Go binding around an Ethereum contract.
+type ChequebookRaw struct {
+ Contract *Chequebook // Generic contract binding to access the raw methods on
+}
+
+// ChequebookCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type ChequebookCallerRaw struct {
+ Contract *ChequebookCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// ChequebookTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type ChequebookTransactorRaw struct {
+ Contract *ChequebookTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewChequebook creates a new instance of Chequebook, bound to a specific deployed contract.
+func NewChequebook(address common.Address, backend bind.ContractBackend) (*Chequebook, error) {
+ contract, err := bindChequebook(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &Chequebook{ChequebookCaller: ChequebookCaller{contract: contract}, ChequebookTransactor: ChequebookTransactor{contract: contract}}, nil
+}
+
+// NewChequebookCaller creates a new read-only instance of Chequebook, bound to a specific deployed contract.
+func NewChequebookCaller(address common.Address, caller bind.ContractCaller) (*ChequebookCaller, error) {
+ contract, err := bindChequebook(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &ChequebookCaller{contract: contract}, nil
+}
+
+// NewChequebookTransactor creates a new write-only instance of Chequebook, bound to a specific deployed contract.
+func NewChequebookTransactor(address common.Address, transactor bind.ContractTransactor) (*ChequebookTransactor, error) {
+ contract, err := bindChequebook(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &ChequebookTransactor{contract: contract}, nil
+}
+
+// bindChequebook binds a generic wrapper to an already deployed contract.
+func bindChequebook(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(ChequebookABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Chequebook *ChequebookRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Chequebook.Contract.ChequebookCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Chequebook *ChequebookRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Chequebook.Contract.ChequebookTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Chequebook *ChequebookRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Chequebook.Contract.ChequebookTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Chequebook *ChequebookCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Chequebook.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Chequebook *ChequebookTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Chequebook.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Chequebook *ChequebookTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Chequebook.Contract.contract.Transact(opts, method, params...)
+}
+
+// Sent is a free data retrieval call binding the contract method 0x7bf786f8.
+//
+// Solidity: function sent( address) constant returns(uint256)
+func (_Chequebook *ChequebookCaller) Sent(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+ var (
+ ret0 = new(*big.Int)
+ )
+ out := ret0
+ err := _Chequebook.contract.Call(opts, out, "sent", arg0)
+ return *ret0, err
+}
+
+// Sent is a free data retrieval call binding the contract method 0x7bf786f8.
+//
+// Solidity: function sent( address) constant returns(uint256)
+func (_Chequebook *ChequebookSession) Sent(arg0 common.Address) (*big.Int, error) {
+ return _Chequebook.Contract.Sent(&_Chequebook.CallOpts, arg0)
+}
+
+// Sent is a free data retrieval call binding the contract method 0x7bf786f8.
+//
+// Solidity: function sent( address) constant returns(uint256)
+func (_Chequebook *ChequebookCallerSession) Sent(arg0 common.Address) (*big.Int, error) {
+ return _Chequebook.Contract.Sent(&_Chequebook.CallOpts, arg0)
+}
+
+// Cash is a paid mutator transaction binding the contract method 0xfbf788d6.
+//
+// Solidity: function cash(beneficiary address, amount uint256, sig_v uint8, sig_r bytes32, sig_s bytes32) returns()
+func (_Chequebook *ChequebookTransactor) Cash(opts *bind.TransactOpts, beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
+ return _Chequebook.contract.Transact(opts, "cash", beneficiary, amount, sig_v, sig_r, sig_s)
+}
+
+// Cash is a paid mutator transaction binding the contract method 0xfbf788d6.
+//
+// Solidity: function cash(beneficiary address, amount uint256, sig_v uint8, sig_r bytes32, sig_s bytes32) returns()
+func (_Chequebook *ChequebookSession) Cash(beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
+ return _Chequebook.Contract.Cash(&_Chequebook.TransactOpts, beneficiary, amount, sig_v, sig_r, sig_s)
+}
+
+// Cash is a paid mutator transaction binding the contract method 0xfbf788d6.
+//
+// Solidity: function cash(beneficiary address, amount uint256, sig_v uint8, sig_r bytes32, sig_s bytes32) returns()
+func (_Chequebook *ChequebookTransactorSession) Cash(beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
+ return _Chequebook.Contract.Cash(&_Chequebook.TransactOpts, beneficiary, amount, sig_v, sig_r, sig_s)
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Chequebook *ChequebookTransactor) Kill(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Chequebook.contract.Transact(opts, "kill")
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Chequebook *ChequebookSession) Kill() (*types.Transaction, error) {
+ return _Chequebook.Contract.Kill(&_Chequebook.TransactOpts)
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Chequebook *ChequebookTransactorSession) Kill() (*types.Transaction, error) {
+ return _Chequebook.Contract.Kill(&_Chequebook.TransactOpts)
+}
+
+// MortalABI is the input ABI used to generate the binding from.
+const MortalABI = `[{"constant":false,"inputs":[],"name":"kill","outputs":[],"type":"function"}]`
+
+// MortalBin is the compiled bytecode used for deploying new contracts.
+const MortalBin = `0x606060405260008054600160a060020a03191633179055605c8060226000396000f3606060405260e060020a600035046341c0e1b58114601a575b005b60186000543373ffffffffffffffffffffffffffffffffffffffff90811691161415605a5760005473ffffffffffffffffffffffffffffffffffffffff16ff5b56`
+
+// DeployMortal deploys a new Ethereum contract, binding an instance of Mortal to it.
+func DeployMortal(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Mortal, error) {
+ parsed, err := abi.JSON(strings.NewReader(MortalABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MortalBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &Mortal{MortalCaller: MortalCaller{contract: contract}, MortalTransactor: MortalTransactor{contract: contract}}, nil
+}
+
+// Mortal is an auto generated Go binding around an Ethereum contract.
+type Mortal struct {
+ MortalCaller // Read-only binding to the contract
+ MortalTransactor // Write-only binding to the contract
+}
+
+// MortalCaller is an auto generated read-only Go binding around an Ethereum contract.
+type MortalCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// MortalTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type MortalTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// MortalSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type MortalSession struct {
+ Contract *Mortal // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// MortalCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type MortalCallerSession struct {
+ Contract *MortalCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// MortalTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type MortalTransactorSession struct {
+ Contract *MortalTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// MortalRaw is an auto generated low-level Go binding around an Ethereum contract.
+type MortalRaw struct {
+ Contract *Mortal // Generic contract binding to access the raw methods on
+}
+
+// MortalCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type MortalCallerRaw struct {
+ Contract *MortalCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// MortalTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type MortalTransactorRaw struct {
+ Contract *MortalTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewMortal creates a new instance of Mortal, bound to a specific deployed contract.
+func NewMortal(address common.Address, backend bind.ContractBackend) (*Mortal, error) {
+ contract, err := bindMortal(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &Mortal{MortalCaller: MortalCaller{contract: contract}, MortalTransactor: MortalTransactor{contract: contract}}, nil
+}
+
+// NewMortalCaller creates a new read-only instance of Mortal, bound to a specific deployed contract.
+func NewMortalCaller(address common.Address, caller bind.ContractCaller) (*MortalCaller, error) {
+ contract, err := bindMortal(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &MortalCaller{contract: contract}, nil
+}
+
+// NewMortalTransactor creates a new write-only instance of Mortal, bound to a specific deployed contract.
+func NewMortalTransactor(address common.Address, transactor bind.ContractTransactor) (*MortalTransactor, error) {
+ contract, err := bindMortal(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &MortalTransactor{contract: contract}, nil
+}
+
+// bindMortal binds a generic wrapper to an already deployed contract.
+func bindMortal(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(MortalABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Mortal *MortalRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Mortal.Contract.MortalCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Mortal *MortalRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Mortal.Contract.MortalTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Mortal *MortalRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Mortal.Contract.MortalTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Mortal *MortalCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Mortal.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Mortal *MortalTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Mortal.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Mortal *MortalTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Mortal.Contract.contract.Transact(opts, method, params...)
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Mortal *MortalTransactor) Kill(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Mortal.contract.Transact(opts, "kill")
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Mortal *MortalSession) Kill() (*types.Transaction, error) {
+ return _Mortal.Contract.Kill(&_Mortal.TransactOpts)
+}
+
+// Kill is a paid mutator transaction binding the contract method 0x41c0e1b5.
+//
+// Solidity: function kill() returns()
+func (_Mortal *MortalTransactorSession) Kill() (*types.Transaction, error) {
+ return _Mortal.Contract.Kill(&_Mortal.TransactOpts)
+}
+
+// OwnedABI is the input ABI used to generate the binding from.
+const OwnedABI = `[{"inputs":[],"type":"constructor"}]`
+
+// OwnedBin is the compiled bytecode used for deploying new contracts.
+const OwnedBin = `0x606060405260008054600160a060020a0319163317905560068060226000396000f3606060405200`
+
+// DeployOwned deploys a new Ethereum contract, binding an instance of Owned to it.
+func DeployOwned(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Owned, error) {
+ parsed, err := abi.JSON(strings.NewReader(OwnedABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(OwnedBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &Owned{OwnedCaller: OwnedCaller{contract: contract}, OwnedTransactor: OwnedTransactor{contract: contract}}, nil
+}
+
+// Owned is an auto generated Go binding around an Ethereum contract.
+type Owned struct {
+ OwnedCaller // Read-only binding to the contract
+ OwnedTransactor // Write-only binding to the contract
+}
+
+// OwnedCaller is an auto generated read-only Go binding around an Ethereum contract.
+type OwnedCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// OwnedTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type OwnedTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// OwnedSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type OwnedSession struct {
+ Contract *Owned // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// OwnedCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type OwnedCallerSession struct {
+ Contract *OwnedCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// OwnedTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type OwnedTransactorSession struct {
+ Contract *OwnedTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// OwnedRaw is an auto generated low-level Go binding around an Ethereum contract.
+type OwnedRaw struct {
+ Contract *Owned // Generic contract binding to access the raw methods on
+}
+
+// OwnedCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type OwnedCallerRaw struct {
+ Contract *OwnedCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// OwnedTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type OwnedTransactorRaw struct {
+ Contract *OwnedTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewOwned creates a new instance of Owned, bound to a specific deployed contract.
+func NewOwned(address common.Address, backend bind.ContractBackend) (*Owned, error) {
+ contract, err := bindOwned(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &Owned{OwnedCaller: OwnedCaller{contract: contract}, OwnedTransactor: OwnedTransactor{contract: contract}}, nil
+}
+
+// NewOwnedCaller creates a new read-only instance of Owned, bound to a specific deployed contract.
+func NewOwnedCaller(address common.Address, caller bind.ContractCaller) (*OwnedCaller, error) {
+ contract, err := bindOwned(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &OwnedCaller{contract: contract}, nil
+}
+
+// NewOwnedTransactor creates a new write-only instance of Owned, bound to a specific deployed contract.
+func NewOwnedTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnedTransactor, error) {
+ contract, err := bindOwned(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &OwnedTransactor{contract: contract}, nil
+}
+
+// bindOwned binds a generic wrapper to an already deployed contract.
+func bindOwned(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(OwnedABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Owned *OwnedRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Owned.Contract.OwnedCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Owned *OwnedRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Owned.Contract.OwnedTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Owned *OwnedRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Owned.Contract.OwnedTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Owned *OwnedCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Owned.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Owned *OwnedTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Owned.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Owned *OwnedTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Owned.Contract.contract.Transact(opts, method, params...)
+}
diff --git a/contracts/chequebook/contract/chequebook.sol b/contracts/chequebook/contract/chequebook.sol
new file mode 100644
index 000000000..eefe6c063
--- /dev/null
+++ b/contracts/chequebook/contract/chequebook.sol
@@ -0,0 +1,45 @@
+import "mortal";
+
+/// @title Chequebook for Ethereum micropayments
+/// @author Daniel A. Nagy <daniel@ethdev.com>
+contract chequebook is mortal {
+ // Cumulative paid amount in wei to each beneficiary
+ mapping (address => uint256) public sent;
+
+ /// @notice Overdraft event
+ event Overdraft(address deadbeat);
+
+ /// @notice Cash cheque
+ ///
+ /// @param beneficiary beneficiary address
+ /// @param amount cumulative amount in wei
+ /// @param sig_v signature parameter v
+ /// @param sig_r signature parameter r
+ /// @param sig_s signature parameter s
+ /// The digital signature is calculated on the concatenated triplet of contract address, beneficiary address and cumulative amount
+ function cash(address beneficiary, uint256 amount,
+ uint8 sig_v, bytes32 sig_r, bytes32 sig_s) {
+ // Check if the cheque is old.
+ // Only cheques that are more recent than the last cashed one are considered.
+ if(amount <= sent[beneficiary]) return;
+ // Check the digital signature of the cheque.
+ bytes32 hash = sha3(address(this), beneficiary, amount);
+ if(owner != ecrecover(hash, sig_v, sig_r, sig_s)) return;
+ // Attempt sending the difference between the cumulative amount on the cheque
+ // and the cumulative amount on the last cashed cheque to beneficiary.
+ if (amount - sent[beneficiary] >= this.balance) {
+ // update the cumulative amount before sending
+ sent[beneficiary] = amount;
+ if (!beneficiary.send(amount - sent[beneficiary])) {
+ // Upon failure to execute send, revert everything
+ throw;
+ }
+ } else {
+ // Upon failure, punish owner for writing a bounced cheque.
+ // owner.sendToDebtorsPrison();
+ Overdraft(owner);
+ // Compensate beneficiary.
+ suicide(beneficiary);
+ }
+ }
+}
diff --git a/contracts/chequebook/contract/code.go b/contracts/chequebook/contract/code.go
new file mode 100644
index 000000000..b08e04e71
--- /dev/null
+++ b/contracts/chequebook/contract/code.go
@@ -0,0 +1,5 @@
+package contract
+
+// ContractDeployedCode is used to detect suicides. This constant needs to be
+// updated when the contract code is changed.
+const ContractDeployedCode = "0x606060405260e060020a600035046341c0e1b581146100315780637bf786f814610059578063fbf788d614610071575b005b61002f60005433600160a060020a03908116911614156100bd57600054600160a060020a0316ff5b6100ab60043560016020526000908152604090205481565b61002f600435602435604435606435608435600160a060020a03851660009081526001602052604081205485116100bf575b505050505050565b60408051918252519081900360200190f35b565b50604080516c0100000000000000000000000030600160a060020a0390811682028352881602601482015260288101869052815190819003604801812080825260ff861660208381019190915282840186905260608301859052925190926001926080818101939182900301816000866161da5a03f11561000257505060405151600054600160a060020a0390811691161461015a576100a3565b600160a060020a038681166000908152600160205260409020543090911631908603106101b357604060008181208790559051600160a060020a0388169190819081818181818881f1935050505015156100a357610002565b60005460408051600160a060020a03929092168252517f2250e2993c15843b32621c89447cc589ee7a9f049c026986e545d3c2c0c6f9789181900360200190a185600160a060020a0316ff"
diff --git a/contracts/chequebook/gencode.go b/contracts/chequebook/gencode.go
new file mode 100644
index 000000000..faa927279
--- /dev/null
+++ b/contracts/chequebook/gencode.go
@@ -0,0 +1,71 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// +build none
+
+// This program generates contract/code.go, which contains the chequebook code
+// after deployment.
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
+ "github.com/ethereum/go-ethereum/contracts/chequebook/contract"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+var (
+ testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
+ testAccount = core.GenesisAccount{
+ Address: crypto.PubkeyToAddress(testKey.PublicKey),
+ Balance: big.NewInt(500000000000),
+ }
+)
+
+func main() {
+ backend := backends.NewSimulatedBackend(testAccount)
+ auth := bind.NewKeyedTransactor(testKey)
+
+ // Deploy the contract, get the code.
+ addr, _, _, err := contract.DeployChequebook(auth, backend)
+ if err != nil {
+ panic(err)
+ }
+ backend.Commit()
+ code, err := backend.CodeAt(nil, addr, nil)
+ if err != nil {
+ panic(err)
+ }
+ if len(code) == 0 {
+ panic("empty code")
+ }
+
+ // Write the output file.
+ content := fmt.Sprintf(`package contract
+
+// ContractDeployedCode is used to detect suicides. This constant needs to be
+// updated when the contract code is changed.
+const ContractDeployedCode = "%#x"
+`, code)
+ if err := ioutil.WriteFile("contract/code.go", []byte(content), 0644); err != nil {
+ panic(err)
+ }
+}
diff --git a/contracts/ens/README.md b/contracts/ens/README.md
new file mode 100644
index 000000000..274fc14cd
--- /dev/null
+++ b/contracts/ens/README.md
@@ -0,0 +1,20 @@
+# Swarm ENS interface
+
+## Usage
+
+Full documentation for the Ethereum Name Service [can be found as EIP 137](https://github.com/ethereum/EIPs/issues/137).
+This package offers a simple binding that streamlines the registration arbitrary utf8 domain names to swarm content hashes.
+
+## Development
+
+The SOL file in contract subdirectory implements the ENS root registry, a simple
+first-in-first-served registrar for the root namespace, and a simple resolver contract;
+they're used in tests, and can be used to deploy these contracts for your own purposes.
+
+The solidity source code can be found at [github.com/arachnid/ens/](https://github.com/arachnid/ens/).
+
+The go bindings for ENS contracts are generated using `abigen` via the go generator:
+
+```shell
+go generate ./contracts/ens
+```
diff --git a/contracts/ens/contract/ens.go b/contracts/ens/contract/ens.go
new file mode 100644
index 000000000..aca16de50
--- /dev/null
+++ b/contracts/ens/contract/ens.go
@@ -0,0 +1,921 @@
+// This file is an automatically generated Go binding. Do not modify as any
+// change will likely be lost upon the next re-generation!
+
+package contract
+
+import (
+ "strings"
+
+ "github.com/ethereum/go-ethereum/accounts/abi"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+// ENSABI is the input ABI used to generate the binding from.
+const ENSABI = `[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"label","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"inputs":[{"name":"owner","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"resolver","type":"address"}],"name":"NewResolver","type":"event"}]`
+
+// ENSBin is the compiled bytecode used for deploying new contracts.
+const ENSBin = `0x606060405260405160208061032683395060806040525160008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054600160a060020a03191682179055506102c88061005e6000396000f3606060405260e060020a60003504630178b8bf811461004757806302571be31461006e57806306ab5923146100915780631896f70a146100c85780635b0fc9c3146100fc575b005b610130600435600081815260208190526040902060010154600160a060020a03165b919050565b610130600435600081815260208190526040902054600160a060020a0316610069565b6100456004356024356044356000838152602081905260408120548490600160a060020a0390811633919091161461014d57610002565b6100456004356024356000828152602081905260409020548290600160a060020a039081163391909116146101e757610002565b6100456004356024356000828152602081905260409020548290600160a060020a0390811633919091161461025957610002565b60408051600160a060020a03929092168252519081900360200190f35b60408051868152602081810187905282519182900383018220600160a060020a03871683529251929450869288927fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8292908290030190a382600060005060008460001916815260200190815260200160002060005060000160006101000a815481600160a060020a03021916908302179055505050505050565b60408051600160a060020a0384168152905184917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0919081900360200190a2506000828152602081905260409020600101805473ffffffffffffffffffffffffffffffffffffffff1916821790555050565b60408051600160a060020a0384168152905184917fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266919081900360200190a2506000828152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff191682179055505056`
+
+// DeployENS deploys a new Ethereum contract, binding an instance of ENS to it.
+func DeployENS(auth *bind.TransactOpts, backend bind.ContractBackend, owner common.Address) (common.Address, *types.Transaction, *ENS, error) {
+ parsed, err := abi.JSON(strings.NewReader(ENSABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ENSBin), backend, owner)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &ENS{ENSCaller: ENSCaller{contract: contract}, ENSTransactor: ENSTransactor{contract: contract}}, nil
+}
+
+// ENS is an auto generated Go binding around an Ethereum contract.
+type ENS struct {
+ ENSCaller // Read-only binding to the contract
+ ENSTransactor // Write-only binding to the contract
+}
+
+// ENSCaller is an auto generated read-only Go binding around an Ethereum contract.
+type ENSCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ENSTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type ENSTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ENSSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type ENSSession struct {
+ Contract *ENS // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ENSCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type ENSCallerSession struct {
+ Contract *ENSCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// ENSTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type ENSTransactorSession struct {
+ Contract *ENSTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ENSRaw is an auto generated low-level Go binding around an Ethereum contract.
+type ENSRaw struct {
+ Contract *ENS // Generic contract binding to access the raw methods on
+}
+
+// ENSCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type ENSCallerRaw struct {
+ Contract *ENSCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// ENSTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type ENSTransactorRaw struct {
+ Contract *ENSTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewENS creates a new instance of ENS, bound to a specific deployed contract.
+func NewENS(address common.Address, backend bind.ContractBackend) (*ENS, error) {
+ contract, err := bindENS(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &ENS{ENSCaller: ENSCaller{contract: contract}, ENSTransactor: ENSTransactor{contract: contract}}, nil
+}
+
+// NewENSCaller creates a new read-only instance of ENS, bound to a specific deployed contract.
+func NewENSCaller(address common.Address, caller bind.ContractCaller) (*ENSCaller, error) {
+ contract, err := bindENS(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &ENSCaller{contract: contract}, nil
+}
+
+// NewENSTransactor creates a new write-only instance of ENS, bound to a specific deployed contract.
+func NewENSTransactor(address common.Address, transactor bind.ContractTransactor) (*ENSTransactor, error) {
+ contract, err := bindENS(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &ENSTransactor{contract: contract}, nil
+}
+
+// bindENS binds a generic wrapper to an already deployed contract.
+func bindENS(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(ENSABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_ENS *ENSRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _ENS.Contract.ENSCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_ENS *ENSRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _ENS.Contract.ENSTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_ENS *ENSRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _ENS.Contract.ENSTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_ENS *ENSCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _ENS.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_ENS *ENSTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _ENS.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_ENS *ENSTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _ENS.Contract.contract.Transact(opts, method, params...)
+}
+
+// Owner is a free data retrieval call binding the contract method 0x02571be3.
+//
+// Solidity: function owner(node bytes32) constant returns(address)
+func (_ENS *ENSCaller) Owner(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
+ var (
+ ret0 = new(common.Address)
+ )
+ out := ret0
+ err := _ENS.contract.Call(opts, out, "owner", node)
+ return *ret0, err
+}
+
+// Owner is a free data retrieval call binding the contract method 0x02571be3.
+//
+// Solidity: function owner(node bytes32) constant returns(address)
+func (_ENS *ENSSession) Owner(node [32]byte) (common.Address, error) {
+ return _ENS.Contract.Owner(&_ENS.CallOpts, node)
+}
+
+// Owner is a free data retrieval call binding the contract method 0x02571be3.
+//
+// Solidity: function owner(node bytes32) constant returns(address)
+func (_ENS *ENSCallerSession) Owner(node [32]byte) (common.Address, error) {
+ return _ENS.Contract.Owner(&_ENS.CallOpts, node)
+}
+
+// Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
+//
+// Solidity: function resolver(node bytes32) constant returns(address)
+func (_ENS *ENSCaller) Resolver(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
+ var (
+ ret0 = new(common.Address)
+ )
+ out := ret0
+ err := _ENS.contract.Call(opts, out, "resolver", node)
+ return *ret0, err
+}
+
+// Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
+//
+// Solidity: function resolver(node bytes32) constant returns(address)
+func (_ENS *ENSSession) Resolver(node [32]byte) (common.Address, error) {
+ return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
+}
+
+// Resolver is a free data retrieval call binding the contract method 0x0178b8bf.
+//
+// Solidity: function resolver(node bytes32) constant returns(address)
+func (_ENS *ENSCallerSession) Resolver(node [32]byte) (common.Address, error) {
+ return _ENS.Contract.Resolver(&_ENS.CallOpts, node)
+}
+
+// SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
+//
+// Solidity: function setOwner(node bytes32, owner address) returns()
+func (_ENS *ENSTransactor) SetOwner(opts *bind.TransactOpts, node [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.contract.Transact(opts, "setOwner", node, owner)
+}
+
+// SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
+//
+// Solidity: function setOwner(node bytes32, owner address) returns()
+func (_ENS *ENSSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
+}
+
+// SetOwner is a paid mutator transaction binding the contract method 0x5b0fc9c3.
+//
+// Solidity: function setOwner(node bytes32, owner address) returns()
+func (_ENS *ENSTransactorSession) SetOwner(node [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetOwner(&_ENS.TransactOpts, node, owner)
+}
+
+// SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
+//
+// Solidity: function setResolver(node bytes32, resolver address) returns()
+func (_ENS *ENSTransactor) SetResolver(opts *bind.TransactOpts, node [32]byte, resolver common.Address) (*types.Transaction, error) {
+ return _ENS.contract.Transact(opts, "setResolver", node, resolver)
+}
+
+// SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
+//
+// Solidity: function setResolver(node bytes32, resolver address) returns()
+func (_ENS *ENSSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
+}
+
+// SetResolver is a paid mutator transaction binding the contract method 0x1896f70a.
+//
+// Solidity: function setResolver(node bytes32, resolver address) returns()
+func (_ENS *ENSTransactorSession) SetResolver(node [32]byte, resolver common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetResolver(&_ENS.TransactOpts, node, resolver)
+}
+
+// SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
+//
+// Solidity: function setSubnodeOwner(node bytes32, label bytes32, owner address) returns()
+func (_ENS *ENSTransactor) SetSubnodeOwner(opts *bind.TransactOpts, node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.contract.Transact(opts, "setSubnodeOwner", node, label, owner)
+}
+
+// SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
+//
+// Solidity: function setSubnodeOwner(node bytes32, label bytes32, owner address) returns()
+func (_ENS *ENSSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
+}
+
+// SetSubnodeOwner is a paid mutator transaction binding the contract method 0x06ab5923.
+//
+// Solidity: function setSubnodeOwner(node bytes32, label bytes32, owner address) returns()
+func (_ENS *ENSTransactorSession) SetSubnodeOwner(node [32]byte, label [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _ENS.Contract.SetSubnodeOwner(&_ENS.TransactOpts, node, label, owner)
+}
+
+// FIFSRegistrarABI is the input ABI used to generate the binding from.
+const FIFSRegistrarABI = `[{"constant":false,"inputs":[{"name":"subnode","type":"bytes32"},{"name":"owner","type":"address"}],"name":"register","outputs":[],"type":"function"},{"inputs":[{"name":"ensAddr","type":"address"},{"name":"node","type":"bytes32"}],"type":"constructor"}]`
+
+// FIFSRegistrarBin is the compiled bytecode used for deploying new contracts.
+const FIFSRegistrarBin = `0x6060604081815280610620833960a090525160805160008054600160a060020a031916831790558160a0610367806100878339018082600160a060020a03168152602001915050604051809103906000f0600160006101000a815481600160a060020a0302191690830217905550806002600050819055505050610232806103ee6000396000f3606060405260405160208061036783395060806040525160008054600160a060020a0319168217905550610330806100376000396000f36060604052361561004b5760e060020a60003504632dff694181146100535780633b3b57de1461007557806341b9dc2b146100a0578063c3d014d614610139578063d5fa2b00146101b2575b61022b610002565b61022d6004356000818152600260205260408120549081141561027057610002565b61023f600435600081815260016020526040812054600160a060020a03169081141561027057610002565b61025c60043560243560007f6164647200000000000000000000000000000000000000000000000000000000821480156100f05750600083815260016020526040812054600160a060020a031614155b8061013257507f636f6e74656e740000000000000000000000000000000000000000000000000082148015610132575060008381526002602052604081205414155b9392505050565b61022b600435602435600080546040805160e060020a6302571be30281526004810186905290518593600160a060020a033381169416926302571be392602482810193602093839003909101908290876161da5a03f11561000257505060405151600160a060020a031691909114905061027557610002565b61022b600435602435600080546040805160e060020a6302571be30281526004810186905290518593600160a060020a033381169416926302571be392602482810193602093839003909101908290876161da5a03f11561000257505060405151600160a060020a03169190911490506102c157610002565b005b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b604080519115158252519081900360200190f35b919050565b6000838152600260209081526040918290208490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600083815260016020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916851790558151600160a060020a0385168152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a250505056606060405260e060020a6000350463d22057a9811461001b575b005b61001960043560243560025460408051918252602082810185905260008054835194859003840185207f02571be300000000000000000000000000000000000000000000000000000000865260048601819052935193949193600160a060020a03909116926302571be39260248181019391829003018187876161da5a03f11561000257505060405151915050600160a060020a0381166000148015906100d4575033600160a060020a031681600160a060020a031614155b156100de57610002565b60408051600080546002547f06ab592300000000000000000000000000000000000000000000000000000000845260048401526024830188905230600160a060020a03908116604485015293519316926306ab5923926064818101939291829003018183876161da5a03f11561000257505060008054600154604080517f1896f70a00000000000000000000000000000000000000000000000000000000815260048101889052600160a060020a0392831660248201529051929091169350631896f70a926044828101939192829003018183876161da5a03f11561000257505060008054604080517f5b0fc9c300000000000000000000000000000000000000000000000000000000815260048101879052600160a060020a0388811660248301529151929091169350635b0fc9c3926044828101939192829003018183876161da5a03f115610002575050505050505056`
+
+// DeployFIFSRegistrar deploys a new Ethereum contract, binding an instance of FIFSRegistrar to it.
+func DeployFIFSRegistrar(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address, node [32]byte) (common.Address, *types.Transaction, *FIFSRegistrar, error) {
+ parsed, err := abi.JSON(strings.NewReader(FIFSRegistrarABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(FIFSRegistrarBin), backend, ensAddr, node)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &FIFSRegistrar{FIFSRegistrarCaller: FIFSRegistrarCaller{contract: contract}, FIFSRegistrarTransactor: FIFSRegistrarTransactor{contract: contract}}, nil
+}
+
+// FIFSRegistrar is an auto generated Go binding around an Ethereum contract.
+type FIFSRegistrar struct {
+ FIFSRegistrarCaller // Read-only binding to the contract
+ FIFSRegistrarTransactor // Write-only binding to the contract
+}
+
+// FIFSRegistrarCaller is an auto generated read-only Go binding around an Ethereum contract.
+type FIFSRegistrarCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// FIFSRegistrarTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type FIFSRegistrarTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// FIFSRegistrarSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type FIFSRegistrarSession struct {
+ Contract *FIFSRegistrar // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// FIFSRegistrarCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type FIFSRegistrarCallerSession struct {
+ Contract *FIFSRegistrarCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// FIFSRegistrarTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type FIFSRegistrarTransactorSession struct {
+ Contract *FIFSRegistrarTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// FIFSRegistrarRaw is an auto generated low-level Go binding around an Ethereum contract.
+type FIFSRegistrarRaw struct {
+ Contract *FIFSRegistrar // Generic contract binding to access the raw methods on
+}
+
+// FIFSRegistrarCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type FIFSRegistrarCallerRaw struct {
+ Contract *FIFSRegistrarCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// FIFSRegistrarTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type FIFSRegistrarTransactorRaw struct {
+ Contract *FIFSRegistrarTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewFIFSRegistrar creates a new instance of FIFSRegistrar, bound to a specific deployed contract.
+func NewFIFSRegistrar(address common.Address, backend bind.ContractBackend) (*FIFSRegistrar, error) {
+ contract, err := bindFIFSRegistrar(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &FIFSRegistrar{FIFSRegistrarCaller: FIFSRegistrarCaller{contract: contract}, FIFSRegistrarTransactor: FIFSRegistrarTransactor{contract: contract}}, nil
+}
+
+// NewFIFSRegistrarCaller creates a new read-only instance of FIFSRegistrar, bound to a specific deployed contract.
+func NewFIFSRegistrarCaller(address common.Address, caller bind.ContractCaller) (*FIFSRegistrarCaller, error) {
+ contract, err := bindFIFSRegistrar(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &FIFSRegistrarCaller{contract: contract}, nil
+}
+
+// NewFIFSRegistrarTransactor creates a new write-only instance of FIFSRegistrar, bound to a specific deployed contract.
+func NewFIFSRegistrarTransactor(address common.Address, transactor bind.ContractTransactor) (*FIFSRegistrarTransactor, error) {
+ contract, err := bindFIFSRegistrar(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &FIFSRegistrarTransactor{contract: contract}, nil
+}
+
+// bindFIFSRegistrar binds a generic wrapper to an already deployed contract.
+func bindFIFSRegistrar(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(FIFSRegistrarABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_FIFSRegistrar *FIFSRegistrarRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _FIFSRegistrar.Contract.FIFSRegistrarCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_FIFSRegistrar *FIFSRegistrarRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.FIFSRegistrarTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_FIFSRegistrar *FIFSRegistrarRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.FIFSRegistrarTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_FIFSRegistrar *FIFSRegistrarCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _FIFSRegistrar.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_FIFSRegistrar *FIFSRegistrarTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_FIFSRegistrar *FIFSRegistrarTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.contract.Transact(opts, method, params...)
+}
+
+// Register is a paid mutator transaction binding the contract method 0xd22057a9.
+//
+// Solidity: function register(subnode bytes32, owner address) returns()
+func (_FIFSRegistrar *FIFSRegistrarTransactor) Register(opts *bind.TransactOpts, subnode [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _FIFSRegistrar.contract.Transact(opts, "register", subnode, owner)
+}
+
+// Register is a paid mutator transaction binding the contract method 0xd22057a9.
+//
+// Solidity: function register(subnode bytes32, owner address) returns()
+func (_FIFSRegistrar *FIFSRegistrarSession) Register(subnode [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.Register(&_FIFSRegistrar.TransactOpts, subnode, owner)
+}
+
+// Register is a paid mutator transaction binding the contract method 0xd22057a9.
+//
+// Solidity: function register(subnode bytes32, owner address) returns()
+func (_FIFSRegistrar *FIFSRegistrarTransactorSession) Register(subnode [32]byte, owner common.Address) (*types.Transaction, error) {
+ return _FIFSRegistrar.Contract.Register(&_FIFSRegistrar.TransactOpts, subnode, owner)
+}
+
+// PublicResolverABI is the input ABI used to generate the binding from.
+const PublicResolverABI = `[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"content","outputs":[{"name":"ret","type":"bytes32"}],"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"addr","outputs":[{"name":"ret","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"kind","type":"bytes32"}],"name":"has","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"hash","type":"bytes32"}],"name":"setContent","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"addr","type":"address"}],"name":"setAddr","outputs":[],"type":"function"},{"inputs":[{"name":"ensAddr","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"ContentChanged","type":"event"}]`
+
+// PublicResolverBin is the compiled bytecode used for deploying new contracts.
+const PublicResolverBin = `0x606060405260405160208061036783395060806040525160008054600160a060020a0319168217905550610330806100376000396000f36060604052361561004b5760e060020a60003504632dff694181146100535780633b3b57de1461007557806341b9dc2b146100a0578063c3d014d614610139578063d5fa2b00146101b2575b61022b610002565b61022d6004356000818152600260205260408120549081141561027057610002565b61023f600435600081815260016020526040812054600160a060020a03169081141561027057610002565b61025c60043560243560007f6164647200000000000000000000000000000000000000000000000000000000821480156100f05750600083815260016020526040812054600160a060020a031614155b8061013257507f636f6e74656e740000000000000000000000000000000000000000000000000082148015610132575060008381526002602052604081205414155b9392505050565b61022b600435602435600080546040805160e060020a6302571be30281526004810186905290518593600160a060020a033381169416926302571be392602482810193602093839003909101908290876161da5a03f11561000257505060405151600160a060020a031691909114905061027557610002565b61022b600435602435600080546040805160e060020a6302571be30281526004810186905290518593600160a060020a033381169416926302571be392602482810193602093839003909101908290876161da5a03f11561000257505060405151600160a060020a03169190911490506102c157610002565b005b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b604080519115158252519081900360200190f35b919050565b6000838152600260209081526040918290208490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600083815260016020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916851790558151600160a060020a0385168152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a250505056`
+
+// DeployPublicResolver deploys a new Ethereum contract, binding an instance of PublicResolver to it.
+func DeployPublicResolver(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address) (common.Address, *types.Transaction, *PublicResolver, error) {
+ parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PublicResolverBin), backend, ensAddr)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}}, nil
+}
+
+// PublicResolver is an auto generated Go binding around an Ethereum contract.
+type PublicResolver struct {
+ PublicResolverCaller // Read-only binding to the contract
+ PublicResolverTransactor // Write-only binding to the contract
+}
+
+// PublicResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
+type PublicResolverCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PublicResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type PublicResolverTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PublicResolverSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type PublicResolverSession struct {
+ Contract *PublicResolver // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// PublicResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type PublicResolverCallerSession struct {
+ Contract *PublicResolverCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// PublicResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type PublicResolverTransactorSession struct {
+ Contract *PublicResolverTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// PublicResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
+type PublicResolverRaw struct {
+ Contract *PublicResolver // Generic contract binding to access the raw methods on
+}
+
+// PublicResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type PublicResolverCallerRaw struct {
+ Contract *PublicResolverCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// PublicResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type PublicResolverTransactorRaw struct {
+ Contract *PublicResolverTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewPublicResolver creates a new instance of PublicResolver, bound to a specific deployed contract.
+func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
+ contract, err := bindPublicResolver(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}}, nil
+}
+
+// NewPublicResolverCaller creates a new read-only instance of PublicResolver, bound to a specific deployed contract.
+func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
+ contract, err := bindPublicResolver(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PublicResolverCaller{contract: contract}, nil
+}
+
+// NewPublicResolverTransactor creates a new write-only instance of PublicResolver, bound to a specific deployed contract.
+func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
+ contract, err := bindPublicResolver(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &PublicResolverTransactor{contract: contract}, nil
+}
+
+// bindPublicResolver binds a generic wrapper to an already deployed contract.
+func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PublicResolver.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PublicResolver.Contract.contract.Transact(opts, method, params...)
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
+ var (
+ ret0 = new(common.Address)
+ )
+ out := ret0
+ err := _PublicResolver.contract.Call(opts, out, "addr", node)
+ return *ret0, err
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_PublicResolver *PublicResolverSession) Addr(node [32]byte) (common.Address, error) {
+ return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_PublicResolver *PublicResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
+ return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_PublicResolver *PublicResolverCaller) Content(opts *bind.CallOpts, node [32]byte) ([32]byte, error) {
+ var (
+ ret0 = new([32]byte)
+ )
+ out := ret0
+ err := _PublicResolver.contract.Call(opts, out, "content", node)
+ return *ret0, err
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_PublicResolver *PublicResolverSession) Content(node [32]byte) ([32]byte, error) {
+ return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_PublicResolver *PublicResolverCallerSession) Content(node [32]byte) ([32]byte, error) {
+ return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_PublicResolver *PublicResolverTransactor) Has(opts *bind.TransactOpts, node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.contract.Transact(opts, "has", node, kind)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_PublicResolver *PublicResolverSession) Has(node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.Contract.Has(&_PublicResolver.TransactOpts, node, kind)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_PublicResolver *PublicResolverTransactorSession) Has(node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.Contract.Has(&_PublicResolver.TransactOpts, node, kind)
+}
+
+// SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
+//
+// Solidity: function setAddr(node bytes32, addr address) returns()
+func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, addr common.Address) (*types.Transaction, error) {
+ return _PublicResolver.contract.Transact(opts, "setAddr", node, addr)
+}
+
+// SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
+//
+// Solidity: function setAddr(node bytes32, addr address) returns()
+func (_PublicResolver *PublicResolverSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
+ return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
+}
+
+// SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
+//
+// Solidity: function setAddr(node bytes32, addr address) returns()
+func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
+ return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
+}
+
+// SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
+//
+// Solidity: function setContent(node bytes32, hash bytes32) returns()
+func (_PublicResolver *PublicResolverTransactor) SetContent(opts *bind.TransactOpts, node [32]byte, hash [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.contract.Transact(opts, "setContent", node, hash)
+}
+
+// SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
+//
+// Solidity: function setContent(node bytes32, hash bytes32) returns()
+func (_PublicResolver *PublicResolverSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
+}
+
+// SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
+//
+// Solidity: function setContent(node bytes32, hash bytes32) returns()
+func (_PublicResolver *PublicResolverTransactorSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
+ return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
+}
+
+// ResolverABI is the input ABI used to generate the binding from.
+const ResolverABI = `[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"content","outputs":[{"name":"ret","type":"bytes32"}],"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"addr","outputs":[{"name":"ret","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"kind","type":"bytes32"}],"name":"has","outputs":[{"name":"","type":"bool"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"ContentChanged","type":"event"}]`
+
+// ResolverBin is the compiled bytecode used for deploying new contracts.
+const ResolverBin = `0x`
+
+// DeployResolver deploys a new Ethereum contract, binding an instance of Resolver to it.
+func DeployResolver(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Resolver, error) {
+ parsed, err := abi.JSON(strings.NewReader(ResolverABI))
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ResolverBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &Resolver{ResolverCaller: ResolverCaller{contract: contract}, ResolverTransactor: ResolverTransactor{contract: contract}}, nil
+}
+
+// Resolver is an auto generated Go binding around an Ethereum contract.
+type Resolver struct {
+ ResolverCaller // Read-only binding to the contract
+ ResolverTransactor // Write-only binding to the contract
+}
+
+// ResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
+type ResolverCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type ResolverTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// ResolverSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type ResolverSession struct {
+ Contract *Resolver // Generic contract binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type ResolverCallerSession struct {
+ Contract *ResolverCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// ResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type ResolverTransactorSession struct {
+ Contract *ResolverTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// ResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
+type ResolverRaw struct {
+ Contract *Resolver // Generic contract binding to access the raw methods on
+}
+
+// ResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type ResolverCallerRaw struct {
+ Contract *ResolverCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// ResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type ResolverTransactorRaw struct {
+ Contract *ResolverTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewResolver creates a new instance of Resolver, bound to a specific deployed contract.
+func NewResolver(address common.Address, backend bind.ContractBackend) (*Resolver, error) {
+ contract, err := bindResolver(address, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &Resolver{ResolverCaller: ResolverCaller{contract: contract}, ResolverTransactor: ResolverTransactor{contract: contract}}, nil
+}
+
+// NewResolverCaller creates a new read-only instance of Resolver, bound to a specific deployed contract.
+func NewResolverCaller(address common.Address, caller bind.ContractCaller) (*ResolverCaller, error) {
+ contract, err := bindResolver(address, caller, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &ResolverCaller{contract: contract}, nil
+}
+
+// NewResolverTransactor creates a new write-only instance of Resolver, bound to a specific deployed contract.
+func NewResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*ResolverTransactor, error) {
+ contract, err := bindResolver(address, nil, transactor)
+ if err != nil {
+ return nil, err
+ }
+ return &ResolverTransactor{contract: contract}, nil
+}
+
+// bindResolver binds a generic wrapper to an already deployed contract.
+func bindResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor) (*bind.BoundContract, error) {
+ parsed, err := abi.JSON(strings.NewReader(ResolverABI))
+ if err != nil {
+ return nil, err
+ }
+ return bind.NewBoundContract(address, parsed, caller, transactor), nil
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Resolver *ResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Resolver.Contract.ResolverCaller.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Resolver *ResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Resolver.Contract.ResolverTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Resolver *ResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Resolver.Contract.ResolverTransactor.contract.Transact(opts, method, params...)
+}
+
+// Call invokes the (constant) contract method with params as input values and
+// sets the output to result. The result type might be a single field for simple
+// returns, a slice of interfaces for anonymous returns and a struct for named
+// returns.
+func (_Resolver *ResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
+ return _Resolver.Contract.contract.Call(opts, result, method, params...)
+}
+
+// Transfer initiates a plain transaction to move funds to the contract, calling
+// its default method if one is available.
+func (_Resolver *ResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Resolver.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Resolver *ResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Resolver.Contract.contract.Transact(opts, method, params...)
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_Resolver *ResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
+ var (
+ ret0 = new(common.Address)
+ )
+ out := ret0
+ err := _Resolver.contract.Call(opts, out, "addr", node)
+ return *ret0, err
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_Resolver *ResolverSession) Addr(node [32]byte) (common.Address, error) {
+ return _Resolver.Contract.Addr(&_Resolver.CallOpts, node)
+}
+
+// Addr is a free data retrieval call binding the contract method 0x3b3b57de.
+//
+// Solidity: function addr(node bytes32) constant returns(ret address)
+func (_Resolver *ResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
+ return _Resolver.Contract.Addr(&_Resolver.CallOpts, node)
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_Resolver *ResolverCaller) Content(opts *bind.CallOpts, node [32]byte) ([32]byte, error) {
+ var (
+ ret0 = new([32]byte)
+ )
+ out := ret0
+ err := _Resolver.contract.Call(opts, out, "content", node)
+ return *ret0, err
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_Resolver *ResolverSession) Content(node [32]byte) ([32]byte, error) {
+ return _Resolver.Contract.Content(&_Resolver.CallOpts, node)
+}
+
+// Content is a free data retrieval call binding the contract method 0x2dff6941.
+//
+// Solidity: function content(node bytes32) constant returns(ret bytes32)
+func (_Resolver *ResolverCallerSession) Content(node [32]byte) ([32]byte, error) {
+ return _Resolver.Contract.Content(&_Resolver.CallOpts, node)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_Resolver *ResolverTransactor) Has(opts *bind.TransactOpts, node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _Resolver.contract.Transact(opts, "has", node, kind)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_Resolver *ResolverSession) Has(node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _Resolver.Contract.Has(&_Resolver.TransactOpts, node, kind)
+}
+
+// Has is a paid mutator transaction binding the contract method 0x41b9dc2b.
+//
+// Solidity: function has(node bytes32, kind bytes32) returns(bool)
+func (_Resolver *ResolverTransactorSession) Has(node [32]byte, kind [32]byte) (*types.Transaction, error) {
+ return _Resolver.Contract.Has(&_Resolver.TransactOpts, node, kind)
+}
diff --git a/contracts/ens/contract/ens.sol b/contracts/ens/contract/ens.sol
new file mode 100644
index 000000000..114cd7319
--- /dev/null
+++ b/contracts/ens/contract/ens.sol
@@ -0,0 +1,226 @@
+// Ethereum Name Service contracts by Nick Johnson <nick@ethereum.org>
+//
+// To the extent possible under law, the person who associated CC0 with
+// ENS contracts has waived all copyright and related or neighboring rights
+// to ENS.
+//
+// You should have received a copy of the CC0 legalcode along with this
+// work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+
+/**
+ * The ENS registry contract.
+ */
+contract ENS {
+ struct Record {
+ address owner;
+ address resolver;
+ }
+
+ mapping(bytes32=>Record) records;
+
+ // Logged when the owner of a node assigns a new owner to a subnode.
+ event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);
+
+ // Logged when the owner of a node transfers ownership to a new account.
+ event Transfer(bytes32 indexed node, address owner);
+
+ // Logged when the owner of a node changes the resolver for that node.
+ event NewResolver(bytes32 indexed node, address resolver);
+
+ // Permits modifications only by the owner of the specified node.
+ modifier only_owner(bytes32 node) {
+ if(records[node].owner != msg.sender) throw;
+ _
+ }
+
+ /**
+ * Constructs a new ENS registrar, with the provided address as the owner of the root node.
+ */
+ function ENS(address owner) {
+ records[0].owner = owner;
+ }
+
+ /**
+ * Returns the address that owns the specified node.
+ */
+ function owner(bytes32 node) constant returns (address) {
+ return records[node].owner;
+ }
+
+ /**
+ * Returns the address of the resolver for the specified node.
+ */
+ function resolver(bytes32 node) constant returns (address) {
+ return records[node].resolver;
+ }
+
+ /**
+ * Transfers ownership of a node to a new address. May only be called by the current
+ * owner of the node.
+ * @param node The node to transfer ownership of.
+ * @param owner The address of the new owner.
+ */
+ function setOwner(bytes32 node, address owner) only_owner(node) {
+ Transfer(node, owner);
+ records[node].owner = owner;
+ }
+
+ /**
+ * Transfers ownership of a subnode sha3(node, label) to a new address. May only be
+ * called by the owner of the parent node.
+ * @param node The parent node.
+ * @param label The hash of the label specifying the subnode.
+ * @param owner The address of the new owner.
+ */
+ function setSubnodeOwner(bytes32 node, bytes32 label, address owner) only_owner(node) {
+ var subnode = sha3(node, label);
+ NewOwner(node, label, owner);
+ records[subnode].owner = owner;
+ }
+
+ /**
+ * Sets the resolver address for the specified node.
+ * @param node The node to update.
+ * @param resolver The address of the resolver.
+ */
+ function setResolver(bytes32 node, address resolver) only_owner(node) {
+ NewResolver(node, resolver);
+ records[node].resolver = resolver;
+ }
+}
+
+/**
+ * A registrar that allocates subdomains to the first person to claim them. It also deploys
+ * a simple resolver contract and sets that as the default resolver on new names for
+ * convenience.
+ */
+contract FIFSRegistrar {
+ ENS ens;
+ PublicResolver defaultResolver;
+ bytes32 rootNode;
+
+ /**
+ * Constructor.
+ * @param ensAddr The address of the ENS registry.
+ * @param node The node that this registrar administers.
+ */
+ function FIFSRegistrar(address ensAddr, bytes32 node) {
+ ens = ENS(ensAddr);
+ defaultResolver = new PublicResolver(ensAddr);
+ rootNode = node;
+ }
+
+ /**
+ * Register a name, or change the owner of an existing registration.
+ * @param subnode The hash of the label to register.
+ * @param owner The address of the new owner.
+ */
+ function register(bytes32 subnode, address owner) {
+ var node = sha3(rootNode, subnode);
+ var currentOwner = ens.owner(node);
+ if(currentOwner != 0 && currentOwner != msg.sender)
+ throw;
+
+ // Temporarily set ourselves as the owner
+ ens.setSubnodeOwner(rootNode, subnode, this);
+ // Set up the default resolver
+ ens.setResolver(node, defaultResolver);
+ // Set the owner to the real owner
+ ens.setOwner(node, owner);
+ }
+}
+
+contract Resolver {
+ event AddrChanged(bytes32 indexed node, address a);
+ event ContentChanged(bytes32 indexed node, bytes32 hash);
+
+ function has(bytes32 node, bytes32 kind) returns (bool);
+ function addr(bytes32 node) constant returns (address ret);
+ function content(bytes32 node) constant returns (bytes32 ret);
+}
+
+/**
+ * A simple resolver anyone can use; only allows the owner of a node to set its
+ * address.
+ */
+contract PublicResolver is Resolver {
+ ENS ens;
+ mapping(bytes32=>address) addresses;
+ mapping(bytes32=>bytes32) contents;
+
+ modifier only_owner(bytes32 node) {
+ if(ens.owner(node) != msg.sender) throw;
+ _
+ }
+
+ /**
+ * Constructor.
+ * @param ensAddr The ENS registrar contract.
+ */
+ function PublicResolver(address ensAddr) {
+ ens = ENS(ensAddr);
+ }
+
+ /**
+ * Fallback function.
+ */
+ function() {
+ throw;
+ }
+
+ /**
+ * Returns true if the specified node has the specified record type.
+ * @param node The ENS node to query.
+ * @param kind The record type name, as specified in EIP137.
+ * @return True if this resolver has a record of the provided type on the
+ * provided node.
+ */
+ function has(bytes32 node, bytes32 kind) returns (bool) {
+ return (kind == "addr" && addresses[node] != 0) ||
+ (kind == "content" && contents[node] != 0);
+ }
+
+ /**
+ * Returns the address associated with an ENS node.
+ * @param node The ENS node to query.
+ * @return The associated address.
+ */
+ function addr(bytes32 node) constant returns (address ret) {
+ ret = addresses[node];
+ if(ret == 0)
+ throw;
+ }
+
+ /**
+ * Returns the content hash associated with an ENS node.
+ * @param node The ENS node to query.
+ * @return The associated content hash.
+ */
+ function content(bytes32 node) constant returns (bytes32 ret) {
+ ret = contents[node];
+ if(ret == 0)
+ throw;
+ }
+
+ /**
+ * Sets the address associated with an ENS node.
+ * May only be called by the owner of that node in the ENS registry.
+ * @param node The node to update.
+ * @param addr The address to set.
+ */
+ function setAddr(bytes32 node, address addr) only_owner(node) {
+ addresses[node] = addr;
+ AddrChanged(node, addr);
+ }
+
+ /**
+ * Sets the content hash associated with an ENS node.
+ * May only be called by the owner of that node in the ENS registry.
+ * @param node The node to update.
+ * @param hash The content hash to set.
+ */
+ function setContent(bytes32 node, bytes32 hash) only_owner(node) {
+ contents[node] = hash;
+ ContentChanged(node, hash);
+ }
+}
diff --git a/contracts/ens/ens.go b/contracts/ens/ens.go
new file mode 100644
index 000000000..7806742cf
--- /dev/null
+++ b/contracts/ens/ens.go
@@ -0,0 +1,178 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package ens
+
+//go:generate abigen --sol contract/ens.sol --pkg contract --out contract/ens.go
+
+import (
+ "math/big"
+ "strings"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/contracts/ens/contract"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+// swarm domain name registry and resolver
+type ENS struct {
+ *contract.ENSSession
+ contractBackend bind.ContractBackend
+}
+
+// NewENS creates a struct exposing convenient high-level operations for interacting with
+// the Ethereum Name Service.
+func NewENS(transactOpts *bind.TransactOpts, contractAddr common.Address, contractBackend bind.ContractBackend) (*ENS, error) {
+ ens, err := contract.NewENS(contractAddr, contractBackend)
+ if err != nil {
+ return nil, err
+ }
+
+ return &ENS{
+ &contract.ENSSession{
+ Contract: ens,
+ TransactOpts: *transactOpts,
+ },
+ contractBackend,
+ }, nil
+}
+
+// DeployENS deploys an instance of the ENS nameservice, with a 'first in first served' root registrar.
+func DeployENS(transactOpts *bind.TransactOpts, contractBackend bind.ContractBackend) (*ENS, error) {
+ // Deploy the ENS registry
+ ensAddr, _, _, err := contract.DeployENS(transactOpts, contractBackend, transactOpts.From)
+ if err != nil {
+ return nil, err
+ }
+
+ ens, err := NewENS(transactOpts, ensAddr, contractBackend)
+ if err != nil {
+ return nil, err
+ }
+
+ // Deploy the registrar
+ regAddr, _, _, err := contract.DeployFIFSRegistrar(transactOpts, contractBackend, ensAddr, [32]byte{})
+ if err != nil {
+ return nil, err
+ }
+
+ // Set the registrar as owner of the ENS root
+ _, err = ens.SetOwner([32]byte{}, regAddr)
+ if err != nil {
+ return nil, err
+ }
+
+ return ens, nil
+}
+
+func ensParentNode(name string) (common.Hash, common.Hash) {
+ parts := strings.SplitN(name, ".", 2)
+ label := crypto.Keccak256Hash([]byte(parts[0]))
+ if len(parts) == 1 {
+ return [32]byte{}, label
+ } else {
+ parentNode, parentLabel := ensParentNode(parts[1])
+ return crypto.Keccak256Hash(parentNode[:], parentLabel[:]), label
+ }
+}
+
+func ensNode(name string) common.Hash {
+ parentNode, parentLabel := ensParentNode(name)
+ return crypto.Keccak256Hash(parentNode[:], parentLabel[:])
+}
+
+func (self *ENS) getResolver(node [32]byte) (*contract.PublicResolverSession, error) {
+ resolverAddr, err := self.Resolver(node)
+ if err != nil {
+ return nil, err
+ }
+
+ resolver, err := contract.NewPublicResolver(resolverAddr, self.contractBackend)
+ if err != nil {
+ return nil, err
+ }
+
+ return &contract.PublicResolverSession{
+ Contract: resolver,
+ TransactOpts: self.TransactOpts,
+ }, nil
+}
+
+func (self *ENS) getRegistrar(node [32]byte) (*contract.FIFSRegistrarSession, error) {
+ registrarAddr, err := self.Owner(node)
+ if err != nil {
+ return nil, err
+ }
+
+ registrar, err := contract.NewFIFSRegistrar(registrarAddr, self.contractBackend)
+ if err != nil {
+ return nil, err
+ }
+
+ return &contract.FIFSRegistrarSession{
+ Contract: registrar,
+ TransactOpts: self.TransactOpts,
+ }, nil
+}
+
+// Resolve is a non-transactional call that returns the content hash associated with a name.
+func (self *ENS) Resolve(name string) (common.Hash, error) {
+ node := ensNode(name)
+
+ resolver, err := self.getResolver(node)
+ if err != nil {
+ return common.Hash{}, err
+ }
+
+ ret, err := resolver.Content(node)
+ if err != nil {
+ return common.Hash{}, err
+ }
+
+ return common.BytesToHash(ret[:]), nil
+}
+
+// Register registers a new domain name for the caller, making them the owner of the new name.
+// Only works if the registrar for the parent domain implements the FIFS registrar protocol.
+func (self *ENS) Register(name string) (*types.Transaction, error) {
+ parentNode, label := ensParentNode(name)
+
+ registrar, err := self.getRegistrar(parentNode)
+ if err != nil {
+ return nil, err
+ }
+
+ opts := self.TransactOpts
+ opts.GasLimit = big.NewInt(200000)
+ return registrar.Contract.Register(&opts, label, self.TransactOpts.From)
+}
+
+// SetContentHash sets the content hash associated with a name. Only works if the caller
+// owns the name, and the associated resolver implements a `setContent` function.
+func (self *ENS) SetContentHash(name string, hash common.Hash) (*types.Transaction, error) {
+ node := ensNode(name)
+
+ resolver, err := self.getResolver(node)
+ if err != nil {
+ return nil, err
+ }
+
+ opts := self.TransactOpts
+ opts.GasLimit = big.NewInt(200000)
+ return resolver.Contract.SetContent(&opts, node, hash)
+}
diff --git a/contracts/ens/ens_test.go b/contracts/ens/ens_test.go
new file mode 100644
index 000000000..760966873
--- /dev/null
+++ b/contracts/ens/ens_test.go
@@ -0,0 +1,67 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package ens
+
+import (
+ "math/big"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+var (
+ key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
+ name = "my name on ENS"
+ hash = crypto.Sha3Hash([]byte("my content"))
+ addr = crypto.PubkeyToAddress(key.PublicKey)
+)
+
+func TestENS(t *testing.T) {
+ contractBackend := backends.NewSimulatedBackend(core.GenesisAccount{Address: addr, Balance: big.NewInt(1000000000)})
+ transactOpts := bind.NewKeyedTransactor(key)
+ // Workaround for bug estimating gas in the call to Register
+ transactOpts.GasLimit = big.NewInt(1000000)
+
+ ens, err := DeployENS(transactOpts, contractBackend)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ contractBackend.Commit()
+
+ _, err = ens.Register(name)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ contractBackend.Commit()
+
+ _, err = ens.SetContentHash(name, hash)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ contractBackend.Commit()
+
+ vhost, err := ens.Resolve(name)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ if vhost != hash {
+ t.Fatalf("resolve error, expected %v, got %v", hash.Hex(), vhost.Hex())
+ }
+}
diff --git a/release/contract.go b/contracts/release/contract.go
index 51c1443d4..6a0b09931 100644
--- a/release/contract.go
+++ b/contracts/release/contract.go
@@ -14,10 +14,10 @@ import (
)
// ReleaseOracleABI is the input ABI used to generate the binding from.
-const ReleaseOracleABI = `[{"constant":true,"inputs":[],"name":"currentVersion","outputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"},{"name":"time","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"proposedVersion","outputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"},{"name":"pass","type":"address[]"},{"name":"fail","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[],"name":"signers","outputs":[{"name":"","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[],"name":"authProposals","outputs":[{"name":"","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"authVotes","outputs":[{"name":"promote","type":"address[]"},{"name":"demote","type":"address[]"}],"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"promote","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"demote","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"}],"name":"release","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"nuke","outputs":[],"type":"function"},{"inputs":[{"name":"signers","type":"address[]"}],"type":"constructor"}]`
+const ReleaseOracleABI = `[{"constant":true,"inputs":[],"name":"proposedVersion","outputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"},{"name":"pass","type":"address[]"},{"name":"fail","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[],"name":"signers","outputs":[{"name":"","type":"address[]"}],"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"demote","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"authVotes","outputs":[{"name":"promote","type":"address[]"},{"name":"demote","type":"address[]"}],"type":"function"},{"constant":true,"inputs":[],"name":"currentVersion","outputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"},{"name":"time","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"nuke","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"authProposals","outputs":[{"name":"","type":"address[]"}],"type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"promote","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"major","type":"uint32"},{"name":"minor","type":"uint32"},{"name":"patch","type":"uint32"},{"name":"commit","type":"bytes20"}],"name":"release","outputs":[],"type":"function"},{"inputs":[{"name":"signers","type":"address[]"}],"type":"constructor"}]`
// ReleaseOracleBin is the compiled bytecode used for deploying new contracts.
-const ReleaseOracleBin = `0x60606040526040516114033803806114038339810160405280510160008151600014156100ce57600160a060020a0333168152602081905260408120805460ff191660019081179091558054808201808355828183801582901161015e5781836000526020600020918201910161015e91905b8082111561019957600081558401610072565b505050919090600052602060002090016000848481518110156100025790602001906020020151909190916101000a815481600160a060020a0302191690830217905550506001015b815181101561018957600160006000506000848481518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff0219169083021790555060016000508054806001018281815481835581811511610085576000839052610085906000805160206113e3833981519152908101908301610072565b5050506000929092526000805160206113e3833981519152018054600160a060020a03191633179055505b50506112458061019e6000396000f35b50905600606060405236156100775760e060020a600035046326db7648811461007957806346f0975a1461019e5780635c3d005d1461020a57806364ed31fe146102935780639d888e861461038d578063bc8fbbf8146103b2578063bf8ecf9c146103fb578063d0e0813a14610467578063d67cbec914610478575b005b610495604080516020818101835260008083528351808301855281815260045460068054875181870281018701909852808852939687968796879691959463ffffffff818116956401000000008304821695604060020a840490921694606060020a938490049093029390926007929184919083018282801561012657602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610107575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561018357602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610164575b50505050509050955095509550955095509550909192939495565b6040805160208181018352600082526001805484518184028101840190955280855261054894928301828280156101ff57602002820191906000526020600020905b8154600160a060020a03168152600191909101906020018083116101e0575b505050505090505b90565b6100776004356106d78160005b600160a060020a033316600090815260208190526040812054819060ff16156106df57600160a060020a038416815260026020526040812091505b81548110156106e7578154600160a060020a033316908390839081101561000257600091825260209091200154600160a060020a03161415610732576106df565b6105926004356040805160208181018352600080835283518083018552818152600160a060020a038616825260028352908490208054855181850281018501909652808652939491939092600184019291849183018282801561032057602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610301575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561037d57602002820191906000526020600020905b8154600160a060020a031681526001919091019060200180831161035e575b5050505050905091509150915091565b6106176000600060006000600060006008600050805490506000141561064e576106cf565b6100776106e56000808080805b600160a060020a033316600090815260208190526040812054819060ff161561121c57821580156103f1575060065481145b15610ca55761121c565b6040805160208181018352600082526003805484518184028101840190955280855261054894928301828280156101ff57602002820191906000526020600020908154600160a060020a03168152600191909101906020018083116101e0575b50505050509050610207565b6100776004356106d7816001610217565b6100776004356024356044356064356106df8484848460016103bf565b604051808763ffffffff1681526020018663ffffffff1681526020018563ffffffff16815260200184815260200180602001806020018381038352858181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f1509050018381038252848181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f1509050019850505050505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f1509050019250505060405180910390f35b6040518080602001806020018381038352858181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f1509050018381038252848181518152602001915080519060200190602002808383829060006004602084601f0104600f02600301f15090500194505050505060405180910390f35b6040805163ffffffff9687168152948616602086015292909416838301526060830152608082019290925290519081900360a00190f35b600880546000198101908110156100025760009182526004027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30190508054600182015463ffffffff8281169950640100000000830481169850604060020a8304169650606060020a91829004909102945067ffffffffffffffff16925090505b509091929394565b50565b505050505b50505050565b565b5060005b600182015481101561073a5733600160a060020a03168260010160005082815481101561000257600091825260209091200154600160a060020a03161415610784576106df565b600101610252565b8154600014801561074f575060018201546000145b156107ac576003805460018101808355828183801582901161078c5781836000526020600020918201910161078c9190610834565b6001016106eb565b5050506000928352506020909120018054600160a060020a031916851790555b821561084c578154600181018084558391908281838015829011610881578183600052602060002091820191016108819190610834565b5050506000928352506020909120018054600160a060020a031916851790555b600160a060020a038416600090815260026020908152604082208054838255818452918320909291610b5c91908101905b808211156108485760008155600101610834565b5090565b816001016000508054806001018281815481835581811511610933578183600052602060002091820191016109339190610834565b5050506000928352506020909120018054600160a060020a031916331790556001548254600290910490116108b5576106df565b8280156108db5750600160a060020a03841660009081526020819052604090205460ff16155b1561096a57600160a060020a0384166000908152602081905260409020805460ff19166001908117909155805480820180835582818380158290116107e3578183600052602060002091820191016107e39190610834565b5050506000928352506020909120018054600160a060020a031916331790556001805490830154600290910490116108b5576106df565b821580156109905750600160a060020a03841660009081526020819052604090205460ff165b156108035750600160a060020a0383166000908152602081905260408120805460ff191690555b6001548110156108035783600160a060020a03166001600050828154811015610002576000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60154600160a060020a03161415610ad057600180546000198101908110156100025760009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601909054906101000a9004600160a060020a03166001600050828154811015610002577fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018054600160a060020a03191690921790915580546000198101808355909190828015829011610ad857818360005260206000209182019101610ad89190610834565b6001016109b7565b5050600060048181556005805467ffffffffffffffff19169055600680548382558184529194509192508290610b32907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610834565b5060018201805460008083559182526020909120610b5291810190610834565b5050505050610803565b5060018201805460008083559182526020909120610b7c91810190610834565b506000925050505b6003548110156106df5783600160a060020a03166003600050828154811015610002576000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0154600160a060020a03161415610c9d57600380546000198101908110156100025760009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01909054906101000a9004600160a060020a03166003600050828154811015610002577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018054600160a060020a031916909217909155805460001981018083559091908280158290116106da578183600052602060002091820191016106da9190610834565b600101610b84565b60065460001415610d03576004805463ffffffff1916881767ffffffff0000000019166401000000008802176bffffffff00000000000000001916604060020a8702176bffffffffffffffffffffffff16606060020a808704021790555b828015610d6d575060045463ffffffff8881169116141580610d395750600454640100000000900463ffffffff90811690871614155b80610d56575060045463ffffffff868116604060020a9092041614155b80610d6d5750600454606060020a90819004028414155b15610d775761121c565b506006905060005b8154811015610dc0578154600160a060020a033316908390839081101561000257600091825260209091200154600160a060020a03161415610e0b5761121c565b5060005b6001820154811015610e135733600160a060020a03168260010160005082815481101561000257600091825260209091200154600160a060020a03161415610e485761121c565b600101610d7f565b8215610e50578154600181018084558391908281838015829011610e8557600083815260209020610e85918101908301610834565b600101610dc4565b816001016000508054806001018281815481835581811511610f0857818360005260206000209182019101610f089190610834565b5050506000928352506020909120018054600160a060020a03191633179055600154825460029091049011610eb95761121c565b8215610f3f576005805467ffffffffffffffff19164217905560088054600181018083558281838015829011610f9457600402816004028360005260206000209182019101610f9491906110ae565b5050506000928352506020909120018054600160a060020a03191633179055600180549083015460029091049011610eb95761121c565b600060048181556005805467ffffffffffffffff19169055600680548382558184529192918290611225907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610834565b5050509190906000526020600020906004020160005060048054825463ffffffff191663ffffffff9182161780845582546401000000009081900483160267ffffffff000000001991909116178084558254604060020a908190049092169091026bffffffff00000000000000001991909116178083558154606060020a908190048102819004026bffffffffffffffffffffffff9190911617825560055460018301805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560068054600284018054828255600082815260209020949594919283929182019185821561110d5760005260206000209182015b8281111561110d57825482559160010191906001019061108b565b505050506004015b8082111561084857600080825560018201805467ffffffffffffffff191690556002820180548282558183526020832083916110ed9190810190610834565b50600182018054600080835591825260209091206110a691810190610834565b506111339291505b80821115610848578054600160a060020a0319168155600101611115565b50506001818101805491840180548083556000838152602090209293830192909182156111815760005260206000209182015b82811115611181578254825591600101919060010190611166565b5061118d929150611115565b5050600060048181556005805467ffffffffffffffff19169055600680548382558184529197509195509093508492506111ec91507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610834565b506001820180546000808355918252602090912061120c91810190610834565b505050505061121c565b50505050505b50505050505050565b50600182018054600080835591825260209091206112169181019061083456b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6`
+const ReleaseOracleBin = `0x606060405260405161135338038061135383398101604052805101600081516000141561008457600160a060020a0333168152602081905260408120805460ff19166001908117909155805480820180835582818380158290116100ff576000838152602090206100ff9181019083015b8082111561012f5760008155600101610070565b5060005b815181101561011f5760016000600050600084848151811015610002576020908102909101810151600160a060020a03168252810191909152604001600020805460ff1916909117905560018054808201808355828183801582901161013357600083815260209020610133918101908301610070565b5050506000928352506020909120018054600160a060020a031916331790555b50506111df806101746000396000f35b5090565b50505091909060005260206000209001600084848151811015610002575050506020838102850101518154600160a060020a0319161790555060010161008856606060405236156100775760e060020a600035046326db7648811461007957806346f0975a1461019e5780635c3d005d1461020a57806364ed31fe146102935780639d888e861461038d578063bc8fbbf8146103b2578063bf8ecf9c146103fc578063d0e0813a14610468578063d67cbec914610479575b005b610496604080516020818101835260008083528351808301855281815260045460068054875181870281018701909852808852939687968796879691959463ffffffff818116956401000000008304821695604060020a840490921694606060020a938490049093029390926007929184919083018282801561012657602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610107575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561018357602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610164575b50505050509050955095509550955095509550909192939495565b6040805160208181018352600082526001805484518184028101840190955280855261055894928301828280156101ff57602002820191906000526020600020905b8154600160a060020a03168152600191909101906020018083116101e0575b505050505090505b90565b61007760043561066d8160005b600160a060020a033316600090815260208190526040812054819060ff161561070057600160a060020a038416815260026020526040812091505b8154811015610706578154600160a060020a033316908390839081101561000257600091825260209091200154600160a060020a0316141561075157610700565b6105a26004356040805160208181018352600080835283518083018552818152600160a060020a038616825260028352908490208054855181850281018501909652808652939491939092600184019291849183018282801561032057602002820191906000526020600020905b8154600160a060020a0316815260019190910190602001808311610301575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561037d57602002820191906000526020600020905b8154600160a060020a031681526001919091019060200180831161035e575b5050505050905091509150915091565b61062760006000600060006000600060086000508054905060001415610670576106f1565b6100776106f96000808080805b600160a060020a033316600090815260208190526040812054819060ff16156111b657821580156103f257506006546000145b15610c2e576111b6565b6040805160208181018352600082526003805484518184028101840190955280855261055894928301828280156101ff57602002820191906000526020600020908154600160a060020a03168152600191909101906020018083116101e0575b50505050509050610207565b61007760043561066d816001610217565b6100776004356024356044356064356107008484848460016103bf565b604051808763ffffffff1681526020018663ffffffff1681526020018563ffffffff168152602001846bffffffffffffffffffffffff1916815260200180602001806020018381038352858181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050018381038252848181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019850505050505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b6040518080602001806020018381038352858181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050018381038252848181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f15090500194505050505060405180910390f35b6040805163ffffffff9687168152948616602086015292909416838301526bffffffffffffffffffffffff19166060830152608082019290925290519081900360a00190f35b50565b600880546000198101908110156100025760009182526004027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30190508054600182015463ffffffff8281169950640100000000830481169850604060020a8304169650606060020a91829004909102945067ffffffffffffffff16925090505b509091929394565b565b505050505b50505050565b5060005b60018201548110156107595733600160a060020a03168260010160005082815481101561000257600091825260209091200154600160a060020a031614156107a357610700565b600101610252565b8154600014801561076e575060018201546000145b156107cb57600380546001810180835582818380158290116107ab578183600052602060002091820191016107ab9190610851565b60010161070a565b5050506000928352506020909120018054600160a060020a031916851790555b821561086957815460018101808455839190828183801582901161089e5760008381526020902061089e918101908301610851565b5050506000928352506020909120018054600160a060020a031916851790555b600160a060020a038416600090815260026020908152604082208054838255818452918320909291610b2f91908101905b808211156108655760008155600101610851565b5090565b816001016000508054806001018281815481835581811511610950578183600052602060002091820191016109509190610851565b5050506000928352506020909120018054600160a060020a031916331790556001548254600290910490116108d257610700565b8280156108f85750600160a060020a03841660009081526020819052604090205460ff16155b1561098757600160a060020a0384166000908152602081905260409020805460ff1916600190811790915580548082018083558281838015829011610800578183600052602060002091820191016108009190610851565b5050506000928352506020909120018054600160a060020a031916331790556001805490830154600290910490116108d257610700565b821580156109ad5750600160a060020a03841660009081526020819052604090205460ff165b156108205750600160a060020a0383166000908152602081905260408120805460ff191690555b6001548110156108205783600160a060020a0316600160005082815481101561000257600091825260209091200154600160a060020a03161415610aa357600180546000198101908110156100025760206000908120929052600180549290910154600160a060020a031691839081101561000257906000526020600020900160006101000a815481600160a060020a030219169083021790555060016000508054809190600190039090815481835581811511610aab57600083815260209020610aab918101908301610851565b6001016109d4565b5050600060048181556005805467ffffffffffffffff19169055600680548382558184529194509192508290610b05907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610851565b5060018201805460008083559182526020909120610b2591810190610851565b5050505050610820565b5060018201805460008083559182526020909120610b4f91810190610851565b506000925050505b6003548110156107005783600160a060020a0316600360005082815481101561000257600091825260209091200154600160a060020a03161415610c2657600380546000198101908110156100025760206000908120929052600380549290910154600160a060020a031691839081101561000257906000526020600020900160006101000a815481600160a060020a0302191690830217905550600360005080548091906001900390908154818355818115116106fb576000838152602090206106fb918101908301610851565b600101610b57565b60065460001415610c8c576004805463ffffffff1916881767ffffffff0000000019166401000000008802176bffffffff00000000000000001916604060020a8702176bffffffffffffffffffffffff16606060020a808704021790555b828015610d08575060045463ffffffff8881169116141580610cc1575060045463ffffffff8781166401000000009092041614155b80610cde575060045463ffffffff868116604060020a9092041614155b80610d085750600454606060020a90819004026bffffffffffffffffffffffff1990811690851614155b15610d12576111b6565b506006905060005b8154811015610d5b578154600160a060020a033316908390839081101561000257600091825260209091200154600160a060020a03161415610da6576111b6565b5060005b6001820154811015610dae5733600160a060020a03168260010160005082815481101561000257600091825260209091200154600160a060020a03161415610de3576111b6565b600101610d1a565b8215610deb578154600181018084558391908281838015829011610e2057600083815260209020610e20918101908301610851565b600101610d5f565b816001016000508054806001018281815481835581811511610ea357818360005260206000209182019101610ea39190610851565b5050506000928352506020909120018054600160a060020a03191633179055600154825460029091049011610e54576111b6565b8215610eda576005805467ffffffffffffffff19164217905560088054600181018083558281838015829011610f2f57600402816004028360005260206000209182019101610f2f9190611048565b5050506000928352506020909120018054600160a060020a03191633179055600180549083015460029091049011610e54576111b6565b600060048181556005805467ffffffffffffffff191690556006805483825581845291929182906111bf907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610851565b5050509190906000526020600020906004020160005060048054825463ffffffff191663ffffffff9182161780845582546401000000009081900483160267ffffffff000000001991909116178084558254604060020a908190049092169091026bffffffff00000000000000001991909116178083558154606060020a908190048102819004026bffffffffffffffffffffffff9190911617825560055460018301805467ffffffffffffffff191667ffffffffffffffff9092169190911790556006805460028401805482825560008281526020902094959491928392918201918582156110a75760005260206000209182015b828111156110a7578254825591600101919060010190611025565b505050506004015b8082111561086557600080825560018201805467ffffffffffffffff191690556002820180548282558183526020832083916110879190810190610851565b506001820180546000808355918252602090912061104091810190610851565b506110cd9291505b80821115610865578054600160a060020a03191681556001016110af565b505060018181018054918401805480835560008381526020902092938301929091821561111b5760005260206000209182015b8281111561111b578254825591600101919060010190611100565b506111279291506110af565b5050600060048181556005805467ffffffffffffffff191690556006805483825581845291975091955090935084925061118691507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90810190610851565b50600182018054600080835591825260209091206111a691810190610851565b50505050506111b6565b50505050505b50505050505050565b50600182018054600080835591825260209091206111b09181019061085156`
// DeployReleaseOracle deploys a new Ethereum contract, binding an instance of ReleaseOracle to it.
func DeployReleaseOracle(auth *bind.TransactOpts, backend bind.ContractBackend, signers []common.Address) (common.Address, *types.Transaction, *ReleaseOracle, error) {
@@ -87,7 +87,7 @@ type ReleaseOracleTransactorRaw struct {
// NewReleaseOracle creates a new instance of ReleaseOracle, bound to a specific deployed contract.
func NewReleaseOracle(address common.Address, backend bind.ContractBackend) (*ReleaseOracle, error) {
- contract, err := bindReleaseOracle(address, backend.(bind.ContractCaller), backend.(bind.ContractTransactor))
+ contract, err := bindReleaseOracle(address, backend, backend)
if err != nil {
return nil, err
}
diff --git a/release/contract.sol b/contracts/release/contract.sol
index fedf646c0..fedf646c0 100644
--- a/release/contract.sol
+++ b/contracts/release/contract.sol
diff --git a/release/contract_test.go b/contracts/release/contract_test.go
index 11a039992..11a039992 100644
--- a/release/contract_test.go
+++ b/contracts/release/contract_test.go
diff --git a/release/release.go b/contracts/release/release.go
index 21b5e2ce2..5a6665dba 100644
--- a/release/release.go
+++ b/contracts/release/release.go
@@ -17,6 +17,8 @@
// Package release contains the node service that tracks client releases.
package release
+//go:generate abigen --sol ./contract.sol --pkg release --out ./contract.go
+
import (
"fmt"
"strings"
diff --git a/core/bench_test.go b/core/bench_test.go
index c6029499a..344e7e3c5 100644
--- a/core/bench_test.go
+++ b/core/bench_test.go
@@ -163,7 +163,7 @@ func benchInsertChain(b *testing.B, disk bool, gen func(int, *BlockGen)) {
// Generate a chain of b.N blocks using the supplied block
// generator function.
genesis := WriteGenesisBlockForTesting(db, GenesisAccount{benchRootAddr, benchRootFunds})
- chain, _ := GenerateChain(genesis, db, b.N, gen)
+ chain, _ := GenerateChain(nil, genesis, db, b.N, gen)
// Time the insertion of the new chain.
// State and blocks are stored in the same DB.
diff --git a/core/block_validator.go b/core/block_validator.go
index c3f959324..e5bc6178b 100644
--- a/core/block_validator.go
+++ b/core/block_validator.go
@@ -247,7 +247,8 @@ func ValidateHeader(config *ChainConfig, pow pow.PoW, header *types.Header, pare
return &BlockNonceErr{header.Number, header.Hash(), header.Nonce.Uint64()}
}
}
- return nil
+ // If all checks passed, validate the extra-data field for hard forks
+ return ValidateDAOHeaderExtraData(config, header)
}
// CalcDifficulty is the difficulty adjustment algorithm. It returns
diff --git a/core/blockchain.go b/core/blockchain.go
index 950804d40..888c98dce 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -778,6 +778,14 @@ func (self *BlockChain) WriteBlock(block *types.Block) (status WriteStatus, err
localTd := self.GetTd(self.currentBlock.Hash(), self.currentBlock.NumberU64())
externTd := new(big.Int).Add(block.Difficulty(), ptd)
+ // Irrelevant of the canonical status, write the block itself to the database
+ if err := self.hc.WriteTd(block.Hash(), block.NumberU64(), externTd); err != nil {
+ glog.Fatalf("failed to write block total difficulty: %v", err)
+ }
+ if err := WriteBlock(self.chainDb, block); err != nil {
+ glog.Fatalf("failed to write block contents: %v", err)
+ }
+
// If the total difficulty is higher than our known, add it to the canonical chain
// Second clause in the if statement reduces the vulnerability to selfish mining.
// Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf
@@ -788,19 +796,11 @@ func (self *BlockChain) WriteBlock(block *types.Block) (status WriteStatus, err
return NonStatTy, err
}
}
- // Insert the block as the new head of the chain
- self.insert(block)
+ self.insert(block) // Insert the block as the new head of the chain
status = CanonStatTy
} else {
status = SideStatTy
}
- // Irrelevant of the canonical status, write the block itself to the database
- if err := self.hc.WriteTd(block.Hash(), block.NumberU64(), externTd); err != nil {
- glog.Fatalf("failed to write block total difficulty: %v", err)
- }
- if err := WriteBlock(self.chainDb, block); err != nil {
- glog.Fatalf("failed to write block contents: %v", err)
- }
self.futureBlocks.Remove(block.Hash())
diff --git a/core/blockchain_test.go b/core/blockchain_test.go
index a26fe4a1b..de3ef0a9c 100644
--- a/core/blockchain_test.go
+++ b/core/blockchain_test.go
@@ -712,7 +712,7 @@ func TestFastVsFullChains(t *testing.T) {
funds = big.NewInt(1000000000)
genesis = GenesisBlockForTesting(gendb, address, funds)
)
- blocks, receipts := GenerateChain(genesis, gendb, 1024, func(i int, block *BlockGen) {
+ blocks, receipts := GenerateChain(nil, genesis, gendb, 1024, func(i int, block *BlockGen) {
block.SetCoinbase(common.Address{0x00})
// If the block number is multiple of 3, send a few bonus transactions to the miner
@@ -795,7 +795,7 @@ func TestLightVsFastVsFullChainHeads(t *testing.T) {
genesis = GenesisBlockForTesting(gendb, address, funds)
)
height := uint64(1024)
- blocks, receipts := GenerateChain(genesis, gendb, int(height), nil)
+ blocks, receipts := GenerateChain(nil, genesis, gendb, int(height), nil)
// Configure a subchain to roll back
remove := []common.Hash{}
@@ -895,7 +895,7 @@ func TestChainTxReorgs(t *testing.T) {
// - futureAdd: transaction added after the reorg has already finished
var pastAdd, freshAdd, futureAdd *types.Transaction
- chain, _ := GenerateChain(genesis, db, 3, func(i int, gen *BlockGen) {
+ chain, _ := GenerateChain(nil, genesis, db, 3, func(i int, gen *BlockGen) {
switch i {
case 0:
pastDrop, _ = types.NewTransaction(gen.TxNonce(addr2), addr2, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(key2)
@@ -920,7 +920,7 @@ func TestChainTxReorgs(t *testing.T) {
}
// overwrite the old chain
- chain, _ = GenerateChain(genesis, db, 5, func(i int, gen *BlockGen) {
+ chain, _ = GenerateChain(nil, genesis, db, 5, func(i int, gen *BlockGen) {
switch i {
case 0:
pastAdd, _ = types.NewTransaction(gen.TxNonce(addr3), addr3, big.NewInt(1000), params.TxGas, nil, nil).SignECDSA(key3)
@@ -990,7 +990,7 @@ func TestLogReorgs(t *testing.T) {
blockchain, _ := NewBlockChain(db, testChainConfig(), FakePow{}, evmux)
subs := evmux.Subscribe(RemovedLogsEvent{})
- chain, _ := GenerateChain(genesis, db, 2, func(i int, gen *BlockGen) {
+ chain, _ := GenerateChain(nil, genesis, db, 2, func(i int, gen *BlockGen) {
if i == 1 {
tx, err := types.NewContractCreation(gen.TxNonce(addr1), new(big.Int), big.NewInt(1000000), new(big.Int), code).SignECDSA(key1)
if err != nil {
@@ -1003,7 +1003,7 @@ func TestLogReorgs(t *testing.T) {
t.Fatalf("failed to insert chain: %v", err)
}
- chain, _ = GenerateChain(genesis, db, 3, func(i int, gen *BlockGen) {})
+ chain, _ = GenerateChain(nil, genesis, db, 3, func(i int, gen *BlockGen) {})
if _, err := blockchain.InsertChain(chain); err != nil {
t.Fatalf("failed to insert forked chain: %v", err)
}
@@ -1025,12 +1025,12 @@ func TestReorgSideEvent(t *testing.T) {
evmux := &event.TypeMux{}
blockchain, _ := NewBlockChain(db, testChainConfig(), FakePow{}, evmux)
- chain, _ := GenerateChain(genesis, db, 3, func(i int, gen *BlockGen) {})
+ chain, _ := GenerateChain(nil, genesis, db, 3, func(i int, gen *BlockGen) {})
if _, err := blockchain.InsertChain(chain); err != nil {
t.Fatalf("failed to insert chain: %v", err)
}
- replacementBlocks, _ := GenerateChain(genesis, db, 4, func(i int, gen *BlockGen) {
+ replacementBlocks, _ := GenerateChain(nil, genesis, db, 4, func(i int, gen *BlockGen) {
tx, err := types.NewContractCreation(gen.TxNonce(addr1), new(big.Int), big.NewInt(1000000), new(big.Int), nil).SignECDSA(key1)
if i == 2 {
gen.OffsetTime(-1)
@@ -1090,3 +1090,41 @@ done:
}
}
+
+// Tests if the canonical block can be fetched from the database during chain insertion.
+func TestCanonicalBlockRetrieval(t *testing.T) {
+ var (
+ db, _ = ethdb.NewMemDatabase()
+ genesis = WriteGenesisBlockForTesting(db)
+ )
+
+ evmux := &event.TypeMux{}
+ blockchain, _ := NewBlockChain(db, testChainConfig(), FakePow{}, evmux)
+
+ chain, _ := GenerateChain(nil, genesis, db, 10, func(i int, gen *BlockGen) {})
+
+ for i, _ := range chain {
+ go func(block *types.Block) {
+ // try to retrieve a block by its canonical hash and see if the block data can be retrieved.
+ for {
+ ch := GetCanonicalHash(db, block.NumberU64())
+ if ch == (common.Hash{}) {
+ continue // busy wait for canonical hash to be written
+ }
+ if ch != block.Hash() {
+ t.Fatalf("unknown canonical hash, want %s, got %s", block.Hash().Hex(), ch.Hex())
+ }
+ fb := GetBlock(db, ch, block.NumberU64())
+ if fb == nil {
+ t.Fatalf("unable to retrieve block %d for canonical hash: %s", block.NumberU64(), ch.Hex())
+ }
+ if fb.Hash() != block.Hash() {
+ t.Fatalf("invalid block hash for block %d, want %s, got %s", block.NumberU64(), block.Hash().Hex(), fb.Hash().Hex())
+ }
+ return
+ }
+ }(chain[i])
+
+ blockchain.InsertChain(types.Blocks{chain[i]})
+ }
+}
diff --git a/core/chain_makers.go b/core/chain_makers.go
index ef0ac66d1..0b9a5f75d 100644
--- a/core/chain_makers.go
+++ b/core/chain_makers.go
@@ -26,6 +26,7 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
+ "github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/pow"
)
@@ -35,7 +36,11 @@ import (
// MakeChainConfig returns a new ChainConfig with the ethereum default chain settings.
func MakeChainConfig() *ChainConfig {
- return &ChainConfig{HomesteadBlock: big.NewInt(0)}
+ return &ChainConfig{
+ HomesteadBlock: big.NewInt(0),
+ DAOForkBlock: nil,
+ DAOForkSupport: true,
+ }
}
// FakePow is a non-validating proof of work implementation.
@@ -173,10 +178,27 @@ func (b *BlockGen) OffsetTime(seconds int64) {
// Blocks created by GenerateChain do not contain valid proof of work
// values. Inserting them into BlockChain requires use of FakePow or
// a similar non-validating proof of work implementation.
-func GenerateChain(parent *types.Block, db ethdb.Database, n int, gen func(int, *BlockGen)) ([]*types.Block, []types.Receipts) {
+func GenerateChain(config *ChainConfig, parent *types.Block, db ethdb.Database, n int, gen func(int, *BlockGen)) ([]*types.Block, []types.Receipts) {
blocks, receipts := make(types.Blocks, n), make([]types.Receipts, n)
genblock := func(i int, h *types.Header, statedb *state.StateDB) (*types.Block, types.Receipts) {
b := &BlockGen{parent: parent, i: i, chain: blocks, header: h, statedb: statedb}
+
+ // Mutate the state and block according to any hard-fork specs
+ if config == nil {
+ config = MakeChainConfig()
+ }
+ if daoBlock := config.DAOForkBlock; daoBlock != nil {
+ limit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange)
+ if h.Number.Cmp(daoBlock) >= 0 && h.Number.Cmp(limit) < 0 {
+ if config.DAOForkSupport {
+ h.Extra = common.CopyBytes(params.DAOForkBlockExtra)
+ }
+ }
+ }
+ if config.DAOForkSupport && config.DAOForkBlock != nil && config.DAOForkBlock.Cmp(h.Number) == 0 {
+ ApplyDAOHardFork(statedb)
+ }
+ // Execute any user modifications to the block and finalize it
if gen != nil {
gen(i, b)
}
@@ -261,7 +283,7 @@ func makeHeaderChain(parent *types.Header, n int, db ethdb.Database, seed int) [
// makeBlockChain creates a deterministic chain of blocks rooted at parent.
func makeBlockChain(parent *types.Block, n int, db ethdb.Database, seed int) []*types.Block {
- blocks, _ := GenerateChain(parent, db, n, func(i int, b *BlockGen) {
+ blocks, _ := GenerateChain(nil, parent, db, n, func(i int, b *BlockGen) {
b.SetCoinbase(common.Address{0: byte(seed), 19: byte(i)})
})
return blocks
diff --git a/core/chain_makers_test.go b/core/chain_makers_test.go
index 32c3efe8d..f52b09ad9 100644
--- a/core/chain_makers_test.go
+++ b/core/chain_makers_test.go
@@ -47,7 +47,7 @@ func ExampleGenerateChain() {
// This call generates a chain of 5 blocks. The function runs for
// each block and adds different features to gen based on the
// block index.
- chain, _ := GenerateChain(genesis, db, 5, func(i int, gen *BlockGen) {
+ chain, _ := GenerateChain(nil, genesis, db, 5, func(i int, gen *BlockGen) {
switch i {
case 0:
// In block 1, addr1 sends addr2 some ether.
diff --git a/core/chain_pow_test.go b/core/chain_pow_test.go
index d2b0bd144..2e26c8211 100644
--- a/core/chain_pow_test.go
+++ b/core/chain_pow_test.go
@@ -60,7 +60,7 @@ func TestPowVerification(t *testing.T) {
var (
testdb, _ = ethdb.NewMemDatabase()
genesis = GenesisBlockForTesting(testdb, common.Address{}, new(big.Int))
- blocks, _ = GenerateChain(genesis, testdb, 8, nil)
+ blocks, _ = GenerateChain(nil, genesis, testdb, 8, nil)
)
headers := make([]*types.Header, len(blocks))
for i, block := range blocks {
@@ -115,7 +115,7 @@ func testPowConcurrentVerification(t *testing.T, threads int) {
var (
testdb, _ = ethdb.NewMemDatabase()
genesis = GenesisBlockForTesting(testdb, common.Address{}, new(big.Int))
- blocks, _ = GenerateChain(genesis, testdb, 8, nil)
+ blocks, _ = GenerateChain(nil, genesis, testdb, 8, nil)
)
headers := make([]*types.Header, len(blocks))
for i, block := range blocks {
@@ -186,7 +186,7 @@ func testPowConcurrentAbortion(t *testing.T, threads int) {
var (
testdb, _ = ethdb.NewMemDatabase()
genesis = GenesisBlockForTesting(testdb, common.Address{}, new(big.Int))
- blocks, _ = GenerateChain(genesis, testdb, 1024, nil)
+ blocks, _ = GenerateChain(nil, genesis, testdb, 1024, nil)
)
headers := make([]*types.Header, len(blocks))
for i, block := range blocks {
diff --git a/core/config.go b/core/config.go
index 81ca76aa3..c0d065a57 100644
--- a/core/config.go
+++ b/core/config.go
@@ -31,16 +31,17 @@ var ChainConfigNotFoundErr = errors.New("ChainConfig not found") // general conf
// that any network, identified by its genesis block, can have its own
// set of configuration options.
type ChainConfig struct {
- HomesteadBlock *big.Int // homestead switch block
+ HomesteadBlock *big.Int `json:"homesteadBlock"` // Homestead switch block (nil = no fork, 0 = already homestead)
+ DAOForkBlock *big.Int `json:"daoForkBlock"` // TheDAO hard-fork switch block (nil = no fork)
+ DAOForkSupport bool `json:"daoForkSupport"` // Whether the nodes supports or opposes the DAO hard-fork
VmConfig vm.Config `json:"-"`
}
// IsHomestead returns whether num is either equal to the homestead block or greater.
func (c *ChainConfig) IsHomestead(num *big.Int) bool {
- if num == nil {
+ if c.HomesteadBlock == nil || num == nil {
return false
}
-
return num.Cmp(c.HomesteadBlock) >= 0
}
diff --git a/core/dao.go b/core/dao.go
new file mode 100644
index 000000000..e315c9884
--- /dev/null
+++ b/core/dao.go
@@ -0,0 +1,74 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package core
+
+import (
+ "bytes"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/core/state"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/params"
+)
+
+// ValidateDAOHeaderExtraData validates the extra-data field of a block header to
+// ensure it conforms to DAO hard-fork rules.
+//
+// DAO hard-fork extension to the header validity:
+// a) if the node is no-fork, do not accept blocks in the [fork, fork+10) range
+// with the fork specific extra-data set
+// b) if the node is pro-fork, require blocks in the specific range to have the
+// unique extra-data set.
+func ValidateDAOHeaderExtraData(config *ChainConfig, header *types.Header) error {
+ // Short circuit validation if the node doesn't care about the DAO fork
+ if config.DAOForkBlock == nil {
+ return nil
+ }
+ // Make sure the block is within the fork's modified extra-data range
+ limit := new(big.Int).Add(config.DAOForkBlock, params.DAOForkExtraRange)
+ if header.Number.Cmp(config.DAOForkBlock) < 0 || header.Number.Cmp(limit) >= 0 {
+ return nil
+ }
+ // Depending whether we support or oppose the fork, validate the extra-data contents
+ if config.DAOForkSupport {
+ if bytes.Compare(header.Extra, params.DAOForkBlockExtra) != 0 {
+ return ValidationError("DAO pro-fork bad block extra-data: 0x%x", header.Extra)
+ }
+ } else {
+ if bytes.Compare(header.Extra, params.DAOForkBlockExtra) == 0 {
+ return ValidationError("DAO no-fork bad block extra-data: 0x%x", header.Extra)
+ }
+ }
+ // All ok, header has the same extra-data we expect
+ return nil
+}
+
+// ApplyDAOHardFork modifies the state database according to the DAO hard-fork
+// rules, transferring all balances of a set of DAO accounts to a single refund
+// contract.
+func ApplyDAOHardFork(statedb *state.StateDB) {
+ // Retrieve the contract to refund balances into
+ refund := statedb.GetOrNewStateObject(params.DAORefundContract)
+
+ // Move every DAO account and extra-balance account funds into the refund contract
+ for _, addr := range params.DAODrainList {
+ if account := statedb.GetStateObject(addr); account != nil {
+ refund.AddBalance(account.Balance())
+ account.SetBalance(new(big.Int))
+ }
+ }
+}
diff --git a/core/dao_test.go b/core/dao_test.go
new file mode 100644
index 000000000..0830b1231
--- /dev/null
+++ b/core/dao_test.go
@@ -0,0 +1,132 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package core
+
+import (
+ "math/big"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/ethdb"
+ "github.com/ethereum/go-ethereum/event"
+ "github.com/ethereum/go-ethereum/params"
+)
+
+// Tests that DAO-fork enabled clients can properly filter out fork-commencing
+// blocks based on their extradata fields.
+func TestDAOForkRangeExtradata(t *testing.T) {
+ forkBlock := big.NewInt(32)
+
+ // Generate a common prefix for both pro-forkers and non-forkers
+ db, _ := ethdb.NewMemDatabase()
+ genesis := WriteGenesisBlockForTesting(db)
+ prefix, _ := GenerateChain(nil, genesis, db, int(forkBlock.Int64()-1), func(i int, gen *BlockGen) {})
+
+ // Create the concurrent, conflicting two nodes
+ proDb, _ := ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(proDb)
+ proConf := &ChainConfig{HomesteadBlock: big.NewInt(0), DAOForkBlock: forkBlock, DAOForkSupport: true}
+ proBc, _ := NewBlockChain(proDb, proConf, new(FakePow), new(event.TypeMux))
+
+ conDb, _ := ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(conDb)
+ conConf := &ChainConfig{HomesteadBlock: big.NewInt(0), DAOForkBlock: forkBlock, DAOForkSupport: false}
+ conBc, _ := NewBlockChain(conDb, conConf, new(FakePow), new(event.TypeMux))
+
+ if _, err := proBc.InsertChain(prefix); err != nil {
+ t.Fatalf("pro-fork: failed to import chain prefix: %v", err)
+ }
+ if _, err := conBc.InsertChain(prefix); err != nil {
+ t.Fatalf("con-fork: failed to import chain prefix: %v", err)
+ }
+ // Try to expand both pro-fork and non-fork chains iteratively with other camp's blocks
+ for i := int64(0); i < params.DAOForkExtraRange.Int64(); i++ {
+ // Create a pro-fork block, and try to feed into the no-fork chain
+ db, _ = ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(db)
+ bc, _ := NewBlockChain(db, conConf, new(FakePow), new(event.TypeMux))
+
+ blocks := conBc.GetBlocksFromHash(conBc.CurrentBlock().Hash(), int(conBc.CurrentBlock().NumberU64()+1))
+ for j := 0; j < len(blocks)/2; j++ {
+ blocks[j], blocks[len(blocks)-1-j] = blocks[len(blocks)-1-j], blocks[j]
+ }
+ if _, err := bc.InsertChain(blocks); err != nil {
+ t.Fatalf("failed to import contra-fork chain for expansion: %v", err)
+ }
+ blocks, _ = GenerateChain(proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := conBc.InsertChain(blocks); err == nil {
+ t.Fatalf("contra-fork chain accepted pro-fork block: %v", blocks[0])
+ }
+ // Create a proper no-fork block for the contra-forker
+ blocks, _ = GenerateChain(conConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := conBc.InsertChain(blocks); err != nil {
+ t.Fatalf("contra-fork chain didn't accepted no-fork block: %v", err)
+ }
+ // Create a no-fork block, and try to feed into the pro-fork chain
+ db, _ = ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(db)
+ bc, _ = NewBlockChain(db, proConf, new(FakePow), new(event.TypeMux))
+
+ blocks = proBc.GetBlocksFromHash(proBc.CurrentBlock().Hash(), int(proBc.CurrentBlock().NumberU64()+1))
+ for j := 0; j < len(blocks)/2; j++ {
+ blocks[j], blocks[len(blocks)-1-j] = blocks[len(blocks)-1-j], blocks[j]
+ }
+ if _, err := bc.InsertChain(blocks); err != nil {
+ t.Fatalf("failed to import pro-fork chain for expansion: %v", err)
+ }
+ blocks, _ = GenerateChain(conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := proBc.InsertChain(blocks); err == nil {
+ t.Fatalf("pro-fork chain accepted contra-fork block: %v", blocks[0])
+ }
+ // Create a proper pro-fork block for the pro-forker
+ blocks, _ = GenerateChain(proConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := proBc.InsertChain(blocks); err != nil {
+ t.Fatalf("pro-fork chain didn't accepted pro-fork block: %v", err)
+ }
+ }
+ // Verify that contra-forkers accept pro-fork extra-datas after forking finishes
+ db, _ = ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(db)
+ bc, _ := NewBlockChain(db, conConf, new(FakePow), new(event.TypeMux))
+
+ blocks := conBc.GetBlocksFromHash(conBc.CurrentBlock().Hash(), int(conBc.CurrentBlock().NumberU64()+1))
+ for j := 0; j < len(blocks)/2; j++ {
+ blocks[j], blocks[len(blocks)-1-j] = blocks[len(blocks)-1-j], blocks[j]
+ }
+ if _, err := bc.InsertChain(blocks); err != nil {
+ t.Fatalf("failed to import contra-fork chain for expansion: %v", err)
+ }
+ blocks, _ = GenerateChain(proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := conBc.InsertChain(blocks); err != nil {
+ t.Fatalf("contra-fork chain didn't accept pro-fork block post-fork: %v", err)
+ }
+ // Verify that pro-forkers accept contra-fork extra-datas after forking finishes
+ db, _ = ethdb.NewMemDatabase()
+ WriteGenesisBlockForTesting(db)
+ bc, _ = NewBlockChain(db, proConf, new(FakePow), new(event.TypeMux))
+
+ blocks = proBc.GetBlocksFromHash(proBc.CurrentBlock().Hash(), int(proBc.CurrentBlock().NumberU64()+1))
+ for j := 0; j < len(blocks)/2; j++ {
+ blocks[j], blocks[len(blocks)-1-j] = blocks[len(blocks)-1-j], blocks[j]
+ }
+ if _, err := bc.InsertChain(blocks); err != nil {
+ t.Fatalf("failed to import pro-fork chain for expansion: %v", err)
+ }
+ blocks, _ = GenerateChain(conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {})
+ if _, err := proBc.InsertChain(blocks); err != nil {
+ t.Fatalf("pro-fork chain didn't accept contra-fork block post-fork: %v", err)
+ }
+}
diff --git a/core/database_util.go b/core/database_util.go
index 1529d7369..5f9afe6ba 100644
--- a/core/database_util.go
+++ b/core/database_util.go
@@ -204,7 +204,11 @@ func GetTd(db ethdb.Database, hash common.Hash, number uint64) *big.Int {
}
// GetBlock retrieves an entire block corresponding to the hash, assembling it
-// back from the stored header and body.
+// back from the stored header and body. If either the header or body could not
+// be retrieved nil is returned.
+//
+// Note, due to concurrent download of header and block body the header and thus
+// canonical hash can be stored in the database but the body data not (yet).
func GetBlock(db ethdb.Database, hash common.Hash, number uint64) *types.Block {
// Retrieve the block header and body contents
header := GetHeader(db, hash, number)
diff --git a/core/database_util_test.go b/core/database_util_test.go
index 6c19f78c8..280270ac8 100644
--- a/core/database_util_test.go
+++ b/core/database_util_test.go
@@ -561,7 +561,7 @@ func TestMipmapChain(t *testing.T) {
defer db.Close()
genesis := WriteGenesisBlockForTesting(db, GenesisAccount{addr, big.NewInt(1000000)})
- chain, receipts := GenerateChain(genesis, db, 1010, func(i int, gen *BlockGen) {
+ chain, receipts := GenerateChain(nil, genesis, db, 1010, func(i int, gen *BlockGen) {
var receipts types.Receipts
switch i {
case 1:
diff --git a/core/headerchain.go b/core/headerchain.go
index f856333a0..0f9dd7208 100644
--- a/core/headerchain.go
+++ b/core/headerchain.go
@@ -151,6 +151,14 @@ func (hc *HeaderChain) WriteHeader(header *types.Header) (status WriteStatus, er
localTd := hc.GetTd(hc.currentHeaderHash, hc.currentHeader.Number.Uint64())
externTd := new(big.Int).Add(header.Difficulty, ptd)
+ // Irrelevant of the canonical status, write the td and header to the database
+ if err := hc.WriteTd(hash, number, externTd); err != nil {
+ glog.Fatalf("failed to write header total difficulty: %v", err)
+ }
+ if err := WriteHeader(hc.chainDb, header); err != nil {
+ glog.Fatalf("failed to write header contents: %v", err)
+ }
+
// If the total difficulty is higher than our known, add it to the canonical chain
// Second clause in the if statement reduces the vulnerability to selfish mining.
// Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf
@@ -176,6 +184,7 @@ func (hc *HeaderChain) WriteHeader(header *types.Header) (status WriteStatus, er
headNumber = headHeader.Number.Uint64() - 1
headHeader = hc.GetHeader(headHash, headNumber)
}
+
// Extend the canonical chain with the new header
if err := WriteCanonicalHash(hc.chainDb, hash, number); err != nil {
glog.Fatalf("failed to insert header number: %v", err)
@@ -183,19 +192,14 @@ func (hc *HeaderChain) WriteHeader(header *types.Header) (status WriteStatus, er
if err := WriteHeadHeaderHash(hc.chainDb, hash); err != nil {
glog.Fatalf("failed to insert head header hash: %v", err)
}
+
hc.currentHeaderHash, hc.currentHeader = hash, types.CopyHeader(header)
status = CanonStatTy
} else {
status = SideStatTy
}
- // Irrelevant of the canonical status, write the header itself to the database
- if err := hc.WriteTd(hash, number, externTd); err != nil {
- glog.Fatalf("failed to write header total difficulty: %v", err)
- }
- if err := WriteHeader(hc.chainDb, header); err != nil {
- glog.Fatalf("failed to write header contents: %v", err)
- }
+
hc.headerCache.Add(hash, header)
hc.numberCache.Add(hash, number)
diff --git a/core/state_processor.go b/core/state_processor.go
index 95b3057bb..fd8e9762e 100644
--- a/core/state_processor.go
+++ b/core/state_processor.go
@@ -65,7 +65,11 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg
allLogs vm.Logs
gp = new(GasPool).AddGas(block.GasLimit())
)
-
+ // Mutate the the block and state according to any hard-fork specs
+ if p.config.DAOForkSupport && p.config.DAOForkBlock != nil && p.config.DAOForkBlock.Cmp(block.Number()) == 0 {
+ ApplyDAOHardFork(statedb)
+ }
+ // Iterate over and process the individual transactions
for i, tx := range block.Transactions() {
statedb.StartRecord(tx.Hash(), block.Hash(), i)
receipt, logs, _, err := ApplyTransaction(p.config, p.bc, gp, statedb, header, tx, totalUsedGas, cfg)
diff --git a/core/tx_list.go b/core/tx_list.go
new file mode 100644
index 000000000..c3ddf3148
--- /dev/null
+++ b/core/tx_list.go
@@ -0,0 +1,342 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package core
+
+import (
+ "container/heap"
+ "math"
+ "math/big"
+ "sort"
+
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+// nonceHeap is a heap.Interface implementation over 64bit unsigned integers for
+// retrieving sorted transactions from the possibly gapped future queue.
+type nonceHeap []uint64
+
+func (h nonceHeap) Len() int { return len(h) }
+func (h nonceHeap) Less(i, j int) bool { return h[i] < h[j] }
+func (h nonceHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
+
+func (h *nonceHeap) Push(x interface{}) {
+ *h = append(*h, x.(uint64))
+}
+
+func (h *nonceHeap) Pop() interface{} {
+ old := *h
+ n := len(old)
+ x := old[n-1]
+ *h = old[0 : n-1]
+ return x
+}
+
+// txSortedMap is a nonce->transaction hash map with a heap based index to allow
+// iterating over the contents in a nonce-incrementing way.
+type txSortedMap struct {
+ items map[uint64]*types.Transaction // Hash map storing the transaction data
+ index *nonceHeap // Heap of nonces of all the stored transactions (non-strict mode)
+ cache types.Transactions // Cache of the transactions already sorted
+}
+
+// newTxSortedMap creates a new sorted transaction map.
+func newTxSortedMap() *txSortedMap {
+ return &txSortedMap{
+ items: make(map[uint64]*types.Transaction),
+ index: &nonceHeap{},
+ }
+}
+
+// Get retrieves the current transactions associated with the given nonce.
+func (m *txSortedMap) Get(nonce uint64) *types.Transaction {
+ return m.items[nonce]
+}
+
+// Put inserts a new transaction into the map, also updating the map's nonce
+// index. If a transaction already exists with the same nonce, it's overwritten.
+func (m *txSortedMap) Put(tx *types.Transaction) {
+ nonce := tx.Nonce()
+ if m.items[nonce] == nil {
+ heap.Push(m.index, nonce)
+ }
+ m.items[nonce], m.cache = tx, nil
+}
+
+// Forward removes all transactions from the map with a nonce lower than the
+// provided threshold. Every removed transaction is returned for any post-removal
+// maintenance.
+func (m *txSortedMap) Forward(threshold uint64) types.Transactions {
+ var removed types.Transactions
+
+ // Pop off heap items until the threshold is reached
+ for m.index.Len() > 0 && (*m.index)[0] < threshold {
+ nonce := heap.Pop(m.index).(uint64)
+ removed = append(removed, m.items[nonce])
+ delete(m.items, nonce)
+ }
+ // If we had a cached order, shift the front
+ if m.cache != nil {
+ m.cache = m.cache[len(removed):]
+ }
+ return removed
+}
+
+// Filter iterates over the list of transactions and removes all of them for which
+// the specified function evaluates to true.
+func (m *txSortedMap) Filter(filter func(*types.Transaction) bool) types.Transactions {
+ var removed types.Transactions
+
+ // Collect all the transactions to filter out
+ for nonce, tx := range m.items {
+ if filter(tx) {
+ removed = append(removed, tx)
+ delete(m.items, nonce)
+ }
+ }
+ // If transactions were removed, the heap and cache are ruined
+ if len(removed) > 0 {
+ *m.index = make([]uint64, 0, len(m.items))
+ for nonce, _ := range m.items {
+ *m.index = append(*m.index, nonce)
+ }
+ heap.Init(m.index)
+
+ m.cache = nil
+ }
+ return removed
+}
+
+// Cap places a hard limit on the number of items, returning all transactions
+// exceeding that limit.
+func (m *txSortedMap) Cap(threshold int) types.Transactions {
+ // Short circuit if the number of items is under the limit
+ if len(m.items) <= threshold {
+ return nil
+ }
+ // Otherwise gather and drop the highest nonce'd transactions
+ var drops types.Transactions
+
+ sort.Sort(*m.index)
+ for size := len(m.items); size > threshold; size-- {
+ drops = append(drops, m.items[(*m.index)[size-1]])
+ delete(m.items, (*m.index)[size-1])
+ }
+ *m.index = (*m.index)[:threshold]
+ heap.Init(m.index)
+
+ // If we had a cache, shift the back
+ if m.cache != nil {
+ m.cache = m.cache[:len(m.cache)-len(drops)]
+ }
+ return drops
+}
+
+// Remove deletes a transaction from the maintained map, returning whether the
+// transaction was found.
+func (m *txSortedMap) Remove(nonce uint64) bool {
+ // Short circuit if no transaction is present
+ _, ok := m.items[nonce]
+ if !ok {
+ return false
+ }
+ // Otherwise delete the transaction and fix the heap index
+ for i := 0; i < m.index.Len(); i++ {
+ if (*m.index)[i] == nonce {
+ heap.Remove(m.index, i)
+ break
+ }
+ }
+ delete(m.items, nonce)
+ m.cache = nil
+
+ return true
+}
+
+// Ready retrieves a sequentially increasing list of transactions starting at the
+// provided nonce that is ready for processing. The returned transactions will be
+// removed from the list.
+//
+// Note, all transactions with nonces lower than start will also be returned to
+// prevent getting into and invalid state. This is not something that should ever
+// happen but better to be self correcting than failing!
+func (m *txSortedMap) Ready(start uint64) types.Transactions {
+ // Short circuit if no transactions are available
+ if m.index.Len() == 0 || (*m.index)[0] > start {
+ return nil
+ }
+ // Otherwise start accumulating incremental transactions
+ var ready types.Transactions
+ for next := (*m.index)[0]; m.index.Len() > 0 && (*m.index)[0] == next; next++ {
+ ready = append(ready, m.items[next])
+ delete(m.items, next)
+ heap.Pop(m.index)
+ }
+ m.cache = nil
+
+ return ready
+}
+
+// Len returns the length of the transaction map.
+func (m *txSortedMap) Len() int {
+ return len(m.items)
+}
+
+// Flatten creates a nonce-sorted slice of transactions based on the loosely
+// sorted internal representation. The result of the sorting is cached in case
+// it's requested again before any modifications are made to the contents.
+func (m *txSortedMap) Flatten() types.Transactions {
+ // If the sorting was not cached yet, create and cache it
+ if m.cache == nil {
+ m.cache = make(types.Transactions, 0, len(m.items))
+ for _, tx := range m.items {
+ m.cache = append(m.cache, tx)
+ }
+ sort.Sort(types.TxByNonce(m.cache))
+ }
+ // Copy the cache to prevent accidental modifications
+ txs := make(types.Transactions, len(m.cache))
+ copy(txs, m.cache)
+ return txs
+}
+
+// txList is a "list" of transactions belonging to an account, sorted by account
+// nonce. The same type can be used both for storing contiguous transactions for
+// the executable/pending queue; and for storing gapped transactions for the non-
+// executable/future queue, with minor behavoiral changes.
+type txList struct {
+ strict bool // Whether nonces are strictly continuous or not
+ txs *txSortedMap // Heap indexed sorted hash map of the transactions
+ costcap *big.Int // Price of the highest costing transaction (reset only if exceeds balance)
+}
+
+// newTxList create a new transaction list for maintaining nonce-indexable fast,
+// gapped, sortable transaction lists.
+func newTxList(strict bool) *txList {
+ return &txList{
+ strict: strict,
+ txs: newTxSortedMap(),
+ costcap: new(big.Int),
+ }
+}
+
+// Add tries to insert a new transaction into the list, returning whether the
+// transaction was accepted, and if yes, any previous transaction it replaced.
+//
+// If the new transaction is accepted into the list, the lists' cost threshold
+// is also potentially updated.
+func (l *txList) Add(tx *types.Transaction) (bool, *types.Transaction) {
+ // If there's an older better transaction, abort
+ old := l.txs.Get(tx.Nonce())
+ if old != nil && old.GasPrice().Cmp(tx.GasPrice()) >= 0 {
+ return false, nil
+ }
+ // Otherwise overwrite the old transaction with the current one
+ l.txs.Put(tx)
+ if cost := tx.Cost(); l.costcap.Cmp(cost) < 0 {
+ l.costcap = cost
+ }
+ return true, old
+}
+
+// Forward removes all transactions from the list with a nonce lower than the
+// provided threshold. Every removed transaction is returned for any post-removal
+// maintenance.
+func (l *txList) Forward(threshold uint64) types.Transactions {
+ return l.txs.Forward(threshold)
+}
+
+// Filter removes all transactions from the list with a cost higher than the
+// provided threshold. Every removed transaction is returned for any post-removal
+// maintenance. Strict-mode invalidated transactions are also returned.
+//
+// This method uses the cached costcap to quickly decide if there's even a point
+// in calculating all the costs or if the balance covers all. If the threshold is
+// lower than the costcap, the costcap will be reset to a new high after removing
+// expensive the too transactions.
+func (l *txList) Filter(threshold *big.Int) (types.Transactions, types.Transactions) {
+ // If all transactions are below the threshold, short circuit
+ if l.costcap.Cmp(threshold) <= 0 {
+ return nil, nil
+ }
+ l.costcap = new(big.Int).Set(threshold) // Lower the cap to the threshold
+
+ // Filter out all the transactions above the account's funds
+ removed := l.txs.Filter(func(tx *types.Transaction) bool { return tx.Cost().Cmp(threshold) > 0 })
+
+ // If the list was strict, filter anything above the lowest nonce
+ var invalids types.Transactions
+ if l.strict && len(removed) > 0 {
+ lowest := uint64(math.MaxUint64)
+ for _, tx := range removed {
+ if nonce := tx.Nonce(); lowest > nonce {
+ lowest = nonce
+ }
+ }
+ invalids = l.txs.Filter(func(tx *types.Transaction) bool { return tx.Nonce() > lowest })
+ }
+ return removed, invalids
+}
+
+// Cap places a hard limit on the number of items, returning all transactions
+// exceeding that limit.
+func (l *txList) Cap(threshold int) types.Transactions {
+ return l.txs.Cap(threshold)
+}
+
+// Remove deletes a transaction from the maintained list, returning whether the
+// transaction was found, and also returning any transaction invalidated due to
+// the deletion (strict mode only).
+func (l *txList) Remove(tx *types.Transaction) (bool, types.Transactions) {
+ // Remove the transaction from the set
+ nonce := tx.Nonce()
+ if removed := l.txs.Remove(nonce); !removed {
+ return false, nil
+ }
+ // In strict mode, filter out non-executable transactions
+ if l.strict {
+ return true, l.txs.Filter(func(tx *types.Transaction) bool { return tx.Nonce() > nonce })
+ }
+ return true, nil
+}
+
+// Ready retrieves a sequentially increasing list of transactions starting at the
+// provided nonce that is ready for processing. The returned transactions will be
+// removed from the list.
+//
+// Note, all transactions with nonces lower than start will also be returned to
+// prevent getting into and invalid state. This is not something that should ever
+// happen but better to be self correcting than failing!
+func (l *txList) Ready(start uint64) types.Transactions {
+ return l.txs.Ready(start)
+}
+
+// Len returns the length of the transaction list.
+func (l *txList) Len() int {
+ return l.txs.Len()
+}
+
+// Empty returns whether the list of transactions is empty or not.
+func (l *txList) Empty() bool {
+ return l.Len() == 0
+}
+
+// Flatten creates a nonce-sorted slice of transactions based on the loosely
+// sorted internal representation. The result of the sorting is cached in case
+// it's requested again before any modifications are made to the contents.
+func (l *txList) Flatten() types.Transactions {
+ return l.txs.Flatten()
+}
diff --git a/core/tx_list_test.go b/core/tx_list_test.go
new file mode 100644
index 000000000..92b211937
--- /dev/null
+++ b/core/tx_list_test.go
@@ -0,0 +1,52 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package core
+
+import (
+ "math/big"
+ "math/rand"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+// Tests that transactions can be added to strict lists and list contents and
+// nonce boundaries are correctly maintained.
+func TestStrictTxListAdd(t *testing.T) {
+ // Generate a list of transactions to insert
+ key, _ := crypto.GenerateKey()
+
+ txs := make(types.Transactions, 1024)
+ for i := 0; i < len(txs); i++ {
+ txs[i] = transaction(uint64(i), new(big.Int), key)
+ }
+ // Insert the transactions in a random order
+ list := newTxList(true)
+ for _, v := range rand.Perm(len(txs)) {
+ list.Add(txs[v])
+ }
+ // Verify internal state
+ if len(list.txs.items) != len(txs) {
+ t.Errorf("transaction count mismatch: have %d, want %d", len(list.txs.items), len(txs))
+ }
+ for i, tx := range txs {
+ if list.txs.items[tx.Nonce()] != tx {
+ t.Errorf("item %d: transaction mismatch: have %v, want %v", i, list.txs.items[tx.Nonce()], tx)
+ }
+ }
+}
diff --git a/core/tx_pool.go b/core/tx_pool.go
index 596356377..f8b11a7ce 100644
--- a/core/tx_pool.go
+++ b/core/tx_pool.go
@@ -45,8 +45,11 @@ var (
ErrNegativeValue = errors.New("Negative value")
)
-const (
- maxQueued = 64 // max limit of queued txs per address
+var (
+ maxQueuedPerAccount = uint64(64) // Max limit of queued transactions per address
+ maxQueuedInTotal = uint64(65536) // Max limit of queued transactions from all accounts
+ maxQueuedLifetime = 3 * time.Hour // Max amount of time transactions from idle accounts are queued
+ evictionInterval = time.Minute // Time interval to check for evictable transactions
)
type stateFn func() (*state.StateDB, error)
@@ -68,10 +71,14 @@ type TxPool struct {
events event.Subscription
localTx *txSet
mu sync.RWMutex
- pending map[common.Hash]*types.Transaction // processable transactions
- queue map[common.Address]map[common.Hash]*types.Transaction
- wg sync.WaitGroup // for shutdown sync
+ pending map[common.Address]*txList // All currently processable transactions
+ queue map[common.Address]*txList // Queued but non-processable transactions
+ all map[common.Hash]*types.Transaction // All transactions to allow lookups
+ beats map[common.Address]time.Time // Last heartbeat from each known account
+
+ wg sync.WaitGroup // for shutdown sync
+ quit chan struct{}
homestead bool
}
@@ -79,8 +86,10 @@ type TxPool struct {
func NewTxPool(config *ChainConfig, eventMux *event.TypeMux, currentStateFn stateFn, gasLimitFn func() *big.Int) *TxPool {
pool := &TxPool{
config: config,
- pending: make(map[common.Hash]*types.Transaction),
- queue: make(map[common.Address]map[common.Hash]*types.Transaction),
+ pending: make(map[common.Address]*txList),
+ queue: make(map[common.Address]*txList),
+ all: make(map[common.Hash]*types.Transaction),
+ beats: make(map[common.Address]time.Time),
eventMux: eventMux,
currentState: currentStateFn,
gasLimit: gasLimitFn,
@@ -88,10 +97,12 @@ func NewTxPool(config *ChainConfig, eventMux *event.TypeMux, currentStateFn stat
pendingState: nil,
localTx: newTxSet(),
events: eventMux.Subscribe(ChainHeadEvent{}, GasPriceChanged{}, RemovedTransactionEvent{}),
+ quit: make(chan struct{}),
}
- pool.wg.Add(1)
+ pool.wg.Add(2)
go pool.eventLoop()
+ go pool.expirationLoop()
return pool
}
@@ -117,7 +128,7 @@ func (pool *TxPool) eventLoop() {
pool.minGasPrice = ev.Price
pool.mu.Unlock()
case RemovedTransactionEvent:
- pool.AddTransactions(ev.Txs)
+ pool.AddBatch(ev.Txs)
}
}
}
@@ -125,12 +136,12 @@ func (pool *TxPool) eventLoop() {
func (pool *TxPool) resetState() {
currentState, err := pool.currentState()
if err != nil {
- glog.V(logger.Info).Infoln("failed to get current state: %v", err)
+ glog.V(logger.Error).Infof("Failed to get current state: %v", err)
return
}
managedState := state.ManageState(currentState)
if err != nil {
- glog.V(logger.Info).Infoln("failed to get managed state: %v", err)
+ glog.V(logger.Error).Infof("Failed to get managed state: %v", err)
return
}
pool.pendingState = managedState
@@ -139,26 +150,21 @@ func (pool *TxPool) resetState() {
// any transactions that have been included in the block or
// have been invalidated because of another transaction (e.g.
// higher gas price)
- pool.validatePool()
-
- // Loop over the pending transactions and base the nonce of the new
- // pending transaction set.
- for _, tx := range pool.pending {
- if addr, err := tx.From(); err == nil {
- // Set the nonce. Transaction nonce can never be lower
- // than the state nonce; validatePool took care of that.
- if pool.pendingState.GetNonce(addr) <= tx.Nonce() {
- pool.pendingState.SetNonce(addr, tx.Nonce()+1)
- }
- }
+ pool.demoteUnexecutables()
+
+ // Update all accounts to the latest known pending nonce
+ for addr, list := range pool.pending {
+ txs := list.Flatten() // Heavy but will be cached and is needed by the miner anyway
+ pool.pendingState.SetNonce(addr, txs[len(txs)-1].Nonce()+1)
}
// Check the queue and move transactions over to the pending if possible
// or remove those that have become invalid
- pool.checkQueue()
+ pool.promoteExecutables()
}
func (pool *TxPool) Stop() {
pool.events.Unsubscribe()
+ close(pool.quit)
pool.wg.Wait()
glog.V(logger.Info).Infoln("Transaction pool stopped")
}
@@ -170,47 +176,58 @@ func (pool *TxPool) State() *state.ManagedState {
return pool.pendingState
}
+// Stats retrieves the current pool stats, namely the number of pending and the
+// number of queued (non-executable) transactions.
func (pool *TxPool) Stats() (pending int, queued int) {
pool.mu.RLock()
defer pool.mu.RUnlock()
- pending = len(pool.pending)
- for _, txs := range pool.queue {
- queued += len(txs)
+ for _, list := range pool.pending {
+ pending += list.Len()
+ }
+ for _, list := range pool.queue {
+ queued += list.Len()
}
return
}
// Content retrieves the data content of the transaction pool, returning all the
-// pending as well as queued transactions, grouped by account and nonce.
-func (pool *TxPool) Content() (map[common.Address]map[uint64][]*types.Transaction, map[common.Address]map[uint64][]*types.Transaction) {
+// pending as well as queued transactions, grouped by account and sorted by nonce.
+func (pool *TxPool) Content() (map[common.Address]types.Transactions, map[common.Address]types.Transactions) {
pool.mu.RLock()
defer pool.mu.RUnlock()
- // Retrieve all the pending transactions and sort by account and by nonce
- pending := make(map[common.Address]map[uint64][]*types.Transaction)
- for _, tx := range pool.pending {
- account, _ := tx.From()
-
- owned, ok := pending[account]
- if !ok {
- owned = make(map[uint64][]*types.Transaction)
- pending[account] = owned
- }
- owned[tx.Nonce()] = append(owned[tx.Nonce()], tx)
- }
- // Retrieve all the queued transactions and sort by account and by nonce
- queued := make(map[common.Address]map[uint64][]*types.Transaction)
- for account, txs := range pool.queue {
- owned := make(map[uint64][]*types.Transaction)
- for _, tx := range txs {
- owned[tx.Nonce()] = append(owned[tx.Nonce()], tx)
- }
- queued[account] = owned
+ pending := make(map[common.Address]types.Transactions)
+ for addr, list := range pool.pending {
+ pending[addr] = list.Flatten()
+ }
+ queued := make(map[common.Address]types.Transactions)
+ for addr, list := range pool.queue {
+ queued[addr] = list.Flatten()
}
return pending, queued
}
+// Pending retrieves all currently processable transactions, groupped by origin
+// account and sorted by nonce. The returned transaction set is a copy and can be
+// freely modified by calling code.
+func (pool *TxPool) Pending() map[common.Address]types.Transactions {
+ pool.mu.Lock()
+ defer pool.mu.Unlock()
+
+ // check queue first
+ pool.promoteExecutables()
+
+ // invalidate any txs
+ pool.demoteUnexecutables()
+
+ pending := make(map[common.Address]types.Transactions)
+ for addr, list := range pool.pending {
+ pending[addr] = list.Flatten()
+ }
+ return pending
+}
+
// SetLocal marks a transaction as local, skipping gas price
// check against local miner minimum in the future
func (pool *TxPool) SetLocal(tx *types.Transaction) {
@@ -276,312 +293,348 @@ func (pool *TxPool) validateTx(tx *types.Transaction) error {
return nil
}
-// validate and queue transactions.
-func (self *TxPool) add(tx *types.Transaction) error {
+// add validates a transaction and inserts it into the non-executable queue for
+// later pending promotion and execution.
+func (pool *TxPool) add(tx *types.Transaction) error {
+ // If the transaction is alreayd known, discard it
hash := tx.Hash()
-
- if self.pending[hash] != nil {
- return fmt.Errorf("Known transaction (%x)", hash[:4])
+ if pool.all[hash] != nil {
+ return fmt.Errorf("Known transaction: %x", hash[:4])
}
- err := self.validateTx(tx)
- if err != nil {
+ // Otherwise ensure basic validation passes and queue it up
+ if err := pool.validateTx(tx); err != nil {
return err
}
- self.queueTx(hash, tx)
+ pool.enqueueTx(hash, tx)
+ // Print a log message if low enough level is set
if glog.V(logger.Debug) {
- var toname string
+ rcpt := "[NEW_CONTRACT]"
if to := tx.To(); to != nil {
- toname = common.Bytes2Hex(to[:4])
- } else {
- toname = "[NEW_CONTRACT]"
+ rcpt = common.Bytes2Hex(to[:4])
}
- // we can ignore the error here because From is
- // verified in ValidateTransaction.
- f, _ := tx.From()
- from := common.Bytes2Hex(f[:4])
- glog.Infof("(t) %x => %s (%v) %x\n", from, toname, tx.Value, hash)
+ from, _ := tx.From() // from already verified during tx validation
+ glog.Infof("(t) 0x%x => %s (%v) %x\n", from[:4], rcpt, tx.Value, hash)
}
-
return nil
}
-// queueTx will queue an unknown transaction
-func (self *TxPool) queueTx(hash common.Hash, tx *types.Transaction) {
+// enqueueTx inserts a new transaction into the non-executable transaction queue.
+//
+// Note, this method assumes the pool lock is held!
+func (pool *TxPool) enqueueTx(hash common.Hash, tx *types.Transaction) {
+ // Try to insert the transaction into the future queue
from, _ := tx.From() // already validated
- if self.queue[from] == nil {
- self.queue[from] = make(map[common.Hash]*types.Transaction)
+ if pool.queue[from] == nil {
+ pool.queue[from] = newTxList(false)
+ }
+ inserted, old := pool.queue[from].Add(tx)
+ if !inserted {
+ return // An older transaction was better, discard this
+ }
+ // Discard any previous transaction and mark this
+ if old != nil {
+ delete(pool.all, old.Hash())
}
- self.queue[from][hash] = tx
+ pool.all[hash] = tx
}
-// addTx will add a transaction to the pending (processable queue) list of transactions
-func (pool *TxPool) addTx(hash common.Hash, addr common.Address, tx *types.Transaction) {
- // init delayed since tx pool could have been started before any state sync
+// promoteTx adds a transaction to the pending (processable) list of transactions.
+//
+// Note, this method assumes the pool lock is held!
+func (pool *TxPool) promoteTx(addr common.Address, hash common.Hash, tx *types.Transaction) {
+ // Init delayed since tx pool could have been started before any state sync
if pool.pendingState == nil {
pool.resetState()
}
+ // Try to insert the transaction into the pending queue
+ if pool.pending[addr] == nil {
+ pool.pending[addr] = newTxList(true)
+ }
+ list := pool.pending[addr]
- if _, ok := pool.pending[hash]; !ok {
- pool.pending[hash] = tx
-
- // Increment the nonce on the pending state. This can only happen if
- // the nonce is +1 to the previous one.
- pool.pendingState.SetNonce(addr, tx.Nonce()+1)
- // Notify the subscribers. This event is posted in a goroutine
- // because it's possible that somewhere during the post "Remove transaction"
- // gets called which will then wait for the global tx pool lock and deadlock.
- go pool.eventMux.Post(TxPreEvent{tx})
+ inserted, old := list.Add(tx)
+ if !inserted {
+ // An older transaction was better, discard this
+ delete(pool.all, hash)
+ return
+ }
+ // Otherwise discard any previous transaction and mark this
+ if old != nil {
+ delete(pool.all, old.Hash())
}
+ pool.all[hash] = tx // Failsafe to work around direct pending inserts (tests)
+
+ // Set the potentially new pending nonce and notify any subsystems of the new tx
+ pool.beats[addr] = time.Now()
+ pool.pendingState.SetNonce(addr, tx.Nonce()+1)
+ go pool.eventMux.Post(TxPreEvent{tx})
}
// Add queues a single transaction in the pool if it is valid.
-func (self *TxPool) Add(tx *types.Transaction) error {
- self.mu.Lock()
- defer self.mu.Unlock()
+func (pool *TxPool) Add(tx *types.Transaction) error {
+ pool.mu.Lock()
+ defer pool.mu.Unlock()
- if err := self.add(tx); err != nil {
+ if err := pool.add(tx); err != nil {
return err
}
- self.checkQueue()
+ pool.promoteExecutables()
+
return nil
}
-// AddTransactions attempts to queue all valid transactions in txs.
-func (self *TxPool) AddTransactions(txs []*types.Transaction) {
- self.mu.Lock()
- defer self.mu.Unlock()
+// AddBatch attempts to queue a batch of transactions.
+func (pool *TxPool) AddBatch(txs []*types.Transaction) {
+ pool.mu.Lock()
+ defer pool.mu.Unlock()
for _, tx := range txs {
- if err := self.add(tx); err != nil {
+ if err := pool.add(tx); err != nil {
glog.V(logger.Debug).Infoln("tx error:", err)
- } else {
- h := tx.Hash()
- glog.V(logger.Debug).Infof("tx %x\n", h[:4])
}
}
-
- // check and validate the queue
- self.checkQueue()
+ pool.promoteExecutables()
}
-// GetTransaction returns a transaction if it is contained in the pool
+// Get returns a transaction if it is contained in the pool
// and nil otherwise.
-func (tp *TxPool) GetTransaction(hash common.Hash) *types.Transaction {
- tp.mu.RLock()
- defer tp.mu.RUnlock()
-
- // check the txs first
- if tx, ok := tp.pending[hash]; ok {
- return tx
- }
- // check queue
- for _, txs := range tp.queue {
- if tx, ok := txs[hash]; ok {
- return tx
- }
- }
- return nil
-}
+func (pool *TxPool) Get(hash common.Hash) *types.Transaction {
+ pool.mu.RLock()
+ defer pool.mu.RUnlock()
-// GetTransactions returns all currently processable transactions.
-// The returned slice may be modified by the caller.
-func (self *TxPool) GetTransactions() (txs types.Transactions) {
- self.mu.Lock()
- defer self.mu.Unlock()
+ return pool.all[hash]
+}
- // check queue first
- self.checkQueue()
- // invalidate any txs
- self.validatePool()
+// Remove removes the transaction with the given hash from the pool.
+func (pool *TxPool) Remove(hash common.Hash) {
+ pool.mu.Lock()
+ defer pool.mu.Unlock()
- txs = make(types.Transactions, len(self.pending))
- i := 0
- for _, tx := range self.pending {
- txs[i] = tx
- i++
- }
- return txs
+ pool.removeTx(hash)
}
-// GetQueuedTransactions returns all non-processable transactions.
-func (self *TxPool) GetQueuedTransactions() types.Transactions {
- self.mu.RLock()
- defer self.mu.RUnlock()
+// RemoveBatch removes all given transactions from the pool.
+func (pool *TxPool) RemoveBatch(txs types.Transactions) {
+ pool.mu.Lock()
+ defer pool.mu.Unlock()
- var ret types.Transactions
- for _, txs := range self.queue {
- for _, tx := range txs {
- ret = append(ret, tx)
- }
+ for _, tx := range txs {
+ pool.removeTx(tx.Hash())
}
- sort.Sort(types.TxByNonce(ret))
- return ret
}
-// RemoveTransactions removes all given transactions from the pool.
-func (self *TxPool) RemoveTransactions(txs types.Transactions) {
- self.mu.Lock()
- defer self.mu.Unlock()
- for _, tx := range txs {
- self.removeTx(tx.Hash())
+// removeTx removes a single transaction from the queue, moving all subsequent
+// transactions back to the future queue.
+func (pool *TxPool) removeTx(hash common.Hash) {
+ // Fetch the transaction we wish to delete
+ tx, ok := pool.all[hash]
+ if !ok {
+ return
}
-}
+ addr, _ := tx.From() // already validated during insertion
-// RemoveTx removes the transaction with the given hash from the pool.
-func (pool *TxPool) RemoveTx(hash common.Hash) {
- pool.mu.Lock()
- defer pool.mu.Unlock()
- pool.removeTx(hash)
-}
+ // Remove it from the list of known transactions
+ delete(pool.all, hash)
-func (pool *TxPool) removeTx(hash common.Hash) {
- // delete from pending pool
- delete(pool.pending, hash)
- // delete from queue
- for address, txs := range pool.queue {
- if _, ok := txs[hash]; ok {
- if len(txs) == 1 {
- // if only one tx, remove entire address entry.
- delete(pool.queue, address)
+ // Remove the transaction from the pending lists and reset the account nonce
+ if pending := pool.pending[addr]; pending != nil {
+ if removed, invalids := pending.Remove(tx); removed {
+ // If no more transactions are left, remove the list
+ if pending.Empty() {
+ delete(pool.pending, addr)
+ delete(pool.beats, addr)
} else {
- delete(txs, hash)
+ // Otherwise postpone any invalidated transactions
+ for _, tx := range invalids {
+ pool.enqueueTx(tx.Hash(), tx)
+ }
+ }
+ // Update the account nonce if needed
+ if nonce := tx.Nonce(); pool.pendingState.GetNonce(addr) > nonce {
+ pool.pendingState.SetNonce(addr, tx.Nonce())
}
- break
+ }
+ }
+ // Transaction is in the future queue
+ if future := pool.queue[addr]; future != nil {
+ future.Remove(tx)
+ if future.Empty() {
+ delete(pool.queue, addr)
}
}
}
-// checkQueue moves transactions that have become processable to main pool.
-func (pool *TxPool) checkQueue() {
- // init delayed since tx pool could have been started before any state sync
+// promoteExecutables moves transactions that have become processable from the
+// future queue to the set of pending transactions. During this process, all
+// invalidated transactions (low nonce, low balance) are deleted.
+func (pool *TxPool) promoteExecutables() {
+ // Init delayed since tx pool could have been started before any state sync
if pool.pendingState == nil {
pool.resetState()
}
+ // Retrieve the current state to allow nonce and balance checking
+ state, err := pool.currentState()
+ if err != nil {
+ glog.Errorf("Could not get current state: %v", err)
+ return
+ }
+ // Iterate over all accounts and promote any executable transactions
+ queued := uint64(0)
- var promote txQueue
- for address, txs := range pool.queue {
- currentState, err := pool.currentState()
- if err != nil {
- glog.Errorf("could not get current state: %v", err)
- return
+ for addr, list := range pool.queue {
+ // Drop all transactions that are deemed too old (low nonce)
+ for _, tx := range list.Forward(state.GetNonce(addr)) {
+ if glog.V(logger.Core) {
+ glog.Infof("Removed old queued transaction: %v", tx)
+ }
+ delete(pool.all, tx.Hash())
}
- balance := currentState.GetBalance(address)
-
- var (
- guessedNonce = pool.pendingState.GetNonce(address) // nonce currently kept by the tx pool (pending state)
- trueNonce = currentState.GetNonce(address) // nonce known by the last state
- )
- promote = promote[:0]
- for hash, tx := range txs {
- // Drop processed or out of fund transactions
- if tx.Nonce() < trueNonce || balance.Cmp(tx.Cost()) < 0 {
- if glog.V(logger.Core) {
- glog.Infof("removed tx (%v) from pool queue: low tx nonce or out of funds\n", tx)
- }
- delete(txs, hash)
- continue
+ // Drop all transactions that are too costly (low balance)
+ drops, _ := list.Filter(state.GetBalance(addr))
+ for _, tx := range drops {
+ if glog.V(logger.Core) {
+ glog.Infof("Removed unpayable queued transaction: %v", tx)
}
- // Collect the remaining transactions for the next pass.
- promote = append(promote, txQueueEntry{hash, address, tx})
+ delete(pool.all, tx.Hash())
}
- // Find the next consecutive nonce range starting at the current account nonce,
- // pushing the guessed nonce forward if we add consecutive transactions.
- sort.Sort(promote)
- for i, entry := range promote {
- // If we reached a gap in the nonces, enforce transaction limit and stop
- if entry.Nonce() > guessedNonce {
- if len(promote)-i > maxQueued {
- if glog.V(logger.Debug) {
- glog.Infof("Queued tx limit exceeded for %s. Tx %s removed\n", common.PP(address[:]), common.PP(entry.hash[:]))
- }
- for _, drop := range promote[i+maxQueued:] {
- delete(txs, drop.hash)
- }
- }
- break
+ // Gather all executable transactions and promote them
+ for _, tx := range list.Ready(pool.pendingState.GetNonce(addr)) {
+ if glog.V(logger.Core) {
+ glog.Infof("Promoting queued transaction: %v", tx)
}
- // Otherwise promote the transaction and move the guess nonce if needed
- pool.addTx(entry.hash, address, entry.Transaction)
- delete(txs, entry.hash)
-
- if entry.Nonce() == guessedNonce {
- guessedNonce++
+ pool.promoteTx(addr, tx.Hash(), tx)
+ }
+ // Drop all transactions over the allowed limit
+ for _, tx := range list.Cap(int(maxQueuedPerAccount)) {
+ if glog.V(logger.Core) {
+ glog.Infof("Removed cap-exceeding queued transaction: %v", tx)
}
+ delete(pool.all, tx.Hash())
}
+ queued += uint64(list.Len())
+
// Delete the entire queue entry if it became empty.
- if len(txs) == 0 {
- delete(pool.queue, address)
+ if list.Empty() {
+ delete(pool.queue, addr)
+ }
+ }
+ // If we've queued more transactions than the hard limit, drop oldest ones
+ if queued > maxQueuedInTotal {
+ // Sort all accounts with queued transactions by heartbeat
+ addresses := make(addresssByHeartbeat, 0, len(pool.queue))
+ for addr, _ := range pool.queue {
+ addresses = append(addresses, addressByHeartbeat{addr, pool.beats[addr]})
+ }
+ sort.Sort(addresses)
+
+ // Drop transactions until the total is below the limit
+ for drop := queued - maxQueuedInTotal; drop > 0; {
+ addr := addresses[len(addresses)-1]
+ list := pool.queue[addr.address]
+
+ addresses = addresses[:len(addresses)-1]
+
+ // Drop all transactions if they are less than the overflow
+ if size := uint64(list.Len()); size <= drop {
+ for _, tx := range list.Flatten() {
+ pool.removeTx(tx.Hash())
+ }
+ drop -= size
+ continue
+ }
+ // Otherwise drop only last few transactions
+ txs := list.Flatten()
+ for i := len(txs) - 1; i >= 0 && drop > 0; i-- {
+ pool.removeTx(txs[i].Hash())
+ drop--
+ }
}
}
}
-// validatePool removes invalid and processed transactions from the main pool.
-// If a transaction is removed for being invalid (e.g. out of funds), all sub-
-// sequent (Still valid) transactions are moved back into the future queue. This
-// is important to prevent a drained account from DOSing the network with non
-// executable transactions.
-func (pool *TxPool) validatePool() {
+// demoteUnexecutables removes invalid and processed transactions from the pools
+// executable/pending queue and any subsequent transactions that become unexecutable
+// are moved back into the future queue.
+func (pool *TxPool) demoteUnexecutables() {
+ // Retrieve the current state to allow nonce and balance checking
state, err := pool.currentState()
if err != nil {
glog.V(logger.Info).Infoln("failed to get current state: %v", err)
return
}
- balanceCache := make(map[common.Address]*big.Int)
-
- // Clean up the pending pool, accumulating invalid nonces
- gaps := make(map[common.Address]uint64)
+ // Iterate over all accounts and demote any non-executable transactions
+ for addr, list := range pool.pending {
+ nonce := state.GetNonce(addr)
- for hash, tx := range pool.pending {
- sender, _ := tx.From() // err already checked
-
- // Perform light nonce and balance validation
- balance := balanceCache[sender]
- if balance == nil {
- balance = state.GetBalance(sender)
- balanceCache[sender] = balance
+ // Drop all transactions that are deemed too old (low nonce)
+ for _, tx := range list.Forward(nonce) {
+ if glog.V(logger.Core) {
+ glog.Infof("Removed old pending transaction: %v", tx)
+ }
+ delete(pool.all, tx.Hash())
}
- if past := state.GetNonce(sender) > tx.Nonce(); past || balance.Cmp(tx.Cost()) < 0 {
- // Remove an already past it invalidated transaction
+ // Drop all transactions that are too costly (low balance), and queue any invalids back for later
+ drops, invalids := list.Filter(state.GetBalance(addr))
+ for _, tx := range drops {
if glog.V(logger.Core) {
- glog.Infof("removed tx (%v) from pool: low tx nonce or out of funds\n", tx)
+ glog.Infof("Removed unpayable pending transaction: %v", tx)
}
- delete(pool.pending, hash)
-
- // Track the smallest invalid nonce to postpone subsequent transactions
- if !past {
- if prev, ok := gaps[sender]; !ok || tx.Nonce() < prev {
- gaps[sender] = tx.Nonce()
- }
+ delete(pool.all, tx.Hash())
+ }
+ for _, tx := range invalids {
+ if glog.V(logger.Core) {
+ glog.Infof("Demoting pending transaction: %v", tx)
}
+ pool.enqueueTx(tx.Hash(), tx)
+ }
+ // Delete the entire queue entry if it became empty.
+ if list.Empty() {
+ delete(pool.pending, addr)
+ delete(pool.beats, addr)
}
}
- // Move all transactions after a gap back to the future queue
- if len(gaps) > 0 {
- for hash, tx := range pool.pending {
- sender, _ := tx.From()
- if gap, ok := gaps[sender]; ok && tx.Nonce() >= gap {
- if glog.V(logger.Core) {
- glog.Infof("postponed tx (%v) due to introduced gap\n", tx)
+}
+
+// expirationLoop is a loop that periodically iterates over all accounts with
+// queued transactions and drop all that have been inactive for a prolonged amount
+// of time.
+func (pool *TxPool) expirationLoop() {
+ defer pool.wg.Done()
+
+ evict := time.NewTicker(evictionInterval)
+ defer evict.Stop()
+
+ for {
+ select {
+ case <-evict.C:
+ pool.mu.Lock()
+ for addr := range pool.queue {
+ if time.Since(pool.beats[addr]) > maxQueuedLifetime {
+ for _, tx := range pool.queue[addr].Flatten() {
+ pool.removeTx(tx.Hash())
+ }
}
- pool.queueTx(hash, tx)
- delete(pool.pending, hash)
}
+ pool.mu.Unlock()
+
+ case <-pool.quit:
+ return
}
}
}
-type txQueue []txQueueEntry
-
-type txQueueEntry struct {
- hash common.Hash
- addr common.Address
- *types.Transaction
+// addressByHeartbeat is an account address tagged with its last activity timestamp.
+type addressByHeartbeat struct {
+ address common.Address
+ heartbeat time.Time
}
-func (q txQueue) Len() int { return len(q) }
-func (q txQueue) Swap(i, j int) { q[i], q[j] = q[j], q[i] }
-func (q txQueue) Less(i, j int) bool { return q[i].Nonce() < q[j].Nonce() }
+type addresssByHeartbeat []addressByHeartbeat
+
+func (a addresssByHeartbeat) Len() int { return len(a) }
+func (a addresssByHeartbeat) Less(i, j int) bool { return a[i].heartbeat.Before(a[j].heartbeat) }
+func (a addresssByHeartbeat) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
// txSet represents a set of transaction hashes in which entries
// are automatically dropped after txSetDuration time
diff --git a/core/tx_pool_test.go b/core/tx_pool_test.go
index ed9bea75f..4bc5aed38 100644
--- a/core/tx_pool_test.go
+++ b/core/tx_pool_test.go
@@ -19,7 +19,9 @@ package core
import (
"crypto/ecdsa"
"math/big"
+ "math/rand"
"testing"
+ "time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
@@ -38,10 +40,10 @@ func setupTxPool() (*TxPool, *ecdsa.PrivateKey) {
db, _ := ethdb.NewMemDatabase()
statedb, _ := state.New(common.Hash{}, db)
- var m event.TypeMux
key, _ := crypto.GenerateKey()
- newPool := NewTxPool(testChainConfig(), &m, func() (*state.StateDB, error) { return statedb, nil }, func() *big.Int { return big.NewInt(1000000) })
+ newPool := NewTxPool(testChainConfig(), new(event.TypeMux), func() (*state.StateDB, error) { return statedb, nil }, func() *big.Int { return big.NewInt(1000000) })
newPool.resetState()
+
return newPool, key
}
@@ -91,9 +93,9 @@ func TestTransactionQueue(t *testing.T) {
from, _ := tx.From()
currentState, _ := pool.currentState()
currentState.AddBalance(from, big.NewInt(1000))
- pool.queueTx(tx.Hash(), tx)
+ pool.enqueueTx(tx.Hash(), tx)
- pool.checkQueue()
+ pool.promoteExecutables()
if len(pool.pending) != 1 {
t.Error("expected valid txs to be 1 is", len(pool.pending))
}
@@ -101,14 +103,14 @@ func TestTransactionQueue(t *testing.T) {
tx = transaction(1, big.NewInt(100), key)
from, _ = tx.From()
currentState.SetNonce(from, 2)
- pool.queueTx(tx.Hash(), tx)
- pool.checkQueue()
- if _, ok := pool.pending[tx.Hash()]; ok {
+ pool.enqueueTx(tx.Hash(), tx)
+ pool.promoteExecutables()
+ if _, ok := pool.pending[from].txs.items[tx.Nonce()]; ok {
t.Error("expected transaction to be in tx pool")
}
- if len(pool.queue[from]) > 0 {
- t.Error("expected transaction queue to be empty. is", len(pool.queue[from]))
+ if len(pool.queue) > 0 {
+ t.Error("expected transaction queue to be empty. is", len(pool.queue))
}
pool, key = setupTxPool()
@@ -118,17 +120,17 @@ func TestTransactionQueue(t *testing.T) {
from, _ = tx1.From()
currentState, _ = pool.currentState()
currentState.AddBalance(from, big.NewInt(1000))
- pool.queueTx(tx1.Hash(), tx1)
- pool.queueTx(tx2.Hash(), tx2)
- pool.queueTx(tx3.Hash(), tx3)
+ pool.enqueueTx(tx1.Hash(), tx1)
+ pool.enqueueTx(tx2.Hash(), tx2)
+ pool.enqueueTx(tx3.Hash(), tx3)
- pool.checkQueue()
+ pool.promoteExecutables()
if len(pool.pending) != 1 {
t.Error("expected tx pool to be 1, got", len(pool.pending))
}
- if len(pool.queue[from]) != 2 {
- t.Error("expected len(queue) == 2, got", len(pool.queue[from]))
+ if pool.queue[from].Len() != 2 {
+ t.Error("expected len(queue) == 2, got", pool.queue[from].Len())
}
}
@@ -138,24 +140,21 @@ func TestRemoveTx(t *testing.T) {
from, _ := tx.From()
currentState, _ := pool.currentState()
currentState.AddBalance(from, big.NewInt(1))
- pool.queueTx(tx.Hash(), tx)
- pool.addTx(tx.Hash(), from, tx)
+
+ pool.enqueueTx(tx.Hash(), tx)
+ pool.promoteTx(from, tx.Hash(), tx)
if len(pool.queue) != 1 {
t.Error("expected queue to be 1, got", len(pool.queue))
}
-
if len(pool.pending) != 1 {
- t.Error("expected txs to be 1, got", len(pool.pending))
+ t.Error("expected pending to be 1, got", len(pool.pending))
}
-
- pool.RemoveTx(tx.Hash())
-
+ pool.Remove(tx.Hash())
if len(pool.queue) > 0 {
t.Error("expected queue to be 0, got", len(pool.queue))
}
-
if len(pool.pending) > 0 {
- t.Error("expected txs to be 0, got", len(pool.pending))
+ t.Error("expected pending to be 0, got", len(pool.pending))
}
}
@@ -188,7 +187,7 @@ func TestTransactionChainFork(t *testing.T) {
if err := pool.add(tx); err != nil {
t.Error("didn't expect error", err)
}
- pool.RemoveTransactions([]*types.Transaction{tx})
+ pool.RemoveBatch([]*types.Transaction{tx})
// reset the pool's internal state
resetState()
@@ -210,18 +209,38 @@ func TestTransactionDoubleNonce(t *testing.T) {
}
resetState()
- tx := transaction(0, big.NewInt(100000), key)
- tx2 := transaction(0, big.NewInt(1000000), key)
- if err := pool.add(tx); err != nil {
+ tx1, _ := types.NewTransaction(0, common.Address{}, big.NewInt(100), big.NewInt(100000), big.NewInt(1), nil).SignECDSA(key)
+ tx2, _ := types.NewTransaction(0, common.Address{}, big.NewInt(100), big.NewInt(1000000), big.NewInt(2), nil).SignECDSA(key)
+ tx3, _ := types.NewTransaction(0, common.Address{}, big.NewInt(100), big.NewInt(1000000), big.NewInt(1), nil).SignECDSA(key)
+
+ // Add the first two transaction, ensure higher priced stays only
+ if err := pool.add(tx1); err != nil {
t.Error("didn't expect error", err)
}
if err := pool.add(tx2); err != nil {
t.Error("didn't expect error", err)
}
-
- pool.checkQueue()
- if len(pool.pending) != 2 {
- t.Error("expected 2 pending txs. Got", len(pool.pending))
+ pool.promoteExecutables()
+ if pool.pending[addr].Len() != 1 {
+ t.Error("expected 1 pending transactions, got", pool.pending[addr].Len())
+ }
+ if tx := pool.pending[addr].txs.items[0]; tx.Hash() != tx2.Hash() {
+ t.Errorf("transaction mismatch: have %x, want %x", tx.Hash(), tx2.Hash())
+ }
+ // Add the thid transaction and ensure it's not saved (smaller price)
+ if err := pool.add(tx3); err != nil {
+ t.Error("didn't expect error", err)
+ }
+ pool.promoteExecutables()
+ if pool.pending[addr].Len() != 1 {
+ t.Error("expected 1 pending transactions, got", pool.pending[addr].Len())
+ }
+ if tx := pool.pending[addr].txs.items[0]; tx.Hash() != tx2.Hash() {
+ t.Errorf("transaction mismatch: have %x, want %x", tx.Hash(), tx2.Hash())
+ }
+ // Ensure the total transaction count is correct
+ if len(pool.all) != 1 {
+ t.Error("expected 1 total transactions, got", len(pool.all))
}
}
@@ -237,8 +256,11 @@ func TestMissingNonce(t *testing.T) {
if len(pool.pending) != 0 {
t.Error("expected 0 pending transactions, got", len(pool.pending))
}
- if len(pool.queue[addr]) != 1 {
- t.Error("expected 1 queued transaction, got", len(pool.queue[addr]))
+ if pool.queue[addr].Len() != 1 {
+ t.Error("expected 1 queued transaction, got", pool.queue[addr].Len())
+ }
+ if len(pool.all) != 1 {
+ t.Error("expected 1 total transactions, got", len(pool.all))
}
}
@@ -270,8 +292,11 @@ func TestRemovedTxEvent(t *testing.T) {
currentState.AddBalance(from, big.NewInt(1000000000000))
pool.eventMux.Post(RemovedTransactionEvent{types.Transactions{tx}})
pool.eventMux.Post(ChainHeadEvent{nil})
- if len(pool.pending) != 1 {
- t.Error("expected 1 pending tx, got", len(pool.pending))
+ if pool.pending[from].Len() != 1 {
+ t.Error("expected 1 pending tx, got", pool.pending[from].Len())
+ }
+ if len(pool.all) != 1 {
+ t.Error("expected 1 total transactions, got", len(pool.all))
}
}
@@ -292,41 +317,50 @@ func TestTransactionDropping(t *testing.T) {
tx10 = transaction(10, big.NewInt(100), key)
tx11 = transaction(11, big.NewInt(200), key)
)
- pool.addTx(tx0.Hash(), account, tx0)
- pool.addTx(tx1.Hash(), account, tx1)
- pool.queueTx(tx10.Hash(), tx10)
- pool.queueTx(tx11.Hash(), tx11)
+ pool.promoteTx(account, tx0.Hash(), tx0)
+ pool.promoteTx(account, tx1.Hash(), tx1)
+ pool.enqueueTx(tx10.Hash(), tx10)
+ pool.enqueueTx(tx11.Hash(), tx11)
// Check that pre and post validations leave the pool as is
- if len(pool.pending) != 2 {
- t.Errorf("pending transaction mismatch: have %d, want %d", len(pool.pending), 2)
+ if pool.pending[account].Len() != 2 {
+ t.Errorf("pending transaction mismatch: have %d, want %d", pool.pending[account].Len(), 2)
}
- if len(pool.queue[account]) != 2 {
- t.Errorf("queued transaction mismatch: have %d, want %d", len(pool.queue), 2)
+ if pool.queue[account].Len() != 2 {
+ t.Errorf("queued transaction mismatch: have %d, want %d", pool.queue[account].Len(), 2)
+ }
+ if len(pool.all) != 4 {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), 4)
}
pool.resetState()
- if len(pool.pending) != 2 {
- t.Errorf("pending transaction mismatch: have %d, want %d", len(pool.pending), 2)
+ if pool.pending[account].Len() != 2 {
+ t.Errorf("pending transaction mismatch: have %d, want %d", pool.pending[account].Len(), 2)
+ }
+ if pool.queue[account].Len() != 2 {
+ t.Errorf("queued transaction mismatch: have %d, want %d", pool.queue[account].Len(), 2)
}
- if len(pool.queue[account]) != 2 {
- t.Errorf("queued transaction mismatch: have %d, want %d", len(pool.queue), 2)
+ if len(pool.all) != 4 {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), 4)
}
// Reduce the balance of the account, and check that invalidated transactions are dropped
state.AddBalance(account, big.NewInt(-750))
pool.resetState()
- if _, ok := pool.pending[tx0.Hash()]; !ok {
+ if _, ok := pool.pending[account].txs.items[tx0.Nonce()]; !ok {
t.Errorf("funded pending transaction missing: %v", tx0)
}
- if _, ok := pool.pending[tx1.Hash()]; ok {
+ if _, ok := pool.pending[account].txs.items[tx1.Nonce()]; ok {
t.Errorf("out-of-fund pending transaction present: %v", tx1)
}
- if _, ok := pool.queue[account][tx10.Hash()]; !ok {
+ if _, ok := pool.queue[account].txs.items[tx10.Nonce()]; !ok {
t.Errorf("funded queued transaction missing: %v", tx10)
}
- if _, ok := pool.queue[account][tx11.Hash()]; ok {
+ if _, ok := pool.queue[account].txs.items[tx11.Nonce()]; ok {
t.Errorf("out-of-fund queued transaction present: %v", tx11)
}
+ if len(pool.all) != 2 {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), 2)
+ }
}
// Tests that if a transaction is dropped from the current pending pool (e.g. out
@@ -349,55 +383,64 @@ func TestTransactionPostponing(t *testing.T) {
} else {
tx = transaction(uint64(i), big.NewInt(500), key)
}
- pool.addTx(tx.Hash(), account, tx)
+ pool.promoteTx(account, tx.Hash(), tx)
txns = append(txns, tx)
}
// Check that pre and post validations leave the pool as is
- if len(pool.pending) != len(txns) {
- t.Errorf("pending transaction mismatch: have %d, want %d", len(pool.pending), len(txns))
+ if pool.pending[account].Len() != len(txns) {
+ t.Errorf("pending transaction mismatch: have %d, want %d", pool.pending[account].Len(), len(txns))
+ }
+ if len(pool.queue) != 0 {
+ t.Errorf("queued transaction mismatch: have %d, want %d", pool.queue[account].Len(), 0)
}
- if len(pool.queue[account]) != 0 {
- t.Errorf("queued transaction mismatch: have %d, want %d", len(pool.queue), 0)
+ if len(pool.all) != len(txns) {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), len(txns))
}
pool.resetState()
- if len(pool.pending) != len(txns) {
- t.Errorf("pending transaction mismatch: have %d, want %d", len(pool.pending), len(txns))
+ if pool.pending[account].Len() != len(txns) {
+ t.Errorf("pending transaction mismatch: have %d, want %d", pool.pending[account].Len(), len(txns))
+ }
+ if len(pool.queue) != 0 {
+ t.Errorf("queued transaction mismatch: have %d, want %d", pool.queue[account].Len(), 0)
}
- if len(pool.queue[account]) != 0 {
- t.Errorf("queued transaction mismatch: have %d, want %d", len(pool.queue), 0)
+ if len(pool.all) != len(txns) {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), len(txns))
}
// Reduce the balance of the account, and check that transactions are reorganised
state.AddBalance(account, big.NewInt(-750))
pool.resetState()
- if _, ok := pool.pending[txns[0].Hash()]; !ok {
+ if _, ok := pool.pending[account].txs.items[txns[0].Nonce()]; !ok {
t.Errorf("tx %d: valid and funded transaction missing from pending pool: %v", 0, txns[0])
}
- if _, ok := pool.queue[account][txns[0].Hash()]; ok {
+ if _, ok := pool.queue[account].txs.items[txns[0].Nonce()]; ok {
t.Errorf("tx %d: valid and funded transaction present in future queue: %v", 0, txns[0])
}
for i, tx := range txns[1:] {
if i%2 == 1 {
- if _, ok := pool.pending[tx.Hash()]; ok {
+ if _, ok := pool.pending[account].txs.items[tx.Nonce()]; ok {
t.Errorf("tx %d: valid but future transaction present in pending pool: %v", i+1, tx)
}
- if _, ok := pool.queue[account][tx.Hash()]; !ok {
+ if _, ok := pool.queue[account].txs.items[tx.Nonce()]; !ok {
t.Errorf("tx %d: valid but future transaction missing from future queue: %v", i+1, tx)
}
} else {
- if _, ok := pool.pending[tx.Hash()]; ok {
+ if _, ok := pool.pending[account].txs.items[tx.Nonce()]; ok {
t.Errorf("tx %d: out-of-fund transaction present in pending pool: %v", i+1, tx)
}
- if _, ok := pool.queue[account][tx.Hash()]; ok {
+ if _, ok := pool.queue[account].txs.items[tx.Nonce()]; ok {
t.Errorf("tx %d: out-of-fund transaction present in future queue: %v", i+1, tx)
}
}
}
+ if len(pool.all) != len(txns)/2 {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), len(txns)/2)
+ }
}
// Tests that if the transaction count belonging to a single account goes above
// some threshold, the higher transactions are dropped to prevent DOS attacks.
-func TestTransactionQueueLimiting(t *testing.T) {
+func TestTransactionQueueAccountLimiting(t *testing.T) {
// Create a test account and fund it
pool, key := setupTxPool()
account, _ := transaction(0, big.NewInt(0), key).From()
@@ -406,23 +449,104 @@ func TestTransactionQueueLimiting(t *testing.T) {
state.AddBalance(account, big.NewInt(1000000))
// Keep queuing up transactions and make sure all above a limit are dropped
- for i := uint64(1); i <= maxQueued+5; i++ {
+ for i := uint64(1); i <= maxQueuedPerAccount+5; i++ {
if err := pool.Add(transaction(i, big.NewInt(100000), key)); err != nil {
t.Fatalf("tx %d: failed to add transaction: %v", i, err)
}
if len(pool.pending) != 0 {
t.Errorf("tx %d: pending pool size mismatch: have %d, want %d", i, len(pool.pending), 0)
}
- if i <= maxQueued {
- if len(pool.queue[account]) != int(i) {
- t.Errorf("tx %d: queue size mismatch: have %d, want %d", i, len(pool.queue[account]), i)
+ if i <= maxQueuedPerAccount {
+ if pool.queue[account].Len() != int(i) {
+ t.Errorf("tx %d: queue size mismatch: have %d, want %d", i, pool.queue[account].Len(), i)
}
} else {
- if len(pool.queue[account]) != maxQueued {
- t.Errorf("tx %d: queue limit mismatch: have %d, want %d", i, len(pool.queue[account]), maxQueued)
+ if pool.queue[account].Len() != int(maxQueuedPerAccount) {
+ t.Errorf("tx %d: queue limit mismatch: have %d, want %d", i, pool.queue[account].Len(), maxQueuedPerAccount)
}
}
}
+ if len(pool.all) != int(maxQueuedPerAccount) {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), maxQueuedPerAccount)
+ }
+}
+
+// Tests that if the transaction count belonging to multiple accounts go above
+// some threshold, the higher transactions are dropped to prevent DOS attacks.
+func TestTransactionQueueGlobalLimiting(t *testing.T) {
+ // Reduce the queue limits to shorten test time
+ defer func(old uint64) { maxQueuedInTotal = old }(maxQueuedInTotal)
+ maxQueuedInTotal = maxQueuedPerAccount * 3
+
+ // Create the pool to test the limit enforcement with
+ db, _ := ethdb.NewMemDatabase()
+ statedb, _ := state.New(common.Hash{}, db)
+
+ pool := NewTxPool(testChainConfig(), new(event.TypeMux), func() (*state.StateDB, error) { return statedb, nil }, func() *big.Int { return big.NewInt(1000000) })
+ pool.resetState()
+
+ // Create a number of test accounts and fund them
+ state, _ := pool.currentState()
+
+ keys := make([]*ecdsa.PrivateKey, 5)
+ for i := 0; i < len(keys); i++ {
+ keys[i], _ = crypto.GenerateKey()
+ state.AddBalance(crypto.PubkeyToAddress(keys[i].PublicKey), big.NewInt(1000000))
+ }
+ // Generate and queue a batch of transactions
+ nonces := make(map[common.Address]uint64)
+
+ txs := make(types.Transactions, 0, 3*maxQueuedInTotal)
+ for len(txs) < cap(txs) {
+ key := keys[rand.Intn(len(keys))]
+ addr := crypto.PubkeyToAddress(key.PublicKey)
+
+ txs = append(txs, transaction(nonces[addr]+1, big.NewInt(100000), key))
+ nonces[addr]++
+ }
+ // Import the batch and verify that limits have been enforced
+ pool.AddBatch(txs)
+
+ queued := 0
+ for addr, list := range pool.queue {
+ if list.Len() > int(maxQueuedPerAccount) {
+ t.Errorf("addr %x: queued accounts overflown allowance: %d > %d", addr, list.Len(), maxQueuedPerAccount)
+ }
+ queued += list.Len()
+ }
+ if queued > int(maxQueuedInTotal) {
+ t.Fatalf("total transactions overflow allowance: %d > %d", queued, maxQueuedInTotal)
+ }
+}
+
+// Tests that if an account remains idle for a prolonged amount of time, any
+// non-executable transactions queued up are dropped to prevent wasting resources
+// on shuffling them around.
+func TestTransactionQueueTimeLimiting(t *testing.T) {
+ // Reduce the queue limits to shorten test time
+ defer func(old time.Duration) { maxQueuedLifetime = old }(maxQueuedLifetime)
+ defer func(old time.Duration) { evictionInterval = old }(evictionInterval)
+ maxQueuedLifetime = time.Second
+ evictionInterval = time.Second
+
+ // Create a test account and fund it
+ pool, key := setupTxPool()
+ account, _ := transaction(0, big.NewInt(0), key).From()
+
+ state, _ := pool.currentState()
+ state.AddBalance(account, big.NewInt(1000000))
+
+ // Queue up a batch of transactions
+ for i := uint64(1); i <= maxQueuedPerAccount; i++ {
+ if err := pool.Add(transaction(i, big.NewInt(100000), key)); err != nil {
+ t.Fatalf("tx %d: failed to add transaction: %v", i, err)
+ }
+ }
+ // Wait until at least two expiration cycles hit and make sure the transactions are gone
+ time.Sleep(2 * evictionInterval)
+ if len(pool.queue) > 0 {
+ t.Fatalf("old transactions remained after eviction")
+ }
}
// Tests that even if the transaction count belonging to a single account goes
@@ -437,17 +561,20 @@ func TestTransactionPendingLimiting(t *testing.T) {
state.AddBalance(account, big.NewInt(1000000))
// Keep queuing up transactions and make sure all above a limit are dropped
- for i := uint64(0); i < maxQueued+5; i++ {
+ for i := uint64(0); i < maxQueuedPerAccount+5; i++ {
if err := pool.Add(transaction(i, big.NewInt(100000), key)); err != nil {
t.Fatalf("tx %d: failed to add transaction: %v", i, err)
}
- if len(pool.pending) != int(i)+1 {
- t.Errorf("tx %d: pending pool size mismatch: have %d, want %d", i, len(pool.pending), i+1)
+ if pool.pending[account].Len() != int(i)+1 {
+ t.Errorf("tx %d: pending pool size mismatch: have %d, want %d", i, pool.pending[account].Len(), i+1)
}
- if len(pool.queue[account]) != 0 {
- t.Errorf("tx %d: queue size mismatch: have %d, want %d", i, len(pool.queue[account]), 0)
+ if len(pool.queue) != 0 {
+ t.Errorf("tx %d: queue size mismatch: have %d, want %d", i, pool.queue[account].Len(), 0)
}
}
+ if len(pool.all) != int(maxQueuedPerAccount+5) {
+ t.Errorf("total transaction mismatch: have %d, want %d", len(pool.all), maxQueuedPerAccount+5)
+ }
}
// Tests that the transaction limits are enforced the same way irrelevant whether
@@ -462,39 +589,42 @@ func testTransactionLimitingEquivalency(t *testing.T, origin uint64) {
state1, _ := pool1.currentState()
state1.AddBalance(account1, big.NewInt(1000000))
- for i := uint64(0); i < maxQueued+5; i++ {
+ for i := uint64(0); i < maxQueuedPerAccount+5; i++ {
if err := pool1.Add(transaction(origin+i, big.NewInt(100000), key1)); err != nil {
t.Fatalf("tx %d: failed to add transaction: %v", i, err)
}
}
- // Add a batch of transactions to a pool in one bit batch
+ // Add a batch of transactions to a pool in one big batch
pool2, key2 := setupTxPool()
account2, _ := transaction(0, big.NewInt(0), key2).From()
state2, _ := pool2.currentState()
state2.AddBalance(account2, big.NewInt(1000000))
txns := []*types.Transaction{}
- for i := uint64(0); i < maxQueued+5; i++ {
+ for i := uint64(0); i < maxQueuedPerAccount+5; i++ {
txns = append(txns, transaction(origin+i, big.NewInt(100000), key2))
}
- pool2.AddTransactions(txns)
+ pool2.AddBatch(txns)
// Ensure the batch optimization honors the same pool mechanics
if len(pool1.pending) != len(pool2.pending) {
t.Errorf("pending transaction count mismatch: one-by-one algo: %d, batch algo: %d", len(pool1.pending), len(pool2.pending))
}
- if len(pool1.queue[account1]) != len(pool2.queue[account2]) {
- t.Errorf("queued transaction count mismatch: one-by-one algo: %d, batch algo: %d", len(pool1.queue[account1]), len(pool2.queue[account2]))
+ if len(pool1.queue) != len(pool2.queue) {
+ t.Errorf("queued transaction count mismatch: one-by-one algo: %d, batch algo: %d", len(pool1.queue), len(pool2.queue))
+ }
+ if len(pool1.all) != len(pool2.all) {
+ t.Errorf("total transaction count mismatch: one-by-one algo %d, batch algo %d", len(pool1.all), len(pool2.all))
}
}
// Benchmarks the speed of validating the contents of the pending queue of the
// transaction pool.
-func BenchmarkValidatePool100(b *testing.B) { benchmarkValidatePool(b, 100) }
-func BenchmarkValidatePool1000(b *testing.B) { benchmarkValidatePool(b, 1000) }
-func BenchmarkValidatePool10000(b *testing.B) { benchmarkValidatePool(b, 10000) }
+func BenchmarkPendingDemotion100(b *testing.B) { benchmarkPendingDemotion(b, 100) }
+func BenchmarkPendingDemotion1000(b *testing.B) { benchmarkPendingDemotion(b, 1000) }
+func BenchmarkPendingDemotion10000(b *testing.B) { benchmarkPendingDemotion(b, 10000) }
-func benchmarkValidatePool(b *testing.B, size int) {
+func benchmarkPendingDemotion(b *testing.B, size int) {
// Add a batch of transactions to a pool one by one
pool, key := setupTxPool()
account, _ := transaction(0, big.NewInt(0), key).From()
@@ -503,22 +633,22 @@ func benchmarkValidatePool(b *testing.B, size int) {
for i := 0; i < size; i++ {
tx := transaction(uint64(i), big.NewInt(100000), key)
- pool.addTx(tx.Hash(), account, tx)
+ pool.promoteTx(account, tx.Hash(), tx)
}
// Benchmark the speed of pool validation
b.ResetTimer()
for i := 0; i < b.N; i++ {
- pool.validatePool()
+ pool.demoteUnexecutables()
}
}
// Benchmarks the speed of scheduling the contents of the future queue of the
// transaction pool.
-func BenchmarkCheckQueue100(b *testing.B) { benchmarkCheckQueue(b, 100) }
-func BenchmarkCheckQueue1000(b *testing.B) { benchmarkCheckQueue(b, 1000) }
-func BenchmarkCheckQueue10000(b *testing.B) { benchmarkCheckQueue(b, 10000) }
+func BenchmarkFuturePromotion100(b *testing.B) { benchmarkFuturePromotion(b, 100) }
+func BenchmarkFuturePromotion1000(b *testing.B) { benchmarkFuturePromotion(b, 1000) }
+func BenchmarkFuturePromotion10000(b *testing.B) { benchmarkFuturePromotion(b, 10000) }
-func benchmarkCheckQueue(b *testing.B, size int) {
+func benchmarkFuturePromotion(b *testing.B, size int) {
// Add a batch of transactions to a pool one by one
pool, key := setupTxPool()
account, _ := transaction(0, big.NewInt(0), key).From()
@@ -527,11 +657,56 @@ func benchmarkCheckQueue(b *testing.B, size int) {
for i := 0; i < size; i++ {
tx := transaction(uint64(1+i), big.NewInt(100000), key)
- pool.queueTx(tx.Hash(), tx)
+ pool.enqueueTx(tx.Hash(), tx)
}
// Benchmark the speed of pool validation
b.ResetTimer()
for i := 0; i < b.N; i++ {
- pool.checkQueue()
+ pool.promoteExecutables()
+ }
+}
+
+// Benchmarks the speed of iterative transaction insertion.
+func BenchmarkPoolInsert(b *testing.B) {
+ // Generate a batch of transactions to enqueue into the pool
+ pool, key := setupTxPool()
+ account, _ := transaction(0, big.NewInt(0), key).From()
+ state, _ := pool.currentState()
+ state.AddBalance(account, big.NewInt(1000000))
+
+ txs := make(types.Transactions, b.N)
+ for i := 0; i < b.N; i++ {
+ txs[i] = transaction(uint64(i), big.NewInt(100000), key)
+ }
+ // Benchmark importing the transactions into the queue
+ b.ResetTimer()
+ for _, tx := range txs {
+ pool.Add(tx)
+ }
+}
+
+// Benchmarks the speed of batched transaction insertion.
+func BenchmarkPoolBatchInsert100(b *testing.B) { benchmarkPoolBatchInsert(b, 100) }
+func BenchmarkPoolBatchInsert1000(b *testing.B) { benchmarkPoolBatchInsert(b, 1000) }
+func BenchmarkPoolBatchInsert10000(b *testing.B) { benchmarkPoolBatchInsert(b, 10000) }
+
+func benchmarkPoolBatchInsert(b *testing.B, size int) {
+ // Generate a batch of transactions to enqueue into the pool
+ pool, key := setupTxPool()
+ account, _ := transaction(0, big.NewInt(0), key).From()
+ state, _ := pool.currentState()
+ state.AddBalance(account, big.NewInt(1000000))
+
+ batches := make([]types.Transactions, b.N)
+ for i := 0; i < b.N; i++ {
+ batches[i] = make(types.Transactions, size)
+ for j := 0; j < size; j++ {
+ batches[i][j] = transaction(uint64(size*i+j), big.NewInt(100000), key)
+ }
+ }
+ // Benchmark importing the transactions into the queue
+ b.ResetTimer()
+ for _, batch := range batches {
+ pool.AddBatch(batch)
}
}
diff --git a/core/types.go b/core/types.go
index 20f33a153..d84d0987f 100644
--- a/core/types.go
+++ b/core/types.go
@@ -19,12 +19,9 @@ package core
import (
"math/big"
- "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/event"
)
// Validator is an interface which defines the standard for block validation.
@@ -63,16 +60,3 @@ type HeaderValidator interface {
type Processor interface {
Process(block *types.Block, statedb *state.StateDB, cfg vm.Config) (types.Receipts, vm.Logs, *big.Int, error)
}
-
-// Backend is an interface defining the basic functionality for an operable node
-// with all the functionality to be a functional, valid Ethereum operator.
-//
-// TODO Remove this
-type Backend interface {
- AccountManager() *accounts.Manager
- BlockChain() *BlockChain
- TxPool() *TxPool
- ChainDb() ethdb.Database
- DappDb() ethdb.Database
- EventMux() *event.TypeMux
-}
diff --git a/core/types/block.go b/core/types/block.go
index 37b6f3ec1..559fbdd20 100644
--- a/core/types/block.go
+++ b/core/types/block.go
@@ -18,9 +18,9 @@
package types
import (
- "bytes"
"encoding/binary"
"encoding/json"
+ "errors"
"fmt"
"io"
"math/big"
@@ -33,25 +33,53 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
+var (
+ EmptyRootHash = DeriveSha(Transactions{})
+ EmptyUncleHash = CalcUncleHash(nil)
+)
+
+var (
+ errMissingHeaderMixDigest = errors.New("missing mixHash in JSON block header")
+ errMissingHeaderFields = errors.New("missing required JSON block header fields")
+ errBadNonceSize = errors.New("invalid block nonce size, want 8 bytes")
+)
+
// A BlockNonce is a 64-bit hash which proves (combined with the
// mix-hash) that a sufficient amount of computation has been carried
// out on a block.
type BlockNonce [8]byte
+// EncodeNonce converts the given integer to a block nonce.
func EncodeNonce(i uint64) BlockNonce {
var n BlockNonce
binary.BigEndian.PutUint64(n[:], i)
return n
}
+// Uint64 returns the integer value of a block nonce.
func (n BlockNonce) Uint64() uint64 {
return binary.BigEndian.Uint64(n[:])
}
+// MarshalJSON implements json.Marshaler
func (n BlockNonce) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`"0x%x"`, n)), nil
}
+// UnmarshalJSON implements json.Unmarshaler
+func (n *BlockNonce) UnmarshalJSON(input []byte) error {
+ var b hexBytes
+ if err := b.UnmarshalJSON(input); err != nil {
+ return err
+ }
+ if len(b) != 8 {
+ return errBadNonceSize
+ }
+ copy((*n)[:], b)
+ return nil
+}
+
+// Header represents Ethereum block headers.
type Header struct {
ParentHash common.Hash // Hash to the previous block
UncleHash common.Hash // Uncles of this block
@@ -70,10 +98,31 @@ type Header struct {
Nonce BlockNonce
}
+type jsonHeader struct {
+ ParentHash *common.Hash `json:"parentHash"`
+ UncleHash *common.Hash `json:"sha3Uncles"`
+ Coinbase *common.Address `json:"miner"`
+ Root *common.Hash `json:"stateRoot"`
+ TxHash *common.Hash `json:"transactionsRoot"`
+ ReceiptHash *common.Hash `json:"receiptRoot"`
+ Bloom *Bloom `json:"logsBloom"`
+ Difficulty *hexBig `json:"difficulty"`
+ Number *hexBig `json:"number"`
+ GasLimit *hexBig `json:"gasLimit"`
+ GasUsed *hexBig `json:"gasUsed"`
+ Time *hexBig `json:"timestamp"`
+ Extra *hexBytes `json:"extraData"`
+ MixDigest *common.Hash `json:"mixHash"`
+ Nonce *BlockNonce `json:"nonce"`
+}
+
+// Hash returns the block hash of the header, which is simply the keccak256 hash of its
+// RLP encoding.
func (h *Header) Hash() common.Hash {
return rlpHash(h)
}
+// HashNoNonce returns the hash which is used as input for the proof-of-work search.
func (h *Header) HashNoNonce() common.Hash {
return rlpHash([]interface{}{
h.ParentHash,
@@ -92,25 +141,62 @@ func (h *Header) HashNoNonce() common.Hash {
})
}
-func (h *Header) UnmarshalJSON(data []byte) error {
- var ext struct {
- ParentHash string
- Coinbase string
- Difficulty string
- GasLimit string
- Time *big.Int
- Extra string
- }
- dec := json.NewDecoder(bytes.NewReader(data))
- if err := dec.Decode(&ext); err != nil {
+// MarshalJSON encodes headers into the web3 RPC response block format.
+func (h *Header) MarshalJSON() ([]byte, error) {
+ return json.Marshal(&jsonHeader{
+ ParentHash: &h.ParentHash,
+ UncleHash: &h.UncleHash,
+ Coinbase: &h.Coinbase,
+ Root: &h.Root,
+ TxHash: &h.TxHash,
+ ReceiptHash: &h.ReceiptHash,
+ Bloom: &h.Bloom,
+ Difficulty: (*hexBig)(h.Difficulty),
+ Number: (*hexBig)(h.Number),
+ GasLimit: (*hexBig)(h.GasLimit),
+ GasUsed: (*hexBig)(h.GasUsed),
+ Time: (*hexBig)(h.Time),
+ Extra: (*hexBytes)(&h.Extra),
+ MixDigest: &h.MixDigest,
+ Nonce: &h.Nonce,
+ })
+}
+
+// UnmarshalJSON decodes headers from the web3 RPC response block format.
+func (h *Header) UnmarshalJSON(input []byte) error {
+ var dec jsonHeader
+ if err := json.Unmarshal(input, &dec); err != nil {
return err
}
-
- h.ParentHash = common.HexToHash(ext.ParentHash)
- h.Coinbase = common.HexToAddress(ext.Coinbase)
- h.Difficulty = common.String2Big(ext.Difficulty)
- h.Time = ext.Time
- h.Extra = []byte(ext.Extra)
+ // Ensure that all fields are set. MixDigest is checked separately because
+ // it is a recent addition to the spec (as of August 2016) and older RPC server
+ // implementations might not provide it.
+ if dec.MixDigest == nil {
+ return errMissingHeaderMixDigest
+ }
+ if dec.ParentHash == nil || dec.UncleHash == nil || dec.Coinbase == nil ||
+ dec.Root == nil || dec.TxHash == nil || dec.ReceiptHash == nil ||
+ dec.Bloom == nil || dec.Difficulty == nil || dec.Number == nil ||
+ dec.GasLimit == nil || dec.GasUsed == nil || dec.Time == nil ||
+ dec.Extra == nil || dec.Nonce == nil {
+ return errMissingHeaderFields
+ }
+ // Assign all values.
+ h.ParentHash = *dec.ParentHash
+ h.UncleHash = *dec.UncleHash
+ h.Coinbase = *dec.Coinbase
+ h.Root = *dec.Root
+ h.TxHash = *dec.TxHash
+ h.ReceiptHash = *dec.ReceiptHash
+ h.Bloom = *dec.Bloom
+ h.Difficulty = (*big.Int)(dec.Difficulty)
+ h.Number = (*big.Int)(dec.Number)
+ h.GasLimit = (*big.Int)(dec.GasLimit)
+ h.GasUsed = (*big.Int)(dec.GasUsed)
+ h.Time = (*big.Int)(dec.Time)
+ h.Extra = *dec.Extra
+ h.MixDigest = *dec.MixDigest
+ h.Nonce = *dec.Nonce
return nil
}
@@ -128,6 +214,7 @@ type Body struct {
Uncles []*Header
}
+// Block represents a block in the Ethereum blockchain.
type Block struct {
header *Header
uncles []*Header
@@ -176,11 +263,6 @@ type storageblock struct {
TD *big.Int
}
-var (
- EmptyRootHash = DeriveSha(Transactions{})
- EmptyUncleHash = CalcUncleHash(nil)
-)
-
// NewBlock creates a new block. The input data is copied,
// changes to header and to the field values will not affect the
// block.
@@ -253,23 +335,7 @@ func CopyHeader(h *Header) *Header {
return &cpy
}
-func (b *Block) ValidateFields() error {
- if b.header == nil {
- return fmt.Errorf("header is nil")
- }
- for i, transaction := range b.transactions {
- if transaction == nil {
- return fmt.Errorf("transaction %d is nil", i)
- }
- }
- for i, uncle := range b.uncles {
- if uncle == nil {
- return fmt.Errorf("uncle %d is nil", i)
- }
- }
- return nil
-}
-
+// DecodeRLP decodes the Ethereum
func (b *Block) DecodeRLP(s *rlp.Stream) error {
var eb extblock
_, size, _ := s.Kind()
@@ -281,6 +347,7 @@ func (b *Block) DecodeRLP(s *rlp.Stream) error {
return nil
}
+// EncodeRLP serializes b into the Ethereum RLP block format.
func (b *Block) EncodeRLP(w io.Writer) error {
return rlp.Encode(w, extblock{
Header: b.header,
@@ -300,6 +367,7 @@ func (b *StorageBlock) DecodeRLP(s *rlp.Stream) error {
}
// TODO: copies
+
func (b *Block) Uncles() []*Header { return b.uncles }
func (b *Block) Transactions() Transactions { return b.transactions }
@@ -387,8 +455,8 @@ func (b *Block) WithBody(transactions []*Transaction, uncles []*Header) *Block {
return block
}
-// Implement pow.Block
-
+// Hash returns the keccak256 hash of b's header.
+// The hash is computed on the first call and cached thereafter.
func (b *Block) Hash() common.Hash {
if hash := b.hash.Load(); hash != nil {
return hash.(common.Hash)
diff --git a/core/types/bloom9.go b/core/types/bloom9.go
index ecf2bffc2..d3945a734 100644
--- a/core/types/bloom9.go
+++ b/core/types/bloom9.go
@@ -31,28 +31,34 @@ type bytesBacked interface {
const bloomLength = 256
+// Bloom represents a 256 bit bloom filter.
type Bloom [bloomLength]byte
+// BytesToBloom converts a byte slice to a bloom filter.
+// It panics if b is not of suitable size.
func BytesToBloom(b []byte) Bloom {
var bloom Bloom
bloom.SetBytes(b)
return bloom
}
+// SetBytes sets the content of b to the given bytes.
+// It panics if d is not of suitable size.
func (b *Bloom) SetBytes(d []byte) {
if len(b) < len(d) {
panic(fmt.Sprintf("bloom bytes too big %d %d", len(b), len(d)))
}
-
copy(b[bloomLength-len(d):], d)
}
+// Add adds d to the filter. Future calls of Test(d) will return true.
func (b *Bloom) Add(d *big.Int) {
bin := new(big.Int).SetBytes(b[:])
bin.Or(bin, bloom9(d.Bytes()))
b.SetBytes(bin.Bytes())
}
+// Big converts b to a big integer.
func (b Bloom) Big() *big.Int {
return common.Bytes2Big(b[:])
}
@@ -69,8 +75,22 @@ func (b Bloom) TestBytes(test []byte) bool {
return b.Test(common.BytesToBig(test))
}
+// MarshalJSON encodes b as a hex string with 0x prefix.
func (b Bloom) MarshalJSON() ([]byte, error) {
- return []byte(fmt.Sprintf(`"%#x"`, b.Bytes())), nil
+ return []byte(fmt.Sprintf(`"%#x"`, b[:])), nil
+}
+
+// UnmarshalJSON b as a hex string with 0x prefix.
+func (b *Bloom) UnmarshalJSON(input []byte) error {
+ var dec hexBytes
+ if err := dec.UnmarshalJSON(input); err != nil {
+ return err
+ }
+ if len(dec) != bloomLength {
+ return fmt.Errorf("invalid bloom size, want %d bytes", bloomLength)
+ }
+ copy((*b)[:], dec)
+ return nil
}
func CreateBloom(receipts Receipts) Bloom {
diff --git a/core/types/json.go b/core/types/json.go
new file mode 100644
index 000000000..d2718a96d
--- /dev/null
+++ b/core/types/json.go
@@ -0,0 +1,108 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package types
+
+import (
+ "encoding/hex"
+ "fmt"
+ "math/big"
+)
+
+// JSON unmarshaling utilities.
+
+type hexBytes []byte
+
+func (b *hexBytes) MarshalJSON() ([]byte, error) {
+ if b != nil {
+ return []byte(fmt.Sprintf(`"0x%x"`, []byte(*b))), nil
+ }
+ return nil, nil
+}
+
+func (b *hexBytes) UnmarshalJSON(input []byte) error {
+ if len(input) < 2 || input[0] != '"' || input[len(input)-1] != '"' {
+ return fmt.Errorf("cannot unmarshal non-string into hexBytes")
+ }
+ input = input[1 : len(input)-1]
+ if len(input) < 2 || input[0] != '0' || input[1] != 'x' {
+ return fmt.Errorf("missing 0x prefix in hexBytes input %q", input)
+ }
+ dec := make(hexBytes, (len(input)-2)/2)
+ if _, err := hex.Decode(dec, input[2:]); err != nil {
+ return err
+ }
+ *b = dec
+ return nil
+}
+
+type hexBig big.Int
+
+func (b *hexBig) MarshalJSON() ([]byte, error) {
+ if b != nil {
+ return []byte(fmt.Sprintf(`"0x%x"`, (*big.Int)(b))), nil
+ }
+ return nil, nil
+}
+
+func (b *hexBig) UnmarshalJSON(input []byte) error {
+ raw, err := checkHexNumber(input)
+ if err != nil {
+ return err
+ }
+ dec, ok := new(big.Int).SetString(string(raw), 16)
+ if !ok {
+ return fmt.Errorf("invalid hex number")
+ }
+ *b = (hexBig)(*dec)
+ return nil
+}
+
+type hexUint64 uint64
+
+func (b *hexUint64) MarshalJSON() ([]byte, error) {
+ if b != nil {
+ return []byte(fmt.Sprintf(`"0x%x"`, *(*uint64)(b))), nil
+ }
+ return nil, nil
+}
+
+func (b *hexUint64) UnmarshalJSON(input []byte) error {
+ raw, err := checkHexNumber(input)
+ if err != nil {
+ return err
+ }
+ _, err = fmt.Sscanf(string(raw), "%x", b)
+ return err
+}
+
+func checkHexNumber(input []byte) (raw []byte, err error) {
+ if len(input) < 2 || input[0] != '"' || input[len(input)-1] != '"' {
+ return nil, fmt.Errorf("cannot unmarshal non-string into hex number")
+ }
+ input = input[1 : len(input)-1]
+ if len(input) < 2 || input[0] != '0' || input[1] != 'x' {
+ return nil, fmt.Errorf("missing 0x prefix in hex number input %q", input)
+ }
+ if len(input) == 2 {
+ return nil, fmt.Errorf("empty hex number")
+ }
+ raw = input[2:]
+ if len(raw)%2 != 0 {
+ raw = append([]byte{'0'}, raw...)
+ }
+ return raw, nil
+}
diff --git a/core/types/json_test.go b/core/types/json_test.go
new file mode 100644
index 000000000..605c2b564
--- /dev/null
+++ b/core/types/json_test.go
@@ -0,0 +1,213 @@
+package types
+
+import (
+ "encoding/json"
+ "reflect"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+var unmarshalHeaderTests = map[string]struct {
+ input string
+ wantHash common.Hash
+ wantError error
+}{
+ "block 0x1e2200": {
+ input: `{"difficulty":"0x311ca98cebfe","extraData":"0x7777772e62772e636f6d","gasLimit":"0x47db3d","gasUsed":"0x43760c","hash":"0x3724bc6b9dcd4a2b3a26e0ed9b821e7380b5b3d7dec7166c7983cead62a37e48","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1","mixHash":"0x1ccfddb506dac5afc09b6f92eb09a043ffc8e08f7592250af57b9c64c20f9b25","nonce":"0x670bd98c79585197","number":"0x1e2200","parentHash":"0xd3e13296d064e7344f20c57c57b67a022f6bf7741fa42428c2db77e91abdf1f8","receiptRoot":"0xeeab1776c1fafbe853a8ee0c1bafe2e775a1b6fdb6ff3e9f9410ddd4514889ff","sha3Uncles":"0x5fbfa4ec8b089678c53b6798cc0d9260ea40a529e06d5300aae35596262e0eb3","size":"0x57f","stateRoot":"0x62ad2007e4a3f31ea98e5d2fd150d894887bafde36eeac7331a60ae12053ec76","timestamp":"0x579b82f2","totalDifficulty":"0x24fe813c101d00f97","transactions":["0xb293408e85735bfc78b35aa89de8b48e49641e3d82e3d52ea2d44ec42a4e88cf","0x124acc383ff2da6faa0357829084dae64945221af6f6f09da1d11688b779f939","0xee090208b6051c442ccdf9ec19f66389e604d342a6d71144c7227ce995bef46f"],"transactionsRoot":"0xce0042dd9af0c1923dd7f58ca6faa156d39d4ef39fdb65c5bcd1d4b4720096db","uncles":["0x6818a31d1f204cf640c952082940b68b8db6d1b39ee71f7efe0e3629ed5d7eb3"]}`,
+ wantHash: common.HexToHash("0x3724bc6b9dcd4a2b3a26e0ed9b821e7380b5b3d7dec7166c7983cead62a37e48"),
+ },
+ "bad nonce": {
+ input: `{"difficulty":"0x311ca98cebfe","extraData":"0x7777772e62772e636f6d","gasLimit":"0x47db3d","gasUsed":"0x43760c","hash":"0x3724bc6b9dcd4a2b3a26e0ed9b821e7380b5b3d7dec7166c7983cead62a37e48","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1","mixHash":"0x1ccfddb506dac5afc09b6f92eb09a043ffc8e08f7592250af57b9c64c20f9b25","nonce":"0x670bd98c7958","number":"0x1e2200","parentHash":"0xd3e13296d064e7344f20c57c57b67a022f6bf7741fa42428c2db77e91abdf1f8","receiptRoot":"0xeeab1776c1fafbe853a8ee0c1bafe2e775a1b6fdb6ff3e9f9410ddd4514889ff","sha3Uncles":"0x5fbfa4ec8b089678c53b6798cc0d9260ea40a529e06d5300aae35596262e0eb3","size":"0x57f","stateRoot":"0x62ad2007e4a3f31ea98e5d2fd150d894887bafde36eeac7331a60ae12053ec76","timestamp":"0x579b82f2","totalDifficulty":"0x24fe813c101d00f97","transactions":["0xb293408e85735bfc78b35aa89de8b48e49641e3d82e3d52ea2d44ec42a4e88cf","0x124acc383ff2da6faa0357829084dae64945221af6f6f09da1d11688b779f939","0xee090208b6051c442ccdf9ec19f66389e604d342a6d71144c7227ce995bef46f"],"transactionsRoot":"0xce0042dd9af0c1923dd7f58ca6faa156d39d4ef39fdb65c5bcd1d4b4720096db","uncles":["0x6818a31d1f204cf640c952082940b68b8db6d1b39ee71f7efe0e3629ed5d7eb3"]}`,
+ wantError: errBadNonceSize,
+ },
+ "missing mixHash": {
+ input: `{"difficulty":"0x311ca98cebfe","extraData":"0x7777772e62772e636f6d","gasLimit":"0x47db3d","gasUsed":"0x43760c","hash":"0x3724bc6b9dcd4a2b3a26e0ed9b821e7380b5b3d7dec7166c7983cead62a37e48","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1","nonce":"0x670bd98c79585197","number":"0x1e2200","parentHash":"0xd3e13296d064e7344f20c57c57b67a022f6bf7741fa42428c2db77e91abdf1f8","receiptRoot":"0xeeab1776c1fafbe853a8ee0c1bafe2e775a1b6fdb6ff3e9f9410ddd4514889ff","sha3Uncles":"0x5fbfa4ec8b089678c53b6798cc0d9260ea40a529e06d5300aae35596262e0eb3","size":"0x57f","stateRoot":"0x62ad2007e4a3f31ea98e5d2fd150d894887bafde36eeac7331a60ae12053ec76","timestamp":"0x579b82f2","totalDifficulty":"0x24fe813c101d00f97","transactions":["0xb293408e85735bfc78b35aa89de8b48e49641e3d82e3d52ea2d44ec42a4e88cf","0x124acc383ff2da6faa0357829084dae64945221af6f6f09da1d11688b779f939","0xee090208b6051c442ccdf9ec19f66389e604d342a6d71144c7227ce995bef46f"],"transactionsRoot":"0xce0042dd9af0c1923dd7f58ca6faa156d39d4ef39fdb65c5bcd1d4b4720096db","uncles":["0x6818a31d1f204cf640c952082940b68b8db6d1b39ee71f7efe0e3629ed5d7eb3"]}`,
+ wantError: errMissingHeaderMixDigest,
+ },
+ "missing fields": {
+ input: `{"gasLimit":"0x47db3d","gasUsed":"0x43760c","hash":"0x3724bc6b9dcd4a2b3a26e0ed9b821e7380b5b3d7dec7166c7983cead62a37e48","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","miner":"0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1","mixHash":"0x1ccfddb506dac5afc09b6f92eb09a043ffc8e08f7592250af57b9c64c20f9b25","nonce":"0x670bd98c79585197","number":"0x1e2200","parentHash":"0xd3e13296d064e7344f20c57c57b67a022f6bf7741fa42428c2db77e91abdf1f8","receiptRoot":"0xeeab1776c1fafbe853a8ee0c1bafe2e775a1b6fdb6ff3e9f9410ddd4514889ff","sha3Uncles":"0x5fbfa4ec8b089678c53b6798cc0d9260ea40a529e06d5300aae35596262e0eb3","size":"0x57f","stateRoot":"0x62ad2007e4a3f31ea98e5d2fd150d894887bafde36eeac7331a60ae12053ec76","timestamp":"0x579b82f2","totalDifficulty":"0x24fe813c101d00f97","transactions":["0xb293408e85735bfc78b35aa89de8b48e49641e3d82e3d52ea2d44ec42a4e88cf","0x124acc383ff2da6faa0357829084dae64945221af6f6f09da1d11688b779f939","0xee090208b6051c442ccdf9ec19f66389e604d342a6d71144c7227ce995bef46f"],"transactionsRoot":"0xce0042dd9af0c1923dd7f58ca6faa156d39d4ef39fdb65c5bcd1d4b4720096db","uncles":["0x6818a31d1f204cf640c952082940b68b8db6d1b39ee71f7efe0e3629ed5d7eb3"]}`,
+ wantError: errMissingHeaderFields,
+ },
+}
+
+func TestUnmarshalHeader(t *testing.T) {
+ for name, test := range unmarshalHeaderTests {
+ var head *Header
+ err := json.Unmarshal([]byte(test.input), &head)
+ if !checkError(t, name, err, test.wantError) {
+ continue
+ }
+ if head.Hash() != test.wantHash {
+ t.Errorf("test %q: got hash %x, want %x", name, head.Hash(), test.wantHash)
+ continue
+ }
+ }
+}
+
+func TestMarshalHeader(t *testing.T) {
+ for name, test := range unmarshalHeaderTests {
+ if test.wantError != nil {
+ continue
+ }
+ var original *Header
+ json.Unmarshal([]byte(test.input), &original)
+
+ blob, err := json.Marshal(original)
+ if err != nil {
+ t.Errorf("test %q: failed to marshal header: %v", name, err)
+ continue
+ }
+ var proced *Header
+ if err := json.Unmarshal(blob, &proced); err != nil {
+ t.Errorf("Test %q: failed to unmarshal marhsalled header: %v", name, err)
+ continue
+ }
+ if !reflect.DeepEqual(original, proced) {
+ t.Errorf("test %q: header mismatch: have %+v, want %+v", name, proced, original)
+ continue
+ }
+ }
+}
+
+var unmarshalTransactionTests = map[string]struct {
+ input string
+ wantHash common.Hash
+ wantFrom common.Address
+ wantError error
+}{
+ "value transfer": {
+ input: `{"blockHash":"0x0188a05dcc825bd1a05dab91bea0c03622542683446e56302eabb46097d4ae11","blockNumber":"0x1e478d","from":"0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689","gas":"0x15f90","gasPrice":"0x4a817c800","hash":"0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9","input":"0x","nonce":"0x58d","to":"0x88f252f674ac755feff877abf957d4aa05adce86","transactionIndex":"0x1","value":"0x19f0ec3ed71ec00","v":"0x1c","r":"0x53829f206c99b866672f987909d556cd1c2eb60e990a3425f65083977c14187b","s":"0x5cc52383e41c923ec7d63749c1f13a7236b540527ee5b9a78b3fb869a66f60e"}`,
+ wantHash: common.HexToHash("0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9"),
+ wantFrom: common.HexToAddress("0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689"),
+ },
+ "bad signature fields": {
+ input: `{"blockHash":"0x0188a05dcc825bd1a05dab91bea0c03622542683446e56302eabb46097d4ae11","blockNumber":"0x1e478d","from":"0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689","gas":"0x15f90","gasPrice":"0x4a817c800","hash":"0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9","input":"0x","nonce":"0x58d","to":"0x88f252f674ac755feff877abf957d4aa05adce86","transactionIndex":"0x1","value":"0x19f0ec3ed71ec00","v":"0x58","r":"0x53829f206c99b866672f987909d556cd1c2eb60e990a3425f65083977c14187b","s":"0x5cc52383e41c923ec7d63749c1f13a7236b540527ee5b9a78b3fb869a66f60e"}`,
+ wantError: ErrInvalidSig,
+ },
+ "missing signature v": {
+ input: `{"blockHash":"0x0188a05dcc825bd1a05dab91bea0c03622542683446e56302eabb46097d4ae11","blockNumber":"0x1e478d","from":"0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689","gas":"0x15f90","gasPrice":"0x4a817c800","hash":"0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9","input":"0x","nonce":"0x58d","to":"0x88f252f674ac755feff877abf957d4aa05adce86","transactionIndex":"0x1","value":"0x19f0ec3ed71ec00","r":"0x53829f206c99b866672f987909d556cd1c2eb60e990a3425f65083977c14187b","s":"0x5cc52383e41c923ec7d63749c1f13a7236b540527ee5b9a78b3fb869a66f60e"}`,
+ wantError: errMissingTxSignatureFields,
+ },
+ "missing signature fields": {
+ input: `{"blockHash":"0x0188a05dcc825bd1a05dab91bea0c03622542683446e56302eabb46097d4ae11","blockNumber":"0x1e478d","from":"0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689","gas":"0x15f90","gasPrice":"0x4a817c800","hash":"0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9","input":"0x","nonce":"0x58d","to":"0x88f252f674ac755feff877abf957d4aa05adce86","transactionIndex":"0x1","value":"0x19f0ec3ed71ec00"}`,
+ wantError: errMissingTxSignatureFields,
+ },
+ "missing fields": {
+ input: `{"blockHash":"0x0188a05dcc825bd1a05dab91bea0c03622542683446e56302eabb46097d4ae11","blockNumber":"0x1e478d","from":"0xf36c3f6c4a2ce8d353fb92d5cd10d19ce69ae689","hash":"0xd91c08f1e27c5ce7e1f57d78d7c56a9ee446be07b9635d84d0475660ea8905e9","input":"0x","nonce":"0x58d","to":"0x88f252f674ac755feff877abf957d4aa05adce86","transactionIndex":"0x1","value":"0x19f0ec3ed71ec00","v":"0x1c","r":"0x53829f206c99b866672f987909d556cd1c2eb60e990a3425f65083977c14187b","s":"0x5cc52383e41c923ec7d63749c1f13a7236b540527ee5b9a78b3fb869a66f60e"}`,
+ wantError: errMissingTxFields,
+ },
+}
+
+func TestUnmarshalTransaction(t *testing.T) {
+ for name, test := range unmarshalTransactionTests {
+ var tx *Transaction
+ err := json.Unmarshal([]byte(test.input), &tx)
+ if !checkError(t, name, err, test.wantError) {
+ continue
+ }
+ if tx.Hash() != test.wantHash {
+ t.Errorf("test %q: got hash %x, want %x", name, tx.Hash(), test.wantHash)
+ continue
+ }
+ from, err := tx.From()
+ if err != nil {
+ t.Errorf("test %q: From error %v", name, err)
+ }
+ if from != test.wantFrom {
+ t.Errorf("test %q: sender mismatch: got %x, want %x", name, from, test.wantFrom)
+ }
+ }
+}
+
+func TestMarshalTransaction(t *testing.T) {
+ for name, test := range unmarshalTransactionTests {
+ if test.wantError != nil {
+ continue
+ }
+ var original *Transaction
+ json.Unmarshal([]byte(test.input), &original)
+
+ blob, err := json.Marshal(original)
+ if err != nil {
+ t.Errorf("test %q: failed to marshal transaction: %v", name, err)
+ continue
+ }
+ var proced *Transaction
+ if err := json.Unmarshal(blob, &proced); err != nil {
+ t.Errorf("Test %q: failed to unmarshal marhsalled transaction: %v", name, err)
+ continue
+ }
+ proced.Hash() // hack private fields to pass deep equal
+ if !reflect.DeepEqual(original, proced) {
+ t.Errorf("test %q: transaction mismatch: have %+v, want %+v", name, proced, original)
+ continue
+ }
+ }
+}
+
+var unmarshalReceiptTests = map[string]struct {
+ input string
+ wantError error
+}{
+ "ok": {
+ input: `{"blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","blockNumber":"0x1e773b","contractAddress":null,"cumulativeGasUsed":"0x10cea","from":"0xdf21fa922215b1a56f5a6d6294e6e36c85a0acfb","gasUsed":"0xbae2","logs":[{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000df21fa922215b1a56f5a6d6294e6e36c85a0acfb","0x00000000000000000000000032be343b94f860124dc4fee278fdcbd38c102d88"],"data":"0x0000000000000000000000000000000000000000000000027cfefc4f3f392700","blockNumber":"0x1e773b","transactionIndex":"0x1","transactionHash":"0x0b4cc7844537023b709953390e3881ec5b233703a8e8824dc03e13729a1bd95a","blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","logIndex":"0x0"}],"logsBloom":"0x00000000000000020000000000020000000000000000000000000000000000000000000000000000000000000000000000040000000000000100000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000000000000000000000000010000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000002002000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000","root":"0x6e8a06b2dac39ac5c9d4db5fb2a2a94ef7a6e5ec1c554079112112caf162998a","to":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","transactionHash":"0x0b4cc7844537023b709953390e3881ec5b233703a8e8824dc03e13729a1bd95a","transactionIndex":"0x1"}`,
+ },
+ "missing post state": {
+ input: `{"blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","blockNumber":"0x1e773b","contractAddress":null,"cumulativeGasUsed":"0x10cea","from":"0xdf21fa922215b1a56f5a6d6294e6e36c85a0acfb","gasUsed":"0xbae2","logs":[{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000df21fa922215b1a56f5a6d6294e6e36c85a0acfb","0x00000000000000000000000032be343b94f860124dc4fee278fdcbd38c102d88"],"data":"0x0000000000000000000000000000000000000000000000027cfefc4f3f392700","blockNumber":"0x1e773b","transactionIndex":"0x1","transactionHash":"0x0b4cc7844537023b709953390e3881ec5b233703a8e8824dc03e13729a1bd95a","blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","logIndex":"0x0"}],"logsBloom":"0x00000000000000020000000000020000000000000000000000000000000000000000000000000000000000000000000000040000000000000100000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000000000000000000000000010000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000002002000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000","to":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","transactionHash":"0x0b4cc7844537023b709953390e3881ec5b233703a8e8824dc03e13729a1bd95a","transactionIndex":"0x1"}`,
+ wantError: errMissingReceiptPostState,
+ },
+ "missing fields": {
+ input: `{"blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","blockNumber":"0x1e773b","contractAddress":null,"cumulativeGasUsed":"0x10cea","from":"0xdf21fa922215b1a56f5a6d6294e6e36c85a0acfb","gasUsed":"0xbae2","logs":[{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000df21fa922215b1a56f5a6d6294e6e36c85a0acfb","0x00000000000000000000000032be343b94f860124dc4fee278fdcbd38c102d88"],"data":"0x0000000000000000000000000000000000000000000000027cfefc4f3f392700","blockNumber":"0x1e773b","transactionIndex":"0x1","transactionHash":"0x0b4cc7844537023b709953390e3881ec5b233703a8e8824dc03e13729a1bd95a","blockHash":"0xad20a0f78d19d7857067a9c06e6411efeab7673e183e4a545f53b724bb7fabf0","logIndex":"0x0"}],"logsBloom":"0x00000000000000020000000000020000000000000000000000000000000000000000000000000000000000000000000000040000000000000100000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000000000000000000000000010000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000002002000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000","root":"0x6e8a06b2dac39ac5c9d4db5fb2a2a94ef7a6e5ec1c554079112112caf162998a","to":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413"}`,
+ wantError: errMissingReceiptFields,
+ },
+}
+
+func TestUnmarshalReceipt(t *testing.T) {
+ for name, test := range unmarshalReceiptTests {
+ var r *Receipt
+ err := json.Unmarshal([]byte(test.input), &r)
+ checkError(t, name, err, test.wantError)
+ }
+}
+
+func TestMarshalReceipt(t *testing.T) {
+ for name, test := range unmarshalReceiptTests {
+ if test.wantError != nil {
+ continue
+ }
+ var original *Receipt
+ json.Unmarshal([]byte(test.input), &original)
+
+ blob, err := json.Marshal(original)
+ if err != nil {
+ t.Errorf("test %q: failed to marshal receipt: %v", name, err)
+ continue
+ }
+ var proced *Receipt
+ if err := json.Unmarshal(blob, &proced); err != nil {
+ t.Errorf("Test %q: failed to unmarshal marhsalled receipt: %v", name, err)
+ continue
+ }
+ if !reflect.DeepEqual(original, proced) {
+ t.Errorf("test %q: receipt mismatch: have %+v, want %+v", name, proced, original)
+ continue
+ }
+ }
+}
+
+func checkError(t *testing.T, testname string, got, want error) bool {
+ if got == nil {
+ if want != nil {
+ t.Errorf("test %q: got no error, want %q", testname, want)
+ return false
+ }
+ return true
+ }
+ if want == nil {
+ t.Errorf("test %q: unexpected error %q", testname, got)
+ } else if got.Error() != want.Error() {
+ t.Errorf("test %q: got error %q, want %q", testname, got, want)
+ }
+ return false
+}
diff --git a/core/types/receipt.go b/core/types/receipt.go
index 5f847fc5c..b00fdabff 100644
--- a/core/types/receipt.go
+++ b/core/types/receipt.go
@@ -17,6 +17,8 @@
package types
import (
+ "encoding/json"
+ "errors"
"fmt"
"io"
"math/big"
@@ -26,6 +28,11 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
+var (
+ errMissingReceiptPostState = errors.New("missing post state root in JSON receipt")
+ errMissingReceiptFields = errors.New("missing required JSON receipt fields")
+)
+
// Receipt represents the results of a transaction.
type Receipt struct {
// Consensus fields
@@ -34,12 +41,22 @@ type Receipt struct {
Bloom Bloom
Logs vm.Logs
- // Implementation fields
+ // Implementation fields (don't reorder!)
TxHash common.Hash
ContractAddress common.Address
GasUsed *big.Int
}
+type jsonReceipt struct {
+ PostState *common.Hash `json:"root"`
+ CumulativeGasUsed *hexBig `json:"cumulativeGasUsed"`
+ Bloom *Bloom `json:"logsBloom"`
+ Logs *vm.Logs `json:"logs"`
+ TxHash *common.Hash `json:"transactionHash"`
+ ContractAddress *common.Address `json:"contractAddress"`
+ GasUsed *hexBig `json:"gasUsed"`
+}
+
// NewReceipt creates a barebone transaction receipt, copying the init fields.
func NewReceipt(root []byte, cumulativeGasUsed *big.Int) *Receipt {
return &Receipt{PostState: common.CopyBytes(root), CumulativeGasUsed: new(big.Int).Set(cumulativeGasUsed)}
@@ -67,13 +84,49 @@ func (r *Receipt) DecodeRLP(s *rlp.Stream) error {
return nil
}
-// RlpEncode implements common.RlpEncode required for SHA3 derivation.
-func (r *Receipt) RlpEncode() []byte {
- bytes, err := rlp.EncodeToBytes(r)
- if err != nil {
- panic(err)
+// MarshalJSON encodes receipts into the web3 RPC response block format.
+func (r *Receipt) MarshalJSON() ([]byte, error) {
+ root := common.BytesToHash(r.PostState)
+
+ return json.Marshal(&jsonReceipt{
+ PostState: &root,
+ CumulativeGasUsed: (*hexBig)(r.CumulativeGasUsed),
+ Bloom: &r.Bloom,
+ Logs: &r.Logs,
+ TxHash: &r.TxHash,
+ ContractAddress: &r.ContractAddress,
+ GasUsed: (*hexBig)(r.GasUsed),
+ })
+}
+
+// UnmarshalJSON decodes the web3 RPC receipt format.
+func (r *Receipt) UnmarshalJSON(input []byte) error {
+ var dec jsonReceipt
+ if err := json.Unmarshal(input, &dec); err != nil {
+ return err
}
- return bytes
+ // Ensure that all fields are set. PostState is checked separately because it is a
+ // recent addition to the RPC spec (as of August 2016) and older implementations might
+ // not provide it. Note that ContractAddress is not checked because it can be null.
+ if dec.PostState == nil {
+ return errMissingReceiptPostState
+ }
+ if dec.CumulativeGasUsed == nil || dec.Bloom == nil ||
+ dec.Logs == nil || dec.TxHash == nil || dec.GasUsed == nil {
+ return errMissingReceiptFields
+ }
+ *r = Receipt{
+ PostState: (*dec.PostState)[:],
+ CumulativeGasUsed: (*big.Int)(dec.CumulativeGasUsed),
+ Bloom: *dec.Bloom,
+ Logs: *dec.Logs,
+ TxHash: *dec.TxHash,
+ GasUsed: (*big.Int)(dec.GasUsed),
+ }
+ if dec.ContractAddress != nil {
+ r.ContractAddress = *dec.ContractAddress
+ }
+ return nil
}
// String implements the Stringer interface.
@@ -122,7 +175,7 @@ func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error {
return nil
}
-// Receipts is a wrapper around a Receipt array to implement types.DerivableList.
+// Receipts is a wrapper around a Receipt array to implement DerivableList.
type Receipts []*Receipt
// Len returns the number of receipts in this list.
diff --git a/core/types/transaction.go b/core/types/transaction.go
index c71c98aa7..f0512ae7e 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -19,21 +19,24 @@ package types
import (
"container/heap"
"crypto/ecdsa"
+ "encoding/json"
"errors"
"fmt"
"io"
"math/big"
- "sort"
"sync/atomic"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/rlp"
)
-var ErrInvalidSig = errors.New("invalid v, r, s values")
+var ErrInvalidSig = errors.New("invalid transaction v, r, s values")
+
+var (
+ errMissingTxSignatureFields = errors.New("missing required JSON transaction signature fields")
+ errMissingTxFields = errors.New("missing required JSON transaction fields")
+)
type Transaction struct {
data txdata
@@ -53,6 +56,20 @@ type txdata struct {
R, S *big.Int // signature
}
+type jsonTransaction struct {
+ Hash *common.Hash `json:"hash"`
+ AccountNonce *hexUint64 `json:"nonce"`
+ Price *hexBig `json:"gasPrice"`
+ GasLimit *hexBig `json:"gas"`
+ Recipient *common.Address `json:"to"`
+ Amount *hexBig `json:"value"`
+ Payload *hexBytes `json:"input"`
+ V *hexUint64 `json:"v"`
+ R *hexBig `json:"r"`
+ S *hexBig `json:"s"`
+}
+
+// NewContractCreation creates a new transaction with no recipient.
func NewContractCreation(nonce uint64, amount, gasLimit, gasPrice *big.Int, data []byte) *Transaction {
if len(data) > 0 {
data = common.CopyBytes(data)
@@ -69,6 +86,7 @@ func NewContractCreation(nonce uint64, amount, gasLimit, gasPrice *big.Int, data
}}
}
+// NewTransaction creates a new transaction with the given fields.
func NewTransaction(nonce uint64, to common.Address, amount, gasLimit, gasPrice *big.Int, data []byte) *Transaction {
if len(data) > 0 {
data = common.CopyBytes(data)
@@ -95,10 +113,12 @@ func NewTransaction(nonce uint64, to common.Address, amount, gasLimit, gasPrice
return &Transaction{data: d}
}
+// DecodeRLP implements rlp.Encoder
func (tx *Transaction) EncodeRLP(w io.Writer) error {
return rlp.Encode(w, &tx.data)
}
+// DecodeRLP implements rlp.Decoder
func (tx *Transaction) DecodeRLP(s *rlp.Stream) error {
_, size, _ := s.Kind()
err := s.Decode(&tx.data)
@@ -108,6 +128,60 @@ func (tx *Transaction) DecodeRLP(s *rlp.Stream) error {
return err
}
+// MarshalJSON encodes transactions into the web3 RPC response block format.
+func (tx *Transaction) MarshalJSON() ([]byte, error) {
+ hash, v := tx.Hash(), uint64(tx.data.V)
+
+ return json.Marshal(&jsonTransaction{
+ Hash: &hash,
+ AccountNonce: (*hexUint64)(&tx.data.AccountNonce),
+ Price: (*hexBig)(tx.data.Price),
+ GasLimit: (*hexBig)(tx.data.GasLimit),
+ Recipient: tx.data.Recipient,
+ Amount: (*hexBig)(tx.data.Amount),
+ Payload: (*hexBytes)(&tx.data.Payload),
+ V: (*hexUint64)(&v),
+ R: (*hexBig)(tx.data.R),
+ S: (*hexBig)(tx.data.S),
+ })
+}
+
+// UnmarshalJSON decodes the web3 RPC transaction format.
+func (tx *Transaction) UnmarshalJSON(input []byte) error {
+ var dec jsonTransaction
+ if err := json.Unmarshal(input, &dec); err != nil {
+ return err
+ }
+ // Ensure that all fields are set. V, R, S are checked separately because they're a
+ // recent addition to the RPC spec (as of August 2016) and older implementations might
+ // not provide them. Note that Recipient is not checked because it can be missing for
+ // contract creations.
+ if dec.V == nil || dec.R == nil || dec.S == nil {
+ return errMissingTxSignatureFields
+ }
+ if !crypto.ValidateSignatureValues(byte(*dec.V), (*big.Int)(dec.R), (*big.Int)(dec.S), false) {
+ return ErrInvalidSig
+ }
+ if dec.AccountNonce == nil || dec.Price == nil || dec.GasLimit == nil || dec.Amount == nil || dec.Payload == nil {
+ return errMissingTxFields
+ }
+ // Assign the fields. This is not atomic but reusing transactions
+ // for decoding isn't thread safe anyway.
+ *tx = Transaction{}
+ tx.data = txdata{
+ AccountNonce: uint64(*dec.AccountNonce),
+ Recipient: dec.Recipient,
+ Amount: (*big.Int)(dec.Amount),
+ GasLimit: (*big.Int)(dec.GasLimit),
+ Price: (*big.Int)(dec.Price),
+ Payload: *dec.Payload,
+ V: byte(*dec.V),
+ R: (*big.Int)(dec.R),
+ S: (*big.Int)(dec.S),
+ }
+ return nil
+}
+
func (tx *Transaction) Data() []byte { return common.CopyBytes(tx.data.Payload) }
func (tx *Transaction) Gas() *big.Int { return new(big.Int).Set(tx.data.GasLimit) }
func (tx *Transaction) GasPrice() *big.Int { return new(big.Int).Set(tx.data.Price) }
@@ -215,6 +289,7 @@ func (tx *Transaction) Cost() *big.Int {
return total
}
+// SignatureValues returns the ECDSA signature values contained in the transaction.
func (tx *Transaction) SignatureValues() (v byte, r *big.Int, s *big.Int) {
return tx.data.V, new(big.Int).Set(tx.data.R), new(big.Int).Set(tx.data.S)
}
@@ -235,7 +310,6 @@ func (tx *Transaction) publicKey(homestead bool) ([]byte, error) {
hash := tx.SigHash()
pub, err := crypto.Ecrecover(hash[:], sig)
if err != nil {
- glog.V(logger.Error).Infof("Could not get pubkey from signature: ", err)
return nil, err
}
if len(pub) == 0 || pub[0] != 4 {
@@ -370,49 +444,58 @@ func (s *TxByPrice) Pop() interface{} {
return x
}
-// SortByPriceAndNonce sorts the transactions by price in such a way that the
-// nonce orderings within a single account are maintained.
-//
-// Note, this is not as trivial as it seems from the first look as there are three
-// different criteria that need to be taken into account (price, nonce, account
-// match), which cannot be done with any plain sorting method, as certain items
-// cannot be compared without context.
+// TransactionsByPriceAndNonce represents a set of transactions that can return
+// transactions in a profit-maximising sorted order, while supporting removing
+// entire batches of transactions for non-executable accounts.
+type TransactionsByPriceAndNonce struct {
+ txs map[common.Address]Transactions // Per account nonce-sorted list of transactions
+ heads TxByPrice // Next transaction for each unique account (price heap)
+}
+
+// NewTransactionsByPriceAndNonce creates a transaction set that can retrieve
+// price sorted transactions in a nonce-honouring way.
//
-// This method first sorts the separates the list of transactions into individual
-// sender accounts and sorts them by nonce. After the account nonce ordering is
-// satisfied, the results are merged back together by price, always comparing only
-// the head transaction from each account. This is done via a heap to keep it fast.
-func SortByPriceAndNonce(txs []*Transaction) {
- // Separate the transactions by account and sort by nonce
- byNonce := make(map[common.Address][]*Transaction)
- for _, tx := range txs {
- acc, _ := tx.From() // we only sort valid txs so this cannot fail
- byNonce[acc] = append(byNonce[acc], tx)
+// Note, the input map is reowned so the caller should not interact any more with
+// if after providng it to the constructor.
+func NewTransactionsByPriceAndNonce(txs map[common.Address]Transactions) *TransactionsByPriceAndNonce {
+ // Initialize a price based heap with the head transactions
+ heads := make(TxByPrice, 0, len(txs))
+ for acc, accTxs := range txs {
+ heads = append(heads, accTxs[0])
+ txs[acc] = accTxs[1:]
}
- for _, accTxs := range byNonce {
- sort.Sort(TxByNonce(accTxs))
+ heap.Init(&heads)
+
+ // Assemble and return the transaction set
+ return &TransactionsByPriceAndNonce{
+ txs: txs,
+ heads: heads,
}
- // Initialize a price based heap with the head transactions
- byPrice := make(TxByPrice, 0, len(byNonce))
- for acc, accTxs := range byNonce {
- byPrice = append(byPrice, accTxs[0])
- byNonce[acc] = accTxs[1:]
+}
+
+// Peek returns the next transaction by price.
+func (t *TransactionsByPriceAndNonce) Peek() *Transaction {
+ if len(t.heads) == 0 {
+ return nil
}
- heap.Init(&byPrice)
-
- // Merge by replacing the best with the next from the same account
- txs = txs[:0]
- for len(byPrice) > 0 {
- // Retrieve the next best transaction by price
- best := heap.Pop(&byPrice).(*Transaction)
-
- // Push in its place the next transaction from the same account
- acc, _ := best.From() // we only sort valid txs so this cannot fail
- if accTxs, ok := byNonce[acc]; ok && len(accTxs) > 0 {
- heap.Push(&byPrice, accTxs[0])
- byNonce[acc] = accTxs[1:]
- }
- // Accumulate the best priced transaction
- txs = append(txs, best)
+ return t.heads[0]
+}
+
+// Shift replaces the current best head with the next one from the same account.
+func (t *TransactionsByPriceAndNonce) Shift() {
+ acc, _ := t.heads[0].From() // we only sort valid txs so this cannot fail
+
+ if txs, ok := t.txs[acc]; ok && len(txs) > 0 {
+ t.heads[0], t.txs[acc] = txs[0], txs[1:]
+ heap.Fix(&t.heads, 0)
+ } else {
+ heap.Pop(&t.heads)
}
}
+
+// Pop removes the best transaction, *not* replacing it with the next one from
+// the same account. This should be used when a transaction cannot be executed
+// and hence all subsequent ones should be discarded from the same account.
+func (t *TransactionsByPriceAndNonce) Pop() {
+ heap.Pop(&t.heads)
+}
diff --git a/core/types/transaction_test.go b/core/types/transaction_test.go
index 62420e71f..8b0b02c3e 100644
--- a/core/types/transaction_test.go
+++ b/core/types/transaction_test.go
@@ -128,15 +128,25 @@ func TestTransactionPriceNonceSort(t *testing.T) {
keys[i], _ = crypto.GenerateKey()
}
// Generate a batch of transactions with overlapping values, but shifted nonces
- txs := []*Transaction{}
+ groups := map[common.Address]Transactions{}
for start, key := range keys {
+ addr := crypto.PubkeyToAddress(key.PublicKey)
for i := 0; i < 25; i++ {
tx, _ := NewTransaction(uint64(start+i), common.Address{}, big.NewInt(100), big.NewInt(100), big.NewInt(int64(start+i)), nil).SignECDSA(key)
- txs = append(txs, tx)
+ groups[addr] = append(groups[addr], tx)
}
}
// Sort the transactions and cross check the nonce ordering
- SortByPriceAndNonce(txs)
+ txset := NewTransactionsByPriceAndNonce(groups)
+
+ txs := Transactions{}
+ for {
+ if tx := txset.Peek(); tx != nil {
+ txs = append(txs, tx)
+ txset.Shift()
+ }
+ break
+ }
for i, txi := range txs {
fromi, _ := txi.From()
diff --git a/core/vm/contracts.go b/core/vm/contracts.go
index 5cc9f903b..b45f14724 100644
--- a/core/vm/contracts.go
+++ b/core/vm/contracts.go
@@ -95,7 +95,7 @@ func ecrecoverFunc(in []byte) []byte {
// tighter sig s values in homestead only apply to tx sigs
if !crypto.ValidateSignatureValues(v, r, s, false) {
- glog.V(logger.Debug).Infof("EC RECOVER FAIL: v, r or s value invalid")
+ glog.V(logger.Detail).Infof("ECRECOVER error: v, r or s value invalid")
return nil
}
@@ -106,7 +106,7 @@ func ecrecoverFunc(in []byte) []byte {
pubKey, err := crypto.Ecrecover(in[:32], rsv)
// make sure the public key is a valid one
if err != nil {
- glog.V(logger.Error).Infof("EC RECOVER FAIL: ", err)
+ glog.V(logger.Detail).Infoln("ECRECOVER error: ", err)
return nil
}
diff --git a/core/vm/environment.go b/core/vm/environment.go
index 664887454..747627565 100644
--- a/core/vm/environment.go
+++ b/core/vm/environment.go
@@ -73,8 +73,6 @@ type Environment interface {
DelegateCall(me ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error)
// Create a new contract
Create(me ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error)
-
- StructLogs() []StructLog
}
// Vm is the basic interface for an implementation of the EVM.
diff --git a/core/vm/gas.go b/core/vm/gas.go
index 09feddd7d..eb2c16346 100644
--- a/core/vm/gas.go
+++ b/core/vm/gas.go
@@ -38,7 +38,7 @@ var (
)
// baseCheck checks for any stack error underflows
-func baseCheck(op OpCode, stack *stack, gas *big.Int) error {
+func baseCheck(op OpCode, stack *Stack, gas *big.Int) error {
// PUSH and DUP are a bit special. They all cost the same but we do want to have checking on stack push limit
// PUSH is also allowed to calculate the same price for all PUSHes
// DUP requirements are handled elsewhere (except for the stack limit check)
diff --git a/core/vm/instructions.go b/core/vm/instructions.go
index e2fc5ee0f..a95ba26c5 100644
--- a/core/vm/instructions.go
+++ b/core/vm/instructions.go
@@ -27,14 +27,14 @@ import (
type programInstruction interface {
// executes the program instruction and allows the instruction to modify the state of the program
- do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) ([]byte, error)
+ do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) ([]byte, error)
// returns whether the program instruction halts the execution of the JIT
halts() bool
// Returns the current op code (debugging purposes)
Op() OpCode
}
-type instrFn func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack)
+type instrFn func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack)
type instruction struct {
op OpCode
@@ -58,7 +58,7 @@ func jump(mapping map[uint64]uint64, destinations map[uint64]struct{}, contract
return mapping[to.Uint64()], nil
}
-func (instr instruction) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) ([]byte, error) {
+func (instr instruction) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
// calculate the new memory size and gas price for the current executing opcode
newMemSize, cost, err := jitCalculateGasAndSize(env, contract, instr, env.Db(), memory, stack)
if err != nil {
@@ -114,26 +114,26 @@ func (instr instruction) Op() OpCode {
return instr.op
}
-func opStaticJump(instr instruction, pc *uint64, ret *big.Int, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opStaticJump(instr instruction, pc *uint64, ret *big.Int, env Environment, contract *Contract, memory *Memory, stack *Stack) {
ret.Set(instr.data)
}
-func opAdd(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opAdd(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(U256(x.Add(x, y)))
}
-func opSub(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSub(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(U256(x.Sub(x, y)))
}
-func opMul(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMul(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(U256(x.Mul(x, y)))
}
-func opDiv(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opDiv(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
if y.Cmp(common.Big0) != 0 {
stack.push(U256(x.Div(x, y)))
@@ -142,7 +142,7 @@ func opDiv(instr instruction, pc *uint64, env Environment, contract *Contract, m
}
}
-func opSdiv(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSdiv(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := S256(stack.pop()), S256(stack.pop())
if y.Cmp(common.Big0) == 0 {
stack.push(new(big.Int))
@@ -162,7 +162,7 @@ func opSdiv(instr instruction, pc *uint64, env Environment, contract *Contract,
}
}
-func opMod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
if y.Cmp(common.Big0) == 0 {
stack.push(new(big.Int))
@@ -171,7 +171,7 @@ func opMod(instr instruction, pc *uint64, env Environment, contract *Contract, m
}
}
-func opSmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := S256(stack.pop()), S256(stack.pop())
if y.Cmp(common.Big0) == 0 {
@@ -191,12 +191,12 @@ func opSmod(instr instruction, pc *uint64, env Environment, contract *Contract,
}
}
-func opExp(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opExp(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(U256(x.Exp(x, y, Pow256)))
}
-func opSignExtend(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSignExtend(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
back := stack.pop()
if back.Cmp(big.NewInt(31)) < 0 {
bit := uint(back.Uint64()*8 + 7)
@@ -213,12 +213,12 @@ func opSignExtend(instr instruction, pc *uint64, env Environment, contract *Cont
}
}
-func opNot(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opNot(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x := stack.pop()
stack.push(U256(x.Not(x)))
}
-func opLt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opLt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
if x.Cmp(y) < 0 {
stack.push(big.NewInt(1))
@@ -227,7 +227,7 @@ func opLt(instr instruction, pc *uint64, env Environment, contract *Contract, me
}
}
-func opGt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opGt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
if x.Cmp(y) > 0 {
stack.push(big.NewInt(1))
@@ -236,7 +236,7 @@ func opGt(instr instruction, pc *uint64, env Environment, contract *Contract, me
}
}
-func opSlt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSlt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := S256(stack.pop()), S256(stack.pop())
if x.Cmp(S256(y)) < 0 {
stack.push(big.NewInt(1))
@@ -245,7 +245,7 @@ func opSlt(instr instruction, pc *uint64, env Environment, contract *Contract, m
}
}
-func opSgt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSgt(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := S256(stack.pop()), S256(stack.pop())
if x.Cmp(y) > 0 {
stack.push(big.NewInt(1))
@@ -254,7 +254,7 @@ func opSgt(instr instruction, pc *uint64, env Environment, contract *Contract, m
}
}
-func opEq(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opEq(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
if x.Cmp(y) == 0 {
stack.push(big.NewInt(1))
@@ -263,7 +263,7 @@ func opEq(instr instruction, pc *uint64, env Environment, contract *Contract, me
}
}
-func opIszero(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opIszero(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x := stack.pop()
if x.Cmp(common.Big0) > 0 {
stack.push(new(big.Int))
@@ -272,19 +272,19 @@ func opIszero(instr instruction, pc *uint64, env Environment, contract *Contract
}
}
-func opAnd(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opAnd(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(x.And(x, y))
}
-func opOr(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opOr(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(x.Or(x, y))
}
-func opXor(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opXor(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y := stack.pop(), stack.pop()
stack.push(x.Xor(x, y))
}
-func opByte(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opByte(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
th, val := stack.pop(), stack.pop()
if th.Cmp(big.NewInt(32)) < 0 {
byte := big.NewInt(int64(common.LeftPadBytes(val.Bytes(), 32)[th.Int64()]))
@@ -293,7 +293,7 @@ func opByte(instr instruction, pc *uint64, env Environment, contract *Contract,
stack.push(new(big.Int))
}
}
-func opAddmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opAddmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y, z := stack.pop(), stack.pop(), stack.pop()
if z.Cmp(Zero) > 0 {
add := x.Add(x, y)
@@ -303,7 +303,7 @@ func opAddmod(instr instruction, pc *uint64, env Environment, contract *Contract
stack.push(new(big.Int))
}
}
-func opMulmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMulmod(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
x, y, z := stack.pop(), stack.pop(), stack.pop()
if z.Cmp(Zero) > 0 {
mul := x.Mul(x, y)
@@ -314,45 +314,45 @@ func opMulmod(instr instruction, pc *uint64, env Environment, contract *Contract
}
}
-func opSha3(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSha3(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
offset, size := stack.pop(), stack.pop()
hash := crypto.Keccak256(memory.Get(offset.Int64(), size.Int64()))
stack.push(common.BytesToBig(hash))
}
-func opAddress(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opAddress(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(common.Bytes2Big(contract.Address().Bytes()))
}
-func opBalance(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opBalance(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
addr := common.BigToAddress(stack.pop())
balance := env.Db().GetBalance(addr)
stack.push(new(big.Int).Set(balance))
}
-func opOrigin(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opOrigin(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(env.Origin().Big())
}
-func opCaller(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCaller(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(contract.Caller().Big())
}
-func opCallValue(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCallValue(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(new(big.Int).Set(contract.value))
}
-func opCalldataLoad(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCalldataLoad(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(common.Bytes2Big(getData(contract.Input, stack.pop(), common.Big32)))
}
-func opCalldataSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCalldataSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(big.NewInt(int64(len(contract.Input))))
}
-func opCalldataCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCalldataCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
var (
mOff = stack.pop()
cOff = stack.pop()
@@ -361,18 +361,18 @@ func opCalldataCopy(instr instruction, pc *uint64, env Environment, contract *Co
memory.Set(mOff.Uint64(), l.Uint64(), getData(contract.Input, cOff, l))
}
-func opExtCodeSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opExtCodeSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
addr := common.BigToAddress(stack.pop())
l := big.NewInt(int64(len(env.Db().GetCode(addr))))
stack.push(l)
}
-func opCodeSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCodeSize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
l := big.NewInt(int64(len(contract.Code)))
stack.push(l)
}
-func opCodeCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCodeCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
var (
mOff = stack.pop()
cOff = stack.pop()
@@ -383,7 +383,7 @@ func opCodeCopy(instr instruction, pc *uint64, env Environment, contract *Contra
memory.Set(mOff.Uint64(), l.Uint64(), codeCopy)
}
-func opExtCodeCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opExtCodeCopy(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
var (
addr = common.BigToAddress(stack.pop())
mOff = stack.pop()
@@ -395,11 +395,11 @@ func opExtCodeCopy(instr instruction, pc *uint64, env Environment, contract *Con
memory.Set(mOff.Uint64(), l.Uint64(), codeCopy)
}
-func opGasprice(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opGasprice(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(new(big.Int).Set(contract.Price))
}
-func opBlockhash(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opBlockhash(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
num := stack.pop()
n := new(big.Int).Sub(env.BlockNumber(), common.Big257)
@@ -410,43 +410,43 @@ func opBlockhash(instr instruction, pc *uint64, env Environment, contract *Contr
}
}
-func opCoinbase(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCoinbase(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(env.Coinbase().Big())
}
-func opTimestamp(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opTimestamp(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(U256(new(big.Int).Set(env.Time())))
}
-func opNumber(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opNumber(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(U256(new(big.Int).Set(env.BlockNumber())))
}
-func opDifficulty(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opDifficulty(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(U256(new(big.Int).Set(env.Difficulty())))
}
-func opGasLimit(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opGasLimit(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(U256(new(big.Int).Set(env.GasLimit())))
}
-func opPop(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opPop(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.pop()
}
-func opPush(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opPush(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(new(big.Int).Set(instr.data))
}
-func opDup(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opDup(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.dup(int(instr.data.Int64()))
}
-func opSwap(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSwap(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.swap(int(instr.data.Int64()))
}
-func opLog(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opLog(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
n := int(instr.data.Int64())
topics := make([]common.Hash, n)
mStart, mSize := stack.pop(), stack.pop()
@@ -459,55 +459,55 @@ func opLog(instr instruction, pc *uint64, env Environment, contract *Contract, m
env.AddLog(log)
}
-func opMload(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMload(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
offset := stack.pop()
val := common.BigD(memory.Get(offset.Int64(), 32))
stack.push(val)
}
-func opMstore(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMstore(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
// pop value of the stack
mStart, val := stack.pop(), stack.pop()
memory.Set(mStart.Uint64(), 32, common.BigToBytes(val, 256))
}
-func opMstore8(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMstore8(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
off, val := stack.pop().Int64(), stack.pop().Int64()
memory.store[off] = byte(val & 0xff)
}
-func opSload(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSload(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
loc := common.BigToHash(stack.pop())
val := env.Db().GetState(contract.Address(), loc).Big()
stack.push(val)
}
-func opSstore(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSstore(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
loc := common.BigToHash(stack.pop())
val := stack.pop()
env.Db().SetState(contract.Address(), loc, common.BigToHash(val))
}
-func opJump(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opJump(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
}
-func opJumpi(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opJumpi(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
}
-func opJumpdest(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opJumpdest(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
}
-func opPc(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opPc(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(new(big.Int).Set(instr.data))
}
-func opMsize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opMsize(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(big.NewInt(int64(memory.Len())))
}
-func opGas(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opGas(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.push(new(big.Int).Set(contract.Gas))
}
-func opCreate(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCreate(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
var (
value = stack.pop()
offset, size = stack.pop(), stack.pop()
@@ -529,7 +529,7 @@ func opCreate(instr instruction, pc *uint64, env Environment, contract *Contract
}
}
-func opCall(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCall(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
gas := stack.pop()
// pop gas and value of the stack.
addr, value := stack.pop(), stack.pop()
@@ -560,7 +560,7 @@ func opCall(instr instruction, pc *uint64, env Environment, contract *Contract,
}
}
-func opCallCode(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opCallCode(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
gas := stack.pop()
// pop gas and value of the stack.
addr, value := stack.pop(), stack.pop()
@@ -591,7 +591,7 @@ func opCallCode(instr instruction, pc *uint64, env Environment, contract *Contra
}
}
-func opDelegateCall(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opDelegateCall(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
gas, to, inOffset, inSize, outOffset, outSize := stack.pop(), stack.pop(), stack.pop(), stack.pop(), stack.pop(), stack.pop()
toAddr := common.BigToAddress(to)
@@ -605,12 +605,12 @@ func opDelegateCall(instr instruction, pc *uint64, env Environment, contract *Co
}
}
-func opReturn(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opReturn(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
}
-func opStop(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opStop(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
}
-func opSuicide(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+func opSuicide(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
balance := env.Db().GetBalance(contract.Address())
env.Db().AddBalance(common.BigToAddress(stack.pop()), balance)
@@ -621,7 +621,7 @@ func opSuicide(instr instruction, pc *uint64, env Environment, contract *Contrac
// make log instruction function
func makeLog(size int) instrFn {
- return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+ return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
topics := make([]common.Hash, size)
mStart, mSize := stack.pop(), stack.pop()
for i := 0; i < size; i++ {
@@ -636,7 +636,7 @@ func makeLog(size int) instrFn {
// make push instruction function
func makePush(size uint64, bsize *big.Int) instrFn {
- return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+ return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
byts := getData(contract.Code, new(big.Int).SetUint64(*pc+1), bsize)
stack.push(common.Bytes2Big(byts))
*pc += size
@@ -645,7 +645,7 @@ func makePush(size uint64, bsize *big.Int) instrFn {
// make push instruction function
func makeDup(size int64) instrFn {
- return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+ return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.dup(int(size))
}
}
@@ -654,7 +654,7 @@ func makeDup(size int64) instrFn {
func makeSwap(size int64) instrFn {
// switch n + 1 otherwise n would be swapped with n
size += 1
- return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) {
+ return func(instr instruction, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) {
stack.swap(int(size))
}
}
diff --git a/core/vm/jit.go b/core/vm/jit.go
index f56d7c1af..460a68ddd 100644
--- a/core/vm/jit.go
+++ b/core/vm/jit.go
@@ -303,7 +303,7 @@ func RunProgram(program *Program, env Environment, contract *Contract, input []b
return runProgram(program, 0, NewMemory(), newstack(), env, contract, input)
}
-func runProgram(program *Program, pcstart uint64, mem *Memory, stack *stack, env Environment, contract *Contract, input []byte) ([]byte, error) {
+func runProgram(program *Program, pcstart uint64, mem *Memory, stack *Stack, env Environment, contract *Contract, input []byte) ([]byte, error) {
contract.Input = input
var (
@@ -357,7 +357,7 @@ func validDest(dests map[uint64]struct{}, dest *big.Int) bool {
// jitCalculateGasAndSize calculates the required given the opcode and stack items calculates the new memorysize for
// the operation. This does not reduce gas or resizes the memory.
-func jitCalculateGasAndSize(env Environment, contract *Contract, instr instruction, statedb Database, mem *Memory, stack *stack) (*big.Int, *big.Int, error) {
+func jitCalculateGasAndSize(env Environment, contract *Contract, instr instruction, statedb Database, mem *Memory, stack *Stack) (*big.Int, *big.Int, error) {
var (
gas = new(big.Int)
newMemSize *big.Int = new(big.Int)
@@ -421,7 +421,7 @@ func jitCalculateGasAndSize(env Environment, contract *Contract, instr instructi
g = params.SstoreClearGas
} else {
- g = params.SstoreClearGas
+ g = params.SstoreResetGas
}
gas.Set(g)
case SUICIDE:
@@ -491,7 +491,7 @@ func jitCalculateGasAndSize(env Environment, contract *Contract, instr instructi
// jitBaseCheck is the same as baseCheck except it doesn't do the look up in the
// gas table. This is done during compilation instead.
-func jitBaseCheck(instr instruction, stack *stack, gas *big.Int) error {
+func jitBaseCheck(instr instruction, stack *Stack, gas *big.Int) error {
err := stack.require(instr.spop)
if err != nil {
return err
diff --git a/core/vm/jit_test.go b/core/vm/jit_test.go
index 403c15a8d..809abfea9 100644
--- a/core/vm/jit_test.go
+++ b/core/vm/jit_test.go
@@ -85,7 +85,7 @@ func TestCompiling(t *testing.T) {
func TestResetInput(t *testing.T) {
var sender account
- env := NewEnv(false, true)
+ env := NewEnv(&Config{EnableJit: true, ForceJit: true})
contract := NewContract(sender, sender, big.NewInt(100), big.NewInt(10000), big.NewInt(0))
contract.CodeAddr = &common.Address{}
@@ -144,7 +144,7 @@ func runVmBench(test vmBench, b *testing.B) {
if test.precompile && !test.forcejit {
NewProgram(test.code)
}
- env := NewEnv(test.nojit, test.forcejit)
+ env := NewEnv(&Config{EnableJit: !test.nojit, ForceJit: test.forcejit})
b.ResetTimer()
@@ -166,12 +166,9 @@ type Env struct {
evm *EVM
}
-func NewEnv(noJit, forceJit bool) *Env {
+func NewEnv(config *Config) *Env {
env := &Env{gasLimit: big.NewInt(10000), depth: 0}
- env.evm = New(env, Config{
- EnableJit: !noJit,
- ForceJit: forceJit,
- })
+ env.evm = New(env, *config)
return env
}
@@ -179,11 +176,6 @@ func (self *Env) RuleSet() RuleSet { return ruleSet{new(big.Int)} }
func (self *Env) Vm() Vm { return self.evm }
func (self *Env) Origin() common.Address { return common.Address{} }
func (self *Env) BlockNumber() *big.Int { return big.NewInt(0) }
-func (self *Env) AddStructLog(log StructLog) {
-}
-func (self *Env) StructLogs() []StructLog {
- return nil
-}
//func (self *Env) PrevHash() []byte { return self.parent }
func (self *Env) Coinbase() common.Address { return common.Address{} }
diff --git a/core/vm/log.go b/core/vm/log.go
index e4cc6021b..b292f5f43 100644
--- a/core/vm/log.go
+++ b/core/vm/log.go
@@ -18,6 +18,7 @@ package vm
import (
"encoding/json"
+ "errors"
"fmt"
"io"
@@ -25,18 +26,33 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
+var errMissingLogFields = errors.New("missing required JSON log fields")
+
+// Log represents a contract log event. These events are generated by the LOG
+// opcode and stored/indexed by the node.
type Log struct {
- // Consensus fields
- Address common.Address
- Topics []common.Hash
- Data []byte
+ // Consensus fields.
+ Address common.Address // address of the contract that generated the event
+ Topics []common.Hash // list of topics provided by the contract.
+ Data []byte // supplied by the contract, usually ABI-encoded
+
+ // Derived fields (don't reorder!).
+ BlockNumber uint64 // block in which the transaction was included
+ TxHash common.Hash // hash of the transaction
+ TxIndex uint // index of the transaction in the block
+ BlockHash common.Hash // hash of the block in which the transaction was included
+ Index uint // index of the log in the receipt
+}
- // Derived fields (don't reorder!)
- BlockNumber uint64
- TxHash common.Hash
- TxIndex uint
- BlockHash common.Hash
- Index uint
+type jsonLog struct {
+ Address *common.Address `json:"address"`
+ Topics *[]common.Hash `json:"topics"`
+ Data string `json:"data"`
+ BlockNumber string `json:"blockNumber"`
+ TxIndex string `json:"transactionIndex"`
+ TxHash *common.Hash `json:"transactionHash"`
+ BlockHash *common.Hash `json:"blockHash"`
+ Index string `json:"logIndex"`
}
func NewLog(address common.Address, topics []common.Hash, data []byte, number uint64) *Log {
@@ -64,19 +80,50 @@ func (l *Log) String() string {
return fmt.Sprintf(`log: %x %x %x %x %d %x %d`, l.Address, l.Topics, l.Data, l.TxHash, l.TxIndex, l.BlockHash, l.Index)
}
+// MarshalJSON implements json.Marshaler.
func (r *Log) MarshalJSON() ([]byte, error) {
- fields := map[string]interface{}{
- "address": r.Address,
- "data": fmt.Sprintf("%#x", r.Data),
- "blockNumber": fmt.Sprintf("%#x", r.BlockNumber),
- "logIndex": fmt.Sprintf("%#x", r.Index),
- "blockHash": r.BlockHash,
- "transactionHash": r.TxHash,
- "transactionIndex": fmt.Sprintf("%#x", r.TxIndex),
- "topics": r.Topics,
- }
+ return json.Marshal(&jsonLog{
+ Address: &r.Address,
+ Topics: &r.Topics,
+ Data: fmt.Sprintf("0x%x", r.Data),
+ BlockNumber: fmt.Sprintf("0x%x", r.BlockNumber),
+ TxIndex: fmt.Sprintf("0x%x", r.TxIndex),
+ TxHash: &r.TxHash,
+ BlockHash: &r.BlockHash,
+ Index: fmt.Sprintf("0x%x", r.Index),
+ })
+}
- return json.Marshal(fields)
+// UnmarshalJSON implements json.Umarshaler.
+func (r *Log) UnmarshalJSON(input []byte) error {
+ var dec jsonLog
+ if err := json.Unmarshal(input, &dec); err != nil {
+ return err
+ }
+ if dec.Address == nil || dec.Topics == nil || dec.Data == "" || dec.BlockNumber == "" ||
+ dec.TxIndex == "" || dec.TxHash == nil || dec.BlockHash == nil || dec.Index == "" {
+ return errMissingLogFields
+ }
+ declog := Log{
+ Address: *dec.Address,
+ Topics: *dec.Topics,
+ TxHash: *dec.TxHash,
+ BlockHash: *dec.BlockHash,
+ }
+ if _, err := fmt.Sscanf(dec.Data, "0x%x", &declog.Data); err != nil {
+ return fmt.Errorf("invalid hex log data")
+ }
+ if _, err := fmt.Sscanf(dec.BlockNumber, "0x%x", &declog.BlockNumber); err != nil {
+ return fmt.Errorf("invalid hex log block number")
+ }
+ if _, err := fmt.Sscanf(dec.TxIndex, "0x%x", &declog.TxIndex); err != nil {
+ return fmt.Errorf("invalid hex log tx index")
+ }
+ if _, err := fmt.Sscanf(dec.Index, "0x%x", &declog.Index); err != nil {
+ return fmt.Errorf("invalid hex log index")
+ }
+ *r = declog
+ return nil
}
type Logs []*Log
diff --git a/core/vm/log_test.go b/core/vm/log_test.go
new file mode 100644
index 000000000..775016f9c
--- /dev/null
+++ b/core/vm/log_test.go
@@ -0,0 +1,59 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package vm
+
+import (
+ "encoding/json"
+ "testing"
+)
+
+var unmarshalLogTests = map[string]struct {
+ input string
+ wantError error
+}{
+ "ok": {
+ input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x000000000000000000000000000000000000000000000001a055690d9db80000","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
+ },
+ "missing data": {
+ input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
+ wantError: errMissingLogFields,
+ },
+}
+
+func TestUnmarshalLog(t *testing.T) {
+ for name, test := range unmarshalLogTests {
+ var log *Log
+ err := json.Unmarshal([]byte(test.input), &log)
+ checkError(t, name, err, test.wantError)
+ }
+}
+
+func checkError(t *testing.T, testname string, got, want error) bool {
+ if got == nil {
+ if want != nil {
+ t.Errorf("test %q: got no error, want %q", testname, want)
+ return false
+ }
+ return true
+ }
+ if want == nil {
+ t.Errorf("test %q: unexpected error %q", testname, got)
+ } else if got.Error() != want.Error() {
+ t.Errorf("test %q: got error %q, want %q", testname, got, want)
+ }
+ return false
+}
diff --git a/core/vm/logger.go b/core/vm/logger.go
index cbdc8a744..ae62b6b57 100644
--- a/core/vm/logger.go
+++ b/core/vm/logger.go
@@ -36,19 +36,12 @@ func (self Storage) Copy() Storage {
return cpy
}
-// StructLogCollector is the basic interface to capture emited logs by the EVM logger.
-type StructLogCollector interface {
- // Adds the structured log to the collector.
- AddStructLog(StructLog)
-}
-
// LogConfig are the configuration options for structured logger the EVM
type LogConfig struct {
- DisableMemory bool // disable memory capture
- DisableStack bool // disable stack capture
- DisableStorage bool // disable storage capture
- FullStorage bool // show full storage (slow)
- Collector StructLogCollector // the log collector
+ DisableMemory bool // disable memory capture
+ DisableStack bool // disable stack capture
+ DisableStorage bool // disable storage capture
+ FullStorage bool // show full storage (slow)
}
// StructLog is emitted to the Environment each cycle and lists information about the current internal state
@@ -65,36 +58,42 @@ type StructLog struct {
Err error
}
-// Logger is an EVM state logger and implements VmLogger.
+// Tracer is used to collect execution traces from an EVM transaction
+// execution. CaptureState is called for each step of the VM with the
+// current VM state.
+// Note that reference types are actual VM data structures; make copies
+// if you need to retain them beyond the current call.
+type Tracer interface {
+ CaptureState(env Environment, pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, stack *Stack, contract *Contract, depth int, err error)
+}
+
+// StructLogger is an EVM state logger and implements Tracer.
//
-// Logger can capture state based on the given Log configuration and also keeps
+// StructLogger can capture state based on the given Log configuration and also keeps
// a track record of modified storage which is used in reporting snapshots of the
// contract their storage.
-type Logger struct {
+type StructLogger struct {
cfg LogConfig
- env Environment
+ logs []StructLog
changedValues map[common.Address]Storage
}
-// newLogger returns a new logger
-func newLogger(cfg LogConfig, env Environment) *Logger {
- return &Logger{
- cfg: cfg,
- env: env,
+// NewLogger returns a new logger
+func NewStructLogger(cfg *LogConfig) *StructLogger {
+ logger := &StructLogger{
changedValues: make(map[common.Address]Storage),
}
+ if cfg != nil {
+ logger.cfg = *cfg
+ }
+ return logger
}
// captureState logs a new structured log message and pushes it out to the environment
//
// captureState also tracks SSTORE ops to track dirty values.
-func (l *Logger) captureState(pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, stack *stack, contract *Contract, depth int, err error) {
- // short circuit if no log collector is present
- if l.cfg.Collector == nil {
- return
- }
-
+func (l *StructLogger) CaptureState(env Environment, pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, stack *Stack, contract *Contract, depth int, err error) {
// initialise new changed values storage container for this contract
// if not present.
if l.changedValues[contract.Address()] == nil {
@@ -139,7 +138,7 @@ func (l *Logger) captureState(pc uint64, op OpCode, gas, cost *big.Int, memory *
storage = make(Storage)
// Get the contract account and loop over each storage entry. This may involve looping over
// the trie and is a very expensive process.
- l.env.Db().GetAccount(contract.Address()).ForEachStorage(func(key, value common.Hash) bool {
+ env.Db().GetAccount(contract.Address()).ForEachStorage(func(key, value common.Hash) bool {
storage[key] = value
// Return true, indicating we'd like to continue.
return true
@@ -150,9 +149,14 @@ func (l *Logger) captureState(pc uint64, op OpCode, gas, cost *big.Int, memory *
}
}
// create a new snaptshot of the EVM.
- log := StructLog{pc, op, new(big.Int).Set(gas), cost, mem, stck, storage, l.env.Depth(), err}
- // Add the log to the collector
- l.cfg.Collector.AddStructLog(log)
+ log := StructLog{pc, op, new(big.Int).Set(gas), cost, mem, stck, storage, env.Depth(), err}
+
+ l.logs = append(l.logs, log)
+}
+
+// StructLogs returns a list of captured log entries
+func (l *StructLogger) StructLogs() []StructLog {
+ return l.logs
}
// StdErrFormat formats a slice of StructLogs to human readable format
diff --git a/core/vm/logger_test.go b/core/vm/logger_test.go
index 144569865..e85bca227 100644
--- a/core/vm/logger_test.go
+++ b/core/vm/logger_test.go
@@ -47,19 +47,18 @@ type dummyEnv struct {
func newDummyEnv(ref *dummyContractRef) *dummyEnv {
return &dummyEnv{
- Env: NewEnv(true, false),
+ Env: NewEnv(&Config{EnableJit: false, ForceJit: false}),
ref: ref,
}
}
func (d dummyEnv) GetAccount(common.Address) Account {
return d.ref
}
-func (d dummyEnv) AddStructLog(StructLog) {}
func TestStoreCapture(t *testing.T) {
var (
- env = NewEnv(true, false)
- logger = newLogger(LogConfig{Collector: env}, env)
+ env = NewEnv(&Config{EnableJit: false, ForceJit: false})
+ logger = NewStructLogger(nil)
mem = NewMemory()
stack = newstack()
contract = NewContract(&dummyContractRef{}, &dummyContractRef{}, new(big.Int), new(big.Int), new(big.Int))
@@ -69,7 +68,7 @@ func TestStoreCapture(t *testing.T) {
var index common.Hash
- logger.captureState(0, SSTORE, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
+ logger.CaptureState(env, 0, SSTORE, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
if len(logger.changedValues[contract.Address()]) == 0 {
t.Fatalf("expected exactly 1 changed value on address %x, got %d", contract.Address(), len(logger.changedValues[contract.Address()]))
}
@@ -86,18 +85,18 @@ func TestStorageCapture(t *testing.T) {
ref = &dummyContractRef{}
contract = NewContract(ref, ref, new(big.Int), new(big.Int), new(big.Int))
env = newDummyEnv(ref)
- logger = newLogger(LogConfig{Collector: env}, env)
+ logger = NewStructLogger(nil)
mem = NewMemory()
stack = newstack()
)
- logger.captureState(0, STOP, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
+ logger.CaptureState(env, 0, STOP, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
if ref.calledForEach {
t.Error("didn't expect for each to be called")
}
- logger = newLogger(LogConfig{Collector: env, FullStorage: true}, env)
- logger.captureState(0, STOP, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
+ logger = NewStructLogger(&LogConfig{FullStorage: true})
+ logger.CaptureState(env, 0, STOP, new(big.Int), new(big.Int), mem, stack, contract, 0, nil)
if !ref.calledForEach {
t.Error("expected for each to be called")
}
diff --git a/core/vm/runtime/env.go b/core/vm/runtime/env.go
index d8c98e545..a4793c98f 100644
--- a/core/vm/runtime/env.go
+++ b/core/vm/runtime/env.go
@@ -39,8 +39,6 @@ type Env struct {
difficulty *big.Int
gasLimit *big.Int
- logs []vm.StructLog
-
getHashFn func(uint64) common.Hash
evm *vm.EVM
@@ -62,23 +60,11 @@ func NewEnv(cfg *Config, state *state.StateDB) vm.Environment {
Debug: cfg.Debug,
EnableJit: !cfg.DisableJit,
ForceJit: !cfg.DisableJit,
-
- Logger: vm.LogConfig{
- Collector: env,
- },
})
return env
}
-func (self *Env) StructLogs() []vm.StructLog {
- return self.logs
-}
-
-func (self *Env) AddStructLog(log vm.StructLog) {
- self.logs = append(self.logs, log)
-}
-
func (self *Env) RuleSet() vm.RuleSet { return self.ruleSet }
func (self *Env) Vm() vm.Vm { return self.evm }
func (self *Env) Origin() common.Address { return self.origin }
diff --git a/core/vm/segments.go b/core/vm/segments.go
index c69ceddf4..648d8a04a 100644
--- a/core/vm/segments.go
+++ b/core/vm/segments.go
@@ -24,7 +24,7 @@ type jumpSeg struct {
gas *big.Int
}
-func (j jumpSeg) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) ([]byte, error) {
+func (j jumpSeg) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
if !contract.UseGas(j.gas) {
return nil, OutOfGasError
}
@@ -42,7 +42,7 @@ type pushSeg struct {
gas *big.Int
}
-func (s pushSeg) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *stack) ([]byte, error) {
+func (s pushSeg) do(program *Program, pc *uint64, env Environment, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
// Use the calculated gas. When insufficient gas is present, use all gas and return an
// Out Of Gas error
if !contract.UseGas(s.gas) {
diff --git a/core/vm/stack.go b/core/vm/stack.go
index 0046edec2..f6c1f76e4 100644
--- a/core/vm/stack.go
+++ b/core/vm/stack.go
@@ -24,58 +24,58 @@ import (
// stack is an object for basic stack operations. Items popped to the stack are
// expected to be changed and modified. stack does not take care of adding newly
// initialised objects.
-type stack struct {
+type Stack struct {
data []*big.Int
}
-func newstack() *stack {
- return &stack{}
+func newstack() *Stack {
+ return &Stack{}
}
-func (st *stack) Data() []*big.Int {
+func (st *Stack) Data() []*big.Int {
return st.data
}
-func (st *stack) push(d *big.Int) {
+func (st *Stack) push(d *big.Int) {
// NOTE push limit (1024) is checked in baseCheck
//stackItem := new(big.Int).Set(d)
//st.data = append(st.data, stackItem)
st.data = append(st.data, d)
}
-func (st *stack) pushN(ds ...*big.Int) {
+func (st *Stack) pushN(ds ...*big.Int) {
st.data = append(st.data, ds...)
}
-func (st *stack) pop() (ret *big.Int) {
+func (st *Stack) pop() (ret *big.Int) {
ret = st.data[len(st.data)-1]
st.data = st.data[:len(st.data)-1]
return
}
-func (st *stack) len() int {
+func (st *Stack) len() int {
return len(st.data)
}
-func (st *stack) swap(n int) {
+func (st *Stack) swap(n int) {
st.data[st.len()-n], st.data[st.len()-1] = st.data[st.len()-1], st.data[st.len()-n]
}
-func (st *stack) dup(n int) {
+func (st *Stack) dup(n int) {
st.push(new(big.Int).Set(st.data[st.len()-n]))
}
-func (st *stack) peek() *big.Int {
+func (st *Stack) peek() *big.Int {
return st.data[st.len()-1]
}
-func (st *stack) require(n int) error {
+func (st *Stack) require(n int) error {
if st.len() < n {
return fmt.Errorf("stack underflow (%d <=> %d)", len(st.data), n)
}
return nil
}
-func (st *stack) Print() {
+func (st *Stack) Print() {
fmt.Println("### stack ###")
if len(st.data) > 0 {
for i, val := range st.data {
diff --git a/core/vm/vm.go b/core/vm/vm.go
index 0f93715d6..9d7b55058 100644
--- a/core/vm/vm.go
+++ b/core/vm/vm.go
@@ -33,7 +33,7 @@ type Config struct {
Debug bool
EnableJit bool
ForceJit bool
- Logger LogConfig
+ Tracer Tracer
}
// EVM is used to run Ethereum based contracts and will utilise the
@@ -44,22 +44,14 @@ type EVM struct {
env Environment
jumpTable vmJumpTable
cfg Config
-
- logger *Logger
}
// New returns a new instance of the EVM.
func New(env Environment, cfg Config) *EVM {
- var logger *Logger
- if cfg.Debug {
- logger = newLogger(cfg.Logger, env)
- }
-
return &EVM{
env: env,
jumpTable: newJumpTable(env.RuleSet(), env.BlockNumber()),
cfg: cfg,
- logger: logger,
}
}
@@ -149,7 +141,7 @@ func (evm *EVM) Run(contract *Contract, input []byte) (ret []byte, err error) {
// User defer pattern to check for an error and, based on the error being nil or not, use all gas and return.
defer func() {
if err != nil && evm.cfg.Debug {
- evm.logger.captureState(pc, op, contract.Gas, cost, mem, stack, contract, evm.env.Depth(), err)
+ evm.cfg.Tracer.CaptureState(evm.env, pc, op, contract.Gas, cost, mem, stack, contract, evm.env.Depth(), err)
}
}()
@@ -191,7 +183,7 @@ func (evm *EVM) Run(contract *Contract, input []byte) (ret []byte, err error) {
mem.Resize(newMemSize.Uint64())
// Add a log message
if evm.cfg.Debug {
- evm.logger.captureState(pc, op, contract.Gas, cost, mem, stack, contract, evm.env.Depth(), nil)
+ evm.cfg.Tracer.CaptureState(evm.env, pc, op, contract.Gas, cost, mem, stack, contract, evm.env.Depth(), nil)
}
if opPtr := evm.jumpTable[op]; opPtr.valid {
@@ -241,7 +233,7 @@ func (evm *EVM) Run(contract *Contract, input []byte) (ret []byte, err error) {
// calculateGasAndSize calculates the required given the opcode and stack items calculates the new memorysize for
// the operation. This does not reduce gas or resizes the memory.
-func calculateGasAndSize(env Environment, contract *Contract, caller ContractRef, op OpCode, statedb Database, mem *Memory, stack *stack) (*big.Int, *big.Int, error) {
+func calculateGasAndSize(env Environment, contract *Contract, caller ContractRef, op OpCode, statedb Database, mem *Memory, stack *Stack) (*big.Int, *big.Int, error) {
var (
gas = new(big.Int)
newMemSize *big.Int = new(big.Int)
@@ -306,7 +298,7 @@ func calculateGasAndSize(env Environment, contract *Contract, caller ContractRef
g = params.SstoreClearGas
} else {
// non 0 => non 0 (or 0 => 0)
- g = params.SstoreClearGas
+ g = params.SstoreResetGas
}
gas.Set(g)
case SUICIDE:
diff --git a/core/vm_env.go b/core/vm_env.go
index 599672382..e541eaef4 100644
--- a/core/vm_env.go
+++ b/core/vm_env.go
@@ -49,7 +49,6 @@ type VMEnv struct {
header *types.Header // Header information
chain *BlockChain // Blockchain handle
- logs []vm.StructLog // Logs for the custom structured logger
getHashFn func(uint64) common.Hash // getHashFn callback is used to retrieve block hashes
}
@@ -63,11 +62,6 @@ func NewEnv(state *state.StateDB, chainConfig *ChainConfig, chain *BlockChain, m
getHashFn: GetHashFn(header.ParentHash, chain),
}
- // if no log collector is present set self as the collector
- if cfg.Logger.Collector == nil {
- cfg.Logger.Collector = env
- }
-
env.evm = vm.New(env, cfg)
return env
}
@@ -121,11 +115,3 @@ func (self *VMEnv) DelegateCall(me vm.ContractRef, addr common.Address, data []b
func (self *VMEnv) Create(me vm.ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error) {
return Create(self, me, data, gas, price, value)
}
-
-func (self *VMEnv) StructLogs() []vm.StructLog {
- return self.logs
-}
-
-func (self *VMEnv) AddStructLog(log vm.StructLog) {
- self.logs = append(self.logs, log)
-}
diff --git a/eth/api.go b/eth/api.go
index 3b7abb69a..f4bce47b8 100644
--- a/eth/api.go
+++ b/eth/api.go
@@ -25,6 +25,7 @@ import (
"math/big"
"os"
"runtime"
+ "time"
"github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/common"
@@ -38,8 +39,11 @@ import (
"github.com/ethereum/go-ethereum/miner"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rpc"
+ "golang.org/x/net/context"
)
+const defaultTraceTimeout = 5 * time.Second
+
// PublicEthereumAPI provides an API to access Ethereum full node-related
// information.
type PublicEthereumAPI struct {
@@ -317,9 +321,16 @@ type BlockTraceResult struct {
Error string `json:"error"`
}
+// TraceArgs holds extra parameters to trace functions
+type TraceArgs struct {
+ *vm.LogConfig
+ Tracer *string
+ Timeout *string
+}
+
// TraceBlock processes the given block's RLP but does not import the block in to
// the chain.
-func (api *PrivateDebugAPI) TraceBlock(blockRlp []byte, config *vm.Config) BlockTraceResult {
+func (api *PrivateDebugAPI) TraceBlock(blockRlp []byte, config *vm.LogConfig) BlockTraceResult {
var block types.Block
err := rlp.Decode(bytes.NewReader(blockRlp), &block)
if err != nil {
@@ -336,7 +347,7 @@ func (api *PrivateDebugAPI) TraceBlock(blockRlp []byte, config *vm.Config) Block
// TraceBlockFromFile loads the block's RLP from the given file name and attempts to
// process it but does not import the block in to the chain.
-func (api *PrivateDebugAPI) TraceBlockFromFile(file string, config *vm.Config) BlockTraceResult {
+func (api *PrivateDebugAPI) TraceBlockFromFile(file string, config *vm.LogConfig) BlockTraceResult {
blockRlp, err := ioutil.ReadFile(file)
if err != nil {
return BlockTraceResult{Error: fmt.Sprintf("could not read file: %v", err)}
@@ -345,7 +356,7 @@ func (api *PrivateDebugAPI) TraceBlockFromFile(file string, config *vm.Config) B
}
// TraceBlockByNumber processes the block by canonical block number.
-func (api *PrivateDebugAPI) TraceBlockByNumber(number uint64, config *vm.Config) BlockTraceResult {
+func (api *PrivateDebugAPI) TraceBlockByNumber(number uint64, config *vm.LogConfig) BlockTraceResult {
// Fetch the block that we aim to reprocess
block := api.eth.BlockChain().GetBlockByNumber(number)
if block == nil {
@@ -361,7 +372,7 @@ func (api *PrivateDebugAPI) TraceBlockByNumber(number uint64, config *vm.Config)
}
// TraceBlockByHash processes the block by hash.
-func (api *PrivateDebugAPI) TraceBlockByHash(hash common.Hash, config *vm.Config) BlockTraceResult {
+func (api *PrivateDebugAPI) TraceBlockByHash(hash common.Hash, config *vm.LogConfig) BlockTraceResult {
// Fetch the block that we aim to reprocess
block := api.eth.BlockChain().GetBlockByHash(hash)
if block == nil {
@@ -376,49 +387,38 @@ func (api *PrivateDebugAPI) TraceBlockByHash(hash common.Hash, config *vm.Config
}
}
-// TraceCollector collects EVM structered logs.
-//
-// TraceCollector implements vm.Collector
-type TraceCollector struct {
- traces []vm.StructLog
-}
-
-// AddStructLog adds a structered log.
-func (t *TraceCollector) AddStructLog(slog vm.StructLog) {
- t.traces = append(t.traces, slog)
-}
-
// traceBlock processes the given block but does not save the state.
-func (api *PrivateDebugAPI) traceBlock(block *types.Block, config *vm.Config) (bool, []vm.StructLog, error) {
+func (api *PrivateDebugAPI) traceBlock(block *types.Block, logConfig *vm.LogConfig) (bool, []vm.StructLog, error) {
// Validate and reprocess the block
var (
blockchain = api.eth.BlockChain()
validator = blockchain.Validator()
processor = blockchain.Processor()
- collector = &TraceCollector{}
)
- if config == nil {
- config = new(vm.Config)
+
+ structLogger := vm.NewStructLogger(logConfig)
+
+ config := vm.Config{
+ Debug: true,
+ Tracer: structLogger,
}
- config.Debug = true // make sure debug is set.
- config.Logger.Collector = collector
if err := core.ValidateHeader(api.config, blockchain.AuxValidator(), block.Header(), blockchain.GetHeader(block.ParentHash(), block.NumberU64()-1), true, false); err != nil {
- return false, collector.traces, err
+ return false, structLogger.StructLogs(), err
}
statedb, err := state.New(blockchain.GetBlock(block.ParentHash(), block.NumberU64()-1).Root(), api.eth.ChainDb())
if err != nil {
- return false, collector.traces, err
+ return false, structLogger.StructLogs(), err
}
- receipts, _, usedGas, err := processor.Process(block, statedb, *config)
+ receipts, _, usedGas, err := processor.Process(block, statedb, config)
if err != nil {
- return false, collector.traces, err
+ return false, structLogger.StructLogs(), err
}
if err := validator.ValidateState(block, blockchain.GetBlock(block.ParentHash(), block.NumberU64()-1), statedb, receipts, usedGas); err != nil {
- return false, collector.traces, err
+ return false, structLogger.StructLogs(), err
}
- return true, collector.traces, nil
+ return true, structLogger.StructLogs(), nil
}
// callmsg is the message type used for call transations.
@@ -450,12 +450,43 @@ func formatError(err error) string {
return err.Error()
}
+type timeoutError struct{}
+
+func (t *timeoutError) Error() string {
+ return "Execution time exceeded"
+}
+
// TraceTransaction returns the structured logs created during the execution of EVM
// and returns them as a JSON object.
-func (api *PrivateDebugAPI) TraceTransaction(txHash common.Hash, logger *vm.LogConfig) (*ethapi.ExecutionResult, error) {
- if logger == nil {
- logger = new(vm.LogConfig)
+func (api *PrivateDebugAPI) TraceTransaction(ctx context.Context, txHash common.Hash, config *TraceArgs) (interface{}, error) {
+ var tracer vm.Tracer
+ if config != nil && config.Tracer != nil {
+ timeout := defaultTraceTimeout
+ if config.Timeout != nil {
+ var err error
+ if timeout, err = time.ParseDuration(*config.Timeout); err != nil {
+ return nil, err
+ }
+ }
+
+ var err error
+ if tracer, err = ethapi.NewJavascriptTracer(*config.Tracer); err != nil {
+ return nil, err
+ }
+
+ // Handle timeouts and RPC cancellations
+ deadlineCtx, cancel := context.WithTimeout(ctx, timeout)
+ go func() {
+ <-deadlineCtx.Done()
+ tracer.(*ethapi.JavascriptTracer).Stop(&timeoutError{})
+ }()
+ defer cancel()
+ } else if config == nil {
+ tracer = vm.NewStructLogger(nil)
+ } else {
+ tracer = vm.NewStructLogger(config.LogConfig)
}
+
// Retrieve the tx from the chain and the containing block
tx, blockHash, _, txIndex := core.GetTransaction(api.eth.ChainDb(), txHash)
if tx == nil {
@@ -500,16 +531,22 @@ func (api *PrivateDebugAPI) TraceTransaction(txHash common.Hash, logger *vm.LogC
continue
}
// Otherwise trace the transaction and return
- vmenv := core.NewEnv(stateDb, api.config, api.eth.BlockChain(), msg, block.Header(), vm.Config{Debug: true, Logger: *logger})
+ vmenv := core.NewEnv(stateDb, api.config, api.eth.BlockChain(), msg, block.Header(), vm.Config{Debug: true, Tracer: tracer})
ret, gas, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(tx.Gas()))
if err != nil {
return nil, fmt.Errorf("tracing failed: %v", err)
}
- return &ethapi.ExecutionResult{
- Gas: gas,
- ReturnValue: fmt.Sprintf("%x", ret),
- StructLogs: ethapi.FormatLogs(vmenv.StructLogs()),
- }, nil
+
+ switch tracer := tracer.(type) {
+ case *vm.StructLogger:
+ return &ethapi.ExecutionResult{
+ Gas: gas,
+ ReturnValue: fmt.Sprintf("%x", ret),
+ StructLogs: ethapi.FormatLogs(tracer.StructLogs()),
+ }, nil
+ case *ethapi.JavascriptTracer:
+ return tracer.GetResult()
+ }
}
return nil, errors.New("database inconsistency")
}
diff --git a/eth/api_backend.go b/eth/api_backend.go
index efcdb3361..4f8f06529 100644
--- a/eth/api_backend.go
+++ b/eth/api_backend.go
@@ -118,21 +118,25 @@ func (b *EthApiBackend) RemoveTx(txHash common.Hash) {
b.eth.txMu.Lock()
defer b.eth.txMu.Unlock()
- b.eth.txPool.RemoveTx(txHash)
+ b.eth.txPool.Remove(txHash)
}
func (b *EthApiBackend) GetPoolTransactions() types.Transactions {
b.eth.txMu.Lock()
defer b.eth.txMu.Unlock()
- return b.eth.txPool.GetTransactions()
+ var txs types.Transactions
+ for _, batch := range b.eth.txPool.Pending() {
+ txs = append(txs, batch...)
+ }
+ return txs
}
-func (b *EthApiBackend) GetPoolTransaction(txHash common.Hash) *types.Transaction {
+func (b *EthApiBackend) GetPoolTransaction(hash common.Hash) *types.Transaction {
b.eth.txMu.Lock()
defer b.eth.txMu.Unlock()
- return b.eth.txPool.GetTransaction(txHash)
+ return b.eth.txPool.Get(hash)
}
func (b *EthApiBackend) GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error) {
@@ -149,7 +153,7 @@ func (b *EthApiBackend) Stats() (pending int, queued int) {
return b.eth.txPool.Stats()
}
-func (b *EthApiBackend) TxPoolContent() (map[common.Address]map[uint64][]*types.Transaction, map[common.Address]map[uint64][]*types.Transaction) {
+func (b *EthApiBackend) TxPoolContent() (map[common.Address]types.Transactions, map[common.Address]types.Transactions) {
b.eth.txMu.Lock()
defer b.eth.txMu.Unlock()
diff --git a/eth/backend.go b/eth/backend.go
index 351cc2744..c4a883c9e 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -31,7 +31,6 @@ import (
"github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/compiler"
"github.com/ethereum/go-ethereum/common/httpclient"
"github.com/ethereum/go-ethereum/common/registrar/ethreg"
"github.com/ethereum/go-ethereum/core"
@@ -71,7 +70,6 @@ type Config struct {
Genesis string // Genesis JSON to seed the chain database with
FastSync bool // Enables the state download based fast synchronisation algorithm
- BlockChainVersion int
SkipBcVersionCheck bool // e.g. blockchain export
DatabaseCache int
DatabaseHandles int
@@ -83,11 +81,10 @@ type Config struct {
PowShared bool
ExtraData []byte
- AccountManager *accounts.Manager
- Etherbase common.Address
- GasPrice *big.Int
- MinerThreads int
- SolcPath string
+ Etherbase common.Address
+ GasPrice *big.Int
+ MinerThreads int
+ SolcPath string
GpoMinGasPrice *big.Int
GpoMaxGasPrice *big.Int
@@ -116,7 +113,6 @@ type Ethereum struct {
protocolManager *ProtocolManager
// DB interfaces
chainDb ethdb.Database // Block chain database
- dappDb ethdb.Database // Dapp database
eventMux *event.TypeMux
pow *ethash.Ethash
@@ -132,7 +128,6 @@ type Ethereum struct {
autodagquit chan bool
etherbase common.Address
solcPath string
- solc *compiler.Solidity
NatSpec bool
PowTest bool
@@ -143,7 +138,7 @@ type Ethereum struct {
// New creates a new Ethereum object (including the
// initialisation of the common Ethereum object)
func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
- chainDb, dappDb, err := CreateDBs(ctx, config)
+ chainDb, err := createDB(ctx, config)
if err != nil {
return nil, err
}
@@ -158,9 +153,8 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
eth := &Ethereum{
chainDb: chainDb,
- dappDb: dappDb,
eventMux: ctx.EventMux,
- accountManager: config.AccountManager,
+ accountManager: ctx.AccountManager,
pow: pow,
shutdownChan: make(chan bool),
stopDbUpgrade: stopDbUpgrade,
@@ -185,10 +179,10 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
if !config.SkipBcVersionCheck {
bcVersion := core.GetBlockChainVersion(chainDb)
- if bcVersion != config.BlockChainVersion && bcVersion != 0 {
- return nil, fmt.Errorf("Blockchain DB version mismatch (%d / %d). Run geth upgradedb.\n", bcVersion, config.BlockChainVersion)
+ if bcVersion != core.BlockChainVersion && bcVersion != 0 {
+ return nil, fmt.Errorf("Blockchain DB version mismatch (%d / %d). Run geth upgradedb.\n", bcVersion, core.BlockChainVersion)
}
- core.WriteBlockChainVersion(chainDb, config.BlockChainVersion)
+ core.WriteBlockChainVersion(chainDb, core.BlockChainVersion)
}
// load the genesis block or write a new one if no genesis
@@ -205,6 +199,8 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
if config.ChainConfig == nil {
return nil, errors.New("missing chain config")
}
+ core.WriteChainConfig(chainDb, genesis.Hash(), config.ChainConfig)
+
eth.chainConfig = config.ChainConfig
eth.chainConfig.VmConfig = vm.Config{
EnableJit: config.EnableJit,
@@ -242,25 +238,13 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
return eth, nil
}
-// CreateDBs creates the chain and dapp databases for an Ethereum service
-func CreateDBs(ctx *node.ServiceContext, config *Config) (chainDb, dappDb ethdb.Database, err error) {
- // Open the chain database and perform any upgrades needed
- chainDb, err = ctx.OpenDatabase("chaindata", config.DatabaseCache, config.DatabaseHandles)
- if err != nil {
- return nil, nil, err
- }
- if db, ok := chainDb.(*ethdb.LDBDatabase); ok {
+// createDB creates the chain database.
+func createDB(ctx *node.ServiceContext, config *Config) (ethdb.Database, error) {
+ db, err := ctx.OpenDatabase("chaindata", config.DatabaseCache, config.DatabaseHandles)
+ if db, ok := db.(*ethdb.LDBDatabase); ok {
db.Meter("eth/db/chaindata/")
}
-
- dappDb, err = ctx.OpenDatabase("dapp", config.DatabaseCache, config.DatabaseHandles)
- if err != nil {
- return nil, nil, err
- }
- if db, ok := dappDb.(*ethdb.LDBDatabase); ok {
- db.Meter("eth/db/dapp/")
- }
- return
+ return db, err
}
// SetupGenesisBlock initializes the genesis block for an Ethereum service
@@ -304,7 +288,7 @@ func CreatePoW(config *Config) (*ethash.Ethash, error) {
// APIs returns the collection of RPC services the ethereum package offers.
// NOTE, some of these services probably need to be moved to somewhere else.
func (s *Ethereum) APIs() []rpc.API {
- return append(ethapi.GetAPIs(s.apiBackend, &s.solcPath, &s.solc), []rpc.API{
+ return append(ethapi.GetAPIs(s.apiBackend, s.solcPath), []rpc.API{
{
Namespace: "eth",
Version: "1.0",
@@ -388,7 +372,6 @@ func (s *Ethereum) TxPool() *core.TxPool { return s.txPool }
func (s *Ethereum) EventMux() *event.TypeMux { return s.eventMux }
func (s *Ethereum) Pow() *ethash.Ethash { return s.pow }
func (s *Ethereum) ChainDb() ethdb.Database { return s.chainDb }
-func (s *Ethereum) DappDb() ethdb.Database { return s.dappDb }
func (s *Ethereum) IsListening() bool { return true } // Always listening
func (s *Ethereum) EthVersion() int { return int(s.protocolManager.SubProtocols[0].Version) }
func (s *Ethereum) NetVersion() int { return s.netVersionId }
@@ -426,7 +409,6 @@ func (s *Ethereum) Stop() error {
s.StopAutoDAG()
s.chainDb.Close()
- s.dappDb.Close()
close(s.shutdownChan)
return nil
diff --git a/eth/backend_test.go b/eth/backend_test.go
index cb94adbf0..105d71080 100644
--- a/eth/backend_test.go
+++ b/eth/backend_test.go
@@ -32,7 +32,7 @@ func TestMipmapUpgrade(t *testing.T) {
addr := common.BytesToAddress([]byte("jeff"))
genesis := core.WriteGenesisBlockForTesting(db)
- chain, receipts := core.GenerateChain(genesis, db, 10, func(i int, gen *core.BlockGen) {
+ chain, receipts := core.GenerateChain(nil, genesis, db, 10, func(i int, gen *core.BlockGen) {
var receipts types.Receipts
switch i {
case 1:
diff --git a/eth/bind.go b/eth/bind.go
index c1366464f..532e94460 100644
--- a/eth/bind.go
+++ b/eth/bind.go
@@ -19,6 +19,7 @@ package eth
import (
"math/big"
+ "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/internal/ethapi"
@@ -44,53 +45,68 @@ type ContractBackend struct {
// Etheruem object.
func NewContractBackend(eth *Ethereum) *ContractBackend {
return &ContractBackend{
- eapi: ethapi.NewPublicEthereumAPI(eth.apiBackend, nil, nil),
+ eapi: ethapi.NewPublicEthereumAPI(eth.apiBackend),
bcapi: ethapi.NewPublicBlockChainAPI(eth.apiBackend),
txapi: ethapi.NewPublicTransactionPoolAPI(eth.apiBackend),
}
}
-// HasCode implements bind.ContractVerifier.HasCode by retrieving any code associated
-// with the contract from the local API, and checking its size.
-func (b *ContractBackend) HasCode(ctx context.Context, contract common.Address, pending bool) (bool, error) {
- if ctx == nil {
- ctx = context.Background()
- }
- block := rpc.LatestBlockNumber
- if pending {
- block = rpc.PendingBlockNumber
- }
- out, err := b.bcapi.GetCode(ctx, contract, block)
- return len(common.FromHex(out)) > 0, err
+// CodeAt retrieves any code associated with the contract from the local API.
+func (b *ContractBackend) CodeAt(ctx context.Context, contract common.Address, blockNum *big.Int) ([]byte, error) {
+ out, err := b.bcapi.GetCode(ctx, contract, toBlockNumber(blockNum))
+ return common.FromHex(out), err
+}
+
+// CodeAt retrieves any code associated with the contract from the local API.
+func (b *ContractBackend) PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error) {
+ out, err := b.bcapi.GetCode(ctx, contract, rpc.PendingBlockNumber)
+ return common.FromHex(out), err
}
// ContractCall implements bind.ContractCaller executing an Ethereum contract
// call with the specified data as the input. The pending flag requests execution
// against the pending block, not the stable head of the chain.
-func (b *ContractBackend) ContractCall(ctx context.Context, contract common.Address, data []byte, pending bool) ([]byte, error) {
- if ctx == nil {
- ctx = context.Background()
- }
- // Convert the input args to the API spec
+func (b *ContractBackend) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNum *big.Int) ([]byte, error) {
+ out, err := b.bcapi.Call(ctx, toCallArgs(msg), toBlockNumber(blockNum))
+ return common.FromHex(out), err
+}
+
+// ContractCall implements bind.ContractCaller executing an Ethereum contract
+// call with the specified data as the input. The pending flag requests execution
+// against the pending block, not the stable head of the chain.
+func (b *ContractBackend) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) ([]byte, error) {
+ out, err := b.bcapi.Call(ctx, toCallArgs(msg), rpc.PendingBlockNumber)
+ return common.FromHex(out), err
+}
+
+func toCallArgs(msg ethereum.CallMsg) ethapi.CallArgs {
args := ethapi.CallArgs{
- To: &contract,
- Data: common.ToHex(data),
+ To: msg.To,
+ From: msg.From,
+ Data: common.ToHex(msg.Data),
}
- block := rpc.LatestBlockNumber
- if pending {
- block = rpc.PendingBlockNumber
+ if msg.Gas != nil {
+ args.Gas = *rpc.NewHexNumber(msg.Gas)
}
- // Execute the call and convert the output back to Go types
- out, err := b.bcapi.Call(ctx, args, block)
- return common.FromHex(out), err
+ if msg.GasPrice != nil {
+ args.GasPrice = *rpc.NewHexNumber(msg.GasPrice)
+ }
+ if msg.Value != nil {
+ args.Value = *rpc.NewHexNumber(msg.Value)
+ }
+ return args
+}
+
+func toBlockNumber(num *big.Int) rpc.BlockNumber {
+ if num == nil {
+ return rpc.LatestBlockNumber
+ }
+ return rpc.BlockNumber(num.Int64())
}
// PendingAccountNonce implements bind.ContractTransactor retrieving the current
// pending nonce associated with an account.
-func (b *ContractBackend) PendingAccountNonce(ctx context.Context, account common.Address) (uint64, error) {
- if ctx == nil {
- ctx = context.Background()
- }
+func (b *ContractBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) {
out, err := b.txapi.GetTransactionCount(ctx, account, rpc.PendingBlockNumber)
return out.Uint64(), err
}
@@ -98,9 +114,6 @@ func (b *ContractBackend) PendingAccountNonce(ctx context.Context, account commo
// SuggestGasPrice implements bind.ContractTransactor retrieving the currently
// suggested gas price to allow a timely execution of a transaction.
func (b *ContractBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error) {
- if ctx == nil {
- ctx = context.Background()
- }
return b.eapi.GasPrice(ctx)
}
@@ -109,25 +122,14 @@ func (b *ContractBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error)
// the backend blockchain. There is no guarantee that this is the true gas limit
// requirement as other transactions may be added or removed by miners, but it
// should provide a basis for setting a reasonable default.
-func (b *ContractBackend) EstimateGasLimit(ctx context.Context, sender common.Address, contract *common.Address, value *big.Int, data []byte) (*big.Int, error) {
- if ctx == nil {
- ctx = context.Background()
- }
- out, err := b.bcapi.EstimateGas(ctx, ethapi.CallArgs{
- From: sender,
- To: contract,
- Value: *rpc.NewHexNumber(value),
- Data: common.ToHex(data),
- })
+func (b *ContractBackend) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (*big.Int, error) {
+ out, err := b.bcapi.EstimateGas(ctx, toCallArgs(msg))
return out.BigInt(), err
}
// SendTransaction implements bind.ContractTransactor injects the transaction
// into the pending pool for execution.
func (b *ContractBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error {
- if ctx == nil {
- ctx = context.Background()
- }
raw, _ := rlp.EncodeToBytes(tx)
_, err := b.txapi.SendRawTransaction(ctx, common.ToHex(raw))
return err
diff --git a/eth/db_upgrade.go b/eth/db_upgrade.go
index 12de60fe7..172bb0954 100644
--- a/eth/db_upgrade.go
+++ b/eth/db_upgrade.go
@@ -93,6 +93,9 @@ func upgradeSequentialKeys(db ethdb.Database) (stopFn func()) {
func upgradeSequentialCanonicalNumbers(db ethdb.Database, stopFn func() bool) (error, bool) {
prefix := []byte("block-num-")
it := db.(*ethdb.LDBDatabase).NewIterator()
+ defer func() {
+ it.Release()
+ }()
it.Seek(prefix)
cnt := 0
for bytes.HasPrefix(it.Key(), prefix) {
@@ -100,6 +103,9 @@ func upgradeSequentialCanonicalNumbers(db ethdb.Database, stopFn func() bool) (e
if len(keyPtr) < 20 {
cnt++
if cnt%100000 == 0 {
+ it.Release()
+ it = db.(*ethdb.LDBDatabase).NewIterator()
+ it.Seek(keyPtr)
glog.V(logger.Info).Infof("converting %d canonical numbers...", cnt)
}
number := big.NewInt(0).SetBytes(keyPtr[10:]).Uint64()
@@ -130,6 +136,9 @@ func upgradeSequentialCanonicalNumbers(db ethdb.Database, stopFn func() bool) (e
func upgradeSequentialBlocks(db ethdb.Database, stopFn func() bool) (error, bool) {
prefix := []byte("block-")
it := db.(*ethdb.LDBDatabase).NewIterator()
+ defer func() {
+ it.Release()
+ }()
it.Seek(prefix)
cnt := 0
for bytes.HasPrefix(it.Key(), prefix) {
@@ -137,6 +146,9 @@ func upgradeSequentialBlocks(db ethdb.Database, stopFn func() bool) (error, bool
if len(keyPtr) >= 38 {
cnt++
if cnt%10000 == 0 {
+ it.Release()
+ it = db.(*ethdb.LDBDatabase).NewIterator()
+ it.Seek(keyPtr)
glog.V(logger.Info).Infof("converting %d blocks...", cnt)
}
// convert header, body, td and block receipts
@@ -175,6 +187,7 @@ func upgradeSequentialBlocks(db ethdb.Database, stopFn func() bool) (error, bool
func upgradeSequentialOrphanedReceipts(db ethdb.Database, stopFn func() bool) (error, bool) {
prefix := []byte("receipts-block-")
it := db.(*ethdb.LDBDatabase).NewIterator()
+ defer it.Release()
it.Seek(prefix)
cnt := 0
for bytes.HasPrefix(it.Key(), prefix) {
diff --git a/eth/downloader/api.go b/eth/downloader/api.go
index 94cd6515f..e41376810 100644
--- a/eth/downloader/api.go
+++ b/eth/downloader/api.go
@@ -19,90 +19,148 @@ package downloader
import (
"sync"
- "golang.org/x/net/context"
-
+ ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/rpc"
+ "golang.org/x/net/context"
)
// PublicDownloaderAPI provides an API which gives information about the current synchronisation status.
// It offers only methods that operates on data that can be available to anyone without security risks.
type PublicDownloaderAPI struct {
- d *Downloader
- mux *event.TypeMux
- muSyncSubscriptions sync.Mutex
- syncSubscriptions map[string]rpc.Subscription
+ d *Downloader
+ mux *event.TypeMux
+ installSyncSubscription chan chan interface{}
+ uninstallSyncSubscription chan *uninstallSyncSubscriptionRequest
}
-// NewPublicDownloaderAPI create a new PublicDownloaderAPI.
+// NewPublicDownloaderAPI create a new PublicDownloaderAPI. The API has an internal event loop that
+// listens for events from the downloader through the global event mux. In case it receives one of
+// these events it broadcasts it to all syncing subscriptions that are installed through the
+// installSyncSubscription channel.
func NewPublicDownloaderAPI(d *Downloader, m *event.TypeMux) *PublicDownloaderAPI {
- api := &PublicDownloaderAPI{d: d, mux: m, syncSubscriptions: make(map[string]rpc.Subscription)}
+ api := &PublicDownloaderAPI{
+ d: d,
+ mux: m,
+ installSyncSubscription: make(chan chan interface{}),
+ uninstallSyncSubscription: make(chan *uninstallSyncSubscriptionRequest),
+ }
- go api.run()
+ go api.eventLoop()
return api
}
-func (api *PublicDownloaderAPI) run() {
- sub := api.mux.Subscribe(StartEvent{}, DoneEvent{}, FailedEvent{})
-
- for event := range sub.Chan() {
- var notification interface{}
-
- switch event.Data.(type) {
- case StartEvent:
- result := &SyncingResult{Syncing: true}
- result.Status.Origin, result.Status.Current, result.Status.Height, result.Status.Pulled, result.Status.Known = api.d.Progress()
- notification = result
- case DoneEvent, FailedEvent:
- notification = false
- }
+// eventLoop runs an loop until the event mux closes. It will install and uninstall new
+// sync subscriptions and broadcasts sync status updates to the installed sync subscriptions.
+func (api *PublicDownloaderAPI) eventLoop() {
+ var (
+ sub = api.mux.Subscribe(StartEvent{}, DoneEvent{}, FailedEvent{})
+ syncSubscriptions = make(map[chan interface{}]struct{})
+ )
+
+ for {
+ select {
+ case i := <-api.installSyncSubscription:
+ syncSubscriptions[i] = struct{}{}
+ case u := <-api.uninstallSyncSubscription:
+ delete(syncSubscriptions, u.c)
+ close(u.uninstalled)
+ case event := <-sub.Chan():
+ if event == nil {
+ return
+ }
- api.muSyncSubscriptions.Lock()
- for id, sub := range api.syncSubscriptions {
- if sub.Notify(notification) == rpc.ErrNotificationNotFound {
- delete(api.syncSubscriptions, id)
+ var notification interface{}
+ switch event.Data.(type) {
+ case StartEvent:
+ notification = &SyncingResult{
+ Syncing: true,
+ Status: api.d.Progress(),
+ }
+ case DoneEvent, FailedEvent:
+ notification = false
+ }
+ // broadcast
+ for c := range syncSubscriptions {
+ c <- notification
}
}
- api.muSyncSubscriptions.Unlock()
}
}
-// Progress gives progress indications when the node is synchronising with the Ethereum network.
-type Progress struct {
- Origin uint64 `json:"startingBlock"`
- Current uint64 `json:"currentBlock"`
- Height uint64 `json:"highestBlock"`
- Pulled uint64 `json:"pulledStates"`
- Known uint64 `json:"knownStates"`
+// Syncing provides information when this nodes starts synchronising with the Ethereum network and when it's finished.
+func (api *PublicDownloaderAPI) Syncing(ctx context.Context) (*rpc.Subscription, error) {
+ notifier, supported := rpc.NotifierFromContext(ctx)
+ if !supported {
+ return &rpc.Subscription{}, rpc.ErrNotificationsUnsupported
+ }
+
+ rpcSub := notifier.CreateSubscription()
+
+ go func() {
+ statuses := make(chan interface{})
+ sub := api.SubscribeSyncStatus(statuses)
+
+ for {
+ select {
+ case status := <-statuses:
+ notifier.Notify(rpcSub.ID, status)
+ case <-rpcSub.Err():
+ sub.Unsubscribe()
+ return
+ case <-notifier.Closed():
+ sub.Unsubscribe()
+ return
+ }
+ }
+ }()
+
+ return rpcSub, nil
}
// SyncingResult provides information about the current synchronisation status for this node.
type SyncingResult struct {
- Syncing bool `json:"syncing"`
- Status Progress `json:"status"`
+ Syncing bool `json:"syncing"`
+ Status ethereum.SyncProgress `json:"status"`
}
-// Syncing provides information when this nodes starts synchronising with the Ethereum network and when it's finished.
-func (api *PublicDownloaderAPI) Syncing(ctx context.Context) (rpc.Subscription, error) {
- notifier, supported := rpc.NotifierFromContext(ctx)
- if !supported {
- return nil, rpc.ErrNotificationsUnsupported
- }
-
- subscription, err := notifier.NewSubscription(func(id string) {
- api.muSyncSubscriptions.Lock()
- delete(api.syncSubscriptions, id)
- api.muSyncSubscriptions.Unlock()
- })
+// uninstallSyncSubscriptionRequest uninstalles a syncing subscription in the API event loop.
+type uninstallSyncSubscriptionRequest struct {
+ c chan interface{}
+ uninstalled chan interface{}
+}
- if err != nil {
- return nil, err
- }
+// SyncStatusSubscription represents a syncing subscription.
+type SyncStatusSubscription struct {
+ api *PublicDownloaderAPI // register subscription in event loop of this api instance
+ c chan interface{} // channel where events are broadcasted to
+ unsubOnce sync.Once // make sure unsubscribe logic is executed once
+}
- api.muSyncSubscriptions.Lock()
- api.syncSubscriptions[subscription.ID()] = subscription
- api.muSyncSubscriptions.Unlock()
+// Unsubscribe uninstalls the subscription from the DownloadAPI event loop.
+// The status channel that was passed to subscribeSyncStatus isn't used anymore
+// after this method returns.
+func (s *SyncStatusSubscription) Unsubscribe() {
+ s.unsubOnce.Do(func() {
+ req := uninstallSyncSubscriptionRequest{s.c, make(chan interface{})}
+ s.api.uninstallSyncSubscription <- &req
+
+ for {
+ select {
+ case <-s.c:
+ // drop new status events until uninstall confirmation
+ continue
+ case <-req.uninstalled:
+ return
+ }
+ }
+ })
+}
- return subscription, nil
+// SubscribeSyncStatus creates a subscription that will broadcast new synchronisation updates.
+// The given channel must receive interface values, the result can either
+func (api *PublicDownloaderAPI) SubscribeSyncStatus(status chan interface{}) *SyncStatusSubscription {
+ api.installSyncSubscription <- status
+ return &SyncStatusSubscription{api: api, c: status}
}
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index 01c0818a0..fb63757aa 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -28,6 +28,7 @@ import (
"sync/atomic"
"time"
+ ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
@@ -48,23 +49,17 @@ var (
MaxReceiptFetch = 256 // Amount of transaction receipts to allow fetching per request
MaxStateFetch = 384 // Amount of node state values to allow fetching per request
- MaxForkAncestry = 3 * params.EpochDuration.Uint64() // Maximum chain reorganisation
-
- hashTTL = 3 * time.Second // [eth/61] Time it takes for a hash request to time out
- blockTargetRTT = 3 * time.Second / 2 // [eth/61] Target time for completing a block retrieval request
- blockTTL = 3 * blockTargetRTT // [eth/61] Maximum time allowance before a block request is considered expired
-
- rttMinEstimate = 2 * time.Second // Minimum round-trip time to target for download requests
- rttMaxEstimate = 20 * time.Second // Maximum rount-trip time to target for download requests
- rttMinConfidence = 0.1 // Worse confidence factor in our estimated RTT value
- ttlScaling = 3 // Constant scaling factor for RTT -> TTL conversion
- ttlLimit = time.Minute // Maximum TTL allowance to prevent reaching crazy timeouts
+ MaxForkAncestry = 3 * params.EpochDuration.Uint64() // Maximum chain reorganisation
+ rttMinEstimate = 2 * time.Second // Minimum round-trip time to target for download requests
+ rttMaxEstimate = 20 * time.Second // Maximum rount-trip time to target for download requests
+ rttMinConfidence = 0.1 // Worse confidence factor in our estimated RTT value
+ ttlScaling = 3 // Constant scaling factor for RTT -> TTL conversion
+ ttlLimit = time.Minute // Maximum TTL allowance to prevent reaching crazy timeouts
qosTuningPeers = 5 // Number of peers to tune based on (best peers)
qosConfidenceCap = 10 // Number of peers above which not to modify RTT confidence
qosTuningImpact = 0.25 // Impact that a new tuning target has on the previous value
- maxQueuedHashes = 32 * 1024 // [eth/61] Maximum number of hashes to queue for import (DOS protection)
maxQueuedHeaders = 32 * 1024 // [eth/62] Maximum number of headers to queue for import (DOS protection)
maxHeadersProcess = 2048 // Number of header download results to import at once into the chain
maxResultsProcess = 2048 // Number of content download results to import at once into the chain
@@ -84,16 +79,13 @@ var (
errStallingPeer = errors.New("peer is stalling")
errNoPeers = errors.New("no peers to keep download active")
errTimeout = errors.New("timeout")
- errEmptyHashSet = errors.New("empty hash set by peer")
errEmptyHeaderSet = errors.New("empty header set by peer")
errPeersUnavailable = errors.New("no peers available or all tried for download")
- errAlreadyInPool = errors.New("hash already in pool")
errInvalidAncestor = errors.New("retrieved ancestor is invalid")
errInvalidChain = errors.New("retrieved hash chain is invalid")
errInvalidBlock = errors.New("retrieved block is invalid")
errInvalidBody = errors.New("retrieved block body is invalid")
errInvalidReceipt = errors.New("retrieved receipt is invalid")
- errCancelHashFetch = errors.New("hash download canceled (requested)")
errCancelBlockFetch = errors.New("block download canceled (requested)")
errCancelHeaderFetch = errors.New("block header download canceled (requested)")
errCancelBodyFetch = errors.New("block body download canceled (requested)")
@@ -102,6 +94,7 @@ var (
errCancelHeaderProcessing = errors.New("header processing canceled (requested)")
errCancelContentProcessing = errors.New("content processing canceled (requested)")
errNoSyncActive = errors.New("no sync active")
+ errTooOld = errors.New("peer doesn't speak recent enough protocol version (need version >= 62)")
)
type Downloader struct {
@@ -146,20 +139,19 @@ type Downloader struct {
// Channels
newPeerCh chan *peer
- hashCh chan dataPack // [eth/61] Channel receiving inbound hashes
- blockCh chan dataPack // [eth/61] Channel receiving inbound blocks
headerCh chan dataPack // [eth/62] Channel receiving inbound block headers
bodyCh chan dataPack // [eth/62] Channel receiving inbound block bodies
receiptCh chan dataPack // [eth/63] Channel receiving inbound receipts
stateCh chan dataPack // [eth/63] Channel receiving inbound node state data
- blockWakeCh chan bool // [eth/61] Channel to signal the block fetcher of new tasks
bodyWakeCh chan bool // [eth/62] Channel to signal the block body fetcher of new tasks
receiptWakeCh chan bool // [eth/63] Channel to signal the receipt fetcher of new tasks
stateWakeCh chan bool // [eth/63] Channel to signal the state fetcher of new tasks
headerProcCh chan []*types.Header // [eth/62] Channel to feed the header processor new tasks
+ // Cancellation and termination
+ cancelPeer string // Identifier of the peer currently being used as the master (cancel on drop)
cancelCh chan struct{} // Channel to cancel mid-flight syncs
- cancelLock sync.RWMutex // Lock to protect the cancel channel in delivers
+ cancelLock sync.RWMutex // Lock to protect the cancel channel and peer in delivers
quitCh chan struct{} // Quit channel to signal termination
quitLock sync.RWMutex // Lock to prevent double closes
@@ -199,13 +191,10 @@ func New(stateDb ethdb.Database, mux *event.TypeMux, hasHeader headerCheckFn, ha
rollback: rollback,
dropPeer: dropPeer,
newPeerCh: make(chan *peer, 1),
- hashCh: make(chan dataPack, 1),
- blockCh: make(chan dataPack, 1),
headerCh: make(chan dataPack, 1),
bodyCh: make(chan dataPack, 1),
receiptCh: make(chan dataPack, 1),
stateCh: make(chan dataPack, 1),
- blockWakeCh: make(chan bool, 1),
bodyWakeCh: make(chan bool, 1),
receiptWakeCh: make(chan bool, 1),
stateWakeCh: make(chan bool, 1),
@@ -223,7 +212,7 @@ func New(stateDb ethdb.Database, mux *event.TypeMux, hasHeader headerCheckFn, ha
// In addition, during the state download phase of fast synchronisation the number
// of processed and the total number of known states are also returned. Otherwise
// these are zero.
-func (d *Downloader) Progress() (uint64, uint64, uint64, uint64, uint64) {
+func (d *Downloader) Progress() ethereum.SyncProgress {
// Fetch the pending state count outside of the lock to prevent unforeseen deadlocks
pendingStates := uint64(d.queue.PendingNodeData())
@@ -240,7 +229,13 @@ func (d *Downloader) Progress() (uint64, uint64, uint64, uint64, uint64) {
case LightSync:
current = d.headHeader().Number.Uint64()
}
- return d.syncStatsChainOrigin, current, d.syncStatsChainHeight, d.syncStatsStateDone, d.syncStatsStateDone + pendingStates
+ return ethereum.SyncProgress{
+ StartingBlock: d.syncStatsChainOrigin,
+ CurrentBlock: current,
+ HighestBlock: d.syncStatsChainHeight,
+ PulledStates: d.syncStatsStateDone,
+ KnownStates: d.syncStatsStateDone + pendingStates,
+ }
}
// Synchronising returns whether the downloader is currently retrieving blocks.
@@ -250,13 +245,12 @@ func (d *Downloader) Synchronising() bool {
// RegisterPeer injects a new download peer into the set of block source to be
// used for fetching hashes and blocks from.
-func (d *Downloader) RegisterPeer(id string, version int, head common.Hash,
- getRelHashes relativeHashFetcherFn, getAbsHashes absoluteHashFetcherFn, getBlocks blockFetcherFn, // eth/61 callbacks, remove when upgrading
+func (d *Downloader) RegisterPeer(id string, version int, currentHead currentHeadRetrievalFn,
getRelHeaders relativeHeaderFetcherFn, getAbsHeaders absoluteHeaderFetcherFn, getBlockBodies blockBodyFetcherFn,
getReceipts receiptFetcherFn, getNodeData stateFetcherFn) error {
glog.V(logger.Detail).Infoln("Registering peer", id)
- if err := d.peers.Register(newPeer(id, version, head, getRelHashes, getAbsHashes, getBlocks, getRelHeaders, getAbsHeaders, getBlockBodies, getReceipts, getNodeData)); err != nil {
+ if err := d.peers.Register(newPeer(id, version, currentHead, getRelHeaders, getAbsHeaders, getBlockBodies, getReceipts, getNodeData)); err != nil {
glog.V(logger.Error).Infoln("Register failed:", err)
return err
}
@@ -269,12 +263,22 @@ func (d *Downloader) RegisterPeer(id string, version int, head common.Hash,
// the specified peer. An effort is also made to return any pending fetches into
// the queue.
func (d *Downloader) UnregisterPeer(id string) error {
+ // Unregister the peer from the active peer set and revoke any fetch tasks
glog.V(logger.Detail).Infoln("Unregistering peer", id)
if err := d.peers.Unregister(id); err != nil {
glog.V(logger.Error).Infoln("Unregister failed:", err)
return err
}
d.queue.Revoke(id)
+
+ // If this peer was the master peer, abort sync immediately
+ d.cancelLock.RLock()
+ master := id == d.cancelPeer
+ d.cancelLock.RUnlock()
+
+ if master {
+ d.cancel()
+ }
return nil
}
@@ -291,7 +295,9 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode
case errBusy:
glog.V(logger.Detail).Infof("Synchronisation already in progress")
- case errTimeout, errBadPeer, errStallingPeer, errEmptyHashSet, errEmptyHeaderSet, errPeersUnavailable, errInvalidAncestor, errInvalidChain:
+ case errTimeout, errBadPeer, errStallingPeer,
+ errEmptyHeaderSet, errPeersUnavailable, errTooOld,
+ errInvalidAncestor, errInvalidChain:
glog.V(logger.Debug).Infof("Removing peer %v: %v", id, err)
d.dropPeer(id)
@@ -323,13 +329,13 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode
d.queue.Reset()
d.peers.Reset()
- for _, ch := range []chan bool{d.blockWakeCh, d.bodyWakeCh, d.receiptWakeCh, d.stateWakeCh} {
+ for _, ch := range []chan bool{d.bodyWakeCh, d.receiptWakeCh, d.stateWakeCh} {
select {
case <-ch:
default:
}
}
- for _, ch := range []chan dataPack{d.hashCh, d.blockCh, d.headerCh, d.bodyCh, d.receiptCh, d.stateCh} {
+ for _, ch := range []chan dataPack{d.headerCh, d.bodyCh, d.receiptCh, d.stateCh} {
for empty := false; !empty; {
select {
case <-ch:
@@ -345,9 +351,10 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode
empty = true
}
}
- // Create cancel channel for aborting mid-flight
+ // Create cancel channel for aborting mid-flight and mark the master peer
d.cancelLock.Lock()
d.cancelCh = make(chan struct{})
+ d.cancelPeer = id
d.cancelLock.Unlock()
defer d.cancel() // No matter what, we can't leave the cancel channel open
@@ -377,105 +384,73 @@ func (d *Downloader) syncWithPeer(p *peer, hash common.Hash, td *big.Int) (err e
d.mux.Post(DoneEvent{})
}
}()
+ if p.version < 62 {
+ return errTooOld
+ }
glog.V(logger.Debug).Infof("Synchronising with the network using: %s [eth/%d]", p.id, p.version)
defer func(start time.Time) {
glog.V(logger.Debug).Infof("Synchronisation terminated after %v", time.Since(start))
}(time.Now())
- switch {
- case p.version == 61:
- // Look up the sync boundaries: the common ancestor and the target block
- latest, err := d.fetchHeight61(p)
- if err != nil {
- return err
- }
- origin, err := d.findAncestor61(p, latest)
- if err != nil {
- return err
- }
- d.syncStatsLock.Lock()
- if d.syncStatsChainHeight <= origin || d.syncStatsChainOrigin > origin {
- d.syncStatsChainOrigin = origin
- }
- d.syncStatsChainHeight = latest
- d.syncStatsLock.Unlock()
+ // Look up the sync boundaries: the common ancestor and the target block
+ latest, err := d.fetchHeight(p)
+ if err != nil {
+ return err
+ }
+ height := latest.Number.Uint64()
- // Initiate the sync using a concurrent hash and block retrieval algorithm
- d.queue.Prepare(origin+1, d.mode, 0, nil)
- if d.syncInitHook != nil {
- d.syncInitHook(origin, latest)
- }
- return d.spawnSync(origin+1,
- func() error { return d.fetchHashes61(p, td, origin+1) },
- func() error { return d.fetchBlocks61(origin + 1) },
- )
-
- case p.version >= 62:
- // Look up the sync boundaries: the common ancestor and the target block
- latest, err := d.fetchHeight(p)
- if err != nil {
- return err
- }
- height := latest.Number.Uint64()
+ origin, err := d.findAncestor(p, height)
+ if err != nil {
+ return err
+ }
+ d.syncStatsLock.Lock()
+ if d.syncStatsChainHeight <= origin || d.syncStatsChainOrigin > origin {
+ d.syncStatsChainOrigin = origin
+ }
+ d.syncStatsChainHeight = height
+ d.syncStatsLock.Unlock()
- origin, err := d.findAncestor(p, height)
- if err != nil {
- return err
- }
- d.syncStatsLock.Lock()
- if d.syncStatsChainHeight <= origin || d.syncStatsChainOrigin > origin {
- d.syncStatsChainOrigin = origin
- }
- d.syncStatsChainHeight = height
- d.syncStatsLock.Unlock()
-
- // Initiate the sync using a concurrent header and content retrieval algorithm
- pivot := uint64(0)
- switch d.mode {
- case LightSync:
- pivot = height
- case FastSync:
- // Calculate the new fast/slow sync pivot point
- if d.fsPivotLock == nil {
- pivotOffset, err := rand.Int(rand.Reader, big.NewInt(int64(fsPivotInterval)))
- if err != nil {
- panic(fmt.Sprintf("Failed to access crypto random source: %v", err))
- }
- if height > uint64(fsMinFullBlocks)+pivotOffset.Uint64() {
- pivot = height - uint64(fsMinFullBlocks) - pivotOffset.Uint64()
- }
- } else {
- // Pivot point locked in, use this and do not pick a new one!
- pivot = d.fsPivotLock.Number.Uint64()
+ // Initiate the sync using a concurrent header and content retrieval algorithm
+ pivot := uint64(0)
+ switch d.mode {
+ case LightSync:
+ pivot = height
+ case FastSync:
+ // Calculate the new fast/slow sync pivot point
+ if d.fsPivotLock == nil {
+ pivotOffset, err := rand.Int(rand.Reader, big.NewInt(int64(fsPivotInterval)))
+ if err != nil {
+ panic(fmt.Sprintf("Failed to access crypto random source: %v", err))
}
- // If the point is below the origin, move origin back to ensure state download
- if pivot < origin {
- if pivot > 0 {
- origin = pivot - 1
- } else {
- origin = 0
- }
+ if height > uint64(fsMinFullBlocks)+pivotOffset.Uint64() {
+ pivot = height - uint64(fsMinFullBlocks) - pivotOffset.Uint64()
}
- glog.V(logger.Debug).Infof("Fast syncing until pivot block #%d", pivot)
+ } else {
+ // Pivot point locked in, use this and do not pick a new one!
+ pivot = d.fsPivotLock.Number.Uint64()
}
- d.queue.Prepare(origin+1, d.mode, pivot, latest)
- if d.syncInitHook != nil {
- d.syncInitHook(origin, height)
+ // If the point is below the origin, move origin back to ensure state download
+ if pivot < origin {
+ if pivot > 0 {
+ origin = pivot - 1
+ } else {
+ origin = 0
+ }
}
- return d.spawnSync(origin+1,
- func() error { return d.fetchHeaders(p, origin+1) }, // Headers are always retrieved
- func() error { return d.processHeaders(origin+1, td) }, // Headers are always retrieved
- func() error { return d.fetchBodies(origin + 1) }, // Bodies are retrieved during normal and fast sync
- func() error { return d.fetchReceipts(origin + 1) }, // Receipts are retrieved during fast sync
- func() error { return d.fetchNodeData() }, // Node state data is retrieved during fast sync
- )
-
- default:
- // Something very wrong, stop right here
- glog.V(logger.Error).Infof("Unsupported eth protocol: %d", p.version)
- return errBadPeer
+ glog.V(logger.Debug).Infof("Fast syncing until pivot block #%d", pivot)
}
+ d.queue.Prepare(origin+1, d.mode, pivot, latest)
+ if d.syncInitHook != nil {
+ d.syncInitHook(origin, height)
+ }
+ return d.spawnSync(origin+1,
+ func() error { return d.fetchHeaders(p, origin+1) }, // Headers are always retrieved
+ func() error { return d.processHeaders(origin+1, td) }, // Headers are always retrieved
+ func() error { return d.fetchBodies(origin + 1) }, // Bodies are retrieved during normal and fast sync
+ func() error { return d.fetchReceipts(origin + 1) }, // Receipts are retrieved during fast sync
+ func() error { return d.fetchNodeData() }, // Node state data is retrieved during fast sync
+ )
}
// spawnSync runs d.process and all given fetcher functions to completion in
@@ -540,459 +515,14 @@ func (d *Downloader) Terminate() {
d.cancel()
}
-// fetchHeight61 retrieves the head block of the remote peer to aid in estimating
-// the total time a pending synchronisation would take.
-func (d *Downloader) fetchHeight61(p *peer) (uint64, error) {
- glog.V(logger.Debug).Infof("%v: retrieving remote chain height", p)
-
- // Request the advertised remote head block and wait for the response
- go p.getBlocks([]common.Hash{p.head})
-
- timeout := time.After(hashTTL)
- for {
- select {
- case <-d.cancelCh:
- return 0, errCancelBlockFetch
-
- case packet := <-d.blockCh:
- // Discard anything not from the origin peer
- if packet.PeerId() != p.id {
- glog.V(logger.Debug).Infof("Received blocks from incorrect peer(%s)", packet.PeerId())
- break
- }
- // Make sure the peer actually gave something valid
- blocks := packet.(*blockPack).blocks
- if len(blocks) != 1 {
- glog.V(logger.Debug).Infof("%v: invalid number of head blocks: %d != 1", p, len(blocks))
- return 0, errBadPeer
- }
- return blocks[0].NumberU64(), nil
-
- case <-timeout:
- glog.V(logger.Debug).Infof("%v: head block timeout", p)
- return 0, errTimeout
-
- case <-d.hashCh:
- // Out of bounds hashes received, ignore them
-
- case <-d.headerCh:
- case <-d.bodyCh:
- case <-d.stateCh:
- case <-d.receiptCh:
- // Ignore eth/{62,63} packets because this is eth/61.
- // These can arrive as a late delivery from a previous sync.
- }
- }
-}
-
-// findAncestor61 tries to locate the common ancestor block of the local chain and
-// a remote peers blockchain. In the general case when our node was in sync and
-// on the correct chain, checking the top N blocks should already get us a match.
-// In the rare scenario when we ended up on a long reorganisation (i.e. none of
-// the head blocks match), we do a binary search to find the common ancestor.
-func (d *Downloader) findAncestor61(p *peer, height uint64) (uint64, error) {
- glog.V(logger.Debug).Infof("%v: looking for common ancestor", p)
-
- // Figure out the valid ancestor range to prevent rewrite attacks
- floor, ceil := int64(-1), d.headBlock().NumberU64()
- if ceil >= MaxForkAncestry {
- floor = int64(ceil - MaxForkAncestry)
- }
- // Request the topmost blocks to short circuit binary ancestor lookup
- head := ceil
- if head > height {
- head = height
- }
- from := int64(head) - int64(MaxHashFetch) + 1
- if from < 0 {
- from = 0
- }
- go p.getAbsHashes(uint64(from), MaxHashFetch)
-
- // Wait for the remote response to the head fetch
- number, hash := uint64(0), common.Hash{}
- timeout := time.After(hashTTL)
-
- for finished := false; !finished; {
- select {
- case <-d.cancelCh:
- return 0, errCancelHashFetch
-
- case packet := <-d.hashCh:
- // Discard anything not from the origin peer
- if packet.PeerId() != p.id {
- glog.V(logger.Debug).Infof("Received hashes from incorrect peer(%s)", packet.PeerId())
- break
- }
- // Make sure the peer actually gave something valid
- hashes := packet.(*hashPack).hashes
- if len(hashes) == 0 {
- glog.V(logger.Debug).Infof("%v: empty head hash set", p)
- return 0, errEmptyHashSet
- }
- // Check if a common ancestor was found
- finished = true
- for i := len(hashes) - 1; i >= 0; i-- {
- // Skip any headers that underflow/overflow our requested set
- header := d.getHeader(hashes[i])
- if header == nil || header.Number.Int64() < from || header.Number.Uint64() > head {
- continue
- }
- // Otherwise check if we already know the header or not
- if d.hasBlockAndState(hashes[i]) {
- number, hash = header.Number.Uint64(), header.Hash()
- break
- }
- }
-
- case <-timeout:
- glog.V(logger.Debug).Infof("%v: head hash timeout", p)
- return 0, errTimeout
-
- case <-d.blockCh:
- // Out of bounds blocks received, ignore them
-
- case <-d.headerCh:
- case <-d.bodyCh:
- case <-d.stateCh:
- case <-d.receiptCh:
- // Ignore eth/{62,63} packets because this is eth/61.
- // These can arrive as a late delivery from a previous sync.
- }
- }
- // If the head fetch already found an ancestor, return
- if !common.EmptyHash(hash) {
- if int64(number) <= floor {
- glog.V(logger.Warn).Infof("%v: potential rewrite attack: #%d [%x…] <= #%d limit", p, number, hash[:4], floor)
- return 0, errInvalidAncestor
- }
- glog.V(logger.Debug).Infof("%v: common ancestor: #%d [%x…]", p, number, hash[:4])
- return number, nil
- }
- // Ancestor not found, we need to binary search over our chain
- start, end := uint64(0), head
- if floor > 0 {
- start = uint64(floor)
- }
- for start+1 < end {
- // Split our chain interval in two, and request the hash to cross check
- check := (start + end) / 2
-
- timeout := time.After(hashTTL)
- go p.getAbsHashes(uint64(check), 1)
-
- // Wait until a reply arrives to this request
- for arrived := false; !arrived; {
- select {
- case <-d.cancelCh:
- return 0, errCancelHashFetch
-
- case packet := <-d.hashCh:
- // Discard anything not from the origin peer
- if packet.PeerId() != p.id {
- glog.V(logger.Debug).Infof("Received hashes from incorrect peer(%s)", packet.PeerId())
- break
- }
- // Make sure the peer actually gave something valid
- hashes := packet.(*hashPack).hashes
- if len(hashes) != 1 {
- glog.V(logger.Debug).Infof("%v: invalid search hash set (%d)", p, len(hashes))
- return 0, errBadPeer
- }
- arrived = true
-
- // Modify the search interval based on the response
- if !d.hasBlockAndState(hashes[0]) {
- end = check
- break
- }
- block := d.getBlock(hashes[0]) // this doesn't check state, hence the above explicit check
- if block.NumberU64() != check {
- glog.V(logger.Debug).Infof("%v: non requested hash #%d [%x…], instead of #%d", p, block.NumberU64(), block.Hash().Bytes()[:4], check)
- return 0, errBadPeer
- }
- start = check
-
- case <-timeout:
- glog.V(logger.Debug).Infof("%v: search hash timeout", p)
- return 0, errTimeout
-
- case <-d.blockCh:
- // Out of bounds blocks received, ignore them
-
- case <-d.headerCh:
- case <-d.bodyCh:
- case <-d.stateCh:
- case <-d.receiptCh:
- // Ignore eth/{62,63} packets because this is eth/61.
- // These can arrive as a late delivery from a previous sync.
- }
- }
- }
- // Ensure valid ancestry and return
- if int64(start) <= floor {
- glog.V(logger.Warn).Infof("%v: potential rewrite attack: #%d [%x…] <= #%d limit", p, start, hash[:4], floor)
- return 0, errInvalidAncestor
- }
- glog.V(logger.Debug).Infof("%v: common ancestor: #%d [%x…]", p, start, hash[:4])
- return start, nil
-}
-
-// fetchHashes61 keeps retrieving hashes from the requested number, until no more
-// are returned, potentially throttling on the way.
-func (d *Downloader) fetchHashes61(p *peer, td *big.Int, from uint64) error {
- glog.V(logger.Debug).Infof("%v: downloading hashes from #%d", p, from)
-
- // Create a timeout timer, and the associated hash fetcher
- request := time.Now() // time of the last fetch request
- timeout := time.NewTimer(0) // timer to dump a non-responsive active peer
- <-timeout.C // timeout channel should be initially empty
- defer timeout.Stop()
-
- getHashes := func(from uint64) {
- glog.V(logger.Detail).Infof("%v: fetching %d hashes from #%d", p, MaxHashFetch, from)
-
- request = time.Now()
- timeout.Reset(hashTTL)
- go p.getAbsHashes(from, MaxHashFetch)
- }
- // Start pulling hashes, until all are exhausted
- getHashes(from)
- gotHashes := false
-
- for {
- select {
- case <-d.cancelCh:
- return errCancelHashFetch
-
- case packet := <-d.hashCh:
- // Make sure the active peer is giving us the hashes
- if packet.PeerId() != p.id {
- glog.V(logger.Debug).Infof("Received hashes from incorrect peer(%s)", packet.PeerId())
- break
- }
- hashReqTimer.UpdateSince(request)
- timeout.Stop()
-
- // If no more hashes are inbound, notify the block fetcher and return
- if packet.Items() == 0 {
- glog.V(logger.Debug).Infof("%v: no available hashes", p)
-
- select {
- case d.blockWakeCh <- false:
- case <-d.cancelCh:
- }
- // If no hashes were retrieved at all, the peer violated it's TD promise that it had a
- // better chain compared to ours. The only exception is if it's promised blocks were
- // already imported by other means (e.g. fetcher):
- //
- // R <remote peer>, L <local node>: Both at block 10
- // R: Mine block 11, and propagate it to L
- // L: Queue block 11 for import
- // L: Notice that R's head and TD increased compared to ours, start sync
- // L: Import of block 11 finishes
- // L: Sync begins, and finds common ancestor at 11
- // L: Request new hashes up from 11 (R's TD was higher, it must have something)
- // R: Nothing to give
- if !gotHashes && td.Cmp(d.getTd(d.headBlock().Hash())) > 0 {
- return errStallingPeer
- }
- return nil
- }
- gotHashes = true
- hashes := packet.(*hashPack).hashes
-
- // Otherwise insert all the new hashes, aborting in case of junk
- glog.V(logger.Detail).Infof("%v: scheduling %d hashes from #%d", p, len(hashes), from)
-
- inserts := d.queue.Schedule61(hashes, true)
- if len(inserts) != len(hashes) {
- glog.V(logger.Debug).Infof("%v: stale hashes", p)
- return errBadPeer
- }
- // Notify the block fetcher of new hashes, but stop if queue is full
- if d.queue.PendingBlocks() < maxQueuedHashes {
- // We still have hashes to fetch, send continuation wake signal (potential)
- select {
- case d.blockWakeCh <- true:
- default:
- }
- } else {
- // Hash limit reached, send a termination wake signal (enforced)
- select {
- case d.blockWakeCh <- false:
- case <-d.cancelCh:
- }
- return nil
- }
- // Queue not yet full, fetch the next batch
- from += uint64(len(hashes))
- getHashes(from)
-
- case <-timeout.C:
- glog.V(logger.Debug).Infof("%v: hash request timed out", p)
- hashTimeoutMeter.Mark(1)
- return errTimeout
-
- case <-d.headerCh:
- case <-d.bodyCh:
- case <-d.stateCh:
- case <-d.receiptCh:
- // Ignore eth/{62,63} packets because this is eth/61.
- // These can arrive as a late delivery from a previous sync.
- }
- }
-}
-
-// fetchBlocks61 iteratively downloads the scheduled hashes, taking any available
-// peers, reserving a chunk of blocks for each, waiting for delivery and also
-// periodically checking for timeouts.
-func (d *Downloader) fetchBlocks61(from uint64) error {
- glog.V(logger.Debug).Infof("Downloading blocks from #%d", from)
- defer glog.V(logger.Debug).Infof("Block download terminated")
-
- // Create a timeout timer for scheduling expiration tasks
- ticker := time.NewTicker(100 * time.Millisecond)
- defer ticker.Stop()
-
- update := make(chan struct{}, 1)
-
- // Fetch blocks until the hash fetcher's done
- finished := false
- for {
- select {
- case <-d.cancelCh:
- return errCancelBlockFetch
-
- case packet := <-d.blockCh:
- // If the peer was previously banned and failed to deliver it's pack
- // in a reasonable time frame, ignore it's message.
- if peer := d.peers.Peer(packet.PeerId()); peer != nil {
- blocks := packet.(*blockPack).blocks
-
- // Deliver the received chunk of blocks and check chain validity
- accepted, err := d.queue.DeliverBlocks(peer.id, blocks)
- if err == errInvalidChain {
- return err
- }
- // Unless a peer delivered something completely else than requested (usually
- // caused by a timed out request which came through in the end), set it to
- // idle. If the delivery's stale, the peer should have already been idled.
- if err != errStaleDelivery {
- peer.SetBlocksIdle(accepted)
- }
- // Issue a log to the user to see what's going on
- switch {
- case err == nil && len(blocks) == 0:
- glog.V(logger.Detail).Infof("%s: no blocks delivered", peer)
- case err == nil:
- glog.V(logger.Detail).Infof("%s: delivered %d blocks", peer, len(blocks))
- default:
- glog.V(logger.Detail).Infof("%s: delivery failed: %v", peer, err)
- }
- }
- // Blocks arrived, try to update the progress
- select {
- case update <- struct{}{}:
- default:
- }
-
- case cont := <-d.blockWakeCh:
- // The hash fetcher sent a continuation flag, check if it's done
- if !cont {
- finished = true
- }
- // Hashes arrive, try to update the progress
- select {
- case update <- struct{}{}:
- default:
- }
-
- case <-ticker.C:
- // Sanity check update the progress
- select {
- case update <- struct{}{}:
- default:
- }
-
- case <-update:
- // Short circuit if we lost all our peers
- if d.peers.Len() == 0 {
- return errNoPeers
- }
- // Check for block request timeouts and demote the responsible peers
- for pid, fails := range d.queue.ExpireBlocks(blockTTL) {
- if peer := d.peers.Peer(pid); peer != nil {
- if fails > 1 {
- glog.V(logger.Detail).Infof("%s: block delivery timeout", peer)
- peer.SetBlocksIdle(0)
- } else {
- glog.V(logger.Debug).Infof("%s: stalling block delivery, dropping", peer)
- d.dropPeer(pid)
- }
- }
- }
- // If there's nothing more to fetch, wait or terminate
- if d.queue.PendingBlocks() == 0 {
- if !d.queue.InFlightBlocks() && finished {
- glog.V(logger.Debug).Infof("Block fetching completed")
- return nil
- }
- break
- }
- // Send a download request to all idle peers, until throttled
- throttled := false
- idles, total := d.peers.BlockIdlePeers()
-
- for _, peer := range idles {
- // Short circuit if throttling activated
- if d.queue.ShouldThrottleBlocks() {
- throttled = true
- break
- }
- // Reserve a chunk of hashes for a peer. A nil can mean either that
- // no more hashes are available, or that the peer is known not to
- // have them.
- request := d.queue.ReserveBlocks(peer, peer.BlockCapacity(blockTargetRTT))
- if request == nil {
- continue
- }
- if glog.V(logger.Detail) {
- glog.Infof("%s: requesting %d blocks", peer, len(request.Hashes))
- }
- // Fetch the chunk and make sure any errors return the hashes to the queue
- if err := peer.Fetch61(request); err != nil {
- // Although we could try and make an attempt to fix this, this error really
- // means that we've double allocated a fetch task to a peer. If that is the
- // case, the internal state of the downloader and the queue is very wrong so
- // better hard crash and note the error instead of silently accumulating into
- // a much bigger issue.
- panic(fmt.Sprintf("%v: fetch assignment failed", peer))
- }
- }
- // Make sure that we have peers available for fetching. If all peers have been tried
- // and all failed throw an error
- if !throttled && !d.queue.InFlightBlocks() && len(idles) == total {
- return errPeersUnavailable
- }
-
- case <-d.headerCh:
- case <-d.bodyCh:
- case <-d.stateCh:
- case <-d.receiptCh:
- // Ignore eth/{62,63} packets because this is eth/61.
- // These can arrive as a late delivery from a previous sync.
- }
- }
-}
-
// fetchHeight retrieves the head header of the remote peer to aid in estimating
// the total time a pending synchronisation would take.
func (d *Downloader) fetchHeight(p *peer) (*types.Header, error) {
glog.V(logger.Debug).Infof("%v: retrieving remote chain height", p)
// Request the advertised remote head block and wait for the response
- go p.getRelHeaders(p.head, 1, 0, false)
+ head, _ := p.currentHead()
+ go p.getRelHeaders(head, 1, 0, false)
timeout := time.After(d.requestTTL())
for {
@@ -1022,11 +552,6 @@ func (d *Downloader) fetchHeight(p *peer) (*types.Header, error) {
case <-d.stateCh:
case <-d.receiptCh:
// Out of bounds delivery, ignore
-
- case <-d.hashCh:
- case <-d.blockCh:
- // Ignore eth/61 packets because this is eth/62+.
- // These can arrive as a late delivery from a previous sync.
}
}
}
@@ -1037,7 +562,7 @@ func (d *Downloader) fetchHeight(p *peer) (*types.Header, error) {
// In the rare scenario when we ended up on a long reorganisation (i.e. none of
// the head links match), we do a binary search to find the common ancestor.
func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
- glog.V(logger.Debug).Infof("%v: looking for common ancestor", p)
+ glog.V(logger.Debug).Infof("%v: looking for common ancestor (remote height %d)", p, height)
// Figure out the valid ancestor range to prevent rewrite attacks
floor, ceil := int64(-1), d.headHeader().Number.Uint64()
@@ -1054,11 +579,17 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
if head > height {
head = height
}
- from := int64(head) - int64(MaxHeaderFetch) + 1
+ from := int64(head) - int64(MaxHeaderFetch)
if from < 0 {
from = 0
}
- go p.getAbsHeaders(uint64(from), MaxHeaderFetch, 0, false)
+ // Span out with 15 block gaps into the future to catch bad head reports
+ limit := 2 * MaxHeaderFetch / 16
+ count := 1 + int((int64(ceil)-from)/16)
+ if count > limit {
+ count = limit
+ }
+ go p.getAbsHeaders(uint64(from), count, 15, false)
// Wait for the remote response to the head fetch
number, hash := uint64(0), common.Hash{}
@@ -1067,7 +598,7 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
for finished := false; !finished; {
select {
case <-d.cancelCh:
- return 0, errCancelHashFetch
+ return 0, errCancelHeaderFetch
case packet := <-d.headerCh:
// Discard anything not from the origin peer
@@ -1083,12 +614,8 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
}
// Make sure the peer's reply conforms to the request
for i := 0; i < len(headers); i++ {
- if number := headers[i].Number.Int64(); number != from+int64(i) {
- glog.V(logger.Warn).Infof("%v: head header set (item %d) broke chain ordering: requested %d, got %d", p, i, from+int64(i), number)
- return 0, errInvalidChain
- }
- if i > 0 && headers[i-1].Hash() != headers[i].ParentHash {
- glog.V(logger.Warn).Infof("%v: head header set (item %d) broke chain ancestry: expected [%x], got [%x]", p, i, headers[i-1].Hash().Bytes()[:4], headers[i].ParentHash[:4])
+ if number := headers[i].Number.Int64(); number != from+int64(i)*16 {
+ glog.V(logger.Warn).Infof("%v: head header set (item %d) broke chain ordering: requested %d, got %d", p, i, from+int64(i)*16, number)
return 0, errInvalidChain
}
}
@@ -1096,12 +623,18 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
finished = true
for i := len(headers) - 1; i >= 0; i-- {
// Skip any headers that underflow/overflow our requested set
- if headers[i].Number.Int64() < from || headers[i].Number.Uint64() > head {
+ if headers[i].Number.Int64() < from || headers[i].Number.Uint64() > ceil {
continue
}
// Otherwise check if we already know the header or not
if (d.mode == FullSync && d.hasBlockAndState(headers[i].Hash())) || (d.mode != FullSync && d.hasHeader(headers[i].Hash())) {
number, hash = headers[i].Number.Uint64(), headers[i].Hash()
+
+ // If every header is known, even future ones, the peer straight out lied about its head
+ if number > height && i == limit-1 {
+ glog.V(logger.Warn).Infof("%v: lied about chain head: reported %d, found above %d", p, height, number)
+ return 0, errStallingPeer
+ }
break
}
}
@@ -1114,11 +647,6 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
case <-d.stateCh:
case <-d.receiptCh:
// Out of bounds delivery, ignore
-
- case <-d.hashCh:
- case <-d.blockCh:
- // Ignore eth/61 packets because this is eth/62+.
- // These can arrive as a late delivery from a previous sync.
}
}
// If the head fetch already found an ancestor, return
@@ -1146,7 +674,7 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
for arrived := false; !arrived; {
select {
case <-d.cancelCh:
- return 0, errCancelHashFetch
+ return 0, errCancelHeaderFetch
case packer := <-d.headerCh:
// Discard anything not from the origin peer
@@ -1182,11 +710,6 @@ func (d *Downloader) findAncestor(p *peer, height uint64) (uint64, error) {
case <-d.stateCh:
case <-d.receiptCh:
// Out of bounds delivery, ignore
-
- case <-d.hashCh:
- case <-d.blockCh:
- // Ignore eth/61 packets because this is eth/62+.
- // These can arrive as a late delivery from a previous sync.
}
}
}
@@ -1305,11 +828,6 @@ func (d *Downloader) fetchHeaders(p *peer, from uint64) error {
case <-d.cancelCh:
}
return errBadPeer
-
- case <-d.hashCh:
- case <-d.blockCh:
- // Ignore eth/61 packets because this is eth/62+.
- // These can arrive as a late delivery from a previous sync.
}
}
}
@@ -1555,7 +1073,14 @@ func (d *Downloader) fetchParts(errCancel error, deliveryCh chan dataPack, deliv
// Check for fetch request timeouts and demote the responsible peers
for pid, fails := range expire() {
if peer := d.peers.Peer(pid); peer != nil {
- if fails > 1 {
+ // If a lot of retrieval elements expired, we might have overestimated the remote peer or perhaps
+ // ourselves. Only reset to minimal throughput but don't drop just yet. If even the minimal times
+ // out that sync wise we need to get rid of the peer.
+ //
+ // The reason the minimum threshold is 2 is because the downloader tries to estimate the bandwidth
+ // and latency of a peer separately, which requires pushing the measures capacity a bit and seeing
+ // how response times reacts, to it always requests one more than the minimum (i.e. min 2).
+ if fails > 2 {
glog.V(logger.Detail).Infof("%s: %s delivery timeout", peer, strings.ToLower(kind))
setIdle(peer, 0)
} else {
@@ -1623,11 +1148,6 @@ func (d *Downloader) fetchParts(errCancel error, deliveryCh chan dataPack, deliv
if !progressed && !throttled && !running && len(idles) == total && pending() > 0 {
return errPeersUnavailable
}
-
- case <-d.hashCh:
- case <-d.blockCh:
- // Ignore eth/61 packets because this is eth/62+.
- // These can arrive as a late delivery from a previous sync.
}
}
}
@@ -1867,19 +1387,6 @@ func (d *Downloader) processContent() error {
}
}
-// DeliverHashes injects a new batch of hashes received from a remote node into
-// the download schedule. This is usually invoked through the BlockHashesMsg by
-// the protocol handler.
-func (d *Downloader) DeliverHashes(id string, hashes []common.Hash) (err error) {
- return d.deliver(id, d.hashCh, &hashPack{id, hashes}, hashInMeter, hashDropMeter)
-}
-
-// DeliverBlocks injects a new batch of blocks received from a remote node.
-// This is usually invoked through the BlocksMsg by the protocol handler.
-func (d *Downloader) DeliverBlocks(id string, blocks []*types.Block) (err error) {
- return d.deliver(id, d.blockCh, &blockPack{id, blocks}, blockInMeter, blockDropMeter)
-}
-
// DeliverHeaders injects a new batch of block headers received from a remote
// node into the download schedule.
func (d *Downloader) DeliverHeaders(id string, headers []*types.Header) (err error) {
diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go
index e9e051ded..ae9a85ae1 100644
--- a/eth/downloader/downloader_test.go
+++ b/eth/downloader/downloader_test.go
@@ -55,7 +55,7 @@ func init() {
// reassembly.
func makeChain(n int, seed byte, parent *types.Block, parentReceipts types.Receipts, heavy bool) ([]common.Hash, map[common.Hash]*types.Header, map[common.Hash]*types.Block, map[common.Hash]types.Receipts) {
// Generate the block chain
- blocks, receipts := core.GenerateChain(parent, testdb, n, func(i int, block *core.BlockGen) {
+ blocks, receipts := core.GenerateChain(nil, parent, testdb, n, func(i int, block *core.BlockGen) {
block.SetCoinbase(common.Address{seed})
// If a heavy chain is requested, delay blocks to raise difficulty
@@ -399,14 +399,12 @@ func (dl *downloadTester) newSlowPeer(id string, version int, hashes []common.Ha
var err error
switch version {
- case 61:
- err = dl.downloader.RegisterPeer(id, version, hashes[0], dl.peerGetRelHashesFn(id, delay), dl.peerGetAbsHashesFn(id, delay), dl.peerGetBlocksFn(id, delay), nil, nil, nil, nil, nil)
case 62:
- err = dl.downloader.RegisterPeer(id, version, hashes[0], nil, nil, nil, dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), nil, nil)
+ err = dl.downloader.RegisterPeer(id, version, dl.peerCurrentHeadFn(id), dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), nil, nil)
case 63:
- err = dl.downloader.RegisterPeer(id, version, hashes[0], nil, nil, nil, dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), dl.peerGetReceiptsFn(id, delay), dl.peerGetNodeDataFn(id, delay))
+ err = dl.downloader.RegisterPeer(id, version, dl.peerCurrentHeadFn(id), dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), dl.peerGetReceiptsFn(id, delay), dl.peerGetNodeDataFn(id, delay))
case 64:
- err = dl.downloader.RegisterPeer(id, version, hashes[0], nil, nil, nil, dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), dl.peerGetReceiptsFn(id, delay), dl.peerGetNodeDataFn(id, delay))
+ err = dl.downloader.RegisterPeer(id, version, dl.peerCurrentHeadFn(id), dl.peerGetRelHeadersFn(id, delay), dl.peerGetAbsHeadersFn(id, delay), dl.peerGetBodiesFn(id, delay), dl.peerGetReceiptsFn(id, delay), dl.peerGetNodeDataFn(id, delay))
}
if err == nil {
// Assign the owned hashes, headers and blocks to the peer (deep copy)
@@ -465,83 +463,14 @@ func (dl *downloadTester) dropPeer(id string) {
dl.downloader.UnregisterPeer(id)
}
-// peerGetRelHashesFn constructs a GetHashes function associated with a specific
-// peer in the download tester. The returned function can be used to retrieve
-// batches of hashes from the particularly requested peer.
-func (dl *downloadTester) peerGetRelHashesFn(id string, delay time.Duration) func(head common.Hash) error {
- return func(head common.Hash) error {
- time.Sleep(delay)
-
- dl.lock.RLock()
- defer dl.lock.RUnlock()
-
- // Gather the next batch of hashes
- hashes := dl.peerHashes[id]
- result := make([]common.Hash, 0, MaxHashFetch)
- for i, hash := range hashes {
- if hash == head {
- i++
- for len(result) < cap(result) && i < len(hashes) {
- result = append(result, hashes[i])
- i++
- }
- break
- }
- }
- // Delay delivery a bit to allow attacks to unfold
- go func() {
- time.Sleep(time.Millisecond)
- dl.downloader.DeliverHashes(id, result)
- }()
- return nil
- }
-}
-
-// peerGetAbsHashesFn constructs a GetHashesFromNumber function associated with
-// a particular peer in the download tester. The returned function can be used to
-// retrieve batches of hashes from the particularly requested peer.
-func (dl *downloadTester) peerGetAbsHashesFn(id string, delay time.Duration) func(uint64, int) error {
- return func(head uint64, count int) error {
- time.Sleep(delay)
-
- dl.lock.RLock()
- defer dl.lock.RUnlock()
-
- // Gather the next batch of hashes
- hashes := dl.peerHashes[id]
- result := make([]common.Hash, 0, count)
- for i := 0; i < count && len(hashes)-int(head)-1-i >= 0; i++ {
- result = append(result, hashes[len(hashes)-int(head)-1-i])
- }
- // Delay delivery a bit to allow attacks to unfold
- go func() {
- time.Sleep(time.Millisecond)
- dl.downloader.DeliverHashes(id, result)
- }()
- return nil
- }
-}
-
-// peerGetBlocksFn constructs a getBlocks function associated with a particular
-// peer in the download tester. The returned function can be used to retrieve
-// batches of blocks from the particularly requested peer.
-func (dl *downloadTester) peerGetBlocksFn(id string, delay time.Duration) func([]common.Hash) error {
- return func(hashes []common.Hash) error {
- time.Sleep(delay)
-
+// peerCurrentHeadFn constructs a function to retrieve a peer's current head hash
+// and total difficulty.
+func (dl *downloadTester) peerCurrentHeadFn(id string) func() (common.Hash, *big.Int) {
+ return func() (common.Hash, *big.Int) {
dl.lock.RLock()
defer dl.lock.RUnlock()
- blocks := dl.peerBlocks[id]
- result := make([]*types.Block, 0, len(hashes))
- for _, hash := range hashes {
- if block, ok := blocks[hash]; ok {
- result = append(result, block)
- }
- }
- go dl.downloader.DeliverBlocks(id, result)
-
- return nil
+ return dl.peerHashes[id][0], nil
}
}
@@ -730,7 +659,6 @@ func assertOwnForkedChain(t *testing.T, tester *downloadTester, common int, leng
// Tests that simple synchronization against a canonical chain works correctly.
// In this test common ancestor lookup should be short circuited and not require
// binary searching.
-func TestCanonicalSynchronisation61(t *testing.T) { testCanonicalSynchronisation(t, 61, FullSync) }
func TestCanonicalSynchronisation62(t *testing.T) { testCanonicalSynchronisation(t, 62, FullSync) }
func TestCanonicalSynchronisation63Full(t *testing.T) { testCanonicalSynchronisation(t, 63, FullSync) }
func TestCanonicalSynchronisation63Fast(t *testing.T) { testCanonicalSynchronisation(t, 63, FastSync) }
@@ -759,7 +687,6 @@ func testCanonicalSynchronisation(t *testing.T, protocol int, mode SyncMode) {
// Tests that if a large batch of blocks are being downloaded, it is throttled
// until the cached blocks are retrieved.
-func TestThrottling61(t *testing.T) { testThrottling(t, 61, FullSync) }
func TestThrottling62(t *testing.T) { testThrottling(t, 62, FullSync) }
func TestThrottling63Full(t *testing.T) { testThrottling(t, 63, FullSync) }
func TestThrottling63Fast(t *testing.T) { testThrottling(t, 63, FastSync) }
@@ -845,7 +772,6 @@ func testThrottling(t *testing.T, protocol int, mode SyncMode) {
// Tests that simple synchronization against a forked chain works correctly. In
// this test common ancestor lookup should *not* be short circuited, and a full
// binary search should be executed.
-func TestForkedSync61(t *testing.T) { testForkedSync(t, 61, FullSync) }
func TestForkedSync62(t *testing.T) { testForkedSync(t, 62, FullSync) }
func TestForkedSync63Full(t *testing.T) { testForkedSync(t, 63, FullSync) }
func TestForkedSync63Fast(t *testing.T) { testForkedSync(t, 63, FastSync) }
@@ -881,7 +807,6 @@ func testForkedSync(t *testing.T, protocol int, mode SyncMode) {
// Tests that synchronising against a much shorter but much heavyer fork works
// corrently and is not dropped.
-func TestHeavyForkedSync61(t *testing.T) { testHeavyForkedSync(t, 61, FullSync) }
func TestHeavyForkedSync62(t *testing.T) { testHeavyForkedSync(t, 62, FullSync) }
func TestHeavyForkedSync63Full(t *testing.T) { testHeavyForkedSync(t, 63, FullSync) }
func TestHeavyForkedSync63Fast(t *testing.T) { testHeavyForkedSync(t, 63, FastSync) }
@@ -915,24 +840,9 @@ func testHeavyForkedSync(t *testing.T, protocol int, mode SyncMode) {
assertOwnForkedChain(t, tester, common+1, []int{common + fork + 1, common + fork/2 + 1})
}
-// Tests that an inactive downloader will not accept incoming hashes and blocks.
-func TestInactiveDownloader61(t *testing.T) {
- t.Parallel()
- tester := newTester()
-
- // Check that neither hashes nor blocks are accepted
- if err := tester.downloader.DeliverHashes("bad peer", []common.Hash{}); err != errNoSyncActive {
- t.Errorf("error mismatch: have %v, want %v", err, errNoSyncActive)
- }
- if err := tester.downloader.DeliverBlocks("bad peer", []*types.Block{}); err != errNoSyncActive {
- t.Errorf("error mismatch: have %v, want %v", err, errNoSyncActive)
- }
-}
-
// Tests that chain forks are contained within a certain interval of the current
// chain head, ensuring that malicious peers cannot waste resources by feeding
// long dead chains.
-func TestBoundedForkedSync61(t *testing.T) { testBoundedForkedSync(t, 61, FullSync) }
func TestBoundedForkedSync62(t *testing.T) { testBoundedForkedSync(t, 62, FullSync) }
func TestBoundedForkedSync63Full(t *testing.T) { testBoundedForkedSync(t, 63, FullSync) }
func TestBoundedForkedSync63Fast(t *testing.T) { testBoundedForkedSync(t, 63, FastSync) }
@@ -968,7 +878,6 @@ func testBoundedForkedSync(t *testing.T, protocol int, mode SyncMode) {
// Tests that chain forks are contained within a certain interval of the current
// chain head for short but heavy forks too. These are a bit special because they
// take different ancestor lookup paths.
-func TestBoundedHeavyForkedSync61(t *testing.T) { testBoundedHeavyForkedSync(t, 61, FullSync) }
func TestBoundedHeavyForkedSync62(t *testing.T) { testBoundedHeavyForkedSync(t, 62, FullSync) }
func TestBoundedHeavyForkedSync63Full(t *testing.T) { testBoundedHeavyForkedSync(t, 63, FullSync) }
func TestBoundedHeavyForkedSync63Fast(t *testing.T) { testBoundedHeavyForkedSync(t, 63, FastSync) }
@@ -1039,7 +948,6 @@ func TestInactiveDownloader63(t *testing.T) {
}
// Tests that a canceled download wipes all previously accumulated state.
-func TestCancel61(t *testing.T) { testCancel(t, 61, FullSync) }
func TestCancel62(t *testing.T) { testCancel(t, 62, FullSync) }
func TestCancel63Full(t *testing.T) { testCancel(t, 63, FullSync) }
func TestCancel63Fast(t *testing.T) { testCancel(t, 63, FastSync) }
@@ -1081,7 +989,6 @@ func testCancel(t *testing.T, protocol int, mode SyncMode) {
}
// Tests that synchronisation from multiple peers works as intended (multi thread sanity test).
-func TestMultiSynchronisation61(t *testing.T) { testMultiSynchronisation(t, 61, FullSync) }
func TestMultiSynchronisation62(t *testing.T) { testMultiSynchronisation(t, 62, FullSync) }
func TestMultiSynchronisation63Full(t *testing.T) { testMultiSynchronisation(t, 63, FullSync) }
func TestMultiSynchronisation63Fast(t *testing.T) { testMultiSynchronisation(t, 63, FastSync) }
@@ -1112,7 +1019,6 @@ func testMultiSynchronisation(t *testing.T, protocol int, mode SyncMode) {
// Tests that synchronisations behave well in multi-version protocol environments
// and not wreak havoc on other nodes in the network.
-func TestMultiProtoSynchronisation61(t *testing.T) { testMultiProtoSync(t, 61, FullSync) }
func TestMultiProtoSynchronisation62(t *testing.T) { testMultiProtoSync(t, 62, FullSync) }
func TestMultiProtoSynchronisation63Full(t *testing.T) { testMultiProtoSync(t, 63, FullSync) }
func TestMultiProtoSynchronisation63Fast(t *testing.T) { testMultiProtoSync(t, 63, FastSync) }
@@ -1131,7 +1037,6 @@ func testMultiProtoSync(t *testing.T, protocol int, mode SyncMode) {
tester := newTester()
defer tester.terminate()
- tester.newPeer("peer 61", 61, hashes, nil, blocks, nil)
tester.newPeer("peer 62", 62, hashes, headers, blocks, nil)
tester.newPeer("peer 63", 63, hashes, headers, blocks, receipts)
tester.newPeer("peer 64", 64, hashes, headers, blocks, receipts)
@@ -1143,7 +1048,7 @@ func testMultiProtoSync(t *testing.T, protocol int, mode SyncMode) {
assertOwnChain(t, tester, targetBlocks+1)
// Check that no peers have been dropped off
- for _, version := range []int{61, 62, 63, 64} {
+ for _, version := range []int{62, 63, 64} {
peer := fmt.Sprintf("peer %d", version)
if _, ok := tester.peerHashes[peer]; !ok {
t.Errorf("%s dropped", peer)
@@ -1368,7 +1273,6 @@ func testInvalidHeaderRollback(t *testing.T, protocol int, mode SyncMode) {
// Tests that a peer advertising an high TD doesn't get to stall the downloader
// afterwards by not sending any useful hashes.
-func TestHighTDStarvationAttack61(t *testing.T) { testHighTDStarvationAttack(t, 61, FullSync) }
func TestHighTDStarvationAttack62(t *testing.T) { testHighTDStarvationAttack(t, 62, FullSync) }
func TestHighTDStarvationAttack63Full(t *testing.T) { testHighTDStarvationAttack(t, 63, FullSync) }
func TestHighTDStarvationAttack63Fast(t *testing.T) { testHighTDStarvationAttack(t, 63, FastSync) }
@@ -1391,7 +1295,6 @@ func testHighTDStarvationAttack(t *testing.T, protocol int, mode SyncMode) {
}
// Tests that misbehaving peers are disconnected, whilst behaving ones are not.
-func TestBlockHeaderAttackerDropping61(t *testing.T) { testBlockHeaderAttackerDropping(t, 61) }
func TestBlockHeaderAttackerDropping62(t *testing.T) { testBlockHeaderAttackerDropping(t, 62) }
func TestBlockHeaderAttackerDropping63(t *testing.T) { testBlockHeaderAttackerDropping(t, 63) }
func TestBlockHeaderAttackerDropping64(t *testing.T) { testBlockHeaderAttackerDropping(t, 64) }
@@ -1409,7 +1312,6 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol int) {
{errStallingPeer, true}, // Peer was detected to be stalling, drop it
{errNoPeers, false}, // No peers to download from, soft race, no issue
{errTimeout, true}, // No hashes received in due time, drop the peer
- {errEmptyHashSet, true}, // No hashes were returned as a response, drop as it's a dead end
{errEmptyHeaderSet, true}, // No headers were returned as a response, drop as it's a dead end
{errPeersUnavailable, true}, // Nobody had the advertised blocks, drop the advertiser
{errInvalidAncestor, true}, // Agreed upon ancestor is not acceptable, drop the chain rewriter
@@ -1417,7 +1319,6 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol int) {
{errInvalidBlock, false}, // A bad peer was detected, but not the sync origin
{errInvalidBody, false}, // A bad peer was detected, but not the sync origin
{errInvalidReceipt, false}, // A bad peer was detected, but not the sync origin
- {errCancelHashFetch, false}, // Synchronisation was canceled, origin may be innocent, don't drop
{errCancelBlockFetch, false}, // Synchronisation was canceled, origin may be innocent, don't drop
{errCancelHeaderFetch, false}, // Synchronisation was canceled, origin may be innocent, don't drop
{errCancelBodyFetch, false}, // Synchronisation was canceled, origin may be innocent, don't drop
@@ -1450,7 +1351,6 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol int) {
// Tests that synchronisation progress (origin block number, current block number
// and highest block number) is tracked and updated correctly.
-func TestSyncProgress61(t *testing.T) { testSyncProgress(t, 61, FullSync) }
func TestSyncProgress62(t *testing.T) { testSyncProgress(t, 62, FullSync) }
func TestSyncProgress63Full(t *testing.T) { testSyncProgress(t, 63, FullSync) }
func TestSyncProgress63Fast(t *testing.T) { testSyncProgress(t, 63, FastSync) }
@@ -1477,8 +1377,8 @@ func testSyncProgress(t *testing.T, protocol int, mode SyncMode) {
<-progress
}
// Retrieve the sync progress and ensure they are zero (pristine sync)
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != 0 {
- t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, 0)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != 0 {
+ t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, 0)
}
// Synchronise half the blocks and check initial progress
tester.newPeer("peer-half", protocol, hashes[targetBlocks/2:], headers, blocks, receipts)
@@ -1492,8 +1392,8 @@ func testSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != uint64(targetBlocks/2+1) {
- t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, targetBlocks/2+1)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != uint64(targetBlocks/2+1) {
+ t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, targetBlocks/2+1)
}
progress <- struct{}{}
pending.Wait()
@@ -1509,22 +1409,21 @@ func testSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != uint64(targetBlocks/2+1) || current != uint64(targetBlocks/2+1) || latest != uint64(targetBlocks) {
- t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, targetBlocks/2+1, targetBlocks/2+1, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != uint64(targetBlocks/2+1) || progress.CurrentBlock != uint64(targetBlocks/2+1) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, targetBlocks/2+1, targetBlocks/2+1, targetBlocks)
}
progress <- struct{}{}
pending.Wait()
// Check final progress after successful sync
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != uint64(targetBlocks/2+1) || current != uint64(targetBlocks) || latest != uint64(targetBlocks) {
- t.Fatalf("Final progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, targetBlocks/2+1, targetBlocks, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != uint64(targetBlocks/2+1) || progress.CurrentBlock != uint64(targetBlocks) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Final progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, targetBlocks/2+1, targetBlocks, targetBlocks)
}
}
// Tests that synchronisation progress (origin block number and highest block
// number) is tracked and updated correctly in case of a fork (or manual head
// revertal).
-func TestForkedSyncProgress61(t *testing.T) { testForkedSyncProgress(t, 61, FullSync) }
func TestForkedSyncProgress62(t *testing.T) { testForkedSyncProgress(t, 62, FullSync) }
func TestForkedSyncProgress63Full(t *testing.T) { testForkedSyncProgress(t, 63, FullSync) }
func TestForkedSyncProgress63Fast(t *testing.T) { testForkedSyncProgress(t, 63, FastSync) }
@@ -1551,8 +1450,8 @@ func testForkedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
<-progress
}
// Retrieve the sync progress and ensure they are zero (pristine sync)
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != 0 {
- t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, 0)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != 0 {
+ t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, 0)
}
// Synchronise with one of the forks and check progress
tester.newPeer("fork A", protocol, hashesA, headersA, blocksA, receiptsA)
@@ -1566,8 +1465,8 @@ func testForkedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != uint64(len(hashesA)-1) {
- t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, len(hashesA)-1)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != uint64(len(hashesA)-1) {
+ t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, len(hashesA)-1)
}
progress <- struct{}{}
pending.Wait()
@@ -1586,22 +1485,21 @@ func testForkedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != uint64(common) || current != uint64(len(hashesA)-1) || latest != uint64(len(hashesB)-1) {
- t.Fatalf("Forking progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, common, len(hashesA)-1, len(hashesB)-1)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != uint64(common) || progress.CurrentBlock != uint64(len(hashesA)-1) || progress.HighestBlock != uint64(len(hashesB)-1) {
+ t.Fatalf("Forking progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, common, len(hashesA)-1, len(hashesB)-1)
}
progress <- struct{}{}
pending.Wait()
// Check final progress after successful sync
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != uint64(common) || current != uint64(len(hashesB)-1) || latest != uint64(len(hashesB)-1) {
- t.Fatalf("Final progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, common, len(hashesB)-1, len(hashesB)-1)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != uint64(common) || progress.CurrentBlock != uint64(len(hashesB)-1) || progress.HighestBlock != uint64(len(hashesB)-1) {
+ t.Fatalf("Final progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, common, len(hashesB)-1, len(hashesB)-1)
}
}
// Tests that if synchronisation is aborted due to some failure, then the progress
// origin is not updated in the next sync cycle, as it should be considered the
// continuation of the previous sync and not a new instance.
-func TestFailedSyncProgress61(t *testing.T) { testFailedSyncProgress(t, 61, FullSync) }
func TestFailedSyncProgress62(t *testing.T) { testFailedSyncProgress(t, 62, FullSync) }
func TestFailedSyncProgress63Full(t *testing.T) { testFailedSyncProgress(t, 63, FullSync) }
func TestFailedSyncProgress63Fast(t *testing.T) { testFailedSyncProgress(t, 63, FastSync) }
@@ -1628,8 +1526,8 @@ func testFailedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
<-progress
}
// Retrieve the sync progress and ensure they are zero (pristine sync)
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != 0 {
- t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, 0)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != 0 {
+ t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, 0)
}
// Attempt a full sync with a faulty peer
tester.newPeer("faulty", protocol, hashes, headers, blocks, receipts)
@@ -1648,8 +1546,8 @@ func testFailedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != uint64(targetBlocks) {
- t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, targetBlocks)
}
progress <- struct{}{}
pending.Wait()
@@ -1665,21 +1563,20 @@ func testFailedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current > uint64(targetBlocks/2) || latest != uint64(targetBlocks) {
- t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/0-%v/%v", origin, current, latest, 0, targetBlocks/2, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock > uint64(targetBlocks/2) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/0-%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, targetBlocks/2, targetBlocks)
}
progress <- struct{}{}
pending.Wait()
// Check final progress after successful sync
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin > uint64(targetBlocks/2) || current != uint64(targetBlocks) || latest != uint64(targetBlocks) {
- t.Fatalf("Final progress mismatch: have %v/%v/%v, want 0-%v/%v/%v", origin, current, latest, targetBlocks/2, targetBlocks, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock > uint64(targetBlocks/2) || progress.CurrentBlock != uint64(targetBlocks) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Final progress mismatch: have %v/%v/%v, want 0-%v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, targetBlocks/2, targetBlocks, targetBlocks)
}
}
// Tests that if an attacker fakes a chain height, after the attack is detected,
// the progress height is successfully reduced at the next sync invocation.
-func TestFakedSyncProgress61(t *testing.T) { testFakedSyncProgress(t, 61, FullSync) }
func TestFakedSyncProgress62(t *testing.T) { testFakedSyncProgress(t, 62, FullSync) }
func TestFakedSyncProgress63Full(t *testing.T) { testFakedSyncProgress(t, 63, FullSync) }
func TestFakedSyncProgress63Fast(t *testing.T) { testFakedSyncProgress(t, 63, FastSync) }
@@ -1706,8 +1603,8 @@ func testFakedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
<-progress
}
// Retrieve the sync progress and ensure they are zero (pristine sync)
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != 0 {
- t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, 0)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != 0 {
+ t.Fatalf("Pristine progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, 0)
}
// Create and sync with an attacker that promises a higher chain than available
tester.newPeer("attack", protocol, hashes, headers, blocks, receipts)
@@ -1727,8 +1624,8 @@ func testFakedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current != 0 || latest != uint64(targetBlocks+3) {
- t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", origin, current, latest, 0, 0, targetBlocks+3)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock != 0 || progress.HighestBlock != uint64(targetBlocks+3) {
+ t.Fatalf("Initial progress mismatch: have %v/%v/%v, want %v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, 0, targetBlocks+3)
}
progress <- struct{}{}
pending.Wait()
@@ -1744,15 +1641,15 @@ func testFakedSyncProgress(t *testing.T, protocol int, mode SyncMode) {
}
}()
<-starting
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin != 0 || current > uint64(targetBlocks) || latest != uint64(targetBlocks) {
- t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/0-%v/%v", origin, current, latest, 0, targetBlocks, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock != 0 || progress.CurrentBlock > uint64(targetBlocks) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Completing progress mismatch: have %v/%v/%v, want %v/0-%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, 0, targetBlocks, targetBlocks)
}
progress <- struct{}{}
pending.Wait()
// Check final progress after successful sync
- if origin, current, latest, _, _ := tester.downloader.Progress(); origin > uint64(targetBlocks) || current != uint64(targetBlocks) || latest != uint64(targetBlocks) {
- t.Fatalf("Final progress mismatch: have %v/%v/%v, want 0-%v/%v/%v", origin, current, latest, targetBlocks, targetBlocks, targetBlocks)
+ if progress := tester.downloader.Progress(); progress.StartingBlock > uint64(targetBlocks) || progress.CurrentBlock != uint64(targetBlocks) || progress.HighestBlock != uint64(targetBlocks) {
+ t.Fatalf("Final progress mismatch: have %v/%v/%v, want 0-%v/%v/%v", progress.StartingBlock, progress.CurrentBlock, progress.HighestBlock, targetBlocks, targetBlocks, targetBlocks)
}
}
diff --git a/eth/downloader/metrics.go b/eth/downloader/metrics.go
index d6fcfa25c..0d76c7dfd 100644
--- a/eth/downloader/metrics.go
+++ b/eth/downloader/metrics.go
@@ -23,16 +23,6 @@ import (
)
var (
- hashInMeter = metrics.NewMeter("eth/downloader/hashes/in")
- hashReqTimer = metrics.NewTimer("eth/downloader/hashes/req")
- hashDropMeter = metrics.NewMeter("eth/downloader/hashes/drop")
- hashTimeoutMeter = metrics.NewMeter("eth/downloader/hashes/timeout")
-
- blockInMeter = metrics.NewMeter("eth/downloader/blocks/in")
- blockReqTimer = metrics.NewTimer("eth/downloader/blocks/req")
- blockDropMeter = metrics.NewMeter("eth/downloader/blocks/drop")
- blockTimeoutMeter = metrics.NewMeter("eth/downloader/blocks/timeout")
-
headerInMeter = metrics.NewMeter("eth/downloader/headers/in")
headerReqTimer = metrics.NewTimer("eth/downloader/headers/req")
headerDropMeter = metrics.NewMeter("eth/downloader/headers/drop")
diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go
index 94d44fca4..b0bfc66c8 100644
--- a/eth/downloader/peer.go
+++ b/eth/downloader/peer.go
@@ -23,6 +23,7 @@ import (
"errors"
"fmt"
"math"
+ "math/big"
"sort"
"strings"
"sync"
@@ -37,10 +38,8 @@ const (
measurementImpact = 0.1 // The impact a single measurement has on a peer's final throughput value.
)
-// Hash and block fetchers belonging to eth/61 and below
-type relativeHashFetcherFn func(common.Hash) error
-type absoluteHashFetcherFn func(uint64, int) error
-type blockFetcherFn func([]common.Hash) error
+// Head hash and total difficulty retriever for
+type currentHeadRetrievalFn func() (common.Hash, *big.Int)
// Block header and body fetchers belonging to eth/62 and above
type relativeHeaderFetcherFn func(common.Hash, int, int, bool) error
@@ -57,8 +56,7 @@ var (
// peer represents an active peer from which hashes and blocks are retrieved.
type peer struct {
- id string // Unique identifier of the peer
- head common.Hash // Hash of the peers latest known block
+ id string // Unique identifier of the peer
headerIdle int32 // Current header activity state of the peer (idle = 0, active = 1)
blockIdle int32 // Current block activity state of the peer (idle = 0, active = 1)
@@ -79,9 +77,7 @@ type peer struct {
lacking map[common.Hash]struct{} // Set of hashes not to request (didn't have previously)
- getRelHashes relativeHashFetcherFn // [eth/61] Method to retrieve a batch of hashes from an origin hash
- getAbsHashes absoluteHashFetcherFn // [eth/61] Method to retrieve a batch of hashes from an absolute position
- getBlocks blockFetcherFn // [eth/61] Method to retrieve a batch of blocks
+ currentHead currentHeadRetrievalFn // Method to fetch the currently known head of the peer
getRelHeaders relativeHeaderFetcherFn // [eth/62] Method to retrieve a batch of headers from an origin hash
getAbsHeaders absoluteHeaderFetcherFn // [eth/62] Method to retrieve a batch of headers from an absolute position
@@ -96,19 +92,14 @@ type peer struct {
// newPeer create a new downloader peer, with specific hash and block retrieval
// mechanisms.
-func newPeer(id string, version int, head common.Hash,
- getRelHashes relativeHashFetcherFn, getAbsHashes absoluteHashFetcherFn, getBlocks blockFetcherFn, // eth/61 callbacks, remove when upgrading
+func newPeer(id string, version int, currentHead currentHeadRetrievalFn,
getRelHeaders relativeHeaderFetcherFn, getAbsHeaders absoluteHeaderFetcherFn, getBlockBodies blockBodyFetcherFn,
getReceipts receiptFetcherFn, getNodeData stateFetcherFn) *peer {
return &peer{
id: id,
- head: head,
lacking: make(map[common.Hash]struct{}),
- getRelHashes: getRelHashes,
- getAbsHashes: getAbsHashes,
- getBlocks: getBlocks,
-
+ currentHead: currentHead,
getRelHeaders: getRelHeaders,
getAbsHeaders: getAbsHeaders,
getBlockBodies: getBlockBodies,
@@ -138,28 +129,6 @@ func (p *peer) Reset() {
p.lacking = make(map[common.Hash]struct{})
}
-// Fetch61 sends a block retrieval request to the remote peer.
-func (p *peer) Fetch61(request *fetchRequest) error {
- // Sanity check the protocol version
- if p.version != 61 {
- panic(fmt.Sprintf("block fetch [eth/61] requested on eth/%d", p.version))
- }
- // Short circuit if the peer is already fetching
- if !atomic.CompareAndSwapInt32(&p.blockIdle, 0, 1) {
- return errAlreadyFetching
- }
- p.blockStarted = time.Now()
-
- // Convert the hash set to a retrievable slice
- hashes := make([]common.Hash, 0, len(request.Hashes))
- for hash, _ := range request.Hashes {
- hashes = append(hashes, hash)
- }
- go p.getBlocks(hashes)
-
- return nil
-}
-
// FetchHeaders sends a header retrieval request to the remote peer.
func (p *peer) FetchHeaders(from uint64, count int) error {
// Sanity check the protocol version
@@ -481,20 +450,6 @@ func (ps *peerSet) AllPeers() []*peer {
return list
}
-// BlockIdlePeers retrieves a flat list of all the currently idle peers within the
-// active peer set, ordered by their reputation.
-func (ps *peerSet) BlockIdlePeers() ([]*peer, int) {
- idle := func(p *peer) bool {
- return atomic.LoadInt32(&p.blockIdle) == 0
- }
- throughput := func(p *peer) float64 {
- p.lock.RLock()
- defer p.lock.RUnlock()
- return p.blockThroughput
- }
- return ps.idlePeers(61, 61, idle, throughput)
-}
-
// HeaderIdlePeers retrieves a flat list of all the currently header-idle peers
// within the active peer set, ordered by their reputation.
func (ps *peerSet) HeaderIdlePeers() ([]*peer, int) {
diff --git a/eth/downloader/queue.go b/eth/downloader/queue.go
index 01897af6d..fd239f7e4 100644
--- a/eth/downloader/queue.go
+++ b/eth/downloader/queue.go
@@ -45,7 +45,6 @@ var (
var (
errNoFetchesPending = errors.New("no fetches pending")
- errStateSyncPending = errors.New("state trie sync already scheduled")
errStaleDelivery = errors.New("stale delivery")
)
@@ -74,10 +73,6 @@ type queue struct {
mode SyncMode // Synchronisation mode to decide on the block parts to schedule for fetching
fastSyncPivot uint64 // Block number where the fast sync pivots into archive synchronisation mode
- hashPool map[common.Hash]int // [eth/61] Pending hashes, mapping to their insertion index (priority)
- hashQueue *prque.Prque // [eth/61] Priority queue of the block hashes to fetch
- hashCounter int // [eth/61] Counter indexing the added hashes to ensure retrieval order
-
headerHead common.Hash // [eth/62] Hash of the last queued header to verify order
// Headers are "special", they download in batches, supported by a skeleton chain
@@ -85,7 +80,6 @@ type queue struct {
headerTaskQueue *prque.Prque // [eth/62] Priority queue of the skeleton indexes to fetch the filling headers for
headerPeerMiss map[string]map[uint64]struct{} // [eth/62] Set of per-peer header batches known to be unavailable
headerPendPool map[string]*fetchRequest // [eth/62] Currently pending header retrieval operations
- headerDonePool map[uint64]struct{} // [eth/62] Set of the completed header fetches
headerResults []*types.Header // [eth/62] Result cache accumulating the completed headers
headerProced int // [eth/62] Number of headers already processed from the results
headerOffset uint64 // [eth/62] Number of the first header in the result cache
@@ -124,8 +118,6 @@ type queue struct {
func newQueue(stateDb ethdb.Database) *queue {
lock := new(sync.Mutex)
return &queue{
- hashPool: make(map[common.Hash]int),
- hashQueue: prque.New(),
headerPendPool: make(map[string]*fetchRequest),
headerContCh: make(chan bool),
blockTaskPool: make(map[common.Hash]*types.Header),
@@ -158,10 +150,6 @@ func (q *queue) Reset() {
q.mode = FullSync
q.fastSyncPivot = 0
- q.hashPool = make(map[common.Hash]int)
- q.hashQueue.Reset()
- q.hashCounter = 0
-
q.headerHead = common.Hash{}
q.headerPendPool = make(map[string]*fetchRequest)
@@ -208,7 +196,7 @@ func (q *queue) PendingBlocks() int {
q.lock.Lock()
defer q.lock.Unlock()
- return q.hashQueue.Size() + q.blockTaskQueue.Size()
+ return q.blockTaskQueue.Size()
}
// PendingReceipts retrieves the number of block receipts pending for retrieval.
@@ -272,7 +260,7 @@ func (q *queue) Idle() bool {
q.lock.Lock()
defer q.lock.Unlock()
- queued := q.hashQueue.Size() + q.blockTaskQueue.Size() + q.receiptTaskQueue.Size() + q.stateTaskQueue.Size()
+ queued := q.blockTaskQueue.Size() + q.receiptTaskQueue.Size() + q.stateTaskQueue.Size()
pending := len(q.blockPendPool) + len(q.receiptPendPool) + len(q.statePendPool)
cached := len(q.blockDonePool) + len(q.receiptDonePool)
@@ -323,34 +311,6 @@ func (q *queue) ShouldThrottleReceipts() bool {
return pending >= len(q.resultCache)-len(q.receiptDonePool)
}
-// Schedule61 adds a set of hashes for the download queue for scheduling, returning
-// the new hashes encountered.
-func (q *queue) Schedule61(hashes []common.Hash, fifo bool) []common.Hash {
- q.lock.Lock()
- defer q.lock.Unlock()
-
- // Insert all the hashes prioritised in the arrival order
- inserts := make([]common.Hash, 0, len(hashes))
- for _, hash := range hashes {
- // Skip anything we already have
- if old, ok := q.hashPool[hash]; ok {
- glog.V(logger.Warn).Infof("Hash %x already scheduled at index %v", hash, old)
- continue
- }
- // Update the counters and insert the hash
- q.hashCounter = q.hashCounter + 1
- inserts = append(inserts, hash)
-
- q.hashPool[hash] = q.hashCounter
- if fifo {
- q.hashQueue.Push(hash, -float32(q.hashCounter)) // Lowest gets schedules first
- } else {
- q.hashQueue.Push(hash, float32(q.hashCounter)) // Highest gets schedules first
- }
- }
- return inserts
-}
-
// ScheduleSkeleton adds a batch of header retrieval tasks to the queue to fill
// up an already retrieved header skeleton.
func (q *queue) ScheduleSkeleton(from uint64, skeleton []*types.Header) {
@@ -550,15 +510,6 @@ func (q *queue) ReserveHeaders(p *peer, count int) *fetchRequest {
return request
}
-// ReserveBlocks reserves a set of block hashes for the given peer, skipping any
-// previously failed download.
-func (q *queue) ReserveBlocks(p *peer, count int) *fetchRequest {
- q.lock.Lock()
- defer q.lock.Unlock()
-
- return q.reserveHashes(p, count, q.hashQueue, nil, q.blockPendPool, len(q.resultCache)-len(q.blockDonePool))
-}
-
// ReserveNodeData reserves a set of node data hashes for the given peer, skipping
// any previously failed download.
func (q *queue) ReserveNodeData(p *peer, count int) *fetchRequest {
@@ -753,11 +704,6 @@ func (q *queue) CancelHeaders(request *fetchRequest) {
q.cancel(request, q.headerTaskQueue, q.headerPendPool)
}
-// CancelBlocks aborts a fetch request, returning all pending hashes to the queue.
-func (q *queue) CancelBlocks(request *fetchRequest) {
- q.cancel(request, q.hashQueue, q.blockPendPool)
-}
-
// CancelBodies aborts a body fetch request, returning all pending headers to the
// task queue.
func (q *queue) CancelBodies(request *fetchRequest) {
@@ -801,9 +747,6 @@ func (q *queue) Revoke(peerId string) {
defer q.lock.Unlock()
if request, ok := q.blockPendPool[peerId]; ok {
- for hash, index := range request.Hashes {
- q.hashQueue.Push(hash, float32(index))
- }
for _, header := range request.Headers {
q.blockTaskQueue.Push(header, -float32(header.Number.Uint64()))
}
@@ -832,15 +775,6 @@ func (q *queue) ExpireHeaders(timeout time.Duration) map[string]int {
return q.expire(timeout, q.headerPendPool, q.headerTaskQueue, headerTimeoutMeter)
}
-// ExpireBlocks checks for in flight requests that exceeded a timeout allowance,
-// canceling them and returning the responsible peers for penalisation.
-func (q *queue) ExpireBlocks(timeout time.Duration) map[string]int {
- q.lock.Lock()
- defer q.lock.Unlock()
-
- return q.expire(timeout, q.blockPendPool, q.hashQueue, blockTimeoutMeter)
-}
-
// ExpireBodies checks for in flight block body requests that exceeded a timeout
// allowance, canceling them and returning the responsible peers for penalisation.
func (q *queue) ExpireBodies(timeout time.Duration) map[string]int {
@@ -907,74 +841,6 @@ func (q *queue) expire(timeout time.Duration, pendPool map[string]*fetchRequest,
return expiries
}
-// DeliverBlocks injects a block retrieval response into the download queue. The
-// method returns the number of blocks accepted from the delivery and also wakes
-// any threads waiting for data delivery.
-func (q *queue) DeliverBlocks(id string, blocks []*types.Block) (int, error) {
- q.lock.Lock()
- defer q.lock.Unlock()
-
- // Short circuit if the blocks were never requested
- request := q.blockPendPool[id]
- if request == nil {
- return 0, errNoFetchesPending
- }
- blockReqTimer.UpdateSince(request.Time)
- delete(q.blockPendPool, id)
-
- // If no blocks were retrieved, mark them as unavailable for the origin peer
- if len(blocks) == 0 {
- for hash, _ := range request.Hashes {
- request.Peer.MarkLacking(hash)
- }
- }
- // Iterate over the downloaded blocks and add each of them
- accepted, errs := 0, make([]error, 0)
- for _, block := range blocks {
- // Skip any blocks that were not requested
- hash := block.Hash()
- if _, ok := request.Hashes[hash]; !ok {
- errs = append(errs, fmt.Errorf("non-requested block %x", hash))
- continue
- }
- // Reconstruct the next result if contents match up
- index := int(block.Number().Int64() - int64(q.resultOffset))
- if index >= len(q.resultCache) || index < 0 {
- errs = []error{errInvalidChain}
- break
- }
- q.resultCache[index] = &fetchResult{
- Header: block.Header(),
- Transactions: block.Transactions(),
- Uncles: block.Uncles(),
- }
- q.blockDonePool[block.Hash()] = struct{}{}
-
- delete(request.Hashes, hash)
- delete(q.hashPool, hash)
- accepted++
- }
- // Return all failed or missing fetches to the queue
- for hash, index := range request.Hashes {
- q.hashQueue.Push(hash, float32(index))
- }
- // Wake up WaitResults
- if accepted > 0 {
- q.active.Signal()
- }
- // If none of the blocks were good, it's a stale delivery
- switch {
- case len(errs) == 0:
- return accepted, nil
- case len(errs) == 1 && (errs[0] == errInvalidChain || errs[0] == errInvalidBlock):
- return accepted, errs[0]
- case len(errs) == len(blocks):
- return accepted, errStaleDelivery
- default:
- return accepted, fmt.Errorf("multiple failures: %v", errs)
- }
-}
-
// DeliverHeaders injects a header retrieval response into the header results
// cache. This method either accepts all headers it received, or none of them
// if they do not map correctly to the skeleton.
diff --git a/eth/downloader/types.go b/eth/downloader/types.go
index b67fff1f8..e10510486 100644
--- a/eth/downloader/types.go
+++ b/eth/downloader/types.go
@@ -73,26 +73,6 @@ type dataPack interface {
Stats() string
}
-// hashPack is a batch of block hashes returned by a peer (eth/61).
-type hashPack struct {
- peerId string
- hashes []common.Hash
-}
-
-func (p *hashPack) PeerId() string { return p.peerId }
-func (p *hashPack) Items() int { return len(p.hashes) }
-func (p *hashPack) Stats() string { return fmt.Sprintf("%d", len(p.hashes)) }
-
-// blockPack is a batch of blocks returned by a peer (eth/61).
-type blockPack struct {
- peerId string
- blocks []*types.Block
-}
-
-func (p *blockPack) PeerId() string { return p.peerId }
-func (p *blockPack) Items() int { return len(p.blocks) }
-func (p *blockPack) Stats() string { return fmt.Sprintf("%d", len(p.blocks)) }
-
// headerPack is a batch of block headers returned by a peer.
type headerPack struct {
peerId string
diff --git a/eth/fetcher/fetcher.go b/eth/fetcher/fetcher.go
index 9300717c3..e225b4996 100644
--- a/eth/fetcher/fetcher.go
+++ b/eth/fetcher/fetcher.go
@@ -38,7 +38,7 @@ const (
maxUncleDist = 7 // Maximum allowed backward distance from the chain head
maxQueueDist = 32 // Maximum allowed distance from the chain head to queue
hashLimit = 256 // Maximum number of unique blocks a peer may have announced
- blockLimit = 64 // Maximum number of unique blocks a per may have delivered
+ blockLimit = 64 // Maximum number of unique blocks a peer may have delivered
)
var (
@@ -48,9 +48,6 @@ var (
// blockRetrievalFn is a callback type for retrieving a block from the local chain.
type blockRetrievalFn func(common.Hash) *types.Block
-// blockRequesterFn is a callback type for sending a block retrieval request.
-type blockRequesterFn func([]common.Hash) error
-
// headerRequesterFn is a callback type for sending a header retrieval request.
type headerRequesterFn func(common.Hash) error
@@ -82,7 +79,6 @@ type announce struct {
origin string // Identifier of the peer originating the notification
- fetch61 blockRequesterFn // [eth/61] Fetcher function to retrieve an announced block
fetchHeader headerRequesterFn // [eth/62] Fetcher function to retrieve the header of an announced block
fetchBodies bodyRequesterFn // [eth/62] Fetcher function to retrieve the body of an announced block
}
@@ -191,14 +187,12 @@ func (f *Fetcher) Stop() {
// Notify announces the fetcher of the potential availability of a new block in
// the network.
func (f *Fetcher) Notify(peer string, hash common.Hash, number uint64, time time.Time,
- blockFetcher blockRequesterFn, // eth/61 specific whole block fetcher
headerFetcher headerRequesterFn, bodyFetcher bodyRequesterFn) error {
block := &announce{
hash: hash,
number: number,
time: time,
origin: peer,
- fetch61: blockFetcher,
fetchHeader: headerFetcher,
fetchBodies: bodyFetcher,
}
@@ -224,34 +218,6 @@ func (f *Fetcher) Enqueue(peer string, block *types.Block) error {
}
}
-// FilterBlocks extracts all the blocks that were explicitly requested by the fetcher,
-// returning those that should be handled differently.
-func (f *Fetcher) FilterBlocks(blocks types.Blocks) types.Blocks {
- glog.V(logger.Detail).Infof("[eth/61] filtering %d blocks", len(blocks))
-
- // Send the filter channel to the fetcher
- filter := make(chan []*types.Block)
-
- select {
- case f.blockFilter <- filter:
- case <-f.quit:
- return nil
- }
- // Request the filtering of the block list
- select {
- case filter <- blocks:
- case <-f.quit:
- return nil
- }
- // Retrieve the blocks remaining after filtering
- select {
- case blocks := <-filter:
- return blocks
- case <-f.quit:
- return nil
- }
-}
-
// FilterHeaders extracts all the headers that were explicitly requested by the fetcher,
// returning those that should be handled differently.
func (f *Fetcher) FilterHeaders(headers []*types.Header, time time.Time) []*types.Header {
@@ -413,7 +379,7 @@ func (f *Fetcher) loop() {
}
}
}
- // Send out all block (eth/61) or header (eth/62) requests
+ // Send out all block header requests
for peer, hashes := range request {
if glog.V(logger.Detail) && len(hashes) > 0 {
list := "["
@@ -421,29 +387,17 @@ func (f *Fetcher) loop() {
list += fmt.Sprintf("%x…, ", hash[:4])
}
list = list[:len(list)-2] + "]"
-
- if f.fetching[hashes[0]].fetch61 != nil {
- glog.V(logger.Detail).Infof("[eth/61] Peer %s: fetching blocks %s", peer, list)
- } else {
- glog.V(logger.Detail).Infof("[eth/62] Peer %s: fetching headers %s", peer, list)
- }
+ glog.V(logger.Detail).Infof("[eth/62] Peer %s: fetching headers %s", peer, list)
}
// Create a closure of the fetch and schedule in on a new thread
- fetchBlocks, fetchHeader, hashes := f.fetching[hashes[0]].fetch61, f.fetching[hashes[0]].fetchHeader, hashes
+ fetchHeader, hashes := f.fetching[hashes[0]].fetchHeader, hashes
go func() {
if f.fetchingHook != nil {
f.fetchingHook(hashes)
}
- if fetchBlocks != nil {
- // Use old eth/61 protocol to retrieve whole blocks
- blockFetchMeter.Mark(int64(len(hashes)))
- fetchBlocks(hashes)
- } else {
- // Use new eth/62 protocol to retrieve headers first
- for _, hash := range hashes {
- headerFetchMeter.Mark(1)
- fetchHeader(hash) // Suboptimal, but protocol doesn't allow batch header retrievals
- }
+ for _, hash := range hashes {
+ headerFetchMeter.Mark(1)
+ fetchHeader(hash) // Suboptimal, but protocol doesn't allow batch header retrievals
}
}()
}
@@ -486,46 +440,6 @@ func (f *Fetcher) loop() {
// Schedule the next fetch if blocks are still pending
f.rescheduleComplete(completeTimer)
- case filter := <-f.blockFilter:
- // Blocks arrived, extract any explicit fetches, return all else
- var blocks types.Blocks
- select {
- case blocks = <-filter:
- case <-f.quit:
- return
- }
- blockFilterInMeter.Mark(int64(len(blocks)))
-
- explicit, download := []*types.Block{}, []*types.Block{}
- for _, block := range blocks {
- hash := block.Hash()
-
- // Filter explicitly requested blocks from hash announcements
- if f.fetching[hash] != nil && f.queued[hash] == nil {
- // Discard if already imported by other means
- if f.getBlock(hash) == nil {
- explicit = append(explicit, block)
- } else {
- f.forgetHash(hash)
- }
- } else {
- download = append(download, block)
- }
- }
-
- blockFilterOutMeter.Mark(int64(len(download)))
- select {
- case filter <- download:
- case <-f.quit:
- return
- }
- // Schedule the retrieved blocks for ordered import
- for _, block := range explicit {
- if announce := f.fetching[block.Hash()]; announce != nil {
- f.enqueue(announce.origin, block)
- }
- }
-
case filter := <-f.headerFilter:
// Headers arrived from a remote peer. Extract those that were explicitly
// requested by the fetcher, and return everything else so it's delivered
@@ -747,7 +661,7 @@ func (f *Fetcher) insert(peer string, block *types.Block) {
// If the parent's unknown, abort insertion
parent := f.getBlock(block.ParentHash())
if parent == nil {
- glog.V(logger.Debug).Infof("Peer %s: parent []%x] of block #%d [%x…] unknown", block.ParentHash().Bytes()[:4], peer, block.NumberU64(), hash[:4])
+ glog.V(logger.Debug).Infof("Peer %s: parent [%x…] of block #%d [%x…] unknown", peer, block.ParentHash().Bytes()[:4], block.NumberU64(), hash[:4])
return
}
// Quickly validate the header and propagate the block if it passes
diff --git a/eth/fetcher/fetcher_test.go b/eth/fetcher/fetcher_test.go
index 2404c8cfa..ad955a577 100644
--- a/eth/fetcher/fetcher_test.go
+++ b/eth/fetcher/fetcher_test.go
@@ -45,7 +45,7 @@ var (
// contains a transaction and every 5th an uncle to allow testing correct block
// reassembly.
func makeChain(n int, seed byte, parent *types.Block) ([]common.Hash, map[common.Hash]*types.Block) {
- blocks, _ := core.GenerateChain(parent, testdb, n, func(i int, block *core.BlockGen) {
+ blocks, _ := core.GenerateChain(nil, parent, testdb, n, func(i int, block *core.BlockGen) {
block.SetCoinbase(common.Address{seed})
// If the block number is multiple of 3, send a bonus transaction to the miner
@@ -151,28 +151,6 @@ func (f *fetcherTester) dropPeer(peer string) {
f.drops[peer] = true
}
-// makeBlockFetcher retrieves a block fetcher associated with a simulated peer.
-func (f *fetcherTester) makeBlockFetcher(blocks map[common.Hash]*types.Block) blockRequesterFn {
- closure := make(map[common.Hash]*types.Block)
- for hash, block := range blocks {
- closure[hash] = block
- }
- // Create a function that returns blocks from the closure
- return func(hashes []common.Hash) error {
- // Gather the blocks to return
- blocks := make([]*types.Block, 0, len(hashes))
- for _, hash := range hashes {
- if block, ok := closure[hash]; ok {
- blocks = append(blocks, block)
- }
- }
- // Return on a new thread
- go f.fetcher.FilterBlocks(blocks)
-
- return nil
- }
-}
-
// makeHeaderFetcher retrieves a block header fetcher associated with a simulated peer.
func (f *fetcherTester) makeHeaderFetcher(blocks map[common.Hash]*types.Block, drift time.Duration) headerRequesterFn {
closure := make(map[common.Hash]*types.Block)
@@ -293,7 +271,6 @@ func verifyImportDone(t *testing.T, imported chan *types.Block) {
// Tests that a fetcher accepts block announcements and initiates retrievals for
// them, successfully importing into the local chain.
-func TestSequentialAnnouncements61(t *testing.T) { testSequentialAnnouncements(t, 61) }
func TestSequentialAnnouncements62(t *testing.T) { testSequentialAnnouncements(t, 62) }
func TestSequentialAnnouncements63(t *testing.T) { testSequentialAnnouncements(t, 63) }
func TestSequentialAnnouncements64(t *testing.T) { testSequentialAnnouncements(t, 64) }
@@ -304,7 +281,6 @@ func testSequentialAnnouncements(t *testing.T, protocol int) {
hashes, blocks := makeChain(targetBlocks, 0, genesis)
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
@@ -313,11 +289,7 @@ func testSequentialAnnouncements(t *testing.T, protocol int) {
tester.fetcher.importedHook = func(block *types.Block) { imported <- block }
for i := len(hashes) - 2; i >= 0; i-- {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[i], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
verifyImportEvent(t, imported, true)
}
verifyImportDone(t, imported)
@@ -325,7 +297,6 @@ func testSequentialAnnouncements(t *testing.T, protocol int) {
// Tests that if blocks are announced by multiple peers (or even the same buggy
// peer), they will only get downloaded at most once.
-func TestConcurrentAnnouncements61(t *testing.T) { testConcurrentAnnouncements(t, 61) }
func TestConcurrentAnnouncements62(t *testing.T) { testConcurrentAnnouncements(t, 62) }
func TestConcurrentAnnouncements63(t *testing.T) { testConcurrentAnnouncements(t, 63) }
func TestConcurrentAnnouncements64(t *testing.T) { testConcurrentAnnouncements(t, 64) }
@@ -337,15 +308,10 @@ func testConcurrentAnnouncements(t *testing.T, protocol int) {
// Assemble a tester with a built in counter for the requests
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
counter := uint32(0)
- blockWrapper := func(hashes []common.Hash) error {
- atomic.AddUint32(&counter, uint32(len(hashes)))
- return blockFetcher(hashes)
- }
headerWrapper := func(hash common.Hash) error {
atomic.AddUint32(&counter, 1)
return headerFetcher(hash)
@@ -355,15 +321,9 @@ func testConcurrentAnnouncements(t *testing.T, protocol int) {
tester.fetcher.importedHook = func(block *types.Block) { imported <- block }
for i := len(hashes) - 2; i >= 0; i-- {
- if protocol < 62 {
- tester.fetcher.Notify("first", hashes[i], 0, time.Now().Add(-arriveTimeout), blockWrapper, nil, nil)
- tester.fetcher.Notify("second", hashes[i], 0, time.Now().Add(-arriveTimeout+time.Millisecond), blockWrapper, nil, nil)
- tester.fetcher.Notify("second", hashes[i], 0, time.Now().Add(-arriveTimeout-time.Millisecond), blockWrapper, nil, nil)
- } else {
- tester.fetcher.Notify("first", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerWrapper, bodyFetcher)
- tester.fetcher.Notify("second", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout+time.Millisecond), nil, headerWrapper, bodyFetcher)
- tester.fetcher.Notify("second", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout-time.Millisecond), nil, headerWrapper, bodyFetcher)
- }
+ tester.fetcher.Notify("first", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerWrapper, bodyFetcher)
+ tester.fetcher.Notify("second", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout+time.Millisecond), headerWrapper, bodyFetcher)
+ tester.fetcher.Notify("second", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout-time.Millisecond), headerWrapper, bodyFetcher)
verifyImportEvent(t, imported, true)
}
verifyImportDone(t, imported)
@@ -376,7 +336,6 @@ func testConcurrentAnnouncements(t *testing.T, protocol int) {
// Tests that announcements arriving while a previous is being fetched still
// results in a valid import.
-func TestOverlappingAnnouncements61(t *testing.T) { testOverlappingAnnouncements(t, 61) }
func TestOverlappingAnnouncements62(t *testing.T) { testOverlappingAnnouncements(t, 62) }
func TestOverlappingAnnouncements63(t *testing.T) { testOverlappingAnnouncements(t, 63) }
func TestOverlappingAnnouncements64(t *testing.T) { testOverlappingAnnouncements(t, 64) }
@@ -387,7 +346,6 @@ func testOverlappingAnnouncements(t *testing.T, protocol int) {
hashes, blocks := makeChain(targetBlocks, 0, genesis)
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
@@ -400,11 +358,7 @@ func testOverlappingAnnouncements(t *testing.T, protocol int) {
tester.fetcher.importedHook = func(block *types.Block) { imported <- block }
for i := len(hashes) - 2; i >= 0; i-- {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[i], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
select {
case <-imported:
case <-time.After(time.Second):
@@ -416,7 +370,6 @@ func testOverlappingAnnouncements(t *testing.T, protocol int) {
}
// Tests that announces already being retrieved will not be duplicated.
-func TestPendingDeduplication61(t *testing.T) { testPendingDeduplication(t, 61) }
func TestPendingDeduplication62(t *testing.T) { testPendingDeduplication(t, 62) }
func TestPendingDeduplication63(t *testing.T) { testPendingDeduplication(t, 63) }
func TestPendingDeduplication64(t *testing.T) { testPendingDeduplication(t, 64) }
@@ -427,22 +380,11 @@ func testPendingDeduplication(t *testing.T, protocol int) {
// Assemble a tester with a built in counter and delayed fetcher
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
delay := 50 * time.Millisecond
counter := uint32(0)
- blockWrapper := func(hashes []common.Hash) error {
- atomic.AddUint32(&counter, uint32(len(hashes)))
-
- // Simulate a long running fetch
- go func() {
- time.Sleep(delay)
- blockFetcher(hashes)
- }()
- return nil
- }
headerWrapper := func(hash common.Hash) error {
atomic.AddUint32(&counter, 1)
@@ -455,11 +397,7 @@ func testPendingDeduplication(t *testing.T, protocol int) {
}
// Announce the same block many times until it's fetched (wait for any pending ops)
for tester.getBlock(hashes[0]) == nil {
- if protocol < 62 {
- tester.fetcher.Notify("repeater", hashes[0], 0, time.Now().Add(-arriveTimeout), blockWrapper, nil, nil)
- } else {
- tester.fetcher.Notify("repeater", hashes[0], 1, time.Now().Add(-arriveTimeout), nil, headerWrapper, bodyFetcher)
- }
+ tester.fetcher.Notify("repeater", hashes[0], 1, time.Now().Add(-arriveTimeout), headerWrapper, bodyFetcher)
time.Sleep(time.Millisecond)
}
time.Sleep(delay)
@@ -475,7 +413,6 @@ func testPendingDeduplication(t *testing.T, protocol int) {
// Tests that announcements retrieved in a random order are cached and eventually
// imported when all the gaps are filled in.
-func TestRandomArrivalImport61(t *testing.T) { testRandomArrivalImport(t, 61) }
func TestRandomArrivalImport62(t *testing.T) { testRandomArrivalImport(t, 62) }
func TestRandomArrivalImport63(t *testing.T) { testRandomArrivalImport(t, 63) }
func TestRandomArrivalImport64(t *testing.T) { testRandomArrivalImport(t, 64) }
@@ -487,7 +424,6 @@ func testRandomArrivalImport(t *testing.T, protocol int) {
skip := targetBlocks / 2
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
@@ -497,26 +433,17 @@ func testRandomArrivalImport(t *testing.T, protocol int) {
for i := len(hashes) - 1; i >= 0; i-- {
if i != skip {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[i], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
time.Sleep(time.Millisecond)
}
}
// Finally announce the skipped entry and check full import
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[skip], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[skip], uint64(len(hashes)-skip-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[skip], uint64(len(hashes)-skip-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
verifyImportCount(t, imported, len(hashes)-1)
}
// Tests that direct block enqueues (due to block propagation vs. hash announce)
// are correctly schedule, filling and import queue gaps.
-func TestQueueGapFill61(t *testing.T) { testQueueGapFill(t, 61) }
func TestQueueGapFill62(t *testing.T) { testQueueGapFill(t, 62) }
func TestQueueGapFill63(t *testing.T) { testQueueGapFill(t, 63) }
func TestQueueGapFill64(t *testing.T) { testQueueGapFill(t, 64) }
@@ -528,7 +455,6 @@ func testQueueGapFill(t *testing.T, protocol int) {
skip := targetBlocks / 2
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
@@ -538,11 +464,7 @@ func testQueueGapFill(t *testing.T, protocol int) {
for i := len(hashes) - 1; i >= 0; i-- {
if i != skip {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[i], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
time.Sleep(time.Millisecond)
}
}
@@ -553,7 +475,6 @@ func testQueueGapFill(t *testing.T, protocol int) {
// Tests that blocks arriving from various sources (multiple propagations, hash
// announces, etc) do not get scheduled for import multiple times.
-func TestImportDeduplication61(t *testing.T) { testImportDeduplication(t, 61) }
func TestImportDeduplication62(t *testing.T) { testImportDeduplication(t, 62) }
func TestImportDeduplication63(t *testing.T) { testImportDeduplication(t, 63) }
func TestImportDeduplication64(t *testing.T) { testImportDeduplication(t, 64) }
@@ -564,7 +485,6 @@ func testImportDeduplication(t *testing.T, protocol int) {
// Create the tester and wrap the importer with a counter
tester := newTester()
- blockFetcher := tester.makeBlockFetcher(blocks)
headerFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
bodyFetcher := tester.makeBodyFetcher(blocks, 0)
@@ -580,11 +500,7 @@ func testImportDeduplication(t *testing.T, protocol int) {
tester.fetcher.importedHook = func(block *types.Block) { imported <- block }
// Announce the duplicating block, wait for retrieval, and also propagate directly
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[0], 0, time.Now().Add(-arriveTimeout), blockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[0], 1, time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[0], 1, time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
<-fetching
tester.fetcher.Enqueue("valid", blocks[hashes[0]])
@@ -660,14 +576,14 @@ func testDistantAnnouncementDiscarding(t *testing.T, protocol int) {
tester.fetcher.fetchingHook = func(hashes []common.Hash) { fetching <- struct{}{} }
// Ensure that a block with a lower number than the threshold is discarded
- tester.fetcher.Notify("lower", hashes[low], blocks[hashes[low]].NumberU64(), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
+ tester.fetcher.Notify("lower", hashes[low], blocks[hashes[low]].NumberU64(), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
select {
case <-time.After(50 * time.Millisecond):
case <-fetching:
t.Fatalf("fetcher requested stale header")
}
// Ensure that a block with a higher number than the threshold is discarded
- tester.fetcher.Notify("higher", hashes[high], blocks[hashes[high]].NumberU64(), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
+ tester.fetcher.Notify("higher", hashes[high], blocks[hashes[high]].NumberU64(), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
select {
case <-time.After(50 * time.Millisecond):
case <-fetching:
@@ -693,7 +609,7 @@ func testInvalidNumberAnnouncement(t *testing.T, protocol int) {
tester.fetcher.importedHook = func(block *types.Block) { imported <- block }
// Announce a block with a bad number, check for immediate drop
- tester.fetcher.Notify("bad", hashes[0], 2, time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
+ tester.fetcher.Notify("bad", hashes[0], 2, time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
verifyImportEvent(t, imported, false)
tester.lock.RLock()
@@ -704,7 +620,7 @@ func testInvalidNumberAnnouncement(t *testing.T, protocol int) {
t.Fatalf("peer with invalid numbered announcement not dropped")
}
// Make sure a good announcement passes without a drop
- tester.fetcher.Notify("good", hashes[0], 1, time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
+ tester.fetcher.Notify("good", hashes[0], 1, time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
verifyImportEvent(t, imported, true)
tester.lock.RLock()
@@ -743,7 +659,7 @@ func testEmptyBlockShortCircuit(t *testing.T, protocol int) {
// Iteratively announce blocks until all are imported
for i := len(hashes) - 2; i >= 0; i-- {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, headerFetcher, bodyFetcher)
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), headerFetcher, bodyFetcher)
// All announces should fetch the header
verifyFetchingEvent(t, fetching, true)
@@ -760,7 +676,6 @@ func testEmptyBlockShortCircuit(t *testing.T, protocol int) {
// Tests that a peer is unable to use unbounded memory with sending infinite
// block announcements to a node, but that even in the face of such an attack,
// the fetcher remains operational.
-func TestHashMemoryExhaustionAttack61(t *testing.T) { testHashMemoryExhaustionAttack(t, 61) }
func TestHashMemoryExhaustionAttack62(t *testing.T) { testHashMemoryExhaustionAttack(t, 62) }
func TestHashMemoryExhaustionAttack63(t *testing.T) { testHashMemoryExhaustionAttack(t, 63) }
func TestHashMemoryExhaustionAttack64(t *testing.T) { testHashMemoryExhaustionAttack(t, 64) }
@@ -781,29 +696,19 @@ func testHashMemoryExhaustionAttack(t *testing.T, protocol int) {
// Create a valid chain and an infinite junk chain
targetBlocks := hashLimit + 2*maxQueueDist
hashes, blocks := makeChain(targetBlocks, 0, genesis)
- validBlockFetcher := tester.makeBlockFetcher(blocks)
validHeaderFetcher := tester.makeHeaderFetcher(blocks, -gatherSlack)
validBodyFetcher := tester.makeBodyFetcher(blocks, 0)
attack, _ := makeChain(targetBlocks, 0, unknownBlock)
- attackerBlockFetcher := tester.makeBlockFetcher(nil)
attackerHeaderFetcher := tester.makeHeaderFetcher(nil, -gatherSlack)
attackerBodyFetcher := tester.makeBodyFetcher(nil, 0)
// Feed the tester a huge hashset from the attacker, and a limited from the valid peer
for i := 0; i < len(attack); i++ {
if i < maxQueueDist {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[len(hashes)-2-i], 0, time.Now(), validBlockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[len(hashes)-2-i], uint64(i+1), time.Now(), nil, validHeaderFetcher, validBodyFetcher)
- }
- }
- if protocol < 62 {
- tester.fetcher.Notify("attacker", attack[i], 0, time.Now(), attackerBlockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("attacker", attack[i], 1 /* don't distance drop */, time.Now(), nil, attackerHeaderFetcher, attackerBodyFetcher)
+ tester.fetcher.Notify("valid", hashes[len(hashes)-2-i], uint64(i+1), time.Now(), validHeaderFetcher, validBodyFetcher)
}
+ tester.fetcher.Notify("attacker", attack[i], 1 /* don't distance drop */, time.Now(), attackerHeaderFetcher, attackerBodyFetcher)
}
if count := atomic.LoadInt32(&announces); count != hashLimit+maxQueueDist {
t.Fatalf("queued announce count mismatch: have %d, want %d", count, hashLimit+maxQueueDist)
@@ -813,11 +718,7 @@ func testHashMemoryExhaustionAttack(t *testing.T, protocol int) {
// Feed the remaining valid hashes to ensure DOS protection state remains clean
for i := len(hashes) - maxQueueDist - 2; i >= 0; i-- {
- if protocol < 62 {
- tester.fetcher.Notify("valid", hashes[i], 0, time.Now().Add(-arriveTimeout), validBlockFetcher, nil, nil)
- } else {
- tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), nil, validHeaderFetcher, validBodyFetcher)
- }
+ tester.fetcher.Notify("valid", hashes[i], uint64(len(hashes)-i-1), time.Now().Add(-arriveTimeout), validHeaderFetcher, validBodyFetcher)
verifyImportEvent(t, imported, true)
}
verifyImportDone(t, imported)
diff --git a/eth/fetcher/metrics.go b/eth/fetcher/metrics.go
index b82d3ca01..1ed8075bf 100644
--- a/eth/fetcher/metrics.go
+++ b/eth/fetcher/metrics.go
@@ -33,12 +33,9 @@ var (
propBroadcastDropMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/drop")
propBroadcastDOSMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/dos")
- blockFetchMeter = metrics.NewMeter("eth/fetcher/fetch/blocks")
headerFetchMeter = metrics.NewMeter("eth/fetcher/fetch/headers")
bodyFetchMeter = metrics.NewMeter("eth/fetcher/fetch/bodies")
- blockFilterInMeter = metrics.NewMeter("eth/fetcher/filter/blocks/in")
- blockFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/blocks/out")
headerFilterInMeter = metrics.NewMeter("eth/fetcher/filter/headers/in")
headerFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/headers/out")
bodyFilterInMeter = metrics.NewMeter("eth/fetcher/filter/bodies/in")
diff --git a/eth/filters/api.go b/eth/filters/api.go
index 393019f8b..3bc220348 100644
--- a/eth/filters/api.go
+++ b/eth/filters/api.go
@@ -17,283 +17,414 @@
package filters
import (
- "crypto/rand"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
+ "math/big"
"sync"
"time"
+ "golang.org/x/net/context"
+
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/rpc"
-
- "golang.org/x/net/context"
)
var (
- filterTickerTime = 5 * time.Minute
+ deadline = 5 * time.Minute // consider a filter inactive if it has not been polled for within deadline
)
-// byte will be inferred
-const (
- unknownFilterTy = iota
- blockFilterTy
- transactionFilterTy
- logFilterTy
-)
+// filter is a helper struct that holds meta information over the filter type
+// and associated subscription in the event system.
+type filter struct {
+ typ Type
+ deadline *time.Timer // filter is inactiv when deadline triggers
+ hashes []common.Hash
+ crit FilterCriteria
+ logs []Log
+ s *Subscription // associated subscription in event system
+}
// PublicFilterAPI offers support to create and manage filters. This will allow external clients to retrieve various
// information related to the Ethereum protocol such als blocks, transactions and logs.
type PublicFilterAPI struct {
- mux *event.TypeMux
-
- quit chan struct{}
- chainDb ethdb.Database
-
- filterManager *FilterSystem
-
- filterMapMu sync.RWMutex
- filterMapping map[string]int // maps between filter internal filter identifiers and external filter identifiers
-
- logMu sync.RWMutex
- logQueue map[int]*logQueue
-
- blockMu sync.RWMutex
- blockQueue map[int]*hashQueue
-
- transactionMu sync.RWMutex
- transactionQueue map[int]*hashQueue
-
- transactMu sync.Mutex
+ mux *event.TypeMux
+ quit chan struct{}
+ chainDb ethdb.Database
+ events *EventSystem
+ filtersMu sync.Mutex
+ filters map[rpc.ID]*filter
}
// NewPublicFilterAPI returns a new PublicFilterAPI instance.
func NewPublicFilterAPI(chainDb ethdb.Database, mux *event.TypeMux) *PublicFilterAPI {
- svc := &PublicFilterAPI{
- mux: mux,
- chainDb: chainDb,
- filterManager: NewFilterSystem(mux),
- filterMapping: make(map[string]int),
- logQueue: make(map[int]*logQueue),
- blockQueue: make(map[int]*hashQueue),
- transactionQueue: make(map[int]*hashQueue),
+ api := &PublicFilterAPI{
+ mux: mux,
+ chainDb: chainDb,
+ events: NewEventSystem(mux),
+ filters: make(map[rpc.ID]*filter),
}
- go svc.start()
- return svc
-}
-// Stop quits the work loop.
-func (s *PublicFilterAPI) Stop() {
- close(s.quit)
+ go api.timeoutLoop()
+
+ return api
}
-// start the work loop, wait and process events.
-func (s *PublicFilterAPI) start() {
- timer := time.NewTicker(2 * time.Second)
- defer timer.Stop()
-done:
+// timeoutLoop runs every 5 minutes and deletes filters that have not been recently used.
+// Tt is started when the api is created.
+func (api *PublicFilterAPI) timeoutLoop() {
+ ticker := time.NewTicker(5 * time.Minute)
for {
- select {
- case <-timer.C:
- s.logMu.Lock()
- for id, filter := range s.logQueue {
- if time.Since(filter.timeout) > filterTickerTime {
- s.filterManager.Remove(id)
- delete(s.logQueue, id)
- }
+ <-ticker.C
+ api.filtersMu.Lock()
+ for id, f := range api.filters {
+ select {
+ case <-f.deadline.C:
+ f.s.Unsubscribe()
+ delete(api.filters, id)
+ default:
+ continue
}
- s.logMu.Unlock()
+ }
+ api.filtersMu.Unlock()
+ }
+}
- s.blockMu.Lock()
- for id, filter := range s.blockQueue {
- if time.Since(filter.timeout) > filterTickerTime {
- s.filterManager.Remove(id)
- delete(s.blockQueue, id)
- }
- }
- s.blockMu.Unlock()
+// NewPendingTransactionFilter creates a filter that fetches pending transaction hashes
+// as transactions enter the pending state.
+//
+// It is part of the filter package because this filter can be used throug the
+// `eth_getFilterChanges` polling method that is also used for log filters.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newpendingtransactionfilter
+func (api *PublicFilterAPI) NewPendingTransactionFilter() rpc.ID {
+ var (
+ pendingTxs = make(chan common.Hash)
+ pendingTxSub = api.events.SubscribePendingTxEvents(pendingTxs)
+ )
- s.transactionMu.Lock()
- for id, filter := range s.transactionQueue {
- if time.Since(filter.timeout) > filterTickerTime {
- s.filterManager.Remove(id)
- delete(s.transactionQueue, id)
+ api.filtersMu.Lock()
+ api.filters[pendingTxSub.ID] = &filter{typ: PendingTransactionsSubscription, deadline: time.NewTimer(deadline), hashes: make([]common.Hash, 0), s: pendingTxSub}
+ api.filtersMu.Unlock()
+
+ go func() {
+ for {
+ select {
+ case ph := <-pendingTxs:
+ api.filtersMu.Lock()
+ if f, found := api.filters[pendingTxSub.ID]; found {
+ f.hashes = append(f.hashes, ph)
}
+ api.filtersMu.Unlock()
+ case <-pendingTxSub.Err():
+ api.filtersMu.Lock()
+ delete(api.filters, pendingTxSub.ID)
+ api.filtersMu.Unlock()
+ return
}
- s.transactionMu.Unlock()
- case <-s.quit:
- break done
}
- }
+ }()
+ return pendingTxSub.ID
}
-// NewBlockFilter create a new filter that returns blocks that are included into the canonical chain.
-func (s *PublicFilterAPI) NewBlockFilter() (string, error) {
- externalId, err := newFilterId()
- if err != nil {
- return "", err
- }
-
- s.blockMu.Lock()
- filter := New(s.chainDb)
- id, err := s.filterManager.Add(filter, ChainFilter)
- if err != nil {
- return "", err
+// NewPendingTransactions creates a subscription that is triggered each time a transaction
+// enters the transaction pool and was signed from one of the transactions this nodes manages.
+func (api *PublicFilterAPI) NewPendingTransactions(ctx context.Context) (*rpc.Subscription, error) {
+ notifier, supported := rpc.NotifierFromContext(ctx)
+ if !supported {
+ return &rpc.Subscription{}, rpc.ErrNotificationsUnsupported
}
- s.blockQueue[id] = &hashQueue{timeout: time.Now()}
+ rpcSub := notifier.CreateSubscription()
- filter.BlockCallback = func(block *types.Block, logs vm.Logs) {
- s.blockMu.Lock()
- defer s.blockMu.Unlock()
+ go func() {
+ txHashes := make(chan common.Hash)
+ pendingTxSub := api.events.SubscribePendingTxEvents(txHashes)
- if queue := s.blockQueue[id]; queue != nil {
- queue.add(block.Hash())
+ for {
+ select {
+ case h := <-txHashes:
+ notifier.Notify(rpcSub.ID, h)
+ case <-rpcSub.Err():
+ pendingTxSub.Unsubscribe()
+ return
+ case <-notifier.Closed():
+ pendingTxSub.Unsubscribe()
+ return
+ }
}
- }
+ }()
+
+ return rpcSub, nil
+}
- defer s.blockMu.Unlock()
+// NewBlockFilter creates a filter that fetches blocks that are imported into the chain.
+// It is part of the filter package since polling goes with eth_getFilterChanges.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter
+func (api *PublicFilterAPI) NewBlockFilter() rpc.ID {
+ var (
+ headers = make(chan *types.Header)
+ headerSub = api.events.SubscribeNewHeads(headers)
+ )
- s.filterMapMu.Lock()
- s.filterMapping[externalId] = id
- s.filterMapMu.Unlock()
+ api.filtersMu.Lock()
+ api.filters[headerSub.ID] = &filter{typ: BlocksSubscription, deadline: time.NewTimer(deadline), hashes: make([]common.Hash, 0), s: headerSub}
+ api.filtersMu.Unlock()
+
+ go func() {
+ for {
+ select {
+ case h := <-headers:
+ api.filtersMu.Lock()
+ if f, found := api.filters[headerSub.ID]; found {
+ f.hashes = append(f.hashes, h.Hash())
+ }
+ api.filtersMu.Unlock()
+ case <-headerSub.Err():
+ api.filtersMu.Lock()
+ delete(api.filters, headerSub.ID)
+ api.filtersMu.Unlock()
+ return
+ }
+ }
+ }()
- return externalId, nil
+ return headerSub.ID
}
-// NewPendingTransactionFilter creates a filter that returns new pending transactions.
-func (s *PublicFilterAPI) NewPendingTransactionFilter() (string, error) {
- externalId, err := newFilterId()
- if err != nil {
- return "", err
+// NewHeads send a notification each time a new (header) block is appended to the chain.
+func (api *PublicFilterAPI) NewHeads(ctx context.Context) (*rpc.Subscription, error) {
+ notifier, supported := rpc.NotifierFromContext(ctx)
+ if !supported {
+ return &rpc.Subscription{}, rpc.ErrNotificationsUnsupported
}
- s.transactionMu.Lock()
- defer s.transactionMu.Unlock()
+ rpcSub := notifier.CreateSubscription()
+
+ go func() {
+ headers := make(chan *types.Header)
+ headersSub := api.events.SubscribeNewHeads(headers)
+
+ for {
+ select {
+ case h := <-headers:
+ notifier.Notify(rpcSub.ID, h)
+ case <-rpcSub.Err():
+ headersSub.Unsubscribe()
+ return
+ case <-notifier.Closed():
+ headersSub.Unsubscribe()
+ return
+ }
+ }
+ }()
+
+ return rpcSub, nil
+}
- filter := New(s.chainDb)
- id, err := s.filterManager.Add(filter, PendingTxFilter)
- if err != nil {
- return "", err
+// Logs creates a subscription that fires for all new log that match the given filter criteria.
+func (api *PublicFilterAPI) Logs(ctx context.Context, crit FilterCriteria) (*rpc.Subscription, error) {
+ notifier, supported := rpc.NotifierFromContext(ctx)
+ if !supported {
+ return &rpc.Subscription{}, rpc.ErrNotificationsUnsupported
}
- s.transactionQueue[id] = &hashQueue{timeout: time.Now()}
+ rpcSub := notifier.CreateSubscription()
- filter.TransactionCallback = func(tx *types.Transaction) {
- s.transactionMu.Lock()
- defer s.transactionMu.Unlock()
+ go func() {
+ matchedLogs := make(chan []Log)
+ logsSub := api.events.SubscribeLogs(crit, matchedLogs)
- if queue := s.transactionQueue[id]; queue != nil {
- queue.add(tx.Hash())
+ for {
+ select {
+ case logs := <-matchedLogs:
+ for _, log := range logs {
+ notifier.Notify(rpcSub.ID, &log)
+ }
+ case <-rpcSub.Err(): // client send an unsubscribe request
+ logsSub.Unsubscribe()
+ return
+ case <-notifier.Closed(): // connection dropped
+ logsSub.Unsubscribe()
+ return
+ }
}
- }
+ }()
- s.filterMapMu.Lock()
- s.filterMapping[externalId] = id
- s.filterMapMu.Unlock()
+ return rpcSub, nil
+}
- return externalId, nil
+// FilterCriteria represents a request to create a new filter.
+type FilterCriteria struct {
+ FromBlock *big.Int
+ ToBlock *big.Int
+ Addresses []common.Address
+ Topics [][]common.Hash
}
-// newLogFilter creates a new log filter.
-func (s *PublicFilterAPI) newLogFilter(earliest, latest int64, addresses []common.Address, topics [][]common.Hash, callback func(log *vm.Log, removed bool)) (int, error) {
- s.logMu.Lock()
- defer s.logMu.Unlock()
+// NewFilter creates a new filter and returns the filter id. It can be
+// used to retrieve logs when the state changes. This method cannot be
+// used to fetch logs that are already stored in the state.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter
+func (api *PublicFilterAPI) NewFilter(crit FilterCriteria) rpc.ID {
+ var (
+ logs = make(chan []Log)
+ logsSub = api.events.SubscribeLogs(crit, logs)
+ )
- filter := New(s.chainDb)
- id, err := s.filterManager.Add(filter, LogFilter)
- if err != nil {
- return 0, err
+ if crit.FromBlock == nil {
+ crit.FromBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
+ }
+ if crit.ToBlock == nil {
+ crit.ToBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
}
- s.logQueue[id] = &logQueue{timeout: time.Now()}
+ api.filtersMu.Lock()
+ api.filters[logsSub.ID] = &filter{typ: LogsSubscription, crit: crit, deadline: time.NewTimer(deadline), logs: make([]Log, 0), s: logsSub}
+ api.filtersMu.Unlock()
- filter.SetBeginBlock(earliest)
- filter.SetEndBlock(latest)
- filter.SetAddresses(addresses)
- filter.SetTopics(topics)
- filter.LogCallback = func(log *vm.Log, removed bool) {
- if callback != nil {
- callback(log, removed)
- } else {
- s.logMu.Lock()
- defer s.logMu.Unlock()
- if queue := s.logQueue[id]; queue != nil {
- queue.add(vmlog{log, removed})
+ go func() {
+ for {
+ select {
+ case l := <-logs:
+ api.filtersMu.Lock()
+ if f, found := api.filters[logsSub.ID]; found {
+ f.logs = append(f.logs, l...)
+ }
+ api.filtersMu.Unlock()
+ case <-logsSub.Err():
+ api.filtersMu.Lock()
+ delete(api.filters, logsSub.ID)
+ api.filtersMu.Unlock()
+ return
}
}
- }
+ }()
- return id, nil
+ return logsSub.ID
}
-// Logs creates a subscription that fires for all new log that match the given filter criteria.
-func (s *PublicFilterAPI) Logs(ctx context.Context, args NewFilterArgs) (rpc.Subscription, error) {
- notifier, supported := rpc.NotifierFromContext(ctx)
- if !supported {
- return nil, rpc.ErrNotificationsUnsupported
+// GetLogs returns logs matching the given argument that are stored within the state.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs
+func (api *PublicFilterAPI) GetLogs(crit FilterCriteria) []Log {
+ if crit.FromBlock == nil {
+ crit.FromBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
+ }
+ if crit.ToBlock == nil {
+ crit.ToBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
}
- var (
- externalId string
- subscription rpc.Subscription
- err error
- )
+ filter := New(api.chainDb)
+ filter.SetBeginBlock(crit.FromBlock.Int64())
+ filter.SetEndBlock(crit.ToBlock.Int64())
+ filter.SetAddresses(crit.Addresses)
+ filter.SetTopics(crit.Topics)
- if externalId, err = newFilterId(); err != nil {
- return nil, err
- }
+ return returnLogs(filter.Find())
+}
- // uninstall filter when subscription is unsubscribed/cancelled
- if subscription, err = notifier.NewSubscription(func(string) {
- s.UninstallFilter(externalId)
- }); err != nil {
- return nil, err
+// UninstallFilter removes the filter with the given filter id.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallfilter
+func (api *PublicFilterAPI) UninstallFilter(id rpc.ID) bool {
+ api.filtersMu.Lock()
+ f, found := api.filters[id]
+ if found {
+ delete(api.filters, id)
}
-
- notifySubscriber := func(log *vm.Log, removed bool) {
- rpcLog := toRPCLogs(vm.Logs{log}, removed)
- if err := subscription.Notify(rpcLog); err != nil {
- subscription.Cancel()
- }
+ api.filtersMu.Unlock()
+ if found {
+ f.s.Unsubscribe()
}
- // from and to block number are not used since subscriptions don't allow you to travel to "time"
- var id int
- if len(args.Addresses) > 0 {
- id, err = s.newLogFilter(-1, -1, args.Addresses, args.Topics, notifySubscriber)
- } else {
- id, err = s.newLogFilter(-1, -1, nil, args.Topics, notifySubscriber)
+ return found
+}
+
+// GetFilterLogs returns the logs for the filter with the given id.
+// If the filter could not be found an empty array of logs is returned.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterlogs
+func (api *PublicFilterAPI) GetFilterLogs(id rpc.ID) []Log {
+ api.filtersMu.Lock()
+ f, found := api.filters[id]
+ api.filtersMu.Unlock()
+
+ if !found || f.typ != LogsSubscription {
+ return []Log{}
}
- if err != nil {
- subscription.Cancel()
- return nil, err
+ filter := New(api.chainDb)
+ filter.SetBeginBlock(f.crit.FromBlock.Int64())
+ filter.SetEndBlock(f.crit.ToBlock.Int64())
+ filter.SetAddresses(f.crit.Addresses)
+ filter.SetTopics(f.crit.Topics)
+
+ return returnLogs(filter.Find())
+}
+
+// GetFilterChanges returns the logs for the filter with the given id since
+// last time is was called. This can be used for polling.
+//
+// For pending transaction and block filters the result is []common.Hash.
+// (pending)Log filters return []Log. If the filter could not be found
+// []interface{}{} is returned.
+//
+// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges
+func (api *PublicFilterAPI) GetFilterChanges(id rpc.ID) interface{} {
+ api.filtersMu.Lock()
+ defer api.filtersMu.Unlock()
+
+ if f, found := api.filters[id]; found {
+ if !f.deadline.Stop() {
+ // timer expired but filter is not yet removed in timeout loop
+ // receive timer value and reset timer
+ <-f.deadline.C
+ }
+ f.deadline.Reset(deadline)
+
+ switch f.typ {
+ case PendingTransactionsSubscription, BlocksSubscription:
+ hashes := f.hashes
+ f.hashes = nil
+ return returnHashes(hashes)
+ case PendingLogsSubscription, LogsSubscription:
+ logs := f.logs
+ f.logs = nil
+ return returnLogs(logs)
+ }
}
- s.filterMapMu.Lock()
- s.filterMapping[externalId] = id
- s.filterMapMu.Unlock()
+ return []interface{}{}
+}
- return subscription, err
+// returnHashes is a helper that will return an empty hash array case the given hash array is nil,
+// otherwise the given hashes array is returned.
+func returnHashes(hashes []common.Hash) []common.Hash {
+ if hashes == nil {
+ return []common.Hash{}
+ }
+ return hashes
}
-// NewFilterArgs represents a request to create a new filter.
-type NewFilterArgs struct {
- FromBlock rpc.BlockNumber
- ToBlock rpc.BlockNumber
- Addresses []common.Address
- Topics [][]common.Hash
+// returnLogs is a helper that will return an empty log array in case the given logs array is nil,
+// otherwise the given logs array is returned.
+func returnLogs(logs []Log) []Log {
+ if logs == nil {
+ return []Log{}
+ }
+ return logs
}
// UnmarshalJSON sets *args fields with given data.
-func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
+func (args *FilterCriteria) UnmarshalJSON(data []byte) error {
type input struct {
From *rpc.BlockNumber `json:"fromBlock"`
ToBlock *rpc.BlockNumber `json:"toBlock"`
@@ -307,15 +438,15 @@ func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
}
if raw.From == nil || raw.From.Int64() < 0 {
- args.FromBlock = rpc.LatestBlockNumber
+ args.FromBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
} else {
- args.FromBlock = *raw.From
+ args.FromBlock = big.NewInt(raw.From.Int64())
}
if raw.ToBlock == nil || raw.ToBlock.Int64() < 0 {
- args.ToBlock = rpc.LatestBlockNumber
+ args.ToBlock = big.NewInt(rpc.LatestBlockNumber.Int64())
} else {
- args.ToBlock = *raw.ToBlock
+ args.ToBlock = big.NewInt(raw.ToBlock.Int64())
}
args.Addresses = []common.Address{}
@@ -405,245 +536,3 @@ func (args *NewFilterArgs) UnmarshalJSON(data []byte) error {
return nil
}
-
-// NewFilter creates a new filter and returns the filter id. It can be uses to retrieve logs.
-func (s *PublicFilterAPI) NewFilter(args NewFilterArgs) (string, error) {
- externalId, err := newFilterId()
- if err != nil {
- return "", err
- }
-
- var id int
- if len(args.Addresses) > 0 {
- id, err = s.newLogFilter(args.FromBlock.Int64(), args.ToBlock.Int64(), args.Addresses, args.Topics, nil)
- } else {
- id, err = s.newLogFilter(args.FromBlock.Int64(), args.ToBlock.Int64(), nil, args.Topics, nil)
- }
- if err != nil {
- return "", err
- }
-
- s.filterMapMu.Lock()
- s.filterMapping[externalId] = id
- s.filterMapMu.Unlock()
-
- return externalId, nil
-}
-
-// GetLogs returns the logs matching the given argument.
-func (s *PublicFilterAPI) GetLogs(args NewFilterArgs) []vmlog {
- filter := New(s.chainDb)
- filter.SetBeginBlock(args.FromBlock.Int64())
- filter.SetEndBlock(args.ToBlock.Int64())
- filter.SetAddresses(args.Addresses)
- filter.SetTopics(args.Topics)
-
- return toRPCLogs(filter.Find(), false)
-}
-
-// UninstallFilter removes the filter with the given filter id.
-func (s *PublicFilterAPI) UninstallFilter(filterId string) bool {
- s.filterMapMu.Lock()
- defer s.filterMapMu.Unlock()
-
- id, ok := s.filterMapping[filterId]
- if !ok {
- return false
- }
-
- defer s.filterManager.Remove(id)
- delete(s.filterMapping, filterId)
-
- if _, ok := s.logQueue[id]; ok {
- s.logMu.Lock()
- defer s.logMu.Unlock()
- delete(s.logQueue, id)
- return true
- }
- if _, ok := s.blockQueue[id]; ok {
- s.blockMu.Lock()
- defer s.blockMu.Unlock()
- delete(s.blockQueue, id)
- return true
- }
- if _, ok := s.transactionQueue[id]; ok {
- s.transactionMu.Lock()
- defer s.transactionMu.Unlock()
- delete(s.transactionQueue, id)
- return true
- }
-
- return false
-}
-
-// getFilterType is a helper utility that determine the type of filter for the given filter id.
-func (s *PublicFilterAPI) getFilterType(id int) byte {
- if _, ok := s.blockQueue[id]; ok {
- return blockFilterTy
- } else if _, ok := s.transactionQueue[id]; ok {
- return transactionFilterTy
- } else if _, ok := s.logQueue[id]; ok {
- return logFilterTy
- }
-
- return unknownFilterTy
-}
-
-// blockFilterChanged returns a collection of block hashes for the block filter with the given id.
-func (s *PublicFilterAPI) blockFilterChanged(id int) []common.Hash {
- s.blockMu.Lock()
- defer s.blockMu.Unlock()
-
- if s.blockQueue[id] != nil {
- return s.blockQueue[id].get()
- }
- return nil
-}
-
-// transactionFilterChanged returns a collection of transaction hashes for the pending
-// transaction filter with the given id.
-func (s *PublicFilterAPI) transactionFilterChanged(id int) []common.Hash {
- s.blockMu.Lock()
- defer s.blockMu.Unlock()
-
- if s.transactionQueue[id] != nil {
- return s.transactionQueue[id].get()
- }
- return nil
-}
-
-// logFilterChanged returns a collection of logs for the log filter with the given id.
-func (s *PublicFilterAPI) logFilterChanged(id int) []vmlog {
- s.logMu.Lock()
- defer s.logMu.Unlock()
-
- if s.logQueue[id] != nil {
- return s.logQueue[id].get()
- }
- return nil
-}
-
-// GetFilterLogs returns the logs for the filter with the given id.
-func (s *PublicFilterAPI) GetFilterLogs(filterId string) []vmlog {
- id, ok := s.filterMapping[filterId]
- if !ok {
- return toRPCLogs(nil, false)
- }
-
- if filter := s.filterManager.Get(id); filter != nil {
- return toRPCLogs(filter.Find(), false)
- }
-
- return toRPCLogs(nil, false)
-}
-
-// GetFilterChanges returns the logs for the filter with the given id since last time is was called.
-// This can be used for polling.
-func (s *PublicFilterAPI) GetFilterChanges(filterId string) interface{} {
- s.filterMapMu.Lock()
- id, ok := s.filterMapping[filterId]
- s.filterMapMu.Unlock()
-
- if !ok { // filter not found
- return []interface{}{}
- }
-
- switch s.getFilterType(id) {
- case blockFilterTy:
- return returnHashes(s.blockFilterChanged(id))
- case transactionFilterTy:
- return returnHashes(s.transactionFilterChanged(id))
- case logFilterTy:
- return s.logFilterChanged(id)
- }
-
- return []interface{}{}
-}
-
-type vmlog struct {
- *vm.Log
- Removed bool `json:"removed"`
-}
-
-type logQueue struct {
- mu sync.Mutex
-
- logs []vmlog
- timeout time.Time
- id int
-}
-
-func (l *logQueue) add(logs ...vmlog) {
- l.mu.Lock()
- defer l.mu.Unlock()
-
- l.logs = append(l.logs, logs...)
-}
-
-func (l *logQueue) get() []vmlog {
- l.mu.Lock()
- defer l.mu.Unlock()
-
- l.timeout = time.Now()
- tmp := l.logs
- l.logs = nil
- return tmp
-}
-
-type hashQueue struct {
- mu sync.Mutex
-
- hashes []common.Hash
- timeout time.Time
- id int
-}
-
-func (l *hashQueue) add(hashes ...common.Hash) {
- l.mu.Lock()
- defer l.mu.Unlock()
-
- l.hashes = append(l.hashes, hashes...)
-}
-
-func (l *hashQueue) get() []common.Hash {
- l.mu.Lock()
- defer l.mu.Unlock()
-
- l.timeout = time.Now()
- tmp := l.hashes
- l.hashes = nil
- return tmp
-}
-
-// newFilterId generates a new random filter identifier that can be exposed to the outer world. By publishing random
-// identifiers it is not feasible for DApp's to guess filter id's for other DApp's and uninstall or poll for them
-// causing the affected DApp to miss data.
-func newFilterId() (string, error) {
- var subid [16]byte
- n, _ := rand.Read(subid[:])
- if n != 16 {
- return "", errors.New("Unable to generate filter id")
- }
- return "0x" + hex.EncodeToString(subid[:]), nil
-}
-
-// toRPCLogs is a helper that will convert a vm.Logs array to an structure which
-// can hold additional information about the logs such as whether it was deleted.
-// Additionally when nil is given it will by default instead create an empty slice
-// instead. This is required by the RPC specification.
-func toRPCLogs(logs vm.Logs, removed bool) []vmlog {
- convertedLogs := make([]vmlog, len(logs))
- for i, log := range logs {
- convertedLogs[i] = vmlog{Log: log, Removed: removed}
- }
- return convertedLogs
-}
-
-// returnHashes is a helper that will return an empty hash array case the given hash array is nil, otherwise is will
-// return the given hashes. The RPC interfaces defines that always an array is returned.
-func returnHashes(hashes []common.Hash) []common.Hash {
- if hashes == nil {
- return []common.Hash{}
- }
- return hashes
-}
diff --git a/eth/filters/api_test.go b/eth/filters/api_test.go
index 9e8edc241..98eb6cbaa 100644
--- a/eth/filters/api_test.go
+++ b/eth/filters/api_test.go
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-package filters_test
+package filters
import (
"encoding/json"
@@ -22,7 +22,6 @@ import (
"testing"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/eth/filters"
"github.com/ethereum/go-ethereum/rpc"
)
@@ -39,14 +38,14 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
)
// default values
- var test0 filters.NewFilterArgs
+ var test0 FilterCriteria
if err := json.Unmarshal([]byte("{}"), &test0); err != nil {
t.Fatal(err)
}
- if test0.FromBlock != rpc.LatestBlockNumber {
+ if test0.FromBlock.Int64() != rpc.LatestBlockNumber.Int64() {
t.Fatalf("expected %d, got %d", rpc.LatestBlockNumber, test0.FromBlock)
}
- if test0.ToBlock != rpc.LatestBlockNumber {
+ if test0.ToBlock.Int64() != rpc.LatestBlockNumber.Int64() {
t.Fatalf("expected %d, got %d", rpc.LatestBlockNumber, test0.ToBlock)
}
if len(test0.Addresses) != 0 {
@@ -57,20 +56,20 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// from, to block number
- var test1 filters.NewFilterArgs
+ var test1 FilterCriteria
vector := fmt.Sprintf(`{"fromBlock":"0x%x","toBlock":"0x%x"}`, fromBlock, toBlock)
if err := json.Unmarshal([]byte(vector), &test1); err != nil {
t.Fatal(err)
}
- if test1.FromBlock != fromBlock {
+ if test1.FromBlock.Int64() != fromBlock.Int64() {
t.Fatalf("expected FromBlock %d, got %d", fromBlock, test1.FromBlock)
}
- if test1.ToBlock != toBlock {
+ if test1.ToBlock.Int64() != toBlock.Int64() {
t.Fatalf("expected ToBlock %d, got %d", toBlock, test1.ToBlock)
}
// single address
- var test2 filters.NewFilterArgs
+ var test2 FilterCriteria
vector = fmt.Sprintf(`{"address": "%s"}`, address0.Hex())
if err := json.Unmarshal([]byte(vector), &test2); err != nil {
t.Fatal(err)
@@ -83,7 +82,7 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// multiple address
- var test3 filters.NewFilterArgs
+ var test3 FilterCriteria
vector = fmt.Sprintf(`{"address": ["%s", "%s"]}`, address0.Hex(), address1.Hex())
if err := json.Unmarshal([]byte(vector), &test3); err != nil {
t.Fatal(err)
@@ -99,7 +98,7 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// single topic
- var test4 filters.NewFilterArgs
+ var test4 FilterCriteria
vector = fmt.Sprintf(`{"topics": ["%s"]}`, topic0.Hex())
if err := json.Unmarshal([]byte(vector), &test4); err != nil {
t.Fatal(err)
@@ -115,7 +114,7 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// test multiple "AND" topics
- var test5 filters.NewFilterArgs
+ var test5 FilterCriteria
vector = fmt.Sprintf(`{"topics": ["%s", "%s"]}`, topic0.Hex(), topic1.Hex())
if err := json.Unmarshal([]byte(vector), &test5); err != nil {
t.Fatal(err)
@@ -137,7 +136,7 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// test optional topic
- var test6 filters.NewFilterArgs
+ var test6 FilterCriteria
vector = fmt.Sprintf(`{"topics": ["%s", null, "%s"]}`, topic0.Hex(), topic2.Hex())
if err := json.Unmarshal([]byte(vector), &test6); err != nil {
t.Fatal(err)
@@ -165,7 +164,7 @@ func TestUnmarshalJSONNewFilterArgs(t *testing.T) {
}
// test OR topics
- var test7 filters.NewFilterArgs
+ var test7 FilterCriteria
vector = fmt.Sprintf(`{"topics": [["%s", "%s"], null, ["%s", null]]}`, topic0.Hex(), topic1.Hex(), topic2.Hex())
if err := json.Unmarshal([]byte(vector), &test7); err != nil {
t.Fatal(err)
diff --git a/eth/filters/filter.go b/eth/filters/filter.go
index 995b588fb..4226620dc 100644
--- a/eth/filters/filter.go
+++ b/eth/filters/filter.go
@@ -23,15 +23,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/ethdb"
)
-type AccountChange struct {
- Address, StateAddress []byte
-}
-
-// Filtering interface
+// Filter can be used to retrieve and filter logs
type Filter struct {
created time.Time
@@ -39,67 +34,72 @@ type Filter struct {
begin, end int64
addresses []common.Address
topics [][]common.Hash
-
- BlockCallback func(*types.Block, vm.Logs)
- TransactionCallback func(*types.Transaction)
- LogCallback func(*vm.Log, bool)
}
-// Create a new filter which uses a bloom filter on blocks to figure out whether a particular block
-// is interesting or not.
+// New creates a new filter which uses a bloom filter on blocks to figure out whether
+// a particular block is interesting or not.
func New(db ethdb.Database) *Filter {
return &Filter{db: db}
}
-// Set the earliest and latest block for filtering.
+// SetBeginBlock sets the earliest block for filtering.
// -1 = latest block (i.e., the current block)
// hash = particular hash from-to
-func (self *Filter) SetBeginBlock(begin int64) {
- self.begin = begin
+func (f *Filter) SetBeginBlock(begin int64) {
+ f.begin = begin
}
-func (self *Filter) SetEndBlock(end int64) {
- self.end = end
+// SetEndBlock sets the latest block for filtering.
+func (f *Filter) SetEndBlock(end int64) {
+ f.end = end
}
-func (self *Filter) SetAddresses(addr []common.Address) {
- self.addresses = addr
+// SetAddresses matches only logs that are generated from addresses that are included
+// in the given addresses.
+func (f *Filter) SetAddresses(addr []common.Address) {
+ f.addresses = addr
}
-func (self *Filter) SetTopics(topics [][]common.Hash) {
- self.topics = topics
+// SetTopics matches only logs that have topics matching the given topics.
+func (f *Filter) SetTopics(topics [][]common.Hash) {
+ f.topics = topics
}
// Run filters logs with the current parameters set
-func (self *Filter) Find() vm.Logs {
- latestHash := core.GetHeadBlockHash(self.db)
- latestBlock := core.GetBlock(self.db, latestHash, core.GetBlockNumber(self.db, latestHash))
- var beginBlockNo uint64 = uint64(self.begin)
- if self.begin == -1 {
+func (f *Filter) Find() []Log {
+ latestHash := core.GetHeadBlockHash(f.db)
+ latestBlock := core.GetBlock(f.db, latestHash, core.GetBlockNumber(f.db, latestHash))
+ if latestBlock == nil {
+ return []Log{}
+ }
+
+ var beginBlockNo uint64 = uint64(f.begin)
+ if f.begin == -1 {
beginBlockNo = latestBlock.NumberU64()
}
- var endBlockNo uint64 = uint64(self.end)
- if self.end == -1 {
+
+ endBlockNo := uint64(f.end)
+ if f.end == -1 {
endBlockNo = latestBlock.NumberU64()
}
// if no addresses are present we can't make use of fast search which
// uses the mipmap bloom filters to check for fast inclusion and uses
// higher range probability in order to ensure at least a false positive
- if len(self.addresses) == 0 {
- return self.getLogs(beginBlockNo, endBlockNo)
+ if len(f.addresses) == 0 {
+ return f.getLogs(beginBlockNo, endBlockNo)
}
- return self.mipFind(beginBlockNo, endBlockNo, 0)
+ return f.mipFind(beginBlockNo, endBlockNo, 0)
}
-func (self *Filter) mipFind(start, end uint64, depth int) (logs vm.Logs) {
+func (f *Filter) mipFind(start, end uint64, depth int) (logs []Log) {
level := core.MIPMapLevels[depth]
// normalise numerator so we can work in level specific batches and
// work with the proper range checks
for num := start / level * level; num <= end; num += level {
// find addresses in bloom filters
- bloom := core.GetMipmapBloom(self.db, num, level)
- for _, addr := range self.addresses {
+ bloom := core.GetMipmapBloom(f.db, num, level)
+ for _, addr := range f.addresses {
if bloom.TestBytes(addr[:]) {
// range check normalised values and make sure that
// we're resolving the correct range instead of the
@@ -107,9 +107,9 @@ func (self *Filter) mipFind(start, end uint64, depth int) (logs vm.Logs) {
start := uint64(math.Max(float64(num), float64(start)))
end := uint64(math.Min(float64(num+level-1), float64(end)))
if depth+1 == len(core.MIPMapLevels) {
- logs = append(logs, self.getLogs(start, end)...)
+ logs = append(logs, f.getLogs(start, end)...)
} else {
- logs = append(logs, self.mipFind(start, end, depth+1)...)
+ logs = append(logs, f.mipFind(start, end, depth+1)...)
}
// break so we don't check the same range for each
// possible address. Checks on multiple addresses
@@ -122,29 +122,36 @@ func (self *Filter) mipFind(start, end uint64, depth int) (logs vm.Logs) {
return logs
}
-func (self *Filter) getLogs(start, end uint64) (logs vm.Logs) {
+func (f *Filter) getLogs(start, end uint64) (logs []Log) {
var block *types.Block
for i := start; i <= end; i++ {
- hash := core.GetCanonicalHash(self.db, i)
+ hash := core.GetCanonicalHash(f.db, i)
if hash != (common.Hash{}) {
- block = core.GetBlock(self.db, hash, i)
+ block = core.GetBlock(f.db, hash, i)
} else { // block not found
return logs
}
+ if block == nil { // block not found/written
+ return logs
+ }
// Use bloom filtering to see if this block is interesting given the
// current parameters
- if self.bloomFilter(block) {
+ if f.bloomFilter(block) {
// Get the logs of the block
var (
- receipts = core.GetBlockReceipts(self.db, block.Hash(), i)
- unfiltered vm.Logs
+ receipts = core.GetBlockReceipts(f.db, block.Hash(), i)
+ unfiltered []Log
)
for _, receipt := range receipts {
- unfiltered = append(unfiltered, receipt.Logs...)
+ rl := make([]Log, len(receipt.Logs))
+ for i, l := range receipt.Logs {
+ rl[i] = Log{l, false}
+ }
+ unfiltered = append(unfiltered, rl...)
}
- logs = append(logs, self.FilterLogs(unfiltered)...)
+ logs = append(logs, filterLogs(unfiltered, f.addresses, f.topics)...)
}
}
@@ -161,26 +168,25 @@ func includes(addresses []common.Address, a common.Address) bool {
return false
}
-func (self *Filter) FilterLogs(logs vm.Logs) vm.Logs {
- var ret vm.Logs
+func filterLogs(logs []Log, addresses []common.Address, topics [][]common.Hash) []Log {
+ var ret []Log
// Filter the logs for interesting stuff
Logs:
for _, log := range logs {
- if len(self.addresses) > 0 && !includes(self.addresses, log.Address) {
+ if len(addresses) > 0 && !includes(addresses, log.Address) {
continue
}
- logTopics := make([]common.Hash, len(self.topics))
+ logTopics := make([]common.Hash, len(topics))
copy(logTopics, log.Topics)
- // If the to filtered topics is greater than the amount of topics in
- // logs, skip.
- if len(self.topics) > len(log.Topics) {
+ // If the to filtered topics is greater than the amount of topics in logs, skip.
+ if len(topics) > len(log.Topics) {
continue Logs
}
- for i, topics := range self.topics {
+ for i, topics := range topics {
var match bool
for _, topic := range topics {
// common.Hash{} is a match all (wildcard)
@@ -193,7 +199,6 @@ Logs:
if !match {
continue Logs
}
-
}
ret = append(ret, log)
@@ -202,10 +207,10 @@ Logs:
return ret
}
-func (self *Filter) bloomFilter(block *types.Block) bool {
- if len(self.addresses) > 0 {
+func (f *Filter) bloomFilter(block *types.Block) bool {
+ if len(f.addresses) > 0 {
var included bool
- for _, addr := range self.addresses {
+ for _, addr := range f.addresses {
if types.BloomLookup(block.Bloom(), addr) {
included = true
break
@@ -217,7 +222,7 @@ func (self *Filter) bloomFilter(block *types.Block) bool {
}
}
- for _, sub := range self.topics {
+ for _, sub := range f.topics {
var included bool
for _, topic := range sub {
if (topic == common.Hash{}) || types.BloomLookup(block.Bloom(), topic) {
diff --git a/eth/filters/filter_system.go b/eth/filters/filter_system.go
index 4343dfa21..04a55fd09 100644
--- a/eth/filters/filter_system.go
+++ b/eth/filters/filter_system.go
@@ -14,172 +14,305 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-// package filters implements an ethereum filtering system for block,
+// Package filters implements an ethereum filtering system for block,
// transactions and log events.
package filters
import (
+ "encoding/json"
+ "errors"
"fmt"
"sync"
"time"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/event"
+ "github.com/ethereum/go-ethereum/rpc"
)
-// FilterType determines the type of filter and is used to put the filter in to
+// Type determines the kind of filter and is used to put the filter in to
// the correct bucket when added.
-type FilterType byte
+type Type byte
const (
- ChainFilter FilterType = iota // new block events filter
- PendingTxFilter // pending transaction filter
- LogFilter // new or removed log filter
- PendingLogFilter // pending log filter
+ // UnknownSubscription indicates an unkown subscription type
+ UnknownSubscription Type = iota
+ // LogsSubscription queries for new or removed (chain reorg) logs
+ LogsSubscription
+ // PendingLogsSubscription queries for logs for the pending block
+ PendingLogsSubscription
+ // PendingTransactionsSubscription queries tx hashes for pending
+ // transactions entering the pending state
+ PendingTransactionsSubscription
+ // BlocksSubscription queries hashes for blocks that are imported
+ BlocksSubscription
)
-// FilterSystem manages filters that filter specific events such as
-// block, transaction and log events. The Filtering system can be used to listen
-// for specific LOG events fired by the EVM (Ethereum Virtual Machine).
-type FilterSystem struct {
- filterMu sync.RWMutex
- filterId int
+var (
+ ErrInvalidSubscriptionID = errors.New("invalid id")
+)
+
+// Log is a helper that can hold additional information about vm.Log
+// necessary for the RPC interface.
+type Log struct {
+ *vm.Log
+ Removed bool `json:"removed"`
+}
- chainFilters map[int]*Filter
- pendingTxFilters map[int]*Filter
- logFilters map[int]*Filter
- pendingLogFilters map[int]*Filter
+func (l *Log) MarshalJSON() ([]byte, error) {
+ fields := map[string]interface{}{
+ "address": l.Address,
+ "data": fmt.Sprintf("0x%x", l.Data),
+ "blockNumber": fmt.Sprintf("%#x", l.BlockNumber),
+ "logIndex": fmt.Sprintf("%#x", l.Index),
+ "blockHash": l.BlockHash,
+ "transactionHash": l.TxHash,
+ "transactionIndex": fmt.Sprintf("%#x", l.TxIndex),
+ "topics": l.Topics,
+ "removed": l.Removed,
+ }
- // generic is an ugly hack for Get
- generic map[int]*Filter
+ return json.Marshal(fields)
+}
+
+type subscription struct {
+ id rpc.ID
+ typ Type
+ created time.Time
+ logsCrit FilterCriteria
+ logs chan []Log
+ hashes chan common.Hash
+ headers chan *types.Header
+ installed chan struct{} // closed when the filter is installed
+ err chan error // closed when the filter is uninstalled
+}
- sub event.Subscription
+// EventSystem creates subscriptions, processes events and broadcasts them to the
+// subscription which match the subscription criteria.
+type EventSystem struct {
+ mux *event.TypeMux
+ sub event.Subscription
+ install chan *subscription // install filter for event notification
+ uninstall chan *subscription // remove filter for event notification
}
-// NewFilterSystem returns a newly allocated filter manager
-func NewFilterSystem(mux *event.TypeMux) *FilterSystem {
- fs := &FilterSystem{
- chainFilters: make(map[int]*Filter),
- pendingTxFilters: make(map[int]*Filter),
- logFilters: make(map[int]*Filter),
- pendingLogFilters: make(map[int]*Filter),
- generic: make(map[int]*Filter),
+// NewEventSystem creates a new manager that listens for event on the given mux,
+// parses and filters them. It uses the all map to retrieve filter changes. The
+// work loop holds its own index that is used to forward events to filters.
+//
+// The returned manager has a loop that needs to be stopped with the Stop function
+// or by stopping the given mux.
+func NewEventSystem(mux *event.TypeMux) *EventSystem {
+ m := &EventSystem{
+ mux: mux,
+ install: make(chan *subscription),
+ uninstall: make(chan *subscription),
}
- fs.sub = mux.Subscribe(
- core.PendingLogsEvent{},
- core.RemovedLogsEvent{},
- core.ChainEvent{},
- core.TxPreEvent{},
- vm.Logs(nil),
- )
- go fs.filterLoop()
- return fs
-}
-
-// Stop quits the filter loop required for polling events
-func (fs *FilterSystem) Stop() {
- fs.sub.Unsubscribe()
-}
-
-// Add adds a filter to the filter manager
-func (fs *FilterSystem) Add(filter *Filter, filterType FilterType) (int, error) {
- fs.filterMu.Lock()
- defer fs.filterMu.Unlock()
-
- id := fs.filterId
- filter.created = time.Now()
-
- switch filterType {
- case ChainFilter:
- fs.chainFilters[id] = filter
- case PendingTxFilter:
- fs.pendingTxFilters[id] = filter
- case LogFilter:
- fs.logFilters[id] = filter
- case PendingLogFilter:
- fs.pendingLogFilters[id] = filter
- default:
- return 0, fmt.Errorf("unknown filter type %v", filterType)
+
+ go m.eventLoop()
+
+ return m
+}
+
+// Subscription is created when the client registers itself for a particular event.
+type Subscription struct {
+ ID rpc.ID
+ f *subscription
+ es *EventSystem
+ unsubOnce sync.Once
+}
+
+// Err returns a channel that is closed when unsubscribed.
+func (sub *Subscription) Err() <-chan error {
+ return sub.f.err
+}
+
+// Unsubscribe uninstalls the subscription from the event broadcast loop.
+func (sub *Subscription) Unsubscribe() {
+ sub.unsubOnce.Do(func() {
+ uninstallLoop:
+ for {
+ // write uninstall request and consume logs/hashes. This prevents
+ // the eventLoop broadcast method to deadlock when writing to the
+ // filter event channel while the subscription loop is waiting for
+ // this method to return (and thus not reading these events).
+ select {
+ case sub.es.uninstall <- sub.f:
+ break uninstallLoop
+ case <-sub.f.logs:
+ case <-sub.f.hashes:
+ case <-sub.f.headers:
+ }
+ }
+
+ // wait for filter to be uninstalled in work loop before returning
+ // this ensures that the manager won't use the event channel which
+ // will probably be closed by the client asap after this method returns.
+ <-sub.Err()
+ })
+}
+
+// subscribe installs the subscription in the event broadcast loop.
+func (es *EventSystem) subscribe(sub *subscription) *Subscription {
+ es.install <- sub
+ <-sub.installed
+ return &Subscription{ID: sub.id, f: sub, es: es}
+}
+
+// SubscribeLogs creates a subscription that will write all logs matching the
+// given criteria to the given logs channel.
+func (es *EventSystem) SubscribeLogs(crit FilterCriteria, logs chan []Log) *Subscription {
+ sub := &subscription{
+ id: rpc.NewID(),
+ typ: LogsSubscription,
+ logsCrit: crit,
+ created: time.Now(),
+ logs: logs,
+ hashes: make(chan common.Hash),
+ headers: make(chan *types.Header),
+ installed: make(chan struct{}),
+ err: make(chan error),
}
- fs.generic[id] = filter
- fs.filterId++
+ return es.subscribe(sub)
+}
+
+// SubscribePendingLogs creates a subscription that will write pending logs matching the
+// given criteria to the given channel.
+func (es *EventSystem) SubscribePendingLogs(crit FilterCriteria, logs chan []Log) *Subscription {
+ sub := &subscription{
+ id: rpc.NewID(),
+ typ: PendingLogsSubscription,
+ logsCrit: crit,
+ created: time.Now(),
+ logs: logs,
+ hashes: make(chan common.Hash),
+ headers: make(chan *types.Header),
+ installed: make(chan struct{}),
+ err: make(chan error),
+ }
- return id, nil
+ return es.subscribe(sub)
}
-// Remove removes a filter by filter id
-func (fs *FilterSystem) Remove(id int) {
- fs.filterMu.Lock()
- defer fs.filterMu.Unlock()
+// SubscribePendingTxEvents creates a sbuscription that writes transaction hashes for
+// transactions that enter the transaction pool.
+func (es *EventSystem) SubscribePendingTxEvents(hashes chan common.Hash) *Subscription {
+ sub := &subscription{
+ id: rpc.NewID(),
+ typ: PendingTransactionsSubscription,
+ created: time.Now(),
+ logs: make(chan []Log),
+ hashes: hashes,
+ headers: make(chan *types.Header),
+ installed: make(chan struct{}),
+ err: make(chan error),
+ }
- delete(fs.chainFilters, id)
- delete(fs.pendingTxFilters, id)
- delete(fs.logFilters, id)
- delete(fs.pendingLogFilters, id)
- delete(fs.generic, id)
+ return es.subscribe(sub)
}
-func (fs *FilterSystem) Get(id int) *Filter {
- fs.filterMu.RLock()
- defer fs.filterMu.RUnlock()
+// SubscribeNewHeads creates a subscription that writes the header of a block that is
+// imported in the chain.
+func (es *EventSystem) SubscribeNewHeads(headers chan *types.Header) *Subscription {
+ sub := &subscription{
+ id: rpc.NewID(),
+ typ: BlocksSubscription,
+ created: time.Now(),
+ logs: make(chan []Log),
+ hashes: make(chan common.Hash),
+ headers: headers,
+ installed: make(chan struct{}),
+ err: make(chan error),
+ }
- return fs.generic[id]
+ return es.subscribe(sub)
}
-// filterLoop waits for specific events from ethereum and fires their handlers
-// when the filter matches the requirements.
-func (fs *FilterSystem) filterLoop() {
- for event := range fs.sub.Chan() {
- switch ev := event.Data.(type) {
- case core.ChainEvent:
- fs.filterMu.RLock()
- for _, filter := range fs.chainFilters {
- if filter.BlockCallback != nil && !filter.created.After(event.Time) {
- filter.BlockCallback(ev.Block, ev.Logs)
+type filterIndex map[Type]map[rpc.ID]*subscription
+
+// broadcast event to filters that match criteria.
+func broadcast(filters filterIndex, ev *event.Event) {
+ if ev == nil {
+ return
+ }
+
+ switch e := ev.Data.(type) {
+ case vm.Logs:
+ if len(e) > 0 {
+ for _, f := range filters[LogsSubscription] {
+ if ev.Time.After(f.created) {
+ if matchedLogs := filterLogs(convertLogs(e, false), f.logsCrit.Addresses, f.logsCrit.Topics); len(matchedLogs) > 0 {
+ f.logs <- matchedLogs
+ }
}
}
- fs.filterMu.RUnlock()
- case core.TxPreEvent:
- fs.filterMu.RLock()
- for _, filter := range fs.pendingTxFilters {
- if filter.TransactionCallback != nil && !filter.created.After(event.Time) {
- filter.TransactionCallback(ev.Tx)
+ }
+ case core.RemovedLogsEvent:
+ for _, f := range filters[LogsSubscription] {
+ if ev.Time.After(f.created) {
+ if matchedLogs := filterLogs(convertLogs(e.Logs, true), f.logsCrit.Addresses, f.logsCrit.Topics); len(matchedLogs) > 0 {
+ f.logs <- matchedLogs
}
}
- fs.filterMu.RUnlock()
-
- case vm.Logs:
- fs.filterMu.RLock()
- for _, filter := range fs.logFilters {
- if filter.LogCallback != nil && !filter.created.After(event.Time) {
- for _, log := range filter.FilterLogs(ev) {
- filter.LogCallback(log, false)
- }
+ }
+ case core.PendingLogsEvent:
+ for _, f := range filters[PendingLogsSubscription] {
+ if ev.Time.After(f.created) {
+ if matchedLogs := filterLogs(convertLogs(e.Logs, false), f.logsCrit.Addresses, f.logsCrit.Topics); len(matchedLogs) > 0 {
+ f.logs <- matchedLogs
}
}
- fs.filterMu.RUnlock()
- case core.RemovedLogsEvent:
- fs.filterMu.RLock()
- for _, filter := range fs.logFilters {
- if filter.LogCallback != nil && !filter.created.After(event.Time) {
- for _, removedLog := range filter.FilterLogs(ev.Logs) {
- filter.LogCallback(removedLog, true)
- }
- }
+ }
+ case core.TxPreEvent:
+ for _, f := range filters[PendingTransactionsSubscription] {
+ if ev.Time.After(f.created) {
+ f.hashes <- e.Tx.Hash()
}
- fs.filterMu.RUnlock()
- case core.PendingLogsEvent:
- fs.filterMu.RLock()
- for _, filter := range fs.pendingLogFilters {
- if filter.LogCallback != nil && !filter.created.After(event.Time) {
- for _, pendingLog := range ev.Logs {
- filter.LogCallback(pendingLog, false)
- }
- }
+ }
+ case core.ChainEvent:
+ for _, f := range filters[BlocksSubscription] {
+ if ev.Time.After(f.created) {
+ f.headers <- e.Block.Header()
}
- fs.filterMu.RUnlock()
}
}
}
+
+// eventLoop (un)installs filters and processes mux events.
+func (es *EventSystem) eventLoop() {
+ var (
+ index = make(filterIndex)
+ sub = es.mux.Subscribe(core.PendingLogsEvent{}, core.RemovedLogsEvent{}, vm.Logs{}, core.TxPreEvent{}, core.ChainEvent{})
+ )
+ for {
+ select {
+ case ev, active := <-sub.Chan():
+ if !active { // system stopped
+ return
+ }
+ broadcast(index, ev)
+ case f := <-es.install:
+ if _, found := index[f.typ]; !found {
+ index[f.typ] = make(map[rpc.ID]*subscription)
+ }
+ index[f.typ][f.id] = f
+ close(f.installed)
+ case f := <-es.uninstall:
+ delete(index[f.typ], f.id)
+ close(f.err)
+ }
+ }
+}
+
+// convertLogs is a helper utility that converts vm.Logs to []filter.Log.
+func convertLogs(in vm.Logs, removed bool) []Log {
+ logs := make([]Log, len(in))
+ for i, l := range in {
+ logs[i] = Log{l, removed}
+ }
+ return logs
+}
diff --git a/eth/filters/filter_system_test.go b/eth/filters/filter_system_test.go
index 72824cb08..9e6fde1c6 100644
--- a/eth/filters/filter_system_test.go
+++ b/eth/filters/filter_system_test.go
@@ -17,101 +17,310 @@
package filters
import (
+ "math/big"
+ "reflect"
"testing"
"time"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
+ "github.com/ethereum/go-ethereum/rpc"
)
-func TestCallbacks(t *testing.T) {
+var (
+ mux = new(event.TypeMux)
+ db, _ = ethdb.NewMemDatabase()
+ api = NewPublicFilterAPI(db, mux)
+)
+
+// TestBlockSubscription tests if a block subscription returns block hashes for posted chain events.
+// It creates multiple subscriptions:
+// - one at the start and should receive all posted chain events and a second (blockHashes)
+// - one that is created after a cutoff moment and uninstalled after a second cutoff moment (blockHashes[cutoff1:cutoff2])
+// - one that is created after the second cutoff moment (blockHashes[cutoff2:])
+func TestBlockSubscription(t *testing.T) {
+ t.Parallel()
+
var (
- mux event.TypeMux
- fs = NewFilterSystem(&mux)
- blockDone = make(chan struct{})
- txDone = make(chan struct{})
- logDone = make(chan struct{})
- removedLogDone = make(chan struct{})
- pendingLogDone = make(chan struct{})
+ genesis = core.WriteGenesisBlockForTesting(db)
+ chain, _ = core.GenerateChain(nil, genesis, db, 10, func(i int, gen *core.BlockGen) {})
+ chainEvents = []core.ChainEvent{}
)
- blockFilter := &Filter{
- BlockCallback: func(*types.Block, vm.Logs) {
- close(blockDone)
- },
- }
- txFilter := &Filter{
- TransactionCallback: func(*types.Transaction) {
- close(txDone)
- },
+ for _, blk := range chain {
+ chainEvents = append(chainEvents, core.ChainEvent{Hash: blk.Hash(), Block: blk})
}
- logFilter := &Filter{
- LogCallback: func(l *vm.Log, oob bool) {
- if !oob {
- close(logDone)
+
+ chan0 := make(chan *types.Header)
+ sub0 := api.events.SubscribeNewHeads(chan0)
+ chan1 := make(chan *types.Header)
+ sub1 := api.events.SubscribeNewHeads(chan1)
+
+ go func() { // simulate client
+ i1, i2 := 0, 0
+ for i1 != len(chainEvents) || i2 != len(chainEvents) {
+ select {
+ case header := <-chan0:
+ if chainEvents[i1].Hash != header.Hash() {
+ t.Errorf("sub0 received invalid hash on index %d, want %x, got %x", i1, chainEvents[i1].Hash, header.Hash())
+ }
+ i1++
+ case header := <-chan1:
+ if chainEvents[i2].Hash != header.Hash() {
+ t.Errorf("sub1 received invalid hash on index %d, want %x, got %x", i2, chainEvents[i2].Hash, header.Hash())
+ }
+ i2++
}
- },
+ }
+
+ sub0.Unsubscribe()
+ sub1.Unsubscribe()
+ }()
+
+ time.Sleep(1 * time.Second)
+ for _, e := range chainEvents {
+ mux.Post(e)
}
- removedLogFilter := &Filter{
- LogCallback: func(l *vm.Log, oob bool) {
- if oob {
- close(removedLogDone)
- }
- },
+
+ <-sub0.Err()
+ <-sub1.Err()
+}
+
+// TestPendingTxFilter tests whether pending tx filters retrieve all pending transactions that are posted to the event mux.
+func TestPendingTxFilter(t *testing.T) {
+ t.Parallel()
+
+ var (
+ transactions = []*types.Transaction{
+ types.NewTransaction(0, common.HexToAddress("0xb794f5ea0ba39494ce83a213fffba74279579268"), new(big.Int), new(big.Int), new(big.Int), nil),
+ types.NewTransaction(1, common.HexToAddress("0xb794f5ea0ba39494ce83a213fffba74279579268"), new(big.Int), new(big.Int), new(big.Int), nil),
+ types.NewTransaction(2, common.HexToAddress("0xb794f5ea0ba39494ce83a213fffba74279579268"), new(big.Int), new(big.Int), new(big.Int), nil),
+ types.NewTransaction(3, common.HexToAddress("0xb794f5ea0ba39494ce83a213fffba74279579268"), new(big.Int), new(big.Int), new(big.Int), nil),
+ types.NewTransaction(4, common.HexToAddress("0xb794f5ea0ba39494ce83a213fffba74279579268"), new(big.Int), new(big.Int), new(big.Int), nil),
+ }
+
+ hashes []common.Hash
+ )
+
+ fid0 := api.NewPendingTransactionFilter()
+
+ time.Sleep(1 * time.Second)
+ for _, tx := range transactions {
+ ev := core.TxPreEvent{Tx: tx}
+ mux.Post(ev)
}
- pendingLogFilter := &Filter{
- LogCallback: func(*vm.Log, bool) {
- close(pendingLogDone)
- },
+
+ for {
+ h := api.GetFilterChanges(fid0).([]common.Hash)
+ hashes = append(hashes, h...)
+
+ if len(hashes) >= len(transactions) {
+ break
+ }
+
+ time.Sleep(100 * time.Millisecond)
+ }
+
+ for i := range hashes {
+ if hashes[i] != transactions[i].Hash() {
+ t.Errorf("hashes[%d] invalid, want %x, got %x", i, transactions[i].Hash(), hashes[i])
+ }
+ }
+}
+
+// TestLogFilter tests whether log filters match the correct logs that are posted to the event mux.
+func TestLogFilter(t *testing.T) {
+ t.Parallel()
+
+ var (
+ firstAddr = common.HexToAddress("0x1111111111111111111111111111111111111111")
+ secondAddr = common.HexToAddress("0x2222222222222222222222222222222222222222")
+ thirdAddress = common.HexToAddress("0x3333333333333333333333333333333333333333")
+ notUsedAddress = common.HexToAddress("0x9999999999999999999999999999999999999999")
+ firstTopic = common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111")
+ secondTopic = common.HexToHash("0x2222222222222222222222222222222222222222222222222222222222222222")
+ notUsedTopic = common.HexToHash("0x9999999999999999999999999999999999999999999999999999999999999999")
+
+ allLogs = vm.Logs{
+ // Note, these are used for comparison of the test cases.
+ vm.NewLog(firstAddr, []common.Hash{}, []byte(""), 0),
+ vm.NewLog(firstAddr, []common.Hash{firstTopic}, []byte(""), 1),
+ vm.NewLog(secondAddr, []common.Hash{firstTopic}, []byte(""), 1),
+ vm.NewLog(thirdAddress, []common.Hash{secondTopic}, []byte(""), 2),
+ vm.NewLog(thirdAddress, []common.Hash{secondTopic}, []byte(""), 3),
+ }
+
+ testCases = []struct {
+ crit FilterCriteria
+ expected vm.Logs
+ id rpc.ID
+ }{
+ // match all
+ {FilterCriteria{}, allLogs, ""},
+ // match none due to no matching addresses
+ {FilterCriteria{Addresses: []common.Address{common.Address{}, notUsedAddress}, Topics: [][]common.Hash{allLogs[0].Topics}}, vm.Logs{}, ""},
+ // match logs based on addresses, ignore topics
+ {FilterCriteria{Addresses: []common.Address{firstAddr}}, allLogs[:2], ""},
+ // match none due to no matching topics (match with address)
+ {FilterCriteria{Addresses: []common.Address{secondAddr}, Topics: [][]common.Hash{[]common.Hash{notUsedTopic}}}, vm.Logs{}, ""},
+ // match logs based on addresses and topics
+ {FilterCriteria{Addresses: []common.Address{thirdAddress}, Topics: [][]common.Hash{[]common.Hash{firstTopic, secondTopic}}}, allLogs[3:5], ""},
+ // match logs based on multiple addresses and "or" topics
+ {FilterCriteria{Addresses: []common.Address{secondAddr, thirdAddress}, Topics: [][]common.Hash{[]common.Hash{firstTopic, secondTopic}}}, allLogs[2:5], ""},
+ // block numbers are ignored for filters created with New***Filter, these return all logs that match the given criterias when the state changes
+ {FilterCriteria{Addresses: []common.Address{firstAddr}, FromBlock: big.NewInt(1), ToBlock: big.NewInt(2)}, allLogs[:2], ""},
+ }
+
+ err error
+ )
+
+ // create all filters
+ for i := range testCases {
+ testCases[i].id = api.NewFilter(testCases[i].crit)
}
- fs.Add(blockFilter, ChainFilter)
- fs.Add(txFilter, PendingTxFilter)
- fs.Add(logFilter, LogFilter)
- fs.Add(removedLogFilter, LogFilter)
- fs.Add(pendingLogFilter, PendingLogFilter)
-
- mux.Post(core.ChainEvent{})
- mux.Post(core.TxPreEvent{})
- mux.Post(vm.Logs{&vm.Log{}})
- mux.Post(core.RemovedLogsEvent{Logs: vm.Logs{&vm.Log{}}})
- mux.Post(core.PendingLogsEvent{Logs: vm.Logs{&vm.Log{}}})
-
- const dura = 5 * time.Second
- failTimer := time.NewTimer(dura)
- select {
- case <-blockDone:
- case <-failTimer.C:
- t.Error("block filter failed to trigger (timeout)")
+ // raise events
+ time.Sleep(1 * time.Second)
+ if err = mux.Post(allLogs); err != nil {
+ t.Fatal(err)
}
- failTimer.Reset(dura)
- select {
- case <-txDone:
- case <-failTimer.C:
- t.Error("transaction filter failed to trigger (timeout)")
+ for i, tt := range testCases {
+ var fetched []Log
+ for { // fetch all expected logs
+ fetched = append(fetched, api.GetFilterChanges(tt.id).([]Log)...)
+ if len(fetched) >= len(tt.expected) {
+ break
+ }
+
+ time.Sleep(100 * time.Millisecond)
+ }
+
+ if len(fetched) != len(tt.expected) {
+ t.Errorf("invalid number of logs for case %d, want %d log(s), got %d", i, len(tt.expected), len(fetched))
+ return
+ }
+
+ for l := range fetched {
+ if fetched[l].Removed {
+ t.Errorf("expected log not to be removed for log %d in case %d", l, i)
+ }
+ if !reflect.DeepEqual(fetched[l].Log, tt.expected[l]) {
+ t.Errorf("invalid log on index %d for case %d", l, i)
+ }
+
+ }
}
+}
- failTimer.Reset(dura)
- select {
- case <-logDone:
- case <-failTimer.C:
- t.Error("log filter failed to trigger (timeout)")
+// TestPendingLogsSubscription tests if a subscription receives the correct pending logs that are posted to the event mux.
+func TestPendingLogsSubscription(t *testing.T) {
+ t.Parallel()
+
+ var (
+ firstAddr = common.HexToAddress("0x1111111111111111111111111111111111111111")
+ secondAddr = common.HexToAddress("0x2222222222222222222222222222222222222222")
+ thirdAddress = common.HexToAddress("0x3333333333333333333333333333333333333333")
+ notUsedAddress = common.HexToAddress("0x9999999999999999999999999999999999999999")
+ firstTopic = common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111")
+ secondTopic = common.HexToHash("0x2222222222222222222222222222222222222222222222222222222222222222")
+ thirdTopic = common.HexToHash("0x3333333333333333333333333333333333333333333333333333333333333333")
+ forthTopic = common.HexToHash("0x4444444444444444444444444444444444444444444444444444444444444444")
+ notUsedTopic = common.HexToHash("0x9999999999999999999999999999999999999999999999999999999999999999")
+
+ allLogs = []core.PendingLogsEvent{
+ core.PendingLogsEvent{Logs: vm.Logs{vm.NewLog(firstAddr, []common.Hash{}, []byte(""), 0)}},
+ core.PendingLogsEvent{Logs: vm.Logs{vm.NewLog(firstAddr, []common.Hash{firstTopic}, []byte(""), 1)}},
+ core.PendingLogsEvent{Logs: vm.Logs{vm.NewLog(secondAddr, []common.Hash{firstTopic}, []byte(""), 2)}},
+ core.PendingLogsEvent{Logs: vm.Logs{vm.NewLog(thirdAddress, []common.Hash{secondTopic}, []byte(""), 3)}},
+ core.PendingLogsEvent{Logs: vm.Logs{vm.NewLog(thirdAddress, []common.Hash{secondTopic}, []byte(""), 4)}},
+ core.PendingLogsEvent{Logs: vm.Logs{
+ vm.NewLog(thirdAddress, []common.Hash{firstTopic}, []byte(""), 5),
+ vm.NewLog(thirdAddress, []common.Hash{thirdTopic}, []byte(""), 5),
+ vm.NewLog(thirdAddress, []common.Hash{forthTopic}, []byte(""), 5),
+ vm.NewLog(firstAddr, []common.Hash{firstTopic}, []byte(""), 5),
+ }},
+ }
+
+ convertLogs = func(pl []core.PendingLogsEvent) vm.Logs {
+ var logs vm.Logs
+ for _, l := range pl {
+ logs = append(logs, l.Logs...)
+ }
+ return logs
+ }
+
+ testCases = []struct {
+ crit FilterCriteria
+ expected vm.Logs
+ c chan []Log
+ sub *Subscription
+ }{
+ // match all
+ {FilterCriteria{}, convertLogs(allLogs), nil, nil},
+ // match none due to no matching addresses
+ {FilterCriteria{Addresses: []common.Address{common.Address{}, notUsedAddress}, Topics: [][]common.Hash{[]common.Hash{}}}, vm.Logs{}, nil, nil},
+ // match logs based on addresses, ignore topics
+ {FilterCriteria{Addresses: []common.Address{firstAddr}}, append(convertLogs(allLogs[:2]), allLogs[5].Logs[3]), nil, nil},
+ // match none due to no matching topics (match with address)
+ {FilterCriteria{Addresses: []common.Address{secondAddr}, Topics: [][]common.Hash{[]common.Hash{notUsedTopic}}}, vm.Logs{}, nil, nil},
+ // match logs based on addresses and topics
+ {FilterCriteria{Addresses: []common.Address{thirdAddress}, Topics: [][]common.Hash{[]common.Hash{firstTopic, secondTopic}}}, append(convertLogs(allLogs[3:5]), allLogs[5].Logs[0]), nil, nil},
+ // match logs based on multiple addresses and "or" topics
+ {FilterCriteria{Addresses: []common.Address{secondAddr, thirdAddress}, Topics: [][]common.Hash{[]common.Hash{firstTopic, secondTopic}}}, append(convertLogs(allLogs[2:5]), allLogs[5].Logs[0]), nil, nil},
+ // block numbers are ignored for filters created with New***Filter, these return all logs that match the given criterias when the state changes
+ {FilterCriteria{Addresses: []common.Address{firstAddr}, FromBlock: big.NewInt(2), ToBlock: big.NewInt(3)}, append(convertLogs(allLogs[:2]), allLogs[5].Logs[3]), nil, nil},
+ // multiple pending logs, should match only 2 topics from the logs in block 5
+ {FilterCriteria{Addresses: []common.Address{thirdAddress}, Topics: [][]common.Hash{[]common.Hash{firstTopic, forthTopic}}}, vm.Logs{allLogs[5].Logs[0], allLogs[5].Logs[2]}, nil, nil},
+ }
+ )
+
+ // create all subscriptions, this ensures all subscriptions are created before the events are posted.
+ // on slow machines this could otherwise lead to missing events when the subscription is created after
+ // (some) events are posted.
+ for i := range testCases {
+ testCases[i].c = make(chan []Log)
+ testCases[i].sub = api.events.SubscribePendingLogs(testCases[i].crit, testCases[i].c)
}
- failTimer.Reset(dura)
- select {
- case <-removedLogDone:
- case <-failTimer.C:
- t.Error("removed log filter failed to trigger (timeout)")
+ for n, test := range testCases {
+ i := n
+ tt := test
+ go func() {
+ var fetched []Log
+ fetchLoop:
+ for {
+ logs := <-tt.c
+ fetched = append(fetched, logs...)
+ if len(fetched) >= len(tt.expected) {
+ break fetchLoop
+ }
+ }
+
+ if len(fetched) != len(tt.expected) {
+ t.Fatalf("invalid number of logs for case %d, want %d log(s), got %d", i, len(tt.expected), len(fetched))
+ }
+
+ for l := range fetched {
+ if fetched[l].Removed {
+ t.Errorf("expected log not to be removed for log %d in case %d", l, i)
+ }
+ if !reflect.DeepEqual(fetched[l].Log, tt.expected[l]) {
+ t.Errorf("invalid log on index %d for case %d", l, i)
+ }
+ }
+ }()
}
- failTimer.Reset(dura)
- select {
- case <-pendingLogDone:
- case <-failTimer.C:
- t.Error("pending log filter failed to trigger (timeout)")
+ // raise events
+ time.Sleep(1 * time.Second)
+ for _, l := range allLogs {
+ if err := mux.Post(l); err != nil {
+ t.Fatal(err)
+ }
}
}
diff --git a/eth/filters/filter_test.go b/eth/filters/filter_test.go
index a95adfce7..7b714f5d5 100644
--- a/eth/filters/filter_test.go
+++ b/eth/filters/filter_test.go
@@ -57,7 +57,7 @@ func BenchmarkMipmaps(b *testing.B) {
defer db.Close()
genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{Address: addr1, Balance: big.NewInt(1000000)})
- chain, receipts := core.GenerateChain(genesis, db, 100010, func(i int, gen *core.BlockGen) {
+ chain, receipts := core.GenerateChain(nil, genesis, db, 100010, func(i int, gen *core.BlockGen) {
var receipts types.Receipts
switch i {
case 2403:
@@ -133,7 +133,7 @@ func TestFilters(t *testing.T) {
defer db.Close()
genesis := core.WriteGenesisBlockForTesting(db, core.GenesisAccount{Address: addr, Balance: big.NewInt(1000000)})
- chain, receipts := core.GenerateChain(genesis, db, 1000, func(i int, gen *core.BlockGen) {
+ chain, receipts := core.GenerateChain(nil, genesis, db, 1000, func(i int, gen *core.BlockGen) {
var receipts types.Receipts
switch i {
case 1:
diff --git a/eth/handler.go b/eth/handler.go
index 47a36cc0b..e6c547c02 100644
--- a/eth/handler.go
+++ b/eth/handler.go
@@ -45,6 +45,10 @@ const (
estHeaderRlpSize = 500 // Approximate size of an RLP encoded block header
)
+var (
+ daoChallengeTimeout = 15 * time.Second // Time allowance for a node to reply to the DAO handshake challenge
+)
+
// errIncompatibleConfig is returned if the requested protocols and configs are
// not compatible (low protocol version restrictions and high requirements).
var errIncompatibleConfig = errors.New("incompatible configuration")
@@ -53,18 +57,16 @@ func errResp(code errCode, format string, v ...interface{}) error {
return fmt.Errorf("%v - %v", code, fmt.Sprintf(format, v...))
}
-type hashFetcherFn func(common.Hash) error
-type blockFetcherFn func([]common.Hash) error
-
type ProtocolManager struct {
networkId int
fastSync uint32 // Flag whether fast sync is enabled (gets disabled if we already have blocks)
synced uint32 // Flag whether we're considered synchronised (enables transaction processing)
- txpool txPool
- blockchain *core.BlockChain
- chaindb ethdb.Database
+ txpool txPool
+ blockchain *core.BlockChain
+ chaindb ethdb.Database
+ chainconfig *core.ChainConfig
downloader *downloader.Downloader
fetcher *fetcher.Fetcher
@@ -99,6 +101,7 @@ func NewProtocolManager(config *core.ChainConfig, fastSync bool, networkId int,
txpool: txpool,
blockchain: blockchain,
chaindb: chaindb,
+ chainconfig: config,
peers: newPeerSet(),
newPeerCh: make(chan *peer),
noMorePeers: make(chan struct{}),
@@ -269,15 +272,32 @@ func (pm *ProtocolManager) handle(p *peer) error {
defer pm.removePeer(p.id)
// Register the peer in the downloader. If the downloader considers it banned, we disconnect
- if err := pm.downloader.RegisterPeer(p.id, p.version, p.Head(),
- p.RequestHashes, p.RequestHashesFromNumber, p.RequestBlocks, p.RequestHeadersByHash,
- p.RequestHeadersByNumber, p.RequestBodies, p.RequestReceipts, p.RequestNodeData); err != nil {
+ if err := pm.downloader.RegisterPeer(p.id, p.version, p.Head, p.RequestHeadersByHash, p.RequestHeadersByNumber, p.RequestBodies, p.RequestReceipts, p.RequestNodeData); err != nil {
return err
}
// Propagate existing transactions. new transactions appearing
// after this will be sent via broadcasts.
pm.syncTransactions(p)
+ // If we're DAO hard-fork aware, validate any remote peer with regard to the hard-fork
+ if daoBlock := pm.chainconfig.DAOForkBlock; daoBlock != nil {
+ // Request the peer's DAO fork header for extra-data validation
+ if err := p.RequestHeadersByNumber(daoBlock.Uint64(), 1, 0, false); err != nil {
+ return err
+ }
+ // Start a timer to disconnect if the peer doesn't reply in time
+ p.forkDrop = time.AfterFunc(daoChallengeTimeout, func() {
+ glog.V(logger.Warn).Infof("%v: timed out DAO fork-check, dropping", p)
+ pm.removePeer(p.id)
+ })
+ // Make sure it's cleaned up if the peer dies off
+ defer func() {
+ if p.forkDrop != nil {
+ p.forkDrop.Stop()
+ p.forkDrop = nil
+ }
+ }()
+ }
// main loop. handle incoming messages.
for {
if err := pm.handleMsg(p); err != nil {
@@ -306,108 +326,8 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
// Status messages should never arrive after the handshake
return errResp(ErrExtraStatusMsg, "uncontrolled status message")
- case p.version < eth62 && msg.Code == GetBlockHashesMsg:
- // Retrieve the number of hashes to return and from which origin hash
- var request getBlockHashesData
- if err := msg.Decode(&request); err != nil {
- return errResp(ErrDecode, "%v: %v", msg, err)
- }
- if request.Amount > uint64(downloader.MaxHashFetch) {
- request.Amount = uint64(downloader.MaxHashFetch)
- }
- // Retrieve the hashes from the block chain and return them
- hashes := pm.blockchain.GetBlockHashesFromHash(request.Hash, request.Amount)
- if len(hashes) == 0 {
- glog.V(logger.Debug).Infof("invalid block hash %x", request.Hash.Bytes()[:4])
- }
- return p.SendBlockHashes(hashes)
-
- case p.version < eth62 && msg.Code == GetBlockHashesFromNumberMsg:
- // Retrieve and decode the number of hashes to return and from which origin number
- var request getBlockHashesFromNumberData
- if err := msg.Decode(&request); err != nil {
- return errResp(ErrDecode, "%v: %v", msg, err)
- }
- if request.Amount > uint64(downloader.MaxHashFetch) {
- request.Amount = uint64(downloader.MaxHashFetch)
- }
- // Calculate the last block that should be retrieved, and short circuit if unavailable
- last := pm.blockchain.GetBlockByNumber(request.Number + request.Amount - 1)
- if last == nil {
- last = pm.blockchain.CurrentBlock()
- request.Amount = last.NumberU64() - request.Number + 1
- }
- if last.NumberU64() < request.Number {
- return p.SendBlockHashes(nil)
- }
- // Retrieve the hashes from the last block backwards, reverse and return
- hashes := []common.Hash{last.Hash()}
- hashes = append(hashes, pm.blockchain.GetBlockHashesFromHash(last.Hash(), request.Amount-1)...)
-
- for i := 0; i < len(hashes)/2; i++ {
- hashes[i], hashes[len(hashes)-1-i] = hashes[len(hashes)-1-i], hashes[i]
- }
- return p.SendBlockHashes(hashes)
-
- case p.version < eth62 && msg.Code == BlockHashesMsg:
- // A batch of hashes arrived to one of our previous requests
- var hashes []common.Hash
- if err := msg.Decode(&hashes); err != nil {
- break
- }
- // Deliver them all to the downloader for queuing
- err := pm.downloader.DeliverHashes(p.id, hashes)
- if err != nil {
- glog.V(logger.Debug).Infoln(err)
- }
-
- case p.version < eth62 && msg.Code == GetBlocksMsg:
- // Decode the retrieval message
- msgStream := rlp.NewStream(msg.Payload, uint64(msg.Size))
- if _, err := msgStream.List(); err != nil {
- return err
- }
- // Gather blocks until the fetch or network limits is reached
- var (
- hash common.Hash
- bytes common.StorageSize
- blocks []*types.Block
- )
- for len(blocks) < downloader.MaxBlockFetch && bytes < softResponseLimit {
- //Retrieve the hash of the next block
- err := msgStream.Decode(&hash)
- if err == rlp.EOL {
- break
- } else if err != nil {
- return errResp(ErrDecode, "msg %v: %v", msg, err)
- }
- // Retrieve the requested block, stopping if enough was found
- if block := pm.blockchain.GetBlockByHash(hash); block != nil {
- blocks = append(blocks, block)
- bytes += block.Size()
- }
- }
- return p.SendBlocks(blocks)
-
- case p.version < eth62 && msg.Code == BlocksMsg:
- // Decode the arrived block message
- var blocks []*types.Block
- if err := msg.Decode(&blocks); err != nil {
- glog.V(logger.Detail).Infoln("Decode error", err)
- blocks = nil
- }
- // Update the receive timestamp of each block
- for _, block := range blocks {
- block.ReceivedAt = msg.ReceivedAt
- block.ReceivedFrom = p
- }
- // Filter out any explicitly requested blocks, deliver the rest to the downloader
- if blocks := pm.fetcher.FilterBlocks(blocks); len(blocks) > 0 {
- pm.downloader.DeliverBlocks(p.id, blocks)
- }
-
// Block header query, collect the requested headers and reply
- case p.version >= eth62 && msg.Code == GetBlockHeadersMsg:
+ case msg.Code == GetBlockHeadersMsg:
// Decode the complex header query
var query getBlockHeadersData
if err := msg.Decode(&query); err != nil {
@@ -475,15 +395,50 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
return p.SendBlockHeaders(headers)
- case p.version >= eth62 && msg.Code == BlockHeadersMsg:
+ case msg.Code == BlockHeadersMsg:
// A batch of headers arrived to one of our previous requests
var headers []*types.Header
if err := msg.Decode(&headers); err != nil {
return errResp(ErrDecode, "msg %v: %v", msg, err)
}
+ // If no headers were received, but we're expending a DAO fork check, maybe it's that
+ if len(headers) == 0 && p.forkDrop != nil {
+ // Possibly an empty reply to the fork header checks, sanity check TDs
+ verifyDAO := true
+
+ // If we already have a DAO header, we can check the peer's TD against it. If
+ // the peer's ahead of this, it too must have a reply to the DAO check
+ if daoHeader := pm.blockchain.GetHeaderByNumber(pm.chainconfig.DAOForkBlock.Uint64()); daoHeader != nil {
+ if _, td := p.Head(); td.Cmp(pm.blockchain.GetTd(daoHeader.Hash(), daoHeader.Number.Uint64())) >= 0 {
+ verifyDAO = false
+ }
+ }
+ // If we're seemingly on the same chain, disable the drop timer
+ if verifyDAO {
+ glog.V(logger.Debug).Infof("%v: seems to be on the same side of the DAO fork", p)
+ p.forkDrop.Stop()
+ p.forkDrop = nil
+ return nil
+ }
+ }
// Filter out any explicitly requested headers, deliver the rest to the downloader
filter := len(headers) == 1
if filter {
+ // If it's a potential DAO fork check, validate against the rules
+ if p.forkDrop != nil && pm.chainconfig.DAOForkBlock.Cmp(headers[0].Number) == 0 {
+ // Disable the fork drop timer
+ p.forkDrop.Stop()
+ p.forkDrop = nil
+
+ // Validate the header and either drop the peer or continue
+ if err := core.ValidateDAOHeaderExtraData(pm.chainconfig, headers[0]); err != nil {
+ glog.V(logger.Debug).Infof("%v: verified to be on the other side of the DAO fork, dropping", p)
+ return err
+ }
+ glog.V(logger.Debug).Infof("%v: verified to be on the same side of the DAO fork", p)
+ return nil
+ }
+ // Irrelevant of the fork checks, send the header to the fetcher just in case
headers = pm.fetcher.FilterHeaders(headers, time.Now())
}
if len(headers) > 0 || !filter {
@@ -493,7 +448,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
}
- case p.version >= eth62 && msg.Code == GetBlockBodiesMsg:
+ case msg.Code == GetBlockBodiesMsg:
// Decode the retrieval message
msgStream := rlp.NewStream(msg.Payload, uint64(msg.Size))
if _, err := msgStream.List(); err != nil {
@@ -520,7 +475,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
return p.SendBlockBodiesRLP(bodies)
- case p.version >= eth62 && msg.Code == BlockBodiesMsg:
+ case msg.Code == BlockBodiesMsg:
// A batch of block bodies arrived to one of our previous requests
var request blockBodiesData
if err := msg.Decode(&request); err != nil {
@@ -661,7 +616,6 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
// Mark the hashes as present at the remote node
for _, block := range announces {
p.MarkBlock(block.Hash)
- p.SetHead(block.Hash)
}
// Schedule all the unknown hashes for retrieval
unknown := make([]announce, 0, len(announces))
@@ -671,11 +625,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
}
for _, block := range unknown {
- if p.version < eth62 {
- pm.fetcher.Notify(p.id, block.Hash, block.Number, time.Now(), p.RequestBlocks, nil, nil)
- } else {
- pm.fetcher.Notify(p.id, block.Hash, block.Number, time.Now(), nil, p.RequestOneHeader, p.RequestBodies)
- }
+ pm.fetcher.Notify(p.id, block.Hash, block.Number, time.Now(), p.RequestOneHeader, p.RequestBodies)
}
case msg.Code == NewBlockMsg:
@@ -684,24 +634,28 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
if err := msg.Decode(&request); err != nil {
return errResp(ErrDecode, "%v: %v", msg, err)
}
- if err := request.Block.ValidateFields(); err != nil {
- return errResp(ErrDecode, "block validation %v: %v", msg, err)
- }
request.Block.ReceivedAt = msg.ReceivedAt
request.Block.ReceivedFrom = p
// Mark the peer as owning the block and schedule it for import
p.MarkBlock(request.Block.Hash())
- p.SetHead(request.Block.Hash())
-
pm.fetcher.Enqueue(p.id, request.Block)
- // Update the peers total difficulty if needed, schedule a download if gapped
- if request.TD.Cmp(p.Td()) > 0 {
- p.SetTd(request.TD)
+ // Assuming the block is importable by the peer, but possibly not yet done so,
+ // calculate the head hash and TD that the peer truly must have.
+ var (
+ trueHead = request.Block.ParentHash()
+ trueTD = new(big.Int).Sub(request.TD, request.Block.Difficulty())
+ )
+ // Update the peers total difficulty if better than the previous
+ if _, td := p.Head(); trueTD.Cmp(td) > 0 {
+ p.SetHead(trueHead, trueTD)
+
+ // Schedule a sync if above ours. Note, this will not fire a sync for a gap of
+ // a singe block (as the true TD is below the propagated block), however this
+ // scenario should easily be covered by the fetcher.
currentBlock := pm.blockchain.CurrentBlock()
- td := pm.blockchain.GetTd(currentBlock.Hash(), currentBlock.NumberU64())
- if request.TD.Cmp(new(big.Int).Add(td, request.Block.Difficulty())) > 0 {
+ if trueTD.Cmp(pm.blockchain.GetTd(currentBlock.Hash(), currentBlock.NumberU64())) > 0 {
go pm.synchronise(p)
}
}
@@ -723,7 +677,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
}
p.MarkTransaction(tx.Hash())
}
- pm.txpool.AddTransactions(txs)
+ pm.txpool.AddBatch(txs)
default:
return errResp(ErrInvalidMsgCode, "%v", msg.Code)
@@ -757,11 +711,7 @@ func (pm *ProtocolManager) BroadcastBlock(block *types.Block, propagate bool) {
// Otherwise if the block is indeed in out own chain, announce it
if pm.blockchain.HasBlock(hash) {
for _, peer := range peers {
- if peer.version < eth62 {
- peer.SendNewBlockHashes61([]common.Hash{hash})
- } else {
- peer.SendNewBlockHashes([]common.Hash{hash}, []uint64{block.NumberU64()})
- }
+ peer.SendNewBlockHashes([]common.Hash{hash}, []uint64{block.NumberU64()})
}
glog.V(logger.Detail).Infof("announced block %x to %d peers in %v", hash[:4], len(peers), time.Since(block.ReceivedAt))
}
diff --git a/eth/handler_test.go b/eth/handler_test.go
index 8418c28b2..91989cb8f 100644
--- a/eth/handler_test.go
+++ b/eth/handler_test.go
@@ -20,6 +20,7 @@ import (
"math/big"
"math/rand"
"testing"
+ "time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -28,6 +29,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth/downloader"
"github.com/ethereum/go-ethereum/ethdb"
+ "github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/params"
)
@@ -61,160 +63,6 @@ func TestProtocolCompatibility(t *testing.T) {
}
}
-// Tests that hashes can be retrieved from a remote chain by hashes in reverse
-// order.
-func TestGetBlockHashes61(t *testing.T) { testGetBlockHashes(t, 61) }
-
-func testGetBlockHashes(t *testing.T, protocol int) {
- pm := newTestProtocolManagerMust(t, false, downloader.MaxHashFetch+15, nil, nil)
- peer, _ := newTestPeer("peer", protocol, pm, true)
- defer peer.close()
-
- // Create a batch of tests for various scenarios
- limit := downloader.MaxHashFetch
- tests := []struct {
- origin common.Hash
- number int
- result int
- }{
- {common.Hash{}, 1, 0}, // Make sure non existent hashes don't return results
- {pm.blockchain.Genesis().Hash(), 1, 0}, // There are no hashes to retrieve up from the genesis
- {pm.blockchain.GetBlockByNumber(5).Hash(), 5, 5}, // All the hashes including the genesis requested
- {pm.blockchain.GetBlockByNumber(5).Hash(), 10, 5}, // More hashes than available till the genesis requested
- {pm.blockchain.GetBlockByNumber(100).Hash(), 10, 10}, // All hashes available from the middle of the chain
- {pm.blockchain.CurrentBlock().Hash(), 10, 10}, // All hashes available from the head of the chain
- {pm.blockchain.CurrentBlock().Hash(), limit, limit}, // Request the maximum allowed hash count
- {pm.blockchain.CurrentBlock().Hash(), limit + 1, limit}, // Request more than the maximum allowed hash count
- }
- // Run each of the tests and verify the results against the chain
- for i, tt := range tests {
- // Assemble the hash response we would like to receive
- resp := make([]common.Hash, tt.result)
- if len(resp) > 0 {
- from := pm.blockchain.GetBlockByHash(tt.origin).NumberU64() - 1
- for j := 0; j < len(resp); j++ {
- resp[j] = pm.blockchain.GetBlockByNumber(uint64(int(from) - j)).Hash()
- }
- }
- // Send the hash request and verify the response
- p2p.Send(peer.app, 0x03, getBlockHashesData{tt.origin, uint64(tt.number)})
- if err := p2p.ExpectMsg(peer.app, 0x04, resp); err != nil {
- t.Errorf("test %d: block hashes mismatch: %v", i, err)
- }
- }
-}
-
-// Tests that hashes can be retrieved from a remote chain by numbers in forward
-// order.
-func TestGetBlockHashesFromNumber61(t *testing.T) { testGetBlockHashesFromNumber(t, 61) }
-
-func testGetBlockHashesFromNumber(t *testing.T, protocol int) {
- pm := newTestProtocolManagerMust(t, false, downloader.MaxHashFetch+15, nil, nil)
- peer, _ := newTestPeer("peer", protocol, pm, true)
- defer peer.close()
-
- // Create a batch of tests for various scenarios
- limit := downloader.MaxHashFetch
- tests := []struct {
- origin uint64
- number int
- result int
- }{
- {pm.blockchain.CurrentBlock().NumberU64() + 1, 1, 0}, // Out of bounds requests should return empty
- {pm.blockchain.CurrentBlock().NumberU64(), 1, 1}, // Make sure the head hash can be retrieved
- {pm.blockchain.CurrentBlock().NumberU64() - 4, 5, 5}, // All hashes, including the head hash requested
- {pm.blockchain.CurrentBlock().NumberU64() - 4, 10, 5}, // More hashes requested than available till the head
- {pm.blockchain.CurrentBlock().NumberU64() - 100, 10, 10}, // All hashes available from the middle of the chain
- {0, 10, 10}, // All hashes available from the root of the chain
- {0, limit, limit}, // Request the maximum allowed hash count
- {0, limit + 1, limit}, // Request more than the maximum allowed hash count
- {0, 1, 1}, // Make sure the genesis hash can be retrieved
- }
- // Run each of the tests and verify the results against the chain
- for i, tt := range tests {
- // Assemble the hash response we would like to receive
- resp := make([]common.Hash, tt.result)
- for j := 0; j < len(resp); j++ {
- resp[j] = pm.blockchain.GetBlockByNumber(tt.origin + uint64(j)).Hash()
- }
- // Send the hash request and verify the response
- p2p.Send(peer.app, 0x08, getBlockHashesFromNumberData{tt.origin, uint64(tt.number)})
- if err := p2p.ExpectMsg(peer.app, 0x04, resp); err != nil {
- t.Errorf("test %d: block hashes mismatch: %v", i, err)
- }
- }
-}
-
-// Tests that blocks can be retrieved from a remote chain based on their hashes.
-func TestGetBlocks61(t *testing.T) { testGetBlocks(t, 61) }
-
-func testGetBlocks(t *testing.T, protocol int) {
- pm := newTestProtocolManagerMust(t, false, downloader.MaxHashFetch+15, nil, nil)
- peer, _ := newTestPeer("peer", protocol, pm, true)
- defer peer.close()
-
- // Create a batch of tests for various scenarios
- limit := downloader.MaxBlockFetch
- tests := []struct {
- random int // Number of blocks to fetch randomly from the chain
- explicit []common.Hash // Explicitly requested blocks
- available []bool // Availability of explicitly requested blocks
- expected int // Total number of existing blocks to expect
- }{
- {1, nil, nil, 1}, // A single random block should be retrievable
- {10, nil, nil, 10}, // Multiple random blocks should be retrievable
- {limit, nil, nil, limit}, // The maximum possible blocks should be retrievable
- {limit + 1, nil, nil, limit}, // No more than the possible block count should be returned
- {0, []common.Hash{pm.blockchain.Genesis().Hash()}, []bool{true}, 1}, // The genesis block should be retrievable
- {0, []common.Hash{pm.blockchain.CurrentBlock().Hash()}, []bool{true}, 1}, // The chains head block should be retrievable
- {0, []common.Hash{common.Hash{}}, []bool{false}, 0}, // A non existent block should not be returned
-
- // Existing and non-existing blocks interleaved should not cause problems
- {0, []common.Hash{
- common.Hash{},
- pm.blockchain.GetBlockByNumber(1).Hash(),
- common.Hash{},
- pm.blockchain.GetBlockByNumber(10).Hash(),
- common.Hash{},
- pm.blockchain.GetBlockByNumber(100).Hash(),
- common.Hash{},
- }, []bool{false, true, false, true, false, true, false}, 3},
- }
- // Run each of the tests and verify the results against the chain
- for i, tt := range tests {
- // Collect the hashes to request, and the response to expect
- hashes, seen := []common.Hash{}, make(map[int64]bool)
- blocks := []*types.Block{}
-
- for j := 0; j < tt.random; j++ {
- for {
- num := rand.Int63n(int64(pm.blockchain.CurrentBlock().NumberU64()))
- if !seen[num] {
- seen[num] = true
-
- block := pm.blockchain.GetBlockByNumber(uint64(num))
- hashes = append(hashes, block.Hash())
- if len(blocks) < tt.expected {
- blocks = append(blocks, block)
- }
- break
- }
- }
- }
- for j, hash := range tt.explicit {
- hashes = append(hashes, hash)
- if tt.available[j] && len(blocks) < tt.expected {
- blocks = append(blocks, pm.blockchain.GetBlockByHash(hash))
- }
- }
- // Send the hash request and verify the response
- p2p.Send(peer.app, 0x05, hashes)
- if err := p2p.ExpectMsg(peer.app, 0x06, blocks); err != nil {
- t.Errorf("test %d: blocks mismatch: %v", i, err)
- }
- }
-}
-
// Tests that block headers can be retrieved from a remote chain based on user queries.
func TestGetBlockHeaders62(t *testing.T) { testGetBlockHeaders(t, 62) }
func TestGetBlockHeaders63(t *testing.T) { testGetBlockHeaders(t, 63) }
@@ -580,3 +428,75 @@ func testGetReceipt(t *testing.T, protocol int) {
t.Errorf("receipts mismatch: %v", err)
}
}
+
+// Tests that post eth protocol handshake, DAO fork-enabled clients also execute
+// a DAO "challenge" verifying each others' DAO fork headers to ensure they're on
+// compatible chains.
+func TestDAOChallengeNoVsNo(t *testing.T) { testDAOChallenge(t, false, false, false) }
+func TestDAOChallengeNoVsPro(t *testing.T) { testDAOChallenge(t, false, true, false) }
+func TestDAOChallengeProVsNo(t *testing.T) { testDAOChallenge(t, true, false, false) }
+func TestDAOChallengeProVsPro(t *testing.T) { testDAOChallenge(t, true, true, false) }
+func TestDAOChallengeNoVsTimeout(t *testing.T) { testDAOChallenge(t, false, false, true) }
+func TestDAOChallengeProVsTimeout(t *testing.T) { testDAOChallenge(t, true, true, true) }
+
+func testDAOChallenge(t *testing.T, localForked, remoteForked bool, timeout bool) {
+ // Reduce the DAO handshake challenge timeout
+ if timeout {
+ defer func(old time.Duration) { daoChallengeTimeout = old }(daoChallengeTimeout)
+ daoChallengeTimeout = 500 * time.Millisecond
+ }
+ // Create a DAO aware protocol manager
+ var (
+ evmux = new(event.TypeMux)
+ pow = new(core.FakePow)
+ db, _ = ethdb.NewMemDatabase()
+ genesis = core.WriteGenesisBlockForTesting(db)
+ config = &core.ChainConfig{DAOForkBlock: big.NewInt(1), DAOForkSupport: localForked}
+ blockchain, _ = core.NewBlockChain(db, config, pow, evmux)
+ )
+ pm, err := NewProtocolManager(config, false, NetworkId, evmux, new(testTxPool), pow, blockchain, db)
+ if err != nil {
+ t.Fatalf("failed to start test protocol manager: %v", err)
+ }
+ pm.Start()
+ defer pm.Stop()
+
+ // Connect a new peer and check that we receive the DAO challenge
+ peer, _ := newTestPeer("peer", eth63, pm, true)
+ defer peer.close()
+
+ challenge := &getBlockHeadersData{
+ Origin: hashOrNumber{Number: config.DAOForkBlock.Uint64()},
+ Amount: 1,
+ Skip: 0,
+ Reverse: false,
+ }
+ if err := p2p.ExpectMsg(peer.app, GetBlockHeadersMsg, challenge); err != nil {
+ t.Fatalf("challenge mismatch: %v", err)
+ }
+ // Create a block to reply to the challenge if no timeout is simualted
+ if !timeout {
+ blocks, _ := core.GenerateChain(nil, genesis, db, 1, func(i int, block *core.BlockGen) {
+ if remoteForked {
+ block.SetExtra(params.DAOForkBlockExtra)
+ }
+ })
+ if err := p2p.Send(peer.app, BlockHeadersMsg, []*types.Header{blocks[0].Header()}); err != nil {
+ t.Fatalf("failed to answer challenge: %v", err)
+ }
+ time.Sleep(100 * time.Millisecond) // Sleep to avoid the verification racing with the drops
+ } else {
+ // Otherwise wait until the test timeout passes
+ time.Sleep(daoChallengeTimeout + 500*time.Millisecond)
+ }
+ // Verify that depending on fork side, the remote peer is maintained or dropped
+ if localForked == remoteForked && !timeout {
+ if peers := pm.peers.Len(); peers != 1 {
+ t.Fatalf("peer count mismatch: have %d, want %d", peers, 1)
+ }
+ } else {
+ if peers := pm.peers.Len(); peers != 0 {
+ t.Fatalf("peer count mismatch: have %d, want %d", peers, 0)
+ }
+ }
+}
diff --git a/eth/helper_test.go b/eth/helper_test.go
index dacb1593f..732fe89ee 100644
--- a/eth/helper_test.go
+++ b/eth/helper_test.go
@@ -23,6 +23,7 @@ import (
"crypto/ecdsa"
"crypto/rand"
"math/big"
+ "sort"
"sync"
"testing"
@@ -56,7 +57,7 @@ func newTestProtocolManager(fastSync bool, blocks int, generator func(int, *core
chainConfig = &core.ChainConfig{HomesteadBlock: big.NewInt(0)} // homestead set to 0 because of chain maker
blockchain, _ = core.NewBlockChain(db, chainConfig, pow, evmux)
)
- chain, _ := core.GenerateChain(genesis, db, blocks, generator)
+ chain, _ := core.GenerateChain(nil, genesis, db, blocks, generator)
if _, err := blockchain.InsertChain(chain); err != nil {
panic(err)
}
@@ -89,9 +90,9 @@ type testTxPool struct {
lock sync.RWMutex // Protects the transaction pool
}
-// AddTransactions appends a batch of transactions to the pool, and notifies any
+// AddBatch appends a batch of transactions to the pool, and notifies any
// listeners if the addition channel is non nil
-func (p *testTxPool) AddTransactions(txs []*types.Transaction) {
+func (p *testTxPool) AddBatch(txs []*types.Transaction) {
p.lock.Lock()
defer p.lock.Unlock()
@@ -101,15 +102,20 @@ func (p *testTxPool) AddTransactions(txs []*types.Transaction) {
}
}
-// GetTransactions returns all the transactions known to the pool
-func (p *testTxPool) GetTransactions() types.Transactions {
+// Pending returns all the transactions known to the pool
+func (p *testTxPool) Pending() map[common.Address]types.Transactions {
p.lock.RLock()
defer p.lock.RUnlock()
- txs := make([]*types.Transaction, len(p.pool))
- copy(txs, p.pool)
-
- return txs
+ batches := make(map[common.Address]types.Transactions)
+ for _, tx := range p.pool {
+ from, _ := tx.From()
+ batches[from] = append(batches[from], tx)
+ }
+ for _, batch := range batches {
+ sort.Sort(types.TxByNonce(batch))
+ }
+ return batches
}
// newTestTransaction create a new dummy transaction.
diff --git a/eth/metrics.go b/eth/metrics.go
index e1a89d3a9..5fa2597d4 100644
--- a/eth/metrics.go
+++ b/eth/metrics.go
@@ -34,14 +34,6 @@ var (
propBlockInTrafficMeter = metrics.NewMeter("eth/prop/blocks/in/traffic")
propBlockOutPacketsMeter = metrics.NewMeter("eth/prop/blocks/out/packets")
propBlockOutTrafficMeter = metrics.NewMeter("eth/prop/blocks/out/traffic")
- reqHashInPacketsMeter = metrics.NewMeter("eth/req/hashes/in/packets")
- reqHashInTrafficMeter = metrics.NewMeter("eth/req/hashes/in/traffic")
- reqHashOutPacketsMeter = metrics.NewMeter("eth/req/hashes/out/packets")
- reqHashOutTrafficMeter = metrics.NewMeter("eth/req/hashes/out/traffic")
- reqBlockInPacketsMeter = metrics.NewMeter("eth/req/blocks/in/packets")
- reqBlockInTrafficMeter = metrics.NewMeter("eth/req/blocks/in/traffic")
- reqBlockOutPacketsMeter = metrics.NewMeter("eth/req/blocks/out/packets")
- reqBlockOutTrafficMeter = metrics.NewMeter("eth/req/blocks/out/traffic")
reqHeaderInPacketsMeter = metrics.NewMeter("eth/req/headers/in/packets")
reqHeaderInTrafficMeter = metrics.NewMeter("eth/req/headers/in/traffic")
reqHeaderOutPacketsMeter = metrics.NewMeter("eth/req/headers/out/packets")
@@ -95,14 +87,9 @@ func (rw *meteredMsgReadWriter) ReadMsg() (p2p.Msg, error) {
// Account for the data traffic
packets, traffic := miscInPacketsMeter, miscInTrafficMeter
switch {
- case rw.version < eth62 && msg.Code == BlockHashesMsg:
- packets, traffic = reqHashInPacketsMeter, reqHashInTrafficMeter
- case rw.version < eth62 && msg.Code == BlocksMsg:
- packets, traffic = reqBlockInPacketsMeter, reqBlockInTrafficMeter
-
- case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
+ case msg.Code == BlockHeadersMsg:
packets, traffic = reqHeaderInPacketsMeter, reqHeaderInTrafficMeter
- case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
+ case msg.Code == BlockBodiesMsg:
packets, traffic = reqBodyInPacketsMeter, reqBodyInTrafficMeter
case rw.version >= eth63 && msg.Code == NodeDataMsg:
@@ -127,14 +114,9 @@ func (rw *meteredMsgReadWriter) WriteMsg(msg p2p.Msg) error {
// Account for the data traffic
packets, traffic := miscOutPacketsMeter, miscOutTrafficMeter
switch {
- case rw.version < eth62 && msg.Code == BlockHashesMsg:
- packets, traffic = reqHashOutPacketsMeter, reqHashOutTrafficMeter
- case rw.version < eth62 && msg.Code == BlocksMsg:
- packets, traffic = reqBlockOutPacketsMeter, reqBlockOutTrafficMeter
-
- case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
+ case msg.Code == BlockHeadersMsg:
packets, traffic = reqHeaderOutPacketsMeter, reqHeaderOutTrafficMeter
- case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
+ case msg.Code == BlockBodiesMsg:
packets, traffic = reqBodyOutPacketsMeter, reqBodyOutTrafficMeter
case rw.version >= eth63 && msg.Code == NodeDataMsg:
diff --git a/eth/peer.go b/eth/peer.go
index 8eb41b0f9..aa85631ea 100644
--- a/eth/peer.go
+++ b/eth/peer.go
@@ -25,7 +25,6 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/eth/downloader"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/p2p"
@@ -59,10 +58,12 @@ type peer struct {
*p2p.Peer
rw p2p.MsgReadWriter
- version int // Protocol version negotiated
- head common.Hash
- td *big.Int
- lock sync.RWMutex
+ version int // Protocol version negotiated
+ forkDrop *time.Timer // Timed connection dropper if forks aren't validated in time
+
+ head common.Hash
+ td *big.Int
+ lock sync.RWMutex
knownTxs *set.Set // Set of transaction hashes known to be known by this peer
knownBlocks *set.Set // Set of block hashes known to be known by this peer
@@ -83,43 +84,31 @@ func newPeer(version int, p *p2p.Peer, rw p2p.MsgReadWriter) *peer {
// Info gathers and returns a collection of metadata known about a peer.
func (p *peer) Info() *PeerInfo {
+ hash, td := p.Head()
+
return &PeerInfo{
Version: p.version,
- Difficulty: p.Td(),
- Head: fmt.Sprintf("%x", p.Head()),
+ Difficulty: td,
+ Head: hash.Hex(),
}
}
-// Head retrieves a copy of the current head (most recent) hash of the peer.
-func (p *peer) Head() (hash common.Hash) {
+// Head retrieves a copy of the current head hash and total difficulty of the
+// peer.
+func (p *peer) Head() (hash common.Hash, td *big.Int) {
p.lock.RLock()
defer p.lock.RUnlock()
copy(hash[:], p.head[:])
- return hash
+ return hash, new(big.Int).Set(p.td)
}
-// SetHead updates the head (most recent) hash of the peer.
-func (p *peer) SetHead(hash common.Hash) {
+// SetHead updates the head hash and total difficulty of the peer.
+func (p *peer) SetHead(hash common.Hash, td *big.Int) {
p.lock.Lock()
defer p.lock.Unlock()
copy(p.head[:], hash[:])
-}
-
-// Td retrieves the current total difficulty of a peer.
-func (p *peer) Td() *big.Int {
- p.lock.RLock()
- defer p.lock.RUnlock()
-
- return new(big.Int).Set(p.td)
-}
-
-// SetTd updates the current total difficulty of a peer.
-func (p *peer) SetTd(td *big.Int) {
- p.lock.Lock()
- defer p.lock.Unlock()
-
p.td.Set(td)
}
@@ -152,25 +141,6 @@ func (p *peer) SendTransactions(txs types.Transactions) error {
return p2p.Send(p.rw, TxMsg, txs)
}
-// SendBlockHashes sends a batch of known hashes to the remote peer.
-func (p *peer) SendBlockHashes(hashes []common.Hash) error {
- return p2p.Send(p.rw, BlockHashesMsg, hashes)
-}
-
-// SendBlocks sends a batch of blocks to the remote peer.
-func (p *peer) SendBlocks(blocks []*types.Block) error {
- return p2p.Send(p.rw, BlocksMsg, blocks)
-}
-
-// SendNewBlockHashes61 announces the availability of a number of blocks through
-// a hash notification.
-func (p *peer) SendNewBlockHashes61(hashes []common.Hash) error {
- for _, hash := range hashes {
- p.knownBlocks.Add(hash)
- }
- return p2p.Send(p.rw, NewBlockHashesMsg, hashes)
-}
-
// SendNewBlockHashes announces the availability of a number of blocks through
// a hash notification.
func (p *peer) SendNewBlockHashes(hashes []common.Hash, numbers []uint64) error {
@@ -219,26 +189,6 @@ func (p *peer) SendReceiptsRLP(receipts []rlp.RawValue) error {
return p2p.Send(p.rw, ReceiptsMsg, receipts)
}
-// RequestHashes fetches a batch of hashes from a peer, starting at from, going
-// towards the genesis block.
-func (p *peer) RequestHashes(from common.Hash) error {
- glog.V(logger.Debug).Infof("%v fetching hashes (%d) from %x...", p, downloader.MaxHashFetch, from[:4])
- return p2p.Send(p.rw, GetBlockHashesMsg, getBlockHashesData{from, uint64(downloader.MaxHashFetch)})
-}
-
-// RequestHashesFromNumber fetches a batch of hashes from a peer, starting at
-// the requested block number, going upwards towards the genesis block.
-func (p *peer) RequestHashesFromNumber(from uint64, count int) error {
- glog.V(logger.Debug).Infof("%v fetching hashes (%d) from #%d...", p, count, from)
- return p2p.Send(p.rw, GetBlockHashesFromNumberMsg, getBlockHashesFromNumberData{from, uint64(count)})
-}
-
-// RequestBlocks fetches a batch of blocks corresponding to the specified hashes.
-func (p *peer) RequestBlocks(hashes []common.Hash) error {
- glog.V(logger.Debug).Infof("%v fetching %v blocks", p, len(hashes))
- return p2p.Send(p.rw, GetBlocksMsg, hashes)
-}
-
// RequestHeaders is a wrapper around the header query functions to fetch a
// single header. It is used solely by the fetcher.
func (p *peer) RequestOneHeader(hash common.Hash) error {
@@ -449,7 +399,7 @@ func (ps *peerSet) BestPeer() *peer {
bestTd *big.Int
)
for _, p := range ps.peers {
- if td := p.Td(); bestPeer == nil || td.Cmp(bestTd) > 0 {
+ if _, td := p.Head(); bestPeer == nil || td.Cmp(bestTd) > 0 {
bestPeer, bestTd = p, td
}
}
diff --git a/eth/protocol.go b/eth/protocol.go
index 7de0cb020..3f65c204b 100644
--- a/eth/protocol.go
+++ b/eth/protocol.go
@@ -28,7 +28,6 @@ import (
// Constants to match up protocol versions and messages
const (
- eth61 = 61
eth62 = 62
eth63 = 63
)
@@ -49,26 +48,15 @@ const (
// eth protocol message codes
const (
- // Protocol messages belonging to eth/61
- StatusMsg = 0x00
- NewBlockHashesMsg = 0x01
- TxMsg = 0x02
- GetBlockHashesMsg = 0x03
- BlockHashesMsg = 0x04
- GetBlocksMsg = 0x05
- BlocksMsg = 0x06
- NewBlockMsg = 0x07
- GetBlockHashesFromNumberMsg = 0x08
-
- // Protocol messages belonging to eth/62 (new protocol from scratch)
- // StatusMsg = 0x00 (uncomment after eth/61 deprecation)
- // NewBlockHashesMsg = 0x01 (uncomment after eth/61 deprecation)
- // TxMsg = 0x02 (uncomment after eth/61 deprecation)
+ // Protocol messages belonging to eth/62
+ StatusMsg = 0x00
+ NewBlockHashesMsg = 0x01
+ TxMsg = 0x02
GetBlockHeadersMsg = 0x03
BlockHeadersMsg = 0x04
GetBlockBodiesMsg = 0x05
BlockBodiesMsg = 0x06
- // NewBlockMsg = 0x07 (uncomment after eth/61 deprecation)
+ NewBlockMsg = 0x07
// Protocol messages belonging to eth/63
GetNodeDataMsg = 0x0d
@@ -109,18 +97,12 @@ var errorToString = map[int]string{
}
type txPool interface {
- // AddTransactions should add the given transactions to the pool.
- AddTransactions([]*types.Transaction)
+ // AddBatch should add the given transactions to the pool.
+ AddBatch([]*types.Transaction)
- // GetTransactions should return pending transactions.
+ // Pending should return pending transactions.
// The slice should be modifiable by the caller.
- GetTransactions() types.Transactions
-}
-
-type chainManager interface {
- GetBlockHashesFromHash(hash common.Hash, amount uint64) (hashes []common.Hash)
- GetBlock(hash common.Hash) (block *types.Block)
- Status() (td *big.Int, currentBlock common.Hash, genesisBlock common.Hash)
+ Pending() map[common.Address]types.Transactions
}
// statusData is the network packet for the status message.
@@ -138,19 +120,6 @@ type newBlockHashesData []struct {
Number uint64 // Number of one particular block being announced
}
-// getBlockHashesData is the network packet for the hash based hash retrieval.
-type getBlockHashesData struct {
- Hash common.Hash
- Amount uint64
-}
-
-// getBlockHashesFromNumberData is the network packet for the number based hash
-// retrieval.
-type getBlockHashesFromNumberData struct {
- Number uint64
- Amount uint64
-}
-
// getBlockHeadersData represents a block header query.
type getBlockHeadersData struct {
Origin hashOrNumber // Block from which to retrieve headers
@@ -209,8 +178,3 @@ type blockBody struct {
// blockBodiesData is the network packet for block content distribution.
type blockBodiesData []*blockBody
-
-// nodeDataData is the network response packet for a node data retrieval.
-type nodeDataData []struct {
- Value []byte
-}
diff --git a/eth/protocol_test.go b/eth/protocol_test.go
index f860d0a35..0aac19f43 100644
--- a/eth/protocol_test.go
+++ b/eth/protocol_test.go
@@ -37,7 +37,6 @@ func init() {
var testAccount, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
// Tests that handshake failures are detected and reported correctly.
-func TestStatusMsgErrors61(t *testing.T) { testStatusMsgErrors(t, 61) }
func TestStatusMsgErrors62(t *testing.T) { testStatusMsgErrors(t, 62) }
func TestStatusMsgErrors63(t *testing.T) { testStatusMsgErrors(t, 63) }
@@ -90,7 +89,6 @@ func testStatusMsgErrors(t *testing.T, protocol int) {
}
// This test checks that received transactions are added to the local pool.
-func TestRecvTransactions61(t *testing.T) { testRecvTransactions(t, 61) }
func TestRecvTransactions62(t *testing.T) { testRecvTransactions(t, 62) }
func TestRecvTransactions63(t *testing.T) { testRecvTransactions(t, 63) }
@@ -119,7 +117,6 @@ func testRecvTransactions(t *testing.T, protocol int) {
}
// This test checks that pending transactions are sent.
-func TestSendTransactions61(t *testing.T) { testSendTransactions(t, 61) }
func TestSendTransactions62(t *testing.T) { testSendTransactions(t, 62) }
func TestSendTransactions63(t *testing.T) { testSendTransactions(t, 63) }
@@ -133,7 +130,7 @@ func testSendTransactions(t *testing.T, protocol int) {
for nonce := range alltxs {
alltxs[nonce] = newTestTransaction(testAccount, uint64(nonce), txsize)
}
- pm.txpool.AddTransactions(alltxs)
+ pm.txpool.AddBatch(alltxs)
// Connect several peers. They should all receive the pending transactions.
var wg sync.WaitGroup
diff --git a/eth/sync.go b/eth/sync.go
index 23cf18c8d..6584bb1e2 100644
--- a/eth/sync.go
+++ b/eth/sync.go
@@ -45,7 +45,10 @@ type txsync struct {
// syncTransactions starts sending all currently pending transactions to the given peer.
func (pm *ProtocolManager) syncTransactions(p *peer) {
- txs := pm.txpool.GetTransactions()
+ var txs types.Transactions
+ for _, batch := range pm.txpool.Pending() {
+ txs = append(txs, batch...)
+ }
if len(txs) == 0 {
return
}
@@ -161,10 +164,12 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
if peer == nil {
return
}
- // Make sure the peer's TD is higher than our own. If not drop.
+ // Make sure the peer's TD is higher than our own
currentBlock := pm.blockchain.CurrentBlock()
td := pm.blockchain.GetTd(currentBlock.Hash(), currentBlock.NumberU64())
- if peer.Td().Cmp(td) <= 0 {
+
+ pHead, pTd := peer.Head()
+ if pTd.Cmp(td) <= 0 {
return
}
// Otherwise try to sync with the downloader
@@ -172,7 +177,7 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
if atomic.LoadUint32(&pm.fastSync) == 1 {
mode = downloader.FastSync
}
- if err := pm.downloader.Synchronise(peer.id, peer.Head(), peer.Td(), mode); err != nil {
+ if err := pm.downloader.Synchronise(peer.id, pHead, pTd, mode); err != nil {
return
}
atomic.StoreUint32(&pm.synced, 1) // Mark initial sync done
diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go
new file mode 100644
index 000000000..ffa8228cc
--- /dev/null
+++ b/ethclient/ethclient.go
@@ -0,0 +1,415 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// Package ethclient provides a client for the Ethereum RPC API.
+package ethclient
+
+import (
+ "encoding/json"
+ "fmt"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/rlp"
+ "github.com/ethereum/go-ethereum/rpc"
+ "golang.org/x/net/context"
+)
+
+// Client defines typed wrappers for the Ethereum RPC API.
+type Client struct {
+ c *rpc.Client
+}
+
+// Dial connects a client to the given URL.
+func Dial(rawurl string) (*Client, error) {
+ c, err := rpc.Dial(rawurl)
+ if err != nil {
+ return nil, err
+ }
+ return NewClient(c), nil
+}
+
+// NewClient creates a client that uses the given RPC client.
+func NewClient(c *rpc.Client) *Client {
+ return &Client{c}
+}
+
+// Blockchain Access
+
+// BlockByHash returns the given full block.
+//
+// Note that loading full blocks requires two requests. Use HeaderByHash
+// if you don't need all transactions or uncle headers.
+func (ec *Client) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) {
+ return ec.getBlock(ctx, "eth_getBlockByHash", hash, true)
+}
+
+// BlockByNumber returns a block from the current canonical chain. If number is nil, the
+// latest known block is returned.
+//
+// Note that loading full blocks requires two requests. Use HeaderByNumber
+// if you don't need all transactions or uncle headers.
+func (ec *Client) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) {
+ return ec.getBlock(ctx, "eth_getBlockByNumber", toBlockNumArg(number), true)
+}
+
+type rpcBlock struct {
+ Hash common.Hash `json:"hash"`
+ Transactions []*types.Transaction `json:"transactions"`
+ UncleHashes []common.Hash `json:"uncles"`
+}
+
+func (ec *Client) getBlock(ctx context.Context, method string, args ...interface{}) (*types.Block, error) {
+ var raw json.RawMessage
+ err := ec.c.CallContext(ctx, &raw, method, args...)
+ if err != nil {
+ return nil, err
+ }
+ // Decode header and transactions.
+ var head *types.Header
+ var body rpcBlock
+ if err := json.Unmarshal(raw, &head); err != nil {
+ return nil, err
+ }
+ if err := json.Unmarshal(raw, &body); err != nil {
+ return nil, err
+ }
+ // Quick-verify transaction and uncle lists. This mostly helps with debugging the server.
+ if head.UncleHash == types.EmptyUncleHash && len(body.UncleHashes) > 0 {
+ return nil, fmt.Errorf("server returned non-empty uncle list but block header indicates no uncles")
+ }
+ if head.UncleHash != types.EmptyUncleHash && len(body.UncleHashes) == 0 {
+ return nil, fmt.Errorf("server returned empty uncle list but block header indicates uncles")
+ }
+ if head.TxHash == types.EmptyRootHash && len(body.Transactions) > 0 {
+ return nil, fmt.Errorf("server returned non-empty transaction list but block header indicates no transactions")
+ }
+ if head.TxHash != types.EmptyRootHash && len(body.Transactions) == 0 {
+ return nil, fmt.Errorf("server returned empty transaction list but block header indicates transactions")
+ }
+ // Load uncles because they are not included in the block response.
+ var uncles []*types.Header
+ if len(body.UncleHashes) > 0 {
+ uncles = make([]*types.Header, len(body.UncleHashes))
+ reqs := make([]rpc.BatchElem, len(body.UncleHashes))
+ for i := range reqs {
+ reqs[i] = rpc.BatchElem{
+ Method: "eth_getUncleByBlockHashAndIndex",
+ Args: []interface{}{body.Hash, fmt.Sprintf("%#x", i)},
+ Result: &uncles[i],
+ }
+ }
+ if err := ec.c.BatchCallContext(ctx, reqs); err != nil {
+ return nil, err
+ }
+ for i := range reqs {
+ if reqs[i].Error != nil {
+ return nil, reqs[i].Error
+ }
+ }
+ }
+ return types.NewBlockWithHeader(head).WithBody(body.Transactions, uncles), nil
+}
+
+// HeaderByHash returns the block header with the given hash.
+func (ec *Client) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) {
+ var head *types.Header
+ err := ec.c.CallContext(ctx, &head, "eth_getBlockByHash", hash, false)
+ return head, err
+}
+
+// HeaderByNumber returns a block header from the current canonical chain. If number is
+// nil, the latest known header is returned.
+func (ec *Client) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) {
+ var head *types.Header
+ err := ec.c.CallContext(ctx, &head, "eth_getBlockByNumber", toBlockNumArg(number), false)
+ return head, err
+}
+
+// TransactionByHash returns the transaction with the given hash.
+func (ec *Client) TransactionByHash(ctx context.Context, hash common.Hash) (*types.Transaction, error) {
+ var tx *types.Transaction
+ err := ec.c.CallContext(ctx, &tx, "eth_getTransactionByHash", hash, false)
+ if err == nil {
+ if _, r, _ := tx.SignatureValues(); r == nil {
+ return nil, fmt.Errorf("server returned transaction without signature")
+ }
+ }
+ return tx, err
+}
+
+// TransactionCount returns the total number of transactions in the given block.
+func (ec *Client) TransactionCount(ctx context.Context, blockHash common.Hash) (uint, error) {
+ var num rpc.HexNumber
+ err := ec.c.CallContext(ctx, &num, "eth_getBlockTransactionCountByHash", blockHash)
+ return num.Uint(), err
+}
+
+// TransactionInBlock returns a single transaction at index in the given block.
+func (ec *Client) TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (*types.Transaction, error) {
+ var tx *types.Transaction
+ err := ec.c.CallContext(ctx, &tx, "eth_getTransactionByBlockHashAndIndex", blockHash, index)
+ if err == nil {
+ if _, r, _ := tx.SignatureValues(); r == nil {
+ return nil, fmt.Errorf("server returned transaction without signature")
+ }
+ }
+ return tx, err
+}
+
+// TransactionReceipt returns the receipt of a transaction by transaction hash.
+// Note that the receipt is not available for pending transactions.
+func (ec *Client) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) {
+ var r *types.Receipt
+ err := ec.c.CallContext(ctx, &r, "eth_getTransactionReceipt", txHash)
+ if err == nil && r != nil && len(r.PostState) == 0 {
+ return nil, fmt.Errorf("server returned receipt without post state")
+ }
+ return r, err
+}
+
+func toBlockNumArg(number *big.Int) string {
+ if number == nil {
+ return "latest"
+ }
+ return fmt.Sprintf("%#x", number)
+}
+
+type rpcProgress struct {
+ StartingBlock rpc.HexNumber
+ CurrentBlock rpc.HexNumber
+ HighestBlock rpc.HexNumber
+ PulledStates rpc.HexNumber
+ KnownStates rpc.HexNumber
+}
+
+// SyncProgress retrieves the current progress of the sync algorithm. If there's
+// no sync currently running, it returns nil.
+func (ec *Client) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error) {
+ var raw json.RawMessage
+ if err := ec.c.CallContext(ctx, &raw, "eth_syncing"); err != nil {
+ return nil, err
+ }
+ // Handle the possible response types
+ var syncing bool
+ if err := json.Unmarshal(raw, &syncing); err == nil {
+ return nil, nil // Not syncing (always false)
+ }
+ var progress *rpcProgress
+ if err := json.Unmarshal(raw, &progress); err != nil {
+ return nil, err
+ }
+ return &ethereum.SyncProgress{
+ StartingBlock: progress.StartingBlock.Uint64(),
+ CurrentBlock: progress.CurrentBlock.Uint64(),
+ HighestBlock: progress.HighestBlock.Uint64(),
+ PulledStates: progress.PulledStates.Uint64(),
+ KnownStates: progress.KnownStates.Uint64(),
+ }, nil
+}
+
+// SubscribeNewHead subscribes to notifications about the current blockchain head
+// on the given channel.
+func (ec *Client) SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (ethereum.Subscription, error) {
+ return ec.c.EthSubscribe(ctx, ch, "newHeads", map[string]struct{}{})
+}
+
+// State Access
+
+// BalanceAt returns the wei balance of the given account.
+// The block number can be nil, in which case the balance is taken from the latest known block.
+func (ec *Client) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) {
+ var result rpc.HexNumber
+ err := ec.c.CallContext(ctx, &result, "eth_getBalance", account, toBlockNumArg(blockNumber))
+ return (*big.Int)(&result), err
+}
+
+// StorageAt returns the value of key in the contract storage of the given account.
+// The block number can be nil, in which case the value is taken from the latest known block.
+func (ec *Client) StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) {
+ var result rpc.HexBytes
+ err := ec.c.CallContext(ctx, &result, "eth_getStorageAt", account, key, toBlockNumArg(blockNumber))
+ return result, err
+}
+
+// CodeAt returns the contract code of the given account.
+// The block number can be nil, in which case the code is taken from the latest known block.
+func (ec *Client) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error) {
+ var result rpc.HexBytes
+ err := ec.c.CallContext(ctx, &result, "eth_getCode", account, toBlockNumArg(blockNumber))
+ return result, err
+}
+
+// NonceAt returns the account nonce of the given account.
+// The block number can be nil, in which case the nonce is taken from the latest known block.
+func (ec *Client) NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error) {
+ var result rpc.HexNumber
+ err := ec.c.CallContext(ctx, &result, "eth_getTransactionCount", account, toBlockNumArg(blockNumber))
+ return result.Uint64(), err
+}
+
+// Filters
+
+// FilterLogs executes a filter query.
+func (ec *Client) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]vm.Log, error) {
+ var result []vm.Log
+ err := ec.c.CallContext(ctx, &result, "eth_getFilterLogs", toFilterArg(q))
+ return result, err
+}
+
+// SubscribeFilterLogs subscribes to the results of a streaming filter query.
+func (ec *Client) SubscribeFilterLogs(ctx context.Context, q ethereum.FilterQuery, ch chan<- vm.Log) (ethereum.Subscription, error) {
+ return ec.c.EthSubscribe(ctx, ch, "logs", toFilterArg(q))
+}
+
+func toFilterArg(q ethereum.FilterQuery) interface{} {
+ arg := map[string]interface{}{
+ "fromBlock": toBlockNumArg(q.FromBlock),
+ "endBlock": toBlockNumArg(q.ToBlock),
+ "addresses": q.Addresses,
+ "topics": q.Topics,
+ }
+ if q.FromBlock == nil {
+ arg["fromBlock"] = "0x0"
+ }
+ return arg
+}
+
+// Pending State
+
+// PendingBalanceAt returns the wei balance of the given account in the pending state.
+func (ec *Client) PendingBalanceAt(ctx context.Context, account common.Address) (*big.Int, error) {
+ var result rpc.HexNumber
+ err := ec.c.CallContext(ctx, &result, "eth_getBalance", account, "pending")
+ return (*big.Int)(&result), err
+}
+
+// PendingStorageAt returns the value of key in the contract storage of the given account in the pending state.
+func (ec *Client) PendingStorageAt(ctx context.Context, account common.Address, key common.Hash) ([]byte, error) {
+ var result rpc.HexBytes
+ err := ec.c.CallContext(ctx, &result, "eth_getStorageAt", account, key, "pending")
+ return result, err
+}
+
+// PendingCodeAt returns the contract code of the given account in the pending state.
+func (ec *Client) PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error) {
+ var result rpc.HexBytes
+ err := ec.c.CallContext(ctx, &result, "eth_getCode", account, "pending")
+ return result, err
+}
+
+// PendingNonceAt returns the account nonce of the given account in the pending state.
+// This is the nonce that should be used for the next transaction.
+func (ec *Client) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) {
+ var result rpc.HexNumber
+ err := ec.c.CallContext(ctx, &result, "eth_getTransactionCount", account, "pending")
+ return result.Uint64(), err
+}
+
+// PendingTransactionCount returns the total number of transactions in the pending state.
+func (ec *Client) PendingTransactionCount(ctx context.Context) (uint, error) {
+ var num rpc.HexNumber
+ err := ec.c.CallContext(ctx, &num, "eth_getBlockTransactionCountByNumber", "pending")
+ return num.Uint(), err
+}
+
+// TODO: SubscribePendingTransactions (needs server side)
+
+// Contract Calling
+
+// CallContract executes a message call transaction, which is directly executed in the VM
+// of the node, but never mined into the blockchain.
+//
+// blockNumber selects the block height at which the call runs. It can be nil, in which
+// case the code is taken from the latest known block. Note that state from very old
+// blocks might not be available.
+func (ec *Client) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) {
+ var hex string
+ err := ec.c.CallContext(ctx, &hex, "eth_call", toCallArg(msg), toBlockNumArg(blockNumber))
+ if err != nil {
+ return nil, err
+ }
+ return common.FromHex(hex), nil
+}
+
+// PendingCallContract executes a message call transaction using the EVM.
+// The state seen by the contract call is the pending state.
+func (ec *Client) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) ([]byte, error) {
+ var hex string
+ err := ec.c.CallContext(ctx, &hex, "eth_call", toCallArg(msg), "pending")
+ if err != nil {
+ return nil, err
+ }
+ return common.FromHex(hex), nil
+}
+
+// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
+// execution of a transaction.
+func (ec *Client) SuggestGasPrice(ctx context.Context) (*big.Int, error) {
+ var hex rpc.HexNumber
+ if err := ec.c.CallContext(ctx, &hex, "eth_gasPrice"); err != nil {
+ return nil, err
+ }
+ return (*big.Int)(&hex), nil
+}
+
+// EstimateGas tries to estimate the gas needed to execute a specific transaction based on
+// the current pending state of the backend blockchain. There is no guarantee that this is
+// the true gas limit requirement as other transactions may be added or removed by miners,
+// but it should provide a basis for setting a reasonable default.
+func (ec *Client) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (*big.Int, error) {
+ var hex rpc.HexNumber
+ err := ec.c.CallContext(ctx, &hex, "eth_estimateGas", toCallArg(msg))
+ if err != nil {
+ return nil, err
+ }
+ return (*big.Int)(&hex), nil
+}
+
+// SendTransaction injects a signed transaction into the pending pool for execution.
+//
+// If the transaction was a contract creation use the TransactionReceipt method to get the
+// contract address after the transaction has been mined.
+func (ec *Client) SendTransaction(ctx context.Context, tx *types.Transaction) error {
+ data, err := rlp.EncodeToBytes(tx)
+ if err != nil {
+ return err
+ }
+ return ec.c.CallContext(ctx, nil, "eth_sendRawTransaction", common.ToHex(data))
+}
+
+func toCallArg(msg ethereum.CallMsg) interface{} {
+ arg := map[string]interface{}{
+ "from": msg.From,
+ "to": msg.To,
+ }
+ if len(msg.Data) > 0 {
+ arg["data"] = fmt.Sprintf("%#x", msg.Data)
+ }
+ if msg.Value != nil {
+ arg["value"] = fmt.Sprintf("%#x", msg.Value)
+ }
+ if msg.Gas != nil {
+ arg["gas"] = fmt.Sprintf("%#x", msg.Gas)
+ }
+ if msg.GasPrice != nil {
+ arg["gasPrice"] = fmt.Sprintf("%#x", msg.GasPrice)
+ }
+ return arg
+}
diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go
new file mode 100644
index 000000000..0cc11eb5b
--- /dev/null
+++ b/ethclient/ethclient_test.go
@@ -0,0 +1,18 @@
+package ethclient
+
+import "github.com/ethereum/go-ethereum"
+
+// Verify that Client implements the ethereum interfaces.
+var (
+ _ = ethereum.ChainReader(&Client{})
+ _ = ethereum.ChainStateReader(&Client{})
+ _ = ethereum.ChainSyncReader(&Client{})
+ _ = ethereum.ChainHeadEventer(&Client{})
+ _ = ethereum.ContractCaller(&Client{})
+ _ = ethereum.GasEstimator(&Client{})
+ _ = ethereum.GasPricer(&Client{})
+ _ = ethereum.LogFilterer(&Client{})
+ _ = ethereum.PendingStateReader(&Client{})
+ // _ = ethereum.PendingStateEventer(&Client{})
+ _ = ethereum.PendingContractCaller(&Client{})
+)
diff --git a/ethdb/database.go b/ethdb/database.go
index 29da4a197..f93731cfe 100644
--- a/ethdb/database.go
+++ b/ethdb/database.go
@@ -39,14 +39,12 @@ var OpenFileLimit = 64
// cacheRatio specifies how the total allotted cache is distributed between the
// various system databases.
var cacheRatio = map[string]float64{
- "dapp": 0.0,
"chaindata": 1.0,
}
// handleRatio specifies how the total allotted file descriptors is distributed
// between the various system databases.
var handleRatio = map[string]float64{
- "dapp": 0.0,
"chaindata": 1.0,
}
diff --git a/interfaces.go b/interfaces.go
new file mode 100644
index 000000000..aab0e2029
--- /dev/null
+++ b/interfaces.go
@@ -0,0 +1,184 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// Package ethereum defines interfaces for interacting with Ethereum.
+package ethereum
+
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/core/vm"
+ "golang.org/x/net/context"
+)
+
+// TODO: move subscription to package event
+
+// Subscription represents an event subscription where events are
+// delivered on a data channel.
+type Subscription interface {
+ // Unsubscribe cancels the sending of events to the data channel
+ // and closes the error channel.
+ Unsubscribe()
+ // Err returns the subscription error channel. The error channel receives
+ // a value if there is an issue with the subscription (e.g. the network connection
+ // delivering the events has been closed). Only one value will ever be sent.
+ // The error channel is closed by Unsubscribe.
+ Err() <-chan error
+}
+
+// ChainReader provides access to the blockchain. The methods in this interface access raw
+// data from either the canonical chain (when requesting by block number) or any
+// blockchain fork that was previously downloaded and processed by the node. The block
+// number argument can be nil to select the latest canonical block. Reading block headers
+// should be preferred over full blocks whenever possible.
+type ChainReader interface {
+ BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)
+ BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error)
+ HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
+ HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error)
+ TransactionCount(ctx context.Context, blockHash common.Hash) (uint, error)
+ TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (*types.Transaction, error)
+ TransactionByHash(ctx context.Context, txHash common.Hash) (*types.Transaction, error)
+ TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
+}
+
+// ChainStateReader wraps access to the state trie of the canonical blockchain. Note that
+// implementations of the interface may be unable to return state values for old blocks.
+// In many cases, using CallContract can be preferable to reading raw contract storage.
+type ChainStateReader interface {
+ BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error)
+ StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error)
+ CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
+ NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error)
+}
+
+// SyncProgress gives progress indications when the node is synchronising with
+// the Ethereum network.
+type SyncProgress struct {
+ StartingBlock uint64 // Block number where sync began
+ CurrentBlock uint64 // Current block number where sync is at
+ HighestBlock uint64 // Highest alleged block number in the chain
+ PulledStates uint64 // Number of state trie entries already downloaded
+ KnownStates uint64 // Total number os state trie entries known about
+}
+
+// ChainSyncReader wraps access to the node's current sync status. If there's no
+// sync currently running, it returns nil.
+type ChainSyncReader interface {
+ SyncProgress(ctx context.Context) (*SyncProgress, error)
+}
+
+// A ChainHeadEventer returns notifications whenever the canonical head block is updated.
+type ChainHeadEventer interface {
+ SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (Subscription, error)
+}
+
+// CallMsg contains parameters for contract calls.
+type CallMsg struct {
+ From common.Address // the sender of the 'transaction'
+ To *common.Address // the destination contract (nil for contract creation)
+ Gas *big.Int // if nil, the call executes with near-infinite gas
+ GasPrice *big.Int // wei <-> gas exchange ratio
+ Value *big.Int // amount of wei sent along with the call
+ Data []byte // input data, usually an ABI-encoded contract method invocation
+}
+
+// A ContractCaller provides contract calls, essentially transactions that are executed by
+// the EVM but not mined into the blockchain. ContractCall is a low-level method to
+// execute such calls. For applications which are structured around specific contracts,
+// the abigen tool provides a nicer, properly typed way to perform calls.
+type ContractCaller interface {
+ CallContract(ctx context.Context, call CallMsg, blockNumber *big.Int) ([]byte, error)
+}
+
+// FilterQuery contains options for contact log filtering.
+type FilterQuery struct {
+ FromBlock *big.Int // beginning of the queried range, nil means genesis block
+ ToBlock *big.Int // end of the range, nil means latest block
+ Addresses []common.Address // restricts matches to events created by specific contracts
+
+ // The Topic list restricts matches to particular event topics. Each event has a list
+ // of topics. Topics matches a prefix of that list. An empty element slice matches any
+ // topic. Non-empty elements represent an alternative that matches any of the
+ // contained topics.
+ //
+ // Examples:
+ // {} or nil matches any topic list
+ // {{A}} matches topic A in first position
+ // {{}, {B}} matches any topic in first position, B in second position
+ // {{A}}, {B}} matches topic A in first position, B in second position
+ // {{A, B}}, {C, D}} matches topic (A OR B) in first position, (C OR D) in second position
+ Topics [][]common.Hash
+}
+
+// LogFilterer provides access to contract log events using a one-off query or continuous
+// event subscription.
+type LogFilterer interface {
+ FilterLogs(ctx context.Context, q FilterQuery) ([]vm.Log, error)
+ SubscribeFilterLogs(ctx context.Context, q FilterQuery, ch chan<- vm.Log) (Subscription, error)
+}
+
+// TransactionSender wraps transaction sending. The SendTransaction method injects a
+// signed transaction into the pending transaction pool for execution. If the transaction
+// was a contract creation, the TransactionReceipt method can be used to retrieve the
+// contract address after the transaction has been mined.
+//
+// The transaction must be signed and have a valid nonce to be included. Consumers of the
+// API can use package accounts to maintain local private keys and need can retrieve the
+// next available nonce using PendingNonceAt.
+type TransactionSender interface {
+ SendTransaction(ctx context.Context, tx *types.Transaction) error
+}
+
+// GasPricer wraps the gas price oracle, which monitors the blockchain to determine the
+// optimal gas price given current fee market conditions.
+type GasPricer interface {
+ SuggestGasPrice(ctx context.Context) (*big.Int, error)
+}
+
+// A PendingStateReader provides access to the pending state, which is the result of all
+// known executable transactions which have not yet been included in the blockchain. It is
+// commonly used to display the result of ’unconfirmed’ actions (e.g. wallet value
+// transfers) initiated by the user. The PendingNonceAt operation is a good way to
+// retrieve the next available transaction nonce for a specific account.
+type PendingStateReader interface {
+ PendingBalanceAt(ctx context.Context, account common.Address) (*big.Int, error)
+ PendingStorageAt(ctx context.Context, account common.Address, key common.Hash) ([]byte, error)
+ PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
+ PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
+ PendingTransactionCount(ctx context.Context) (uint, error)
+}
+
+// PendingContractCaller can be used to perform calls against the pending state.
+type PendingContractCaller interface {
+ PendingCallContract(ctx context.Context, call CallMsg) ([]byte, error)
+}
+
+// GasEstimator wraps EstimateGas, which tries to estimate the gas needed to execute a
+// specific transaction based on the pending state. There is no guarantee that this is the
+// true gas limit requirement as other transactions may be added or removed by miners, but
+// it should provide a basis for setting a reasonable default.
+type GasEstimator interface {
+ EstimateGas(ctx context.Context, call CallMsg) (usedGas *big.Int, err error)
+}
+
+// A PendingStateEventer provides access to real time notifications about changes to the
+// pending state.
+type PendingStateEventer interface {
+ SubscribePendingTransactions(ctx context.Context, ch chan<- *types.Transaction) (Subscription, error)
+}
diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go
index f604a0ef2..0b1384f58 100644
--- a/internal/ethapi/api.go
+++ b/internal/ethapi/api.go
@@ -20,17 +20,14 @@ import (
"bytes"
"encoding/hex"
"encoding/json"
- "errors"
"fmt"
"math/big"
"strings"
- "sync"
"time"
"github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/compiler"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
@@ -50,14 +47,12 @@ const defaultGas = uint64(90000)
// PublicEthereumAPI provides an API to access Ethereum related information.
// It offers only methods that operate on public data that is freely available to anyone.
type PublicEthereumAPI struct {
- b Backend
- solcPath *string
- solc **compiler.Solidity
+ b Backend
}
// NewPublicEthereumAPI creates a new Etheruem protocol API.
-func NewPublicEthereumAPI(b Backend, solcPath *string, solc **compiler.Solidity) *PublicEthereumAPI {
- return &PublicEthereumAPI{b, solcPath, solc}
+func NewPublicEthereumAPI(b Backend) *PublicEthereumAPI {
+ return &PublicEthereumAPI{b}
}
// GasPrice returns a suggestion for a gas price.
@@ -65,39 +60,6 @@ func (s *PublicEthereumAPI) GasPrice(ctx context.Context) (*big.Int, error) {
return s.b.SuggestPrice(ctx)
}
-func (s *PublicEthereumAPI) getSolc() (*compiler.Solidity, error) {
- var err error
- solc := *s.solc
- if solc == nil {
- solc, err = compiler.New(*s.solcPath)
- }
- return solc, err
-}
-
-// GetCompilers returns the collection of available smart contract compilers
-func (s *PublicEthereumAPI) GetCompilers() ([]string, error) {
- solc, err := s.getSolc()
- if err == nil && solc != nil {
- return []string{"Solidity"}, nil
- }
-
- return []string{}, nil
-}
-
-// CompileSolidity compiles the given solidity source
-func (s *PublicEthereumAPI) CompileSolidity(source string) (map[string]*compiler.Contract, error) {
- solc, err := s.getSolc()
- if err != nil {
- return nil, err
- }
-
- if solc == nil {
- return nil, errors.New("solc (solidity compiler) not found")
- }
-
- return solc.Compile(source)
-}
-
// ProtocolVersion returns the current Ethereum protocol version this node supports
func (s *PublicEthereumAPI) ProtocolVersion() *rpc.HexNumber {
return rpc.NewHexNumber(s.b.ProtocolVersion())
@@ -111,19 +73,19 @@ func (s *PublicEthereumAPI) ProtocolVersion() *rpc.HexNumber {
// - pulledStates: number of state entries processed until now
// - knownStates: number of known state entries that still need to be pulled
func (s *PublicEthereumAPI) Syncing() (interface{}, error) {
- origin, current, height, pulled, known := s.b.Downloader().Progress()
+ progress := s.b.Downloader().Progress()
// Return not syncing if the synchronisation already completed
- if current >= height {
+ if progress.CurrentBlock >= progress.HighestBlock {
return false, nil
}
// Otherwise gather the block sync stats
return map[string]interface{}{
- "startingBlock": rpc.NewHexNumber(origin),
- "currentBlock": rpc.NewHexNumber(current),
- "highestBlock": rpc.NewHexNumber(height),
- "pulledStates": rpc.NewHexNumber(pulled),
- "knownStates": rpc.NewHexNumber(known),
+ "startingBlock": rpc.NewHexNumber(progress.StartingBlock),
+ "currentBlock": rpc.NewHexNumber(progress.CurrentBlock),
+ "highestBlock": rpc.NewHexNumber(progress.HighestBlock),
+ "pulledStates": rpc.NewHexNumber(progress.PulledStates),
+ "knownStates": rpc.NewHexNumber(progress.KnownStates),
}, nil
}
@@ -138,32 +100,26 @@ func NewPublicTxPoolAPI(b Backend) *PublicTxPoolAPI {
}
// Content returns the transactions contained within the transaction pool.
-func (s *PublicTxPoolAPI) Content() map[string]map[string]map[string][]*RPCTransaction {
- content := map[string]map[string]map[string][]*RPCTransaction{
- "pending": make(map[string]map[string][]*RPCTransaction),
- "queued": make(map[string]map[string][]*RPCTransaction),
+func (s *PublicTxPoolAPI) Content() map[string]map[string]map[string]*RPCTransaction {
+ content := map[string]map[string]map[string]*RPCTransaction{
+ "pending": make(map[string]map[string]*RPCTransaction),
+ "queued": make(map[string]map[string]*RPCTransaction),
}
pending, queue := s.b.TxPoolContent()
// Flatten the pending transactions
- for account, batches := range pending {
- dump := make(map[string][]*RPCTransaction)
- for nonce, txs := range batches {
- nonce := fmt.Sprintf("%d", nonce)
- for _, tx := range txs {
- dump[nonce] = append(dump[nonce], newRPCPendingTransaction(tx))
- }
+ for account, txs := range pending {
+ dump := make(map[string]*RPCTransaction)
+ for nonce, tx := range txs {
+ dump[fmt.Sprintf("%d", nonce)] = newRPCPendingTransaction(tx)
}
content["pending"][account.Hex()] = dump
}
// Flatten the queued transactions
- for account, batches := range queue {
- dump := make(map[string][]*RPCTransaction)
- for nonce, txs := range batches {
- nonce := fmt.Sprintf("%d", nonce)
- for _, tx := range txs {
- dump[nonce] = append(dump[nonce], newRPCPendingTransaction(tx))
- }
+ for account, txs := range queue {
+ dump := make(map[string]*RPCTransaction)
+ for nonce, tx := range txs {
+ dump[fmt.Sprintf("%d", nonce)] = newRPCPendingTransaction(tx)
}
content["queued"][account.Hex()] = dump
}
@@ -181,10 +137,10 @@ func (s *PublicTxPoolAPI) Status() map[string]*rpc.HexNumber {
// Inspect retrieves the content of the transaction pool and flattens it into an
// easily inspectable list.
-func (s *PublicTxPoolAPI) Inspect() map[string]map[string]map[string][]string {
- content := map[string]map[string]map[string][]string{
- "pending": make(map[string]map[string][]string),
- "queued": make(map[string]map[string][]string),
+func (s *PublicTxPoolAPI) Inspect() map[string]map[string]map[string]string {
+ content := map[string]map[string]map[string]string{
+ "pending": make(map[string]map[string]string),
+ "queued": make(map[string]map[string]string),
}
pending, queue := s.b.TxPoolContent()
@@ -196,24 +152,18 @@ func (s *PublicTxPoolAPI) Inspect() map[string]map[string]map[string][]string {
return fmt.Sprintf("contract creation: %v wei + %v × %v gas", tx.Value(), tx.Gas(), tx.GasPrice())
}
// Flatten the pending transactions
- for account, batches := range pending {
- dump := make(map[string][]string)
- for nonce, txs := range batches {
- nonce := fmt.Sprintf("%d", nonce)
- for _, tx := range txs {
- dump[nonce] = append(dump[nonce], format(tx))
- }
+ for account, txs := range pending {
+ dump := make(map[string]string)
+ for nonce, tx := range txs {
+ dump[fmt.Sprintf("%d", nonce)] = format(tx)
}
content["pending"][account.Hex()] = dump
}
// Flatten the queued transactions
- for account, batches := range queue {
- dump := make(map[string][]string)
- for nonce, txs := range batches {
- nonce := fmt.Sprintf("%d", nonce)
- for _, tx := range txs {
- dump[nonce] = append(dump[nonce], format(tx))
- }
+ for account, txs := range queue {
+ dump := make(map[string]string)
+ for nonce, tx := range txs {
+ dump[fmt.Sprintf("%d", nonce)] = format(tx)
}
content["queued"][account.Hex()] = dump
}
@@ -303,10 +253,10 @@ func (s *PrivateAccountAPI) LockAccount(addr common.Address) bool {
return s.am.Lock(addr) == nil
}
-// SignAndSendTransaction will create a transaction from the given arguments and
+// SendTransaction will create a transaction from the given arguments and
// tries to sign it with the key associated with args.To. If the given passwd isn't
// able to decrypt the key it fails.
-func (s *PrivateAccountAPI) SignAndSendTransaction(ctx context.Context, args SendTxArgs, passwd string) (common.Hash, error) {
+func (s *PrivateAccountAPI) SendTransaction(ctx context.Context, args SendTxArgs, passwd string) (common.Hash, error) {
var err error
args, err = prepareSendTxArgs(ctx, args, s.b)
if err != nil {
@@ -336,40 +286,21 @@ func (s *PrivateAccountAPI) SignAndSendTransaction(ctx context.Context, args Sen
return submitTransaction(ctx, s.b, tx, signature)
}
+// SignAndSendTransaction was renamed to SendTransaction. This method is deprecated
+// and will be removed in the future. It primary goal is to give clients time to update.
+func (s *PrivateAccountAPI) SignAndSendTransaction(ctx context.Context, args SendTxArgs, passwd string) (common.Hash, error) {
+ return s.SendTransaction(ctx, args, passwd)
+}
+
// PublicBlockChainAPI provides an API to access the Ethereum blockchain.
// It offers only methods that operate on public data that is freely available to anyone.
type PublicBlockChainAPI struct {
- b Backend
- muNewBlockSubscriptions sync.Mutex // protects newBlocksSubscriptions
- newBlockSubscriptions map[string]func(core.ChainEvent) error // callbacks for new block subscriptions
+ b Backend
}
// NewPublicBlockChainAPI creates a new Etheruem blockchain API.
func NewPublicBlockChainAPI(b Backend) *PublicBlockChainAPI {
- api := &PublicBlockChainAPI{
- b: b,
- newBlockSubscriptions: make(map[string]func(core.ChainEvent) error),
- }
-
- go api.subscriptionLoop()
-
- return api
-}
-
-// subscriptionLoop reads events from the global event mux and creates notifications for the matched subscriptions.
-func (s *PublicBlockChainAPI) subscriptionLoop() {
- sub := s.b.EventMux().Subscribe(core.ChainEvent{})
- for event := range sub.Chan() {
- if chainEvent, ok := event.Data.(core.ChainEvent); ok {
- s.muNewBlockSubscriptions.Lock()
- for id, notifyOf := range s.newBlockSubscriptions {
- if notifyOf(chainEvent) == rpc.ErrNotificationNotFound {
- delete(s.newBlockSubscriptions, id)
- }
- }
- s.muNewBlockSubscriptions.Unlock()
- }
- }
+ return &PublicBlockChainAPI{b}
}
// BlockNumber returns the block number of the chain head.
@@ -464,45 +395,6 @@ func (s *PublicBlockChainAPI) GetUncleCountByBlockHash(ctx context.Context, bloc
return nil
}
-// NewBlocksArgs allows the user to specify if the returned block should include transactions and in which format.
-type NewBlocksArgs struct {
- IncludeTransactions bool `json:"includeTransactions"`
- TransactionDetails bool `json:"transactionDetails"`
-}
-
-// NewBlocks triggers a new block event each time a block is appended to the chain. It accepts an argument which allows
-// the caller to specify whether the output should contain transactions and in what format.
-func (s *PublicBlockChainAPI) NewBlocks(ctx context.Context, args NewBlocksArgs) (rpc.Subscription, error) {
- notifier, supported := rpc.NotifierFromContext(ctx)
- if !supported {
- return nil, rpc.ErrNotificationsUnsupported
- }
-
- // create a subscription that will remove itself when unsubscribed/cancelled
- subscription, err := notifier.NewSubscription(func(subId string) {
- s.muNewBlockSubscriptions.Lock()
- delete(s.newBlockSubscriptions, subId)
- s.muNewBlockSubscriptions.Unlock()
- })
-
- if err != nil {
- return nil, err
- }
-
- // add a callback that is called on chain events which will format the block and notify the client
- s.muNewBlockSubscriptions.Lock()
- s.newBlockSubscriptions[subscription.ID()] = func(e core.ChainEvent) error {
- notification, err := s.rpcOutputBlock(e.Block, args.IncludeTransactions, args.TransactionDetails)
- if err == nil {
- return subscription.Notify(notification)
- }
- glog.V(logger.Warn).Info("unable to format block %v\n", err)
- return nil
- }
- s.muNewBlockSubscriptions.Unlock()
- return subscription, nil
-}
-
// GetCode returns the code stored at the given address in the state for the given block number.
func (s *PublicBlockChainAPI) GetCode(ctx context.Context, address common.Address, blockNr rpc.BlockNumber) (string, error) {
state, _, err := s.b.StateAndHeaderByNumber(blockNr)
@@ -680,82 +572,30 @@ func FormatLogs(structLogs []vm.StructLog) []StructLogRes {
return formattedStructLogs
}
-// TraceCall executes a call and returns the amount of gas, created logs and optionally returned values.
-func (s *PublicBlockChainAPI) TraceCall(ctx context.Context, args CallArgs, blockNr rpc.BlockNumber) (*ExecutionResult, error) {
- state, header, err := s.b.StateAndHeaderByNumber(blockNr)
- if state == nil || err != nil {
- return nil, err
- }
-
- var addr common.Address
- if args.From == (common.Address{}) {
- accounts := s.b.AccountManager().Accounts()
- if len(accounts) == 0 {
- addr = common.Address{}
- } else {
- addr = accounts[0].Address
- }
- } else {
- addr = args.From
- }
-
- // Assemble the CALL invocation
- msg := callmsg{
- addr: addr,
- to: args.To,
- gas: args.Gas.BigInt(),
- gasPrice: args.GasPrice.BigInt(),
- value: args.Value.BigInt(),
- data: common.FromHex(args.Data),
- }
-
- if msg.gas.Cmp(common.Big0) == 0 {
- msg.gas = big.NewInt(50000000)
- }
-
- if msg.gasPrice.Cmp(common.Big0) == 0 {
- msg.gasPrice = new(big.Int).Mul(big.NewInt(50), common.Shannon)
- }
-
- // Execute the call and return
- vmenv, vmError, err := s.b.GetVMEnv(ctx, msg, state, header)
- if err != nil {
- return nil, err
- }
- gp := new(core.GasPool).AddGas(common.MaxBig)
- ret, gas, err := core.ApplyMessage(vmenv, msg, gp)
- if err := vmError(); err != nil {
- return nil, err
- }
- return &ExecutionResult{
- Gas: gas,
- ReturnValue: fmt.Sprintf("%x", ret),
- StructLogs: FormatLogs(vmenv.StructLogs()),
- }, nil
-}
-
// rpcOutputBlock converts the given block to the RPC output which depends on fullTx. If inclTx is true transactions are
// returned. When fullTx is true the returned block contains full transaction details, otherwise it will only contain
// transaction hashes.
func (s *PublicBlockChainAPI) rpcOutputBlock(b *types.Block, inclTx bool, fullTx bool) (map[string]interface{}, error) {
+ head := b.Header() // copies the header once
fields := map[string]interface{}{
- "number": rpc.NewHexNumber(b.Number()),
+ "number": rpc.NewHexNumber(head.Number),
"hash": b.Hash(),
- "parentHash": b.ParentHash(),
- "nonce": b.Header().Nonce,
- "sha3Uncles": b.UncleHash(),
- "logsBloom": b.Bloom(),
- "stateRoot": b.Root(),
- "miner": b.Coinbase(),
- "difficulty": rpc.NewHexNumber(b.Difficulty()),
+ "parentHash": head.ParentHash,
+ "nonce": head.Nonce,
+ "mixHash": head.MixDigest,
+ "sha3Uncles": head.UncleHash,
+ "logsBloom": head.Bloom,
+ "stateRoot": head.Root,
+ "miner": head.Coinbase,
+ "difficulty": rpc.NewHexNumber(head.Difficulty),
"totalDifficulty": rpc.NewHexNumber(s.b.GetTd(b.Hash())),
- "extraData": fmt.Sprintf("0x%x", b.Extra()),
+ "extraData": rpc.HexBytes(head.Extra),
"size": rpc.NewHexNumber(b.Size().Int64()),
- "gasLimit": rpc.NewHexNumber(b.GasLimit()),
- "gasUsed": rpc.NewHexNumber(b.GasUsed()),
- "timestamp": rpc.NewHexNumber(b.Time()),
- "transactionsRoot": b.TxHash(),
- "receiptRoot": b.ReceiptHash(),
+ "gasLimit": rpc.NewHexNumber(head.GasLimit),
+ "gasUsed": rpc.NewHexNumber(head.GasUsed),
+ "timestamp": rpc.NewHexNumber(head.Time),
+ "transactionsRoot": head.TxHash,
+ "receiptRoot": head.ReceiptHash,
}
if inclTx {
@@ -798,26 +638,32 @@ type RPCTransaction struct {
Gas *rpc.HexNumber `json:"gas"`
GasPrice *rpc.HexNumber `json:"gasPrice"`
Hash common.Hash `json:"hash"`
- Input string `json:"input"`
+ Input rpc.HexBytes `json:"input"`
Nonce *rpc.HexNumber `json:"nonce"`
To *common.Address `json:"to"`
TransactionIndex *rpc.HexNumber `json:"transactionIndex"`
Value *rpc.HexNumber `json:"value"`
+ V *rpc.HexNumber `json:"v"`
+ R *rpc.HexNumber `json:"r"`
+ S *rpc.HexNumber `json:"s"`
}
// newRPCPendingTransaction returns a pending transaction that will serialize to the RPC representation
func newRPCPendingTransaction(tx *types.Transaction) *RPCTransaction {
from, _ := tx.FromFrontier()
-
+ v, r, s := tx.SignatureValues()
return &RPCTransaction{
From: from,
Gas: rpc.NewHexNumber(tx.Gas()),
GasPrice: rpc.NewHexNumber(tx.GasPrice()),
Hash: tx.Hash(),
- Input: fmt.Sprintf("0x%x", tx.Data()),
+ Input: rpc.HexBytes(tx.Data()),
Nonce: rpc.NewHexNumber(tx.Nonce()),
To: tx.To(),
Value: rpc.NewHexNumber(tx.Value()),
+ V: rpc.NewHexNumber(v),
+ R: rpc.NewHexNumber(r),
+ S: rpc.NewHexNumber(s),
}
}
@@ -829,7 +675,7 @@ func newRPCTransactionFromBlockIndex(b *types.Block, txIndex int) (*RPCTransacti
if err != nil {
return nil, err
}
-
+ v, r, s := tx.SignatureValues()
return &RPCTransaction{
BlockHash: b.Hash(),
BlockNumber: rpc.NewHexNumber(b.Number()),
@@ -837,11 +683,14 @@ func newRPCTransactionFromBlockIndex(b *types.Block, txIndex int) (*RPCTransacti
Gas: rpc.NewHexNumber(tx.Gas()),
GasPrice: rpc.NewHexNumber(tx.GasPrice()),
Hash: tx.Hash(),
- Input: fmt.Sprintf("0x%x", tx.Data()),
+ Input: rpc.HexBytes(tx.Data()),
Nonce: rpc.NewHexNumber(tx.Nonce()),
To: tx.To(),
TransactionIndex: rpc.NewHexNumber(txIndex),
Value: rpc.NewHexNumber(tx.Value()),
+ V: rpc.NewHexNumber(v),
+ R: rpc.NewHexNumber(r),
+ S: rpc.NewHexNumber(s),
}, nil
}
@@ -861,40 +710,12 @@ func newRPCTransaction(b *types.Block, txHash common.Hash) (*RPCTransaction, err
// PublicTransactionPoolAPI exposes methods for the RPC interface
type PublicTransactionPoolAPI struct {
- b Backend
- muPendingTxSubs sync.Mutex
- pendingTxSubs map[string]rpc.Subscription
+ b Backend
}
// NewPublicTransactionPoolAPI creates a new RPC service with methods specific for the transaction pool.
func NewPublicTransactionPoolAPI(b Backend) *PublicTransactionPoolAPI {
- api := &PublicTransactionPoolAPI{
- b: b,
- pendingTxSubs: make(map[string]rpc.Subscription),
- }
-
- go api.subscriptionLoop()
-
- return api
-}
-
-// subscriptionLoop listens for events on the global event mux and creates notifications for subscriptions.
-func (s *PublicTransactionPoolAPI) subscriptionLoop() {
- sub := s.b.EventMux().Subscribe(core.TxPreEvent{})
- for event := range sub.Chan() {
- tx := event.Data.(core.TxPreEvent)
- if from, err := tx.Tx.FromFrontier(); err == nil {
- if s.b.AccountManager().HasAddress(from) {
- s.muPendingTxSubs.Lock()
- for id, sub := range s.pendingTxSubs {
- if sub.Notify(tx.Tx.Hash()) == rpc.ErrNotificationNotFound {
- delete(s.pendingTxSubs, id)
- }
- }
- s.muPendingTxSubs.Unlock()
- }
- }
- }
+ return &PublicTransactionPoolAPI{b}
}
func getTransaction(chainDb ethdb.Database, b Backend, txHash common.Hash) (*types.Transaction, bool, error) {
@@ -1039,7 +860,7 @@ func (s *PublicTransactionPoolAPI) GetTransactionReceipt(txHash common.Hash) (ma
}
fields := map[string]interface{}{
- "root": common.Bytes2Hex(receipt.PostState),
+ "root": rpc.HexBytes(receipt.PostState),
"blockHash": txBlock,
"blockNumber": rpc.NewHexNumber(blockIndex),
"transactionHash": txHash,
@@ -1050,17 +871,15 @@ func (s *PublicTransactionPoolAPI) GetTransactionReceipt(txHash common.Hash) (ma
"cumulativeGasUsed": rpc.NewHexNumber(receipt.CumulativeGasUsed),
"contractAddress": nil,
"logs": receipt.Logs,
+ "logsBloom": receipt.Bloom,
}
-
if receipt.Logs == nil {
fields["logs"] = []vm.Logs{}
}
-
// If the ContractAddress is 20 0x0 bytes, assume it is not a contract creation
- if bytes.Compare(receipt.ContractAddress.Bytes(), bytes.Repeat([]byte{0}, 20)) != 0 {
+ if receipt.ContractAddress != (common.Address{}) {
fields["contractAddress"] = receipt.ContractAddress
}
-
return fields, nil
}
@@ -1347,31 +1166,6 @@ func (s *PublicTransactionPoolAPI) PendingTransactions() []*RPCTransaction {
return transactions
}
-// NewPendingTransactions creates a subscription that is triggered each time a transaction enters the transaction pool
-// and is send from one of the transactions this nodes manages.
-func (s *PublicTransactionPoolAPI) NewPendingTransactions(ctx context.Context) (rpc.Subscription, error) {
- notifier, supported := rpc.NotifierFromContext(ctx)
- if !supported {
- return nil, rpc.ErrNotificationsUnsupported
- }
-
- subscription, err := notifier.NewSubscription(func(id string) {
- s.muPendingTxSubs.Lock()
- delete(s.pendingTxSubs, id)
- s.muPendingTxSubs.Unlock()
- })
-
- if err != nil {
- return nil, err
- }
-
- s.muPendingTxSubs.Lock()
- s.pendingTxSubs[subscription.ID()] = subscription
- s.muPendingTxSubs.Unlock()
-
- return subscription, nil
-}
-
// Resend accepts an existing transaction and a new gas price and limit. It will remove the given transaction from the
// pool and reinsert it with the new gas price and limit.
func (s *PublicTransactionPoolAPI) Resend(ctx context.Context, tx *Tx, gasPrice, gasLimit *rpc.HexNumber) (common.Hash, error) {
@@ -1410,31 +1204,6 @@ func (s *PublicTransactionPoolAPI) Resend(ctx context.Context, tx *Tx, gasPrice,
return common.Hash{}, fmt.Errorf("Transaction %#x not found", tx.Hash)
}
-// PrivateAdminAPI is the collection of Etheruem APIs exposed over the private
-// admin endpoint.
-type PrivateAdminAPI struct {
- b Backend
- solcPath *string
- solc **compiler.Solidity
-}
-
-// NewPrivateAdminAPI creates a new API definition for the private admin methods
-// of the Ethereum service.
-func NewPrivateAdminAPI(b Backend, solcPath *string, solc **compiler.Solidity) *PrivateAdminAPI {
- return &PrivateAdminAPI{b, solcPath, solc}
-}
-
-// SetSolc sets the Solidity compiler path to be used by the node.
-func (api *PrivateAdminAPI) SetSolc(path string) (string, error) {
- var err error
- *api.solcPath = path
- *api.solc, err = compiler.New(path)
- if err != nil {
- return "", err
- }
- return (*api.solc).Info(), nil
-}
-
// PublicDebugAPI is the collection of Etheruem APIs exposed over the public
// debugging endpoint.
type PublicDebugAPI struct {
diff --git a/internal/ethapi/backend.go b/internal/ethapi/backend.go
index d112a6aef..0aa3da18d 100644
--- a/internal/ethapi/backend.go
+++ b/internal/ethapi/backend.go
@@ -22,7 +22,6 @@ import (
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/compiler"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
@@ -59,7 +58,7 @@ type Backend interface {
GetPoolTransaction(txHash common.Hash) *types.Transaction
GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error)
Stats() (pending int, queued int)
- TxPoolContent() (map[common.Address]map[uint64][]*types.Transaction, map[common.Address]map[uint64][]*types.Transaction)
+ TxPoolContent() (map[common.Address]types.Transactions, map[common.Address]types.Transactions)
}
type State interface {
@@ -69,12 +68,13 @@ type State interface {
GetNonce(ctx context.Context, addr common.Address) (uint64, error)
}
-func GetAPIs(apiBackend Backend, solcPath *string, solc **compiler.Solidity) []rpc.API {
- return []rpc.API{
+func GetAPIs(apiBackend Backend, solcPath string) []rpc.API {
+ compiler := makeCompilerAPIs(solcPath)
+ all := []rpc.API{
{
Namespace: "eth",
Version: "1.0",
- Service: NewPublicEthereumAPI(apiBackend, solcPath, solc),
+ Service: NewPublicEthereumAPI(apiBackend),
Public: true,
}, {
Namespace: "eth",
@@ -92,10 +92,6 @@ func GetAPIs(apiBackend Backend, solcPath *string, solc **compiler.Solidity) []r
Service: NewPublicTxPoolAPI(apiBackend),
Public: true,
}, {
- Namespace: "admin",
- Version: "1.0",
- Service: NewPrivateAdminAPI(apiBackend, solcPath, solc),
- }, {
Namespace: "debug",
Version: "1.0",
Service: NewPublicDebugAPI(apiBackend),
@@ -116,4 +112,5 @@ func GetAPIs(apiBackend Backend, solcPath *string, solc **compiler.Solidity) []r
Public: false,
},
}
+ return append(compiler, all...)
}
diff --git a/internal/ethapi/solc.go b/internal/ethapi/solc.go
new file mode 100644
index 000000000..b9acc518b
--- /dev/null
+++ b/internal/ethapi/solc.go
@@ -0,0 +1,82 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package ethapi
+
+import (
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common/compiler"
+ "github.com/ethereum/go-ethereum/rpc"
+)
+
+func makeCompilerAPIs(solcPath string) []rpc.API {
+ c := &compilerAPI{solc: solcPath}
+ return []rpc.API{
+ {
+ Namespace: "eth",
+ Version: "1.0",
+ Service: (*PublicCompilerAPI)(c),
+ Public: true,
+ },
+ {
+ Namespace: "admin",
+ Version: "1.0",
+ Service: (*CompilerAdminAPI)(c),
+ Public: true,
+ },
+ }
+}
+
+type compilerAPI struct {
+ // This lock guards the solc path set through the API.
+ // It also ensures that only one solc process is used at
+ // any time.
+ mu sync.Mutex
+ solc string
+}
+
+type CompilerAdminAPI compilerAPI
+
+// SetSolc sets the Solidity compiler path to be used by the node.
+func (api *CompilerAdminAPI) SetSolc(path string) (string, error) {
+ api.mu.Lock()
+ defer api.mu.Unlock()
+ info, err := compiler.SolidityVersion(path)
+ if err != nil {
+ return "", err
+ }
+ api.solc = path
+ return info.FullVersion, nil
+}
+
+type PublicCompilerAPI compilerAPI
+
+// CompileSolidity compiles the given solidity source.
+func (api *PublicCompilerAPI) CompileSolidity(source string) (map[string]*compiler.Contract, error) {
+ api.mu.Lock()
+ defer api.mu.Unlock()
+ return compiler.CompileSolidityString(api.solc, source)
+}
+
+func (api *PublicCompilerAPI) GetCompilers() ([]string, error) {
+ api.mu.Lock()
+ defer api.mu.Unlock()
+ if _, err := compiler.SolidityVersion(api.solc); err == nil {
+ return []string{"Solidity"}, nil
+ }
+ return []string{}, nil
+}
diff --git a/internal/ethapi/tracer.go b/internal/ethapi/tracer.go
new file mode 100644
index 000000000..16ec6ebf0
--- /dev/null
+++ b/internal/ethapi/tracer.go
@@ -0,0 +1,317 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package ethapi
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/vm"
+ "github.com/robertkrimen/otto"
+)
+
+// fakeBig is used to provide an interface to Javascript for 'big.NewInt'
+type fakeBig struct{}
+
+// NewInt creates a new big.Int with the specified int64 value.
+func (fb *fakeBig) NewInt(x int64) *big.Int {
+ return big.NewInt(x)
+}
+
+// OpCodeWrapper provides a JavaScript-friendly wrapper around OpCode, to convince Otto to treat it
+// as an object, instead of a number.
+type opCodeWrapper struct {
+ op vm.OpCode
+}
+
+// toNumber returns the ID of this opcode as an integer
+func (ocw *opCodeWrapper) toNumber() int {
+ return int(ocw.op)
+}
+
+// toString returns the string representation of the opcode
+func (ocw *opCodeWrapper) toString() string {
+ return ocw.op.String()
+}
+
+// isPush returns true if the op is a Push
+func (ocw *opCodeWrapper) isPush() bool {
+ return ocw.op.IsPush()
+}
+
+// MarshalJSON serializes the opcode as JSON
+func (ocw *opCodeWrapper) MarshalJSON() ([]byte, error) {
+ return json.Marshal(ocw.op.String())
+}
+
+// toValue returns an otto.Value for the opCodeWrapper
+func (ocw *opCodeWrapper) toValue(vm *otto.Otto) otto.Value {
+ value, _ := vm.ToValue(ocw)
+ obj := value.Object()
+ obj.Set("toNumber", ocw.toNumber)
+ obj.Set("toString", ocw.toString)
+ obj.Set("isPush", ocw.isPush)
+ return value
+}
+
+// memoryWrapper provides a JS wrapper around vm.Memory
+type memoryWrapper struct {
+ memory *vm.Memory
+}
+
+// slice returns the requested range of memory as a byte slice
+func (mw *memoryWrapper) slice(begin, end int64) []byte {
+ return mw.memory.Get(begin, end-begin)
+}
+
+// getUint returns the 32 bytes at the specified address interpreted
+// as an unsigned integer
+func (mw *memoryWrapper) getUint(addr int64) *big.Int {
+ ret := big.NewInt(0)
+ ret.SetBytes(mw.memory.GetPtr(addr, 32))
+ return ret
+}
+
+// toValue returns an otto.Value for the memoryWrapper
+func (mw *memoryWrapper) toValue(vm *otto.Otto) otto.Value {
+ value, _ := vm.ToValue(mw)
+ obj := value.Object()
+ obj.Set("slice", mw.slice)
+ obj.Set("getUint", mw.getUint)
+ return value
+}
+
+// stackWrapper provides a JS wrapper around vm.Stack
+type stackWrapper struct {
+ stack *vm.Stack
+}
+
+// peek returns the nth-from-the-top element of the stack.
+func (sw *stackWrapper) peek(idx int) *big.Int {
+ return sw.stack.Data()[len(sw.stack.Data())-idx-1]
+}
+
+// length returns the length of the stack
+func (sw *stackWrapper) length() int {
+ return len(sw.stack.Data())
+}
+
+// toValue returns an otto.Value for the stackWrapper
+func (sw *stackWrapper) toValue(vm *otto.Otto) otto.Value {
+ value, _ := vm.ToValue(sw)
+ obj := value.Object()
+ obj.Set("peek", sw.peek)
+ obj.Set("length", sw.length)
+ return value
+}
+
+// dbWrapper provides a JS wrapper around vm.Database
+type dbWrapper struct {
+ db vm.Database
+}
+
+// getBalance retrieves an account's balance
+func (dw *dbWrapper) getBalance(addr common.Address) *big.Int {
+ return dw.db.GetBalance(addr)
+}
+
+// getNonce retrieves an account's nonce
+func (dw *dbWrapper) getNonce(addr common.Address) uint64 {
+ return dw.db.GetNonce(addr)
+}
+
+// getCode retrieves an account's code
+func (dw *dbWrapper) getCode(addr common.Address) []byte {
+ return dw.db.GetCode(addr)
+}
+
+// getState retrieves an account's state data for the given hash
+func (dw *dbWrapper) getState(addr common.Address, hash common.Hash) common.Hash {
+ return dw.db.GetState(addr, hash)
+}
+
+// exists returns true iff the account exists
+func (dw *dbWrapper) exists(addr common.Address) bool {
+ return dw.db.Exist(addr)
+}
+
+// toValue returns an otto.Value for the dbWrapper
+func (dw *dbWrapper) toValue(vm *otto.Otto) otto.Value {
+ value, _ := vm.ToValue(dw)
+ obj := value.Object()
+ obj.Set("getBalance", dw.getBalance)
+ obj.Set("getNonce", dw.getNonce)
+ obj.Set("getCode", dw.getCode)
+ obj.Set("getState", dw.getState)
+ obj.Set("exists", dw.exists)
+ return value
+}
+
+// JavascriptTracer provides an implementation of Tracer that evaluates a
+// Javascript function for each VM execution step.
+type JavascriptTracer struct {
+ vm *otto.Otto // Javascript VM instance
+ traceobj *otto.Object // User-supplied object to call
+ log map[string]interface{} // (Reusable) map for the `log` arg to `step`
+ logvalue otto.Value // JS view of `log`
+ memory *memoryWrapper // Wrapper around the VM memory
+ memvalue otto.Value // JS view of `memory`
+ stack *stackWrapper // Wrapper around the VM stack
+ stackvalue otto.Value // JS view of `stack`
+ db *dbWrapper // Wrapper around the VM environment
+ dbvalue otto.Value // JS view of `db`
+ err error // Error, if one has occurred
+}
+
+// NewJavascriptTracer instantiates a new JavascriptTracer instance.
+// code specifies a Javascript snippet, which must evaluate to an expression
+// returning an object with 'step' and 'result' functions.
+func NewJavascriptTracer(code string) (*JavascriptTracer, error) {
+ vm := otto.New()
+ vm.Interrupt = make(chan func(), 1)
+
+ // Set up builtins for this environment
+ vm.Set("big", &fakeBig{})
+
+ jstracer, err := vm.Object("(" + code + ")")
+ if err != nil {
+ return nil, err
+ }
+
+ // Check the required functions exist
+ step, err := jstracer.Get("step")
+ if err != nil {
+ return nil, err
+ }
+ if !step.IsFunction() {
+ return nil, fmt.Errorf("Trace object must expose a function step()")
+ }
+
+ result, err := jstracer.Get("result")
+ if err != nil {
+ return nil, err
+ }
+ if !result.IsFunction() {
+ return nil, fmt.Errorf("Trace object must expose a function result()")
+ }
+
+ // Create the persistent log object
+ log := make(map[string]interface{})
+ logvalue, _ := vm.ToValue(log)
+
+ // Create persistent wrappers for memory and stack
+ mem := &memoryWrapper{}
+ stack := &stackWrapper{}
+ db := &dbWrapper{}
+
+ return &JavascriptTracer{
+ vm: vm,
+ traceobj: jstracer,
+ log: log,
+ logvalue: logvalue,
+ memory: mem,
+ memvalue: mem.toValue(vm),
+ stack: stack,
+ stackvalue: stack.toValue(vm),
+ db: db,
+ dbvalue: db.toValue(vm),
+ err: nil,
+ }, nil
+}
+
+// Stop terminates execution of any JavaScript
+func (jst *JavascriptTracer) Stop(err error) {
+ jst.vm.Interrupt <- func() {
+ panic(err)
+ }
+}
+
+// callSafely executes a method on a JS object, catching any panics and
+// returning them as error objects.
+func (jst *JavascriptTracer) callSafely(method string, argumentList ...interface{}) (ret interface{}, err error) {
+ defer func() {
+ if caught := recover(); caught != nil {
+ switch caught := caught.(type) {
+ case error:
+ err = caught
+ case string:
+ err = errors.New(caught)
+ case fmt.Stringer:
+ err = errors.New(caught.String())
+ default:
+ panic(caught)
+ }
+ }
+ }()
+
+ value, err := jst.traceobj.Call(method, argumentList...)
+ ret, _ = value.Export()
+ return ret, err
+}
+
+func wrapError(context string, err error) error {
+ var message string
+ switch err := err.(type) {
+ case *otto.Error:
+ message = err.String()
+ default:
+ message = err.Error()
+ }
+ return fmt.Errorf("%v in server-side tracer function '%v'", message, context)
+}
+
+// CaptureState implements the Tracer interface to trace a single step of VM execution
+func (jst *JavascriptTracer) CaptureState(env vm.Environment, pc uint64, op vm.OpCode, gas, cost *big.Int, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) {
+ if jst.err == nil {
+ jst.memory.memory = memory
+ jst.stack.stack = stack
+ jst.db.db = env.Db()
+
+ ocw := &opCodeWrapper{op}
+
+ jst.log["pc"] = pc
+ jst.log["op"] = ocw.toValue(jst.vm)
+ jst.log["gas"] = gas.Int64()
+ jst.log["gasPrice"] = cost.Int64()
+ jst.log["memory"] = jst.memvalue
+ jst.log["stack"] = jst.stackvalue
+ jst.log["depth"] = depth
+ jst.log["account"] = contract.Address()
+ jst.log["err"] = err
+
+ _, err := jst.callSafely("step", jst.logvalue, jst.dbvalue)
+ if err != nil {
+ jst.err = wrapError("step", err)
+ }
+ }
+}
+
+// GetResult calls the Javascript 'result' function and returns its value, or any accumulated error
+func (jst *JavascriptTracer) GetResult() (result interface{}, err error) {
+ if jst.err != nil {
+ return nil, jst.err
+ }
+
+ result, err = jst.callSafely("result")
+ if err != nil {
+ err = wrapError("result", err)
+ }
+ return
+}
diff --git a/internal/ethapi/tracer_test.go b/internal/ethapi/tracer_test.go
new file mode 100644
index 000000000..301ff4840
--- /dev/null
+++ b/internal/ethapi/tracer_test.go
@@ -0,0 +1,201 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package ethapi
+
+import (
+ "errors"
+ "math/big"
+ "reflect"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/vm"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+type ruleSet struct{}
+
+func (self *ruleSet) IsHomestead(*big.Int) bool { return true }
+
+type Env struct {
+ gasLimit *big.Int
+ depth int
+ evm *vm.EVM
+}
+
+func NewEnv(config *vm.Config) *Env {
+ env := &Env{gasLimit: big.NewInt(10000), depth: 0}
+ env.evm = vm.New(env, *config)
+ return env
+}
+
+func (self *Env) RuleSet() vm.RuleSet { return &ruleSet{} }
+func (self *Env) Vm() vm.Vm { return self.evm }
+func (self *Env) Origin() common.Address { return common.Address{} }
+func (self *Env) BlockNumber() *big.Int { return big.NewInt(0) }
+
+//func (self *Env) PrevHash() []byte { return self.parent }
+func (self *Env) Coinbase() common.Address { return common.Address{} }
+func (self *Env) MakeSnapshot() vm.Database { return nil }
+func (self *Env) SetSnapshot(vm.Database) {}
+func (self *Env) Time() *big.Int { return big.NewInt(time.Now().Unix()) }
+func (self *Env) Difficulty() *big.Int { return big.NewInt(0) }
+func (self *Env) Db() vm.Database { return nil }
+func (self *Env) GasLimit() *big.Int { return self.gasLimit }
+func (self *Env) VmType() vm.Type { return vm.StdVmTy }
+func (self *Env) GetHash(n uint64) common.Hash {
+ return common.BytesToHash(crypto.Keccak256([]byte(big.NewInt(int64(n)).String())))
+}
+func (self *Env) AddLog(log *vm.Log) {
+}
+func (self *Env) Depth() int { return self.depth }
+func (self *Env) SetDepth(i int) { self.depth = i }
+func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool {
+ return true
+}
+func (self *Env) Transfer(from, to vm.Account, amount *big.Int) {}
+func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
+ return nil, nil
+}
+func (self *Env) CallCode(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
+ return nil, nil
+}
+func (self *Env) Create(caller vm.ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error) {
+ return nil, common.Address{}, nil
+}
+func (self *Env) DelegateCall(me vm.ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error) {
+ return nil, nil
+}
+
+type account struct{}
+
+func (account) SubBalance(amount *big.Int) {}
+func (account) AddBalance(amount *big.Int) {}
+func (account) SetAddress(common.Address) {}
+func (account) Value() *big.Int { return nil }
+func (account) SetBalance(*big.Int) {}
+func (account) SetNonce(uint64) {}
+func (account) Balance() *big.Int { return nil }
+func (account) Address() common.Address { return common.Address{} }
+func (account) ReturnGas(*big.Int, *big.Int) {}
+func (account) SetCode([]byte) {}
+func (account) ForEachStorage(cb func(key, value common.Hash) bool) {}
+
+func runTrace(tracer *JavascriptTracer) (interface{}, error) {
+ env := NewEnv(&vm.Config{Debug: true, Tracer: tracer})
+
+ contract := vm.NewContract(account{}, account{}, big.NewInt(0), env.GasLimit(), big.NewInt(1))
+ contract.Code = []byte{byte(vm.PUSH1), 0x1, byte(vm.PUSH1), 0x1, 0x0}
+
+ _, err := env.Vm().Run(contract, []byte{})
+ if err != nil {
+ return nil, err
+ }
+
+ return tracer.GetResult()
+}
+
+func TestTracing(t *testing.T) {
+ tracer, err := NewJavascriptTracer("{count: 0, step: function() { this.count += 1; }, result: function() { return this.count; }}")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ ret, err := runTrace(tracer)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ value, ok := ret.(float64)
+ if !ok {
+ t.Errorf("Expected return value to be float64, was %T", ret)
+ }
+ if value != 3 {
+ t.Errorf("Expected return value to be 3, got %v", value)
+ }
+}
+
+func TestStack(t *testing.T) {
+ tracer, err := NewJavascriptTracer("{depths: [], step: function(log) { this.depths.push(log.stack.length()); }, result: function() { return this.depths; }}")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ ret, err := runTrace(tracer)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expected := []int{0, 1, 2}
+ if !reflect.DeepEqual(ret, expected) {
+ t.Errorf("Expected return value to be %#v, got %#v", expected, ret)
+ }
+}
+
+func TestOpcodes(t *testing.T) {
+ tracer, err := NewJavascriptTracer("{opcodes: [], step: function(log) { this.opcodes.push(log.op.toString()); }, result: function() { return this.opcodes; }}")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ ret, err := runTrace(tracer)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expected := []string{"PUSH1", "PUSH1", "STOP"}
+ if !reflect.DeepEqual(ret, expected) {
+ t.Errorf("Expected return value to be %#v, got %#v", expected, ret)
+ }
+}
+
+func TestHalt(t *testing.T) {
+ timeout := errors.New("stahp")
+ tracer, err := NewJavascriptTracer("{step: function() { while(1); }, result: function() { return null; }}")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ go func() {
+ time.Sleep(1 * time.Second)
+ tracer.Stop(timeout)
+ }()
+
+ if _, err = runTrace(tracer); err.Error() != "stahp in server-side tracer function 'step'" {
+ t.Errorf("Expected timeout error, got %v", err)
+ }
+}
+
+func TestHaltBetweenSteps(t *testing.T) {
+ tracer, err := NewJavascriptTracer("{step: function() {}, result: function() { return null; }}")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ env := NewEnv(&vm.Config{Debug: true, Tracer: tracer})
+ contract := vm.NewContract(&account{}, &account{}, big.NewInt(0), big.NewInt(0), big.NewInt(0))
+
+ tracer.CaptureState(env, 0, 0, big.NewInt(0), big.NewInt(0), nil, nil, contract, 0, nil)
+ timeout := errors.New("stahp")
+ tracer.Stop(timeout)
+ tracer.CaptureState(env, 0, 0, big.NewInt(0), big.NewInt(0), nil, nil, contract, 0, nil)
+
+ if _, err := tracer.GetResult(); err.Error() != "stahp in server-side tracer function 'step'" {
+ t.Errorf("Expected timeout error, got %v", err)
+ }
+}
diff --git a/internal/jsre/ethereum_js.go b/internal/jsre/ethereum_js.go
index 79ce1d2e2..b4eef194c 100644
--- a/internal/jsre/ethereum_js.go
+++ b/internal/jsre/ethereum_js.go
@@ -1987,7 +1987,7 @@ var padRight = function (string, chars, sign) {
};
/**
- * Should be called to get utf8 from it's hex representation
+ * Should be called to get utf8 from its hex representation
*
* @method toUtf8
* @param {String} string in hex
@@ -2011,7 +2011,7 @@ var toUtf8 = function(hex) {
};
/**
- * Should be called to get ascii from it's hex representation
+ * Should be called to get ascii from its hex representation
*
* @method toAscii
* @param {String} string in hex
@@ -2109,7 +2109,7 @@ var extractTypeName = function (name) {
};
/**
- * Converts value to it's decimal representation in string
+ * Converts value to its decimal representation in string
*
* @method toDecimal
* @param {String|Number|BigNumber}
@@ -2120,7 +2120,7 @@ var toDecimal = function (value) {
};
/**
- * Converts value to it's hex representation
+ * Converts value to its hex representation
*
* @method fromDecimal
* @param {String|Number|BigNumber}
@@ -2134,7 +2134,7 @@ var fromDecimal = function (value) {
};
/**
- * Auto converts any given value into it's hex representation.
+ * Auto converts any given value into its hex representation.
*
* And even stringifys objects before.
*
diff --git a/internal/jsre/pretty.go b/internal/jsre/pretty.go
index 30d8660ff..f32e16243 100644
--- a/internal/jsre/pretty.go
+++ b/internal/jsre/pretty.go
@@ -116,7 +116,7 @@ func (ctx ppctx) printValue(v otto.Value, level int, inArray bool) {
func (ctx ppctx) printObject(obj *otto.Object, level int, inArray bool) {
switch obj.Class() {
- case "Array":
+ case "Array", "GoArray":
lv, _ := obj.Get("length")
len, _ := lv.ToInteger()
if len == 0 {
diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go
index 162cf7096..04b13e483 100644
--- a/internal/web3ext/web3ext.go
+++ b/internal/web3ext/web3ext.go
@@ -18,17 +18,159 @@
package web3ext
var Modules = map[string]string{
- "admin": Admin_JS,
- "debug": Debug_JS,
- "eth": Eth_JS,
- "miner": Miner_JS,
- "net": Net_JS,
- "personal": Personal_JS,
- "rpc": RPC_JS,
- "shh": Shh_JS,
- "txpool": TxPool_JS,
+ "admin": Admin_JS,
+ "bzz": Bzz_JS,
+ "chequebook": Chequebook_JS,
+ "debug": Debug_JS,
+ "ens": ENS_JS,
+ "eth": Eth_JS,
+ "miner": Miner_JS,
+ "net": Net_JS,
+ "personal": Personal_JS,
+ "rpc": RPC_JS,
+ "shh": Shh_JS,
+ "txpool": TxPool_JS,
}
+const Bzz_JS = `
+web3._extend({
+ property: 'bzz',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'blockNetworkRead',
+ call: 'bzz_blockNetworkRead',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'syncEnabled',
+ call: 'bzz_syncEnabled',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'swapEnabled',
+ call: 'bzz_swapEnabled',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'download',
+ call: 'bzz_download',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'upload',
+ call: 'bzz_upload',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'retrieve',
+ call: 'bzz_retrieve',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'store',
+ call: 'bzz_store',
+ params: 2,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'get',
+ call: 'bzz_get',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'put',
+ call: 'bzz_put',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'modify',
+ call: 'bzz_modify',
+ params: 4,
+ inputFormatter: [null, null, null, null]
+ })
+ ],
+ properties:
+ [
+ new web3._extend.Property({
+ name: 'hive',
+ getter: 'bzz_hive'
+ }),
+ new web3._extend.Property({
+ name: 'info',
+ getter: 'bzz_info',
+ }),
+ ]
+});
+`
+
+const ENS_JS = `
+web3._extend({
+ property: 'ens',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'register',
+ call: 'ens_register',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'setContentHash',
+ call: 'ens_setContentHash',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ new web3._extend.Method({
+ name: 'resolve',
+ call: 'ens_resolve',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ ]
+})
+`
+
+const Chequebook_JS = `
+web3._extend({
+ property: 'chequebook',
+ methods:
+ [
+ new web3._extend.Method({
+ name: 'deposit',
+ call: 'chequebook_deposit',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Property({
+ name: 'balance',
+ getter: 'chequebook_balance',
+ outputFormatter: web3._extend.utils.toDecimal
+ }),
+ new web3._extend.Method({
+ name: 'cash',
+ call: 'chequebook_cash',
+ params: 1,
+ inputFormatter: [null]
+ }),
+ new web3._extend.Method({
+ name: 'issue',
+ call: 'chequebook_issue',
+ params: 2,
+ inputFormatter: [null, null]
+ }),
+ ]
+});
+`
+
const Admin_JS = `
web3._extend({
property: 'admin',
@@ -40,6 +182,11 @@ web3._extend({
params: 1
}),
new web3._extend.Method({
+ name: 'removePeer',
+ call: 'admin_removePeer',
+ params: 1
+ }),
+ new web3._extend.Method({
name: 'exportChain',
call: 'admin_exportChain',
params: 1,
@@ -279,7 +426,8 @@ web3._extend({
new web3._extend.Method({
name: 'traceTransaction',
call: 'debug_traceTransaction',
- params: 1
+ params: 2,
+ inputFormatter: [null, null]
})
],
properties: []
@@ -418,8 +566,8 @@ web3._extend({
params: 2
}),
new web3._extend.Method({
- name: 'signAndSendTransaction',
- call: 'personal_signAndSendTransaction',
+ name: 'sendTransaction',
+ call: 'personal_sendTransaction',
params: 2,
inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null]
})
diff --git a/miner/agent.go b/miner/agent.go
index 4a4683bc6..16f2a7723 100644
--- a/miner/agent.go
+++ b/miner/agent.go
@@ -43,8 +43,10 @@ type CpuAgent struct {
func NewCpuAgent(index int, pow pow.PoW) *CpuAgent {
miner := &CpuAgent{
- pow: pow,
- index: index,
+ pow: pow,
+ index: index,
+ quit: make(chan struct{}),
+ workCh: make(chan *Work, 1),
}
return miner
@@ -55,25 +57,15 @@ func (self *CpuAgent) Pow() pow.PoW { return self.pow }
func (self *CpuAgent) SetReturnCh(ch chan<- *Result) { self.returnCh = ch }
func (self *CpuAgent) Stop() {
- self.mu.Lock()
- defer self.mu.Unlock()
-
close(self.quit)
}
func (self *CpuAgent) Start() {
- self.mu.Lock()
- defer self.mu.Unlock()
if !atomic.CompareAndSwapInt32(&self.isMining, 0, 1) {
return // agent already started
}
- self.quit = make(chan struct{})
- // creating current op ch makes sure we're not closing a nil ch
- // later on
- self.workCh = make(chan *Work, 1)
-
go self.update()
}
diff --git a/miner/miner.go b/miner/miner.go
index 7cc25cdf7..c16cbe6ae 100644
--- a/miner/miner.go
+++ b/miner/miner.go
@@ -22,11 +22,13 @@ import (
"math/big"
"sync/atomic"
+ "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth/downloader"
+ "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
@@ -34,6 +36,15 @@ import (
"github.com/ethereum/go-ethereum/pow"
)
+// Backend wraps all methods required for mining.
+type Backend interface {
+ AccountManager() *accounts.Manager
+ BlockChain() *core.BlockChain
+ TxPool() *core.TxPool
+ ChainDb() ethdb.Database
+}
+
+// Miner creates blocks and searches for proof-of-work values.
type Miner struct {
mux *event.TypeMux
@@ -44,15 +55,21 @@ type Miner struct {
threads int
coinbase common.Address
mining int32
- eth core.Backend
+ eth Backend
pow pow.PoW
canStart int32 // can start indicates whether we can start the mining operation
shouldStart int32 // should start indicates whether we should start after sync
}
-func New(eth core.Backend, config *core.ChainConfig, mux *event.TypeMux, pow pow.PoW) *Miner {
- miner := &Miner{eth: eth, mux: mux, pow: pow, worker: newWorker(config, common.Address{}, eth), canStart: 1}
+func New(eth Backend, config *core.ChainConfig, mux *event.TypeMux, pow pow.PoW) *Miner {
+ miner := &Miner{
+ eth: eth,
+ mux: mux,
+ pow: pow,
+ worker: newWorker(config, common.Address{}, eth, mux),
+ canStart: 1,
+ }
go miner.update()
return miner
diff --git a/miner/worker.go b/miner/worker.go
index 09cf6b6aa..1676036d8 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -17,6 +17,7 @@
package miner
import (
+ "bytes"
"fmt"
"math/big"
"sync"
@@ -33,6 +34,7 @@ import (
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/pow"
"gopkg.in/fatih/set.v0"
)
@@ -58,21 +60,19 @@ type uint64RingBuffer struct {
next int //where is the next insertion? assert 0 <= next < len(ints)
}
-// environment is the workers current environment and holds
+// Work is the workers current environment and holds
// all of the current state information
type Work struct {
- config *core.ChainConfig
- state *state.StateDB // apply state changes here
- ancestors *set.Set // ancestor set (used for checking uncle parent validity)
- family *set.Set // family set (used for checking uncle invalidity)
- uncles *set.Set // uncle set
- remove *set.Set // tx which will be removed
- tcount int // tx count in cycle
- ignoredTransactors *set.Set
- lowGasTransactors *set.Set
- ownedAccounts *set.Set
- lowGasTxs types.Transactions
- localMinedBlocks *uint64RingBuffer // the most recent block numbers that were mined locally (used to check block inclusion)
+ config *core.ChainConfig
+ state *state.StateDB // apply state changes here
+ ancestors *set.Set // ancestor set (used for checking uncle parent validity)
+ family *set.Set // family set (used for checking uncle invalidity)
+ uncles *set.Set // uncle set
+ tcount int // tx count in cycle
+ ownedAccounts *set.Set
+ lowGasTxs types.Transactions
+ failedTxs types.Transactions
+ localMinedBlocks *uint64RingBuffer // the most recent block numbers that were mined locally (used to check block inclusion)
Block *types.Block // the new block
@@ -103,7 +103,7 @@ type worker struct {
recv chan *Result
pow pow.PoW
- eth core.Backend
+ eth Backend
chain *core.BlockChain
proc core.Validator
chainDb ethdb.Database
@@ -128,11 +128,11 @@ type worker struct {
fullValidation bool
}
-func newWorker(config *core.ChainConfig, coinbase common.Address, eth core.Backend) *worker {
+func newWorker(config *core.ChainConfig, coinbase common.Address, eth Backend, mux *event.TypeMux) *worker {
worker := &worker{
config: config,
eth: eth,
- mux: eth.EventMux(),
+ mux: mux,
chainDb: eth.ChainDb(),
recv: make(chan *Result, resultQueueSize),
gasPrice: new(big.Int),
@@ -234,7 +234,12 @@ func (self *worker) update() {
// Apply transaction to the pending state if we're not mining
if atomic.LoadInt32(&self.mining) == 0 {
self.currentMu.Lock()
- self.current.commitTransactions(self.mux, types.Transactions{ev.Tx}, self.gasPrice, self.chain)
+
+ acc, _ := ev.Tx.From()
+ txs := map[common.Address]types.Transactions{acc: types.Transactions{ev.Tx}}
+ txset := types.NewTransactionsByPriceAndNonce(txs)
+
+ self.current.commitTransactions(self.mux, txset, self.gasPrice, self.chain)
self.currentMu.Unlock()
}
}
@@ -381,10 +386,7 @@ func (self *worker) makeCurrent(parent *types.Block, header *types.Header) error
accounts := self.eth.AccountManager().Accounts()
// Keep track of transactions which return errors so they can be removed
- work.remove = set.New()
work.tcount = 0
- work.ignoredTransactors = set.New()
- work.lowGasTransactors = set.New()
work.ownedAccounts = accountAddressesSet(accounts)
if self.current != nil {
work.localMinedBlocks = self.current.localMinedBlocks
@@ -468,7 +470,19 @@ func (self *worker) commitNewWork() {
Extra: self.extra,
Time: big.NewInt(tstamp),
}
-
+ // If we are care about TheDAO hard-fork check whether to override the extra-data or not
+ if daoBlock := self.config.DAOForkBlock; daoBlock != nil {
+ // Check whether the block is among the fork extra-override range
+ limit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange)
+ if header.Number.Cmp(daoBlock) >= 0 && header.Number.Cmp(limit) < 0 {
+ // Depending whether we support or oppose the fork, override differently
+ if self.config.DAOForkSupport {
+ header.Extra = common.CopyBytes(params.DAOForkBlockExtra)
+ } else if bytes.Compare(header.Extra, params.DAOForkBlockExtra) == 0 {
+ header.Extra = []byte{} // If miner opposes, don't let it use the reserved extra-data
+ }
+ }
+ }
previous := self.current
// Could potentially happen if starting to mine in an odd state.
err := self.makeCurrent(parent, header)
@@ -476,46 +490,16 @@ func (self *worker) commitNewWork() {
glog.V(logger.Info).Infoln("Could not create new env for mining, retrying on next block.")
return
}
+ // Create the current work task and check any fork transitions needed
work := self.current
-
- /* //approach 1
- transactions := self.eth.TxPool().GetTransactions()
- sort.Sort(types.TxByNonce(transactions))
- */
-
- //approach 2
- transactions := self.eth.TxPool().GetTransactions()
- types.SortByPriceAndNonce(transactions)
-
- /* // approach 3
- // commit transactions for this run.
- txPerOwner := make(map[common.Address]types.Transactions)
- // Sort transactions by owner
- for _, tx := range self.eth.TxPool().GetTransactions() {
- from, _ := tx.From() // we can ignore the sender error
- txPerOwner[from] = append(txPerOwner[from], tx)
+ if self.config.DAOForkSupport && self.config.DAOForkBlock != nil && self.config.DAOForkBlock.Cmp(header.Number) == 0 {
+ core.ApplyDAOHardFork(work.state)
}
- var (
- singleTxOwner types.Transactions
- multiTxOwner types.Transactions
- )
- // Categorise transactions by
- // 1. 1 owner tx per block
- // 2. multi txs owner per block
- for _, txs := range txPerOwner {
- if len(txs) == 1 {
- singleTxOwner = append(singleTxOwner, txs[0])
- } else {
- multiTxOwner = append(multiTxOwner, txs...)
- }
- }
- sort.Sort(types.TxByPrice(singleTxOwner))
- sort.Sort(types.TxByNonce(multiTxOwner))
- transactions := append(singleTxOwner, multiTxOwner...)
- */
+ txs := types.NewTransactionsByPriceAndNonce(self.eth.TxPool().Pending())
+ work.commitTransactions(self.mux, txs, self.gasPrice, self.chain)
- work.commitTransactions(self.mux, transactions, self.gasPrice, self.chain)
- self.eth.TxPool().RemoveTransactions(work.lowGasTxs)
+ self.eth.TxPool().RemoveBatch(work.lowGasTxs)
+ self.eth.TxPool().RemoveBatch(work.failedTxs)
// compute uncles for the new block.
var (
@@ -573,65 +557,52 @@ func (self *worker) commitUncle(work *Work, uncle *types.Header) error {
return nil
}
-func (env *Work) commitTransactions(mux *event.TypeMux, transactions types.Transactions, gasPrice *big.Int, bc *core.BlockChain) {
+func (env *Work) commitTransactions(mux *event.TypeMux, txs *types.TransactionsByPriceAndNonce, gasPrice *big.Int, bc *core.BlockChain) {
gp := new(core.GasPool).AddGas(env.header.GasLimit)
var coalescedLogs vm.Logs
- for _, tx := range transactions {
+
+ for {
+ // Retrieve the next transaction and abort if all done
+ tx := txs.Peek()
+ if tx == nil {
+ break
+ }
// Error may be ignored here. The error has already been checked
// during transaction acceptance is the transaction pool.
from, _ := tx.From()
- // Check if it falls within margin. Txs from owned accounts are always processed.
+ // Ignore any transactions (and accounts subsequently) with low gas limits
if tx.GasPrice().Cmp(gasPrice) < 0 && !env.ownedAccounts.Has(from) {
- // ignore the transaction and transactor. We ignore the transactor
- // because nonce will fail after ignoring this transaction so there's
- // no point
- env.lowGasTransactors.Add(from)
+ // Pop the current low-priced transaction without shifting in the next from the account
+ glog.V(logger.Info).Infof("Transaction (%x) below gas price (tx=%v ask=%v). All sequential txs from this address(%x) will be ignored\n", tx.Hash().Bytes()[:4], common.CurrencyToString(tx.GasPrice()), common.CurrencyToString(gasPrice), from[:4])
- glog.V(logger.Info).Infof("transaction(%x) below gas price (tx=%v ask=%v). All sequential txs from this address(%x) will be ignored\n", tx.Hash().Bytes()[:4], common.CurrencyToString(tx.GasPrice()), common.CurrencyToString(gasPrice), from[:4])
- }
-
- // Continue with the next transaction if the transaction sender is included in
- // the low gas tx set. This will also remove the tx and all sequential transaction
- // from this transactor
- if env.lowGasTransactors.Has(from) {
- // add tx to the low gas set. This will be removed at the end of the run
- // owned accounts are ignored
- if !env.ownedAccounts.Has(from) {
- env.lowGasTxs = append(env.lowGasTxs, tx)
- }
- continue
- }
+ env.lowGasTxs = append(env.lowGasTxs, tx)
+ txs.Pop()
- // Move on to the next transaction when the transactor is in ignored transactions set
- // This may occur when a transaction hits the gas limit. When a gas limit is hit and
- // the transaction is processed (that could potentially be included in the block) it
- // will throw a nonce error because the previous transaction hasn't been processed.
- // Therefor we need to ignore any transaction after the ignored one.
- if env.ignoredTransactors.Has(from) {
continue
}
-
- env.state.StartRecord(tx.Hash(), common.Hash{}, 0)
+ // Start executing the transaction
+ env.state.StartRecord(tx.Hash(), common.Hash{}, env.tcount)
err, logs := env.commitTransaction(tx, bc, gp)
switch {
case core.IsGasLimitErr(err):
- // ignore the transactor so no nonce errors will be thrown for this account
- // next time the worker is run, they'll be picked up again.
- env.ignoredTransactors.Add(from)
-
+ // Pop the current out-of-gas transaction without shifting in the next from the account
glog.V(logger.Detail).Infof("Gas limit reached for (%x) in this block. Continue to try smaller txs\n", from[:4])
+ txs.Pop()
+
case err != nil:
- env.remove.Add(tx.Hash())
+ // Pop the current failed transaction without shifting in the next from the account
+ glog.V(logger.Detail).Infof("Transaction (%x) failed, will be removed: %v\n", tx.Hash().Bytes()[:4], err)
+ env.failedTxs = append(env.failedTxs, tx)
+ txs.Pop()
- if glog.V(logger.Detail) {
- glog.Infof("TX (%x) failed, will be removed: %v\n", tx.Hash().Bytes()[:4], err)
- }
default:
- env.tcount++
+ // Everything ok, collect the logs and shift in the next transaction from the same account
coalescedLogs = append(coalescedLogs, logs...)
+ env.tcount++
+ txs.Shift()
}
}
if len(coalescedLogs) > 0 || env.tcount > 0 {
diff --git a/node/api.go b/node/api.go
index 9b2be9c2e..3523874ab 100644
--- a/node/api.go
+++ b/node/api.go
@@ -58,6 +58,22 @@ func (api *PrivateAdminAPI) AddPeer(url string) (bool, error) {
return true, nil
}
+// RemovePeer disconnects from a a remote node if the connection exists
+func (api *PrivateAdminAPI) RemovePeer(url string) (bool, error) {
+ // Make sure the server is running, fail otherwise
+ server := api.node.Server()
+ if server == nil {
+ return false, ErrNodeStopped
+ }
+ // Try to remove the url as a static peer and return
+ node, err := discover.ParseNode(url)
+ if err != nil {
+ return false, fmt.Errorf("invalid enode: %v", err)
+ }
+ server.RemovePeer(node)
+ return true, nil
+}
+
// StartRPC starts the HTTP RPC API server.
func (api *PrivateAdminAPI) StartRPC(host *string, port *rpc.HexNumber, cors *string, apis *string) (bool, error) {
api.node.lock.Lock()
diff --git a/node/config.go b/node/config.go
index bc9fec618..432da7015 100644
--- a/node/config.go
+++ b/node/config.go
@@ -27,6 +27,7 @@ import (
"runtime"
"strings"
+ "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger"
@@ -36,10 +37,11 @@ import (
)
var (
- datadirPrivateKey = "nodekey" // Path within the datadir to the node's private key
- datadirStaticNodes = "static-nodes.json" // Path within the datadir to the static node list
- datadirTrustedNodes = "trusted-nodes.json" // Path within the datadir to the trusted node list
- datadirNodeDatabase = "nodes" // Path within the datadir to store the node infos
+ datadirPrivateKey = "nodekey" // Path within the datadir to the node's private key
+ datadirDefaultKeyStore = "keystore" // Path within the datadir to the keystore
+ datadirStaticNodes = "static-nodes.json" // Path within the datadir to the static node list
+ datadirTrustedNodes = "trusted-nodes.json" // Path within the datadir to the trusted node list
+ datadirNodeDatabase = "nodes" // Path within the datadir to store the node infos
)
// Config represents a small collection of configuration values to fine tune the
@@ -53,6 +55,19 @@ type Config struct {
// in memory.
DataDir string
+ // KeyStoreDir is the file system folder that contains private keys. The directory can
+ // be specified as a relative path, in which case it is resolved relative to the
+ // current directory.
+ //
+ // If KeyStoreDir is empty, the default location is the "keystore" subdirectory of
+ // DataDir. If DataDir is unspecified and KeyStoreDir is empty, an ephemeral directory
+ // is created by New and destroyed when the node is stopped.
+ KeyStoreDir string
+
+ // UseLightweightKDF lowers the memory and CPU requirements of the key store
+ // scrypt KDF at the expense of security.
+ UseLightweightKDF bool
+
// IPCPath is the requested location to place the IPC endpoint. If the path is
// a simple file name, it is placed inside the data directory (or on the root
// pipe path on Windows), whereas if it's a resolvable path name (absolute or
@@ -278,3 +293,38 @@ func (c *Config) parsePersistentNodes(file string) []*discover.Node {
}
return nodes
}
+
+func makeAccountManager(conf *Config) (am *accounts.Manager, ephemeralKeystore string, err error) {
+ scryptN := accounts.StandardScryptN
+ scryptP := accounts.StandardScryptP
+ if conf.UseLightweightKDF {
+ scryptN = accounts.LightScryptN
+ scryptP = accounts.LightScryptP
+ }
+
+ var keydir string
+ switch {
+ case filepath.IsAbs(conf.KeyStoreDir):
+ keydir = conf.KeyStoreDir
+ case conf.DataDir != "":
+ if conf.KeyStoreDir == "" {
+ keydir = filepath.Join(conf.DataDir, datadirDefaultKeyStore)
+ } else {
+ keydir, err = filepath.Abs(conf.KeyStoreDir)
+ }
+ case conf.KeyStoreDir != "":
+ keydir, err = filepath.Abs(conf.KeyStoreDir)
+ default:
+ // There is no datadir.
+ keydir, err = ioutil.TempDir("", "go-ethereum-keystore")
+ ephemeralKeystore = keydir
+ }
+ if err != nil {
+ return nil, "", err
+ }
+ if err := os.MkdirAll(keydir, 0700); err != nil {
+ return nil, "", err
+ }
+
+ return accounts.NewManager(keydir, scryptN, scryptP), ephemeralKeystore, nil
+}
diff --git a/node/node.go b/node/node.go
index 1f517a027..f3be2f763 100644
--- a/node/node.go
+++ b/node/node.go
@@ -26,6 +26,7 @@ import (
"sync"
"syscall"
+ "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/internal/debug"
"github.com/ethereum/go-ethereum/logger"
@@ -49,6 +50,9 @@ type Node struct {
datadir string // Path to the currently used data directory
eventmux *event.TypeMux // Event multiplexer used between the services of a stack
+ accman *accounts.Manager
+ ephemeralKeystore string // if non-empty, the key directory that will be removed by Stop
+
serverConfig p2p.Config
server *p2p.Server // Currently running P2P networking layer
@@ -90,13 +94,20 @@ func New(conf *Config) (*Node, error) {
return nil, err
}
}
+ am, ephemeralKeystore, err := makeAccountManager(conf)
+ if err != nil {
+ return nil, err
+ }
+
// Assemble the networking layer and the node itself
nodeDbPath := ""
if conf.DataDir != "" {
nodeDbPath = filepath.Join(conf.DataDir, datadirNodeDatabase)
}
return &Node{
- datadir: conf.DataDir,
+ datadir: conf.DataDir,
+ accman: am,
+ ephemeralKeystore: ephemeralKeystore,
serverConfig: p2p.Config{
PrivateKey: conf.NodeKey(),
Name: conf.Name,
@@ -156,9 +167,10 @@ func (n *Node) Start() error {
for _, constructor := range n.serviceFuncs {
// Create a new context for the particular service
ctx := &ServiceContext{
- datadir: n.datadir,
- services: make(map[reflect.Type]Service),
- EventMux: n.eventmux,
+ datadir: n.datadir,
+ services: make(map[reflect.Type]Service),
+ EventMux: n.eventmux,
+ AccountManager: n.accman,
}
for kind, s := range services { // copy needed for threaded access
ctx.services[kind] = s
@@ -473,9 +485,18 @@ func (n *Node) Stop() error {
n.server = nil
close(n.stop)
+ // Remove the keystore if it was created ephemerally.
+ var keystoreErr error
+ if n.ephemeralKeystore != "" {
+ keystoreErr = os.RemoveAll(n.ephemeralKeystore)
+ }
+
if len(failure.Services) > 0 {
return failure
}
+ if keystoreErr != nil {
+ return keystoreErr
+ }
return nil
}
@@ -505,16 +526,14 @@ func (n *Node) Restart() error {
}
// Attach creates an RPC client attached to an in-process API handler.
-func (n *Node) Attach() (rpc.Client, error) {
+func (n *Node) Attach() (*rpc.Client, error) {
n.lock.RLock()
defer n.lock.RUnlock()
- // Short circuit if the node's not running
if n.server == nil {
return nil, ErrNodeStopped
}
- // Otherwise attach to the API and return
- return rpc.NewInProcRPCClient(n.inprocHandler), nil
+ return rpc.DialInProc(n.inprocHandler), nil
}
// Server retrieves the currently running P2P network layer. This method is meant
@@ -550,6 +569,11 @@ func (n *Node) DataDir() string {
return n.datadir
}
+// AccountManager retrieves the account manager used by the protocol stack.
+func (n *Node) AccountManager() *accounts.Manager {
+ return n.accman
+}
+
// IPCEndpoint retrieves the current IPC endpoint used by the protocol stack.
func (n *Node) IPCEndpoint() string {
return n.ipcEndpoint
diff --git a/node/node_test.go b/node/node_test.go
index 372fc6b10..d9b26453b 100644
--- a/node/node_test.go
+++ b/node/node_test.go
@@ -507,21 +507,27 @@ func TestAPIGather(t *testing.T) {
}
// Register a batch of services with some configured APIs
calls := make(chan string, 1)
-
+ makeAPI := func(result string) *OneMethodApi {
+ return &OneMethodApi{fun: func() { calls <- result }}
+ }
services := map[string]struct {
APIs []rpc.API
Maker InstrumentingWrapper
}{
- "Zero APIs": {[]rpc.API{}, InstrumentedServiceMakerA},
- "Single API": {[]rpc.API{
- {"single", "1", &OneMethodApi{fun: func() { calls <- "single.v1" }}, true},
- }, InstrumentedServiceMakerB},
- "Many APIs": {[]rpc.API{
- {"multi", "1", &OneMethodApi{fun: func() { calls <- "multi.v1" }}, true},
- {"multi.v2", "2", &OneMethodApi{fun: func() { calls <- "multi.v2" }}, true},
- {"multi.v2.nested", "2", &OneMethodApi{fun: func() { calls <- "multi.v2.nested" }}, true},
- }, InstrumentedServiceMakerC},
+ "Zero APIs": {
+ []rpc.API{}, InstrumentedServiceMakerA},
+ "Single API": {
+ []rpc.API{
+ {Namespace: "single", Version: "1", Service: makeAPI("single.v1"), Public: true},
+ }, InstrumentedServiceMakerB},
+ "Many APIs": {
+ []rpc.API{
+ {Namespace: "multi", Version: "1", Service: makeAPI("multi.v1"), Public: true},
+ {Namespace: "multi.v2", Version: "2", Service: makeAPI("multi.v2"), Public: true},
+ {Namespace: "multi.v2.nested", Version: "2", Service: makeAPI("multi.v2.nested"), Public: true},
+ }, InstrumentedServiceMakerC},
}
+
for id, config := range services {
config := config
constructor := func(*ServiceContext) (Service, error) {
@@ -554,12 +560,8 @@ func TestAPIGather(t *testing.T) {
{"multi.v2.nested_theOneMethod", "multi.v2.nested"},
}
for i, test := range tests {
- if err := client.Send(rpc.JSONRequest{Id: []byte("1"), Version: "2.0", Method: test.Method}); err != nil {
- t.Fatalf("test %d: failed to send API request: %v", i, err)
- }
- reply := new(rpc.JSONSuccessResponse)
- if err := client.Recv(reply); err != nil {
- t.Fatalf("test %d: failed to read API reply: %v", i, err)
+ if err := client.Call(nil, test.Method); err != nil {
+ t.Errorf("test %d: API request failed: %v", i, err)
}
select {
case result := <-calls:
diff --git a/node/service.go b/node/service.go
index 4d9a6e42c..51531466b 100644
--- a/node/service.go
+++ b/node/service.go
@@ -20,6 +20,7 @@ import (
"path/filepath"
"reflect"
+ "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/p2p"
@@ -30,9 +31,10 @@ import (
// the protocol stack, that is passed to all constructors to be optionally used;
// as well as utility methods to operate on the service environment.
type ServiceContext struct {
- datadir string // Data directory for protocol persistence
- services map[reflect.Type]Service // Index of the already constructed services
- EventMux *event.TypeMux // Event multiplexer used for decoupled notifications
+ datadir string // Data directory for protocol persistence
+ services map[reflect.Type]Service // Index of the already constructed services
+ EventMux *event.TypeMux // Event multiplexer used for decoupled notifications
+ AccountManager *accounts.Manager // Account manager created by the node.
}
// OpenDatabase opens an existing database with the given name (or creates one
diff --git a/p2p/dial.go b/p2p/dial.go
index c0e703d7d..691b8539e 100644
--- a/p2p/dial.go
+++ b/p2p/dial.go
@@ -121,6 +121,11 @@ func (s *dialstate) addStatic(n *discover.Node) {
s.static[n.ID] = &dialTask{flags: staticDialedConn, dest: n}
}
+func (s *dialstate) removeStatic(n *discover.Node) {
+ // This removes a task so future attempts to connect will not be made.
+ delete(s.static, n.ID)
+}
+
func (s *dialstate) newTasks(nRunning int, peers map[discover.NodeID]*Peer, now time.Time) []task {
var newtasks []task
isDialing := func(id discover.NodeID) bool {
diff --git a/p2p/server.go b/p2p/server.go
index 880aa7cf1..8e3cd93f9 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -142,6 +142,7 @@ type Server struct {
quit chan struct{}
addstatic chan *discover.Node
+ removestatic chan *discover.Node
posthandshake chan *conn
addpeer chan *conn
delpeer chan *Peer
@@ -257,6 +258,14 @@ func (srv *Server) AddPeer(node *discover.Node) {
}
}
+// RemovePeer disconnects from the given node
+func (srv *Server) RemovePeer(node *discover.Node) {
+ select {
+ case srv.removestatic <- node:
+ case <-srv.quit:
+ }
+}
+
// Self returns the local node's endpoint information.
func (srv *Server) Self() *discover.Node {
srv.lock.Lock()
@@ -327,6 +336,7 @@ func (srv *Server) Start() (err error) {
srv.delpeer = make(chan *Peer)
srv.posthandshake = make(chan *conn)
srv.addstatic = make(chan *discover.Node)
+ srv.removestatic = make(chan *discover.Node)
srv.peerOp = make(chan peerOpFunc)
srv.peerOpDone = make(chan struct{})
@@ -395,6 +405,7 @@ type dialer interface {
newTasks(running int, peers map[discover.NodeID]*Peer, now time.Time) []task
taskDone(task, time.Time)
addStatic(*discover.Node)
+ removeStatic(*discover.Node)
}
func (srv *Server) run(dialstate dialer) {
@@ -458,6 +469,15 @@ running:
// it will keep the node connected.
glog.V(logger.Detail).Infoln("<-addstatic:", n)
dialstate.addStatic(n)
+ case n := <-srv.removestatic:
+ // This channel is used by RemovePeer to send a
+ // disconnect request to a peer and begin the
+ // stop keeping the node connected
+ glog.V(logger.Detail).Infoln("<-removestatic:", n)
+ dialstate.removeStatic(n)
+ if p, ok := peers[n.ID]; ok {
+ p.Disconnect(DiscRequested)
+ }
case op := <-srv.peerOp:
// This channel is used by Peers and PeerCount.
op(peers)
diff --git a/p2p/server_test.go b/p2p/server_test.go
index deb34f5bb..313d086ec 100644
--- a/p2p/server_test.go
+++ b/p2p/server_test.go
@@ -301,6 +301,8 @@ func (tg taskgen) taskDone(t task, now time.Time) {
}
func (tg taskgen) addStatic(*discover.Node) {
}
+func (tg taskgen) removeStatic(*discover.Node) {
+}
type testTask struct {
index int
diff --git a/params/dao.go b/params/dao.go
new file mode 100644
index 000000000..3e2a68cc9
--- /dev/null
+++ b/params/dao.go
@@ -0,0 +1,418 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package params
+
+import (
+ "encoding/json"
+ "fmt"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+// TestNetDAOForkBlock is the block number where the DAO hard-fork commences on
+// the Ethereum test network. It's enforced nil since it was decided not to do a
+// testnet transition.
+var TestNetDAOForkBlock *big.Int
+
+// MainNetDAOForkBlock is the block number where the DAO hard-fork commences on
+// the Ethereum main network.
+var MainNetDAOForkBlock = big.NewInt(1920000)
+
+// DAOForkBlockExtra is the block header extra-data field to set for the DAO fork
+// point and a number of consecutive blocks to allow fast/light syncers to correctly
+// pick the side they want ("dao-hard-fork").
+var DAOForkBlockExtra = common.FromHex("0x64616f2d686172642d666f726b")
+
+// DAOForkExtraRange is the number of consecutive blocks from the DAO fork point
+// to override the extra-data in to prevent no-fork attacks.
+var DAOForkExtraRange = big.NewInt(10)
+
+// DAORefundContract is the address of the refund contract to send DAO balances to.
+var DAORefundContract = common.HexToAddress("0xbf4ed7b27f1d666546e30d74d50d173d20bca754")
+
+// DAODrainList is the list of accounts whose full balances will be moved into a
+// refund contract at the beginning of the dao-fork block.
+var DAODrainList []common.Address
+
+func init() {
+ // Parse the list of DAO accounts to drain
+ var list []map[string]string
+ if err := json.Unmarshal([]byte(daoDrainListJSON), &list); err != nil {
+ panic(fmt.Errorf("Failed to parse DAO drain list: %v", err))
+ }
+ // Collect all the accounts that need draining
+ for _, dao := range list {
+ DAODrainList = append(DAODrainList, common.HexToAddress(dao["address"]))
+ DAODrainList = append(DAODrainList, common.HexToAddress(dao["extraBalanceAccount"]))
+ }
+}
+
+// daoDrainListJSON is the JSON encoded list of accounts whose full balances will
+// be moved into a refund contract at the beginning of the dao-fork block.
+const daoDrainListJSON = `
+[
+ {
+ "address":"0xd4fe7bc31cedb7bfb8a345f31e668033056b2728",
+ "balance":"186cc8bfaefb7be",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xb3fb0e5aba0e20e5c49d252dfd30e102b171a425"
+ },
+ {
+ "address":"0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f",
+ "balance":"b14e8feab1ff435",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xecd135fa4f61a655311e86238c92adcd779555d2"
+ },
+ {
+ "address":"0x1975bd06d486162d5dc297798dfc41edd5d160a7",
+ "balance":"359d26614cb5070c77",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xa3acf3a1e16b1d7c315e23510fdd7847b48234f6"
+ },
+ {
+ "address":"0x319f70bab6845585f412ec7724b744fec6095c85",
+ "balance":"6e075cd846d2cb1d42",
+ "extraBalance":"13d34fd41b545b81",
+ "extraBalanceAccount":"0x06706dd3f2c9abf0a21ddcc6941d9b86f0596936"
+ },
+ {
+ "address":"0x5c8536898fbb74fc7445814902fd08422eac56d0",
+ "balance":"b1e5593558008fd78",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x6966ab0d485353095148a2155858910e0965b6f9"
+ },
+ {
+ "address":"0x779543a0491a837ca36ce8c635d6154e3c4911a6",
+ "balance":"392eaa20d1aad59a4c",
+ "extraBalance":"426938826a96c9",
+ "extraBalanceAccount":"0x2a5ed960395e2a49b1c758cef4aa15213cfd874c"
+ },
+ {
+ "address":"0x5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5",
+ "balance":"2875d22b29793d4ba7",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x9c50426be05db97f5d64fc54bf89eff947f0a321"
+ },
+ {
+ "address":"0x200450f06520bdd6c527622a273333384d870efb",
+ "balance":"43c341d9f96954c049",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xbe8539bfe837b67d1282b2b1d61c3f723966f049"
+ },
+ {
+ "address":"0x6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb",
+ "balance":"75251057154d70fa816",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xf1385fb24aad0cd7432824085e42aff90886fef5"
+ },
+ {
+ "address":"0xd1ac8b1ef1b69ff51d1d401a476e7e612414f091",
+ "balance":"392409769296cf67f36",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x8163e7fb499e90f8544ea62bbf80d21cd26d9efd"
+ },
+ {
+ "address":"0x51e0ddd9998364a2eb38588679f0d2c42653e4a6",
+ "balance":"8ac72eccbf4e8083",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x627a0a960c079c21c34f7612d5d230e01b4ad4c7"
+ },
+ {
+ "address":"0xf0b1aa0eb660754448a7937c022e30aa692fe0c5",
+ "balance":"82289c3bb3e8c98799",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x24c4d950dfd4dd1902bbed3508144a54542bba94"
+ },
+ {
+ "address":"0x9f27daea7aca0aa0446220b98d028715e3bc803d",
+ "balance":"56bc29049ebed40fd",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xa5dc5acd6a7968a4554d89d65e59b7fd3bff0f90"
+ },
+ {
+ "address":"0xd9aef3a1e38a39c16b31d1ace71bca8ef58d315b",
+ "balance":"56bc7d3ff79110524",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x63ed5a272de2f6d968408b4acb9024f4cc208ebf"
+ },
+ {
+ "address":"0x6f6704e5a10332af6672e50b3d9754dc460dfa4d",
+ "balance":"23b651bd48cbc70cc",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6"
+ },
+ {
+ "address":"0x492ea3bb0f3315521c31f273e565b868fc090f17",
+ "balance":"13ea6d4fee651dd7c9",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x0ff30d6de14a8224aa97b78aea5388d1c51c1f00"
+ },
+ {
+ "address":"0x9ea779f907f0b315b364b0cfc39a0fde5b02a416",
+ "balance":"35ac471a3836ae7de5a",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xceaeb481747ca6c540a000c1f3641f8cef161fa7"
+ },
+ {
+ "address":"0xcc34673c6c40e791051898567a1222daf90be287",
+ "balance":"d529c0b76b7aa0",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x579a80d909f346fbfb1189493f521d7f48d52238"
+ },
+ {
+ "address":"0xe308bd1ac5fda103967359b2712dd89deffb7973",
+ "balance":"5cd9e7df3a8e5cdd3",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x4cb31628079fb14e4bc3cd5e30c2f7489b00960c"
+ },
+ {
+ "address":"0xac1ecab32727358dba8962a0f3b261731aad9723",
+ "balance":"2c8442fe35363313b93",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x4fd6ace747f06ece9c49699c7cabc62d02211f75"
+ },
+ {
+ "address":"0x440c59b325d2997a134c2c7c60a8c61611212bad",
+ "balance":"e77583a3958130e53",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x4486a3d68fac6967006d7a517b889fd3f98c102b"
+ },
+ {
+ "address":"0x9c15b54878ba618f494b38f0ae7443db6af648ba",
+ "balance":"1f0b6ade348ca998",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x27b137a85656544b1ccb5a0f2e561a5703c6a68f"
+ },
+ {
+ "address":"0x21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241",
+ "balance":"61725880736659",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x23b75c2f6791eef49c69684db4c6c1f93bf49a50"
+ },
+ {
+ "address":"0x1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b",
+ "balance":"42948d8dc7ddbc22d",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xb9637156d330c0d605a791f1c31ba5890582fe1c"
+ },
+ {
+ "address":"0x6131c42fa982e56929107413a9d526fd99405560",
+ "balance":"7306683851d1eafbfa",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x1591fc0f688c81fbeb17f5426a162a7024d430c2"
+ },
+ {
+ "address":"0x542a9515200d14b68e934e9830d91645a980dd7a",
+ "balance":"2a8457d0d8432e21d0c",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xc4bbd073882dd2add2424cf47d35213405b01324"
+ },
+ {
+ "address":"0x782495b7b3355efb2833d56ecb34dc22ad7dfcc4",
+ "balance":"d8d7391feaeaa8cdb",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x58b95c9a9d5d26825e70a82b6adb139d3fd829eb"
+ },
+ {
+ "address":"0x3ba4d81db016dc2890c81f3acec2454bff5aada5",
+ "balance":"1",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xb52042c8ca3f8aa246fa79c3feaa3d959347c0ab"
+ },
+ {
+ "address":"0xe4ae1efdfc53b73893af49113d8694a057b9c0d1",
+ "balance":"456397665fa74041",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x3c02a7bc0391e86d91b7d144e61c2c01a25a79c5"
+ },
+ {
+ "address":"0x0737a6b837f97f46ebade41b9bc3e1c509c85c53",
+ "balance":"6324dcb7126ecbef",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x97f43a37f595ab5dd318fb46e7a155eae057317a"
+ },
+ {
+ "address":"0x52c5317c848ba20c7504cb2c8052abd1fde29d03",
+ "balance":"6c3419b0705c01cd0d",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x4863226780fe7c0356454236d3b1c8792785748d"
+ },
+ {
+ "address":"0x5d2b2e6fcbe3b11d26b525e085ff818dae332479",
+ "balance":"456397665fa74041",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x5f9f3392e9f62f63b8eac0beb55541fc8627f42c"
+ },
+ {
+ "address":"0x057b56736d32b86616a10f619859c6cd6f59092a",
+ "balance":"232c025bb44b46",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x9aa008f65de0b923a2a4f02012ad034a5e2e2192"
+ },
+ {
+ "address":"0x304a554a310c7e546dfe434669c62820b7d83490",
+ "balance":"3034f5ca7d45e17df199b",
+ "extraBalance":"f7d15162c44e97b6e",
+ "extraBalanceAccount":"0x914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79"
+ },
+ {
+ "address":"0x4deb0033bb26bc534b197e61d19e0733e5679784",
+ "balance":"4417e96ed796591e09",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x07f5c1e1bc2c93e0402f23341973a0e043f7bf8a"
+ },
+ {
+ "address":"0x35a051a0010aba705c9008d7a7eff6fb88f6ea7b",
+ "balance":"d3ff7771412bbcc9",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x4fa802324e929786dbda3b8820dc7834e9134a2a"
+ },
+ {
+ "address":"0x9da397b9e80755301a3b32173283a91c0ef6c87e",
+ "balance":"32ae324c233816b4c2",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x8d9edb3054ce5c5774a420ac37ebae0ac02343c6"
+ },
+ {
+ "address":"0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9",
+ "balance":"1e530695b705f037c6",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x5dc28b15dffed94048d73806ce4b7a4612a1d48f"
+ },
+ {
+ "address":"0xbcf899e6c7d9d5a215ab1e3444c86806fa854c76",
+ "balance":"68013bad5b4b1133fc5",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x12e626b0eebfe86a56d633b9864e389b45dcb260"
+ },
+ {
+ "address":"0xa2f1ccba9395d7fcb155bba8bc92db9bafaeade7",
+ "balance":"456397665fa74041",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xec8e57756626fdc07c63ad2eafbd28d08e7b0ca5"
+ },
+ {
+ "address":"0xd164b088bd9108b60d0ca3751da4bceb207b0782",
+ "balance":"3635ce47fabaaa336e",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x6231b6d0d5e77fe001c2a460bd9584fee60d409b"
+ },
+ {
+ "address":"0x1cba23d343a983e9b5cfd19496b9a9701ada385f",
+ "balance":"f3abd9906c170a",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xa82f360a8d3455c5c41366975bde739c37bfeb8a"
+ },
+ {
+ "address":"0x9fcd2deaff372a39cc679d5c5e4de7bafb0b1339",
+ "balance":"4c6679d9d9b95a4e08",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x005f5cee7a43331d5a3d3eec71305925a62f34b6"
+ },
+ {
+ "address":"0x0e0da70933f4c7849fc0d203f5d1d43b9ae4532d",
+ "balance":"40f622936475de31849",
+ "extraBalance":"671e1bbabded39754",
+ "extraBalanceAccount":"0xd131637d5275fd1a68a3200f4ad25c71a2a9522e"
+ },
+ {
+ "address":"0xbc07118b9ac290e4622f5e77a0853539789effbe",
+ "balance":"1316ccfa4a35db5e58f",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x47e7aa56d6bdf3f36be34619660de61275420af8"
+ },
+ {
+ "address":"0xacd87e28b0c9d1254e868b81cba4cc20d9a32225",
+ "balance":"b3ad6bb72000bab9f",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xadf80daec7ba8dcf15392f1ac611fff65d94f880"
+ },
+ {
+ "address":"0x5524c55fb03cf21f549444ccbecb664d0acad706",
+ "balance":"16f2da372a5c8a70967",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x40b803a9abce16f50f36a77ba41180eb90023925"
+ },
+ {
+ "address":"0xfe24cdd8648121a43a7c86d289be4dd2951ed49f",
+ "balance":"ea0b1bdc78f500a43",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x17802f43a0137c506ba92291391a8a8f207f487d"
+ },
+ {
+ "address":"0x253488078a4edf4d6f42f113d1e62836a942cf1a",
+ "balance":"3060e3aed135cc80",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x86af3e9626fce1957c82e88cbf04ddf3a2ed7915"
+ },
+ {
+ "address":"0xb136707642a4ea12fb4bae820f03d2562ebff487",
+ "balance":"6050bdeb3354b5c98adc3",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xdbe9b615a3ae8709af8b93336ce9b477e4ac0940"
+ },
+ {
+ "address":"0xf14c14075d6c4ed84b86798af0956deef67365b5",
+ "balance":"1d77844e94c25ba2",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xca544e5c4687d109611d0f8f928b53a25af72448"
+ },
+ {
+ "address":"0xaeeb8ff27288bdabc0fa5ebb731b6f409507516c",
+ "balance":"2e93a72de4fc5ec0ed",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xcbb9d3703e651b0d496cdefb8b92c25aeb2171f7"
+ },
+ {
+ "address":"0x6d87578288b6cb5549d5076a207456a1f6a63dc0",
+ "balance":"1afd340799e48c18",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0xb2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e"
+ },
+ {
+ "address":"0xaccc230e8a6e5be9160b8cdf2864dd2a001c28b6",
+ "balance":"14d0944eb3be947a8",
+ "extraBalance":"0",
+ "extraBalanceAccount":"0x2b3455ec7fedf16e646268bf88846bd7a2319bb2"
+ },
+ {
+ "address":"0x4613f3bca5c44ea06337a9e439fbc6d42e501d0a",
+ "balance":"6202b236a200e365eba",
+ "extraBalance":"11979be9020f03ec4ec",
+ "extraBalanceAccount":"0xd343b217de44030afaa275f54d31a9317c7f441e"
+ },
+ {
+ "address":"0x84ef4b2357079cd7a7c69fd7a37cd0609a679106",
+ "balance":"7ed634ebbba531901e07",
+ "extraBalance":"f9c5eff28cb08720c85",
+ "extraBalanceAccount":"0xda2fef9e4a3230988ff17df2165440f37e8b1708"
+ },
+ {
+ "address":"0xf4c64518ea10f995918a454158c6b61407ea345c",
+ "balance":"39152e15508a96ff894a",
+ "extraBalance":"14041ca908bcc185c8",
+ "extraBalanceAccount":"0x7602b46df5390e432ef1c307d4f2c9ff6d65cc97"
+ },
+ {
+ "address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413",
+ "balance":"1",
+ "extraBalance":"5553ebc",
+ "extraBalanceAccount":"0x807640a13483f8ac783c557fcdf27be11ea4ac7a"
+ }
+]
+`
diff --git a/params/util.go b/params/util.go
index b37bc79b2..9d1fa54e6 100644
--- a/params/util.go
+++ b/params/util.go
@@ -19,6 +19,6 @@ package params
import "math/big"
var (
- TestNetHomesteadBlock = big.NewInt(494000) // testnet homestead block
- MainNetHomesteadBlock = big.NewInt(1150000) // mainnet homestead block
+ TestNetHomesteadBlock = big.NewInt(494000) // Testnet homestead block
+ MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
)
diff --git a/rpc/client.go b/rpc/client.go
new file mode 100644
index 000000000..34a3b7831
--- /dev/null
+++ b/rpc/client.go
@@ -0,0 +1,776 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package rpc
+
+import (
+ "bytes"
+ "container/list"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "net"
+ "net/url"
+ "reflect"
+ "strconv"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "golang.org/x/net/context"
+)
+
+var (
+ ErrClientQuit = errors.New("client is closed")
+ ErrNoResult = errors.New("no result in JSON-RPC response")
+ ErrSubscriptionQueueOverflow = errors.New("subscription queue overflow")
+)
+
+const (
+ // Timeouts
+ tcpKeepAliveInterval = 30 * time.Second
+ defaultDialTimeout = 10 * time.Second // used when dialing if the context has no deadline
+ defaultWriteTimeout = 10 * time.Second // used for calls if the context has no deadline
+ subscribeTimeout = 5 * time.Second // overall timeout eth_subscribe, rpc_modules calls
+)
+
+const (
+ // Subscriptions are removed when the subscriber cannot keep up.
+ //
+ // This can be worked around by supplying a channel with sufficiently sized buffer,
+ // but this can be inconvenient and hard to explain in the docs. Another issue with
+ // buffered channels is that the buffer is static even though it might not be needed
+ // most of the time.
+ //
+ // The approach taken here is to maintain a per-subscription linked list buffer
+ // shrinks on demand. If the buffer reaches the size below, the subscription is
+ // dropped.
+ maxClientSubscriptionBuffer = 8000
+)
+
+// BatchElem is an element in a batch request.
+type BatchElem struct {
+ Method string
+ Args []interface{}
+ // The result is unmarshaled into this field. Result must be set to a
+ // non-nil pointer value of the desired type, otherwise the response will be
+ // discarded.
+ Result interface{}
+ // Error is set if the server returns an error for this request, or if
+ // unmarshaling into Result fails. It is not set for I/O errors.
+ Error error
+}
+
+// A value of this type can a JSON-RPC request, notification, successful response or
+// error response. Which one it is depends on the fields.
+type jsonrpcMessage struct {
+ Version string `json:"jsonrpc"`
+ ID json.RawMessage `json:"id,omitempty"`
+ Method string `json:"method,omitempty"`
+ Params json.RawMessage `json:"params,omitempty"`
+ Error *jsonError `json:"error,omitempty"`
+ Result json.RawMessage `json:"result,omitempty"`
+}
+
+func (msg *jsonrpcMessage) isNotification() bool {
+ return msg.ID == nil && msg.Method != ""
+}
+
+func (msg *jsonrpcMessage) isResponse() bool {
+ return msg.hasValidID() && msg.Method == "" && len(msg.Params) == 0
+}
+
+func (msg *jsonrpcMessage) hasValidID() bool {
+ return len(msg.ID) > 0 && msg.ID[0] != '{' && msg.ID[0] != '['
+}
+
+func (msg *jsonrpcMessage) String() string {
+ b, _ := json.Marshal(msg)
+ return string(b)
+}
+
+// Client represents a connection to an RPC server.
+type Client struct {
+ idCounter uint32
+ connectFunc func(ctx context.Context) (net.Conn, error)
+ isHTTP bool
+
+ // writeConn is only safe to access outside dispatch, with the
+ // write lock held. The write lock is taken by sending on
+ // requestOp and released by sending on sendDone.
+ writeConn net.Conn
+
+ // for dispatch
+ close chan struct{}
+ didQuit chan struct{} // closed when client quits
+ reconnected chan net.Conn // where write/reconnect sends the new connection
+ readErr chan error // errors from read
+ readResp chan []*jsonrpcMessage // valid messages from read
+ requestOp chan *requestOp // for registering response IDs
+ sendDone chan error // signals write completion, releases write lock
+ respWait map[string]*requestOp // active requests
+ subs map[string]*ClientSubscription // active subscriptions
+}
+
+type requestOp struct {
+ ids []json.RawMessage
+ err error
+ resp chan *jsonrpcMessage // receives up to len(ids) responses
+ sub *ClientSubscription // only set for EthSubscribe requests
+}
+
+func (op *requestOp) wait(ctx context.Context) (*jsonrpcMessage, error) {
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ case resp := <-op.resp:
+ return resp, op.err
+ }
+}
+
+// Dial creates a new client for the given URL.
+//
+// The currently supported URL schemes are "http", "https", "ws" and "wss". If rawurl is a
+// file name with no URL scheme, a local socket connection is established using UNIX
+// domain sockets on supported platforms and named pipes on Windows. If you want to
+// configure transport options, use DialHTTP, DialWebsocket or DialIPC instead.
+//
+// For websocket connections, the origin is set to the local host name.
+//
+// The client reconnects automatically if the connection is lost.
+func Dial(rawurl string) (*Client, error) {
+ return DialContext(context.Background(), rawurl)
+}
+
+// DialContext creates a new RPC client, just like Dial.
+//
+// The context is used to cancel or time out the initial connection establishment. It does
+// not affect subsequent interactions with the client.
+func DialContext(ctx context.Context, rawurl string) (*Client, error) {
+ u, err := url.Parse(rawurl)
+ if err != nil {
+ return nil, err
+ }
+ switch u.Scheme {
+ case "http", "https":
+ return DialHTTP(rawurl)
+ case "ws", "wss":
+ return DialWebsocket(ctx, rawurl, "")
+ case "":
+ return DialIPC(ctx, rawurl)
+ default:
+ return nil, fmt.Errorf("no known transport for URL scheme %q", u.Scheme)
+ }
+}
+
+func newClient(initctx context.Context, connectFunc func(context.Context) (net.Conn, error)) (*Client, error) {
+ conn, err := connectFunc(initctx)
+ if err != nil {
+ return nil, err
+ }
+ _, isHTTP := conn.(*httpConn)
+
+ c := &Client{
+ writeConn: conn,
+ isHTTP: isHTTP,
+ connectFunc: connectFunc,
+ close: make(chan struct{}),
+ didQuit: make(chan struct{}),
+ reconnected: make(chan net.Conn),
+ readErr: make(chan error),
+ readResp: make(chan []*jsonrpcMessage),
+ requestOp: make(chan *requestOp),
+ sendDone: make(chan error, 1),
+ respWait: make(map[string]*requestOp),
+ subs: make(map[string]*ClientSubscription),
+ }
+ if !isHTTP {
+ go c.dispatch(conn)
+ }
+ return c, nil
+}
+
+func (c *Client) nextID() json.RawMessage {
+ id := atomic.AddUint32(&c.idCounter, 1)
+ return []byte(strconv.FormatUint(uint64(id), 10))
+}
+
+// SupportedModules calls the rpc_modules method, retrieving the list of
+// APIs that are available on the server.
+func (c *Client) SupportedModules() (map[string]string, error) {
+ var result map[string]string
+ ctx, cancel := context.WithTimeout(context.Background(), subscribeTimeout)
+ defer cancel()
+ err := c.CallContext(ctx, &result, "rpc_modules")
+ return result, err
+}
+
+// Close closes the client, aborting any in-flight requests.
+func (c *Client) Close() {
+ if c.isHTTP {
+ return
+ }
+ select {
+ case c.close <- struct{}{}:
+ <-c.didQuit
+ case <-c.didQuit:
+ }
+}
+
+// Call performs a JSON-RPC call with the given arguments and unmarshals into
+// result if no error occurred.
+//
+// The result must be a pointer so that package json can unmarshal into it. You
+// can also pass nil, in which case the result is ignored.
+func (c *Client) Call(result interface{}, method string, args ...interface{}) error {
+ ctx := context.Background()
+ return c.CallContext(ctx, result, method, args...)
+}
+
+// CallContext performs a JSON-RPC call with the given arguments. If the context is
+// canceled before the call has successfully returned, CallContext returns immediately.
+//
+// The result must be a pointer so that package json can unmarshal into it. You
+// can also pass nil, in which case the result is ignored.
+func (c *Client) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error {
+ msg, err := c.newMessage(method, args...)
+ if err != nil {
+ return err
+ }
+ op := &requestOp{ids: []json.RawMessage{msg.ID}, resp: make(chan *jsonrpcMessage, 1)}
+
+ if c.isHTTP {
+ err = c.sendHTTP(ctx, op, msg)
+ } else {
+ err = c.send(ctx, op, msg)
+ }
+ if err != nil {
+ return err
+ }
+
+ // dispatch has accepted the request and will close the channel it when it quits.
+ switch resp, err := op.wait(ctx); {
+ case err != nil:
+ return err
+ case resp.Error != nil:
+ return resp.Error
+ case len(resp.Result) == 0:
+ return ErrNoResult
+ default:
+ return json.Unmarshal(resp.Result, &result)
+ }
+}
+
+// BatchCall sends all given requests as a single batch and waits for the server
+// to return a response for all of them.
+//
+// In contrast to Call, BatchCall only returns I/O errors. Any error specific to
+// a request is reported through the Error field of the corresponding BatchElem.
+//
+// Note that batch calls may not be executed atomically on the server side.
+func (c *Client) BatchCall(b []BatchElem) error {
+ ctx := context.Background()
+ return c.BatchCallContext(ctx, b)
+}
+
+// BatchCall sends all given requests as a single batch and waits for the server
+// to return a response for all of them. The wait duration is bounded by the
+// context's deadline.
+//
+// In contrast to CallContext, BatchCallContext only returns errors that have occurred
+// while sending the request. Any error specific to a request is reported through the
+// Error field of the corresponding BatchElem.
+//
+// Note that batch calls may not be executed atomically on the server side.
+func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error {
+ msgs := make([]*jsonrpcMessage, len(b))
+ op := &requestOp{
+ ids: make([]json.RawMessage, len(b)),
+ resp: make(chan *jsonrpcMessage, len(b)),
+ }
+ for i, elem := range b {
+ msg, err := c.newMessage(elem.Method, elem.Args...)
+ if err != nil {
+ return err
+ }
+ msgs[i] = msg
+ op.ids[i] = msg.ID
+ }
+
+ var err error
+ if c.isHTTP {
+ err = c.sendBatchHTTP(ctx, op, msgs)
+ } else {
+ err = c.send(ctx, op, msgs)
+ }
+
+ // Wait for all responses to come back.
+ for n := 0; n < len(b) && err == nil; n++ {
+ var resp *jsonrpcMessage
+ resp, err = op.wait(ctx)
+ if err != nil {
+ break
+ }
+ // Find the element corresponding to this response.
+ // The element is guaranteed to be present because dispatch
+ // only sends valid IDs to our channel.
+ var elem *BatchElem
+ for i := range msgs {
+ if bytes.Equal(msgs[i].ID, resp.ID) {
+ elem = &b[i]
+ break
+ }
+ }
+ if resp.Error != nil {
+ elem.Error = resp.Error
+ continue
+ }
+ if len(resp.Result) == 0 {
+ elem.Error = ErrNoResult
+ continue
+ }
+ elem.Error = json.Unmarshal(resp.Result, elem.Result)
+ }
+ return err
+}
+
+// EthSubscribe calls the "eth_subscribe" method with the given arguments,
+// registering a subscription. Server notifications for the subscription are
+// sent to the given channel. The element type of the channel must match the
+// expected type of content returned by the subscription.
+//
+// The context argument cancels the RPC request that sets up the subscription but has no
+// effect on the subscription after EthSubscribe has returned.
+//
+// Slow subscribers will be dropped eventually. Client buffers up to 8000 notifications
+// before considering the subscriber dead. The subscription Err channel will receive
+// ErrSubscriptionQueueOverflow. Use a sufficiently large buffer on the channel or ensure
+// that the channel usually has at least one reader to prevent this issue.
+func (c *Client) EthSubscribe(ctx context.Context, channel interface{}, args ...interface{}) (*ClientSubscription, error) {
+ // Check type of channel first.
+ chanVal := reflect.ValueOf(channel)
+ if chanVal.Kind() != reflect.Chan || chanVal.Type().ChanDir()&reflect.SendDir == 0 {
+ panic("first argument to EthSubscribe must be a writable channel")
+ }
+ if chanVal.IsNil() {
+ panic("channel given to EthSubscribe must not be nil")
+ }
+ if c.isHTTP {
+ return nil, ErrNotificationsUnsupported
+ }
+
+ msg, err := c.newMessage(subscribeMethod, args...)
+ if err != nil {
+ return nil, err
+ }
+ op := &requestOp{
+ ids: []json.RawMessage{msg.ID},
+ resp: make(chan *jsonrpcMessage),
+ sub: newClientSubscription(c, chanVal),
+ }
+
+ // Send the subscription request.
+ // The arrival and validity of the response is signaled on sub.quit.
+ if err := c.send(ctx, op, msg); err != nil {
+ return nil, err
+ }
+ if _, err := op.wait(ctx); err != nil {
+ return nil, err
+ }
+ return op.sub, nil
+}
+
+func (c *Client) newMessage(method string, paramsIn ...interface{}) (*jsonrpcMessage, error) {
+ params, err := json.Marshal(paramsIn)
+ if err != nil {
+ return nil, err
+ }
+ return &jsonrpcMessage{Version: "2.0", ID: c.nextID(), Method: method, Params: params}, nil
+}
+
+// send registers op with the dispatch loop, then sends msg on the connection.
+// if sending fails, op is deregistered.
+func (c *Client) send(ctx context.Context, op *requestOp, msg interface{}) error {
+ select {
+ case c.requestOp <- op:
+ if glog.V(logger.Detail) {
+ glog.Info("sending ", msg)
+ }
+ err := c.write(ctx, msg)
+ c.sendDone <- err
+ return err
+ case <-ctx.Done():
+ // This can happen if the client is overloaded or unable to keep up with
+ // subscription notifications.
+ return ctx.Err()
+ case <-c.didQuit:
+ return ErrClientQuit
+ }
+}
+
+func (c *Client) write(ctx context.Context, msg interface{}) error {
+ deadline, ok := ctx.Deadline()
+ if !ok {
+ deadline = time.Now().Add(defaultWriteTimeout)
+ }
+ // The previous write failed. Try to establish a new connection.
+ if c.writeConn == nil {
+ if err := c.reconnect(ctx); err != nil {
+ return err
+ }
+ }
+ c.writeConn.SetWriteDeadline(deadline)
+ err := json.NewEncoder(c.writeConn).Encode(msg)
+ if err != nil {
+ c.writeConn = nil
+ }
+ return err
+}
+
+func (c *Client) reconnect(ctx context.Context) error {
+ newconn, err := c.connectFunc(ctx)
+ if err != nil {
+ glog.V(logger.Detail).Infof("reconnect failed: %v", err)
+ return err
+ }
+ select {
+ case c.reconnected <- newconn:
+ c.writeConn = newconn
+ return nil
+ case <-c.didQuit:
+ newconn.Close()
+ return ErrClientQuit
+ }
+}
+
+// dispatch is the main loop of the client.
+// It sends read messages to waiting calls to Call and BatchCall
+// and subscription notifications to registered subscriptions.
+func (c *Client) dispatch(conn net.Conn) {
+ // Spawn the initial read loop.
+ go c.read(conn)
+
+ var (
+ lastOp *requestOp // tracks last send operation
+ requestOpLock = c.requestOp // nil while the send lock is held
+ reading = true // if true, a read loop is running
+ )
+ defer close(c.didQuit)
+ defer func() {
+ c.closeRequestOps(ErrClientQuit)
+ conn.Close()
+ if reading {
+ // Empty read channels until read is dead.
+ for {
+ select {
+ case <-c.readResp:
+ case <-c.readErr:
+ return
+ }
+ }
+ }
+ }()
+
+ for {
+ select {
+ case <-c.close:
+ return
+
+ // Read path.
+ case batch := <-c.readResp:
+ for _, msg := range batch {
+ switch {
+ case msg.isNotification():
+ if glog.V(logger.Detail) {
+ glog.Info("<-readResp: notification ", msg)
+ }
+ c.handleNotification(msg)
+ case msg.isResponse():
+ if glog.V(logger.Detail) {
+ glog.Info("<-readResp: response ", msg)
+ }
+ c.handleResponse(msg)
+ default:
+ if glog.V(logger.Debug) {
+ glog.Error("<-readResp: dropping weird message", msg)
+ }
+ // TODO: maybe close
+ }
+ }
+
+ case err := <-c.readErr:
+ glog.V(logger.Debug).Infof("<-readErr: %v", err)
+ c.closeRequestOps(err)
+ conn.Close()
+ reading = false
+
+ case newconn := <-c.reconnected:
+ glog.V(logger.Debug).Infof("<-reconnected: (reading=%t) %v", reading, conn.RemoteAddr())
+ if reading {
+ // Wait for the previous read loop to exit. This is a rare case.
+ conn.Close()
+ <-c.readErr
+ }
+ go c.read(newconn)
+ reading = true
+ conn = newconn
+
+ // Send path.
+ case op := <-requestOpLock:
+ // Stop listening for further send ops until the current one is done.
+ requestOpLock = nil
+ lastOp = op
+ for _, id := range op.ids {
+ c.respWait[string(id)] = op
+ }
+
+ case err := <-c.sendDone:
+ if err != nil {
+ // Remove response handlers for the last send. We remove those here
+ // because the error is already handled in Call or BatchCall. When the
+ // read loop goes down, it will signal all other current operations.
+ for _, id := range lastOp.ids {
+ delete(c.respWait, string(id))
+ }
+ }
+ // Listen for send ops again.
+ requestOpLock = c.requestOp
+ lastOp = nil
+ }
+ }
+}
+
+// closeRequestOps unblocks pending send ops and active subscriptions.
+func (c *Client) closeRequestOps(err error) {
+ didClose := make(map[*requestOp]bool)
+
+ for id, op := range c.respWait {
+ // Remove the op so that later calls will not close op.resp again.
+ delete(c.respWait, id)
+
+ if !didClose[op] {
+ op.err = err
+ close(op.resp)
+ didClose[op] = true
+ }
+ }
+ for id, sub := range c.subs {
+ delete(c.subs, id)
+ sub.quitWithError(err, false)
+ }
+}
+
+func (c *Client) handleNotification(msg *jsonrpcMessage) {
+ if msg.Method != notificationMethod {
+ glog.V(logger.Debug).Info("dropping non-subscription message: ", msg)
+ return
+ }
+ var subResult struct {
+ ID string `json:"subscription"`
+ Result json.RawMessage `json:"result"`
+ }
+ if err := json.Unmarshal(msg.Params, &subResult); err != nil {
+ glog.V(logger.Debug).Info("dropping invalid subscription message: ", msg)
+ return
+ }
+ if c.subs[subResult.ID] != nil {
+ c.subs[subResult.ID].deliver(subResult.Result)
+ }
+}
+
+func (c *Client) handleResponse(msg *jsonrpcMessage) {
+ op := c.respWait[string(msg.ID)]
+ if op == nil {
+ glog.V(logger.Debug).Infof("unsolicited response %v", msg)
+ return
+ }
+ delete(c.respWait, string(msg.ID))
+ // For normal responses, just forward the reply to Call/BatchCall.
+ if op.sub == nil {
+ op.resp <- msg
+ return
+ }
+ // For subscription responses, start the subscription if the server
+ // indicates success. EthSubscribe gets unblocked in either case through
+ // the op.resp channel.
+ defer close(op.resp)
+ if msg.Error != nil {
+ op.err = msg.Error
+ return
+ }
+ if op.err = json.Unmarshal(msg.Result, &op.sub.subid); op.err == nil {
+ go op.sub.start()
+ c.subs[op.sub.subid] = op.sub
+ }
+}
+
+// Reading happens on a dedicated goroutine.
+
+func (c *Client) read(conn net.Conn) error {
+ var (
+ buf json.RawMessage
+ dec = json.NewDecoder(conn)
+ )
+ readMessage := func() (rs []*jsonrpcMessage, err error) {
+ buf = buf[:0]
+ if err = dec.Decode(&buf); err != nil {
+ return nil, err
+ }
+ if isBatch(buf) {
+ err = json.Unmarshal(buf, &rs)
+ } else {
+ rs = make([]*jsonrpcMessage, 1)
+ err = json.Unmarshal(buf, &rs[0])
+ }
+ return rs, err
+ }
+
+ for {
+ resp, err := readMessage()
+ if err != nil {
+ c.readErr <- err
+ return err
+ }
+ c.readResp <- resp
+ }
+}
+
+// Subscriptions.
+
+// A ClientSubscription represents a subscription established through EthSubscribe.
+type ClientSubscription struct {
+ client *Client
+ etype reflect.Type
+ channel reflect.Value
+ subid string
+ in chan json.RawMessage
+
+ quitOnce sync.Once // ensures quit is closed once
+ quit chan struct{} // quit is closed when the subscription exits
+ errOnce sync.Once // ensures err is closed once
+ err chan error
+}
+
+func newClientSubscription(c *Client, channel reflect.Value) *ClientSubscription {
+ sub := &ClientSubscription{
+ client: c,
+ etype: channel.Type().Elem(),
+ channel: channel,
+ quit: make(chan struct{}),
+ err: make(chan error, 1),
+ in: make(chan json.RawMessage),
+ }
+ return sub
+}
+
+// Err returns the subscription error channel. The intended use of Err is to schedule
+// resubscription when the client connection is closed unexpectedly.
+//
+// The error channel receives a value when the subscription has ended due
+// to an error. The received error is ErrClientQuit if Close has been called
+// on the underlying client and no other error has occurred.
+//
+// The error channel is closed when Unsubscribe is called on the subscription.
+func (sub *ClientSubscription) Err() <-chan error {
+ return sub.err
+}
+
+// Unsubscribe unsubscribes the notification and closes the error channel.
+// It can safely be called more than once.
+func (sub *ClientSubscription) Unsubscribe() {
+ sub.quitWithError(nil, true)
+ sub.errOnce.Do(func() { close(sub.err) })
+}
+
+func (sub *ClientSubscription) quitWithError(err error, unsubscribeServer bool) {
+ sub.quitOnce.Do(func() {
+ // The dispatch loop won't be able to execute the unsubscribe call
+ // if it is blocked on deliver. Close sub.quit first because it
+ // unblocks deliver.
+ close(sub.quit)
+ if unsubscribeServer {
+ sub.requestUnsubscribe()
+ }
+ if err != nil {
+ sub.err <- err
+ }
+ })
+}
+
+func (sub *ClientSubscription) deliver(result json.RawMessage) (ok bool) {
+ select {
+ case sub.in <- result:
+ return true
+ case <-sub.quit:
+ return false
+ }
+}
+
+func (sub *ClientSubscription) start() {
+ sub.quitWithError(sub.forward())
+}
+
+func (sub *ClientSubscription) forward() (err error, unsubscribeServer bool) {
+ cases := []reflect.SelectCase{
+ {Dir: reflect.SelectRecv, Chan: reflect.ValueOf(sub.quit)},
+ {Dir: reflect.SelectRecv, Chan: reflect.ValueOf(sub.in)},
+ {Dir: reflect.SelectSend, Chan: sub.channel},
+ }
+ buffer := list.New()
+ defer buffer.Init()
+ for {
+ var chosen int
+ var recv reflect.Value
+ if buffer.Len() == 0 {
+ // Idle, omit send case.
+ chosen, recv, _ = reflect.Select(cases[:2])
+ } else {
+ // Non-empty buffer, send the first queued item.
+ cases[2].Send = reflect.ValueOf(buffer.Front().Value)
+ chosen, recv, _ = reflect.Select(cases)
+ }
+
+ switch chosen {
+ case 0: // <-sub.quit
+ return nil, false
+ case 1: // <-sub.in
+ val, err := sub.unmarshal(recv.Interface().(json.RawMessage))
+ if err != nil {
+ return err, true
+ }
+ if buffer.Len() == maxClientSubscriptionBuffer {
+ return ErrSubscriptionQueueOverflow, true
+ }
+ buffer.PushBack(val)
+ case 2: // sub.channel<-
+ cases[2].Send = reflect.Value{} // Don't hold onto the value.
+ buffer.Remove(buffer.Front())
+ }
+ }
+}
+
+func (sub *ClientSubscription) unmarshal(result json.RawMessage) (interface{}, error) {
+ val := reflect.New(sub.etype)
+ err := json.Unmarshal(result, val.Interface())
+ return val.Elem().Interface(), err
+}
+
+func (sub *ClientSubscription) requestUnsubscribe() error {
+ var result interface{}
+ return sub.client.Call(&result, unsubscribeMethod, sub.subid)
+}
diff --git a/rpc/client_context_go1.4.go b/rpc/client_context_go1.4.go
new file mode 100644
index 000000000..ac956a17d
--- /dev/null
+++ b/rpc/client_context_go1.4.go
@@ -0,0 +1,60 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// +build !go1.5
+
+package rpc
+
+import (
+ "net"
+ "net/http"
+ "time"
+
+ "golang.org/x/net/context"
+)
+
+// In older versions of Go (below 1.5), dials cannot be canceled
+// via a channel or context. The context deadline can still applied.
+
+// contextDialer returns a dialer that applies the deadline value from the given context.
+func contextDialer(ctx context.Context) *net.Dialer {
+ dialer := &net.Dialer{KeepAlive: tcpKeepAliveInterval}
+ if deadline, ok := ctx.Deadline(); ok {
+ dialer.Deadline = deadline
+ } else {
+ dialer.Deadline = time.Now().Add(defaultDialTimeout)
+ }
+ return dialer
+}
+
+// dialContext connects to the given address, aborting the dial if ctx is canceled.
+func dialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+ return contextDialer(ctx).Dial(network, addr)
+}
+
+// requestWithContext copies req, adding the cancelation channel and deadline from ctx.
+func requestWithContext(c *http.Client, req *http.Request, ctx context.Context) (*http.Client, *http.Request) {
+ // Set Timeout on the client if the context has a deadline.
+ // Note that there is no default timeout (unlike in contextDialer) because
+ // the timeout applies to the entire request, including reads from body.
+ if deadline, ok := ctx.Deadline(); ok {
+ c2 := *c
+ c2.Timeout = deadline.Sub(time.Now())
+ c = &c2
+ }
+ req2 := *req
+ return c, &req2
+}
diff --git a/rpc/client_context_go1.5.go b/rpc/client_context_go1.5.go
new file mode 100644
index 000000000..4a007d9f8
--- /dev/null
+++ b/rpc/client_context_go1.5.go
@@ -0,0 +1,61 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// +build go1.5,!go1.6
+
+package rpc
+
+import (
+ "net"
+ "net/http"
+ "time"
+
+ "golang.org/x/net/context"
+)
+
+// In Go 1.5, dials cannot be canceled via a channel or context. The context deadline can
+// still be applied. Go 1.5 adds the ability to cancel HTTP requests via a channel.
+
+// contextDialer returns a dialer that applies the deadline value from the given context.
+func contextDialer(ctx context.Context) *net.Dialer {
+ dialer := &net.Dialer{KeepAlive: tcpKeepAliveInterval}
+ if deadline, ok := ctx.Deadline(); ok {
+ dialer.Deadline = deadline
+ } else {
+ dialer.Deadline = time.Now().Add(defaultDialTimeout)
+ }
+ return dialer
+}
+
+// dialContext connects to the given address, aborting the dial if ctx is canceled.
+func dialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+ return contextDialer(ctx).Dial(network, addr)
+}
+
+// requestWithContext copies req, adding the cancelation channel and deadline from ctx.
+func requestWithContext(c *http.Client, req *http.Request, ctx context.Context) (*http.Client, *http.Request) {
+ // Set Timeout on the client if the context has a deadline.
+ // Note that there is no default timeout (unlike in contextDialer) because
+ // the timeout applies to the entire request, including reads from body.
+ if deadline, ok := ctx.Deadline(); ok {
+ c2 := *c
+ c2.Timeout = deadline.Sub(time.Now())
+ c = &c2
+ }
+ req2 := *req
+ req2.Cancel = ctx.Done()
+ return c, &req2
+}
diff --git a/rpc/client_context_go1.6.go b/rpc/client_context_go1.6.go
new file mode 100644
index 000000000..67777ddc6
--- /dev/null
+++ b/rpc/client_context_go1.6.go
@@ -0,0 +1,55 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// +build go1.6,!go1.7
+
+package rpc
+
+import (
+ "net"
+ "net/http"
+ "time"
+
+ "golang.org/x/net/context"
+)
+
+// In Go 1.6, net.Dialer gained the ability to cancel via a channel.
+
+// contextDialer returns a dialer that applies the deadline value from the given context.
+func contextDialer(ctx context.Context) *net.Dialer {
+ dialer := &net.Dialer{Cancel: ctx.Done(), KeepAlive: tcpKeepAliveInterval}
+ if deadline, ok := ctx.Deadline(); ok {
+ dialer.Deadline = deadline
+ } else {
+ dialer.Deadline = time.Now().Add(defaultDialTimeout)
+ }
+ return dialer
+}
+
+// dialContext connects to the given address, aborting the dial if ctx is canceled.
+func dialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+ return contextDialer(ctx).Dial(network, addr)
+}
+
+// requestWithContext copies req, adding the cancelation channel and deadline from ctx.
+func requestWithContext(c *http.Client, req *http.Request, ctx context.Context) (*http.Client, *http.Request) {
+ // We set Timeout on the client for Go <= 1.5. There
+ // is no need to do that here because the dial will be canceled
+ // by package http.
+ req2 := *req
+ req2.Cancel = ctx.Done()
+ return c, &req2
+}
diff --git a/rpc/client_context_go1.7.go b/rpc/client_context_go1.7.go
new file mode 100644
index 000000000..56ce12ab8
--- /dev/null
+++ b/rpc/client_context_go1.7.go
@@ -0,0 +1,51 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// +build go1.7
+
+package rpc
+
+import (
+ "context"
+ "net"
+ "net/http"
+ "time"
+)
+
+// In Go 1.7, context moved into the standard library and support
+// for cancelation via context was added to net.Dialer and http.Request.
+
+// contextDialer returns a dialer that applies the deadline value from the given context.
+func contextDialer(ctx context.Context) *net.Dialer {
+ dialer := &net.Dialer{Cancel: ctx.Done(), KeepAlive: tcpKeepAliveInterval}
+ if deadline, ok := ctx.Deadline(); ok {
+ dialer.Deadline = deadline
+ } else {
+ dialer.Deadline = time.Now().Add(defaultDialTimeout)
+ }
+ return dialer
+}
+
+// dialContext connects to the given address, aborting the dial if ctx is canceled.
+func dialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+ d := &net.Dialer{KeepAlive: tcpKeepAliveInterval}
+ return d.DialContext(ctx, network, addr)
+}
+
+// requestWithContext copies req, adding the cancelation channel and deadline from ctx.
+func requestWithContext(c *http.Client, req *http.Request, ctx context.Context) (*http.Client, *http.Request) {
+ return c, req.WithContext(ctx)
+}
diff --git a/rpc/client_example_test.go b/rpc/client_example_test.go
new file mode 100644
index 000000000..3462b3685
--- /dev/null
+++ b/rpc/client_example_test.go
@@ -0,0 +1,88 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package rpc_test
+
+import (
+ "fmt"
+ "math/big"
+ "time"
+
+ "github.com/ethereum/go-ethereum/rpc"
+ "golang.org/x/net/context"
+)
+
+// In this example, our client whishes to track the latest 'block number'
+// known to the server. The server supports two methods:
+//
+// eth_getBlockByNumber("latest", {})
+// returns the latest block object.
+//
+// eth_subscribe("newBlocks")
+// creates a subscription which fires block objects when new blocks arrive.
+
+type Block struct {
+ Number *big.Int
+}
+
+func ExampleClientSubscription() {
+ // Connect the client.
+ client, _ := rpc.Dial("ws://127.0.0.1:8485")
+ subch := make(chan Block)
+
+ // Ensure that subch receives the latest block.
+ go func() {
+ for i := 0; ; i++ {
+ if i > 0 {
+ time.Sleep(2 * time.Second)
+ }
+ subscribeBlocks(client, subch)
+ }
+ }()
+
+ // Print events from the subscription as they arrive.
+ for block := range subch {
+ fmt.Println("latest block:", block.Number)
+ }
+}
+
+// subscribeBlocks runs in its own goroutine and maintains
+// a subscription for new blocks.
+func subscribeBlocks(client *rpc.Client, subch chan Block) {
+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
+ defer cancel()
+
+ // Subscribe to new blocks.
+ sub, err := client.EthSubscribe(ctx, subch, "newBlocks")
+ if err != nil {
+ fmt.Println("subscribe error:", err)
+ return
+ }
+
+ // The connection is established now.
+ // Update the channel with the current block.
+ var lastBlock Block
+ if err := client.CallContext(ctx, &lastBlock, "eth_getBlockByNumber", "latest"); err != nil {
+ fmt.Println("can't get latest block:", err)
+ return
+ }
+ subch <- lastBlock
+
+ // The subscription will deliver events to the channel. Wait for the
+ // subscription to end for any reason, then loop around to re-establish
+ // the connection.
+ fmt.Println("connection lost: ", <-sub.Err())
+}
diff --git a/rpc/client_test.go b/rpc/client_test.go
new file mode 100644
index 000000000..476c8c6f3
--- /dev/null
+++ b/rpc/client_test.go
@@ -0,0 +1,540 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package rpc
+
+import (
+ "fmt"
+ "math/rand"
+ "net"
+ "net/http"
+ "net/http/httptest"
+ "os"
+ "reflect"
+ "runtime"
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/davecgh/go-spew/spew"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "golang.org/x/net/context"
+)
+
+func TestClientRequest(t *testing.T) {
+ server := newTestServer("service", new(Service))
+ defer server.Stop()
+ client := DialInProc(server)
+ defer client.Close()
+
+ var resp Result
+ if err := client.Call(&resp, "service_echo", "hello", 10, &Args{"world"}); err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(resp, Result{"hello", 10, &Args{"world"}}) {
+ t.Errorf("incorrect result %#v", resp)
+ }
+}
+
+func TestClientBatchRequest(t *testing.T) {
+ server := newTestServer("service", new(Service))
+ defer server.Stop()
+ client := DialInProc(server)
+ defer client.Close()
+
+ batch := []BatchElem{
+ {
+ Method: "service_echo",
+ Args: []interface{}{"hello", 10, &Args{"world"}},
+ Result: new(Result),
+ },
+ {
+ Method: "service_echo",
+ Args: []interface{}{"hello2", 11, &Args{"world"}},
+ Result: new(Result),
+ },
+ {
+ Method: "no_such_method",
+ Args: []interface{}{1, 2, 3},
+ Result: new(int),
+ },
+ }
+ if err := client.BatchCall(batch); err != nil {
+ t.Fatal(err)
+ }
+ wantResult := []BatchElem{
+ {
+ Method: "service_echo",
+ Args: []interface{}{"hello", 10, &Args{"world"}},
+ Result: &Result{"hello", 10, &Args{"world"}},
+ },
+ {
+ Method: "service_echo",
+ Args: []interface{}{"hello2", 11, &Args{"world"}},
+ Result: &Result{"hello2", 11, &Args{"world"}},
+ },
+ {
+ Method: "no_such_method",
+ Args: []interface{}{1, 2, 3},
+ Result: new(int),
+ Error: &jsonError{Code: -32601, Message: "The method no_such_method_ does not exist/is not available"},
+ },
+ }
+ if !reflect.DeepEqual(batch, wantResult) {
+ t.Errorf("batch results mismatch:\ngot %swant %s", spew.Sdump(batch), spew.Sdump(wantResult))
+ }
+}
+
+// func TestClientCancelInproc(t *testing.T) { testClientCancel("inproc", t) }
+func TestClientCancelWebsocket(t *testing.T) { testClientCancel("ws", t) }
+func TestClientCancelHTTP(t *testing.T) { testClientCancel("http", t) }
+func TestClientCancelIPC(t *testing.T) { testClientCancel("ipc", t) }
+
+// This test checks that requests made through CallContext can be canceled by canceling
+// the context.
+func testClientCancel(transport string, t *testing.T) {
+ server := newTestServer("service", new(Service))
+ defer server.Stop()
+
+ // What we want to achieve is that the context gets canceled
+ // at various stages of request processing. The interesting cases
+ // are:
+ // - cancel during dial
+ // - cancel while performing a HTTP request
+ // - cancel while waiting for a response
+ //
+ // To trigger those, the times are chosen such that connections
+ // are killed within the deadline for every other call (maxKillTimeout
+ // is 2x maxCancelTimeout).
+ //
+ // Once a connection is dead, there is a fair chance it won't connect
+ // successfully because the accept is delayed by 1s.
+ maxContextCancelTimeout := 300 * time.Millisecond
+ fl := &flakeyListener{
+ maxAcceptDelay: 1 * time.Second,
+ maxKillTimeout: 600 * time.Millisecond,
+ }
+
+ var client *Client
+ switch transport {
+ case "ws", "http":
+ c, hs := httpTestClient(server, transport, fl)
+ defer hs.Close()
+ client = c
+ case "ipc":
+ c, l := ipcTestClient(server, fl)
+ defer l.Close()
+ client = c
+ default:
+ panic("unknown transport: " + transport)
+ }
+
+ // These tests take a lot of time, run them all at once.
+ // You probably want to run with -parallel 1 or comment out
+ // the call to t.Parallel if you enable the logging.
+ t.Parallel()
+ // glog.SetV(6)
+ // glog.SetToStderr(true)
+ // defer glog.SetToStderr(false)
+ // glog.Infoln("testing ", transport)
+
+ // The actual test starts here.
+ var (
+ wg sync.WaitGroup
+ nreqs = 10
+ ncallers = 6
+ )
+ caller := func(index int) {
+ defer wg.Done()
+ for i := 0; i < nreqs; i++ {
+ var (
+ ctx context.Context
+ cancel func()
+ timeout = time.Duration(rand.Int63n(int64(maxContextCancelTimeout)))
+ )
+ if index < ncallers/2 {
+ // For half of the callers, create a context without deadline
+ // and cancel it later.
+ ctx, cancel = context.WithCancel(context.Background())
+ time.AfterFunc(timeout, cancel)
+ } else {
+ // For the other half, create a context with a deadline instead. This is
+ // different because the context deadline is used to set the socket write
+ // deadline.
+ ctx, cancel = context.WithTimeout(context.Background(), timeout)
+ }
+ // Now perform a call with the context.
+ // The key thing here is that no call will ever complete successfully.
+ err := client.CallContext(ctx, nil, "service_sleep", 2*maxContextCancelTimeout)
+ if err != nil {
+ glog.V(logger.Debug).Infoln("got expected error:", err)
+ } else {
+ t.Errorf("no error for call with %v wait time", timeout)
+ }
+ cancel()
+ }
+ }
+ wg.Add(ncallers)
+ for i := 0; i < ncallers; i++ {
+ go caller(i)
+ }
+ wg.Wait()
+}
+
+func TestClientSubscribeInvalidArg(t *testing.T) {
+ server := newTestServer("service", new(Service))
+ defer server.Stop()
+ client := DialInProc(server)
+ defer client.Close()
+
+ check := func(shouldPanic bool, arg interface{}) {
+ defer func() {
+ err := recover()
+ if shouldPanic && err == nil {
+ t.Errorf("EthSubscribe should've panicked for %#v", arg)
+ }
+ if !shouldPanic && err != nil {
+ t.Errorf("EthSubscribe shouldn't have panicked for %#v", arg)
+ buf := make([]byte, 1024*1024)
+ buf = buf[:runtime.Stack(buf, false)]
+ t.Error(err)
+ t.Error(string(buf))
+ }
+ }()
+ client.EthSubscribe(context.Background(), arg, "foo_bar")
+ }
+ check(true, nil)
+ check(true, 1)
+ check(true, (chan int)(nil))
+ check(true, make(<-chan int))
+ check(false, make(chan int))
+ check(false, make(chan<- int))
+}
+
+func TestClientSubscribe(t *testing.T) {
+ server := newTestServer("eth", new(NotificationTestService))
+ defer server.Stop()
+ client := DialInProc(server)
+ defer client.Close()
+
+ nc := make(chan int)
+ count := 10
+ sub, err := client.EthSubscribe(context.Background(), nc, "someSubscription", count, 0)
+ if err != nil {
+ t.Fatal("can't subscribe:", err)
+ }
+ for i := 0; i < count; i++ {
+ if val := <-nc; val != i {
+ t.Fatalf("value mismatch: got %d, want %d", val, i)
+ }
+ }
+
+ sub.Unsubscribe()
+ select {
+ case v := <-nc:
+ t.Fatal("received value after unsubscribe:", v)
+ case err := <-sub.Err():
+ if err != nil {
+ t.Fatalf("Err returned a non-nil error after explicit unsubscribe: %q", err)
+ }
+ case <-time.After(1 * time.Second):
+ t.Fatalf("subscription not closed within 1s after unsubscribe")
+ }
+}
+
+// In this test, the connection drops while EthSubscribe is
+// waiting for a response.
+func TestClientSubscribeClose(t *testing.T) {
+ service := &NotificationTestService{
+ gotHangSubscriptionReq: make(chan struct{}),
+ unblockHangSubscription: make(chan struct{}),
+ }
+ server := newTestServer("eth", service)
+ defer server.Stop()
+ client := DialInProc(server)
+ defer client.Close()
+
+ var (
+ nc = make(chan int)
+ errc = make(chan error)
+ sub *ClientSubscription
+ err error
+ )
+ go func() {
+ sub, err = client.EthSubscribe(context.Background(), nc, "hangSubscription", 999)
+ errc <- err
+ }()
+
+ <-service.gotHangSubscriptionReq
+ client.Close()
+ service.unblockHangSubscription <- struct{}{}
+
+ select {
+ case err := <-errc:
+ if err == nil {
+ t.Errorf("EthSubscribe returned nil error after Close")
+ }
+ if sub != nil {
+ t.Error("EthSubscribe returned non-nil subscription after Close")
+ }
+ case <-time.After(1 * time.Second):
+ t.Fatalf("EthSubscribe did not return within 1s after Close")
+ }
+}
+
+// This test checks that Client doesn't lock up when a single subscriber
+// doesn't read subscription events.
+func TestClientNotificationStorm(t *testing.T) {
+ server := newTestServer("eth", new(NotificationTestService))
+ defer server.Stop()
+
+ doTest := func(count int, wantError bool) {
+ client := DialInProc(server)
+ defer client.Close()
+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
+ defer cancel()
+
+ // Subscribe on the server. It will start sending many notifications
+ // very quickly.
+ nc := make(chan int)
+ sub, err := client.EthSubscribe(ctx, nc, "someSubscription", count, 0)
+ if err != nil {
+ t.Fatal("can't subscribe:", err)
+ }
+ defer sub.Unsubscribe()
+
+ // Process each notification, try to run a call in between each of them.
+ for i := 0; i < count; i++ {
+ select {
+ case val := <-nc:
+ if val != i {
+ t.Fatalf("(%d/%d) unexpected value %d", i, count, val)
+ }
+ case err := <-sub.Err():
+ if wantError && err != ErrSubscriptionQueueOverflow {
+ t.Fatalf("(%d/%d) got error %q, want %q", i, count, err, ErrSubscriptionQueueOverflow)
+ } else if !wantError {
+ t.Fatalf("(%d/%d) got unexpected error %q", i, count, err)
+ }
+ return
+ }
+ var r int
+ err := client.CallContext(ctx, &r, "eth_echo", i)
+ if err != nil {
+ if !wantError {
+ t.Fatalf("(%d/%d) call error: %v", i, count, err)
+ }
+ return
+ }
+ }
+ }
+
+ doTest(8000, false)
+ doTest(10000, true)
+}
+
+func TestClientHTTP(t *testing.T) {
+ server := newTestServer("service", new(Service))
+ defer server.Stop()
+
+ client, hs := httpTestClient(server, "http", nil)
+ defer hs.Close()
+ defer client.Close()
+
+ // Launch concurrent requests.
+ var (
+ results = make([]Result, 100)
+ errc = make(chan error)
+ wantResult = Result{"a", 1, new(Args)}
+ )
+ defer client.Close()
+ for i := range results {
+ i := i
+ go func() {
+ errc <- client.Call(&results[i], "service_echo",
+ wantResult.String, wantResult.Int, wantResult.Args)
+ }()
+ }
+
+ // Wait for all of them to complete.
+ timeout := time.NewTimer(5 * time.Second)
+ defer timeout.Stop()
+ for i := range results {
+ select {
+ case err := <-errc:
+ if err != nil {
+ t.Fatal(err)
+ }
+ case <-timeout.C:
+ t.Fatalf("timeout (got %d/%d) results)", i+1, len(results))
+ }
+ }
+
+ // Check results.
+ for i := range results {
+ if !reflect.DeepEqual(results[i], wantResult) {
+ t.Errorf("result %d mismatch: got %#v, want %#v", i, results[i], wantResult)
+ }
+ }
+}
+
+func TestClientReconnect(t *testing.T) {
+ startServer := func(addr string) (*Server, net.Listener) {
+ srv := newTestServer("service", new(Service))
+ l, err := net.Listen("tcp", addr)
+ if err != nil {
+ t.Fatal(err)
+ }
+ go http.Serve(l, srv.WebsocketHandler("*"))
+ return srv, l
+ }
+
+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
+ defer cancel()
+
+ // Start a server and corresponding client.
+ s1, l1 := startServer("127.0.0.1:0")
+ client, err := DialContext(ctx, "ws://"+l1.Addr().String())
+ if err != nil {
+ t.Fatal("can't dial", err)
+ }
+
+ // Perform a call. This should work because the server is up.
+ var resp Result
+ if err := client.CallContext(ctx, &resp, "service_echo", "", 1, nil); err != nil {
+ t.Fatal(err)
+ }
+
+ // Shut down the server and try calling again. It shouldn't work.
+ l1.Close()
+ s1.Stop()
+ if err := client.CallContext(ctx, &resp, "service_echo", "", 2, nil); err == nil {
+ t.Error("successful call while the server is down")
+ t.Logf("resp: %#v", resp)
+ }
+
+ // Allow for some cool down time so we can listen on the same address again.
+ time.Sleep(2 * time.Second)
+
+ // Start it up again and call again. The connection should be reestablished.
+ // We spawn multiple calls here to check whether this hangs somehow.
+ s2, l2 := startServer(l1.Addr().String())
+ defer l2.Close()
+ defer s2.Stop()
+
+ start := make(chan struct{})
+ errors := make(chan error, 20)
+ for i := 0; i < cap(errors); i++ {
+ go func() {
+ <-start
+ var resp Result
+ errors <- client.CallContext(ctx, &resp, "service_echo", "", 3, nil)
+ }()
+ }
+ close(start)
+ errcount := 0
+ for i := 0; i < cap(errors); i++ {
+ if err = <-errors; err != nil {
+ errcount++
+ }
+ }
+ t.Log("err:", err)
+ if errcount > 1 {
+ t.Errorf("expected one error after disconnect, got %d", errcount)
+ }
+}
+
+func newTestServer(serviceName string, service interface{}) *Server {
+ server := NewServer()
+ if err := server.RegisterName(serviceName, service); err != nil {
+ panic(err)
+ }
+ return server
+}
+
+func httpTestClient(srv *Server, transport string, fl *flakeyListener) (*Client, *httptest.Server) {
+ // Create the HTTP server.
+ var hs *httptest.Server
+ switch transport {
+ case "ws":
+ hs = httptest.NewUnstartedServer(srv.WebsocketHandler("*"))
+ case "http":
+ hs = httptest.NewUnstartedServer(srv)
+ default:
+ panic("unknown HTTP transport: " + transport)
+ }
+ // Wrap the listener if required.
+ if fl != nil {
+ fl.Listener = hs.Listener
+ hs.Listener = fl
+ }
+ // Connect the client.
+ hs.Start()
+ client, err := Dial(transport + "://" + hs.Listener.Addr().String())
+ if err != nil {
+ panic(err)
+ }
+ return client, hs
+}
+
+func ipcTestClient(srv *Server, fl *flakeyListener) (*Client, net.Listener) {
+ // Listen on a random endpoint.
+ endpoint := fmt.Sprintf("go-ethereum-test-ipc-%d-%d", os.Getpid(), rand.Int63())
+ if runtime.GOOS == "windows" {
+ endpoint = `\\.\pipe\` + endpoint
+ } else {
+ endpoint = os.TempDir() + "/" + endpoint
+ }
+ l, err := ipcListen(endpoint)
+ if err != nil {
+ panic(err)
+ }
+ // Connect the listener to the server.
+ if fl != nil {
+ fl.Listener = l
+ l = fl
+ }
+ go srv.ServeListener(l)
+ // Connect the client.
+ client, err := Dial(endpoint)
+ if err != nil {
+ panic(err)
+ }
+ return client, l
+}
+
+// flakeyListener kills accepted connections after a random timeout.
+type flakeyListener struct {
+ net.Listener
+ maxKillTimeout time.Duration
+ maxAcceptDelay time.Duration
+}
+
+func (l *flakeyListener) Accept() (net.Conn, error) {
+ delay := time.Duration(rand.Int63n(int64(l.maxAcceptDelay)))
+ time.Sleep(delay)
+
+ c, err := l.Listener.Accept()
+ if err == nil {
+ timeout := time.Duration(rand.Int63n(int64(l.maxKillTimeout)))
+ time.AfterFunc(timeout, func() {
+ glog.V(logger.Debug).Infof("killing conn %v after %v", c.LocalAddr(), timeout)
+ c.Close()
+ })
+ }
+ return c, err
+}
diff --git a/rpc/errors.go b/rpc/errors.go
index bc352fc45..9cf9dc60c 100644
--- a/rpc/errors.go
+++ b/rpc/errors.go
@@ -24,74 +24,43 @@ type methodNotFoundError struct {
method string
}
-func (e *methodNotFoundError) Code() int {
- return -32601
-}
+func (e *methodNotFoundError) ErrorCode() int { return -32601 }
func (e *methodNotFoundError) Error() string {
return fmt.Sprintf("The method %s%s%s does not exist/is not available", e.service, serviceMethodSeparator, e.method)
}
// received message isn't a valid request
-type invalidRequestError struct {
- message string
-}
+type invalidRequestError struct{ message string }
-func (e *invalidRequestError) Code() int {
- return -32600
-}
+func (e *invalidRequestError) ErrorCode() int { return -32600 }
-func (e *invalidRequestError) Error() string {
- return e.message
-}
+func (e *invalidRequestError) Error() string { return e.message }
// received message is invalid
-type invalidMessageError struct {
- message string
-}
+type invalidMessageError struct{ message string }
-func (e *invalidMessageError) Code() int {
- return -32700
-}
+func (e *invalidMessageError) ErrorCode() int { return -32700 }
-func (e *invalidMessageError) Error() string {
- return e.message
-}
+func (e *invalidMessageError) Error() string { return e.message }
// unable to decode supplied params, or an invalid number of parameters
-type invalidParamsError struct {
- message string
-}
+type invalidParamsError struct{ message string }
-func (e *invalidParamsError) Code() int {
- return -32602
-}
+func (e *invalidParamsError) ErrorCode() int { return -32602 }
-func (e *invalidParamsError) Error() string {
- return e.message
-}
+func (e *invalidParamsError) Error() string { return e.message }
// logic error, callback returned an error
-type callbackError struct {
- message string
-}
+type callbackError struct{ message string }
-func (e *callbackError) Code() int {
- return -32000
-}
+func (e *callbackError) ErrorCode() int { return -32000 }
-func (e *callbackError) Error() string {
- return e.message
-}
+func (e *callbackError) Error() string { return e.message }
// issued when a request is received after the server is issued to stop.
-type shutdownError struct {
-}
+type shutdownError struct{}
-func (e *shutdownError) Code() int {
- return -32000
-}
+func (e *shutdownError) ErrorCode() int { return -32000 }
-func (e *shutdownError) Error() string {
- return "server is shutting down"
-}
+func (e *shutdownError) Error() string { return "server is shutting down" }
diff --git a/rpc/http.go b/rpc/http.go
index 9283ce0ec..afcdd4bd6 100644
--- a/rpc/http.go
+++ b/rpc/http.go
@@ -22,71 +22,108 @@ import (
"fmt"
"io"
"io/ioutil"
+ "net"
"net/http"
- "net/url"
"strings"
+ "sync"
+ "time"
"github.com/rs/cors"
+ "golang.org/x/net/context"
)
const (
maxHTTPRequestContentLength = 1024 * 128
)
-// httpClient connects to a geth RPC server over HTTP.
-type httpClient struct {
- endpoint *url.URL // HTTP-RPC server endpoint
- httpClient http.Client // reuse connection
- lastRes []byte // HTTP requests are synchronous, store last response
+var nullAddr, _ = net.ResolveTCPAddr("tcp", "127.0.0.1:0")
+
+type httpConn struct {
+ client *http.Client
+ req *http.Request
+ closeOnce sync.Once
+ closed chan struct{}
+}
+
+// httpConn is treated specially by Client.
+func (hc *httpConn) LocalAddr() net.Addr { return nullAddr }
+func (hc *httpConn) RemoteAddr() net.Addr { return nullAddr }
+func (hc *httpConn) SetReadDeadline(time.Time) error { return nil }
+func (hc *httpConn) SetWriteDeadline(time.Time) error { return nil }
+func (hc *httpConn) SetDeadline(time.Time) error { return nil }
+func (hc *httpConn) Write([]byte) (int, error) { panic("Write called") }
+
+func (hc *httpConn) Read(b []byte) (int, error) {
+ <-hc.closed
+ return 0, io.EOF
+}
+
+func (hc *httpConn) Close() error {
+ hc.closeOnce.Do(func() { close(hc.closed) })
+ return nil
}
-// NewHTTPClient create a new RPC clients that connection to a geth RPC server
-// over HTTP.
-func NewHTTPClient(endpoint string) (Client, error) {
- url, err := url.Parse(endpoint)
+// DialHTTP creates a new RPC clients that connection to an RPC server over HTTP.
+func DialHTTP(endpoint string) (*Client, error) {
+ req, err := http.NewRequest("POST", endpoint, nil)
if err != nil {
return nil, err
}
- return &httpClient{endpoint: url}, nil
-}
+ req.Header.Set("Content-Type", "application/json")
+ req.Header.Set("Accept", "application/json")
-// Send will serialize the given msg to JSON and sends it to the RPC server.
-// Since HTTP is synchronous the response is stored until Recv is called.
-func (client *httpClient) Send(msg interface{}) error {
- var body []byte
- var err error
+ initctx := context.Background()
+ return newClient(initctx, func(context.Context) (net.Conn, error) {
+ return &httpConn{client: new(http.Client), req: req, closed: make(chan struct{})}, nil
+ })
+}
- client.lastRes = nil
- if body, err = json.Marshal(msg); err != nil {
+func (c *Client) sendHTTP(ctx context.Context, op *requestOp, msg interface{}) error {
+ hc := c.writeConn.(*httpConn)
+ respBody, err := hc.doRequest(ctx, msg)
+ if err != nil {
return err
}
+ defer respBody.Close()
+ var respmsg jsonrpcMessage
+ if err := json.NewDecoder(respBody).Decode(&respmsg); err != nil {
+ return err
+ }
+ op.resp <- &respmsg
+ return nil
+}
- resp, err := client.httpClient.Post(client.endpoint.String(), "application/json", bytes.NewReader(body))
+func (c *Client) sendBatchHTTP(ctx context.Context, op *requestOp, msgs []*jsonrpcMessage) error {
+ hc := c.writeConn.(*httpConn)
+ respBody, err := hc.doRequest(ctx, msgs)
if err != nil {
return err
}
-
- defer resp.Body.Close()
- if resp.StatusCode == http.StatusOK {
- client.lastRes, err = ioutil.ReadAll(resp.Body)
+ defer respBody.Close()
+ var respmsgs []jsonrpcMessage
+ if err := json.NewDecoder(respBody).Decode(&respmsgs); err != nil {
return err
}
-
- return fmt.Errorf("request failed: %s", resp.Status)
-}
-
-// Recv will try to deserialize the last received response into the given msg.
-func (client *httpClient) Recv(msg interface{}) error {
- return json.Unmarshal(client.lastRes, &msg)
+ for _, respmsg := range respmsgs {
+ op.resp <- &respmsg
+ }
+ return nil
}
-// Close is not necessary for httpClient
-func (client *httpClient) Close() {
-}
+func (hc *httpConn) doRequest(ctx context.Context, msg interface{}) (io.ReadCloser, error) {
+ body, err := json.Marshal(msg)
+ if err != nil {
+ return nil, err
+ }
+ client, req := requestWithContext(hc.client, hc.req, ctx)
+ req.Body = ioutil.NopCloser(bytes.NewReader(body))
+ req.ContentLength = int64(len(body))
-// SupportedModules will return the collection of offered RPC modules.
-func (client *httpClient) SupportedModules() (map[string]string, error) {
- return SupportedModules(client)
+ resp, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ return resp.Body, nil
}
// httpReadWriteNopCloser wraps a io.Reader and io.Writer with a NOP Close method.
@@ -100,43 +137,39 @@ func (t *httpReadWriteNopCloser) Close() error {
return nil
}
-// newJSONHTTPHandler creates a HTTP handler that will parse incoming JSON requests,
-// send the request to the given API provider and sends the response back to the caller.
-func newJSONHTTPHandler(srv *Server) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- if r.ContentLength > maxHTTPRequestContentLength {
- http.Error(w,
- fmt.Sprintf("content length too large (%d>%d)", r.ContentLength, maxHTTPRequestContentLength),
- http.StatusRequestEntityTooLarge)
- return
- }
-
- w.Header().Set("content-type", "application/json")
-
- // create a codec that reads direct from the request body until
- // EOF and writes the response to w and order the server to process
- // a single request.
- codec := NewJSONCodec(&httpReadWriteNopCloser{r.Body, w})
- defer codec.Close()
- srv.ServeSingleRequest(codec, OptionMethodInvocation)
+// NewHTTPServer creates a new HTTP RPC server around an API provider.
+//
+// Deprecated: Server implements http.Handler
+func NewHTTPServer(corsString string, srv *Server) *http.Server {
+ return &http.Server{Handler: newCorsHandler(srv, corsString)}
+}
+
+// ServeHTTP serves JSON-RPC requests over HTTP.
+func (srv *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ if r.ContentLength > maxHTTPRequestContentLength {
+ http.Error(w,
+ fmt.Sprintf("content length too large (%d>%d)", r.ContentLength, maxHTTPRequestContentLength),
+ http.StatusRequestEntityTooLarge)
+ return
}
+ w.Header().Set("content-type", "application/json")
+
+ // create a codec that reads direct from the request body until
+ // EOF and writes the response to w and order the server to process
+ // a single request.
+ codec := NewJSONCodec(&httpReadWriteNopCloser{r.Body, w})
+ defer codec.Close()
+ srv.ServeSingleRequest(codec, OptionMethodInvocation)
}
-// NewHTTPServer creates a new HTTP RPC server around an API provider.
-func NewHTTPServer(corsString string, srv *Server) *http.Server {
+func newCorsHandler(srv *Server, corsString string) http.Handler {
var allowedOrigins []string
for _, domain := range strings.Split(corsString, ",") {
allowedOrigins = append(allowedOrigins, strings.TrimSpace(domain))
}
-
c := cors.New(cors.Options{
AllowedOrigins: allowedOrigins,
AllowedMethods: []string{"POST", "GET"},
})
-
- handler := c.Handler(newJSONHTTPHandler(srv))
-
- return &http.Server{
- Handler: handler,
- }
+ return c.Handler(srv)
}
diff --git a/rpc/inproc.go b/rpc/inproc.go
index 250f5c787..f72b97497 100644
--- a/rpc/inproc.go
+++ b/rpc/inproc.go
@@ -17,45 +17,18 @@
package rpc
import (
- "encoding/json"
- "io"
"net"
-)
-
-// inProcClient is an in-process buffer stream attached to an RPC server.
-type inProcClient struct {
- server *Server
- cl io.Closer
- enc *json.Encoder
- dec *json.Decoder
-}
-// Close tears down the request channel of the in-proc client.
-func (c *inProcClient) Close() {
- c.cl.Close()
-}
-
-// NewInProcRPCClient creates an in-process buffer stream attachment to a given
-// RPC server.
-func NewInProcRPCClient(handler *Server) Client {
- p1, p2 := net.Pipe()
- go handler.ServeCodec(NewJSONCodec(p1), OptionMethodInvocation|OptionSubscriptions)
- return &inProcClient{handler, p2, json.NewEncoder(p2), json.NewDecoder(p2)}
-}
-
-// Send marshals a message into a json format and injects in into the client
-// request channel.
-func (c *inProcClient) Send(msg interface{}) error {
- return c.enc.Encode(msg)
-}
-
-// Recv reads a message from the response channel and tries to parse it into the
-// given msg interface.
-func (c *inProcClient) Recv(msg interface{}) error {
- return c.dec.Decode(msg)
-}
+ "golang.org/x/net/context"
+)
-// Returns the collection of modules the RPC server offers.
-func (c *inProcClient) SupportedModules() (map[string]string, error) {
- return SupportedModules(c)
+// NewInProcClient attaches an in-process connection to the given RPC server.
+func DialInProc(handler *Server) *Client {
+ initctx := context.Background()
+ c, _ := newClient(initctx, func(context.Context) (net.Conn, error) {
+ p1, p2 := net.Pipe()
+ go handler.ServeCodec(NewJSONCodec(p1), OptionMethodInvocation|OptionSubscriptions)
+ return p2, nil
+ })
+ return c
}
diff --git a/rpc/ipc.go b/rpc/ipc.go
index 05d8909ca..c2b9e3871 100644
--- a/rpc/ipc.go
+++ b/rpc/ipc.go
@@ -17,68 +17,39 @@
package rpc
import (
- "encoding/json"
"net"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "golang.org/x/net/context"
)
-// CreateIPCListener creates an listener, on Unix platforms this is a unix socket, on Windows this is a named pipe
+// CreateIPCListener creates an listener, on Unix platforms this is a unix socket, on
+// Windows this is a named pipe
func CreateIPCListener(endpoint string) (net.Listener, error) {
return ipcListen(endpoint)
}
-// ipcClient represent an IPC RPC client. It will connect to a given endpoint and tries to communicate with a node using
-// JSON serialization.
-type ipcClient struct {
- endpoint string
- conn net.Conn
- out *json.Encoder
- in *json.Decoder
-}
-
-// NewIPCClient create a new IPC client that will connect on the given endpoint. Messages are JSON encoded and encoded.
-// On Unix it assumes the endpoint is the full path to a unix socket, and Windows the endpoint is an identifier for a
-// named pipe.
-func NewIPCClient(endpoint string) (Client, error) {
- conn, err := newIPCConnection(endpoint)
- if err != nil {
- return nil, err
- }
- return &ipcClient{endpoint: endpoint, conn: conn, in: json.NewDecoder(conn), out: json.NewEncoder(conn)}, nil
-}
-
-// Send will serialize the given message and send it to the server.
-// When sending the message fails it will try to reconnect once and send the message again.
-func (client *ipcClient) Send(msg interface{}) error {
- if err := client.out.Encode(msg); err == nil {
- return nil
- }
-
- // retry once
- client.conn.Close()
-
- conn, err := newIPCConnection(client.endpoint)
- if err != nil {
- return err
+// ServeListener accepts connections on l, serving JSON-RPC on them.
+func (srv *Server) ServeListener(l net.Listener) error {
+ for {
+ conn, err := l.Accept()
+ if err != nil {
+ return err
+ }
+ glog.V(logger.Detail).Infoln("accepted conn", conn.RemoteAddr())
+ go srv.ServeCodec(NewJSONCodec(conn), OptionMethodInvocation|OptionSubscriptions)
}
-
- client.conn = conn
- client.in = json.NewDecoder(conn)
- client.out = json.NewEncoder(conn)
-
- return client.out.Encode(msg)
-}
-
-// Recv will read a message from the connection and tries to parse it. It assumes the received message is JSON encoded.
-func (client *ipcClient) Recv(msg interface{}) error {
- return client.in.Decode(&msg)
-}
-
-// Close will close the underlying IPC connection
-func (client *ipcClient) Close() {
- client.conn.Close()
}
-// SupportedModules will return the collection of offered RPC modules.
-func (client *ipcClient) SupportedModules() (map[string]string, error) {
- return SupportedModules(client)
+// DialIPC create a new IPC client that connects to the given endpoint. On Unix it assumes
+// the endpoint is the full path to a unix socket, and Windows the endpoint is an
+// identifier for a named pipe.
+//
+// The context is used for the initial connection establishment. It does not
+// affect subsequent interactions with the client.
+func DialIPC(ctx context.Context, endpoint string) (*Client, error) {
+ return newClient(ctx, func(ctx context.Context) (net.Conn, error) {
+ return newIPCConnection(ctx, endpoint)
+ })
}
diff --git a/rpc/ipc_unix.go b/rpc/ipc_unix.go
index 9ece01240..a25b21627 100644
--- a/rpc/ipc_unix.go
+++ b/rpc/ipc_unix.go
@@ -22,6 +22,8 @@ import (
"net"
"os"
"path/filepath"
+
+ "golang.org/x/net/context"
)
// ipcListen will create a Unix socket on the given endpoint.
@@ -40,6 +42,6 @@ func ipcListen(endpoint string) (net.Listener, error) {
}
// newIPCConnection will connect to a Unix socket on the given endpoint.
-func newIPCConnection(endpoint string) (net.Conn, error) {
- return net.DialUnix("unix", nil, &net.UnixAddr{Name: endpoint, Net: "unix"})
+func newIPCConnection(ctx context.Context, endpoint string) (net.Conn, error) {
+ return dialContext(ctx, "unix", endpoint)
}
diff --git a/rpc/ipc_windows.go b/rpc/ipc_windows.go
index 8762cdb0d..68234d215 100644
--- a/rpc/ipc_windows.go
+++ b/rpc/ipc_windows.go
@@ -22,16 +22,27 @@ import (
"net"
"time"
- winio "github.com/microsoft/go-winio"
+ "golang.org/x/net/context"
+ "gopkg.in/natefinch/npipe.v2"
)
+// This is used if the dialing context has no deadline. It is much smaller than the
+// defaultDialTimeout because named pipes are local and there is no need to wait so long.
+const defaultPipeDialTimeout = 2 * time.Second
+
// ipcListen will create a named pipe on the given endpoint.
func ipcListen(endpoint string) (net.Listener, error) {
- return winio.ListenPipe(endpoint, &winio.PipeConfig{})
+ return npipe.Listen(endpoint)
}
// newIPCConnection will connect to a named pipe with the given endpoint as name.
-func newIPCConnection(endpoint string) (net.Conn, error) {
- timeout := 5 * time.Second
- return winio.DialPipe(endpoint, &timeout)
+func newIPCConnection(ctx context.Context, endpoint string) (net.Conn, error) {
+ timeout := defaultPipeDialTimeout
+ if deadline, ok := ctx.Deadline(); ok {
+ timeout = deadline.Sub(time.Now())
+ if timeout < 0 {
+ timeout = 0
+ }
+ }
+ return npipe.DialTimeout(endpoint, timeout)
}
diff --git a/rpc/json.go b/rpc/json.go
index 151ed546e..a7053e3f5 100644
--- a/rpc/json.go
+++ b/rpc/json.go
@@ -30,49 +30,43 @@ import (
)
const (
- JSONRPCVersion = "2.0"
+ jsonrpcVersion = "2.0"
serviceMethodSeparator = "_"
subscribeMethod = "eth_subscribe"
unsubscribeMethod = "eth_unsubscribe"
notificationMethod = "eth_subscription"
)
-// JSON-RPC request
-type JSONRequest struct {
+type jsonRequest struct {
Method string `json:"method"`
Version string `json:"jsonrpc"`
Id json.RawMessage `json:"id,omitempty"`
Payload json.RawMessage `json:"params,omitempty"`
}
-// JSON-RPC response
-type JSONSuccessResponse struct {
+type jsonSuccessResponse struct {
Version string `json:"jsonrpc"`
Id interface{} `json:"id,omitempty"`
Result interface{} `json:"result"`
}
-// JSON-RPC error object
-type JSONError struct {
+type jsonError struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
}
-// JSON-RPC error response
-type JSONErrResponse struct {
+type jsonErrResponse struct {
Version string `json:"jsonrpc"`
Id interface{} `json:"id,omitempty"`
- Error JSONError `json:"error"`
+ Error jsonError `json:"error"`
}
-// JSON-RPC notification payload
type jsonSubscription struct {
Subscription string `json:"subscription"`
Result interface{} `json:"result,omitempty"`
}
-// JSON-RPC notification
type jsonNotification struct {
Version string `json:"jsonrpc"`
Method string `json:"method"`
@@ -91,6 +85,17 @@ type jsonCodec struct {
rw io.ReadWriteCloser // connection
}
+func (err *jsonError) Error() string {
+ if err.Message == "" {
+ return fmt.Sprintf("json-rpc error %d", err.Code)
+ }
+ return err.Message
+}
+
+func (err *jsonError) ErrorCode() int {
+ return err.Code
+}
+
// NewJSONCodec creates a new RPC server codec with support for JSON-RPC 2.0
func NewJSONCodec(rwc io.ReadWriteCloser) ServerCodec {
d := json.NewDecoder(rwc)
@@ -113,7 +118,7 @@ func isBatch(msg json.RawMessage) bool {
// ReadRequestHeaders will read new requests without parsing the arguments. It will
// return a collection of requests, an indication if these requests are in batch
// form or an error when the incoming message could not be read/parsed.
-func (c *jsonCodec) ReadRequestHeaders() ([]rpcRequest, bool, RPCError) {
+func (c *jsonCodec) ReadRequestHeaders() ([]rpcRequest, bool, Error) {
c.decMu.Lock()
defer c.decMu.Unlock()
@@ -148,8 +153,8 @@ func checkReqId(reqId json.RawMessage) error {
// parseRequest will parse a single request from the given RawMessage. It will return
// the parsed request, an indication if the request was a batch or an error when
// the request could not be parsed.
-func parseRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCError) {
- var in JSONRequest
+func parseRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, Error) {
+ var in jsonRequest
if err := json.Unmarshal(incomingMsg, &in); err != nil {
return nil, false, &invalidMessageError{err.Error()}
}
@@ -182,12 +187,12 @@ func parseRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCError) {
method: unsubscribeMethod, params: in.Payload}}, false, nil
}
- // regular RPC call
elems := strings.Split(in.Method, serviceMethodSeparator)
if len(elems) != 2 {
return nil, false, &methodNotFoundError{in.Method, ""}
}
+ // regular RPC call
if len(in.Payload) == 0 {
return []rpcRequest{rpcRequest{service: elems[0], method: elems[1], id: &in.Id}}, false, nil
}
@@ -197,8 +202,8 @@ func parseRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCError) {
// parseBatchRequest will parse a batch request into a collection of requests from the given RawMessage, an indication
// if the request was a batch or an error when the request could not be read.
-func parseBatchRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCError) {
- var in []JSONRequest
+func parseBatchRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, Error) {
+ var in []jsonRequest
if err := json.Unmarshal(incomingMsg, &in); err != nil {
return nil, false, &invalidMessageError{err.Error()}
}
@@ -236,15 +241,15 @@ func parseBatchRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCErro
continue
}
- elems := strings.Split(r.Method, serviceMethodSeparator)
- if len(elems) != 2 {
- return nil, true, &methodNotFoundError{r.Method, ""}
- }
-
if len(r.Payload) == 0 {
- requests[i] = rpcRequest{service: elems[0], method: elems[1], id: id, params: nil}
+ requests[i] = rpcRequest{id: id, params: nil}
+ } else {
+ requests[i] = rpcRequest{id: id, params: r.Payload}
+ }
+ if elem := strings.Split(r.Method, serviceMethodSeparator); len(elem) == 2 {
+ requests[i].service, requests[i].method = elem[0], elem[1]
} else {
- requests[i] = rpcRequest{service: elems[0], method: elems[1], id: id, params: r.Payload}
+ requests[i].err = &methodNotFoundError{r.Method, ""}
}
}
@@ -253,7 +258,7 @@ func parseBatchRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, RPCErro
// ParseRequestArguments tries to parse the given params (json.RawMessage) with the given types. It returns the parsed
// values or an error when the parsing failed.
-func (c *jsonCodec) ParseRequestArguments(argTypes []reflect.Type, params interface{}) ([]reflect.Value, RPCError) {
+func (c *jsonCodec) ParseRequestArguments(argTypes []reflect.Type, params interface{}) ([]reflect.Value, Error) {
if args, ok := params.(json.RawMessage); !ok {
return nil, &invalidParamsError{"Invalid params supplied"}
} else {
@@ -264,7 +269,7 @@ func (c *jsonCodec) ParseRequestArguments(argTypes []reflect.Type, params interf
// parsePositionalArguments tries to parse the given args to an array of values with the given types.
// It returns the parsed values or an error when the args could not be parsed. Missing optional arguments
// are returned as reflect.Zero values.
-func parsePositionalArguments(args json.RawMessage, callbackArgs []reflect.Type) ([]reflect.Value, RPCError) {
+func parsePositionalArguments(args json.RawMessage, callbackArgs []reflect.Type) ([]reflect.Value, Error) {
params := make([]interface{}, 0, len(callbackArgs))
for _, t := range callbackArgs {
params = append(params, reflect.New(t).Interface())
@@ -302,31 +307,31 @@ func parsePositionalArguments(args json.RawMessage, callbackArgs []reflect.Type)
// CreateResponse will create a JSON-RPC success response with the given id and reply as result.
func (c *jsonCodec) CreateResponse(id interface{}, reply interface{}) interface{} {
if isHexNum(reflect.TypeOf(reply)) {
- return &JSONSuccessResponse{Version: JSONRPCVersion, Id: id, Result: fmt.Sprintf(`%#x`, reply)}
+ return &jsonSuccessResponse{Version: jsonrpcVersion, Id: id, Result: fmt.Sprintf(`%#x`, reply)}
}
- return &JSONSuccessResponse{Version: JSONRPCVersion, Id: id, Result: reply}
+ return &jsonSuccessResponse{Version: jsonrpcVersion, Id: id, Result: reply}
}
// CreateErrorResponse will create a JSON-RPC error response with the given id and error.
-func (c *jsonCodec) CreateErrorResponse(id interface{}, err RPCError) interface{} {
- return &JSONErrResponse{Version: JSONRPCVersion, Id: id, Error: JSONError{Code: err.Code(), Message: err.Error()}}
+func (c *jsonCodec) CreateErrorResponse(id interface{}, err Error) interface{} {
+ return &jsonErrResponse{Version: jsonrpcVersion, Id: id, Error: jsonError{Code: err.ErrorCode(), Message: err.Error()}}
}
// CreateErrorResponseWithInfo will create a JSON-RPC error response with the given id and error.
// info is optional and contains additional information about the error. When an empty string is passed it is ignored.
-func (c *jsonCodec) CreateErrorResponseWithInfo(id interface{}, err RPCError, info interface{}) interface{} {
- return &JSONErrResponse{Version: JSONRPCVersion, Id: id,
- Error: JSONError{Code: err.Code(), Message: err.Error(), Data: info}}
+func (c *jsonCodec) CreateErrorResponseWithInfo(id interface{}, err Error, info interface{}) interface{} {
+ return &jsonErrResponse{Version: jsonrpcVersion, Id: id,
+ Error: jsonError{Code: err.ErrorCode(), Message: err.Error(), Data: info}}
}
// CreateNotification will create a JSON-RPC notification with the given subscription id and event as params.
func (c *jsonCodec) CreateNotification(subid string, event interface{}) interface{} {
if isHexNum(reflect.TypeOf(event)) {
- return &jsonNotification{Version: JSONRPCVersion, Method: notificationMethod,
+ return &jsonNotification{Version: jsonrpcVersion, Method: notificationMethod,
Params: jsonSubscription{Subscription: subid, Result: fmt.Sprintf(`%#x`, event)}}
}
- return &jsonNotification{Version: JSONRPCVersion, Method: notificationMethod,
+ return &jsonNotification{Version: jsonrpcVersion, Method: notificationMethod,
Params: jsonSubscription{Subscription: subid, Result: event}}
}
diff --git a/rpc/notification.go b/rpc/notification.go
deleted file mode 100644
index e84e26a58..000000000
--- a/rpc/notification.go
+++ /dev/null
@@ -1,297 +0,0 @@
-// Copyright 2016 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package rpc
-
-import (
- "errors"
- "sync"
- "time"
-
- "github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/logger/glog"
- "golang.org/x/net/context"
-)
-
-var (
- // ErrNotificationsUnsupported is returned when the connection doesn't support notifications
- ErrNotificationsUnsupported = errors.New("notifications not supported")
-
- // ErrNotificationNotFound is returned when the notification for the given id is not found
- ErrNotificationNotFound = errors.New("notification not found")
-
- // errNotifierStopped is returned when the notifier is stopped (e.g. codec is closed)
- errNotifierStopped = errors.New("unable to send notification")
-
- // errNotificationQueueFull is returns when there are too many notifications in the queue
- errNotificationQueueFull = errors.New("too many pending notifications")
-)
-
-// unsubSignal is a signal that the subscription is unsubscribed. It is used to flush buffered
-// notifications that might be pending in the internal queue.
-var unsubSignal = new(struct{})
-
-// UnsubscribeCallback defines a callback that is called when a subcription ends.
-// It receives the subscription id as argument.
-type UnsubscribeCallback func(id string)
-
-// notification is a helper object that holds event data for a subscription
-type notification struct {
- sub *bufferedSubscription // subscription id
- data interface{} // event data
-}
-
-// A Notifier type describes the interface for objects that can send create subscriptions
-type Notifier interface {
- // Create a new subscription. The given callback is called when this subscription
- // is cancelled (e.g. client send an unsubscribe, connection closed).
- NewSubscription(UnsubscribeCallback) (Subscription, error)
- // Cancel subscription
- Unsubscribe(id string) error
-}
-
-type notifierKey struct{}
-
-// NotifierFromContext returns the Notifier value stored in ctx, if any.
-func NotifierFromContext(ctx context.Context) (Notifier, bool) {
- n, ok := ctx.Value(notifierKey{}).(Notifier)
- return n, ok
-}
-
-// Subscription defines the interface for objects that can notify subscribers
-type Subscription interface {
- // Inform client of an event
- Notify(data interface{}) error
- // Unique identifier
- ID() string
- // Cancel subscription
- Cancel() error
-}
-
-// bufferedSubscription is a subscription that uses a bufferedNotifier to send
-// notifications to subscribers.
-type bufferedSubscription struct {
- id string
- unsubOnce sync.Once // call unsub method once
- unsub UnsubscribeCallback // called on Unsubscribed
- notifier *bufferedNotifier // forward notifications to
- pending chan interface{} // closed when active
- flushed chan interface{} // closed when all buffered notifications are send
- lastNotification time.Time // last time a notification was send
-}
-
-// ID returns the subscription identifier that the client uses to refer to this instance.
-func (s *bufferedSubscription) ID() string {
- return s.id
-}
-
-// Cancel informs the notifier that this subscription is cancelled by the API
-func (s *bufferedSubscription) Cancel() error {
- return s.notifier.Unsubscribe(s.id)
-}
-
-// Notify the subscriber of a particular event.
-func (s *bufferedSubscription) Notify(data interface{}) error {
- return s.notifier.send(s.id, data)
-}
-
-// bufferedNotifier is a notifier that queues notifications in an internal queue and
-// send them as fast as possible to the client from this queue. It will stop if the
-// queue grows past a given size.
-type bufferedNotifier struct {
- codec ServerCodec // underlying connection
- mu sync.Mutex // guard internal state
- subscriptions map[string]*bufferedSubscription // keep track of subscriptions associated with codec
- queueSize int // max number of items in queue
- queue chan *notification // notification queue
- stopped bool // indication if this notifier is ordered to stop
-}
-
-// newBufferedNotifier returns a notifier that queues notifications in an internal queue
-// from which notifications are send as fast as possible to the client. If the queue size
-// limit is reached (client is unable to keep up) it will stop and closes the codec.
-func newBufferedNotifier(codec ServerCodec, size int) *bufferedNotifier {
- notifier := &bufferedNotifier{
- codec: codec,
- subscriptions: make(map[string]*bufferedSubscription),
- queue: make(chan *notification, size),
- queueSize: size,
- }
-
- go notifier.run()
-
- return notifier
-}
-
-// NewSubscription creates a new subscription that forwards events to this instance internal
-// queue. The given callback is called when the subscription is unsubscribed/cancelled.
-func (n *bufferedNotifier) NewSubscription(callback UnsubscribeCallback) (Subscription, error) {
- id, err := newSubscriptionID()
- if err != nil {
- return nil, err
- }
-
- n.mu.Lock()
- defer n.mu.Unlock()
-
- if n.stopped {
- return nil, errNotifierStopped
- }
-
- sub := &bufferedSubscription{
- id: id,
- unsub: callback,
- notifier: n,
- pending: make(chan interface{}),
- flushed: make(chan interface{}),
- lastNotification: time.Now(),
- }
-
- n.subscriptions[id] = sub
-
- return sub, nil
-}
-
-// Remove the given subscription. If subscription is not found notificationNotFoundErr is returned.
-func (n *bufferedNotifier) Unsubscribe(subid string) error {
- n.mu.Lock()
- sub, found := n.subscriptions[subid]
- n.mu.Unlock()
-
- if found {
- // send the unsubscribe signal, this will cause the notifier not to accept new events
- // for this subscription and will close the flushed channel after the last (buffered)
- // notification was send to the client.
- if err := n.send(subid, unsubSignal); err != nil {
- return err
- }
-
- // wait for confirmation that all (buffered) events are send for this subscription.
- // this ensures that the unsubscribe method response is not send before all buffered
- // events for this subscription are send.
- <-sub.flushed
-
- return nil
- }
-
- return ErrNotificationNotFound
-}
-
-// Send enques the given data for the subscription with public ID on the internal queue. t returns
-// an error when the notifier is stopped or the queue is full. If data is the unsubscribe signal it
-// will remove the subscription with the given id from the subscription collection.
-func (n *bufferedNotifier) send(id string, data interface{}) error {
- n.mu.Lock()
- defer n.mu.Unlock()
-
- if n.stopped {
- return errNotifierStopped
- }
-
- var (
- subscription *bufferedSubscription
- found bool
- )
-
- // check if subscription is associated with this connection, it might be cancelled
- // (subscribe/connection closed)
- if subscription, found = n.subscriptions[id]; !found {
- glog.V(logger.Error).Infof("received notification for unknown subscription %s\n", id)
- return ErrNotificationNotFound
- }
-
- // received the unsubscribe signal. Add it to the queue to make sure any pending notifications
- // for this subscription are send. When the run loop receives this singal it will signal that
- // all pending subscriptions are flushed and that the confirmation of the unsubscribe can be
- // send to the user. Remove the subscriptions to make sure new notifications are not accepted.
- if data == unsubSignal {
- delete(n.subscriptions, id)
- if subscription.unsub != nil {
- subscription.unsubOnce.Do(func() { subscription.unsub(id) })
- }
- }
-
- subscription.lastNotification = time.Now()
-
- if len(n.queue) >= n.queueSize {
- glog.V(logger.Warn).Infoln("too many buffered notifications -> close connection")
- n.codec.Close()
- return errNotificationQueueFull
- }
-
- n.queue <- &notification{subscription, data}
- return nil
-}
-
-// run reads notifications from the internal queue and sends them to the client. In case of an
-// error, or when the codec is closed it will cancel all active subscriptions and returns.
-func (n *bufferedNotifier) run() {
- defer func() {
- n.mu.Lock()
- defer n.mu.Unlock()
-
- n.stopped = true
- close(n.queue)
-
- // on exit call unsubscribe callback
- for id, sub := range n.subscriptions {
- if sub.unsub != nil {
- sub.unsubOnce.Do(func() { sub.unsub(id) })
- }
- close(sub.flushed)
- delete(n.subscriptions, id)
- }
- }()
-
- for {
- select {
- case notification := <-n.queue:
- // It can happen that an event is raised before the RPC server was able to send the sub
- // id to the client. Therefore subscriptions are marked as pending until the sub id was
- // send. The RPC server will activate the subscription by closing the pending chan.
- <-notification.sub.pending
-
- if notification.data == unsubSignal {
- // unsubSignal is the last accepted message for this subscription. Raise the signal
- // that all buffered notifications are sent by closing the flushed channel. This
- // indicates that the response for the unsubscribe can be send to the client.
- close(notification.sub.flushed)
- } else {
- msg := n.codec.CreateNotification(notification.sub.id, notification.data)
- if err := n.codec.Write(msg); err != nil {
- n.codec.Close()
- // unable to send notification to client, unsubscribe all subscriptions
- glog.V(logger.Warn).Infof("unable to send notification - %v\n", err)
- return
- }
- }
- case <-n.codec.Closed(): // connection was closed
- glog.V(logger.Debug).Infoln("codec closed, stop subscriptions")
- return
- }
- }
-}
-
-// Marks the subscription as active. This will causes the notifications for this subscription to be
-// forwarded to the client.
-func (n *bufferedNotifier) activate(subid string) {
- n.mu.Lock()
- defer n.mu.Unlock()
-
- if sub, found := n.subscriptions[subid]; found {
- close(sub.pending)
- }
-}
diff --git a/rpc/server.go b/rpc/server.go
index 7b7d22063..996c63700 100644
--- a/rpc/server.go
+++ b/rpc/server.go
@@ -21,7 +21,6 @@ import (
"reflect"
"runtime"
"sync/atomic"
- "time"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
@@ -30,8 +29,6 @@ import (
)
const (
- stopPendingRequestTimeout = 3 * time.Second // give pending requests stopPendingRequestTimeout the time to finish when the server is stopped
-
notificationBufferSize = 10000 // max buffered notifications before codec is closed
MetadataApi = "rpc"
@@ -169,7 +166,7 @@ func (s *Server) serveRequest(codec ServerCodec, singleShot bool, options CodecO
// to send notification to clients. It is thight to the codec/connection. If the
// connection is closed the notifier will stop and cancels all active subscriptions.
if options&OptionSubscriptions == OptionSubscriptions {
- ctx = context.WithValue(ctx, notifierKey{}, newBufferedNotifier(codec, notificationBufferSize))
+ ctx = context.WithValue(ctx, notifierKey{}, newNotifier(codec))
}
s.codecsMu.Lock()
if atomic.LoadInt32(&s.run) != 1 { // server stopped
@@ -183,7 +180,7 @@ func (s *Server) serveRequest(codec ServerCodec, singleShot bool, options CodecO
for atomic.LoadInt32(&s.run) == 1 {
reqs, batch, err := s.readRequest(codec)
if err != nil {
- glog.V(logger.Debug).Infof("%v\n", err)
+ glog.V(logger.Debug).Infof("read error %v\n", err)
codec.Write(codec.CreateErrorResponse(nil, err))
return nil
}
@@ -240,19 +237,17 @@ func (s *Server) ServeSingleRequest(codec ServerCodec, options CodecOption) {
func (s *Server) Stop() {
if atomic.CompareAndSwapInt32(&s.run, 1, 0) {
glog.V(logger.Debug).Infoln("RPC Server shutdown initiatied")
- time.AfterFunc(stopPendingRequestTimeout, func() {
- s.codecsMu.Lock()
- defer s.codecsMu.Unlock()
- s.codecs.Each(func(c interface{}) bool {
- c.(ServerCodec).Close()
- return true
- })
+ s.codecsMu.Lock()
+ defer s.codecsMu.Unlock()
+ s.codecs.Each(func(c interface{}) bool {
+ c.(ServerCodec).Close()
+ return true
})
}
}
// createSubscription will call the subscription callback and returns the subscription id or error.
-func (s *Server) createSubscription(ctx context.Context, c ServerCodec, req *serverRequest) (string, error) {
+func (s *Server) createSubscription(ctx context.Context, c ServerCodec, req *serverRequest) (ID, error) {
// subscription have as first argument the context following optional arguments
args := []reflect.Value{req.callb.rcvr, reflect.ValueOf(ctx)}
args = append(args, req.args...)
@@ -262,7 +257,7 @@ func (s *Server) createSubscription(ctx context.Context, c ServerCodec, req *ser
return "", reply[1].Interface().(error)
}
- return reply[0].Interface().(Subscription).ID(), nil
+ return reply[0].Interface().(*Subscription).ID, nil
}
// handle executes a request and returns the response from the callback.
@@ -278,8 +273,8 @@ func (s *Server) handle(ctx context.Context, codec ServerCodec, req *serverReque
return codec.CreateErrorResponse(&req.id, &callbackError{ErrNotificationsUnsupported.Error()}), nil
}
- subid := req.args[0].String()
- if err := notifier.Unsubscribe(subid); err != nil {
+ subid := ID(req.args[0].String())
+ if err := notifier.unsubscribe(subid); err != nil {
return codec.CreateErrorResponse(&req.id, &callbackError{err.Error()}), nil
}
@@ -297,7 +292,7 @@ func (s *Server) handle(ctx context.Context, codec ServerCodec, req *serverReque
// active the subscription after the sub id was successfully sent to the client
activateSub := func() {
notifier, _ := NotifierFromContext(ctx)
- notifier.(*bufferedNotifier).activate(subid)
+ notifier.activate(subid)
}
return codec.CreateResponse(req.id, subid), activateSub
@@ -386,7 +381,7 @@ func (s *Server) execBatch(ctx context.Context, codec ServerCodec, requests []*s
// readRequest requests the next (batch) request from the codec. It will return the collection
// of requests, an indication if the request was a batch, the invalid request identifier and an
// error when the request could not be read/parsed.
-func (s *Server) readRequest(codec ServerCodec) ([]*serverRequest, bool, RPCError) {
+func (s *Server) readRequest(codec ServerCodec) ([]*serverRequest, bool, Error) {
reqs, batch, err := codec.ReadRequestHeaders()
if err != nil {
return nil, batch, err
@@ -399,6 +394,11 @@ func (s *Server) readRequest(codec ServerCodec) ([]*serverRequest, bool, RPCErro
var ok bool
var svc *service
+ if r.err != nil {
+ requests[i] = &serverRequest{id: r.id, err: r.err}
+ continue
+ }
+
if r.isPubSub && r.method == unsubscribeMethod {
requests[i] = &serverRequest{id: r.id, isUnsubscribe: true}
argTypes := []reflect.Type{reflect.TypeOf("")} // expect subscription id as first arg
diff --git a/rpc/server_test.go b/rpc/server_test.go
index de47e1afd..c3c88fab7 100644
--- a/rpc/server_test.go
+++ b/rpc/server_test.go
@@ -21,6 +21,7 @@ import (
"net"
"reflect"
"testing"
+ "time"
"golang.org/x/net/context"
)
@@ -48,6 +49,13 @@ func (s *Service) EchoWithCtx(ctx context.Context, str string, i int, args *Args
return Result{str, i, args}
}
+func (s *Service) Sleep(ctx context.Context, duration time.Duration) {
+ select {
+ case <-time.After(duration):
+ case <-ctx.Done():
+ }
+}
+
func (s *Service) Rets() (string, error) {
return "", nil
}
@@ -64,7 +72,7 @@ func (s *Service) InvalidRets3() (string, string, error) {
return "", "", nil
}
-func (s *Service) Subscription(ctx context.Context) (Subscription, error) {
+func (s *Service) Subscription(ctx context.Context) (*Subscription, error) {
return nil, nil
}
@@ -85,8 +93,8 @@ func TestServerRegisterName(t *testing.T) {
t.Fatalf("Expected service calc to be registered")
}
- if len(svc.callbacks) != 4 {
- t.Errorf("Expected 4 callbacks for service 'calc', got %d", len(svc.callbacks))
+ if len(svc.callbacks) != 5 {
+ t.Errorf("Expected 5 callbacks for service 'calc', got %d", len(svc.callbacks))
}
if len(svc.subscriptions) != 1 {
@@ -126,7 +134,7 @@ func testServerMethodExecution(t *testing.T, method string) {
t.Fatal(err)
}
- response := JSONSuccessResponse{Result: &Result{}}
+ response := jsonSuccessResponse{Result: &Result{}}
if err := in.Decode(&response); err != nil {
t.Fatal(err)
}
diff --git a/rpc/subscription.go b/rpc/subscription.go
new file mode 100644
index 000000000..863d34b20
--- /dev/null
+++ b/rpc/subscription.go
@@ -0,0 +1,135 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package rpc
+
+import (
+ "errors"
+ "sync"
+
+ "golang.org/x/net/context"
+)
+
+var (
+ // ErrNotificationsUnsupported is returned when the connection doesn't support notifications
+ ErrNotificationsUnsupported = errors.New("notifications not supported")
+ // ErrNotificationNotFound is returned when the notification for the given id is not found
+ ErrSubscriptionNotFound = errors.New("subscription not found")
+)
+
+// ID defines a psuedo random number that is used to identify RPC subscriptions.
+type ID string
+
+// a Subscription is created by a notifier and tight to that notifier. The client can use
+// this subscription to wait for an unsubscribe request for the client, see Err().
+type Subscription struct {
+ ID ID
+ err chan error // closed on unsubscribe
+}
+
+// Err returns a channel that is closed when the client send an unsubscribe request.
+func (s *Subscription) Err() <-chan error {
+ return s.err
+}
+
+// notifierKey is used to store a notifier within the connection context.
+type notifierKey struct{}
+
+// Notifier is tight to a RPC connection that supports subscriptions.
+// Server callbacks use the notifier to send notifications.
+type Notifier struct {
+ codec ServerCodec
+ subMu sync.RWMutex // guards active and inactive maps
+ stopped bool
+ active map[ID]*Subscription
+ inactive map[ID]*Subscription
+}
+
+// newNotifier creates a new notifier that can be used to send subscription
+// notifications to the client.
+func newNotifier(codec ServerCodec) *Notifier {
+ return &Notifier{
+ codec: codec,
+ active: make(map[ID]*Subscription),
+ inactive: make(map[ID]*Subscription),
+ }
+}
+
+// NotifierFromContext returns the Notifier value stored in ctx, if any.
+func NotifierFromContext(ctx context.Context) (*Notifier, bool) {
+ n, ok := ctx.Value(notifierKey{}).(*Notifier)
+ return n, ok
+}
+
+// CreateSubscription returns a new subscription that is coupled to the
+// RPC connection. By default subscriptions are inactive and notifications
+// are dropped until the subscription is marked as active. This is done
+// by the RPC server after the subscription ID is send to the client.
+func (n *Notifier) CreateSubscription() *Subscription {
+ s := &Subscription{NewID(), make(chan error)}
+ n.subMu.Lock()
+ n.inactive[s.ID] = s
+ n.subMu.Unlock()
+ return s
+}
+
+// Notify sends a notification to the client with the given data as payload.
+// If an error occurs the RPC connection is closed and the error is returned.
+func (n *Notifier) Notify(id ID, data interface{}) error {
+ n.subMu.RLock()
+ defer n.subMu.RUnlock()
+
+ _, active := n.active[id]
+ if active {
+ notification := n.codec.CreateNotification(string(id), data)
+ if err := n.codec.Write(notification); err != nil {
+ n.codec.Close()
+ return err
+ }
+ }
+ return nil
+}
+
+// Closed returns a channel that is closed when the RPC connection is closed.
+func (n *Notifier) Closed() <-chan interface{} {
+ return n.codec.Closed()
+}
+
+// unsubscribe a subscription.
+// If the subscription could not be found ErrSubscriptionNotFound is returned.
+func (n *Notifier) unsubscribe(id ID) error {
+ n.subMu.Lock()
+ defer n.subMu.Unlock()
+ if s, found := n.active[id]; found {
+ close(s.err)
+ delete(n.active, id)
+ return nil
+ }
+ return ErrSubscriptionNotFound
+}
+
+// activate enables a subscription. Until a subscription is enabled all
+// notifications are dropped. This method is called by the RPC server after
+// the subscription ID was sent to client. This prevents notifications being
+// send to the client before the subscription ID is send to the client.
+func (n *Notifier) activate(id ID) {
+ n.subMu.Lock()
+ defer n.subMu.Unlock()
+ if sub, found := n.inactive[id]; found {
+ n.active[id] = sub
+ delete(n.inactive, id)
+ }
+}
diff --git a/rpc/notification_test.go b/rpc/subscription_test.go
index 1bcede177..8bb341694 100644
--- a/rpc/notification_test.go
+++ b/rpc/subscription_test.go
@@ -19,23 +19,38 @@ package rpc
import (
"encoding/json"
"net"
+ "sync"
"testing"
"time"
"golang.org/x/net/context"
)
-type NotificationTestService struct{}
+type NotificationTestService struct {
+ mu sync.Mutex
+ unsubscribed bool
-var (
- unsubCallbackCalled = false
-)
+ gotHangSubscriptionReq chan struct{}
+ unblockHangSubscription chan struct{}
+}
+
+func (s *NotificationTestService) Echo(i int) int {
+ return i
+}
+
+func (s *NotificationTestService) wasUnsubCallbackCalled() bool {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ return s.unsubscribed
+}
func (s *NotificationTestService) Unsubscribe(subid string) {
- unsubCallbackCalled = true
+ s.mu.Lock()
+ s.unsubscribed = true
+ s.mu.Unlock()
}
-func (s *NotificationTestService) SomeSubscription(ctx context.Context, n, val int) (Subscription, error) {
+func (s *NotificationTestService) SomeSubscription(ctx context.Context, n, val int) (*Subscription, error) {
notifier, supported := NotifierFromContext(ctx)
if !supported {
return nil, ErrNotificationsUnsupported
@@ -44,22 +59,52 @@ func (s *NotificationTestService) SomeSubscription(ctx context.Context, n, val i
// by explicitly creating an subscription we make sure that the subscription id is send back to the client
// before the first subscription.Notify is called. Otherwise the events might be send before the response
// for the eth_subscribe method.
- subscription, err := notifier.NewSubscription(s.Unsubscribe)
- if err != nil {
- return nil, err
- }
+ subscription := notifier.CreateSubscription()
go func() {
+ // test expects n events, if we begin sending event immediatly some events
+ // will probably be dropped since the subscription ID might not be send to
+ // the client.
+ time.Sleep(5 * time.Second)
for i := 0; i < n; i++ {
- if err := subscription.Notify(val + i); err != nil {
+ if err := notifier.Notify(subscription.ID, val+i); err != nil {
return
}
}
+
+ select {
+ case <-notifier.Closed():
+ s.mu.Lock()
+ s.unsubscribed = true
+ s.mu.Unlock()
+ case <-subscription.Err():
+ s.mu.Lock()
+ s.unsubscribed = true
+ s.mu.Unlock()
+ }
}()
return subscription, nil
}
+// HangSubscription blocks on s.unblockHangSubscription before
+// sending anything.
+func (s *NotificationTestService) HangSubscription(ctx context.Context, val int) (*Subscription, error) {
+ notifier, supported := NotifierFromContext(ctx)
+ if !supported {
+ return nil, ErrNotificationsUnsupported
+ }
+
+ s.gotHangSubscriptionReq <- struct{}{}
+ <-s.unblockHangSubscription
+ subscription := notifier.CreateSubscription()
+
+ go func() {
+ notifier.Notify(subscription.ID, val)
+ }()
+ return subscription, nil
+}
+
func TestNotifications(t *testing.T) {
server := NewServer()
service := &NotificationTestService{}
@@ -90,7 +135,7 @@ func TestNotifications(t *testing.T) {
}
var subid string
- response := JSONSuccessResponse{Result: subid}
+ response := jsonSuccessResponse{Result: subid}
if err := in.Decode(&response); err != nil {
t.Fatal(err)
}
@@ -114,7 +159,7 @@ func TestNotifications(t *testing.T) {
clientConn.Close() // causes notification unsubscribe callback to be called
time.Sleep(1 * time.Second)
- if !unsubCallbackCalled {
+ if !service.wasUnsubCallbackCalled() {
t.Error("unsubscribe callback not called after closing connection")
}
}
diff --git a/rpc/types.go b/rpc/types.go
index a1f36fbd2..ebe388373 100644
--- a/rpc/types.go
+++ b/rpc/types.go
@@ -17,6 +17,8 @@
package rpc
import (
+ "bytes"
+ "encoding/hex"
"fmt"
"math"
"math/big"
@@ -62,7 +64,7 @@ type serverRequest struct {
callb *callback
args []reflect.Value
isUnsubscribe bool
- err RPCError
+ err Error
}
type serviceRegistry map[string]*service // collection of services
@@ -88,14 +90,13 @@ type rpcRequest struct {
id interface{}
isPubSub bool
params interface{}
+ err Error // invalid batch element
}
-// RPCError implements RPC error, is add support for error codec over regular go errors
-type RPCError interface {
- // RPC error code
- Code() int
- // Error message
- Error() string
+// Error wraps RPC errors, which contain an error code in addition to the message.
+type Error interface {
+ Error() string // returns the message
+ ErrorCode() int // returns the code
}
// ServerCodec implements reading, parsing and writing RPC messages for the server side of
@@ -103,15 +104,15 @@ type RPCError interface {
// multiple go-routines concurrently.
type ServerCodec interface {
// Read next request
- ReadRequestHeaders() ([]rpcRequest, bool, RPCError)
+ ReadRequestHeaders() ([]rpcRequest, bool, Error)
// Parse request argument to the given types
- ParseRequestArguments([]reflect.Type, interface{}) ([]reflect.Value, RPCError)
+ ParseRequestArguments([]reflect.Type, interface{}) ([]reflect.Value, Error)
// Assemble success response, expects response id and payload
CreateResponse(interface{}, interface{}) interface{}
// Assemble error response, expects response id and error
- CreateErrorResponse(interface{}, RPCError) interface{}
+ CreateErrorResponse(interface{}, Error) interface{}
// Assemble error response with extra information about the error through info
- CreateErrorResponseWithInfo(id interface{}, err RPCError, info interface{}) interface{}
+ CreateErrorResponseWithInfo(id interface{}, err Error, info interface{}) interface{}
// Create notification response
CreateNotification(string, interface{}) interface{}
// Write msg to client.
@@ -270,17 +271,34 @@ func (bn *BlockNumber) UnmarshalJSON(data []byte) error {
return fmt.Errorf("blocknumber not in range [%d, %d]", earliestBlockNumber, maxBlockNumber)
}
-func (bn *BlockNumber) Int64() int64 {
- return (int64)(*bn)
+func (bn BlockNumber) Int64() int64 {
+ return (int64)(bn)
}
-// Client defines the interface for go client that wants to connect to a geth RPC endpoint
-type Client interface {
- // SupportedModules returns the collection of API's the server offers
- SupportedModules() (map[string]string, error)
+// HexBytes JSON-encodes as hex with 0x prefix.
+type HexBytes []byte
- Send(req interface{}) error
- Recv(msg interface{}) error
+func (b HexBytes) MarshalJSON() ([]byte, error) {
+ result := make([]byte, len(b)*2+4)
+ copy(result, `"0x`)
+ hex.Encode(result[3:], b)
+ result[len(result)-1] = '"'
+ return result, nil
+}
- Close()
+func (b *HexBytes) UnmarshalJSON(input []byte) error {
+ if len(input) >= 2 && input[0] == '"' && input[len(input)-1] == '"' {
+ input = input[1 : len(input)-1]
+ }
+ if !bytes.HasPrefix(input, []byte("0x")) {
+ return fmt.Errorf("missing 0x prefix for hex byte array")
+ }
+ input = input[2:]
+ if len(input) == 0 {
+ *b = nil
+ return nil
+ }
+ *b = make([]byte, len(input)/2)
+ _, err := hex.Decode(*b, input)
+ return err
}
diff --git a/rpc/types_test.go b/rpc/types_test.go
index c2c5c6db6..5482557b8 100644
--- a/rpc/types_test.go
+++ b/rpc/types_test.go
@@ -71,3 +71,25 @@ func TestHexNumberMarshalJSON(t *testing.T) {
t.Fatalf("Invalid json.Marshal, expected '%s', got '%s'", exp, got)
}
}
+
+var hexBytesTests = []struct{ in, out []byte }{
+ {in: []byte(`"0x"`), out: []byte{}},
+ {in: []byte(`"0x00"`), out: []byte{0}},
+ {in: []byte(`"0x01ff"`), out: []byte{0x01, 0xFF}},
+}
+
+func TestHexBytes(t *testing.T) {
+ for i, test := range hexBytesTests {
+ var dec HexBytes
+ if err := json.Unmarshal(test.in, &dec); err != nil {
+ t.Fatalf("test %d: can't decode: %v", i, err)
+ }
+ enc, _ := json.Marshal(HexBytes(test.out))
+ if !bytes.Equal(dec, test.out) {
+ t.Errorf("test %d: wrong decoded value 0x%x", i, dec)
+ }
+ if !bytes.Equal(enc, test.in) {
+ t.Errorf("test %d: wrong encoded value %#q", i, enc)
+ }
+ }
+}
diff --git a/rpc/utils.go b/rpc/utils.go
index fe482e19d..c249e9b4a 100644
--- a/rpc/utils.go
+++ b/rpc/utils.go
@@ -17,18 +17,27 @@
package rpc
import (
- "crypto/rand"
+ "bufio"
+ crand "crypto/rand"
+ "encoding/binary"
"encoding/hex"
- "errors"
- "fmt"
"math/big"
+ "math/rand"
"reflect"
+ "strings"
+ "sync"
+ "time"
"unicode"
"unicode/utf8"
"golang.org/x/net/context"
)
+var (
+ subscriptionIDGenMu sync.Mutex
+ subscriptionIDGen = idGenerator()
+)
+
// Is this an exported - upper case - name?
func isExported(name string) bool {
rune, _ := utf8.DecodeRuneInString(name)
@@ -219,39 +228,36 @@ METHODS:
return callbacks, subscriptions
}
-func newSubscriptionID() (string, error) {
- var subid [16]byte
- n, _ := rand.Read(subid[:])
- if n != 16 {
- return "", errors.New("Unable to generate subscription id")
+// idGenerator helper utility that generates a (pseudo) random sequence of
+// bytes that are used to generate identifiers.
+func idGenerator() *rand.Rand {
+ if seed, err := binary.ReadVarint(bufio.NewReader(crand.Reader)); err == nil {
+ return rand.New(rand.NewSource(seed))
}
- return "0x" + hex.EncodeToString(subid[:]), nil
+ return rand.New(rand.NewSource(int64(time.Now().Nanosecond())))
}
-// SupportedModules returns the collection of API's that the RPC server offers
-// on which the given client connects.
-func SupportedModules(client Client) (map[string]string, error) {
- req := JSONRequest{
- Id: []byte("1"),
- Version: "2.0",
- Method: MetadataApi + "_modules",
- }
- if err := client.Send(req); err != nil {
- return nil, err
+// NewID generates a identifier that can be used as an identifier in the RPC interface.
+// e.g. filter and subscription identifier.
+func NewID() ID {
+ subscriptionIDGenMu.Lock()
+ defer subscriptionIDGenMu.Unlock()
+
+ id := make([]byte, 16)
+ for i := 0; i < len(id); i += 7 {
+ val := subscriptionIDGen.Int63()
+ for j := 0; i+j < len(id) && j < 7; j++ {
+ id[i+j] = byte(val)
+ val >>= 8
+ }
}
- var response JSONSuccessResponse
- if err := client.Recv(&response); err != nil {
- return nil, err
+ rpcId := hex.EncodeToString(id)
+ // rpc ID's are RPC quantities, no leading zero's and 0 is 0x0
+ rpcId = strings.TrimLeft(rpcId, "0")
+ if rpcId == "" {
+ rpcId = "0"
}
- if response.Result != nil {
- mods := make(map[string]string)
- if modules, ok := response.Result.(map[string]interface{}); ok {
- for m, v := range modules {
- mods[m] = fmt.Sprintf("%s", v)
- }
- return mods, nil
- }
- }
- return nil, fmt.Errorf("unable to retrieve modules")
+
+ return ID("0x" + rpcId)
}
diff --git a/rpc/utils_test.go b/rpc/utils_test.go
new file mode 100644
index 000000000..e0e063f60
--- /dev/null
+++ b/rpc/utils_test.go
@@ -0,0 +1,43 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package rpc
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestNewID(t *testing.T) {
+ hexchars := "0123456789ABCDEFabcdef"
+ for i := 0; i < 100; i++ {
+ id := string(NewID())
+ if !strings.HasPrefix(id, "0x") {
+ t.Fatalf("invalid ID prefix, want '0x...', got %s", id)
+ }
+
+ id = id[2:]
+ if len(id) == 0 || len(id) > 32 {
+ t.Fatalf("invalid ID length, want len(id) > 0 && len(id) <= 32), got %d", len(id))
+ }
+
+ for i := 0; i < len(id); i++ {
+ if strings.IndexByte(hexchars, id[i]) == -1 {
+ t.Fatalf("unexpected byte, want any valid hex char, got %c", id[i])
+ }
+ }
+ }
+}
diff --git a/rpc/websocket.go b/rpc/websocket.go
index fe9354d94..fc3cd0709 100644
--- a/rpc/websocket.go
+++ b/rpc/websocket.go
@@ -17,36 +17,39 @@
package rpc
import (
+ "crypto/tls"
"fmt"
+ "net"
"net/http"
+ "net/url"
"os"
"strings"
- "sync"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
+ "golang.org/x/net/context"
"golang.org/x/net/websocket"
"gopkg.in/fatih/set.v0"
)
-// wsReaderWriterCloser reads and write payloads from and to a websocket connection.
-type wsReaderWriterCloser struct {
- c *websocket.Conn
-}
-
-// Read will read incoming payload data into p.
-func (rw *wsReaderWriterCloser) Read(p []byte) (int, error) {
- return rw.c.Read(p)
-}
-
-// Write writes p to the websocket.
-func (rw *wsReaderWriterCloser) Write(p []byte) (int, error) {
- return rw.c.Write(p)
+// WebsocketHandler returns a handler that serves JSON-RPC to WebSocket connections.
+//
+// allowedOrigins should be a comma-separated list of allowed origin URLs.
+// To allow connections with any origin, pass "*".
+func (srv *Server) WebsocketHandler(allowedOrigins string) http.Handler {
+ return websocket.Server{
+ Handshake: wsHandshakeValidator(strings.Split(allowedOrigins, ",")),
+ Handler: func(conn *websocket.Conn) {
+ srv.ServeCodec(NewJSONCodec(conn), OptionMethodInvocation|OptionSubscriptions)
+ },
+ }
}
-// Close closes the websocket connection.
-func (rw *wsReaderWriterCloser) Close() error {
- return rw.c.Close()
+// NewWSServer creates a new websocket RPC server around an API provider.
+//
+// Deprecated: use Server.WebsocketHandler
+func NewWSServer(allowedOrigins string, srv *Server) *http.Server {
+ return &http.Server{Handler: srv.WebsocketHandler(allowedOrigins)}
}
// wsHandshakeValidator returns a handler that verifies the origin during the
@@ -87,96 +90,63 @@ func wsHandshakeValidator(allowedOrigins []string) func(*websocket.Config, *http
return f
}
-// NewWSServer creates a new websocket RPC server around an API provider.
-func NewWSServer(allowedOrigins string, handler *Server) *http.Server {
- return &http.Server{
- Handler: websocket.Server{
- Handshake: wsHandshakeValidator(strings.Split(allowedOrigins, ",")),
- Handler: func(conn *websocket.Conn) {
- handler.ServeCodec(NewJSONCodec(&wsReaderWriterCloser{conn}),
- OptionMethodInvocation|OptionSubscriptions)
- },
- },
+// DialWebsocket creates a new RPC client that communicates with a JSON-RPC server
+// that is listening on the given endpoint.
+//
+// The context is used for the initial connection establishment. It does not
+// affect subsequent interactions with the client.
+func DialWebsocket(ctx context.Context, endpoint, origin string) (*Client, error) {
+ if origin == "" {
+ var err error
+ if origin, err = os.Hostname(); err != nil {
+ return nil, err
+ }
+ if strings.HasPrefix(endpoint, "wss") {
+ origin = "https://" + strings.ToLower(origin)
+ } else {
+ origin = "http://" + strings.ToLower(origin)
+ }
+ }
+ config, err := websocket.NewConfig(endpoint, origin)
+ if err != nil {
+ return nil, err
}
-}
-
-// wsClient represents a RPC client that communicates over websockets with a
-// RPC server.
-type wsClient struct {
- endpoint string
- connMu sync.Mutex
- conn *websocket.Conn
-}
-// NewWSClientj creates a new RPC client that communicates with a RPC server
-// that is listening on the given endpoint using JSON encoding.
-func NewWSClient(endpoint string) (Client, error) {
- return &wsClient{endpoint: endpoint}, nil
+ return newClient(ctx, func(ctx context.Context) (net.Conn, error) {
+ return wsDialContext(ctx, config)
+ })
}
-// connection will return a websocket connection to the RPC server. It will
-// (re)connect when necessary.
-func (client *wsClient) connection() (*websocket.Conn, error) {
- if client.conn != nil {
- return client.conn, nil
+func wsDialContext(ctx context.Context, config *websocket.Config) (*websocket.Conn, error) {
+ var conn net.Conn
+ var err error
+ switch config.Location.Scheme {
+ case "ws":
+ conn, err = dialContext(ctx, "tcp", wsDialAddress(config.Location))
+ case "wss":
+ dialer := contextDialer(ctx)
+ conn, err = tls.DialWithDialer(dialer, "tcp", wsDialAddress(config.Location), config.TlsConfig)
+ default:
+ err = websocket.ErrBadScheme
}
-
- origin, err := os.Hostname()
if err != nil {
return nil, err
}
-
- origin = "http://" + origin
- client.conn, err = websocket.Dial(client.endpoint, "", origin)
-
- return client.conn, err
-}
-
-// SupportedModules is the collection of modules the RPC server offers.
-func (client *wsClient) SupportedModules() (map[string]string, error) {
- return SupportedModules(client)
-}
-
-// Send writes the JSON serialized msg to the websocket. It will create a new
-// websocket connection to the server if the client is currently not connected.
-func (client *wsClient) Send(msg interface{}) (err error) {
- client.connMu.Lock()
- defer client.connMu.Unlock()
-
- var conn *websocket.Conn
- if conn, err = client.connection(); err == nil {
- if err = websocket.JSON.Send(conn, msg); err != nil {
- client.conn.Close()
- client.conn = nil
- }
+ ws, err := websocket.NewClient(config, conn)
+ if err != nil {
+ conn.Close()
+ return nil, err
}
-
- return err
+ return ws, err
}
-// Recv reads a JSON message from the websocket and unmarshals it into msg.
-func (client *wsClient) Recv(msg interface{}) (err error) {
- client.connMu.Lock()
- defer client.connMu.Unlock()
+var wsPortMap = map[string]string{"ws": "80", "wss": "443"}
- var conn *websocket.Conn
- if conn, err = client.connection(); err == nil {
- if err = websocket.JSON.Receive(conn, msg); err != nil {
- client.conn.Close()
- client.conn = nil
+func wsDialAddress(location *url.URL) string {
+ if _, ok := wsPortMap[location.Scheme]; ok {
+ if _, _, err := net.SplitHostPort(location.Host); err != nil {
+ return net.JoinHostPort(location.Host, wsPortMap[location.Scheme])
}
}
- return
-}
-
-// Close closes the underlaying websocket connection.
-func (client *wsClient) Close() {
- client.connMu.Lock()
- defer client.connMu.Unlock()
-
- if client.conn != nil {
- client.conn.Close()
- client.conn = nil
- }
-
+ return location.Host
}
diff --git a/swarm/api/api.go b/swarm/api/api.go
new file mode 100644
index 000000000..673cff350
--- /dev/null
+++ b/swarm/api/api.go
@@ -0,0 +1,191 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "fmt"
+ "io"
+ "regexp"
+ "strings"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+var (
+ hashMatcher = regexp.MustCompile("^[0-9A-Fa-f]{64}")
+ slashes = regexp.MustCompile("/+")
+ domainAndVersion = regexp.MustCompile("[@:;,]+")
+)
+
+type Resolver interface {
+ Resolve(string) (common.Hash, error)
+}
+
+/*
+Api implements webserver/file system related content storage and retrieval
+on top of the dpa
+it is the public interface of the dpa which is included in the ethereum stack
+*/
+type Api struct {
+ dpa *storage.DPA
+ dns Resolver
+}
+
+//the api constructor initialises
+func NewApi(dpa *storage.DPA, dns Resolver) (self *Api) {
+ self = &Api{
+ dpa: dpa,
+ dns: dns,
+ }
+ return
+}
+
+// DPA reader API
+func (self *Api) Retrieve(key storage.Key) storage.LazySectionReader {
+ return self.dpa.Retrieve(key)
+}
+
+func (self *Api) Store(data io.Reader, size int64, wg *sync.WaitGroup) (key storage.Key, err error) {
+ return self.dpa.Store(data, size, wg, nil)
+}
+
+type ErrResolve error
+
+// DNS Resolver
+func (self *Api) Resolve(hostPort string, nameresolver bool) (storage.Key, error) {
+ if hashMatcher.MatchString(hostPort) || self.dns == nil {
+ glog.V(logger.Detail).Infof("host is a contentHash: '%v'", hostPort)
+ return storage.Key(common.Hex2Bytes(hostPort)), nil
+ }
+ if !nameresolver {
+ return nil, fmt.Errorf("'%s' is not a content hash value.", hostPort)
+ }
+ contentHash, err := self.dns.Resolve(hostPort)
+ if err != nil {
+ err = ErrResolve(err)
+ glog.V(logger.Warn).Infof("DNS error : %v", err)
+ }
+ glog.V(logger.Detail).Infof("host lookup: %v -> %v", err)
+ return contentHash[:], err
+}
+
+func parse(uri string) (hostPort, path string) {
+ parts := slashes.Split(uri, 3)
+ var i int
+ if len(parts) == 0 {
+ return
+ }
+ // beginning with slash is now optional
+ for len(parts[i]) == 0 {
+ i++
+ }
+ hostPort = parts[i]
+ for i < len(parts)-1 {
+ i++
+ if len(path) > 0 {
+ path = path + "/" + parts[i]
+ } else {
+ path = parts[i]
+ }
+ }
+ glog.V(logger.Debug).Infof("host: '%s', path '%s' requested.", hostPort, path)
+ return
+}
+
+func (self *Api) parseAndResolve(uri string, nameresolver bool) (key storage.Key, hostPort, path string, err error) {
+ hostPort, path = parse(uri)
+ //resolving host and port
+ contentHash, err := self.Resolve(hostPort, nameresolver)
+ glog.V(logger.Debug).Infof("Resolved '%s' to contentHash: '%s', path: '%s'", uri, contentHash, path)
+ return contentHash[:], hostPort, path, err
+}
+
+// Put provides singleton manifest creation on top of dpa store
+func (self *Api) Put(content, contentType string) (string, error) {
+ r := strings.NewReader(content)
+ wg := &sync.WaitGroup{}
+ key, err := self.dpa.Store(r, int64(len(content)), wg, nil)
+ if err != nil {
+ return "", err
+ }
+ manifest := fmt.Sprintf(`{"entries":[{"hash":"%v","contentType":"%s"}]}`, key, contentType)
+ r = strings.NewReader(manifest)
+ key, err = self.dpa.Store(r, int64(len(manifest)), wg, nil)
+ if err != nil {
+ return "", err
+ }
+ wg.Wait()
+ return key.String(), nil
+}
+
+// Get uses iterative manifest retrieval and prefix matching
+// to resolve path to content using dpa retrieve
+// it returns a section reader, mimeType, status and an error
+func (self *Api) Get(uri string, nameresolver bool) (reader storage.LazySectionReader, mimeType string, status int, err error) {
+
+ key, _, path, err := self.parseAndResolve(uri, nameresolver)
+ quitC := make(chan bool)
+ trie, err := loadManifest(self.dpa, key, quitC)
+ if err != nil {
+ glog.V(logger.Warn).Infof("loadManifestTrie error: %v", err)
+ return
+ }
+
+ glog.V(logger.Detail).Infof("getEntry(%s)", path)
+ entry, _ := trie.getEntry(path)
+ if entry != nil {
+ key = common.Hex2Bytes(entry.Hash)
+ status = entry.Status
+ mimeType = entry.ContentType
+ glog.V(logger.Detail).Infof("content lookup key: '%v' (%v)", key, mimeType)
+ reader = self.dpa.Retrieve(key)
+ } else {
+ err = fmt.Errorf("manifest entry for '%s' not found", path)
+ glog.V(logger.Warn).Infof("%v", err)
+ }
+ return
+}
+
+func (self *Api) Modify(uri, contentHash, contentType string, nameresolver bool) (newRootHash string, err error) {
+ root, _, path, err := self.parseAndResolve(uri, nameresolver)
+ quitC := make(chan bool)
+ trie, err := loadManifest(self.dpa, root, quitC)
+ if err != nil {
+ return
+ }
+
+ if contentHash != "" {
+ entry := &manifestTrieEntry{
+ Path: path,
+ Hash: contentHash,
+ ContentType: contentType,
+ }
+ trie.addEntry(entry, quitC)
+ } else {
+ trie.deleteEntry(path, quitC)
+ }
+
+ err = trie.recalcAndStore()
+ if err != nil {
+ return
+ }
+ return trie.hash.String(), nil
+}
diff --git a/swarm/api/api_test.go b/swarm/api/api_test.go
new file mode 100644
index 000000000..b09811959
--- /dev/null
+++ b/swarm/api/api_test.go
@@ -0,0 +1,117 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "io"
+ "io/ioutil"
+ "os"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+func testApi(t *testing.T, f func(*Api)) {
+ datadir, err := ioutil.TempDir("", "bzz-test")
+ if err != nil {
+ t.Fatalf("unable to create temp dir: %v", err)
+ }
+ os.RemoveAll(datadir)
+ defer os.RemoveAll(datadir)
+ dpa, err := storage.NewLocalDPA(datadir)
+ if err != nil {
+ return
+ }
+ api := NewApi(dpa, nil)
+ dpa.Start()
+ f(api)
+ dpa.Stop()
+}
+
+type testResponse struct {
+ reader storage.LazySectionReader
+ *Response
+}
+
+func checkResponse(t *testing.T, resp *testResponse, exp *Response) {
+
+ if resp.MimeType != exp.MimeType {
+ t.Errorf("incorrect mimeType. expected '%s', got '%s'", exp.MimeType, resp.MimeType)
+ }
+ if resp.Status != exp.Status {
+ t.Errorf("incorrect status. expected '%d', got '%d'", exp.Status, resp.Status)
+ }
+ if resp.Size != exp.Size {
+ t.Errorf("incorrect size. expected '%d', got '%d'", exp.Size, resp.Size)
+ }
+ if resp.reader != nil {
+ content := make([]byte, resp.Size)
+ read, _ := resp.reader.Read(content)
+ if int64(read) != exp.Size {
+ t.Errorf("incorrect content length. expected '%d...', got '%d...'", read, exp.Size)
+ }
+ resp.Content = string(content)
+ }
+ if resp.Content != exp.Content {
+ // if !bytes.Equal(resp.Content, exp.Content)
+ t.Errorf("incorrect content. expected '%s...', got '%s...'", string(exp.Content), string(resp.Content))
+ }
+}
+
+// func expResponse(content []byte, mimeType string, status int) *Response {
+func expResponse(content string, mimeType string, status int) *Response {
+ glog.V(logger.Detail).Infof("expected content (%v): %v ", len(content), content)
+ return &Response{mimeType, status, int64(len(content)), content}
+}
+
+// func testGet(t *testing.T, api *Api, bzzhash string) *testResponse {
+func testGet(t *testing.T, api *Api, bzzhash string) *testResponse {
+ reader, mimeType, status, err := api.Get(bzzhash, true)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ quitC := make(chan bool)
+ size, err := reader.Size(quitC)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ glog.V(logger.Detail).Infof("reader size: %v ", size)
+ s := make([]byte, size)
+ _, err = reader.Read(s)
+ if err != io.EOF {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ reader.Seek(0, 0)
+ return &testResponse{reader, &Response{mimeType, status, size, string(s)}}
+ // return &testResponse{reader, &Response{mimeType, status, reader.Size(), nil}}
+}
+
+func TestApiPut(t *testing.T) {
+ testApi(t, func(api *Api) {
+ content := "hello"
+ exp := expResponse(content, "text/plain", 0)
+ // exp := expResponse([]byte(content), "text/plain", 0)
+ bzzhash, err := api.Put(content, exp.MimeType)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ resp := testGet(t, api, bzzhash)
+ checkResponse(t, resp, exp)
+ })
+}
diff --git a/swarm/api/config.go b/swarm/api/config.go
new file mode 100644
index 000000000..730755c43
--- /dev/null
+++ b/swarm/api/config.go
@@ -0,0 +1,132 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "crypto/ecdsa"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/swarm/network"
+ "github.com/ethereum/go-ethereum/swarm/services/swap"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const (
+ port = "8500"
+)
+
+// by default ens root is north internal
+var (
+ toyNetEnsRoot = common.HexToAddress("0xd344889e0be3e9ef6c26b0f60ef66a32e83c1b69")
+)
+
+// separate bzz directories
+// allow several bzz nodes running in parallel
+type Config struct {
+ // serialised/persisted fields
+ *storage.StoreParams
+ *storage.ChunkerParams
+ *network.HiveParams
+ Swap *swap.SwapParams
+ *network.SyncParams
+ Path string
+ Port string
+ PublicKey string
+ BzzKey string
+ EnsRoot common.Address
+}
+
+// config is agnostic to where private key is coming from
+// so managing accounts is outside swarm and left to wrappers
+func NewConfig(path string, contract common.Address, prvKey *ecdsa.PrivateKey) (self *Config, err error) {
+
+ address := crypto.PubkeyToAddress(prvKey.PublicKey) // default beneficiary address
+ dirpath := filepath.Join(path, common.Bytes2Hex(address.Bytes()))
+ err = os.MkdirAll(dirpath, os.ModePerm)
+ if err != nil {
+ return
+ }
+ confpath := filepath.Join(dirpath, "config.json")
+ var data []byte
+ pubkey := crypto.FromECDSAPub(&prvKey.PublicKey)
+ pubkeyhex := common.ToHex(pubkey)
+ keyhex := crypto.Sha3Hash(pubkey).Hex()
+
+ self = &Config{
+ SyncParams: network.NewSyncParams(dirpath),
+ HiveParams: network.NewHiveParams(dirpath),
+ ChunkerParams: storage.NewChunkerParams(),
+ StoreParams: storage.NewStoreParams(dirpath),
+ Port: port,
+ Path: dirpath,
+ Swap: swap.DefaultSwapParams(contract, prvKey),
+ PublicKey: pubkeyhex,
+ BzzKey: keyhex,
+ EnsRoot: toyNetEnsRoot,
+ }
+ data, err = ioutil.ReadFile(confpath)
+ if err != nil {
+ if !os.IsNotExist(err) {
+ return
+ }
+ // file does not exist
+ // write out config file
+ err = self.Save()
+ if err != nil {
+ err = fmt.Errorf("error writing config: %v", err)
+ }
+ return
+ }
+ // file exists, deserialise
+ err = json.Unmarshal(data, self)
+ if err != nil {
+ return nil, fmt.Errorf("unable to parse config: %v", err)
+ }
+ // check public key
+ if pubkeyhex != self.PublicKey {
+ return nil, fmt.Errorf("public key does not match the one in the config file %v != %v", pubkeyhex, self.PublicKey)
+ }
+ if keyhex != self.BzzKey {
+ return nil, fmt.Errorf("bzz key does not match the one in the config file %v != %v", keyhex, self.BzzKey)
+ }
+ self.Swap.SetKey(prvKey)
+
+ if (self.EnsRoot == common.Address{}) {
+ self.EnsRoot = toyNetEnsRoot
+ }
+
+ return
+}
+
+func (self *Config) Save() error {
+ data, err := json.MarshalIndent(self, "", " ")
+ if err != nil {
+ return err
+ }
+ err = os.MkdirAll(self.Path, os.ModePerm)
+ if err != nil {
+ return err
+ }
+ confpath := filepath.Join(self.Path, "config.json")
+ return ioutil.WriteFile(confpath, data, os.ModePerm)
+}
diff --git a/swarm/api/config_test.go b/swarm/api/config_test.go
new file mode 100644
index 000000000..874701119
--- /dev/null
+++ b/swarm/api/config_test.go
@@ -0,0 +1,124 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/crypto"
+)
+
+var (
+ hexprvkey = "65138b2aa745041b372153550584587da326ab440576b2a1191dd95cee30039c"
+ defaultConfig = `{
+ "ChunkDbPath": "` + filepath.Join("TMPDIR", "0d2f62485607cf38d9d795d93682a517661e513e", "chunks") + `",
+ "DbCapacity": 5000000,
+ "CacheCapacity": 5000,
+ "Radius": 0,
+ "Branches": 128,
+ "Hash": "SHA3",
+ "CallInterval": 3000000000,
+ "KadDbPath": "` + filepath.Join("TMPDIR", "0d2f62485607cf38d9d795d93682a517661e513e", "bzz-peers.json") + `",
+ "MaxProx": 8,
+ "ProxBinSize": 2,
+ "BucketSize": 4,
+ "PurgeInterval": 151200000000000,
+ "InitialRetryInterval": 42000000,
+ "MaxIdleInterval": 42000000000,
+ "ConnRetryExp": 2,
+ "Swap": {
+ "BuyAt": 20000000000,
+ "SellAt": 20000000000,
+ "PayAt": 100,
+ "DropAt": 10000,
+ "AutoCashInterval": 300000000000,
+ "AutoCashThreshold": 50000000000000,
+ "AutoDepositInterval": 300000000000,
+ "AutoDepositThreshold": 50000000000000,
+ "AutoDepositBuffer": 100000000000000,
+ "PublicKey": "0x045f5cfd26692e48d0017d380349bcf50982488bc11b5145f3ddf88b24924299048450542d43527fbe29a5cb32f38d62755393ac002e6bfdd71b8d7ba725ecd7a3",
+ "Contract": "0x0000000000000000000000000000000000000000",
+ "Beneficiary": "0x0d2f62485607cf38d9d795d93682a517661e513e"
+ },
+ "RequestDbPath": "` + filepath.Join("TMPDIR", "0d2f62485607cf38d9d795d93682a517661e513e", "requests") + `",
+ "RequestDbBatchSize": 512,
+ "KeyBufferSize": 1024,
+ "SyncBatchSize": 128,
+ "SyncBufferSize": 128,
+ "SyncCacheSize": 1024,
+ "SyncPriorities": [
+ 2,
+ 1,
+ 1,
+ 0,
+ 0
+ ],
+ "SyncModes": [
+ true,
+ true,
+ true,
+ true,
+ false
+ ],
+ "Path": "` + filepath.Join("TMPDIR", "0d2f62485607cf38d9d795d93682a517661e513e") + `",
+ "Port": "8500",
+ "PublicKey": "0x045f5cfd26692e48d0017d380349bcf50982488bc11b5145f3ddf88b24924299048450542d43527fbe29a5cb32f38d62755393ac002e6bfdd71b8d7ba725ecd7a3",
+ "BzzKey": "0xe861964402c0b78e2d44098329b8545726f215afa737d803714a4338552fcb81",
+ "EnsRoot": "0xd344889e0be3e9ef6c26b0f60ef66a32e83c1b69"
+}`
+)
+
+func TestConfigWriteRead(t *testing.T) {
+ tmp, err := ioutil.TempDir(os.TempDir(), "bzz-test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(tmp)
+
+ prvkey := crypto.ToECDSA(common.Hex2Bytes(hexprvkey))
+ orig, err := NewConfig(tmp, common.Address{}, prvkey)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ account := crypto.PubkeyToAddress(prvkey.PublicKey)
+ dirpath := filepath.Join(tmp, common.Bytes2Hex(account.Bytes()))
+ confpath := filepath.Join(dirpath, "config.json")
+ data, err := ioutil.ReadFile(confpath)
+ if err != nil {
+ t.Fatalf("default config file cannot be read: %v", err)
+ }
+ exp := strings.Replace(defaultConfig, "TMPDIR", tmp, -1)
+ exp = strings.Replace(exp, "\\", "\\\\", -1)
+
+ if string(data) != exp {
+ t.Fatalf("default config mismatch:\nexpected: %v\ngot: %v", exp, string(data))
+ }
+
+ conf, err := NewConfig(tmp, common.Address{}, prvkey)
+ if err != nil {
+ t.Fatalf("expected no error, got %v", err)
+ }
+ if conf.Swap.Beneficiary.Hex() != orig.Swap.Beneficiary.Hex() {
+ t.Fatalf("expected beneficiary from loaded config %v to match original %v", conf.Swap.Beneficiary.Hex(), orig.Swap.Beneficiary.Hex())
+ }
+
+}
diff --git a/swarm/api/filesystem.go b/swarm/api/filesystem.go
new file mode 100644
index 000000000..428f3e3ac
--- /dev/null
+++ b/swarm/api/filesystem.go
@@ -0,0 +1,283 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "path/filepath"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const maxParallelFiles = 5
+
+type FileSystem struct {
+ api *Api
+}
+
+func NewFileSystem(api *Api) *FileSystem {
+ return &FileSystem{api}
+}
+
+// Upload replicates a local directory as a manifest file and uploads it
+// using dpa store
+// TODO: localpath should point to a manifest
+func (self *FileSystem) Upload(lpath, index string) (string, error) {
+ var list []*manifestTrieEntry
+ localpath, err := filepath.Abs(filepath.Clean(lpath))
+ if err != nil {
+ return "", err
+ }
+
+ f, err := os.Open(localpath)
+ if err != nil {
+ return "", err
+ }
+ stat, err := f.Stat()
+ if err != nil {
+ return "", err
+ }
+
+ var start int
+ if stat.IsDir() {
+ start = len(localpath)
+ glog.V(logger.Debug).Infof("uploading '%s'", localpath)
+ err = filepath.Walk(localpath, func(path string, info os.FileInfo, err error) error {
+ if (err == nil) && !info.IsDir() {
+ //fmt.Printf("lp %s path %s\n", localpath, path)
+ if len(path) <= start {
+ return fmt.Errorf("Path is too short")
+ }
+ if path[:start] != localpath {
+ return fmt.Errorf("Path prefix of '%s' does not match localpath '%s'", path, localpath)
+ }
+ entry := &manifestTrieEntry{
+ Path: filepath.ToSlash(path),
+ }
+ list = append(list, entry)
+ }
+ return err
+ })
+ if err != nil {
+ return "", err
+ }
+ } else {
+ dir := filepath.Dir(localpath)
+ start = len(dir)
+ if len(localpath) <= start {
+ return "", fmt.Errorf("Path is too short")
+ }
+ if localpath[:start] != dir {
+ return "", fmt.Errorf("Path prefix of '%s' does not match dir '%s'", localpath, dir)
+ }
+ entry := &manifestTrieEntry{
+ Path: filepath.ToSlash(localpath),
+ }
+ list = append(list, entry)
+ }
+
+ cnt := len(list)
+ errors := make([]error, cnt)
+ done := make(chan bool, maxParallelFiles)
+ dcnt := 0
+ awg := &sync.WaitGroup{}
+
+ for i, entry := range list {
+ if i >= dcnt+maxParallelFiles {
+ <-done
+ dcnt++
+ }
+ awg.Add(1)
+ go func(i int, entry *manifestTrieEntry, done chan bool) {
+ f, err := os.Open(entry.Path)
+ if err == nil {
+ stat, _ := f.Stat()
+ var hash storage.Key
+ wg := &sync.WaitGroup{}
+ hash, err = self.api.dpa.Store(f, stat.Size(), wg, nil)
+ if hash != nil {
+ list[i].Hash = hash.String()
+ }
+ wg.Wait()
+ awg.Done()
+ if err == nil {
+ first512 := make([]byte, 512)
+ fread, _ := f.ReadAt(first512, 0)
+ if fread > 0 {
+ mimeType := http.DetectContentType(first512[:fread])
+ if filepath.Ext(entry.Path) == ".css" {
+ mimeType = "text/css"
+ }
+ list[i].ContentType = mimeType
+ }
+ }
+ f.Close()
+ }
+ errors[i] = err
+ done <- true
+ }(i, entry, done)
+ }
+ for dcnt < cnt {
+ <-done
+ dcnt++
+ }
+
+ trie := &manifestTrie{
+ dpa: self.api.dpa,
+ }
+ quitC := make(chan bool)
+ for i, entry := range list {
+ if errors[i] != nil {
+ return "", errors[i]
+ }
+ entry.Path = RegularSlashes(entry.Path[start:])
+ if entry.Path == index {
+ ientry := &manifestTrieEntry{
+ Path: "",
+ Hash: entry.Hash,
+ ContentType: entry.ContentType,
+ }
+ trie.addEntry(ientry, quitC)
+ }
+ trie.addEntry(entry, quitC)
+ }
+
+ err2 := trie.recalcAndStore()
+ var hs string
+ if err2 == nil {
+ hs = trie.hash.String()
+ }
+ awg.Wait()
+ return hs, err2
+}
+
+// Download replicates the manifest path structure on the local filesystem
+// under localpath
+func (self *FileSystem) Download(bzzpath, localpath string) error {
+ lpath, err := filepath.Abs(filepath.Clean(localpath))
+ if err != nil {
+ return err
+ }
+ err = os.MkdirAll(lpath, os.ModePerm)
+ if err != nil {
+ return err
+ }
+
+ //resolving host and port
+ key, _, path, err := self.api.parseAndResolve(bzzpath, true)
+ if err != nil {
+ return err
+ }
+
+ if len(path) > 0 {
+ path += "/"
+ }
+
+ quitC := make(chan bool)
+ trie, err := loadManifest(self.api.dpa, key, quitC)
+ if err != nil {
+ glog.V(logger.Warn).Infof("fs.Download: loadManifestTrie error: %v", err)
+ return err
+ }
+
+ type downloadListEntry struct {
+ key storage.Key
+ path string
+ }
+
+ var list []*downloadListEntry
+ var mde error
+
+ prevPath := lpath
+ err = trie.listWithPrefix(path, quitC, func(entry *manifestTrieEntry, suffix string) {
+ glog.V(logger.Detail).Infof("fs.Download: %#v", entry)
+
+ key = common.Hex2Bytes(entry.Hash)
+ path := lpath + "/" + suffix
+ dir := filepath.Dir(path)
+ if dir != prevPath {
+ mde = os.MkdirAll(dir, os.ModePerm)
+ prevPath = dir
+ }
+ if (mde == nil) && (path != dir+"/") {
+ list = append(list, &downloadListEntry{key: key, path: path})
+ }
+ })
+ if err != nil {
+ return err
+ }
+
+ wg := sync.WaitGroup{}
+ errC := make(chan error)
+ done := make(chan bool, maxParallelFiles)
+ for i, entry := range list {
+ select {
+ case done <- true:
+ wg.Add(1)
+ case <-quitC:
+ return fmt.Errorf("aborted")
+ }
+ go func(i int, entry *downloadListEntry) {
+ defer wg.Done()
+ f, err := os.Create(entry.path) // TODO: path separators
+ if err == nil {
+
+ reader := self.api.dpa.Retrieve(entry.key)
+ writer := bufio.NewWriter(f)
+ size, err := reader.Size(quitC)
+ if err == nil {
+ _, err = io.CopyN(writer, reader, size) // TODO: handle errors
+ err2 := writer.Flush()
+ if err == nil {
+ err = err2
+ }
+ err2 = f.Close()
+ if err == nil {
+ err = err2
+ }
+ }
+ }
+ if err != nil {
+ select {
+ case errC <- err:
+ case <-quitC:
+ }
+ return
+ }
+ <-done
+ }(i, entry)
+ }
+ go func() {
+ wg.Wait()
+ close(errC)
+ }()
+ select {
+ case err = <-errC:
+ return err
+ case <-quitC:
+ return fmt.Errorf("aborted")
+ }
+
+}
diff --git a/swarm/api/filesystem_test.go b/swarm/api/filesystem_test.go
new file mode 100644
index 000000000..f6657aede
--- /dev/null
+++ b/swarm/api/filesystem_test.go
@@ -0,0 +1,187 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "bytes"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "sync"
+ "testing"
+)
+
+var testDownloadDir, _ = ioutil.TempDir(os.TempDir(), "bzz-test")
+
+func testFileSystem(t *testing.T, f func(*FileSystem)) {
+ testApi(t, func(api *Api) {
+ f(NewFileSystem(api))
+ })
+}
+
+func readPath(t *testing.T, parts ...string) string {
+ file := filepath.Join(parts...)
+ content, err := ioutil.ReadFile(file)
+
+ if err != nil {
+ t.Fatalf("unexpected error reading '%v': %v", file, err)
+ }
+ return string(content)
+}
+
+func TestApiDirUpload0(t *testing.T) {
+ testFileSystem(t, func(fs *FileSystem) {
+ api := fs.api
+ bzzhash, err := fs.Upload(filepath.Join("testdata", "test0"), "")
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ content := readPath(t, "testdata", "test0", "index.html")
+ resp := testGet(t, api, bzzhash+"/index.html")
+ exp := expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+
+ content = readPath(t, "testdata", "test0", "index.css")
+ resp = testGet(t, api, bzzhash+"/index.css")
+ exp = expResponse(content, "text/css", 0)
+ checkResponse(t, resp, exp)
+
+ _, _, _, err = api.Get(bzzhash, true)
+ if err == nil {
+ t.Fatalf("expected error: %v", err)
+ }
+
+ downloadDir := filepath.Join(testDownloadDir, "test0")
+ defer os.RemoveAll(downloadDir)
+ err = fs.Download(bzzhash, downloadDir)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ newbzzhash, err := fs.Upload(downloadDir, "")
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if bzzhash != newbzzhash {
+ t.Fatalf("download %v reuploaded has incorrect hash, expected %v, got %v", downloadDir, bzzhash, newbzzhash)
+ }
+ })
+}
+
+func TestApiDirUploadModify(t *testing.T) {
+ testFileSystem(t, func(fs *FileSystem) {
+ api := fs.api
+ bzzhash, err := fs.Upload(filepath.Join("testdata", "test0"), "")
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+
+ bzzhash, err = api.Modify(bzzhash+"/index.html", "", "", true)
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+ index, err := ioutil.ReadFile(filepath.Join("testdata", "test0", "index.html"))
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+ wg := &sync.WaitGroup{}
+ hash, err := api.Store(bytes.NewReader(index), int64(len(index)), wg)
+ wg.Wait()
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+ bzzhash, err = api.Modify(bzzhash+"/index2.html", hash.Hex(), "text/html; charset=utf-8", true)
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+ bzzhash, err = api.Modify(bzzhash+"/img/logo.png", hash.Hex(), "text/html; charset=utf-8", true)
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+
+ content := readPath(t, "testdata", "test0", "index.html")
+ resp := testGet(t, api, bzzhash+"/index2.html")
+ exp := expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+
+ resp = testGet(t, api, bzzhash+"/img/logo.png")
+ exp = expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+
+ content = readPath(t, "testdata", "test0", "index.css")
+ resp = testGet(t, api, bzzhash+"/index.css")
+ exp = expResponse(content, "text/css", 0)
+
+ _, _, _, err = api.Get(bzzhash, true)
+ if err == nil {
+ t.Errorf("expected error: %v", err)
+ }
+ })
+}
+
+func TestApiDirUploadWithRootFile(t *testing.T) {
+ testFileSystem(t, func(fs *FileSystem) {
+ api := fs.api
+ bzzhash, err := fs.Upload(filepath.Join("testdata", "test0"), "index.html")
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+
+ content := readPath(t, "testdata", "test0", "index.html")
+ resp := testGet(t, api, bzzhash)
+ exp := expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+ })
+}
+
+func TestApiFileUpload(t *testing.T) {
+ testFileSystem(t, func(fs *FileSystem) {
+ api := fs.api
+ bzzhash, err := fs.Upload(filepath.Join("testdata", "test0", "index.html"), "")
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+
+ content := readPath(t, "testdata", "test0", "index.html")
+ resp := testGet(t, api, bzzhash+"/index.html")
+ exp := expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+ })
+}
+
+func TestApiFileUploadWithRootFile(t *testing.T) {
+ testFileSystem(t, func(fs *FileSystem) {
+ api := fs.api
+ bzzhash, err := fs.Upload(filepath.Join("testdata", "test0", "index.html"), "index.html")
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ return
+ }
+
+ content := readPath(t, "testdata", "test0", "index.html")
+ resp := testGet(t, api, bzzhash)
+ exp := expResponse(content, "text/html; charset=utf-8", 0)
+ checkResponse(t, resp, exp)
+ })
+}
diff --git a/swarm/api/http/roundtripper.go b/swarm/api/http/roundtripper.go
new file mode 100644
index 000000000..a3a644b73
--- /dev/null
+++ b/swarm/api/http/roundtripper.go
@@ -0,0 +1,69 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package http
+
+import (
+ "fmt"
+ "net/http"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+/*
+http roundtripper to register for bzz url scheme
+see https://github.com/ethereum/go-ethereum/issues/2040
+Usage:
+
+import (
+ "github.com/ethereum/go-ethereum/common/httpclient"
+ "github.com/ethereum/go-ethereum/swarm/api/http"
+)
+client := httpclient.New()
+// for (private) swarm proxy running locally
+client.RegisterScheme("bzz", &http.RoundTripper{Port: port})
+client.RegisterScheme("bzzi", &http.RoundTripper{Port: port})
+client.RegisterScheme("bzzr", &http.RoundTripper{Port: port})
+
+The port you give the Roundtripper is the port the swarm proxy is listening on.
+If Host is left empty, localhost is assumed.
+
+Using a public gateway, the above few lines gives you the leanest
+bzz-scheme aware read-only http client. You really only ever need this
+if you need go-native swarm access to bzz addresses, e.g.,
+github.com/ethereum/go-ethereum/common/natspec
+
+*/
+
+type RoundTripper struct {
+ Host string
+ Port string
+}
+
+func (self *RoundTripper) RoundTrip(req *http.Request) (resp *http.Response, err error) {
+ host := self.Host
+ if len(host) == 0 {
+ host = "localhost"
+ }
+ url := fmt.Sprintf("http://%s:%s/%s:/%s/%s", host, self.Port, req.Proto, req.URL.Host, req.URL.Path)
+ glog.V(logger.Info).Infof("roundtripper: proxying request '%s' to '%s'", req.RequestURI, url)
+ reqProxy, err := http.NewRequest(req.Method, url, req.Body)
+ if err != nil {
+ return nil, err
+ }
+ return http.DefaultClient.Do(reqProxy)
+}
diff --git a/swarm/api/http/roundtripper_test.go b/swarm/api/http/roundtripper_test.go
new file mode 100644
index 000000000..9afad20ae
--- /dev/null
+++ b/swarm/api/http/roundtripper_test.go
@@ -0,0 +1,68 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package http
+
+import (
+ "io/ioutil"
+ "net/http"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common/httpclient"
+)
+
+const port = "3222"
+
+func TestRoundTripper(t *testing.T) {
+ serveMux := http.NewServeMux()
+ serveMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ if r.Method == "GET" {
+ w.Header().Set("Content-Type", "text/plain")
+ http.ServeContent(w, r, "", time.Unix(0, 0), strings.NewReader(r.RequestURI))
+ } else {
+ http.Error(w, "Method "+r.Method+" is not supported.", http.StatusMethodNotAllowed)
+ }
+ })
+ go http.ListenAndServe(":"+port, serveMux)
+
+ rt := &RoundTripper{Port: port}
+ client := httpclient.New("/")
+ client.RegisterProtocol("bzz", rt)
+
+ resp, err := client.Client().Get("bzz://test.com/path")
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ return
+ }
+
+ defer func() {
+ if resp != nil {
+ resp.Body.Close()
+ }
+ }()
+
+ content, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ t.Errorf("expected no error, got %v", err)
+ return
+ }
+ if string(content) != "/HTTP/1.1:/test.com/path" {
+ t.Errorf("incorrect response from http server: expected '%v', got '%v'", "/HTTP/1.1:/test.com/path", string(content))
+ }
+
+}
diff --git a/swarm/api/http/server.go b/swarm/api/http/server.go
new file mode 100644
index 000000000..a35672687
--- /dev/null
+++ b/swarm/api/http/server.go
@@ -0,0 +1,286 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+/*
+A simple http server interface to Swarm
+*/
+package http
+
+import (
+ "bytes"
+ "io"
+ "net/http"
+ "regexp"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/api"
+)
+
+const (
+ rawType = "application/octet-stream"
+)
+
+var (
+ // accepted protocols: bzz (traditional), bzzi (immutable) and bzzr (raw)
+ bzzPrefix = regexp.MustCompile("^/+bzz[ir]?:/+")
+ trailingSlashes = regexp.MustCompile("/+$")
+ rootDocumentUri = regexp.MustCompile("^/+bzz[i]?:/+[^/]+$")
+ // forever = func() time.Time { return time.Unix(0, 0) }
+ forever = time.Now
+)
+
+type sequentialReader struct {
+ reader io.Reader
+ pos int64
+ ahead map[int64](chan bool)
+ lock sync.Mutex
+}
+
+// browser API for registering bzz url scheme handlers:
+// https://developer.mozilla.org/en/docs/Web-based_protocol_handlers
+// electron (chromium) api for registering bzz url scheme handlers:
+// https://github.com/atom/electron/blob/master/docs/api/protocol.md
+
+// starts up http server
+func StartHttpServer(api *api.Api, port string) {
+ serveMux := http.NewServeMux()
+ serveMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ handler(w, r, api)
+ })
+ go http.ListenAndServe(":"+port, serveMux)
+ glog.V(logger.Info).Infof("Swarm HTTP proxy started on localhost:%s", port)
+}
+
+func handler(w http.ResponseWriter, r *http.Request, a *api.Api) {
+ requestURL := r.URL
+ // This is wrong
+ // if requestURL.Host == "" {
+ // var err error
+ // requestURL, err = url.Parse(r.Referer() + requestURL.String())
+ // if err != nil {
+ // http.Error(w, err.Error(), http.StatusBadRequest)
+ // return
+ // }
+ // }
+ glog.V(logger.Debug).Infof("HTTP %s request URL: '%s', Host: '%s', Path: '%s', Referer: '%s', Accept: '%s'", r.Method, r.RequestURI, requestURL.Host, requestURL.Path, r.Referer(), r.Header.Get("Accept"))
+ uri := requestURL.Path
+ var raw, nameresolver bool
+ var proto string
+
+ // HTTP-based URL protocol handler
+ glog.V(logger.Debug).Infof("BZZ request URI: '%s'", uri)
+
+ path := bzzPrefix.ReplaceAllStringFunc(uri, func(p string) string {
+ proto = p
+ return ""
+ })
+
+ // protocol identification (ugly)
+ if proto == "" {
+ if glog.V(logger.Error) {
+ glog.Errorf(
+ "[BZZ] Swarm: Protocol error in request `%s`.",
+ uri,
+ )
+ http.Error(w, "BZZ protocol error", http.StatusBadRequest)
+ return
+ }
+ }
+ if len(proto) > 4 {
+ raw = proto[1:5] == "bzzr"
+ nameresolver = proto[1:5] != "bzzi"
+ }
+
+ glog.V(logger.Debug).Infof(
+ "[BZZ] Swarm: %s request over protocol %s '%s' received.",
+ r.Method, proto, path,
+ )
+
+ switch {
+ case r.Method == "POST" || r.Method == "PUT":
+ key, err := a.Store(r.Body, r.ContentLength, nil)
+ if err == nil {
+ glog.V(logger.Debug).Infof("Content for %v stored", key.Log())
+ } else {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+ if r.Method == "POST" {
+ if raw {
+ w.Header().Set("Content-Type", "text/plain")
+ http.ServeContent(w, r, "", time.Now(), bytes.NewReader([]byte(common.Bytes2Hex(key))))
+ } else {
+ http.Error(w, "No POST to "+uri+" allowed.", http.StatusBadRequest)
+ return
+ }
+ } else {
+ // PUT
+ if raw {
+ http.Error(w, "No PUT to /raw allowed.", http.StatusBadRequest)
+ return
+ } else {
+ path = api.RegularSlashes(path)
+ mime := r.Header.Get("Content-Type")
+ // TODO proper root hash separation
+ glog.V(logger.Debug).Infof("Modify '%s' to store %v as '%s'.", path, key.Log(), mime)
+ newKey, err := a.Modify(path, common.Bytes2Hex(key), mime, nameresolver)
+ if err == nil {
+ glog.V(logger.Debug).Infof("Swarm replaced manifest by '%s'", newKey)
+ w.Header().Set("Content-Type", "text/plain")
+ http.ServeContent(w, r, "", time.Now(), bytes.NewReader([]byte(newKey)))
+ } else {
+ http.Error(w, "PUT to "+path+"failed.", http.StatusBadRequest)
+ return
+ }
+ }
+ }
+ case r.Method == "DELETE":
+ if raw {
+ http.Error(w, "No DELETE to /raw allowed.", http.StatusBadRequest)
+ return
+ } else {
+ path = api.RegularSlashes(path)
+ glog.V(logger.Debug).Infof("Delete '%s'.", path)
+ newKey, err := a.Modify(path, "", "", nameresolver)
+ if err == nil {
+ glog.V(logger.Debug).Infof("Swarm replaced manifest by '%s'", newKey)
+ w.Header().Set("Content-Type", "text/plain")
+ http.ServeContent(w, r, "", time.Now(), bytes.NewReader([]byte(newKey)))
+ } else {
+ http.Error(w, "DELETE to "+path+"failed.", http.StatusBadRequest)
+ return
+ }
+ }
+ case r.Method == "GET" || r.Method == "HEAD":
+ path = trailingSlashes.ReplaceAllString(path, "")
+ if raw {
+ // resolving host
+ key, err := a.Resolve(path, nameresolver)
+ if err != nil {
+ glog.V(logger.Error).Infof("%v", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ // retrieving content
+ reader := a.Retrieve(key)
+ quitC := make(chan bool)
+ size, err := reader.Size(quitC)
+ glog.V(logger.Debug).Infof("Reading %d bytes.", size)
+
+ // setting mime type
+ qv := requestURL.Query()
+ mimeType := qv.Get("content_type")
+ if mimeType == "" {
+ mimeType = rawType
+ }
+
+ w.Header().Set("Content-Type", mimeType)
+ http.ServeContent(w, r, uri, forever(), reader)
+ glog.V(logger.Debug).Infof("Serve raw content '%s' (%d bytes) as '%s'", uri, size, mimeType)
+
+ // retrieve path via manifest
+ } else {
+ glog.V(logger.Debug).Infof("Structured GET request '%s' received.", uri)
+ // add trailing slash, if missing
+ if rootDocumentUri.MatchString(uri) {
+ http.Redirect(w, r, path+"/", http.StatusFound)
+ return
+ }
+ reader, mimeType, status, err := a.Get(path, nameresolver)
+ if err != nil {
+ if _, ok := err.(api.ErrResolve); ok {
+ glog.V(logger.Debug).Infof("%v", err)
+ status = http.StatusBadRequest
+ } else {
+ glog.V(logger.Debug).Infof("error retrieving '%s': %v", uri, err)
+ status = http.StatusNotFound
+ }
+ http.Error(w, err.Error(), status)
+ return
+ }
+ // set mime type and status headers
+ w.Header().Set("Content-Type", mimeType)
+ if status > 0 {
+ w.WriteHeader(status)
+ } else {
+ status = 200
+ }
+ quitC := make(chan bool)
+ size, err := reader.Size(quitC)
+ glog.V(logger.Debug).Infof("Served '%s' (%d bytes) as '%s' (status code: %v)", uri, size, mimeType, status)
+
+ http.ServeContent(w, r, path, forever(), reader)
+
+ }
+ default:
+ http.Error(w, "Method "+r.Method+" is not supported.", http.StatusMethodNotAllowed)
+ }
+}
+
+func (self *sequentialReader) ReadAt(target []byte, off int64) (n int, err error) {
+ self.lock.Lock()
+ // assert self.pos <= off
+ if self.pos > off {
+ glog.V(logger.Error).Infof("non-sequential read attempted from sequentialReader; %d > %d",
+ self.pos, off)
+ panic("Non-sequential read attempt")
+ }
+ if self.pos != off {
+ glog.V(logger.Debug).Infof("deferred read in POST at position %d, offset %d.",
+ self.pos, off)
+ wait := make(chan bool)
+ self.ahead[off] = wait
+ self.lock.Unlock()
+ if <-wait {
+ // failed read behind
+ n = 0
+ err = io.ErrUnexpectedEOF
+ return
+ }
+ self.lock.Lock()
+ }
+ localPos := 0
+ for localPos < len(target) {
+ n, err = self.reader.Read(target[localPos:])
+ localPos += n
+ glog.V(logger.Debug).Infof("Read %d bytes into buffer size %d from POST, error %v.",
+ n, len(target), err)
+ if err != nil {
+ glog.V(logger.Debug).Infof("POST stream's reading terminated with %v.", err)
+ for i := range self.ahead {
+ self.ahead[i] <- true
+ delete(self.ahead, i)
+ }
+ self.lock.Unlock()
+ return localPos, err
+ }
+ self.pos += int64(n)
+ }
+ wait := self.ahead[self.pos]
+ if wait != nil {
+ glog.V(logger.Debug).Infof("deferred read in POST at position %d triggered.",
+ self.pos)
+ delete(self.ahead, self.pos)
+ close(wait)
+ }
+ self.lock.Unlock()
+ return localPos, err
+}
diff --git a/swarm/api/manifest.go b/swarm/api/manifest.go
new file mode 100644
index 000000000..a289c01f9
--- /dev/null
+++ b/swarm/api/manifest.go
@@ -0,0 +1,336 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const (
+ manifestType = "application/bzz-manifest+json"
+)
+
+type manifestTrie struct {
+ dpa *storage.DPA
+ entries [257]*manifestTrieEntry // indexed by first character of path, entries[256] is the empty path entry
+ hash storage.Key // if hash != nil, it is stored
+}
+
+type manifestJSON struct {
+ Entries []*manifestTrieEntry `json:"entries"`
+}
+
+type manifestTrieEntry struct {
+ Path string `json:"path"`
+ Hash string `json:"hash"` // for manifest content type, empty until subtrie is evaluated
+ ContentType string `json:"contentType"`
+ Status int `json:"status"`
+ subtrie *manifestTrie
+}
+
+func loadManifest(dpa *storage.DPA, hash storage.Key, quitC chan bool) (trie *manifestTrie, err error) { // non-recursive, subtrees are downloaded on-demand
+
+ glog.V(logger.Detail).Infof("manifest lookup key: '%v'.", hash.Log())
+ // retrieve manifest via DPA
+ manifestReader := dpa.Retrieve(hash)
+ return readManifest(manifestReader, hash, dpa, quitC)
+}
+
+func readManifest(manifestReader storage.LazySectionReader, hash storage.Key, dpa *storage.DPA, quitC chan bool) (trie *manifestTrie, err error) { // non-recursive, subtrees are downloaded on-demand
+
+ // TODO check size for oversized manifests
+ size, err := manifestReader.Size(quitC)
+ manifestData := make([]byte, size)
+ read, err := manifestReader.Read(manifestData)
+ if int64(read) < size {
+ glog.V(logger.Detail).Infof("Manifest %v not found.", hash.Log())
+ if err == nil {
+ err = fmt.Errorf("Manifest retrieval cut short: read %v, expect %v", read, size)
+ }
+ return
+ }
+
+ glog.V(logger.Detail).Infof("Manifest %v retrieved", hash.Log())
+ man := manifestJSON{}
+ err = json.Unmarshal(manifestData, &man)
+ if err != nil {
+ err = fmt.Errorf("Manifest %v is malformed: %v", hash.Log(), err)
+ glog.V(logger.Detail).Infof("%v", err)
+ return
+ }
+
+ glog.V(logger.Detail).Infof("Manifest %v has %d entries.", hash.Log(), len(man.Entries))
+
+ trie = &manifestTrie{
+ dpa: dpa,
+ }
+ for _, entry := range man.Entries {
+ trie.addEntry(entry, quitC)
+ }
+ return
+}
+
+func (self *manifestTrie) addEntry(entry *manifestTrieEntry, quitC chan bool) {
+ self.hash = nil // trie modified, hash needs to be re-calculated on demand
+
+ if len(entry.Path) == 0 {
+ self.entries[256] = entry
+ return
+ }
+
+ b := byte(entry.Path[0])
+ if (self.entries[b] == nil) || (self.entries[b].Path == entry.Path) {
+ self.entries[b] = entry
+ return
+ }
+
+ oldentry := self.entries[b]
+ cpl := 0
+ for (len(entry.Path) > cpl) && (len(oldentry.Path) > cpl) && (entry.Path[cpl] == oldentry.Path[cpl]) {
+ cpl++
+ }
+
+ if (oldentry.ContentType == manifestType) && (cpl == len(oldentry.Path)) {
+ if self.loadSubTrie(oldentry, quitC) != nil {
+ return
+ }
+ entry.Path = entry.Path[cpl:]
+ oldentry.subtrie.addEntry(entry, quitC)
+ oldentry.Hash = ""
+ return
+ }
+
+ commonPrefix := entry.Path[:cpl]
+
+ subtrie := &manifestTrie{
+ dpa: self.dpa,
+ }
+ entry.Path = entry.Path[cpl:]
+ oldentry.Path = oldentry.Path[cpl:]
+ subtrie.addEntry(entry, quitC)
+ subtrie.addEntry(oldentry, quitC)
+
+ self.entries[b] = &manifestTrieEntry{
+ Path: commonPrefix,
+ Hash: "",
+ ContentType: manifestType,
+ subtrie: subtrie,
+ }
+}
+
+func (self *manifestTrie) getCountLast() (cnt int, entry *manifestTrieEntry) {
+ for _, e := range self.entries {
+ if e != nil {
+ cnt++
+ entry = e
+ }
+ }
+ return
+}
+
+func (self *manifestTrie) deleteEntry(path string, quitC chan bool) {
+ self.hash = nil // trie modified, hash needs to be re-calculated on demand
+
+ if len(path) == 0 {
+ self.entries[256] = nil
+ return
+ }
+
+ b := byte(path[0])
+ entry := self.entries[b]
+ if entry == nil {
+ return
+ }
+ if entry.Path == path {
+ self.entries[b] = nil
+ return
+ }
+
+ epl := len(entry.Path)
+ if (entry.ContentType == manifestType) && (len(path) >= epl) && (path[:epl] == entry.Path) {
+ if self.loadSubTrie(entry, quitC) != nil {
+ return
+ }
+ entry.subtrie.deleteEntry(path[epl:], quitC)
+ entry.Hash = ""
+ // remove subtree if it has less than 2 elements
+ cnt, lastentry := entry.subtrie.getCountLast()
+ if cnt < 2 {
+ if lastentry != nil {
+ lastentry.Path = entry.Path + lastentry.Path
+ }
+ self.entries[b] = lastentry
+ }
+ }
+}
+
+func (self *manifestTrie) recalcAndStore() error {
+ if self.hash != nil {
+ return nil
+ }
+
+ var buffer bytes.Buffer
+ buffer.WriteString(`{"entries":[`)
+
+ list := &manifestJSON{}
+ for _, entry := range self.entries {
+ if entry != nil {
+ if entry.Hash == "" { // TODO: paralellize
+ err := entry.subtrie.recalcAndStore()
+ if err != nil {
+ return err
+ }
+ entry.Hash = entry.subtrie.hash.String()
+ }
+ list.Entries = append(list.Entries, entry)
+ }
+ }
+
+ manifest, err := json.Marshal(list)
+ if err != nil {
+ return err
+ }
+
+ sr := bytes.NewReader(manifest)
+ wg := &sync.WaitGroup{}
+ key, err2 := self.dpa.Store(sr, int64(len(manifest)), wg, nil)
+ wg.Wait()
+ self.hash = key
+ return err2
+}
+
+func (self *manifestTrie) loadSubTrie(entry *manifestTrieEntry, quitC chan bool) (err error) {
+ if entry.subtrie == nil {
+ hash := common.Hex2Bytes(entry.Hash)
+ entry.subtrie, err = loadManifest(self.dpa, hash, quitC)
+ entry.Hash = "" // might not match, should be recalculated
+ }
+ return
+}
+
+func (self *manifestTrie) listWithPrefixInt(prefix, rp string, quitC chan bool, cb func(entry *manifestTrieEntry, suffix string)) error {
+ plen := len(prefix)
+ var start, stop int
+ if plen == 0 {
+ start = 0
+ stop = 256
+ } else {
+ start = int(prefix[0])
+ stop = start
+ }
+
+ for i := start; i <= stop; i++ {
+ select {
+ case <-quitC:
+ return fmt.Errorf("aborted")
+ default:
+ }
+ entry := self.entries[i]
+ if entry != nil {
+ epl := len(entry.Path)
+ if entry.ContentType == manifestType {
+ l := plen
+ if epl < l {
+ l = epl
+ }
+ if prefix[:l] == entry.Path[:l] {
+ err := self.loadSubTrie(entry, quitC)
+ if err != nil {
+ return err
+ }
+ err = entry.subtrie.listWithPrefixInt(prefix[l:], rp+entry.Path[l:], quitC, cb)
+ if err != nil {
+ return err
+ }
+ }
+ } else {
+ if (epl >= plen) && (prefix == entry.Path[:plen]) {
+ cb(entry, rp+entry.Path[plen:])
+ }
+ }
+ }
+ }
+ return nil
+}
+
+func (self *manifestTrie) listWithPrefix(prefix string, quitC chan bool, cb func(entry *manifestTrieEntry, suffix string)) (err error) {
+ return self.listWithPrefixInt(prefix, "", quitC, cb)
+}
+
+func (self *manifestTrie) findPrefixOf(path string, quitC chan bool) (entry *manifestTrieEntry, pos int) {
+
+ glog.V(logger.Detail).Infof("findPrefixOf(%s)", path)
+
+ if len(path) == 0 {
+ return self.entries[256], 0
+ }
+
+ b := byte(path[0])
+ entry = self.entries[b]
+ if entry == nil {
+ return self.entries[256], 0
+ }
+ epl := len(entry.Path)
+ glog.V(logger.Detail).Infof("path = %v entry.Path = %v epl = %v", path, entry.Path, epl)
+ if (len(path) >= epl) && (path[:epl] == entry.Path) {
+ glog.V(logger.Detail).Infof("entry.ContentType = %v", entry.ContentType)
+ if entry.ContentType == manifestType {
+ if self.loadSubTrie(entry, quitC) != nil {
+ return nil, 0
+ }
+ entry, pos = entry.subtrie.findPrefixOf(path[epl:], quitC)
+ if entry != nil {
+ pos += epl
+ }
+ } else {
+ pos = epl
+ }
+ } else {
+ entry = nil
+ }
+ return
+}
+
+// file system manifest always contains regularized paths
+// no leading or trailing slashes, only single slashes inside
+func RegularSlashes(path string) (res string) {
+ for i := 0; i < len(path); i++ {
+ if (path[i] != '/') || ((i > 0) && (path[i-1] != '/')) {
+ res = res + path[i:i+1]
+ }
+ }
+ if (len(res) > 0) && (res[len(res)-1] == '/') {
+ res = res[:len(res)-1]
+ }
+ return
+}
+
+func (self *manifestTrie) getEntry(spath string) (entry *manifestTrieEntry, fullpath string) {
+ path := RegularSlashes(spath)
+ var pos int
+ quitC := make(chan bool)
+ entry, pos = self.findPrefixOf(path, quitC)
+ return entry, path[:pos]
+}
diff --git a/swarm/api/manifest_test.go b/swarm/api/manifest_test.go
new file mode 100644
index 000000000..20b8117c6
--- /dev/null
+++ b/swarm/api/manifest_test.go
@@ -0,0 +1,80 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ // "encoding/json"
+ "fmt"
+ "io"
+ "strings"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+func manifest(paths ...string) (manifestReader storage.LazySectionReader) {
+ var entries []string
+ for _, path := range paths {
+ entry := fmt.Sprintf(`{"path":"%s"}`, path)
+ entries = append(entries, entry)
+ }
+ manifest := fmt.Sprintf(`{"entries":[%s]}`, strings.Join(entries, ","))
+ return &storage.LazyTestSectionReader{
+ SectionReader: io.NewSectionReader(strings.NewReader(manifest), 0, int64(len(manifest))),
+ }
+}
+
+func testGetEntry(t *testing.T, path, match string, paths ...string) *manifestTrie {
+ quitC := make(chan bool)
+ trie, err := readManifest(manifest(paths...), nil, nil, quitC)
+ if err != nil {
+ t.Errorf("unexpected error making manifest: %v", err)
+ }
+ checkEntry(t, path, match, trie)
+ return trie
+}
+
+func checkEntry(t *testing.T, path, match string, trie *manifestTrie) {
+ entry, fullpath := trie.getEntry(path)
+ if match == "-" && entry != nil {
+ t.Errorf("expected no match for '%s', got '%s'", path, fullpath)
+ } else if entry == nil {
+ if match != "-" {
+ t.Errorf("expected entry '%s' to match '%s', got no match", match, path)
+ }
+ } else if fullpath != match {
+ t.Errorf("incorrect entry retrieved for '%s'. expected path '%v', got '%s'", path, match, fullpath)
+ }
+}
+
+func TestGetEntry(t *testing.T) {
+ // file system manifest always contains regularized paths
+ testGetEntry(t, "a", "a", "a")
+ testGetEntry(t, "b", "-", "a")
+ testGetEntry(t, "/a//", "a", "a")
+ // fallback
+ testGetEntry(t, "/a", "", "")
+ testGetEntry(t, "/a/b", "a/b", "a/b")
+ // longest/deepest math
+ testGetEntry(t, "a/b", "-", "a", "a/ba", "a/b/c")
+ testGetEntry(t, "a/b", "a/b", "a", "a/b", "a/bb", "a/b/c")
+ testGetEntry(t, "//a//b//", "a/b", "a", "a/b", "a/bb", "a/b/c")
+}
+
+func TestDeleteEntry(t *testing.T) {
+
+}
diff --git a/swarm/api/storage.go b/swarm/api/storage.go
new file mode 100644
index 000000000..31b484675
--- /dev/null
+++ b/swarm/api/storage.go
@@ -0,0 +1,70 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+type Response struct {
+ MimeType string
+ Status int
+ Size int64
+ // Content []byte
+ Content string
+}
+
+// implements a service
+type Storage struct {
+ api *Api
+}
+
+func NewStorage(api *Api) *Storage {
+ return &Storage{api}
+}
+
+// Put uploads the content to the swarm with a simple manifest speficying
+// its content type
+func (self *Storage) Put(content, contentType string) (string, error) {
+ return self.api.Put(content, contentType)
+}
+
+// Get retrieves the content from bzzpath and reads the response in full
+// It returns the Response object, which serialises containing the
+// response body as the value of the Content field
+// NOTE: if error is non-nil, sResponse may still have partial content
+// the actual size of which is given in len(resp.Content), while the expected
+// size is resp.Size
+func (self *Storage) Get(bzzpath string) (*Response, error) {
+ reader, mimeType, status, err := self.api.Get(bzzpath, true)
+ if err != nil {
+ return nil, err
+ }
+ quitC := make(chan bool)
+ expsize, err := reader.Size(quitC)
+ if err != nil {
+ return nil, err
+ }
+ body := make([]byte, expsize)
+ size, err := reader.Read(body)
+ if int64(size) == expsize {
+ err = nil
+ }
+ return &Response{mimeType, status, expsize, string(body[:size])}, err
+}
+
+// Modify(rootHash, path, contentHash, contentType) takes th e manifest trie rooted in rootHash,
+// and merge on to it. creating an entry w conentType (mime)
+func (self *Storage) Modify(rootHash, path, contentHash, contentType string) (newRootHash string, err error) {
+ return self.api.Modify(rootHash+"/"+path, contentHash, contentType, true)
+}
diff --git a/swarm/api/storage_test.go b/swarm/api/storage_test.go
new file mode 100644
index 000000000..72caf52df
--- /dev/null
+++ b/swarm/api/storage_test.go
@@ -0,0 +1,49 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "testing"
+)
+
+func testStorage(t *testing.T, f func(*Storage)) {
+ testApi(t, func(api *Api) {
+ f(NewStorage(api))
+ })
+}
+
+func TestStoragePutGet(t *testing.T) {
+ testStorage(t, func(api *Storage) {
+ content := "hello"
+ exp := expResponse(content, "text/plain", 0)
+ // exp := expResponse([]byte(content), "text/plain", 0)
+ bzzhash, err := api.Put(content, exp.MimeType)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ // to check put against the Api#Get
+ resp0 := testGet(t, api.api, bzzhash)
+ checkResponse(t, resp0, exp)
+
+ // check storage#Get
+ resp, err := api.Get(bzzhash)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ checkResponse(t, &testResponse{nil, resp}, exp)
+ })
+}
diff --git a/swarm/api/testapi.go b/swarm/api/testapi.go
new file mode 100644
index 000000000..6631196c1
--- /dev/null
+++ b/swarm/api/testapi.go
@@ -0,0 +1,46 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package api
+
+import (
+ "github.com/ethereum/go-ethereum/swarm/network"
+)
+
+type Control struct {
+ api *Api
+ hive *network.Hive
+}
+
+func NewControl(api *Api, hive *network.Hive) *Control {
+ return &Control{api, hive}
+}
+
+func (self *Control) BlockNetworkRead(on bool) {
+ self.hive.BlockNetworkRead(on)
+}
+
+func (self *Control) SyncEnabled(on bool) {
+ self.hive.SyncEnabled(on)
+}
+
+func (self *Control) SwapEnabled(on bool) {
+ self.hive.SwapEnabled(on)
+}
+
+func (self *Control) Hive() string {
+ return self.hive.String()
+}
diff --git a/swarm/api/testdata/test0/img/logo.png b/swarm/api/testdata/test0/img/logo.png
new file mode 100644
index 000000000..e0fb15ab3
--- /dev/null
+++ b/swarm/api/testdata/test0/img/logo.png
Binary files differ
diff --git a/swarm/api/testdata/test0/index.css b/swarm/api/testdata/test0/index.css
new file mode 100644
index 000000000..67cb8d0ff
--- /dev/null
+++ b/swarm/api/testdata/test0/index.css
@@ -0,0 +1,9 @@
+h1 {
+ color: black;
+ font-size: 12px;
+ background-color: orange;
+ border: 4px solid black;
+}
+body {
+ background-color: orange
+} \ No newline at end of file
diff --git a/swarm/api/testdata/test0/index.html b/swarm/api/testdata/test0/index.html
new file mode 100644
index 000000000..321e910d7
--- /dev/null
+++ b/swarm/api/testdata/test0/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="index.css">
+ </head>
+ <body>
+ <h1>Swarm Test</h1>
+ <img src="img/logo.gif" align="center", alt="Ethereum logo">
+ </body>
+</html> \ No newline at end of file
diff --git a/swarm/network/depo.go b/swarm/network/depo.go
new file mode 100644
index 000000000..79987cc6b
--- /dev/null
+++ b/swarm/network/depo.go
@@ -0,0 +1,211 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "bytes"
+ "encoding/binary"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+// Handler for storage/retrieval related protocol requests
+// implements the StorageHandler interface used by the bzz protocol
+type Depo struct {
+ hashfunc storage.Hasher
+ localStore storage.ChunkStore
+ netStore storage.ChunkStore
+}
+
+func NewDepo(hash storage.Hasher, localStore, remoteStore storage.ChunkStore) *Depo {
+ return &Depo{
+ hashfunc: hash,
+ localStore: localStore,
+ netStore: remoteStore, // entrypoint internal
+ }
+}
+
+// Handles UnsyncedKeysMsg after msg decoding - unsynced hashes upto sync state
+// * the remote sync state is just stored and handled in protocol
+// * filters through the new syncRequests and send the ones missing
+// * back immediately as a deliveryRequest message
+// * empty message just pings back for more (is this needed?)
+// * strict signed sync states may be needed.
+func (self *Depo) HandleUnsyncedKeysMsg(req *unsyncedKeysMsgData, p *peer) error {
+ unsynced := req.Unsynced
+ var missing []*syncRequest
+ var chunk *storage.Chunk
+ var err error
+ for _, req := range unsynced {
+ // skip keys that are found,
+ chunk, err = self.localStore.Get(storage.Key(req.Key[:]))
+ if err != nil || chunk.SData == nil {
+ missing = append(missing, req)
+ }
+ }
+ glog.V(logger.Debug).Infof("Depo.HandleUnsyncedKeysMsg: received %v unsynced keys: %v missing. new state: %v", len(unsynced), len(missing), req.State)
+ glog.V(logger.Detail).Infof("Depo.HandleUnsyncedKeysMsg: received %v", unsynced)
+ // send delivery request with missing keys
+ err = p.deliveryRequest(missing)
+ if err != nil {
+ return err
+ }
+ // set peers state to persist
+ p.syncState = req.State
+ return nil
+}
+
+// Handles deliveryRequestMsg
+// * serves actual chunks asked by the remote peer
+// by pushing to the delivery queue (sync db) of the correct priority
+// (remote peer is free to reprioritize)
+// * the message implies remote peer wants more, so trigger for
+// * new outgoing unsynced keys message is fired
+func (self *Depo) HandleDeliveryRequestMsg(req *deliveryRequestMsgData, p *peer) error {
+ deliver := req.Deliver
+ // queue the actual delivery of a chunk ()
+ glog.V(logger.Detail).Infof("Depo.HandleDeliveryRequestMsg: received %v delivery requests: %v", len(deliver), deliver)
+ for _, sreq := range deliver {
+ // TODO: look up in cache here or in deliveries
+ // priorities are taken from the message so the remote party can
+ // reprioritise to at their leisure
+ // r = self.pullCached(sreq.Key) // pulls and deletes from cache
+ Push(p, sreq.Key, sreq.Priority)
+ }
+
+ // sends it out as unsyncedKeysMsg
+ p.syncer.sendUnsyncedKeys()
+ return nil
+}
+
+// the entrypoint for store requests coming from the bzz wire protocol
+// if key found locally, return. otherwise
+// remote is untrusted, so hash is verified and chunk passed on to NetStore
+func (self *Depo) HandleStoreRequestMsg(req *storeRequestMsgData, p *peer) {
+ req.from = p
+ chunk, err := self.localStore.Get(req.Key)
+ switch {
+ case err != nil:
+ glog.V(logger.Detail).Infof("Depo.handleStoreRequest: %v not found locally. create new chunk/request", req.Key)
+ // not found in memory cache, ie., a genuine store request
+ // create chunk
+ chunk = storage.NewChunk(req.Key, nil)
+
+ case chunk.SData == nil:
+ // found chunk in memory store, needs the data, validate now
+ hasher := self.hashfunc()
+ hasher.Write(req.SData)
+ if !bytes.Equal(hasher.Sum(nil), req.Key) {
+ // data does not validate, ignore
+ // TODO: peer should be penalised/dropped?
+ glog.V(logger.Warn).Infof("Depo.HandleStoreRequest: chunk invalid. store request ignored: %v", req)
+ return
+ }
+ glog.V(logger.Detail).Infof("Depo.HandleStoreRequest: %v. request entry found", req)
+
+ default:
+ // data is found, store request ignored
+ // this should update access count?
+ glog.V(logger.Detail).Infof("Depo.HandleStoreRequest: %v found locally. ignore.", req)
+ return
+ }
+
+ // update chunk with size and data
+ chunk.SData = req.SData // protocol validates that SData is minimum 9 bytes long (int64 size + at least one byte of data)
+ chunk.Size = int64(binary.LittleEndian.Uint64(req.SData[0:8]))
+ glog.V(logger.Detail).Infof("delivery of %p from %v", chunk, p)
+ chunk.Source = p
+ self.netStore.Put(chunk)
+}
+
+// entrypoint for retrieve requests coming from the bzz wire protocol
+// checks swap balance - return if peer has no credit
+func (self *Depo) HandleRetrieveRequestMsg(req *retrieveRequestMsgData, p *peer) {
+ req.from = p
+ // swap - record credit for 1 request
+ // note that only charge actual reqsearches
+ var err error
+ if p.swap != nil {
+ err = p.swap.Add(1)
+ }
+ if err != nil {
+ glog.V(logger.Warn).Infof("Depo.HandleRetrieveRequest: %v - cannot process request: %v", req.Key.Log(), err)
+ return
+ }
+
+ // call storage.NetStore#Get which
+ // blocks until local retrieval finished
+ // launches cloud retrieval
+ chunk, _ := self.netStore.Get(req.Key)
+ req = self.strategyUpdateRequest(chunk.Req, req)
+ // check if we can immediately deliver
+ if chunk.SData != nil {
+ glog.V(logger.Detail).Infof("Depo.HandleRetrieveRequest: %v - content found, delivering...", req.Key.Log())
+
+ if req.MaxSize == 0 || int64(req.MaxSize) >= chunk.Size {
+ sreq := &storeRequestMsgData{
+ Id: req.Id,
+ Key: chunk.Key,
+ SData: chunk.SData,
+ requestTimeout: req.timeout, //
+ }
+ p.syncer.addRequest(sreq, DeliverReq)
+ } else {
+ glog.V(logger.Detail).Infof("Depo.HandleRetrieveRequest: %v - content found, not wanted", req.Key.Log())
+ }
+ } else {
+ glog.V(logger.Detail).Infof("Depo.HandleRetrieveRequest: %v - content not found locally. asked swarm for help. will get back", req.Key.Log())
+ }
+}
+
+// add peer request the chunk and decides the timeout for the response if still searching
+func (self *Depo) strategyUpdateRequest(rs *storage.RequestStatus, origReq *retrieveRequestMsgData) (req *retrieveRequestMsgData) {
+ glog.V(logger.Detail).Infof("Depo.strategyUpdateRequest: key %v", origReq.Key.Log())
+ // we do not create an alternative one
+ req = origReq
+ if rs != nil {
+ self.addRequester(rs, req)
+ req.setTimeout(self.searchTimeout(rs, req))
+ }
+ return
+}
+
+// decides the timeout promise sent with the immediate peers response to a retrieve request
+// if timeout is explicitly set and expired
+func (self *Depo) searchTimeout(rs *storage.RequestStatus, req *retrieveRequestMsgData) (timeout *time.Time) {
+ reqt := req.getTimeout()
+ t := time.Now().Add(searchTimeout)
+ if reqt != nil && reqt.Before(t) {
+ return reqt
+ } else {
+ return &t
+ }
+}
+
+/*
+adds a new peer to an existing open request
+only add if less than requesterCount peers forwarded the same request id so far
+note this is done irrespective of status (searching or found)
+*/
+func (self *Depo) addRequester(rs *storage.RequestStatus, req *retrieveRequestMsgData) {
+ glog.V(logger.Detail).Infof("Depo.addRequester: key %v - add peer to req.Id %v", req.Key.Log(), req.from, req.Id)
+ list := rs.Requesters[req.Id]
+ rs.Requesters[req.Id] = append(list, req)
+}
diff --git a/swarm/network/forwarding.go b/swarm/network/forwarding.go
new file mode 100644
index 000000000..fef79c70b
--- /dev/null
+++ b/swarm/network/forwarding.go
@@ -0,0 +1,150 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "math/rand"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const requesterCount = 3
+
+/*
+forwarder implements the CloudStore interface (use by storage.NetStore)
+and serves as the cloud store backend orchestrating storage/retrieval/delivery
+via the native bzz protocol
+which uses an MSB logarithmic distance-based semi-permanent Kademlia table for
+* recursive forwarding style routing for retrieval
+* smart syncronisation
+*/
+
+type forwarder struct {
+ hive *Hive
+}
+
+func NewForwarder(hive *Hive) *forwarder {
+ return &forwarder{hive: hive}
+}
+
+// generate a unique id uint64
+func generateId() uint64 {
+ r := rand.New(rand.NewSource(time.Now().UnixNano()))
+ return uint64(r.Int63())
+}
+
+var searchTimeout = 3 * time.Second
+
+// forwarding logic
+// logic propagating retrieve requests to peers given by the kademlia hive
+func (self *forwarder) Retrieve(chunk *storage.Chunk) {
+ peers := self.hive.getPeers(chunk.Key, 0)
+ glog.V(logger.Detail).Infof("forwarder.Retrieve: %v - received %d peers from KΛÐΞMLIΛ...", chunk.Key.Log(), len(peers))
+OUT:
+ for _, p := range peers {
+ glog.V(logger.Detail).Infof("forwarder.Retrieve: sending retrieveRequest %v to peer [%v]", chunk.Key.Log(), p)
+ for _, recipients := range chunk.Req.Requesters {
+ for _, recipient := range recipients {
+ req := recipient.(*retrieveRequestMsgData)
+ if req.from.Addr() == p.Addr() {
+ continue OUT
+ }
+ }
+ }
+ req := &retrieveRequestMsgData{
+ Key: chunk.Key,
+ Id: generateId(),
+ }
+ var err error
+ if p.swap != nil {
+ err = p.swap.Add(-1)
+ }
+ if err == nil {
+ p.retrieve(req)
+ break OUT
+ }
+ glog.V(logger.Warn).Infof("forwarder.Retrieve: unable to send retrieveRequest to peer [%v]: %v", chunk.Key.Log(), err)
+ }
+}
+
+// requests to specific peers given by the kademlia hive
+// except for peers that the store request came from (if any)
+// delivery queueing taken care of by syncer
+func (self *forwarder) Store(chunk *storage.Chunk) {
+ var n int
+ msg := &storeRequestMsgData{
+ Key: chunk.Key,
+ SData: chunk.SData,
+ }
+ var source *peer
+ if chunk.Source != nil {
+ source = chunk.Source.(*peer)
+ }
+ for _, p := range self.hive.getPeers(chunk.Key, 0) {
+ glog.V(logger.Detail).Infof("forwarder.Store: %v %v", p, chunk)
+
+ if p.syncer != nil && (source == nil || p.Addr() != source.Addr()) {
+ n++
+ Deliver(p, msg, PropagateReq)
+ }
+ }
+ glog.V(logger.Detail).Infof("forwarder.Store: sent to %v peers (chunk = %v)", n, chunk)
+}
+
+// once a chunk is found deliver it to its requesters unless timed out
+func (self *forwarder) Deliver(chunk *storage.Chunk) {
+ // iterate over request entries
+ for id, requesters := range chunk.Req.Requesters {
+ counter := requesterCount
+ msg := &storeRequestMsgData{
+ Key: chunk.Key,
+ SData: chunk.SData,
+ }
+ var n int
+ var req *retrieveRequestMsgData
+ // iterate over requesters with the same id
+ for id, r := range requesters {
+ req = r.(*retrieveRequestMsgData)
+ if req.timeout == nil || req.timeout.After(time.Now()) {
+ glog.V(logger.Detail).Infof("forwarder.Deliver: %v -> %v", req.Id, req.from)
+ msg.Id = uint64(id)
+ Deliver(req.from, msg, DeliverReq)
+ n++
+ counter--
+ if counter <= 0 {
+ break
+ }
+ }
+ }
+ glog.V(logger.Detail).Infof("forwarder.Deliver: submit chunk %v (request id %v) for delivery to %v peers", chunk.Key.Log(), id, n)
+ }
+}
+
+// initiate delivery of a chunk to a particular peer via syncer#addRequest
+// depending on syncer mode and priority settings and sync request type
+// this either goes via confirmation roundtrip or queued or pushed directly
+func Deliver(p *peer, req interface{}, ty int) {
+ p.syncer.addRequest(req, ty)
+}
+
+// push chunk over to peer
+func Push(p *peer, key storage.Key, priority uint) {
+ p.syncer.doDelivery(key, priority, p.syncer.quit)
+}
diff --git a/swarm/network/hive.go b/swarm/network/hive.go
new file mode 100644
index 000000000..f5ebdd008
--- /dev/null
+++ b/swarm/network/hive.go
@@ -0,0 +1,383 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "fmt"
+ "math/rand"
+ "path/filepath"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/swarm/network/kademlia"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+// Hive is the logistic manager of the swarm
+// it uses a generic kademlia nodetable to find best peer list
+// for any target
+// this is used by the netstore to search for content in the swarm
+// the bzz protocol peersMsgData exchange is relayed to Kademlia
+// for db storage and filtering
+// connections and disconnections are reported and relayed
+// to keep the nodetable uptodate
+
+type Hive struct {
+ listenAddr func() string
+ callInterval uint64
+ id discover.NodeID
+ addr kademlia.Address
+ kad *kademlia.Kademlia
+ path string
+ quit chan bool
+ toggle chan bool
+ more chan bool
+
+ // for testing only
+ swapEnabled bool
+ syncEnabled bool
+ blockRead bool
+ blockWrite bool
+}
+
+const (
+ callInterval = 3000000000
+ // bucketSize = 3
+ // maxProx = 8
+ // proxBinSize = 4
+)
+
+type HiveParams struct {
+ CallInterval uint64
+ KadDbPath string
+ *kademlia.KadParams
+}
+
+func NewHiveParams(path string) *HiveParams {
+ kad := kademlia.NewKadParams()
+ // kad.BucketSize = bucketSize
+ // kad.MaxProx = maxProx
+ // kad.ProxBinSize = proxBinSize
+
+ return &HiveParams{
+ CallInterval: callInterval,
+ KadDbPath: filepath.Join(path, "bzz-peers.json"),
+ KadParams: kad,
+ }
+}
+
+func NewHive(addr common.Hash, params *HiveParams, swapEnabled, syncEnabled bool) *Hive {
+ kad := kademlia.New(kademlia.Address(addr), params.KadParams)
+ return &Hive{
+ callInterval: params.CallInterval,
+ kad: kad,
+ addr: kad.Addr(),
+ path: params.KadDbPath,
+ swapEnabled: swapEnabled,
+ syncEnabled: syncEnabled,
+ }
+}
+
+func (self *Hive) SyncEnabled(on bool) {
+ self.syncEnabled = on
+}
+
+func (self *Hive) SwapEnabled(on bool) {
+ self.swapEnabled = on
+}
+
+func (self *Hive) BlockNetworkRead(on bool) {
+ self.blockRead = on
+}
+
+func (self *Hive) BlockNetworkWrite(on bool) {
+ self.blockWrite = on
+}
+
+// public accessor to the hive base address
+func (self *Hive) Addr() kademlia.Address {
+ return self.addr
+}
+
+// Start receives network info only at startup
+// listedAddr is a function to retrieve listening address to advertise to peers
+// connectPeer is a function to connect to a peer based on its NodeID or enode URL
+// there are called on the p2p.Server which runs on the node
+func (self *Hive) Start(id discover.NodeID, listenAddr func() string, connectPeer func(string) error) (err error) {
+ self.toggle = make(chan bool)
+ self.more = make(chan bool)
+ self.quit = make(chan bool)
+ self.id = id
+ self.listenAddr = listenAddr
+ err = self.kad.Load(self.path, nil)
+ if err != nil {
+ glog.V(logger.Warn).Infof("Warning: error reading kaddb '%s' (skipping): %v", self.path, err)
+ err = nil
+ }
+ // this loop is doing bootstrapping and maintains a healthy table
+ go self.keepAlive()
+ go func() {
+ // whenever toggled ask kademlia about most preferred peer
+ for alive := range self.more {
+ if !alive {
+ // receiving false closes the loop while allowing parallel routines
+ // to attempt to write to more (remove Peer when shutting down)
+ return
+ }
+ node, need, proxLimit := self.kad.Suggest()
+
+ if node != nil && len(node.Url) > 0 {
+ glog.V(logger.Detail).Infof("call known bee %v", node.Url)
+ // enode or any lower level connection address is unnecessary in future
+ // discovery table is used to look it up.
+ connectPeer(node.Url)
+ }
+ if need {
+ // a random peer is taken from the table
+ peers := self.kad.FindClosest(kademlia.RandomAddressAt(self.addr, rand.Intn(self.kad.MaxProx)), 1)
+ if len(peers) > 0 {
+ // a random address at prox bin 0 is sent for lookup
+ randAddr := kademlia.RandomAddressAt(self.addr, proxLimit)
+ req := &retrieveRequestMsgData{
+ Key: storage.Key(randAddr[:]),
+ }
+ glog.V(logger.Detail).Infof("call any bee near %v (PO%03d) - messenger bee: %v", randAddr, proxLimit, peers[0])
+ peers[0].(*peer).retrieve(req)
+ } else {
+ glog.V(logger.Warn).Infof("no peer")
+ }
+ glog.V(logger.Detail).Infof("buzz kept alive")
+ } else {
+ glog.V(logger.Info).Infof("no need for more bees")
+ }
+ select {
+ case self.toggle <- need:
+ case <-self.quit:
+ return
+ }
+ glog.V(logger.Debug).Infof("queen's address: %v, population: %d (%d)", self.addr, self.kad.Count(), self.kad.DBCount())
+ }
+ }()
+ return
+}
+
+// keepAlive is a forever loop
+// in its awake state it periodically triggers connection attempts
+// by writing to self.more until Kademlia Table is saturated
+// wake state is toggled by writing to self.toggle
+// it restarts if the table becomes non-full again due to disconnections
+func (self *Hive) keepAlive() {
+ alarm := time.NewTicker(time.Duration(self.callInterval)).C
+ for {
+ select {
+ case <-alarm:
+ if self.kad.DBCount() > 0 {
+ select {
+ case self.more <- true:
+ glog.V(logger.Debug).Infof("buzz wakeup")
+ default:
+ }
+ }
+ case need := <-self.toggle:
+ if alarm == nil && need {
+ alarm = time.NewTicker(time.Duration(self.callInterval)).C
+ }
+ if alarm != nil && !need {
+ alarm = nil
+
+ }
+ case <-self.quit:
+ return
+ }
+ }
+}
+
+func (self *Hive) Stop() error {
+ // closing toggle channel quits the updateloop
+ close(self.quit)
+ return self.kad.Save(self.path, saveSync)
+}
+
+// called at the end of a successful protocol handshake
+func (self *Hive) addPeer(p *peer) error {
+ defer func() {
+ select {
+ case self.more <- true:
+ default:
+ }
+ }()
+ glog.V(logger.Detail).Infof("hi new bee %v", p)
+ err := self.kad.On(p, loadSync)
+ if err != nil {
+ return err
+ }
+ // self lookup (can be encoded as nil/zero key since peers addr known) + no id ()
+ // the most common way of saying hi in bzz is initiation of gossip
+ // let me know about anyone new from my hood , here is the storageradius
+ // to send the 6 byte self lookup
+ // we do not record as request or forward it, just reply with peers
+ p.retrieve(&retrieveRequestMsgData{})
+ glog.V(logger.Detail).Infof("'whatsup wheresdaparty' sent to %v", p)
+
+ return nil
+}
+
+// called after peer disconnected
+func (self *Hive) removePeer(p *peer) {
+ glog.V(logger.Debug).Infof("bee %v removed", p)
+ self.kad.Off(p, saveSync)
+ select {
+ case self.more <- true:
+ default:
+ }
+ if self.kad.Count() == 0 {
+ glog.V(logger.Debug).Infof("empty, all bees gone")
+ }
+}
+
+// Retrieve a list of live peers that are closer to target than us
+func (self *Hive) getPeers(target storage.Key, max int) (peers []*peer) {
+ var addr kademlia.Address
+ copy(addr[:], target[:])
+ for _, node := range self.kad.FindClosest(addr, max) {
+ peers = append(peers, node.(*peer))
+ }
+ return
+}
+
+// disconnects all the peers
+func (self *Hive) DropAll() {
+ glog.V(logger.Info).Infof("dropping all bees")
+ for _, node := range self.kad.FindClosest(kademlia.Address{}, 0) {
+ node.Drop()
+ }
+}
+
+// contructor for kademlia.NodeRecord based on peer address alone
+// TODO: should go away and only addr passed to kademlia
+func newNodeRecord(addr *peerAddr) *kademlia.NodeRecord {
+ now := time.Now()
+ return &kademlia.NodeRecord{
+ Addr: addr.Addr,
+ Url: addr.String(),
+ Seen: now,
+ After: now,
+ }
+}
+
+// called by the protocol when receiving peerset (for target address)
+// peersMsgData is converted to a slice of NodeRecords for Kademlia
+// this is to store all thats needed
+func (self *Hive) HandlePeersMsg(req *peersMsgData, from *peer) {
+ var nrs []*kademlia.NodeRecord
+ for _, p := range req.Peers {
+ nrs = append(nrs, newNodeRecord(p))
+ }
+ self.kad.Add(nrs)
+}
+
+// peer wraps the protocol instance to represent a connected peer
+// it implements kademlia.Node interface
+type peer struct {
+ *bzz // protocol instance running on peer connection
+}
+
+// protocol instance implements kademlia.Node interface (embedded peer)
+func (self *peer) Addr() kademlia.Address {
+ return self.remoteAddr.Addr
+}
+
+func (self *peer) Url() string {
+ return self.remoteAddr.String()
+}
+
+// TODO take into account traffic
+func (self *peer) LastActive() time.Time {
+ return self.lastActive
+}
+
+// reads the serialised form of sync state persisted as the 'Meta' attribute
+// and sets the decoded syncState on the online node
+func loadSync(record *kademlia.NodeRecord, node kademlia.Node) error {
+ p, ok := node.(*peer)
+ if !ok {
+ return fmt.Errorf("invalid type")
+ }
+ if record.Meta == nil {
+ glog.V(logger.Debug).Infof("no sync state for node record %v setting default", record)
+ p.syncState = &syncState{DbSyncState: &storage.DbSyncState{}}
+ return nil
+ }
+ state, err := decodeSync(record.Meta)
+ if err != nil {
+ return fmt.Errorf("error decoding kddb record meta info into a sync state: %v", err)
+ }
+ glog.V(logger.Detail).Infof("sync state for node record %v read from Meta: %s", record, string(*(record.Meta)))
+ p.syncState = state
+ return err
+}
+
+// callback when saving a sync state
+func saveSync(record *kademlia.NodeRecord, node kademlia.Node) {
+ if p, ok := node.(*peer); ok {
+ meta, err := encodeSync(p.syncState)
+ if err != nil {
+ glog.V(logger.Warn).Infof("error saving sync state for %v: %v", node, err)
+ return
+ }
+ glog.V(logger.Detail).Infof("saved sync state for %v: %s", node, string(*meta))
+ record.Meta = meta
+ }
+}
+
+// the immediate response to a retrieve request,
+// sends relevant peer data given by the kademlia hive to the requester
+// TODO: remember peers sent for duration of the session, only new peers sent
+func (self *Hive) peers(req *retrieveRequestMsgData) {
+ if req != nil && req.MaxPeers >= 0 {
+ var addrs []*peerAddr
+ if req.timeout == nil || time.Now().Before(*(req.timeout)) {
+ key := req.Key
+ // self lookup from remote peer
+ if storage.IsZeroKey(key) {
+ addr := req.from.Addr()
+ key = storage.Key(addr[:])
+ req.Key = nil
+ }
+ // get peer addresses from hive
+ for _, peer := range self.getPeers(key, int(req.MaxPeers)) {
+ addrs = append(addrs, peer.remoteAddr)
+ }
+ glog.V(logger.Debug).Infof("Hive sending %d peer addresses to %v. req.Id: %v, req.Key: %v", len(addrs), req.from, req.Id, req.Key.Log())
+
+ peersData := &peersMsgData{
+ Peers: addrs,
+ Key: req.Key,
+ Id: req.Id,
+ }
+ peersData.setTimeout(req.timeout)
+ req.from.peers(peersData)
+ }
+ }
+}
+
+func (self *Hive) String() string {
+ return self.kad.String()
+}
diff --git a/swarm/network/kademlia/address.go b/swarm/network/kademlia/address.go
new file mode 100644
index 000000000..16c5ce532
--- /dev/null
+++ b/swarm/network/kademlia/address.go
@@ -0,0 +1,173 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package kademlia
+
+import (
+ "fmt"
+ "math/rand"
+ "strings"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+type Address common.Hash
+
+func (a Address) String() string {
+ return fmt.Sprintf("%x", a[:])
+}
+
+func (a *Address) MarshalJSON() (out []byte, err error) {
+ return []byte(`"` + a.String() + `"`), nil
+}
+
+func (a *Address) UnmarshalJSON(value []byte) error {
+ *a = Address(common.HexToHash(string(value[1 : len(value)-1])))
+ return nil
+}
+
+// the string form of the binary representation of an address (only first 8 bits)
+func (a Address) Bin() string {
+ var bs []string
+ for _, b := range a[:] {
+ bs = append(bs, fmt.Sprintf("%08b", b))
+ }
+ return strings.Join(bs, "")
+}
+
+/*
+Proximity(x, y) returns the proximity order of the MSB distance between x and y
+
+The distance metric MSB(x, y) of two equal length byte sequences x an y is the
+value of the binary integer cast of the x^y, ie., x and y bitwise xor-ed.
+the binary cast is big endian: most significant bit first (=MSB).
+
+Proximity(x, y) is a discrete logarithmic scaling of the MSB distance.
+It is defined as the reverse rank of the integer part of the base 2
+logarithm of the distance.
+It is calculated by counting the number of common leading zeros in the (MSB)
+binary representation of the x^y.
+
+(0 farthest, 255 closest, 256 self)
+*/
+func proximity(one, other Address) (ret int) {
+ for i := 0; i < len(one); i++ {
+ oxo := one[i] ^ other[i]
+ for j := 0; j < 8; j++ {
+ if (uint8(oxo)>>uint8(7-j))&0x01 != 0 {
+ return i*8 + j
+ }
+ }
+ }
+ return len(one) * 8
+}
+
+// Address.ProxCmp compares the distances a->target and b->target.
+// Returns -1 if a is closer to target, 1 if b is closer to target
+// and 0 if they are equal.
+func (target Address) ProxCmp(a, b Address) int {
+ for i := range target {
+ da := a[i] ^ target[i]
+ db := b[i] ^ target[i]
+ if da > db {
+ return 1
+ } else if da < db {
+ return -1
+ }
+ }
+ return 0
+}
+
+// randomAddressAt(address, prox) generates a random address
+// at proximity order prox relative to address
+// if prox is negative a random address is generated
+func RandomAddressAt(self Address, prox int) (addr Address) {
+ addr = self
+ var pos int
+ if prox >= 0 {
+ pos = prox / 8
+ trans := prox % 8
+ transbytea := byte(0)
+ for j := 0; j <= trans; j++ {
+ transbytea |= 1 << uint8(7-j)
+ }
+ flipbyte := byte(1 << uint8(7-trans))
+ transbyteb := transbytea ^ byte(255)
+ randbyte := byte(rand.Intn(255))
+ addr[pos] = ((addr[pos] & transbytea) ^ flipbyte) | randbyte&transbyteb
+ }
+ for i := pos + 1; i < len(addr); i++ {
+ addr[i] = byte(rand.Intn(255))
+ }
+
+ return
+}
+
+// KeyRange(a0, a1, proxLimit) returns the address inclusive address
+// range that contain addresses closer to one than other
+func KeyRange(one, other Address, proxLimit int) (start, stop Address) {
+ prox := proximity(one, other)
+ if prox >= proxLimit {
+ prox = proxLimit
+ }
+ start = CommonBitsAddrByte(one, other, byte(0x00), prox)
+ stop = CommonBitsAddrByte(one, other, byte(0xff), prox)
+ return
+}
+
+func CommonBitsAddrF(self, other Address, f func() byte, p int) (addr Address) {
+ prox := proximity(self, other)
+ var pos int
+ if p <= prox {
+ prox = p
+ }
+ pos = prox / 8
+ addr = self
+ trans := byte(prox % 8)
+ var transbytea byte
+ if p > prox {
+ transbytea = byte(0x7f)
+ } else {
+ transbytea = byte(0xff)
+ }
+ transbytea >>= trans
+ transbyteb := transbytea ^ byte(0xff)
+ addrpos := addr[pos]
+ addrpos &= transbyteb
+ if p > prox {
+ addrpos ^= byte(0x80 >> trans)
+ }
+ addrpos |= transbytea & f()
+ addr[pos] = addrpos
+ for i := pos + 1; i < len(addr); i++ {
+ addr[i] = f()
+ }
+
+ return
+}
+
+func CommonBitsAddr(self, other Address, prox int) (addr Address) {
+ return CommonBitsAddrF(self, other, func() byte { return byte(rand.Intn(255)) }, prox)
+}
+
+func CommonBitsAddrByte(self, other Address, b byte, prox int) (addr Address) {
+ return CommonBitsAddrF(self, other, func() byte { return b }, prox)
+}
+
+// randomAddressAt() generates a random address
+func RandomAddress() Address {
+ return RandomAddressAt(Address{}, -1)
+}
diff --git a/swarm/network/kademlia/address_test.go b/swarm/network/kademlia/address_test.go
new file mode 100644
index 000000000..c062c8eaf
--- /dev/null
+++ b/swarm/network/kademlia/address_test.go
@@ -0,0 +1,96 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package kademlia
+
+import (
+ "math/rand"
+ "reflect"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+func (Address) Generate(rand *rand.Rand, size int) reflect.Value {
+ var id Address
+ for i := 0; i < len(id); i++ {
+ id[i] = byte(uint8(rand.Intn(255)))
+ }
+ return reflect.ValueOf(id)
+}
+
+func TestCommonBitsAddrF(t *testing.T) {
+ a := Address(common.HexToHash("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))
+ b := Address(common.HexToHash("0x8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))
+ c := Address(common.HexToHash("0x4123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))
+ d := Address(common.HexToHash("0x0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))
+ e := Address(common.HexToHash("0x01A3456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))
+ ab := CommonBitsAddrF(a, b, func() byte { return byte(0x00) }, 10)
+ expab := Address(common.HexToHash("0x8000000000000000000000000000000000000000000000000000000000000000"))
+
+ if ab != expab {
+ t.Fatalf("%v != %v", ab, expab)
+ }
+ ac := CommonBitsAddrF(a, c, func() byte { return byte(0x00) }, 10)
+ expac := Address(common.HexToHash("0x4000000000000000000000000000000000000000000000000000000000000000"))
+
+ if ac != expac {
+ t.Fatalf("%v != %v", ac, expac)
+ }
+ ad := CommonBitsAddrF(a, d, func() byte { return byte(0x00) }, 10)
+ expad := Address(common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"))
+
+ if ad != expad {
+ t.Fatalf("%v != %v", ad, expad)
+ }
+ ae := CommonBitsAddrF(a, e, func() byte { return byte(0x00) }, 10)
+ expae := Address(common.HexToHash("0x0180000000000000000000000000000000000000000000000000000000000000"))
+
+ if ae != expae {
+ t.Fatalf("%v != %v", ae, expae)
+ }
+ acf := CommonBitsAddrF(a, c, func() byte { return byte(0xff) }, 10)
+ expacf := Address(common.HexToHash("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"))
+
+ if acf != expacf {
+ t.Fatalf("%v != %v", acf, expacf)
+ }
+ aeo := CommonBitsAddrF(a, e, func() byte { return byte(0x00) }, 2)
+ expaeo := Address(common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"))
+
+ if aeo != expaeo {
+ t.Fatalf("%v != %v", aeo, expaeo)
+ }
+ aep := CommonBitsAddrF(a, e, func() byte { return byte(0xff) }, 2)
+ expaep := Address(common.HexToHash("0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"))
+
+ if aep != expaep {
+ t.Fatalf("%v != %v", aep, expaep)
+ }
+
+}
+
+func TestRandomAddressAt(t *testing.T) {
+ var a Address
+ for i := 0; i < 100; i++ {
+ a = RandomAddress()
+ prox := rand.Intn(255)
+ b := RandomAddressAt(a, prox)
+ if proximity(a, b) != prox {
+ t.Fatalf("incorrect address prox(%v, %v) == %v (expected %v)", a, b, proximity(a, b), prox)
+ }
+ }
+}
diff --git a/swarm/network/kademlia/kaddb.go b/swarm/network/kademlia/kaddb.go
new file mode 100644
index 000000000..53a7db451
--- /dev/null
+++ b/swarm/network/kademlia/kaddb.go
@@ -0,0 +1,351 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package kademlia
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+type NodeData interface {
+ json.Marshaler
+ json.Unmarshaler
+}
+
+// allow inactive peers under
+type NodeRecord struct {
+ Addr Address // address of node
+ Url string // Url, used to connect to node
+ After time.Time // next call after time
+ Seen time.Time // last connected at time
+ Meta *json.RawMessage // arbitrary metadata saved for a peer
+
+ node Node
+}
+
+func (self *NodeRecord) setSeen() {
+ t := time.Now()
+ self.Seen = t
+ self.After = t
+}
+
+func (self *NodeRecord) String() string {
+ return fmt.Sprintf("<%v>", self.Addr)
+}
+
+// persisted node record database ()
+type KadDb struct {
+ Address Address
+ Nodes [][]*NodeRecord
+ index map[Address]*NodeRecord
+ cursors []int
+ lock sync.RWMutex
+ purgeInterval time.Duration
+ initialRetryInterval time.Duration
+ connRetryExp int
+}
+
+func newKadDb(addr Address, params *KadParams) *KadDb {
+ return &KadDb{
+ Address: addr,
+ Nodes: make([][]*NodeRecord, params.MaxProx+1), // overwritten by load
+ cursors: make([]int, params.MaxProx+1),
+ index: make(map[Address]*NodeRecord),
+ purgeInterval: params.PurgeInterval,
+ initialRetryInterval: params.InitialRetryInterval,
+ connRetryExp: params.ConnRetryExp,
+ }
+}
+
+func (self *KadDb) findOrCreate(index int, a Address, url string) *NodeRecord {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ record, found := self.index[a]
+ if !found {
+ record = &NodeRecord{
+ Addr: a,
+ Url: url,
+ }
+ glog.V(logger.Info).Infof("add new record %v to kaddb", record)
+ // insert in kaddb
+ self.index[a] = record
+ self.Nodes[index] = append(self.Nodes[index], record)
+ } else {
+ glog.V(logger.Info).Infof("found record %v in kaddb", record)
+ }
+ // update last seen time
+ record.setSeen()
+ // update with url in case IP/port changes
+ record.Url = url
+ return record
+}
+
+// add adds node records to kaddb (persisted node record db)
+func (self *KadDb) add(nrs []*NodeRecord, proximityBin func(Address) int) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ var n int
+ var nodes []*NodeRecord
+ for _, node := range nrs {
+ _, found := self.index[node.Addr]
+ if !found && node.Addr != self.Address {
+ node.setSeen()
+ self.index[node.Addr] = node
+ index := proximityBin(node.Addr)
+ dbcursor := self.cursors[index]
+ nodes = self.Nodes[index]
+ // this is inefficient for allocation, need to just append then shift
+ newnodes := make([]*NodeRecord, len(nodes)+1)
+ copy(newnodes[:], nodes[:dbcursor])
+ newnodes[dbcursor] = node
+ copy(newnodes[dbcursor+1:], nodes[dbcursor:])
+ glog.V(logger.Detail).Infof("new nodes: %v (keys: %v)\nnodes: %v", newnodes, nodes)
+ self.Nodes[index] = newnodes
+ n++
+ }
+ }
+ if n > 0 {
+ glog.V(logger.Debug).Infof("%d/%d node records (new/known)", n, len(nrs))
+ }
+}
+
+/*
+next return one node record with the highest priority for desired
+connection.
+This is used to pick candidates for live nodes that are most wanted for
+a higly connected low centrality network structure for Swarm which best suits
+for a Kademlia-style routing.
+
+* Starting as naive node with empty db, this implements Kademlia bootstrapping
+* As a mature node, it fills short lines. All on demand.
+
+The candidate is chosen using the following strategy:
+We check for missing online nodes in the buckets for 1 upto Max BucketSize rounds.
+On each round we proceed from the low to high proximity order buckets.
+If the number of active nodes (=connected peers) is < rounds, then start looking
+for a known candidate. To determine if there is a candidate to recommend the
+kaddb node record database row corresponding to the bucket is checked.
+
+If the row cursor is on position i, the ith element in the row is chosen.
+If the record is scheduled not to be retried before NOW, the next element is taken.
+If the record is scheduled to be retried, it is set as checked, scheduled for
+checking and is returned. The time of the next check is in X (duration) such that
+X = ConnRetryExp * delta where delta is the time past since the last check and
+ConnRetryExp is constant obsoletion factor. (Note that when node records are added
+from peer messages, they are marked as checked and placed at the cursor, ie.
+given priority over older entries). Entries which were checked more than
+purgeInterval ago are deleted from the kaddb row. If no candidate is found after
+a full round of checking the next bucket up is considered. If no candidate is
+found when we reach the maximum-proximity bucket, the next round starts.
+
+node record a is more favoured to b a > b iff a is a passive node (record of
+offline past peer)
+|proxBin(a)| < |proxBin(b)|
+|| (proxBin(a) < proxBin(b) && |proxBin(a)| == |proxBin(b)|)
+|| (proxBin(a) == proxBin(b) && lastChecked(a) < lastChecked(b))
+
+
+The second argument returned names the first missing slot found
+*/
+func (self *KadDb) findBest(maxBinSize int, binSize func(int) int) (node *NodeRecord, need bool, proxLimit int) {
+ // return nil, proxLimit indicates that all buckets are filled
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ var interval time.Duration
+ var found bool
+ var purge []bool
+ var delta time.Duration
+ var cursor int
+ var count int
+ var after time.Time
+
+ // iterate over columns maximum bucketsize times
+ for rounds := 1; rounds <= maxBinSize; rounds++ {
+ ROUND:
+ // iterate over rows from PO 0 upto MaxProx
+ for po, dbrow := range self.Nodes {
+ // if row has rounds connected peers, then take the next
+ if binSize(po) >= rounds {
+ continue ROUND
+ }
+ if !need {
+ // set proxlimit to the PO where the first missing slot is found
+ proxLimit = po
+ need = true
+ }
+ purge = make([]bool, len(dbrow))
+
+ // there is a missing slot - finding a node to connect to
+ // select a node record from the relavant kaddb row (of identical prox order)
+ ROW:
+ for cursor = self.cursors[po]; !found && count < len(dbrow); cursor = (cursor + 1) % len(dbrow) {
+ count++
+ node = dbrow[cursor]
+
+ // skip already connected nodes
+ if node.node != nil {
+ glog.V(logger.Debug).Infof("kaddb record %v (PO%03d:%d/%d) already connected", node.Addr, po, cursor, len(dbrow))
+ continue ROW
+ }
+
+ // if node is scheduled to connect
+ if time.Time(node.After).After(time.Now()) {
+ glog.V(logger.Debug).Infof("kaddb record %v (PO%03d:%d) skipped. seen at %v (%v ago), scheduled at %v", node.Addr, po, cursor, node.Seen, delta, node.After)
+ continue ROW
+ }
+
+ delta = time.Since(time.Time(node.Seen))
+ if delta < self.initialRetryInterval {
+ delta = self.initialRetryInterval
+ }
+ if delta > self.purgeInterval {
+ // remove node
+ purge[cursor] = true
+ glog.V(logger.Debug).Infof("kaddb record %v (PO%03d:%d) unreachable since %v. Removed", node.Addr, po, cursor, node.Seen)
+ continue ROW
+ }
+
+ glog.V(logger.Debug).Infof("kaddb record %v (PO%03d:%d) ready to be tried. seen at %v (%v ago), scheduled at %v", node.Addr, po, cursor, node.Seen, delta, node.After)
+
+ // scheduling next check
+ interval = time.Duration(delta * time.Duration(self.connRetryExp))
+ after = time.Now().Add(interval)
+
+ glog.V(logger.Debug).Infof("kaddb record %v (PO%03d:%d) selected as candidate connection %v. seen at %v (%v ago), selectable since %v, retry after %v (in %v)", node.Addr, po, cursor, rounds, node.Seen, delta, node.After, after, interval)
+ node.After = after
+ found = true
+ } // ROW
+ self.cursors[po] = cursor
+ self.delete(po, purge)
+ if found {
+ return node, need, proxLimit
+ }
+ } // ROUND
+ } // ROUNDS
+
+ return nil, need, proxLimit
+}
+
+// deletes the noderecords of a kaddb row corresponding to the indexes
+// caller must hold the dblock
+// the call is unsafe, no index checks
+func (self *KadDb) delete(row int, purge []bool) {
+ var nodes []*NodeRecord
+ dbrow := self.Nodes[row]
+ for i, del := range purge {
+ if i == self.cursors[row] {
+ //reset cursor
+ self.cursors[row] = len(nodes)
+ }
+ // delete the entry to be purged
+ if del {
+ delete(self.index, dbrow[i].Addr)
+ continue
+ }
+ // otherwise append to new list
+ nodes = append(nodes, dbrow[i])
+ }
+ self.Nodes[row] = nodes
+}
+
+// save persists kaddb on disk (written to file on path in json format.
+func (self *KadDb) save(path string, cb func(*NodeRecord, Node)) error {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ var n int
+
+ for _, b := range self.Nodes {
+ for _, node := range b {
+ n++
+ node.After = time.Now()
+ node.Seen = time.Now()
+ if cb != nil {
+ cb(node, node.node)
+ }
+ }
+ }
+
+ data, err := json.MarshalIndent(self, "", " ")
+ if err != nil {
+ return err
+ }
+ err = ioutil.WriteFile(path, data, os.ModePerm)
+ if err != nil {
+ glog.V(logger.Warn).Infof("unable to save kaddb with %v nodes to %v: err", n, path, err)
+ } else {
+ glog.V(logger.Info).Infof("saved kaddb with %v nodes to %v", n, path)
+ }
+ return err
+}
+
+// Load(path) loads the node record database (kaddb) from file on path.
+func (self *KadDb) load(path string, cb func(*NodeRecord, Node) error) (err error) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ var data []byte
+ data, err = ioutil.ReadFile(path)
+ if err != nil {
+ return
+ }
+
+ err = json.Unmarshal(data, self)
+ if err != nil {
+ return
+ }
+ var n int
+ var purge []bool
+ for po, b := range self.Nodes {
+ purge = make([]bool, len(b))
+ ROW:
+ for i, node := range b {
+ if cb != nil {
+ err = cb(node, node.node)
+ if err != nil {
+ purge[i] = true
+ continue ROW
+ }
+ }
+ n++
+ if (node.After == time.Time{}) {
+ node.After = time.Now()
+ }
+ self.index[node.Addr] = node
+ }
+ self.delete(po, purge)
+ }
+ glog.V(logger.Info).Infof("loaded kaddb with %v nodes from %v", n, path)
+
+ return
+}
+
+// accessor for KAD offline db count
+func (self *KadDb) count() int {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return len(self.index)
+}
diff --git a/swarm/network/kademlia/kademlia.go b/swarm/network/kademlia/kademlia.go
new file mode 100644
index 000000000..87c57cefe
--- /dev/null
+++ b/swarm/network/kademlia/kademlia.go
@@ -0,0 +1,429 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package kademlia
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+const (
+ bucketSize = 4
+ proxBinSize = 2
+ maxProx = 8
+ connRetryExp = 2
+ maxPeers = 100
+)
+
+var (
+ purgeInterval = 42 * time.Hour
+ initialRetryInterval = 42 * time.Millisecond
+ maxIdleInterval = 42 * 1000 * time.Millisecond
+ // maxIdleInterval = 42 * 10 0 * time.Millisecond
+)
+
+type KadParams struct {
+ // adjustable parameters
+ MaxProx int
+ ProxBinSize int
+ BucketSize int
+ PurgeInterval time.Duration
+ InitialRetryInterval time.Duration
+ MaxIdleInterval time.Duration
+ ConnRetryExp int
+}
+
+func NewKadParams() *KadParams {
+ return &KadParams{
+ MaxProx: maxProx,
+ ProxBinSize: proxBinSize,
+ BucketSize: bucketSize,
+ PurgeInterval: purgeInterval,
+ InitialRetryInterval: initialRetryInterval,
+ MaxIdleInterval: maxIdleInterval,
+ ConnRetryExp: connRetryExp,
+ }
+}
+
+// Kademlia is a table of active nodes
+type Kademlia struct {
+ addr Address // immutable baseaddress of the table
+ *KadParams // Kademlia configuration parameters
+ proxLimit int // state, the PO of the first row of the most proximate bin
+ proxSize int // state, the number of peers in the most proximate bin
+ count int // number of active peers (w live connection)
+ buckets [][]Node // the actual bins
+ db *KadDb // kaddb, node record database
+ lock sync.RWMutex // mutex to access buckets
+}
+
+type Node interface {
+ Addr() Address
+ Url() string
+ LastActive() time.Time
+ Drop()
+}
+
+// public constructor
+// add is the base address of the table
+// params is KadParams configuration
+func New(addr Address, params *KadParams) *Kademlia {
+ buckets := make([][]Node, params.MaxProx+1)
+ return &Kademlia{
+ addr: addr,
+ KadParams: params,
+ buckets: buckets,
+ db: newKadDb(addr, params),
+ }
+}
+
+// accessor for KAD base address
+func (self *Kademlia) Addr() Address {
+ return self.addr
+}
+
+// accessor for KAD active node count
+func (self *Kademlia) Count() int {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return self.count
+}
+
+// accessor for KAD active node count
+func (self *Kademlia) DBCount() int {
+ return self.db.count()
+}
+
+// On is the entry point called when a new nodes is added
+// unsafe in that node is not checked to be already active node (to be called once)
+func (self *Kademlia) On(node Node, cb func(*NodeRecord, Node) error) (err error) {
+ glog.V(logger.Warn).Infof("%v", self)
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ index := self.proximityBin(node.Addr())
+ record := self.db.findOrCreate(index, node.Addr(), node.Url())
+
+ if cb != nil {
+ err = cb(record, node)
+ glog.V(logger.Detail).Infof("cb(%v, %v) ->%v", record, node, err)
+ if err != nil {
+ return fmt.Errorf("unable to add node %v, callback error: %v", node.Addr(), err)
+ }
+ glog.V(logger.Debug).Infof("add node record %v with node %v", record, node)
+ }
+
+ // insert in kademlia table of active nodes
+ bucket := self.buckets[index]
+ // if bucket is full insertion replaces the worst node
+ // TODO: give priority to peers with active traffic
+ if len(bucket) < self.BucketSize { // >= allows us to add peers beyond the bucketsize limitation
+ self.buckets[index] = append(bucket, node)
+ glog.V(logger.Debug).Infof("add node %v to table", node)
+ self.setProxLimit(index, true)
+ record.node = node
+ self.count++
+ return nil
+ }
+
+ // always rotate peers
+ idle := self.MaxIdleInterval
+ var pos int
+ var replaced Node
+ for i, p := range bucket {
+ idleInt := time.Since(p.LastActive())
+ if idleInt > idle {
+ idle = idleInt
+ pos = i
+ replaced = p
+ }
+ }
+ if replaced == nil {
+ glog.V(logger.Debug).Infof("all peers wanted, PO%03d bucket full", index)
+ return fmt.Errorf("bucket full")
+ }
+ glog.V(logger.Debug).Infof("node %v replaced by %v (idle for %v > %v)", replaced, node, idle, self.MaxIdleInterval)
+ replaced.Drop()
+ // actually replace in the row. When off(node) is called, the peer is no longer in the row
+ bucket[pos] = node
+ // there is no change in bucket cardinalities so no prox limit adjustment is needed
+ record.node = node
+ self.count++
+ return nil
+
+}
+
+// Off is the called when a node is taken offline (from the protocol main loop exit)
+func (self *Kademlia) Off(node Node, cb func(*NodeRecord, Node)) (err error) {
+ self.lock.Lock()
+ defer self.lock.Unlock()
+
+ index := self.proximityBin(node.Addr())
+ bucket := self.buckets[index]
+ for i := 0; i < len(bucket); i++ {
+ if node.Addr() == bucket[i].Addr() {
+ self.buckets[index] = append(bucket[:i], bucket[(i+1):]...)
+ self.setProxLimit(index, false)
+ break
+ }
+ }
+
+ record := self.db.index[node.Addr()]
+ // callback on remove
+ if cb != nil {
+ cb(record, record.node)
+ }
+ record.node = nil
+ self.count--
+ glog.V(logger.Debug).Infof("remove node %v from table, population now is %v", node, self.count)
+
+ return
+}
+
+// proxLimit is dynamically adjusted so that
+// 1) there is no empty buckets in bin < proxLimit and
+// 2) the sum of all items are the minimum possible but higher than ProxBinSize
+// adjust Prox (proxLimit and proxSize after an insertion/removal of nodes)
+// caller holds the lock
+func (self *Kademlia) setProxLimit(r int, on bool) {
+ // if the change is outside the core (PO lower)
+ // and the change does not leave a bucket empty then
+ // no adjustment needed
+ if r < self.proxLimit && len(self.buckets[r]) > 0 {
+ return
+ }
+ // if on=a node was added, then r must be within prox limit so increment cardinality
+ if on {
+ self.proxSize++
+ curr := len(self.buckets[self.proxLimit])
+ // if now core is big enough without the furthest bucket, then contract
+ // this can result in more than one bucket change
+ for self.proxSize >= self.ProxBinSize+curr && curr > 0 {
+ self.proxSize -= curr
+ self.proxLimit++
+ curr = len(self.buckets[self.proxLimit])
+
+ glog.V(logger.Detail).Infof("proxbin contraction (size: %v, limit: %v, bin: %v)", self.proxSize, self.proxLimit, r)
+ }
+ return
+ }
+ // otherwise
+ if r >= self.proxLimit {
+ self.proxSize--
+ }
+ // expand core by lowering prox limit until hit zero or cover the empty bucket or reached target cardinality
+ for (self.proxSize < self.ProxBinSize || r < self.proxLimit) &&
+ self.proxLimit > 0 {
+ //
+ self.proxLimit--
+ self.proxSize += len(self.buckets[self.proxLimit])
+ glog.V(logger.Detail).Infof("proxbin expansion (size: %v, limit: %v, bin: %v)", self.proxSize, self.proxLimit, r)
+ }
+}
+
+/*
+returns the list of nodes belonging to the same proximity bin
+as the target. The most proximate bin will be the union of the bins between
+proxLimit and MaxProx.
+*/
+func (self *Kademlia) FindClosest(target Address, max int) []Node {
+ self.lock.Lock()
+ defer self.lock.Unlock()
+
+ r := nodesByDistance{
+ target: target,
+ }
+
+ po := self.proximityBin(target)
+ index := po
+ step := 1
+ glog.V(logger.Detail).Infof("serving %v nodes at %v (PO%02d)", max, index, po)
+
+ // if max is set to 0, just want a full bucket, dynamic number
+ min := max
+ // set limit to max
+ limit := max
+ if max == 0 {
+ min = 1
+ limit = maxPeers
+ }
+
+ var n int
+ for index >= 0 {
+ // add entire bucket
+ for _, p := range self.buckets[index] {
+ r.push(p, limit)
+ n++
+ }
+ // terminate if index reached the bottom or enough peers > min
+ glog.V(logger.Detail).Infof("add %v -> %v (PO%02d, PO%03d)", len(self.buckets[index]), n, index, po)
+ if n >= min && (step < 0 || max == 0) {
+ break
+ }
+ // reach top most non-empty PO bucket, turn around
+ if index == self.MaxProx {
+ index = po
+ step = -1
+ }
+ index += step
+ }
+ glog.V(logger.Detail).Infof("serve %d (<=%d) nodes for target lookup %v (PO%03d)", n, max, target, po)
+ return r.nodes
+}
+
+func (self *Kademlia) Suggest() (*NodeRecord, bool, int) {
+ defer self.lock.RUnlock()
+ self.lock.RLock()
+ return self.db.findBest(self.BucketSize, func(i int) int { return len(self.buckets[i]) })
+}
+
+// adds node records to kaddb (persisted node record db)
+func (self *Kademlia) Add(nrs []*NodeRecord) {
+ self.db.add(nrs, self.proximityBin)
+}
+
+// nodesByDistance is a list of nodes, ordered by distance to target.
+type nodesByDistance struct {
+ nodes []Node
+ target Address
+}
+
+func sortedByDistanceTo(target Address, slice []Node) bool {
+ var last Address
+ for i, node := range slice {
+ if i > 0 {
+ if target.ProxCmp(node.Addr(), last) < 0 {
+ return false
+ }
+ }
+ last = node.Addr()
+ }
+ return true
+}
+
+// push(node, max) adds the given node to the list, keeping the total size
+// below max elements.
+func (h *nodesByDistance) push(node Node, max int) {
+ // returns the firt index ix such that func(i) returns true
+ ix := sort.Search(len(h.nodes), func(i int) bool {
+ return h.target.ProxCmp(h.nodes[i].Addr(), node.Addr()) >= 0
+ })
+
+ if len(h.nodes) < max {
+ h.nodes = append(h.nodes, node)
+ }
+ if ix < len(h.nodes) {
+ copy(h.nodes[ix+1:], h.nodes[ix:])
+ h.nodes[ix] = node
+ }
+}
+
+/*
+Taking the proximity order relative to a fix point x classifies the points in
+the space (n byte long byte sequences) into bins. Items in each are at
+most half as distant from x as items in the previous bin. Given a sample of
+uniformly distributed items (a hash function over arbitrary sequence) the
+proximity scale maps onto series of subsets with cardinalities on a negative
+exponential scale.
+
+It also has the property that any two item belonging to the same bin are at
+most half as distant from each other as they are from x.
+
+If we think of random sample of items in the bins as connections in a network of interconnected nodes than relative proximity can serve as the basis for local
+decisions for graph traversal where the task is to find a route between two
+points. Since in every hop, the finite distance halves, there is
+a guaranteed constant maximum limit on the number of hops needed to reach one
+node from the other.
+*/
+
+func (self *Kademlia) proximityBin(other Address) (ret int) {
+ ret = proximity(self.addr, other)
+ if ret > self.MaxProx {
+ ret = self.MaxProx
+ }
+ return
+}
+
+// provides keyrange for chunk db iteration
+func (self *Kademlia) KeyRange(other Address) (start, stop Address) {
+ defer self.lock.RUnlock()
+ self.lock.RLock()
+ return KeyRange(self.addr, other, self.proxLimit)
+}
+
+// save persists kaddb on disk (written to file on path in json format.
+func (self *Kademlia) Save(path string, cb func(*NodeRecord, Node)) error {
+ return self.db.save(path, cb)
+}
+
+// Load(path) loads the node record database (kaddb) from file on path.
+func (self *Kademlia) Load(path string, cb func(*NodeRecord, Node) error) (err error) {
+ return self.db.load(path, cb)
+}
+
+// kademlia table + kaddb table displayed with ascii
+func (self *Kademlia) String() string {
+ defer self.lock.RUnlock()
+ self.lock.RLock()
+ defer self.db.lock.RUnlock()
+ self.db.lock.RLock()
+
+ var rows []string
+ rows = append(rows, "=========================================================================")
+ rows = append(rows, fmt.Sprintf("%v KΛÐΞMLIΛ hive: queen's address: %v", time.Now().UTC().Format(time.UnixDate), self.addr.String()[:6]))
+ rows = append(rows, fmt.Sprintf("population: %d (%d), proxLimit: %d, proxSize: %d", self.count, len(self.db.index), self.proxLimit, self.proxSize))
+ rows = append(rows, fmt.Sprintf("MaxProx: %d, ProxBinSize: %d, BucketSize: %d", self.MaxProx, self.ProxBinSize, self.BucketSize))
+
+ for i, bucket := range self.buckets {
+
+ if i == self.proxLimit {
+ rows = append(rows, fmt.Sprintf("============ PROX LIMIT: %d ==========================================", i))
+ }
+ row := []string{fmt.Sprintf("%03d", i), fmt.Sprintf("%2d", len(bucket))}
+ var k int
+ c := self.db.cursors[i]
+ for ; k < len(bucket); k++ {
+ p := bucket[(c+k)%len(bucket)]
+ row = append(row, p.Addr().String()[:6])
+ if k == 4 {
+ break
+ }
+ }
+ for ; k < 4; k++ {
+ row = append(row, " ")
+ }
+ row = append(row, fmt.Sprintf("| %2d %2d", len(self.db.Nodes[i]), self.db.cursors[i]))
+
+ for j, p := range self.db.Nodes[i] {
+ row = append(row, p.Addr.String()[:6])
+ if j == 3 {
+ break
+ }
+ }
+ rows = append(rows, strings.Join(row, " "))
+ if i == self.MaxProx {
+ }
+ }
+ rows = append(rows, "=========================================================================")
+ return strings.Join(rows, "\n")
+}
diff --git a/swarm/network/kademlia/kademlia_test.go b/swarm/network/kademlia/kademlia_test.go
new file mode 100644
index 000000000..66edfe654
--- /dev/null
+++ b/swarm/network/kademlia/kademlia_test.go
@@ -0,0 +1,392 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package kademlia
+
+import (
+ "fmt"
+ "math"
+ "math/rand"
+ "os"
+ "path/filepath"
+ "reflect"
+ "testing"
+ "testing/quick"
+ "time"
+)
+
+var (
+ quickrand = rand.New(rand.NewSource(time.Now().Unix()))
+ quickcfgFindClosest = &quick.Config{MaxCount: 50, Rand: quickrand}
+ quickcfgBootStrap = &quick.Config{MaxCount: 100, Rand: quickrand}
+)
+
+type testNode struct {
+ addr Address
+}
+
+func (n *testNode) String() string {
+ return fmt.Sprintf("%x", n.addr[:])
+}
+
+func (n *testNode) Addr() Address {
+ return n.addr
+}
+
+func (n *testNode) Drop() {
+}
+
+func (n *testNode) Url() string {
+ return ""
+}
+
+func (n *testNode) LastActive() time.Time {
+ return time.Now()
+}
+
+func TestOn(t *testing.T) {
+ addr, ok := gen(Address{}, quickrand).(Address)
+ other, ok := gen(Address{}, quickrand).(Address)
+ if !ok {
+ t.Errorf("oops")
+ }
+ kad := New(addr, NewKadParams())
+ err := kad.On(&testNode{addr: other}, nil)
+ _ = err
+}
+
+func TestBootstrap(t *testing.T) {
+
+ test := func(test *bootstrapTest) bool {
+ // for any node kad.le, Target and N
+ params := NewKadParams()
+ params.MaxProx = test.MaxProx
+ params.BucketSize = test.BucketSize
+ params.ProxBinSize = test.BucketSize
+ kad := New(test.Self, params)
+ var err error
+
+ for p := 0; p < 9; p++ {
+ var nrs []*NodeRecord
+ n := math.Pow(float64(2), float64(7-p))
+ for i := 0; i < int(n); i++ {
+ addr := RandomAddressAt(test.Self, p)
+ nrs = append(nrs, &NodeRecord{
+ Addr: addr,
+ })
+ }
+ kad.Add(nrs)
+ }
+
+ node := &testNode{test.Self}
+
+ n := 0
+ for n < 100 {
+ err = kad.On(node, nil)
+ if err != nil {
+ t.Fatalf("backend not accepting node: %v", err)
+ }
+
+ record, need, _ := kad.Suggest()
+ if !need {
+ break
+ }
+ n++
+ if record == nil {
+ continue
+ }
+ node = &testNode{record.Addr}
+ }
+ exp := test.BucketSize * (test.MaxProx + 1)
+ if kad.Count() != exp {
+ t.Errorf("incorrect number of peers, expected %d, got %d\n%v", exp, kad.Count(), kad)
+ return false
+ }
+ return true
+ }
+ if err := quick.Check(test, quickcfgBootStrap); err != nil {
+ t.Error(err)
+ }
+
+}
+
+func TestFindClosest(t *testing.T) {
+
+ test := func(test *FindClosestTest) bool {
+ // for any node kad.le, Target and N
+ params := NewKadParams()
+ params.MaxProx = 7
+ kad := New(test.Self, params)
+ var err error
+ for _, node := range test.All {
+ err = kad.On(node, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("backend not accepting node: %v", err)
+ }
+ }
+
+ if len(test.All) == 0 || test.N == 0 {
+ return true
+ }
+ nodes := kad.FindClosest(test.Target, test.N)
+
+ // check that the number of results is min(N, kad.len)
+ wantN := test.N
+ if tlen := kad.Count(); tlen < test.N {
+ wantN = tlen
+ }
+
+ if len(nodes) != wantN {
+ t.Errorf("wrong number of nodes: got %d, want %d", len(nodes), wantN)
+ return false
+ }
+
+ if hasDuplicates(nodes) {
+ t.Errorf("result contains duplicates")
+ return false
+ }
+
+ if !sortedByDistanceTo(test.Target, nodes) {
+ t.Errorf("result is not sorted by distance to target")
+ return false
+ }
+
+ // check that the result nodes have minimum distance to target.
+ farthestResult := nodes[len(nodes)-1].Addr()
+ for i, b := range kad.buckets {
+ for j, n := range b {
+ if contains(nodes, n.Addr()) {
+ continue // don't run the check below for nodes in result
+ }
+ if test.Target.ProxCmp(n.Addr(), farthestResult) < 0 {
+ _ = i * j
+ t.Errorf("kad.le contains node that is closer to target but it's not in result")
+ return false
+ }
+ }
+ }
+ return true
+ }
+ if err := quick.Check(test, quickcfgFindClosest); err != nil {
+ t.Error(err)
+ }
+}
+
+type proxTest struct {
+ add bool
+ index int
+ addr Address
+}
+
+var (
+ addresses []Address
+)
+
+func TestProxAdjust(t *testing.T) {
+ r := rand.New(rand.NewSource(time.Now().UnixNano()))
+ self := gen(Address{}, r).(Address)
+ params := NewKadParams()
+ params.MaxProx = 7
+ kad := New(self, params)
+
+ var err error
+ for i := 0; i < 100; i++ {
+ a := gen(Address{}, r).(Address)
+ addresses = append(addresses, a)
+ err = kad.On(&testNode{addr: a}, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("backend not accepting node: %v", err)
+ }
+ if !kad.proxCheck(t) {
+ return
+ }
+ }
+ test := func(test *proxTest) bool {
+ node := &testNode{test.addr}
+ if test.add {
+ kad.On(node, nil)
+ } else {
+ kad.Off(node, nil)
+ }
+ return kad.proxCheck(t)
+ }
+ if err := quick.Check(test, quickcfgFindClosest); err != nil {
+ t.Error(err)
+ }
+}
+
+func TestSaveLoad(t *testing.T) {
+ r := rand.New(rand.NewSource(time.Now().UnixNano()))
+ addresses := gen([]Address{}, r).([]Address)
+ self := RandomAddress()
+ params := NewKadParams()
+ params.MaxProx = 7
+ kad := New(self, params)
+
+ var err error
+
+ for _, a := range addresses {
+ err = kad.On(&testNode{addr: a}, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("backend not accepting node: %v", err)
+ }
+ }
+ nodes := kad.FindClosest(self, 100)
+
+ path := filepath.Join(os.TempDir(), "bzz-kad-test-save-load.peers")
+ err = kad.Save(path, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("unepected error saving kaddb: %v", err)
+ }
+ kad = New(self, params)
+ err = kad.Load(path, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("unepected error loading kaddb: %v", err)
+ }
+ for _, b := range kad.db.Nodes {
+ for _, node := range b {
+ err = kad.On(&testNode{node.Addr}, nil)
+ if err != nil && err.Error() != "bucket full" {
+ t.Fatalf("backend not accepting node: %v", err)
+ }
+ }
+ }
+ loadednodes := kad.FindClosest(self, 100)
+ for i, node := range loadednodes {
+ if nodes[i].Addr() != node.Addr() {
+ t.Errorf("node mismatch at %d/%d: %v != %v", i, len(nodes), nodes[i].Addr(), node.Addr())
+ }
+ }
+}
+
+func (self *Kademlia) proxCheck(t *testing.T) bool {
+ var sum int
+ for i, b := range self.buckets {
+ l := len(b)
+ // if we are in the high prox multibucket
+ if i >= self.proxLimit {
+ sum += l
+ } else if l == 0 {
+ t.Errorf("bucket %d empty, yet proxLimit is %d\n%v", len(b), self.proxLimit, self)
+ return false
+ }
+ }
+ // check if merged high prox bucket does not exceed size
+ if sum > 0 {
+ if sum != self.proxSize {
+ t.Errorf("proxSize incorrect, expected %v, got %v", sum, self.proxSize)
+ return false
+ }
+ last := len(self.buckets[self.proxLimit])
+ if last > 0 && sum >= self.ProxBinSize+last {
+ t.Errorf("proxLimit %v incorrect, redundant non-empty bucket %d added to proxBin with %v (target %v)\n%v", self.proxLimit, last, sum-last, self.ProxBinSize, self)
+ return false
+ }
+ if self.proxLimit > 0 && sum < self.ProxBinSize {
+ t.Errorf("proxLimit %v incorrect. proxSize %v is less than target %v, yet there is more peers", self.proxLimit, sum, self.ProxBinSize)
+ return false
+ }
+ }
+ return true
+}
+
+type bootstrapTest struct {
+ MaxProx int
+ BucketSize int
+ Self Address
+}
+
+func (*bootstrapTest) Generate(rand *rand.Rand, size int) reflect.Value {
+ t := &bootstrapTest{
+ Self: gen(Address{}, rand).(Address),
+ MaxProx: 5 + rand.Intn(2),
+ BucketSize: rand.Intn(3) + 1,
+ }
+ return reflect.ValueOf(t)
+}
+
+type FindClosestTest struct {
+ Self Address
+ Target Address
+ All []Node
+ N int
+}
+
+func (c FindClosestTest) String() string {
+ return fmt.Sprintf("A: %064x\nT: %064x\n(%d)\n", c.Self[:], c.Target[:], c.N)
+}
+
+func (*FindClosestTest) Generate(rand *rand.Rand, size int) reflect.Value {
+ t := &FindClosestTest{
+ Self: gen(Address{}, rand).(Address),
+ Target: gen(Address{}, rand).(Address),
+ N: rand.Intn(bucketSize),
+ }
+ for _, a := range gen([]Address{}, rand).([]Address) {
+ t.All = append(t.All, &testNode{addr: a})
+ }
+ return reflect.ValueOf(t)
+}
+
+func (*proxTest) Generate(rand *rand.Rand, size int) reflect.Value {
+ var add bool
+ if rand.Intn(1) == 0 {
+ add = true
+ }
+ var t *proxTest
+ if add {
+ t = &proxTest{
+ addr: gen(Address{}, rand).(Address),
+ add: add,
+ }
+ } else {
+ t = &proxTest{
+ index: rand.Intn(len(addresses)),
+ add: add,
+ }
+ }
+ return reflect.ValueOf(t)
+}
+
+func hasDuplicates(slice []Node) bool {
+ seen := make(map[Address]bool)
+ for _, node := range slice {
+ if seen[node.Addr()] {
+ return true
+ }
+ seen[node.Addr()] = true
+ }
+ return false
+}
+
+func contains(nodes []Node, addr Address) bool {
+ for _, n := range nodes {
+ if n.Addr() == addr {
+ return true
+ }
+ }
+ return false
+}
+
+// gen wraps quick.Value so it's easier to use.
+// it generates a random value of the given value's type.
+func gen(typ interface{}, rand *rand.Rand) interface{} {
+ v, ok := quick.Value(reflect.TypeOf(typ), rand)
+ if !ok {
+ panic(fmt.Sprintf("couldn't generate random value of type %T", typ))
+ }
+ return v.Interface()
+}
diff --git a/swarm/network/messages.go b/swarm/network/messages.go
new file mode 100644
index 000000000..d3858c424
--- /dev/null
+++ b/swarm/network/messages.go
@@ -0,0 +1,317 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "fmt"
+ "net"
+ "time"
+
+ "github.com/ethereum/go-ethereum/contracts/chequebook"
+ "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/swarm/network/kademlia"
+ "github.com/ethereum/go-ethereum/swarm/services/swap"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+/*
+BZZ protocol Message Types and Message Data Types
+*/
+
+// bzz protocol message codes
+const (
+ statusMsg = iota // 0x01
+ storeRequestMsg // 0x02
+ retrieveRequestMsg // 0x03
+ peersMsg // 0x04
+ syncRequestMsg // 0x05
+ deliveryRequestMsg // 0x06
+ unsyncedKeysMsg // 0x07
+ paymentMsg // 0x08
+)
+
+/*
+ Handshake
+
+* Version: 8 byte integer version of the protocol
+* ID: arbitrary byte sequence client identifier human readable
+* Addr: the address advertised by the node, format similar to DEVp2p wire protocol
+* Swap: info for the swarm accounting protocol
+* NetworkID: 8 byte integer network identifier
+* Caps: swarm-specific capabilities, format identical to devp2p
+* SyncState: syncronisation state (db iterator key and address space etc) persisted about the peer
+
+*/
+type statusMsgData struct {
+ Version uint64
+ ID string
+ Addr *peerAddr
+ Swap *swap.SwapProfile
+ NetworkId uint64
+}
+
+func (self *statusMsgData) String() string {
+ return fmt.Sprintf("Status: Version: %v, ID: %v, Addr: %v, Swap: %v, NetworkId: %v", self.Version, self.ID, self.Addr, self.Swap, self.NetworkId)
+}
+
+/*
+ store requests are forwarded to the peers in their kademlia proximity bin
+ if they are distant
+ if they are within our storage radius or have any incentive to store it
+ then attach your nodeID to the metadata
+ if the storage request is sufficiently close (within our proxLimit, i. e., the
+ last row of the routing table)
+*/
+type storeRequestMsgData struct {
+ Key storage.Key // hash of datasize | data
+ SData []byte // the actual chunk Data
+ // optional
+ Id uint64 // request ID. if delivery, the ID is retrieve request ID
+ requestTimeout *time.Time // expiry for forwarding - [not serialised][not currently used]
+ storageTimeout *time.Time // expiry of content - [not serialised][not currently used]
+ from *peer // [not serialised] protocol registers the requester
+}
+
+func (self storeRequestMsgData) String() string {
+ var from string
+ if self.from == nil {
+ from = "self"
+ } else {
+ from = self.from.Addr().String()
+ }
+ end := len(self.SData)
+ if len(self.SData) > 10 {
+ end = 10
+ }
+ return fmt.Sprintf("from: %v, Key: %v; ID: %v, requestTimeout: %v, storageTimeout: %v, SData %x", from, self.Key, self.Id, self.requestTimeout, self.storageTimeout, self.SData[:end])
+}
+
+/*
+Retrieve request
+
+Timeout in milliseconds. Note that zero timeout retrieval requests do not request forwarding, but prompt for a peers message response. therefore they serve also
+as messages to retrieve peers.
+
+MaxSize specifies the maximum size that the peer will accept. This is useful in
+particular if we allow storage and delivery of multichunk payload representing
+the entire or partial subtree unfolding from the requested root key.
+So when only interested in limited part of a stream (infinite trees) or only
+testing chunk availability etc etc, we can indicate it by limiting the size here.
+
+Request ID can be newly generated or kept from the request originator.
+If request ID Is missing or zero, the request is handled as a lookup only
+prompting a peers response but not launching a search. Lookup requests are meant
+to be used to bootstrap kademlia tables.
+
+In the special case that the key is the zero value as well, the remote peer's
+address is assumed (the message is to be handled as a self lookup request).
+The response is a PeersMsg with the peers in the kademlia proximity bin
+corresponding to the address.
+*/
+
+type retrieveRequestMsgData struct {
+ Key storage.Key // target Key address of chunk to be retrieved
+ Id uint64 // request id, request is a lookup if missing or zero
+ MaxSize uint64 // maximum size of delivery accepted
+ MaxPeers uint64 // maximum number of peers returned
+ Timeout uint64 // the longest time we are expecting a response
+ timeout *time.Time // [not serialied]
+ from *peer //
+}
+
+func (self retrieveRequestMsgData) String() string {
+ var from string
+ if self.from == nil {
+ from = "ourselves"
+ } else {
+ from = self.from.Addr().String()
+ }
+ var target []byte
+ if len(self.Key) > 3 {
+ target = self.Key[:4]
+ }
+ return fmt.Sprintf("from: %v, Key: %x; ID: %v, MaxSize: %v, MaxPeers: %d", from, target, self.Id, self.MaxSize, self.MaxPeers)
+}
+
+// lookups are encoded by missing request ID
+func (self retrieveRequestMsgData) isLookup() bool {
+ return self.Id == 0
+}
+
+// sets timeout fields
+func (self retrieveRequestMsgData) setTimeout(t *time.Time) {
+ self.timeout = t
+ if t != nil {
+ self.Timeout = uint64(t.UnixNano())
+ } else {
+ self.Timeout = 0
+ }
+}
+
+func (self retrieveRequestMsgData) getTimeout() (t *time.Time) {
+ if self.Timeout > 0 && self.timeout == nil {
+ timeout := time.Unix(int64(self.Timeout), 0)
+ t = &timeout
+ self.timeout = t
+ }
+ return
+}
+
+// peerAddr is sent in StatusMsg as part of the handshake
+type peerAddr struct {
+ IP net.IP
+ Port uint16
+ ID []byte // the 64 byte NodeID (ECDSA Public Key)
+ Addr kademlia.Address
+}
+
+// peerAddr pretty prints as enode
+func (self peerAddr) String() string {
+ var nodeid discover.NodeID
+ copy(nodeid[:], self.ID)
+ return discover.NewNode(nodeid, self.IP, 0, self.Port).String()
+}
+
+/*
+peers Msg is one response to retrieval; it is always encouraged after a retrieval
+request to respond with a list of peers in the same kademlia proximity bin.
+The encoding of a peer is identical to that in the devp2p base protocol peers
+messages: [IP, Port, NodeID]
+note that a node's DPA address is not the NodeID but the hash of the NodeID.
+
+Timeout serves to indicate whether the responder is forwarding the query within
+the timeout or not.
+
+NodeID serves as the owner of payment contracts and signer of proofs of transfer.
+
+The Key is the target (if response to a retrieval request) or missing (zero value)
+peers address (hash of NodeID) if retrieval request was a self lookup.
+
+Peers message is requested by retrieval requests with a missing or zero value request ID
+*/
+type peersMsgData struct {
+ Peers []*peerAddr //
+ Timeout uint64 //
+ timeout *time.Time // indicate whether responder is expected to deliver content
+ Key storage.Key // present if a response to a retrieval request
+ Id uint64 // present if a response to a retrieval request
+ from *peer
+}
+
+// peers msg pretty printer
+func (self peersMsgData) String() string {
+ var from string
+ if self.from == nil {
+ from = "ourselves"
+ } else {
+ from = self.from.Addr().String()
+ }
+ var target []byte
+ if len(self.Key) > 3 {
+ target = self.Key[:4]
+ }
+ return fmt.Sprintf("from: %v, Key: %x; ID: %v, Peers: %v", from, target, self.Id, self.Peers)
+}
+
+func (self peersMsgData) setTimeout(t *time.Time) {
+ self.timeout = t
+ if t != nil {
+ self.Timeout = uint64(t.UnixNano())
+ } else {
+ self.Timeout = 0
+ }
+}
+
+func (self peersMsgData) getTimeout() (t *time.Time) {
+ if self.Timeout > 0 && self.timeout == nil {
+ timeout := time.Unix(int64(self.Timeout), 0)
+ t = &timeout
+ self.timeout = t
+ }
+ return
+}
+
+/*
+syncRequest
+
+is sent after the handshake to initiate syncing
+the syncState of the remote node is persisted in kaddb and set on the
+peer/protocol instance when the node is registered by hive as online{
+*/
+
+type syncRequestMsgData struct {
+ SyncState *syncState `rlp:"nil"`
+}
+
+func (self *syncRequestMsgData) String() string {
+ return fmt.Sprintf("%v", self.SyncState)
+}
+
+/*
+deliveryRequest
+
+is sent once a batch of sync keys is filtered. The ones not found are
+sent as a list of syncReuest (hash, priority) in the Deliver field.
+When the source receives the sync request it continues to iterate
+and fetch at most N items as yet unsynced.
+At the same time responds with deliveries of the items.
+*/
+type deliveryRequestMsgData struct {
+ Deliver []*syncRequest
+}
+
+func (self *deliveryRequestMsgData) String() string {
+ return fmt.Sprintf("sync request for new chunks\ndelivery request for %v chunks", len(self.Deliver))
+}
+
+/*
+unsyncedKeys
+
+is sent first after the handshake if SyncState iterator brings up hundreds, thousands?
+and subsequently sent as a response to deliveryRequestMsgData.
+
+Syncing is the iterative process of exchanging unsyncedKeys and deliveryRequestMsgs
+both ways.
+
+State contains the sync state sent by the source. When the source receives the
+sync state it continues to iterate and fetch at most N items as yet unsynced.
+At the same time responds with deliveries of the items.
+*/
+type unsyncedKeysMsgData struct {
+ Unsynced []*syncRequest
+ State *syncState
+}
+
+func (self *unsyncedKeysMsgData) String() string {
+ return fmt.Sprintf("sync: keys of %d new chunks (state %v) => synced: %v", len(self.Unsynced), self.State, self.State.Synced)
+}
+
+/*
+payment
+
+is sent when the swap balance is tilted in favour of the remote peer
+and in absolute units exceeds the PayAt parameter in the remote peer's profile
+*/
+
+type paymentMsgData struct {
+ Units uint // units actually paid for (checked against amount by swap)
+ Promise *chequebook.Cheque // payment with cheque
+}
+
+func (self *paymentMsgData) String() string {
+ return fmt.Sprintf("payment for %d units: %v", self.Units, self.Promise)
+}
diff --git a/swarm/network/protocol.go b/swarm/network/protocol.go
new file mode 100644
index 000000000..5e65108d6
--- /dev/null
+++ b/swarm/network/protocol.go
@@ -0,0 +1,554 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+/*
+bzz implements the swarm wire protocol [bzz] (sister of eth and shh)
+the protocol instance is launched on each peer by the network layer if the
+bzz protocol handler is registered on the p2p server.
+
+The bzz protocol component speaks the bzz protocol
+* handle the protocol handshake
+* register peers in the KΛÐΞMLIΛ table via the hive logistic manager
+* dispatch to hive for handling the DHT logic
+* encode and decode requests for storage and retrieval
+* handle sync protocol messages via the syncer
+* talks the SWAP payment protocol (swap accounting is done within NetStore)
+*/
+
+import (
+ "fmt"
+ "net"
+ "strconv"
+ "time"
+
+ "github.com/ethereum/go-ethereum/contracts/chequebook"
+ "github.com/ethereum/go-ethereum/errs"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/p2p"
+ "github.com/ethereum/go-ethereum/p2p/discover"
+ bzzswap "github.com/ethereum/go-ethereum/swarm/services/swap"
+ "github.com/ethereum/go-ethereum/swarm/services/swap/swap"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const (
+ Version = 0
+ ProtocolLength = uint64(8)
+ ProtocolMaxMsgSize = 10 * 1024 * 1024
+ NetworkId = 322
+)
+
+const (
+ ErrMsgTooLarge = iota
+ ErrDecode
+ ErrInvalidMsgCode
+ ErrVersionMismatch
+ ErrNetworkIdMismatch
+ ErrNoStatusMsg
+ ErrExtraStatusMsg
+ ErrSwap
+ ErrSync
+ ErrUnwanted
+)
+
+var errorToString = map[int]string{
+ ErrMsgTooLarge: "Message too long",
+ ErrDecode: "Invalid message",
+ ErrInvalidMsgCode: "Invalid message code",
+ ErrVersionMismatch: "Protocol version mismatch",
+ ErrNetworkIdMismatch: "NetworkId mismatch",
+ ErrNoStatusMsg: "No status message",
+ ErrExtraStatusMsg: "Extra status message",
+ ErrSwap: "SWAP error",
+ ErrSync: "Sync error",
+ ErrUnwanted: "Unwanted peer",
+}
+
+// bzz represents the swarm wire protocol
+// an instance is running on each peer
+type bzz struct {
+ selfID discover.NodeID // peer's node id used in peer advertising in handshake
+ key storage.Key // baseaddress as storage.Key
+ storage StorageHandler // handler storage/retrieval related requests coming via the bzz wire protocol
+ hive *Hive // the logistic manager, peerPool, routing service and peer handler
+ dbAccess *DbAccess // access to db storage counter and iterator for syncing
+ requestDb *storage.LDBDatabase // db to persist backlog of deliveries to aid syncing
+ remoteAddr *peerAddr // remote peers address
+ peer *p2p.Peer // the p2p peer object
+ rw p2p.MsgReadWriter // messageReadWriter to send messages to
+ errors *errs.Errors // errors table
+ backend chequebook.Backend
+ lastActive time.Time
+
+ swap *swap.Swap // swap instance for the peer connection
+ swapParams *bzzswap.SwapParams // swap settings both local and remote
+ swapEnabled bool // flag to enable SWAP (will be set via Caps in handshake)
+ syncEnabled bool // flag to enable SYNC (will be set via Caps in handshake)
+ syncer *syncer // syncer instance for the peer connection
+ syncParams *SyncParams // syncer params
+ syncState *syncState // outgoing syncronisation state (contains reference to remote peers db counter)
+}
+
+// interface type for handler of storage/retrieval related requests coming
+// via the bzz wire protocol
+// messages: UnsyncedKeys, DeliveryRequest, StoreRequest, RetrieveRequest
+type StorageHandler interface {
+ HandleUnsyncedKeysMsg(req *unsyncedKeysMsgData, p *peer) error
+ HandleDeliveryRequestMsg(req *deliveryRequestMsgData, p *peer) error
+ HandleStoreRequestMsg(req *storeRequestMsgData, p *peer)
+ HandleRetrieveRequestMsg(req *retrieveRequestMsgData, p *peer)
+}
+
+/*
+main entrypoint, wrappers starting a server that will run the bzz protocol
+use this constructor to attach the protocol ("class") to server caps
+This is done by node.Node#Register(func(node.ServiceContext) (Service, error))
+Service implements Protocols() which is an array of protocol constructors
+at node startup the protocols are initialised
+the Dev p2p layer then calls Run(p *p2p.Peer, rw p2p.MsgReadWriter) error
+on each peer connection
+The Run function of the Bzz protocol class creates a bzz instance
+which will represent the peer for the swarm hive and all peer-aware components
+*/
+func Bzz(cloud StorageHandler, backend chequebook.Backend, hive *Hive, dbaccess *DbAccess, sp *bzzswap.SwapParams, sy *SyncParams) (p2p.Protocol, error) {
+
+ // a single global request db is created for all peer connections
+ // this is to persist delivery backlog and aid syncronisation
+ requestDb, err := storage.NewLDBDatabase(sy.RequestDbPath)
+ if err != nil {
+ return p2p.Protocol{}, fmt.Errorf("error setting up request db: %v", err)
+ }
+
+ return p2p.Protocol{
+ Name: "bzz",
+ Version: Version,
+ Length: ProtocolLength,
+ Run: func(p *p2p.Peer, rw p2p.MsgReadWriter) error {
+ return run(requestDb, cloud, backend, hive, dbaccess, sp, sy, p, rw)
+ },
+ }, nil
+}
+
+/*
+the main protocol loop that
+ * does the handshake by exchanging statusMsg
+ * if peer is valid and accepted, registers with the hive
+ * then enters into a forever loop handling incoming messages
+ * storage and retrieval related queries coming via bzz are dispatched to StorageHandler
+ * peer-related messages are dispatched to the hive
+ * payment related messages are relayed to SWAP service
+ * on disconnect, unregister the peer in the hive (note RemovePeer in the post-disconnect hook)
+ * whenever the loop terminates, the peer will disconnect with Subprotocol error
+ * whenever handlers return an error the loop terminates
+*/
+func run(requestDb *storage.LDBDatabase, depo StorageHandler, backend chequebook.Backend, hive *Hive, dbaccess *DbAccess, sp *bzzswap.SwapParams, sy *SyncParams, p *p2p.Peer, rw p2p.MsgReadWriter) (err error) {
+
+ self := &bzz{
+ storage: depo,
+ backend: backend,
+ hive: hive,
+ dbAccess: dbaccess,
+ requestDb: requestDb,
+ peer: p,
+ rw: rw,
+ errors: &errs.Errors{
+ Package: "BZZ",
+ Errors: errorToString,
+ },
+ swapParams: sp,
+ syncParams: sy,
+ swapEnabled: hive.swapEnabled,
+ syncEnabled: true,
+ }
+
+ // handle handshake
+ err = self.handleStatus()
+ if err != nil {
+ return err
+ }
+ defer func() {
+ // if the handler loop exits, the peer is disconnecting
+ // deregister the peer in the hive
+ self.hive.removePeer(&peer{bzz: self})
+ if self.syncer != nil {
+ self.syncer.stop() // quits request db and delivery loops, save requests
+ }
+ if self.swap != nil {
+ self.swap.Stop() // quits chequebox autocash etc
+ }
+ }()
+
+ // the main forever loop that handles incoming requests
+ for {
+ if self.hive.blockRead {
+ glog.V(logger.Warn).Infof("Cannot read network")
+ time.Sleep(100 * time.Millisecond)
+ continue
+ }
+ err = self.handle()
+ if err != nil {
+ return
+ }
+ }
+}
+
+// TODO: may need to implement protocol drop only? don't want to kick off the peer
+// if they are useful for other protocols
+func (self *bzz) Drop() {
+ self.peer.Disconnect(p2p.DiscSubprotocolError)
+}
+
+// one cycle of the main forever loop that handles and dispatches incoming messages
+func (self *bzz) handle() error {
+ msg, err := self.rw.ReadMsg()
+ glog.V(logger.Debug).Infof("<- %v", msg)
+ if err != nil {
+ return err
+ }
+ if msg.Size > ProtocolMaxMsgSize {
+ return self.protoError(ErrMsgTooLarge, "%v > %v", msg.Size, ProtocolMaxMsgSize)
+ }
+ // make sure that the payload has been fully consumed
+ defer msg.Discard()
+
+ switch msg.Code {
+
+ case statusMsg:
+ // no extra status message allowed. The one needed already handled by
+ // handleStatus
+ glog.V(logger.Debug).Infof("Status message: %v", msg)
+ return self.protoError(ErrExtraStatusMsg, "")
+
+ case storeRequestMsg:
+ // store requests are dispatched to netStore
+ var req storeRequestMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ if len(req.SData) < 9 {
+ return self.protoError(ErrDecode, "<- %v: Data too short (%v)", msg)
+ }
+ // last Active time is set only when receiving chunks
+ self.lastActive = time.Now()
+ glog.V(logger.Detail).Infof("incoming store request: %s", req.String())
+ // swap accounting is done within forwarding
+ self.storage.HandleStoreRequestMsg(&req, &peer{bzz: self})
+
+ case retrieveRequestMsg:
+ // retrieve Requests are dispatched to netStore
+ var req retrieveRequestMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ req.from = &peer{bzz: self}
+ // if request is lookup and not to be delivered
+ if req.isLookup() {
+ glog.V(logger.Detail).Infof("self lookup for %v: responding with peers only...", req.from)
+ } else if req.Key == nil {
+ return self.protoError(ErrDecode, "protocol handler: req.Key == nil || req.Timeout == nil")
+ } else {
+ // swap accounting is done within netStore
+ self.storage.HandleRetrieveRequestMsg(&req, &peer{bzz: self})
+ }
+ // direct response with peers, TODO: sort this out
+ self.hive.peers(&req)
+
+ case peersMsg:
+ // response to lookups and immediate response to retrieve requests
+ // dispatches new peer data to the hive that adds them to KADDB
+ var req peersMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ req.from = &peer{bzz: self}
+ glog.V(logger.Detail).Infof("<- peer addresses: %v", req)
+ self.hive.HandlePeersMsg(&req, &peer{bzz: self})
+
+ case syncRequestMsg:
+ var req syncRequestMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ glog.V(logger.Debug).Infof("<- sync request: %v", req)
+ self.lastActive = time.Now()
+ self.sync(req.SyncState)
+
+ case unsyncedKeysMsg:
+ // coming from parent node offering
+ var req unsyncedKeysMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ glog.V(logger.Debug).Infof("<- unsynced keys : %s", req.String())
+ err := self.storage.HandleUnsyncedKeysMsg(&req, &peer{bzz: self})
+ self.lastActive = time.Now()
+ if err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+
+ case deliveryRequestMsg:
+ // response to syncKeysMsg hashes filtered not existing in db
+ // also relays the last synced state to the source
+ var req deliveryRequestMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<-msg %v: %v", msg, err)
+ }
+ glog.V(logger.Debug).Infof("<- delivery request: %s", req.String())
+ err := self.storage.HandleDeliveryRequestMsg(&req, &peer{bzz: self})
+ self.lastActive = time.Now()
+ if err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+
+ case paymentMsg:
+ // swap protocol message for payment, Units paid for, Cheque paid with
+ if self.swapEnabled {
+ var req paymentMsgData
+ if err := msg.Decode(&req); err != nil {
+ return self.protoError(ErrDecode, "<- %v: %v", msg, err)
+ }
+ glog.V(logger.Debug).Infof("<- payment: %s", req.String())
+ self.swap.Receive(int(req.Units), req.Promise)
+ }
+
+ default:
+ // no other message is allowed
+ return self.protoError(ErrInvalidMsgCode, "%v", msg.Code)
+ }
+ return nil
+}
+
+func (self *bzz) handleStatus() (err error) {
+
+ handshake := &statusMsgData{
+ Version: uint64(Version),
+ ID: "honey",
+ Addr: self.selfAddr(),
+ NetworkId: uint64(NetworkId),
+ Swap: &bzzswap.SwapProfile{
+ Profile: self.swapParams.Profile,
+ PayProfile: self.swapParams.PayProfile,
+ },
+ }
+
+ err = p2p.Send(self.rw, statusMsg, handshake)
+ if err != nil {
+ self.protoError(ErrNoStatusMsg, err.Error())
+ }
+
+ // read and handle remote status
+ var msg p2p.Msg
+ msg, err = self.rw.ReadMsg()
+ if err != nil {
+ return err
+ }
+
+ if msg.Code != statusMsg {
+ self.protoError(ErrNoStatusMsg, "first msg has code %x (!= %x)", msg.Code, statusMsg)
+ }
+
+ if msg.Size > ProtocolMaxMsgSize {
+ return self.protoError(ErrMsgTooLarge, "%v > %v", msg.Size, ProtocolMaxMsgSize)
+ }
+
+ var status statusMsgData
+ if err := msg.Decode(&status); err != nil {
+ return self.protoError(ErrDecode, " %v: %v", msg, err)
+ }
+
+ if status.NetworkId != NetworkId {
+ return self.protoError(ErrNetworkIdMismatch, "%d (!= %d)", status.NetworkId, NetworkId)
+ }
+
+ if Version != status.Version {
+ return self.protoError(ErrVersionMismatch, "%d (!= %d)", status.Version, Version)
+ }
+
+ self.remoteAddr = self.peerAddr(status.Addr)
+ glog.V(logger.Detail).Infof("self: advertised IP: %v, peer advertised: %v, local address: %v\npeer: advertised IP: %v, remote address: %v\n", self.selfAddr(), self.remoteAddr, self.peer.LocalAddr(), status.Addr.IP, self.peer.RemoteAddr())
+
+ if self.swapEnabled {
+ // set remote profile for accounting
+ self.swap, err = bzzswap.NewSwap(self.swapParams, status.Swap, self.backend, self)
+ if err != nil {
+ return self.protoError(ErrSwap, "%v", err)
+ }
+ }
+
+ glog.V(logger.Info).Infof("Peer %08x is capable (%d/%d)", self.remoteAddr.Addr[:4], status.Version, status.NetworkId)
+ err = self.hive.addPeer(&peer{bzz: self})
+ if err != nil {
+ return self.protoError(ErrUnwanted, "%v", err)
+ }
+
+ // hive sets syncstate so sync should start after node added
+ glog.V(logger.Info).Infof("syncronisation request sent with %v", self.syncState)
+ self.syncRequest()
+
+ return nil
+}
+
+func (self *bzz) sync(state *syncState) error {
+ // syncer setup
+ if self.syncer != nil {
+ return self.protoError(ErrSync, "sync request can only be sent once")
+ }
+
+ cnt := self.dbAccess.counter()
+ remoteaddr := self.remoteAddr.Addr
+ start, stop := self.hive.kad.KeyRange(remoteaddr)
+
+ // an explicitly received nil syncstate disables syncronisation
+ if state == nil {
+ self.syncEnabled = false
+ glog.V(logger.Warn).Infof("syncronisation disabled for peer %v", self)
+ state = &syncState{DbSyncState: &storage.DbSyncState{}, Synced: true}
+ } else {
+ state.synced = make(chan bool)
+ state.SessionAt = cnt
+ if storage.IsZeroKey(state.Stop) && state.Synced {
+ state.Start = storage.Key(start[:])
+ state.Stop = storage.Key(stop[:])
+ }
+ glog.V(logger.Debug).Infof("syncronisation requested by peer %v at state %v", self, state)
+ }
+ var err error
+ self.syncer, err = newSyncer(
+ self.requestDb,
+ storage.Key(remoteaddr[:]),
+ self.dbAccess,
+ self.unsyncedKeys, self.store,
+ self.syncParams, state, func() bool { return self.syncEnabled },
+ )
+ if err != nil {
+ return self.protoError(ErrSync, "%v", err)
+ }
+ glog.V(logger.Detail).Infof("syncer set for peer %v", self)
+ return nil
+}
+
+func (self *bzz) String() string {
+ return self.remoteAddr.String()
+}
+
+// repair reported address if IP missing
+func (self *bzz) peerAddr(base *peerAddr) *peerAddr {
+ if base.IP.IsUnspecified() {
+ host, _, _ := net.SplitHostPort(self.peer.RemoteAddr().String())
+ base.IP = net.ParseIP(host)
+ }
+ return base
+}
+
+// returns self advertised node connection info (listening address w enodes)
+// IP will get repaired on the other end if missing
+// or resolved via ID by discovery at dialout
+func (self *bzz) selfAddr() *peerAddr {
+ id := self.hive.id
+ host, port, _ := net.SplitHostPort(self.hive.listenAddr())
+ intport, _ := strconv.Atoi(port)
+ addr := &peerAddr{
+ Addr: self.hive.addr,
+ ID: id[:],
+ IP: net.ParseIP(host),
+ Port: uint16(intport),
+ }
+ return addr
+}
+
+// outgoing messages
+// send retrieveRequestMsg
+func (self *bzz) retrieve(req *retrieveRequestMsgData) error {
+ return self.send(retrieveRequestMsg, req)
+}
+
+// send storeRequestMsg
+func (self *bzz) store(req *storeRequestMsgData) error {
+ return self.send(storeRequestMsg, req)
+}
+
+func (self *bzz) syncRequest() error {
+ req := &syncRequestMsgData{}
+ if self.hive.syncEnabled {
+ glog.V(logger.Debug).Infof("syncronisation request to peer %v at state %v", self, self.syncState)
+ req.SyncState = self.syncState
+ }
+ if self.syncState == nil {
+ glog.V(logger.Warn).Infof("syncronisation disabled for peer %v at state %v", self, self.syncState)
+ }
+ return self.send(syncRequestMsg, req)
+}
+
+// queue storeRequestMsg in request db
+func (self *bzz) deliveryRequest(reqs []*syncRequest) error {
+ req := &deliveryRequestMsgData{
+ Deliver: reqs,
+ }
+ return self.send(deliveryRequestMsg, req)
+}
+
+// batch of syncRequests to send off
+func (self *bzz) unsyncedKeys(reqs []*syncRequest, state *syncState) error {
+ req := &unsyncedKeysMsgData{
+ Unsynced: reqs,
+ State: state,
+ }
+ return self.send(unsyncedKeysMsg, req)
+}
+
+// send paymentMsg
+func (self *bzz) Pay(units int, promise swap.Promise) {
+ req := &paymentMsgData{uint(units), promise.(*chequebook.Cheque)}
+ self.payment(req)
+}
+
+// send paymentMsg
+func (self *bzz) payment(req *paymentMsgData) error {
+ return self.send(paymentMsg, req)
+}
+
+// sends peersMsg
+func (self *bzz) peers(req *peersMsgData) error {
+ return self.send(peersMsg, req)
+}
+
+func (self *bzz) protoError(code int, format string, params ...interface{}) (err *errs.Error) {
+ err = self.errors.New(code, format, params...)
+ err.Log(glog.V(logger.Info))
+ return
+}
+
+func (self *bzz) protoErrorDisconnect(err *errs.Error) {
+ err.Log(glog.V(logger.Info))
+ if err.Fatal() {
+ self.peer.Disconnect(p2p.DiscSubprotocolError)
+ }
+}
+
+func (self *bzz) send(msg uint64, data interface{}) error {
+ if self.hive.blockWrite {
+ return fmt.Errorf("network write blocked")
+ }
+ glog.V(logger.Detail).Infof("-> %v: %v (%T) to %v", msg, data, data, self)
+ err := p2p.Send(self.rw, msg, data)
+ if err != nil {
+ self.Drop()
+ }
+ return err
+}
diff --git a/release/generator.go b/swarm/network/protocol_test.go
index 1553e0612..91dea8cac 100644
--- a/release/generator.go
+++ b/swarm/network/protocol_test.go
@@ -14,6 +14,4 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-//go:generate abigen --sol ./contract.sol --pkg release --out ./contract.go
-
-package release
+package network
diff --git a/swarm/network/syncdb.go b/swarm/network/syncdb.go
new file mode 100644
index 000000000..cef32610f
--- /dev/null
+++ b/swarm/network/syncdb.go
@@ -0,0 +1,390 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "encoding/binary"
+ "fmt"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+ "github.com/syndtr/goleveldb/leveldb"
+ "github.com/syndtr/goleveldb/leveldb/iterator"
+)
+
+const counterKeyPrefix = 0x01
+
+/*
+syncDb is a queueing service for outgoing deliveries.
+One instance per priority queue for each peer
+
+a syncDb instance maintains an in-memory buffer (of capacity bufferSize)
+once its in-memory buffer is full it switches to persisting in db
+and dbRead iterator iterates through the items keeping their order
+once the db read catches up (there is no more items in the db) then
+it switches back to in-memory buffer.
+
+when syncdb is stopped all items in the buffer are saved to the db
+*/
+type syncDb struct {
+ start []byte // this syncdb starting index in requestdb
+ key storage.Key // remote peers address key
+ counterKey []byte // db key to persist counter
+ priority uint // priotity High|Medium|Low
+ buffer chan interface{} // incoming request channel
+ db *storage.LDBDatabase // underlying db (TODO should be interface)
+ done chan bool // chan to signal goroutines finished quitting
+ quit chan bool // chan to signal quitting to goroutines
+ total, dbTotal int // counts for one session
+ batch chan chan int // channel for batch requests
+ dbBatchSize uint // number of items before batch is saved
+}
+
+// constructor needs a shared request db (leveldb)
+// priority is used in the index key
+// uses a buffer and a leveldb for persistent storage
+// bufferSize, dbBatchSize are config parameters
+func newSyncDb(db *storage.LDBDatabase, key storage.Key, priority uint, bufferSize, dbBatchSize uint, deliver func(interface{}, chan bool) bool) *syncDb {
+ start := make([]byte, 42)
+ start[1] = byte(priorities - priority)
+ copy(start[2:34], key)
+
+ counterKey := make([]byte, 34)
+ counterKey[0] = counterKeyPrefix
+ copy(counterKey[1:], start[1:34])
+
+ syncdb := &syncDb{
+ start: start,
+ key: key,
+ counterKey: counterKey,
+ priority: priority,
+ buffer: make(chan interface{}, bufferSize),
+ db: db,
+ done: make(chan bool),
+ quit: make(chan bool),
+ batch: make(chan chan int),
+ dbBatchSize: dbBatchSize,
+ }
+ glog.V(logger.Detail).Infof("syncDb[peer: %v, priority: %v] - initialised", key.Log(), priority)
+
+ // starts the main forever loop reading from buffer
+ go syncdb.bufferRead(deliver)
+ return syncdb
+}
+
+/*
+bufferRead is a forever iterator loop that takes care of delivering
+outgoing store requests reads from incoming buffer
+
+its argument is the deliver function taking the item as first argument
+and a quit channel as second.
+Closing of this channel is supposed to abort all waiting for delivery
+(typically network write)
+
+The iteration switches between 2 modes,
+* buffer mode reads the in-memory buffer and delivers the items directly
+* db mode reads from the buffer and writes to the db, parallelly another
+routine is started that reads from the db and delivers items
+
+If there is buffer contention in buffer mode (slow network, high upload volume)
+syncdb switches to db mode and starts dbRead
+Once db backlog is delivered, it reverts back to in-memory buffer
+
+It is automatically started when syncdb is initialised.
+
+It saves the buffer to db upon receiving quit signal. syncDb#stop()
+*/
+func (self *syncDb) bufferRead(deliver func(interface{}, chan bool) bool) {
+ var buffer, db chan interface{} // channels representing the two read modes
+ var more bool
+ var req interface{}
+ var entry *syncDbEntry
+ var inBatch, inDb int
+ batch := new(leveldb.Batch)
+ var dbSize chan int
+ quit := self.quit
+ counterValue := make([]byte, 8)
+
+ // counter is used for keeping the items in order, persisted to db
+ // start counter where db was at, 0 if not found
+ data, err := self.db.Get(self.counterKey)
+ var counter uint64
+ if err == nil {
+ counter = binary.BigEndian.Uint64(data)
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] - counter read from db at %v", self.key.Log(), self.priority, counter)
+ } else {
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] - counter starts at %v", self.key.Log(), self.priority, counter)
+ }
+
+LOOP:
+ for {
+ // waiting for item next in the buffer, or quit signal or batch request
+ select {
+ // buffer only closes when writing to db
+ case req = <-buffer:
+ // deliver request : this is blocking on network write so
+ // it is passed the quit channel as argument, so that it returns
+ // if syncdb is stopped. In this case we need to save the item to the db
+ more = deliver(req, self.quit)
+ if !more {
+ glog.V(logger.Debug).Infof("syncDb[%v/%v] quit: switching to db. session tally (db/total): %v/%v", self.key.Log(), self.priority, self.dbTotal, self.total)
+ // received quit signal, save request currently waiting delivery
+ // by switching to db mode and closing the buffer
+ buffer = nil
+ db = self.buffer
+ close(db)
+ quit = nil // needs to block the quit case in select
+ break // break from select, this item will be written to the db
+ }
+ self.total++
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] deliver (db/total): %v/%v", self.key.Log(), self.priority, self.dbTotal, self.total)
+ // by the time deliver returns, there were new writes to the buffer
+ // if buffer contention is detected, switch to db mode which drains
+ // the buffer so no process will block on pushing store requests
+ if len(buffer) == cap(buffer) {
+ glog.V(logger.Debug).Infof("syncDb[%v/%v] buffer full %v: switching to db. session tally (db/total): %v/%v", self.key.Log(), self.priority, cap(buffer), self.dbTotal, self.total)
+ buffer = nil
+ db = self.buffer
+ }
+ continue LOOP
+
+ // incoming entry to put into db
+ case req, more = <-db:
+ if !more {
+ // only if quit is called, saved all the buffer
+ binary.BigEndian.PutUint64(counterValue, counter)
+ batch.Put(self.counterKey, counterValue) // persist counter in batch
+ self.writeSyncBatch(batch) // save batch
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] quitting: save current batch to db", self.key.Log(), self.priority)
+ break LOOP
+ }
+ self.dbTotal++
+ self.total++
+ // otherwise break after select
+ case dbSize = <-self.batch:
+ // explicit request for batch
+ if inBatch == 0 && quit != nil {
+ // there was no writes since the last batch so db depleted
+ // switch to buffer mode
+ glog.V(logger.Debug).Infof("syncDb[%v/%v] empty db: switching to buffer", self.key.Log(), self.priority)
+ db = nil
+ buffer = self.buffer
+ dbSize <- 0 // indicates to 'caller' that batch has been written
+ inDb = 0
+ continue LOOP
+ }
+ binary.BigEndian.PutUint64(counterValue, counter)
+ batch.Put(self.counterKey, counterValue)
+ glog.V(logger.Debug).Infof("syncDb[%v/%v] write batch %v/%v - %x - %x", self.key.Log(), self.priority, inBatch, counter, self.counterKey, counterValue)
+ batch = self.writeSyncBatch(batch)
+ dbSize <- inBatch // indicates to 'caller' that batch has been written
+ inBatch = 0
+ continue LOOP
+
+ // closing syncDb#quit channel is used to signal to all goroutines to quit
+ case <-quit:
+ // need to save backlog, so switch to db mode
+ db = self.buffer
+ buffer = nil
+ quit = nil
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] quitting: save buffer to db", self.key.Log(), self.priority)
+ close(db)
+ continue LOOP
+ }
+
+ // only get here if we put req into db
+ entry, err = self.newSyncDbEntry(req, counter)
+ if err != nil {
+ glog.V(logger.Warn).Infof("syncDb[%v/%v] saving request %v (#%v/%v) failed: %v", self.key.Log(), self.priority, req, inBatch, inDb, err)
+ continue LOOP
+ }
+ batch.Put(entry.key, entry.val)
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] to batch %v '%v' (#%v/%v/%v)", self.key.Log(), self.priority, req, entry, inBatch, inDb, counter)
+ // if just switched to db mode and not quitting, then launch dbRead
+ // in a parallel go routine to send deliveries from db
+ if inDb == 0 && quit != nil {
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] start dbRead")
+ go self.dbRead(true, counter, deliver)
+ }
+ inDb++
+ inBatch++
+ counter++
+ // need to save the batch if it gets too large (== dbBatchSize)
+ if inBatch%int(self.dbBatchSize) == 0 {
+ batch = self.writeSyncBatch(batch)
+ }
+ }
+ glog.V(logger.Info).Infof("syncDb[%v:%v]: saved %v keys (saved counter at %v)", self.key.Log(), self.priority, inBatch, counter)
+ close(self.done)
+}
+
+// writes the batch to the db and returns a new batch object
+func (self *syncDb) writeSyncBatch(batch *leveldb.Batch) *leveldb.Batch {
+ err := self.db.Write(batch)
+ if err != nil {
+ glog.V(logger.Warn).Infof("syncDb[%v/%v] saving batch to db failed: %v", self.key.Log(), self.priority, err)
+ return batch
+ }
+ return new(leveldb.Batch)
+}
+
+// abstract type for db entries (TODO could be a feature of Receipts)
+type syncDbEntry struct {
+ key, val []byte
+}
+
+func (self syncDbEntry) String() string {
+ return fmt.Sprintf("key: %x, value: %x", self.key, self.val)
+}
+
+/*
+ dbRead is iterating over store requests to be sent over to the peer
+ this is mainly to prevent crashes due to network output buffer contention (???)
+ as well as to make syncronisation resilient to disconnects
+ the messages are supposed to be sent in the p2p priority queue.
+
+ the request DB is shared between peers, but domains for each syncdb
+ are disjoint. dbkeys (42 bytes) are structured:
+ * 0: 0x00 (0x01 reserved for counter key)
+ * 1: priorities - priority (so that high priority can be replayed first)
+ * 2-33: peers address
+ * 34-41: syncdb counter to preserve order (this field is missing for the counter key)
+
+ values (40 bytes) are:
+ * 0-31: key
+ * 32-39: request id
+
+dbRead needs a boolean to indicate if on first round all the historical
+record is synced. Second argument to indicate current db counter
+The third is the function to apply
+*/
+func (self *syncDb) dbRead(useBatches bool, counter uint64, fun func(interface{}, chan bool) bool) {
+ key := make([]byte, 42)
+ copy(key, self.start)
+ binary.BigEndian.PutUint64(key[34:], counter)
+ var batches, n, cnt, total int
+ var more bool
+ var entry *syncDbEntry
+ var it iterator.Iterator
+ var del *leveldb.Batch
+ batchSizes := make(chan int)
+
+ for {
+ // if useBatches is false, cnt is not set
+ if useBatches {
+ // this could be called before all cnt items sent out
+ // so that loop is not blocking while delivering
+ // only relevant if cnt is large
+ select {
+ case self.batch <- batchSizes:
+ case <-self.quit:
+ return
+ }
+ // wait for the write to finish and get the item count in the next batch
+ cnt = <-batchSizes
+ batches++
+ if cnt == 0 {
+ // empty
+ return
+ }
+ }
+ it = self.db.NewIterator()
+ it.Seek(key)
+ if !it.Valid() {
+ copy(key, self.start)
+ useBatches = true
+ continue
+ }
+ del = new(leveldb.Batch)
+ glog.V(logger.Detail).Infof("syncDb[%v/%v]: new iterator: %x (batch %v, count %v)", self.key.Log(), self.priority, key, batches, cnt)
+
+ for n = 0; !useBatches || n < cnt; it.Next() {
+ copy(key, it.Key())
+ if len(key) == 0 || key[0] != 0 {
+ copy(key, self.start)
+ useBatches = true
+ break
+ }
+ val := make([]byte, 40)
+ copy(val, it.Value())
+ entry = &syncDbEntry{key, val}
+ // glog.V(logger.Detail).Infof("syncDb[%v/%v] - %v, batches: %v, total: %v, session total from db: %v/%v", self.key.Log(), self.priority, self.key.Log(), batches, total, self.dbTotal, self.total)
+ more = fun(entry, self.quit)
+ if !more {
+ // quit received when waiting to deliver entry, the entry will not be deleted
+ glog.V(logger.Detail).Infof("syncDb[%v/%v] batch %v quit after %v/%v items", self.key.Log(), self.priority, batches, n, cnt)
+ break
+ }
+ // since subsequent batches of the same db session are indexed incrementally
+ // deleting earlier batches can be delayed and parallelised
+ // this could be batch delete when db is idle (but added complexity esp when quitting)
+ del.Delete(key)
+ n++
+ total++
+ }
+ glog.V(logger.Debug).Infof("syncDb[%v/%v] - db session closed, batches: %v, total: %v, session total from db: %v/%v", self.key.Log(), self.priority, batches, total, self.dbTotal, self.total)
+ self.db.Write(del) // this could be async called only when db is idle
+ it.Release()
+ }
+}
+
+//
+func (self *syncDb) stop() {
+ close(self.quit)
+ <-self.done
+}
+
+// calculate a dbkey for the request, for the db to work
+// see syncdb for db key structure
+// polimorphic: accepted types, see syncer#addRequest
+func (self *syncDb) newSyncDbEntry(req interface{}, counter uint64) (entry *syncDbEntry, err error) {
+ var key storage.Key
+ var chunk *storage.Chunk
+ var id uint64
+ var ok bool
+ var sreq *storeRequestMsgData
+
+ if key, ok = req.(storage.Key); ok {
+ id = generateId()
+ } else if chunk, ok = req.(*storage.Chunk); ok {
+ key = chunk.Key
+ id = generateId()
+ } else if sreq, ok = req.(*storeRequestMsgData); ok {
+ key = sreq.Key
+ id = sreq.Id
+ } else if entry, ok = req.(*syncDbEntry); !ok {
+ return nil, fmt.Errorf("type not allowed: %v (%T)", req, req)
+ }
+
+ // order by peer > priority > seqid
+ // value is request id if exists
+ if entry == nil {
+ dbkey := make([]byte, 42)
+ dbval := make([]byte, 40)
+
+ // encode key
+ copy(dbkey[:], self.start[:34]) // db peer
+ binary.BigEndian.PutUint64(dbkey[34:], counter)
+ // encode value
+ copy(dbval, key[:])
+ binary.BigEndian.PutUint64(dbval[32:], id)
+
+ entry = &syncDbEntry{dbkey, dbval}
+ }
+ return
+}
diff --git a/swarm/network/syncdb_test.go b/swarm/network/syncdb_test.go
new file mode 100644
index 000000000..e46d32a2e
--- /dev/null
+++ b/swarm/network/syncdb_test.go
@@ -0,0 +1,221 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "bytes"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+func init() {
+ glog.SetV(0)
+ glog.SetToStderr(true)
+}
+
+type testSyncDb struct {
+ *syncDb
+ c int
+ t *testing.T
+ fromDb chan bool
+ delivered [][]byte
+ sent []int
+ dbdir string
+ at int
+}
+
+func newTestSyncDb(priority, bufferSize, batchSize int, dbdir string, t *testing.T) *testSyncDb {
+ if len(dbdir) == 0 {
+ tmp, err := ioutil.TempDir(os.TempDir(), "syncdb-test")
+ if err != nil {
+ t.Fatalf("unable to create temporary direcory %v: %v", tmp, err)
+ }
+ dbdir = tmp
+ }
+ db, err := storage.NewLDBDatabase(filepath.Join(dbdir, "requestdb"))
+ if err != nil {
+ t.Fatalf("unable to create db: %v", err)
+ }
+ self := &testSyncDb{
+ fromDb: make(chan bool),
+ dbdir: dbdir,
+ t: t,
+ }
+ h := crypto.Sha3Hash([]byte{0})
+ key := storage.Key(h[:])
+ self.syncDb = newSyncDb(db, key, uint(priority), uint(bufferSize), uint(batchSize), self.deliver)
+ // kick off db iterator right away, if no items on db this will allow
+ // reading from the buffer
+ return self
+
+}
+
+func (self *testSyncDb) close() {
+ self.db.Close()
+ os.RemoveAll(self.dbdir)
+}
+
+func (self *testSyncDb) push(n int) {
+ for i := 0; i < n; i++ {
+ self.buffer <- storage.Key(crypto.Sha3([]byte{byte(self.c)}))
+ self.sent = append(self.sent, self.c)
+ self.c++
+ }
+ glog.V(logger.Debug).Infof("pushed %v requests", n)
+}
+
+func (self *testSyncDb) draindb() {
+ it := self.db.NewIterator()
+ defer it.Release()
+ for {
+ it.Seek(self.start)
+ if !it.Valid() {
+ return
+ }
+ k := it.Key()
+ if len(k) == 0 || k[0] == 1 {
+ return
+ }
+ it.Release()
+ it = self.db.NewIterator()
+ }
+}
+
+func (self *testSyncDb) deliver(req interface{}, quit chan bool) bool {
+ _, db := req.(*syncDbEntry)
+ key, _, _, _, err := parseRequest(req)
+ if err != nil {
+ self.t.Fatalf("unexpected error of key %v: %v", key, err)
+ }
+ self.delivered = append(self.delivered, key)
+ select {
+ case self.fromDb <- db:
+ return true
+ case <-quit:
+ return false
+ }
+}
+
+func (self *testSyncDb) expect(n int, db bool) {
+ var ok bool
+ // for n items
+ for i := 0; i < n; i++ {
+ ok = <-self.fromDb
+ if self.at+1 > len(self.delivered) {
+ self.t.Fatalf("expected %v, got %v", self.at+1, len(self.delivered))
+ }
+ if len(self.sent) > self.at && !bytes.Equal(crypto.Sha3([]byte{byte(self.sent[self.at])}), self.delivered[self.at]) {
+ self.t.Fatalf("expected delivery %v/%v/%v to be hash of %v, from db: %v = %v", i, n, self.at, self.sent[self.at], ok, db)
+ glog.V(logger.Debug).Infof("%v/%v/%v to be hash of %v, from db: %v = %v", i, n, self.at, self.sent[self.at], ok, db)
+ }
+ if !ok && db {
+ self.t.Fatalf("expected delivery %v/%v/%v from db", i, n, self.at)
+ }
+ if ok && !db {
+ self.t.Fatalf("expected delivery %v/%v/%v from cache", i, n, self.at)
+ }
+ self.at++
+ }
+}
+
+func TestSyncDb(t *testing.T) {
+ priority := High
+ bufferSize := 5
+ batchSize := 2 * bufferSize
+ s := newTestSyncDb(priority, bufferSize, batchSize, "", t)
+ defer s.close()
+ defer s.stop()
+ s.dbRead(false, 0, s.deliver)
+ s.draindb()
+
+ s.push(4)
+ s.expect(1, false)
+ // 3 in buffer
+ time.Sleep(100 * time.Millisecond)
+ s.push(3)
+ // push over limit
+ s.expect(1, false)
+ // one popped from the buffer, then contention detected
+ s.expect(4, true)
+ s.push(4)
+ s.expect(5, true)
+ // depleted db, switch back to buffer
+ s.draindb()
+ s.push(5)
+ s.expect(4, false)
+ s.push(3)
+ s.expect(4, false)
+ // buffer depleted
+ time.Sleep(100 * time.Millisecond)
+ s.push(6)
+ s.expect(1, false)
+ // push into buffer full, switch to db
+ s.expect(5, true)
+ s.draindb()
+ s.push(1)
+ s.expect(1, false)
+}
+
+func TestSaveSyncDb(t *testing.T) {
+ amount := 30
+ priority := High
+ bufferSize := amount
+ batchSize := 10
+ s := newTestSyncDb(priority, bufferSize, batchSize, "", t)
+ go s.dbRead(false, 0, s.deliver)
+ s.push(amount)
+ s.stop()
+ s.db.Close()
+
+ s = newTestSyncDb(priority, bufferSize, batchSize, s.dbdir, t)
+ go s.dbRead(false, 0, s.deliver)
+ s.expect(amount, true)
+ for i, key := range s.delivered {
+ expKey := crypto.Sha3([]byte{byte(i)})
+ if !bytes.Equal(key, expKey) {
+ t.Fatalf("delivery %v expected to be key %x, got %x", i, expKey, key)
+ }
+ }
+ s.push(amount)
+ s.expect(amount, false)
+ for i := amount; i < 2*amount; i++ {
+ key := s.delivered[i]
+ expKey := crypto.Sha3([]byte{byte(i - amount)})
+ if !bytes.Equal(key, expKey) {
+ t.Fatalf("delivery %v expected to be key %x, got %x", i, expKey, key)
+ }
+ }
+ s.stop()
+ s.db.Close()
+
+ s = newTestSyncDb(priority, bufferSize, batchSize, s.dbdir, t)
+ defer s.close()
+ defer s.stop()
+
+ go s.dbRead(false, 0, s.deliver)
+ s.push(1)
+ s.expect(1, false)
+
+}
diff --git a/swarm/network/syncer.go b/swarm/network/syncer.go
new file mode 100644
index 000000000..e871666bd
--- /dev/null
+++ b/swarm/network/syncer.go
@@ -0,0 +1,778 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package network
+
+import (
+ "encoding/binary"
+ "encoding/json"
+ "fmt"
+ "path/filepath"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+// syncer parameters (global, not peer specific) default values
+const (
+ requestDbBatchSize = 512 // size of batch before written to request db
+ keyBufferSize = 1024 // size of buffer for unsynced keys
+ syncBatchSize = 128 // maximum batchsize for outgoing requests
+ syncBufferSize = 128 // size of buffer for delivery requests
+ syncCacheSize = 1024 // cache capacity to store request queue in memory
+)
+
+// priorities
+const (
+ Low = iota // 0
+ Medium // 1
+ High // 2
+ priorities // 3 number of priority levels
+)
+
+// request types
+const (
+ DeliverReq = iota // 0
+ PushReq // 1
+ PropagateReq // 2
+ HistoryReq // 3
+ BacklogReq // 4
+)
+
+// json serialisable struct to record the syncronisation state between 2 peers
+type syncState struct {
+ *storage.DbSyncState // embeds the following 4 fields:
+ // Start Key // lower limit of address space
+ // Stop Key // upper limit of address space
+ // First uint64 // counter taken from last sync state
+ // Last uint64 // counter of remote peer dbStore at the time of last connection
+ SessionAt uint64 // set at the time of connection
+ LastSeenAt uint64 // set at the time of connection
+ Latest storage.Key // cursor of dbstore when last (continuously set by syncer)
+ Synced bool // true iff Sync is done up to the last disconnect
+ synced chan bool // signal that sync stage finished
+}
+
+// wrapper of db-s to provide mockable custom local chunk store access to syncer
+type DbAccess struct {
+ db *storage.DbStore
+ loc *storage.LocalStore
+}
+
+func NewDbAccess(loc *storage.LocalStore) *DbAccess {
+ return &DbAccess{loc.DbStore.(*storage.DbStore), loc}
+}
+
+// to obtain the chunks from key or request db entry only
+func (self *DbAccess) get(key storage.Key) (*storage.Chunk, error) {
+ return self.loc.Get(key)
+}
+
+// current storage counter of chunk db
+func (self *DbAccess) counter() uint64 {
+ return self.db.Counter()
+}
+
+// implemented by dbStoreSyncIterator
+type keyIterator interface {
+ Next() storage.Key
+}
+
+// generator function for iteration by address range and storage counter
+func (self *DbAccess) iterator(s *syncState) keyIterator {
+ it, err := self.db.NewSyncIterator(*(s.DbSyncState))
+ if err != nil {
+ return nil
+ }
+ return keyIterator(it)
+}
+
+func (self syncState) String() string {
+ if self.Synced {
+ return fmt.Sprintf(
+ "session started at: %v, last seen at: %v, latest key: %v",
+ self.SessionAt, self.LastSeenAt,
+ self.Latest.Log(),
+ )
+ } else {
+ return fmt.Sprintf(
+ "address: %v-%v, index: %v-%v, session started at: %v, last seen at: %v, latest key: %v",
+ self.Start.Log(), self.Stop.Log(),
+ self.First, self.Last,
+ self.SessionAt, self.LastSeenAt,
+ self.Latest.Log(),
+ )
+ }
+}
+
+// syncer parameters (global, not peer specific)
+type SyncParams struct {
+ RequestDbPath string // path for request db (leveldb)
+ RequestDbBatchSize uint // nuber of items before batch is saved to requestdb
+ KeyBufferSize uint // size of key buffer
+ SyncBatchSize uint // maximum batchsize for outgoing requests
+ SyncBufferSize uint // size of buffer for
+ SyncCacheSize uint // cache capacity to store request queue in memory
+ SyncPriorities []uint // list of priority levels for req types 0-3
+ SyncModes []bool // list of sync modes for for req types 0-3
+}
+
+// constructor with default values
+func NewSyncParams(bzzdir string) *SyncParams {
+ return &SyncParams{
+ RequestDbPath: filepath.Join(bzzdir, "requests"),
+ RequestDbBatchSize: requestDbBatchSize,
+ KeyBufferSize: keyBufferSize,
+ SyncBufferSize: syncBufferSize,
+ SyncBatchSize: syncBatchSize,
+ SyncCacheSize: syncCacheSize,
+ SyncPriorities: []uint{High, Medium, Medium, Low, Low},
+ SyncModes: []bool{true, true, true, true, false},
+ }
+}
+
+// syncer is the agent that manages content distribution/storage replication/chunk storeRequest forwarding
+type syncer struct {
+ *SyncParams // sync parameters
+ syncF func() bool // if syncing is needed
+ key storage.Key // remote peers address key
+ state *syncState // sync state for our dbStore
+ syncStates chan *syncState // different stages of sync
+ deliveryRequest chan bool // one of two triggers needed to send unsyncedKeys
+ newUnsyncedKeys chan bool // one of two triggers needed to send unsynced keys
+ quit chan bool // signal to quit loops
+
+ // DB related fields
+ dbAccess *DbAccess // access to dbStore
+ db *storage.LDBDatabase // delivery msg db
+
+ // native fields
+ queues [priorities]*syncDb // in-memory cache / queues for sync reqs
+ keys [priorities]chan interface{} // buffer for unsynced keys
+ deliveries [priorities]chan *storeRequestMsgData // delivery
+
+ // bzz protocol instance outgoing message callbacks (mockable for testing)
+ unsyncedKeys func([]*syncRequest, *syncState) error // send unsyncedKeysMsg
+ store func(*storeRequestMsgData) error // send storeRequestMsg
+}
+
+// a syncer instance is linked to each peer connection
+// constructor is called from protocol after successful handshake
+// the returned instance is attached to the peer and can be called
+// by the forwarder
+func newSyncer(
+ db *storage.LDBDatabase, remotekey storage.Key,
+ dbAccess *DbAccess,
+ unsyncedKeys func([]*syncRequest, *syncState) error,
+ store func(*storeRequestMsgData) error,
+ params *SyncParams,
+ state *syncState,
+ syncF func() bool,
+) (*syncer, error) {
+
+ syncBufferSize := params.SyncBufferSize
+ keyBufferSize := params.KeyBufferSize
+ dbBatchSize := params.RequestDbBatchSize
+
+ self := &syncer{
+ syncF: syncF,
+ key: remotekey,
+ dbAccess: dbAccess,
+ syncStates: make(chan *syncState, 20),
+ deliveryRequest: make(chan bool, 1),
+ newUnsyncedKeys: make(chan bool, 1),
+ SyncParams: params,
+ state: state,
+ quit: make(chan bool),
+ unsyncedKeys: unsyncedKeys,
+ store: store,
+ }
+
+ // initialising
+ for i := 0; i < priorities; i++ {
+ self.keys[i] = make(chan interface{}, keyBufferSize)
+ self.deliveries[i] = make(chan *storeRequestMsgData)
+ // initialise a syncdb instance for each priority queue
+ self.queues[i] = newSyncDb(db, remotekey, uint(i), syncBufferSize, dbBatchSize, self.deliver(uint(i)))
+ }
+ glog.V(logger.Info).Infof("syncer started: %v", state)
+ // launch chunk delivery service
+ go self.syncDeliveries()
+ // launch sync task manager
+ if self.syncF() {
+ go self.sync()
+ }
+ // process unsynced keys to broadcast
+ go self.syncUnsyncedKeys()
+
+ return self, nil
+}
+
+// metadata serialisation
+func encodeSync(state *syncState) (*json.RawMessage, error) {
+ data, err := json.MarshalIndent(state, "", " ")
+ if err != nil {
+ return nil, err
+ }
+ meta := json.RawMessage(data)
+ return &meta, nil
+}
+
+func decodeSync(meta *json.RawMessage) (*syncState, error) {
+ if meta == nil {
+ return nil, fmt.Errorf("unable to deserialise sync state from <nil>")
+ }
+ data := []byte(*(meta))
+ if len(data) == 0 {
+ return nil, fmt.Errorf("unable to deserialise sync state from <nil>")
+ }
+ state := &syncState{DbSyncState: &storage.DbSyncState{}}
+ err := json.Unmarshal(data, state)
+ return state, err
+}
+
+/*
+ sync implements the syncing script
+ * first all items left in the request Db are replayed
+ * type = StaleSync
+ * Mode: by default once again via confirmation roundtrip
+ * Priority: the items are replayed as the proirity specified for StaleSync
+ * but within the order respects earlier priority level of request
+ * after all items are consumed for a priority level, the the respective
+ queue for delivery requests is open (this way new reqs not written to db)
+ (TODO: this should be checked)
+ * the sync state provided by the remote peer is used to sync history
+ * all the backlog from earlier (aborted) syncing is completed starting from latest
+ * if Last < LastSeenAt then all items in between then process all
+ backlog from upto last disconnect
+ * if Last > 0 &&
+
+ sync is called from the syncer constructor and is not supposed to be used externally
+*/
+func (self *syncer) sync() {
+ state := self.state
+ // sync finished
+ defer close(self.syncStates)
+
+ // 0. first replay stale requests from request db
+ if state.SessionAt == 0 {
+ glog.V(logger.Debug).Infof("syncer[%v]: nothing to sync", self.key.Log())
+ return
+ }
+ glog.V(logger.Debug).Infof("syncer[%v]: start replaying stale requests from request db", self.key.Log())
+ for p := priorities - 1; p >= 0; p-- {
+ self.queues[p].dbRead(false, 0, self.replay())
+ }
+ glog.V(logger.Debug).Infof("syncer[%v]: done replaying stale requests from request db", self.key.Log())
+
+ // unless peer is synced sync unfinished history beginning on
+ if !state.Synced {
+ start := state.Start
+
+ if !storage.IsZeroKey(state.Latest) {
+ // 1. there is unfinished earlier sync
+ state.Start = state.Latest
+ glog.V(logger.Debug).Infof("syncer[%v]: start syncronising backlog (unfinished sync: %v)", self.key.Log(), state)
+ // blocks while the entire history upto state is synced
+ self.syncState(state)
+ if state.Last < state.SessionAt {
+ state.First = state.Last + 1
+ }
+ }
+ state.Latest = storage.ZeroKey
+ state.Start = start
+ // 2. sync up to last disconnect1
+ if state.First < state.LastSeenAt {
+ state.Last = state.LastSeenAt
+ glog.V(logger.Debug).Infof("syncer[%v]: start syncronising history upto last disconnect at %v: %v", self.key.Log(), state.LastSeenAt, state)
+ self.syncState(state)
+ state.First = state.LastSeenAt
+ }
+ state.Latest = storage.ZeroKey
+
+ } else {
+ // synchronisation starts at end of last session
+ state.First = state.LastSeenAt
+ }
+
+ // 3. sync up to current session start
+ // if there have been new chunks since last session
+ if state.LastSeenAt < state.SessionAt {
+ state.Last = state.SessionAt
+ glog.V(logger.Debug).Infof("syncer[%v]: start syncronising history since last disconnect at %v up until session start at %v: %v", self.key.Log(), state.LastSeenAt, state.SessionAt, state)
+ // blocks until state syncing is finished
+ self.syncState(state)
+ }
+ glog.V(logger.Info).Infof("syncer[%v]: syncing all history complete", self.key.Log())
+
+}
+
+// wait till syncronised block uptil state is synced
+func (self *syncer) syncState(state *syncState) {
+ self.syncStates <- state
+ select {
+ case <-state.synced:
+ case <-self.quit:
+ }
+}
+
+// stop quits both request processor and saves the request cache to disk
+func (self *syncer) stop() {
+ close(self.quit)
+ glog.V(logger.Detail).Infof("syncer[%v]: stop and save sync request db backlog", self.key.Log())
+ for _, db := range self.queues {
+ db.stop()
+ }
+}
+
+// rlp serialisable sync request
+type syncRequest struct {
+ Key storage.Key
+ Priority uint
+}
+
+func (self *syncRequest) String() string {
+ return fmt.Sprintf("<Key: %v, Priority: %v>", self.Key.Log(), self.Priority)
+}
+
+func (self *syncer) newSyncRequest(req interface{}, p int) (*syncRequest, error) {
+ key, _, _, _, err := parseRequest(req)
+ // TODO: if req has chunk, it should be put in a cache
+ // create
+ if err != nil {
+ return nil, err
+ }
+ return &syncRequest{key, uint(p)}, nil
+}
+
+// serves historical items from the DB
+// * read is on demand, blocking unless history channel is read
+// * accepts sync requests (syncStates) to create new db iterator
+// * closes the channel one iteration finishes
+func (self *syncer) syncHistory(state *syncState) chan interface{} {
+ var n uint
+ history := make(chan interface{})
+ glog.V(logger.Debug).Infof("syncer[%v]: syncing history between %v - %v for chunk addresses %v - %v", self.key.Log(), state.First, state.Last, state.Start, state.Stop)
+ it := self.dbAccess.iterator(state)
+ if it != nil {
+ go func() {
+ // signal end of the iteration ended
+ defer close(history)
+ IT:
+ for {
+ key := it.Next()
+ if key == nil {
+ break IT
+ }
+ select {
+ // blocking until history channel is read from
+ case history <- storage.Key(key):
+ n++
+ glog.V(logger.Detail).Infof("syncer[%v]: history: %v (%v keys)", self.key.Log(), key.Log(), n)
+ state.Latest = key
+ case <-self.quit:
+ return
+ }
+ }
+ glog.V(logger.Debug).Infof("syncer[%v]: finished syncing history between %v - %v for chunk addresses %v - %v (at %v) (chunks = %v)", self.key.Log(), state.First, state.Last, state.Start, state.Stop, state.Latest, n)
+ }()
+ }
+ return history
+}
+
+// triggers key syncronisation
+func (self *syncer) sendUnsyncedKeys() {
+ select {
+ case self.deliveryRequest <- true:
+ default:
+ }
+}
+
+// assembles a new batch of unsynced keys
+// * keys are drawn from the key buffers in order of priority queue
+// * if the queues of priority for History (HistoryReq) or higher are depleted,
+// historical data is used so historical items are lower priority within
+// their priority group.
+// * Order of historical data is unspecified
+func (self *syncer) syncUnsyncedKeys() {
+ // send out new
+ var unsynced []*syncRequest
+ var more, justSynced bool
+ var keyCount, historyCnt int
+ var history chan interface{}
+
+ priority := High
+ keys := self.keys[priority]
+ var newUnsyncedKeys, deliveryRequest chan bool
+ keyCounts := make([]int, priorities)
+ histPrior := self.SyncPriorities[HistoryReq]
+ syncStates := self.syncStates
+ state := self.state
+
+LOOP:
+ for {
+
+ var req interface{}
+ // select the highest priority channel to read from
+ // keys channels are buffered so the highest priority ones
+ // are checked first - integrity can only be guaranteed if writing
+ // is locked while selecting
+ if priority != High || len(keys) == 0 {
+ // selection is not needed if the High priority queue has items
+ keys = nil
+ PRIORITIES:
+ for priority = High; priority >= 0; priority-- {
+ // the first priority channel that is non-empty will be assigned to keys
+ if len(self.keys[priority]) > 0 {
+ glog.V(logger.Detail).Infof("syncer[%v]: reading request with priority %v", self.key.Log(), priority)
+ keys = self.keys[priority]
+ break PRIORITIES
+ }
+ glog.V(logger.Detail).Infof("syncer[%v/%v]: queue: [%v, %v, %v]", self.key.Log(), priority, len(self.keys[High]), len(self.keys[Medium]), len(self.keys[Low]))
+ // if the input queue is empty on this level, resort to history if there is any
+ if uint(priority) == histPrior && history != nil {
+ glog.V(logger.Detail).Infof("syncer[%v]: reading history for %v", self.key.Log(), self.key)
+ keys = history
+ break PRIORITIES
+ }
+ }
+ }
+
+ // if peer ready to receive but nothing to send
+ if keys == nil && deliveryRequest == nil {
+ // if no items left and switch to waiting mode
+ glog.V(logger.Detail).Infof("syncer[%v]: buffers consumed. Waiting", self.key.Log())
+ newUnsyncedKeys = self.newUnsyncedKeys
+ }
+
+ // send msg iff
+ // * peer is ready to receive keys AND (
+ // * all queues and history are depleted OR
+ // * batch full OR
+ // * all history have been consumed, synced)
+ if deliveryRequest == nil &&
+ (justSynced ||
+ len(unsynced) > 0 && keys == nil ||
+ len(unsynced) == int(self.SyncBatchSize)) {
+ justSynced = false
+ // listen to requests
+ deliveryRequest = self.deliveryRequest
+ newUnsyncedKeys = nil // not care about data until next req comes in
+ // set sync to current counter
+ // (all nonhistorical outgoing traffic sheduled and persisted
+ state.LastSeenAt = self.dbAccess.counter()
+ state.Latest = storage.ZeroKey
+ glog.V(logger.Detail).Infof("syncer[%v]: sending %v", self.key.Log(), unsynced)
+ // send the unsynced keys
+ stateCopy := *state
+ err := self.unsyncedKeys(unsynced, &stateCopy)
+ if err != nil {
+ glog.V(logger.Warn).Infof("syncer[%v]: unable to send unsynced keys: %v", err)
+ }
+ self.state = state
+ glog.V(logger.Debug).Infof("syncer[%v]: --> %v keys sent: (total: %v (%v), history: %v), sent sync state: %v", self.key.Log(), len(unsynced), keyCounts, keyCount, historyCnt, stateCopy)
+ unsynced = nil
+ keys = nil
+ }
+
+ // process item and add it to the batch
+ select {
+ case <-self.quit:
+ break LOOP
+ case req, more = <-keys:
+ if keys == history && !more {
+ glog.V(logger.Detail).Infof("syncer[%v]: syncing history segment complete", self.key.Log())
+ // history channel is closed, waiting for new state (called from sync())
+ syncStates = self.syncStates
+ state.Synced = true // this signals that the current segment is complete
+ select {
+ case state.synced <- false:
+ case <-self.quit:
+ break LOOP
+ }
+ justSynced = true
+ history = nil
+ }
+ case <-deliveryRequest:
+ glog.V(logger.Detail).Infof("syncer[%v]: peer ready to receive", self.key.Log())
+
+ // this 1 cap channel can wake up the loop
+ // signaling that peer is ready to receive unsynced Keys
+ // the channel is set to nil any further writes will be ignored
+ deliveryRequest = nil
+
+ case <-newUnsyncedKeys:
+ glog.V(logger.Detail).Infof("syncer[%v]: new unsynced keys available", self.key.Log())
+ // this 1 cap channel can wake up the loop
+ // signals that data is available to send if peer is ready to receive
+ newUnsyncedKeys = nil
+ keys = self.keys[High]
+
+ case state, more = <-syncStates:
+ // this resets the state
+ if !more {
+ state = self.state
+ glog.V(logger.Detail).Infof("syncer[%v]: (priority %v) syncing complete upto %v)", self.key.Log(), priority, state)
+ state.Synced = true
+ syncStates = nil
+ } else {
+ glog.V(logger.Detail).Infof("syncer[%v]: (priority %v) syncing history upto %v priority %v)", self.key.Log(), priority, state, histPrior)
+ state.Synced = false
+ history = self.syncHistory(state)
+ // only one history at a time, only allow another one once the
+ // history channel is closed
+ syncStates = nil
+ }
+ }
+ if req == nil {
+ continue LOOP
+ }
+
+ glog.V(logger.Detail).Infof("syncer[%v]: (priority %v) added to unsynced keys: %v", self.key.Log(), priority, req)
+ keyCounts[priority]++
+ keyCount++
+ if keys == history {
+ glog.V(logger.Detail).Infof("syncer[%v]: (priority %v) history item %v (synced = %v)", self.key.Log(), priority, req, state.Synced)
+ historyCnt++
+ }
+ if sreq, err := self.newSyncRequest(req, priority); err == nil {
+ // extract key from req
+ glog.V(logger.Detail).Infof("syncer(priority %v): request %v (synced = %v)", self.key.Log(), priority, req, state.Synced)
+ unsynced = append(unsynced, sreq)
+ } else {
+ glog.V(logger.Warn).Infof("syncer(priority %v): error creating request for %v: %v)", self.key.Log(), priority, req, state.Synced, err)
+ }
+
+ }
+}
+
+// delivery loop
+// takes into account priority, send store Requests with chunk (delivery)
+// idle blocking if no new deliveries in any of the queues
+func (self *syncer) syncDeliveries() {
+ var req *storeRequestMsgData
+ p := High
+ var deliveries chan *storeRequestMsgData
+ var msg *storeRequestMsgData
+ var err error
+ var c = [priorities]int{}
+ var n = [priorities]int{}
+ var total, success uint
+
+ for {
+ deliveries = self.deliveries[p]
+ select {
+ case req = <-deliveries:
+ n[p]++
+ c[p]++
+ default:
+ if p == Low {
+ // blocking, depletion on all channels, no preference for priority
+ select {
+ case req = <-self.deliveries[High]:
+ n[High]++
+ case req = <-self.deliveries[Medium]:
+ n[Medium]++
+ case req = <-self.deliveries[Low]:
+ n[Low]++
+ case <-self.quit:
+ return
+ }
+ p = High
+ } else {
+ p--
+ continue
+ }
+ }
+ total++
+ msg, err = self.newStoreRequestMsgData(req)
+ if err != nil {
+ glog.V(logger.Warn).Infof("syncer[%v]: failed to create store request for %v: %v", self.key.Log(), req, err)
+ } else {
+ err = self.store(msg)
+ if err != nil {
+ glog.V(logger.Warn).Infof("syncer[%v]: failed to deliver %v: %v", self.key.Log(), req, err)
+ } else {
+ success++
+ glog.V(logger.Detail).Infof("syncer[%v]: %v successfully delivered", self.key.Log(), req)
+ }
+ }
+ if total%self.SyncBatchSize == 0 {
+ glog.V(logger.Debug).Infof("syncer[%v]: deliver Total: %v, Success: %v, High: %v/%v, Medium: %v/%v, Low %v/%v", self.key.Log(), total, success, c[High], n[High], c[Medium], n[Medium], c[Low], n[Low])
+ }
+ }
+}
+
+/*
+ addRequest handles requests for delivery
+ it accepts 4 types:
+
+ * storeRequestMsgData: coming from netstore propagate response
+ * chunk: coming from forwarding (questionable: id?)
+ * key: from incoming syncRequest
+ * syncDbEntry: key,id encoded in db
+
+ If sync mode is on for the type of request, then
+ it sends the request to the keys queue of the correct priority
+ channel buffered with capacity (SyncBufferSize)
+
+ If sync mode is off then, requests are directly sent to deliveries
+*/
+func (self *syncer) addRequest(req interface{}, ty int) {
+ // retrieve priority for request type name int8
+
+ priority := self.SyncPriorities[ty]
+ // sync mode for this type ON
+ if self.syncF() || ty == DeliverReq {
+ if self.SyncModes[ty] {
+ self.addKey(req, priority, self.quit)
+ } else {
+ self.addDelivery(req, priority, self.quit)
+ }
+ }
+}
+
+// addKey queues sync request for sync confirmation with given priority
+// ie the key will go out in an unsyncedKeys message
+func (self *syncer) addKey(req interface{}, priority uint, quit chan bool) bool {
+ select {
+ case self.keys[priority] <- req:
+ // this wakes up the unsynced keys loop if idle
+ select {
+ case self.newUnsyncedKeys <- true:
+ default:
+ }
+ return true
+ case <-quit:
+ return false
+ }
+}
+
+// addDelivery queues delivery request for with given priority
+// ie the chunk will be delivered ASAP mod priority queueing handled by syncdb
+// requests are persisted across sessions for correct sync
+func (self *syncer) addDelivery(req interface{}, priority uint, quit chan bool) bool {
+ select {
+ case self.queues[priority].buffer <- req:
+ return true
+ case <-quit:
+ return false
+ }
+}
+
+// doDelivery delivers the chunk for the request with given priority
+// without queuing
+func (self *syncer) doDelivery(req interface{}, priority uint, quit chan bool) bool {
+ msgdata, err := self.newStoreRequestMsgData(req)
+ if err != nil {
+ glog.V(logger.Warn).Infof("unable to deliver request %v: %v", msgdata, err)
+ return false
+ }
+ select {
+ case self.deliveries[priority] <- msgdata:
+ return true
+ case <-quit:
+ return false
+ }
+}
+
+// returns the delivery function for given priority
+// passed on to syncDb
+func (self *syncer) deliver(priority uint) func(req interface{}, quit chan bool) bool {
+ return func(req interface{}, quit chan bool) bool {
+ return self.doDelivery(req, priority, quit)
+ }
+}
+
+// returns the replay function passed on to syncDb
+// depending on sync mode settings for BacklogReq,
+// re play of request db backlog sends items via confirmation
+// or directly delivers
+func (self *syncer) replay() func(req interface{}, quit chan bool) bool {
+ sync := self.SyncModes[BacklogReq]
+ priority := self.SyncPriorities[BacklogReq]
+ // sync mode for this type ON
+ if sync {
+ return func(req interface{}, quit chan bool) bool {
+ return self.addKey(req, priority, quit)
+ }
+ } else {
+ return func(req interface{}, quit chan bool) bool {
+ return self.doDelivery(req, priority, quit)
+ }
+
+ }
+}
+
+// given a request, extends it to a full storeRequestMsgData
+// polimorphic: see addRequest for the types accepted
+func (self *syncer) newStoreRequestMsgData(req interface{}) (*storeRequestMsgData, error) {
+
+ key, id, chunk, sreq, err := parseRequest(req)
+ if err != nil {
+ return nil, err
+ }
+
+ if sreq == nil {
+ if chunk == nil {
+ var err error
+ chunk, err = self.dbAccess.get(key)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ sreq = &storeRequestMsgData{
+ Id: id,
+ Key: chunk.Key,
+ SData: chunk.SData,
+ }
+ }
+
+ return sreq, nil
+}
+
+// parse request types and extracts, key, id, chunk, request if available
+// does not do chunk lookup !
+func parseRequest(req interface{}) (storage.Key, uint64, *storage.Chunk, *storeRequestMsgData, error) {
+ var key storage.Key
+ var entry *syncDbEntry
+ var chunk *storage.Chunk
+ var id uint64
+ var ok bool
+ var sreq *storeRequestMsgData
+ var err error
+
+ if key, ok = req.(storage.Key); ok {
+ id = generateId()
+
+ } else if entry, ok = req.(*syncDbEntry); ok {
+ id = binary.BigEndian.Uint64(entry.val[32:])
+ key = storage.Key(entry.val[:32])
+
+ } else if chunk, ok = req.(*storage.Chunk); ok {
+ key = chunk.Key
+ id = generateId()
+
+ } else if sreq, ok = req.(*storeRequestMsgData); ok {
+ key = sreq.Key
+ } else {
+ err = fmt.Errorf("type not allowed: %v (%T)", req, req)
+ }
+
+ return key, id, chunk, sreq, err
+}
diff --git a/swarm/services/swap/swap.go b/swarm/services/swap/swap.go
new file mode 100644
index 000000000..f72036d72
--- /dev/null
+++ b/swarm/services/swap/swap.go
@@ -0,0 +1,283 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package swap
+
+import (
+ "crypto/ecdsa"
+ "fmt"
+ "math/big"
+ "os"
+ "path/filepath"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/contracts/chequebook"
+ "github.com/ethereum/go-ethereum/contracts/chequebook/contract"
+ "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/swarm/services/swap/swap"
+ "golang.org/x/net/context"
+)
+
+// SwAP Swarm Accounting Protocol with
+// SWAP^2 Strategies of Withholding Automatic Payments
+// SWAP^3 Accreditation: payment via credit SWAP
+// using chequebook pkg for delayed payments
+// default parameters
+
+var (
+ autoCashInterval = 300 * time.Second // default interval for autocash
+ autoCashThreshold = big.NewInt(50000000000000) // threshold that triggers autocash (wei)
+ autoDepositInterval = 300 * time.Second // default interval for autocash
+ autoDepositThreshold = big.NewInt(50000000000000) // threshold that triggers autodeposit (wei)
+ autoDepositBuffer = big.NewInt(100000000000000) // buffer that is surplus for fork protection etc (wei)
+ buyAt = big.NewInt(20000000000) // maximum chunk price host is willing to pay (wei)
+ sellAt = big.NewInt(20000000000) // minimum chunk price host requires (wei)
+ payAt = 100 // threshold that triggers payment {request} (units)
+ dropAt = 10000 // threshold that triggers disconnect (units)
+)
+
+const (
+ chequebookDeployRetries = 5
+ chequebookDeployDelay = 1 * time.Second // delay between retries
+)
+
+type SwapParams struct {
+ *swap.Params
+ *PayProfile
+}
+
+type SwapProfile struct {
+ *swap.Profile
+ *PayProfile
+}
+
+type PayProfile struct {
+ PublicKey string // check against signature of promise
+ Contract common.Address // address of chequebook contract
+ Beneficiary common.Address // recipient address for swarm sales revenue
+ privateKey *ecdsa.PrivateKey
+ publicKey *ecdsa.PublicKey
+ owner common.Address
+ chbook *chequebook.Chequebook
+ lock sync.RWMutex
+}
+
+func DefaultSwapParams(contract common.Address, prvkey *ecdsa.PrivateKey) *SwapParams {
+ pubkey := &prvkey.PublicKey
+ return &SwapParams{
+ PayProfile: &PayProfile{
+ PublicKey: common.ToHex(crypto.FromECDSAPub(pubkey)),
+ Contract: contract,
+ Beneficiary: crypto.PubkeyToAddress(*pubkey),
+ privateKey: prvkey,
+ publicKey: pubkey,
+ owner: crypto.PubkeyToAddress(*pubkey),
+ },
+ Params: &swap.Params{
+ Profile: &swap.Profile{
+ BuyAt: buyAt,
+ SellAt: sellAt,
+ PayAt: uint(payAt),
+ DropAt: uint(dropAt),
+ },
+ Strategy: &swap.Strategy{
+ AutoCashInterval: autoCashInterval,
+ AutoCashThreshold: autoCashThreshold,
+ AutoDepositInterval: autoDepositInterval,
+ AutoDepositThreshold: autoDepositThreshold,
+ AutoDepositBuffer: autoDepositBuffer,
+ },
+ },
+ }
+}
+
+// swap constructor, parameters
+// * global chequebook, assume deployed service and
+// * the balance is at buffer.
+// swap.Add(n) called in netstore
+// n > 0 called when sending chunks = receiving retrieve requests
+// OR sending cheques.
+// n < 0 called when receiving chunks = receiving delivery responses
+// OR receiving cheques.
+
+func NewSwap(local *SwapParams, remote *SwapProfile, backend chequebook.Backend, proto swap.Protocol) (self *swap.Swap, err error) {
+ var (
+ ctx = context.TODO()
+ ok bool
+ in *chequebook.Inbox
+ out *chequebook.Outbox
+ )
+
+ // check if remote chequebook is valid
+ // insolvent chequebooks suicide so will signal as invalid
+ // TODO: monitoring a chequebooks events
+ ok, err = chequebook.ValidateCode(ctx, backend, remote.Contract)
+ if !ok {
+ glog.V(logger.Info).Infof("invalid contract %v for peer %v: %v)", remote.Contract.Hex()[:8], proto, err)
+ } else {
+ // remote contract valid, create inbox
+ in, err = chequebook.NewInbox(local.privateKey, remote.Contract, local.Beneficiary, crypto.ToECDSAPub(common.FromHex(remote.PublicKey)), backend)
+ if err != nil {
+ glog.V(logger.Warn).Infof("unable to set up inbox for chequebook contract %v for peer %v: %v)", remote.Contract.Hex()[:8], proto, err)
+ }
+ }
+
+ // check if local chequebook contract is valid
+ ok, err = chequebook.ValidateCode(ctx, backend, local.Contract)
+ if !ok {
+ glog.V(logger.Warn).Infof("unable to set up outbox for peer %v: chequebook contract (owner: %v): %v)", proto, local.owner.Hex(), err)
+ } else {
+ out = chequebook.NewOutbox(local.Chequebook(), remote.Beneficiary)
+ }
+
+ pm := swap.Payment{
+ In: in,
+ Out: out,
+ Buys: out != nil,
+ Sells: in != nil,
+ }
+ self, err = swap.New(local.Params, pm, proto)
+ if err != nil {
+ return
+ }
+ // remote profile given (first) in handshake
+ self.SetRemote(remote.Profile)
+ var buy, sell string
+ if self.Buys {
+ buy = "purchase from peer enabled at " + remote.SellAt.String() + " wei/chunk"
+ } else {
+ buy = "purchase from peer disabled"
+ }
+ if self.Sells {
+ sell = "selling to peer enabled at " + local.SellAt.String() + " wei/chunk"
+ } else {
+ sell = "selling to peer disabled"
+ }
+ glog.V(logger.Warn).Infof("SWAP arrangement with <%v>: %v; %v)", proto, buy, sell)
+
+ return
+}
+
+func (self *SwapParams) Chequebook() *chequebook.Chequebook {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return self.chbook
+}
+
+func (self *SwapParams) PrivateKey() *ecdsa.PrivateKey {
+ return self.privateKey
+}
+
+// func (self *SwapParams) PublicKey() *ecdsa.PublicKey {
+// return self.publicKey
+// }
+
+func (self *SwapParams) SetKey(prvkey *ecdsa.PrivateKey) {
+ self.privateKey = prvkey
+ self.publicKey = &prvkey.PublicKey
+}
+
+// setChequebook(path, backend) wraps the
+// chequebook initialiser and sets up autoDeposit to cover spending.
+func (self *SwapParams) SetChequebook(ctx context.Context, backend chequebook.Backend, path string) error {
+ self.lock.Lock()
+ contract := self.Contract
+ self.lock.Unlock()
+
+ valid, err := chequebook.ValidateCode(ctx, backend, contract)
+ if err != nil {
+ return err
+ } else if valid {
+ return self.newChequebookFromContract(path, backend)
+ }
+ return self.deployChequebook(ctx, backend, path)
+}
+
+func (self *SwapParams) deployChequebook(ctx context.Context, backend chequebook.Backend, path string) error {
+ opts := bind.NewKeyedTransactor(self.privateKey)
+ opts.Value = self.AutoDepositBuffer
+ opts.Context = ctx
+
+ glog.V(logger.Info).Infof("Deploying new chequebook (owner: %v)", opts.From.Hex())
+ contract, err := deployChequebookLoop(opts, backend)
+ if err != nil {
+ glog.V(logger.Error).Infof("unable to deploy new chequebook: %v", err)
+ return err
+ }
+ glog.V(logger.Info).Infof("new chequebook deployed at %v (owner: %v)", contract.Hex(), opts.From.Hex())
+
+ // need to save config at this point
+ self.lock.Lock()
+ self.Contract = contract
+ err = self.newChequebookFromContract(path, backend)
+ self.lock.Unlock()
+ if err != nil {
+ glog.V(logger.Warn).Infof("error initialising cheque book (owner: %v): %v", opts.From.Hex(), err)
+ }
+ return err
+}
+
+// repeatedly tries to deploy a chequebook.
+func deployChequebookLoop(opts *bind.TransactOpts, backend chequebook.Backend) (addr common.Address, err error) {
+ var tx *types.Transaction
+ for try := 0; try < chequebookDeployRetries; try++ {
+ if try > 0 {
+ time.Sleep(chequebookDeployDelay)
+ }
+ if _, tx, _, err = contract.DeployChequebook(opts, backend); err != nil {
+ glog.V(logger.Warn).Infof("can't send chequebook deploy tx (try %d): %v", try, err)
+ continue
+ }
+ if addr, err = bind.WaitDeployed(opts.Context, backend, tx); err != nil {
+ glog.V(logger.Warn).Infof("chequebook deploy error (try %d): %v", try, err)
+ continue
+ }
+ return addr, nil
+ }
+ return addr, err
+}
+
+// initialise the chequebook from a persisted json file or create a new one
+// caller holds the lock
+func (self *SwapParams) newChequebookFromContract(path string, backend chequebook.Backend) error {
+ hexkey := common.Bytes2Hex(self.Contract.Bytes())
+ err := os.MkdirAll(filepath.Join(path, "chequebooks"), os.ModePerm)
+ if err != nil {
+ return fmt.Errorf("unable to create directory for chequebooks: %v", err)
+ }
+
+ chbookpath := filepath.Join(path, "chequebooks", hexkey+".json")
+ self.chbook, err = chequebook.LoadChequebook(chbookpath, self.privateKey, backend, true)
+
+ if err != nil {
+ self.chbook, err = chequebook.NewChequebook(chbookpath, self.Contract, self.privateKey, backend)
+ if err != nil {
+ glog.V(logger.Warn).Infof("unable to initialise chequebook (owner: %v): %v", self.owner.Hex(), err)
+ return fmt.Errorf("unable to initialise chequebook (owner: %v): %v", self.owner.Hex(), err)
+ }
+ }
+
+ self.chbook.AutoDeposit(self.AutoDepositInterval, self.AutoDepositThreshold, self.AutoDepositBuffer)
+ glog.V(logger.Info).Infof("auto deposit ON for %v -> %v: interval = %v, threshold = %v, buffer = %v)", crypto.PubkeyToAddress(*(self.publicKey)).Hex()[:8], self.Contract.Hex()[:8], self.AutoDepositInterval, self.AutoDepositThreshold, self.AutoDepositBuffer)
+
+ return nil
+}
diff --git a/swarm/services/swap/swap/swap.go b/swarm/services/swap/swap/swap.go
new file mode 100644
index 000000000..9d5da7c3a
--- /dev/null
+++ b/swarm/services/swap/swap/swap.go
@@ -0,0 +1,254 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package swap
+
+import (
+ "fmt"
+ "math/big"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+// SwAP Swarm Accounting Protocol with
+// Swift Automatic Payments
+// a peer to peer micropayment system
+
+// public swap profile
+// public parameters for SWAP, serializable config struct passed in handshake
+type Profile struct {
+ BuyAt *big.Int // accepted max price for chunk
+ SellAt *big.Int // offered sale price for chunk
+ PayAt uint // threshold that triggers payment request
+ DropAt uint // threshold that triggers disconnect
+}
+
+// Strategy encapsulates parameters relating to
+// automatic deposit and automatic cashing
+type Strategy struct {
+ AutoCashInterval time.Duration // default interval for autocash
+ AutoCashThreshold *big.Int // threshold that triggers autocash (wei)
+ AutoDepositInterval time.Duration // default interval for autocash
+ AutoDepositThreshold *big.Int // threshold that triggers autodeposit (wei)
+ AutoDepositBuffer *big.Int // buffer that is surplus for fork protection etc (wei)
+}
+
+// Params extends the public profile with private parameters relating to
+// automatic deposit and automatic cashing
+type Params struct {
+ *Profile
+ *Strategy
+}
+
+// Promise
+// 3rd party Provable Promise of Payment
+// issued by outPayment
+// serialisable to send with Protocol
+type Promise interface{}
+
+// interface for the peer protocol for testing or external alternative payment
+type Protocol interface {
+ Pay(int, Promise) // units, payment proof
+ Drop()
+ String() string
+}
+
+// interface for the (delayed) ougoing payment system with autodeposit
+type OutPayment interface {
+ Issue(amount *big.Int) (promise Promise, err error)
+ AutoDeposit(interval time.Duration, threshold, buffer *big.Int)
+ Stop()
+}
+
+// interface for the (delayed) incoming payment system with autocash
+type InPayment interface {
+ Receive(promise Promise) (*big.Int, error)
+ AutoCash(cashInterval time.Duration, maxUncashed *big.Int)
+ Stop()
+}
+
+// swap is the swarm accounting protocol instance
+// * pairwise accounting and payments
+type Swap struct {
+ lock sync.Mutex // mutex for balance access
+ balance int // units of chunk/retrieval request
+ local *Params // local peer's swap parameters
+ remote *Profile // remote peer's swap profile
+ proto Protocol // peer communication protocol
+ Payment
+}
+
+type Payment struct {
+ Out OutPayment // outgoing payment handler
+ In InPayment // incoming payment handler
+ Buys, Sells bool
+}
+
+// swap constructor
+func New(local *Params, pm Payment, proto Protocol) (self *Swap, err error) {
+
+ self = &Swap{
+ local: local,
+ Payment: pm,
+ proto: proto,
+ }
+
+ self.SetParams(local)
+
+ return
+}
+
+// entry point for setting remote swap profile (e.g from handshake or other message)
+func (self *Swap) SetRemote(remote *Profile) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+
+ self.remote = remote
+ if self.Sells && (remote.BuyAt.Cmp(common.Big0) <= 0 || self.local.SellAt.Cmp(common.Big0) <= 0 || remote.BuyAt.Cmp(self.local.SellAt) < 0) {
+ self.Out.Stop()
+ self.Sells = false
+ }
+ if self.Buys && (remote.SellAt.Cmp(common.Big0) <= 0 || self.local.BuyAt.Cmp(common.Big0) <= 0 || self.local.BuyAt.Cmp(self.remote.SellAt) < 0) {
+ self.In.Stop()
+ self.Buys = false
+ }
+
+ glog.V(logger.Debug).Infof("<%v> remote profile set: pay at: %v, drop at: %v, buy at: %v, sell at: %v", self.proto, remote.PayAt, remote.DropAt, remote.BuyAt, remote.SellAt)
+
+}
+
+// to set strategy dynamically
+func (self *Swap) SetParams(local *Params) {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ self.local = local
+ self.setParams(local)
+}
+
+// caller holds the lock
+
+func (self *Swap) setParams(local *Params) {
+
+ if self.Sells {
+ self.In.AutoCash(local.AutoCashInterval, local.AutoCashThreshold)
+ glog.V(logger.Info).Infof("<%v> set autocash to every %v, max uncashed limit: %v", self.proto, local.AutoCashInterval, local.AutoCashThreshold)
+ } else {
+ glog.V(logger.Info).Infof("<%v> autocash off (not selling)", self.proto)
+ }
+ if self.Buys {
+ self.Out.AutoDeposit(local.AutoDepositInterval, local.AutoDepositThreshold, local.AutoDepositBuffer)
+ glog.V(logger.Info).Infof("<%v> set autodeposit to every %v, pay at: %v, buffer: %v", self.proto, local.AutoDepositInterval, local.AutoDepositThreshold, local.AutoDepositBuffer)
+ } else {
+ glog.V(logger.Info).Infof("<%v> autodeposit off (not buying)", self.proto)
+ }
+}
+
+// Add(n)
+// n > 0 called when promised/provided n units of service
+// n < 0 called when used/requested n units of service
+func (self *Swap) Add(n int) error {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ self.balance += n
+ if !self.Sells && self.balance > 0 {
+ glog.V(logger.Detail).Infof("<%v> remote peer cannot have debt (balance: %v)", self.proto, self.balance)
+ self.proto.Drop()
+ return fmt.Errorf("[SWAP] <%v> remote peer cannot have debt (balance: %v)", self.proto, self.balance)
+ }
+ if !self.Buys && self.balance < 0 {
+ glog.V(logger.Detail).Infof("<%v> we cannot have debt (balance: %v)", self.proto, self.balance)
+ return fmt.Errorf("[SWAP] <%v> we cannot have debt (balance: %v)", self.proto, self.balance)
+ }
+ if self.balance >= int(self.local.DropAt) {
+ glog.V(logger.Detail).Infof("<%v> remote peer has too much debt (balance: %v, disconnect threshold: %v)", self.proto, self.balance, self.local.DropAt)
+ self.proto.Drop()
+ return fmt.Errorf("[SWAP] <%v> remote peer has too much debt (balance: %v, disconnect threshold: %v)", self.proto, self.balance, self.local.DropAt)
+ } else if self.balance <= -int(self.remote.PayAt) {
+ self.send()
+ }
+ return nil
+}
+
+func (self *Swap) Balance() int {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ return self.balance
+}
+
+// send(units) is called when payment is due
+// In case of insolvency no promise is issued and sent, safe against fraud
+// No return value: no error = payment is opportunistic = hang in till dropped
+func (self *Swap) send() {
+ if self.local.BuyAt != nil && self.balance < 0 {
+ amount := big.NewInt(int64(-self.balance))
+ amount.Mul(amount, self.remote.SellAt)
+ promise, err := self.Out.Issue(amount)
+ if err != nil {
+ glog.V(logger.Warn).Infof("<%v> cannot issue cheque (amount: %v, channel: %v): %v", self.proto, amount, self.Out, err)
+ } else {
+ glog.V(logger.Warn).Infof("<%v> cheque issued (amount: %v, channel: %v)", self.proto, amount, self.Out)
+ self.proto.Pay(-self.balance, promise)
+ self.balance = 0
+ }
+ }
+}
+
+// receive(units, promise) is called by the protocol when a payment msg is received
+// returns error if promise is invalid.
+func (self *Swap) Receive(units int, promise Promise) error {
+ if units <= 0 {
+ return fmt.Errorf("invalid units: %v <= 0", units)
+ }
+
+ price := new(big.Int).SetInt64(int64(units))
+ price.Mul(price, self.local.SellAt)
+
+ amount, err := self.In.Receive(promise)
+
+ if err != nil {
+ err = fmt.Errorf("invalid promise: %v", err)
+ } else if price.Cmp(amount) != 0 {
+ // verify amount = units * unit sale price
+ return fmt.Errorf("invalid amount: %v = %v * %v (units sent in msg * agreed sale unit price) != %v (signed in cheque)", price, units, self.local.SellAt, amount)
+ }
+ if err != nil {
+ glog.V(logger.Detail).Infof("<%v> invalid promise (amount: %v, channel: %v): %v", self.proto, amount, self.In, err)
+ return err
+ }
+
+ // credit remote peer with units
+ self.Add(-units)
+ glog.V(logger.Detail).Infof("<%v> received promise (amount: %v, channel: %v): %v", self.proto, amount, self.In, promise)
+
+ return nil
+}
+
+// stop() causes autocash loop to terminate.
+// Called after protocol handle loop terminates.
+func (self *Swap) Stop() {
+ defer self.lock.Unlock()
+ self.lock.Lock()
+ if self.Buys {
+ self.Out.Stop()
+ }
+ if self.Sells {
+ self.In.Stop()
+ }
+}
diff --git a/swarm/services/swap/swap/swap_test.go b/swarm/services/swap/swap/swap_test.go
new file mode 100644
index 000000000..222e0770f
--- /dev/null
+++ b/swarm/services/swap/swap/swap_test.go
@@ -0,0 +1,194 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package swap
+
+import (
+ "math/big"
+ "testing"
+ "time"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+type testInPayment struct {
+ received []*testPromise
+ autocashInterval time.Duration
+ autocashLimit *big.Int
+}
+
+type testPromise struct {
+ amount *big.Int
+}
+
+func (self *testInPayment) Receive(promise Promise) (*big.Int, error) {
+ p := promise.(*testPromise)
+ self.received = append(self.received, p)
+ return p.amount, nil
+}
+
+func (self *testInPayment) AutoCash(interval time.Duration, limit *big.Int) {
+ self.autocashInterval = interval
+ self.autocashLimit = limit
+}
+
+func (self *testInPayment) Cash() (string, error) { return "", nil }
+
+func (self *testInPayment) Stop() {}
+
+type testOutPayment struct {
+ deposits []*big.Int
+ autodepositInterval time.Duration
+ autodepositThreshold *big.Int
+ autodepositBuffer *big.Int
+}
+
+func (self *testOutPayment) Issue(amount *big.Int) (promise Promise, err error) {
+ return &testPromise{amount}, nil
+}
+
+func (self *testOutPayment) Deposit(amount *big.Int) (string, error) {
+ self.deposits = append(self.deposits, amount)
+ return "", nil
+}
+
+func (self *testOutPayment) AutoDeposit(interval time.Duration, threshold, buffer *big.Int) {
+ self.autodepositInterval = interval
+ self.autodepositThreshold = threshold
+ self.autodepositBuffer = buffer
+}
+
+func (self *testOutPayment) Stop() {}
+
+type testProtocol struct {
+ drop bool
+ amounts []int
+ promises []*testPromise
+}
+
+func (self *testProtocol) Drop() {
+ self.drop = true
+}
+
+func (self *testProtocol) String() string {
+ return ""
+}
+
+func (self *testProtocol) Pay(amount int, promise Promise) {
+ p := promise.(*testPromise)
+ self.promises = append(self.promises, p)
+ self.amounts = append(self.amounts, amount)
+}
+
+func TestSwap(t *testing.T) {
+
+ strategy := &Strategy{
+ AutoCashInterval: 1 * time.Second,
+ AutoCashThreshold: big.NewInt(20),
+ AutoDepositInterval: 1 * time.Second,
+ AutoDepositThreshold: big.NewInt(20),
+ AutoDepositBuffer: big.NewInt(40),
+ }
+
+ local := &Params{
+ Profile: &Profile{
+ PayAt: 5,
+ DropAt: 10,
+ BuyAt: common.Big3,
+ SellAt: common.Big2,
+ },
+ Strategy: strategy,
+ }
+
+ in := &testInPayment{}
+ out := &testOutPayment{}
+ proto := &testProtocol{}
+
+ swap, _ := New(local, Payment{In: in, Out: out, Buys: true, Sells: true}, proto)
+
+ if in.autocashInterval != strategy.AutoCashInterval {
+ t.Fatalf("autocash interval not properly set, expect %v, got %v", strategy.AutoCashInterval, in.autocashInterval)
+ }
+ if out.autodepositInterval != strategy.AutoDepositInterval {
+ t.Fatalf("autodeposit interval not properly set, expect %v, got %v", strategy.AutoDepositInterval, out.autodepositInterval)
+ }
+
+ remote := &Profile{
+ PayAt: 3,
+ DropAt: 10,
+ BuyAt: common.Big2,
+ SellAt: common.Big3,
+ }
+ swap.SetRemote(remote)
+
+ swap.Add(9)
+ if proto.drop {
+ t.Fatalf("not expected peer to be dropped")
+ }
+ swap.Add(1)
+ if !proto.drop {
+ t.Fatalf("expected peer to be dropped")
+ }
+ if !proto.drop {
+ t.Fatalf("expected peer to be dropped")
+ }
+ proto.drop = false
+
+ swap.Receive(10, &testPromise{big.NewInt(20)})
+ if swap.balance != 0 {
+ t.Fatalf("expected zero balance, got %v", swap.balance)
+ }
+
+ if len(proto.amounts) != 0 {
+ t.Fatalf("expected zero balance, got %v", swap.balance)
+ }
+
+ swap.Add(-2)
+ if len(proto.amounts) > 0 {
+ t.Fatalf("expected no payments yet, got %v", proto.amounts)
+ }
+
+ swap.Add(-1)
+ if len(proto.amounts) != 1 {
+ t.Fatalf("expected one payment, got %v", len(proto.amounts))
+ }
+
+ if proto.amounts[0] != 3 {
+ t.Fatalf("expected payment for %v units, got %v", proto.amounts[0], 3)
+ }
+
+ exp := new(big.Int).Mul(big.NewInt(int64(proto.amounts[0])), remote.SellAt)
+ if proto.promises[0].amount.Cmp(exp) != 0 {
+ t.Fatalf("expected payment amount %v, got %v", exp, proto.promises[0].amount)
+ }
+
+ swap.SetParams(&Params{
+ Profile: &Profile{
+ PayAt: 5,
+ DropAt: 10,
+ BuyAt: common.Big3,
+ SellAt: common.Big2,
+ },
+ Strategy: &Strategy{
+ AutoCashInterval: 2 * time.Second,
+ AutoCashThreshold: big.NewInt(40),
+ AutoDepositInterval: 2 * time.Second,
+ AutoDepositThreshold: big.NewInt(40),
+ AutoDepositBuffer: big.NewInt(60),
+ },
+ })
+
+}
diff --git a/swarm/storage/chunker.go b/swarm/storage/chunker.go
new file mode 100644
index 000000000..4c8551da9
--- /dev/null
+++ b/swarm/storage/chunker.go
@@ -0,0 +1,509 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "hash"
+ "io"
+ "sync"
+ // "github.com/ethereum/go-ethereum/logger"
+ // "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+/*
+The distributed storage implemented in this package requires fix sized chunks of content.
+
+Chunker is the interface to a component that is responsible for disassembling and assembling larger data.
+
+TreeChunker implements a Chunker based on a tree structure defined as follows:
+
+1 each node in the tree including the root and other branching nodes are stored as a chunk.
+
+2 branching nodes encode data contents that includes the size of the dataslice covered by its entire subtree under the node as well as the hash keys of all its children :
+data_{i} := size(subtree_{i}) || key_{j} || key_{j+1} .... || key_{j+n-1}
+
+3 Leaf nodes encode an actual subslice of the input data.
+
+4 if data size is not more than maximum chunksize, the data is stored in a single chunk
+ key = hash(int64(size) + data)
+
+5 if data size is more than chunksize*branches^l, but no more than chunksize*
+ branches^(l+1), the data vector is split into slices of chunksize*
+ branches^l length (except the last one).
+ key = hash(int64(size) + key(slice0) + key(slice1) + ...)
+
+ The underlying hash function is configurable
+*/
+
+const (
+ defaultHash = "SHA3" // http://golang.org/pkg/hash/#Hash
+ // defaultHash = "SHA256" // http://golang.org/pkg/hash/#Hash
+ defaultBranches int64 = 128
+ // hashSize int64 = hasherfunc.New().Size() // hasher knows about its own length in bytes
+ // chunksize int64 = branches * hashSize // chunk is defined as this
+)
+
+/*
+Tree chunker is a concrete implementation of data chunking.
+This chunker works in a simple way, it builds a tree out of the document so that each node either represents a chunk of real data or a chunk of data representing an branching non-leaf node of the tree. In particular each such non-leaf chunk will represent is a concatenation of the hash of its respective children. This scheme simultaneously guarantees data integrity as well as self addressing. Abstract nodes are transparent since their represented size component is strictly greater than their maximum data size, since they encode a subtree.
+
+If all is well it is possible to implement this by simply composing readers so that no extra allocation or buffering is necessary for the data splitting and joining. This means that in principle there can be direct IO between : memory, file system, network socket (bzz peers storage request is read from the socket). In practice there may be need for several stages of internal buffering.
+The hashing itself does use extra copies and allocation though, since it does need it.
+*/
+
+type ChunkerParams struct {
+ Branches int64
+ Hash string
+}
+
+func NewChunkerParams() *ChunkerParams {
+ return &ChunkerParams{
+ Branches: defaultBranches,
+ Hash: defaultHash,
+ }
+}
+
+type TreeChunker struct {
+ branches int64
+ hashFunc Hasher
+ // calculated
+ hashSize int64 // self.hashFunc.New().Size()
+ chunkSize int64 // hashSize* branches
+ workerCount int
+}
+
+func NewTreeChunker(params *ChunkerParams) (self *TreeChunker) {
+ self = &TreeChunker{}
+ self.hashFunc = MakeHashFunc(params.Hash)
+ self.branches = params.Branches
+ self.hashSize = int64(self.hashFunc().Size())
+ self.chunkSize = self.hashSize * self.branches
+ self.workerCount = 1
+ return
+}
+
+// func (self *TreeChunker) KeySize() int64 {
+// return self.hashSize
+// }
+
+// String() for pretty printing
+func (self *Chunk) String() string {
+ return fmt.Sprintf("Key: %v TreeSize: %v Chunksize: %v", self.Key.Log(), self.Size, len(self.SData))
+}
+
+type hashJob struct {
+ key Key
+ chunk []byte
+ size int64
+ parentWg *sync.WaitGroup
+}
+
+func (self *TreeChunker) Split(data io.Reader, size int64, chunkC chan *Chunk, swg, wwg *sync.WaitGroup) (Key, error) {
+
+ if self.chunkSize <= 0 {
+ panic("chunker must be initialised")
+ }
+
+ jobC := make(chan *hashJob, 2*processors)
+ wg := &sync.WaitGroup{}
+ errC := make(chan error)
+
+ // wwg = workers waitgroup keeps track of hashworkers spawned by this split call
+ if wwg != nil {
+ wwg.Add(1)
+ }
+ go self.hashWorker(jobC, chunkC, errC, swg, wwg)
+
+ depth := 0
+ treeSize := self.chunkSize
+
+ // takes lowest depth such that chunksize*HashCount^(depth+1) > size
+ // power series, will find the order of magnitude of the data size in base hashCount or numbers of levels of branching in the resulting tree.
+ for ; treeSize < size; treeSize *= self.branches {
+ depth++
+ }
+
+ key := make([]byte, self.hashFunc().Size())
+ // glog.V(logger.Detail).Infof("split request received for data (%v bytes, depth: %v)", size, depth)
+ // this waitgroup member is released after the root hash is calculated
+ wg.Add(1)
+ //launch actual recursive function passing the waitgroups
+ go self.split(depth, treeSize/self.branches, key, data, size, jobC, chunkC, errC, wg, swg, wwg)
+
+ // closes internal error channel if all subprocesses in the workgroup finished
+ go func() {
+ // waiting for all threads to finish
+ wg.Wait()
+ // if storage waitgroup is non-nil, we wait for storage to finish too
+ if swg != nil {
+ // glog.V(logger.Detail).Infof("Waiting for storage to finish")
+ swg.Wait()
+ }
+ close(errC)
+ }()
+
+ select {
+ case err := <-errC:
+ if err != nil {
+ return nil, err
+ }
+ //
+ }
+ return key, nil
+}
+
+func (self *TreeChunker) split(depth int, treeSize int64, key Key, data io.Reader, size int64, jobC chan *hashJob, chunkC chan *Chunk, errC chan error, parentWg, swg, wwg *sync.WaitGroup) {
+
+ for depth > 0 && size < treeSize {
+ treeSize /= self.branches
+ depth--
+ }
+
+ if depth == 0 {
+ // leaf nodes -> content chunks
+ chunkData := make([]byte, size+8)
+ binary.LittleEndian.PutUint64(chunkData[0:8], uint64(size))
+ data.Read(chunkData[8:])
+ select {
+ case jobC <- &hashJob{key, chunkData, size, parentWg}:
+ case <-errC:
+ }
+ // glog.V(logger.Detail).Infof("read %v", size)
+ return
+ }
+ // intermediate chunk containing child nodes hashes
+ branchCnt := int64((size + treeSize - 1) / treeSize)
+ // glog.V(logger.Detail).Infof("intermediate node: setting branches: %v, depth: %v, max subtree size: %v, data size: %v", branches, depth, treeSize, size)
+
+ var chunk []byte = make([]byte, branchCnt*self.hashSize+8)
+ var pos, i int64
+
+ binary.LittleEndian.PutUint64(chunk[0:8], uint64(size))
+
+ childrenWg := &sync.WaitGroup{}
+ var secSize int64
+ for i < branchCnt {
+ // the last item can have shorter data
+ if size-pos < treeSize {
+ secSize = size - pos
+ } else {
+ secSize = treeSize
+ }
+ // the hash of that data
+ subTreeKey := chunk[8+i*self.hashSize : 8+(i+1)*self.hashSize]
+
+ childrenWg.Add(1)
+ self.split(depth-1, treeSize/self.branches, subTreeKey, data, secSize, jobC, chunkC, errC, childrenWg, swg, wwg)
+
+ i++
+ pos += treeSize
+ }
+ // wait for all the children to complete calculating their hashes and copying them onto sections of the chunk
+ // parentWg.Add(1)
+ // go func() {
+ childrenWg.Wait()
+ if len(jobC) > self.workerCount && self.workerCount < processors {
+ if wwg != nil {
+ wwg.Add(1)
+ }
+ self.workerCount++
+ go self.hashWorker(jobC, chunkC, errC, swg, wwg)
+ }
+ select {
+ case jobC <- &hashJob{key, chunk, size, parentWg}:
+ case <-errC:
+ }
+}
+
+func (self *TreeChunker) hashWorker(jobC chan *hashJob, chunkC chan *Chunk, errC chan error, swg, wwg *sync.WaitGroup) {
+ hasher := self.hashFunc()
+ if wwg != nil {
+ defer wwg.Done()
+ }
+ for {
+ select {
+
+ case job, ok := <-jobC:
+ if !ok {
+ return
+ }
+ // now we got the hashes in the chunk, then hash the chunks
+ hasher.Reset()
+ self.hashChunk(hasher, job, chunkC, swg)
+ // glog.V(logger.Detail).Infof("hash chunk (%v)", job.size)
+ case <-errC:
+ return
+ }
+ }
+}
+
+// The treeChunkers own Hash hashes together
+// - the size (of the subtree encoded in the Chunk)
+// - the Chunk, ie. the contents read from the input reader
+func (self *TreeChunker) hashChunk(hasher hash.Hash, job *hashJob, chunkC chan *Chunk, swg *sync.WaitGroup) {
+ hasher.Write(job.chunk)
+ h := hasher.Sum(nil)
+ newChunk := &Chunk{
+ Key: h,
+ SData: job.chunk,
+ Size: job.size,
+ wg: swg,
+ }
+
+ // report hash of this chunk one level up (keys corresponds to the proper subslice of the parent chunk)
+ copy(job.key, h)
+ // send off new chunk to storage
+ if chunkC != nil {
+ if swg != nil {
+ swg.Add(1)
+ }
+ }
+ job.parentWg.Done()
+ if chunkC != nil {
+ chunkC <- newChunk
+ }
+}
+
+// LazyChunkReader implements LazySectionReader
+type LazyChunkReader struct {
+ key Key // root key
+ chunkC chan *Chunk // chunk channel to send retrieve requests on
+ chunk *Chunk // size of the entire subtree
+ off int64 // offset
+ chunkSize int64 // inherit from chunker
+ branches int64 // inherit from chunker
+ hashSize int64 // inherit from chunker
+}
+
+// implements the Joiner interface
+func (self *TreeChunker) Join(key Key, chunkC chan *Chunk) LazySectionReader {
+
+ return &LazyChunkReader{
+ key: key,
+ chunkC: chunkC,
+ chunkSize: self.chunkSize,
+ branches: self.branches,
+ hashSize: self.hashSize,
+ }
+}
+
+// Size is meant to be called on the LazySectionReader
+func (self *LazyChunkReader) Size(quitC chan bool) (n int64, err error) {
+ if self.chunk != nil {
+ return self.chunk.Size, nil
+ }
+ chunk := retrieve(self.key, self.chunkC, quitC)
+ if chunk == nil {
+ select {
+ case <-quitC:
+ return 0, errors.New("aborted")
+ default:
+ return 0, fmt.Errorf("root chunk not found for %v", self.key.Hex())
+ }
+ }
+ self.chunk = chunk
+ return chunk.Size, nil
+}
+
+// read at can be called numerous times
+// concurrent reads are allowed
+// Size() needs to be called synchronously on the LazyChunkReader first
+func (self *LazyChunkReader) ReadAt(b []byte, off int64) (read int, err error) {
+ // this is correct, a swarm doc cannot be zero length, so no EOF is expected
+ if len(b) == 0 {
+ // glog.V(logger.Detail).Infof("Size query for %v", chunk.Key.Log())
+ return 0, nil
+ }
+ quitC := make(chan bool)
+ size, err := self.Size(quitC)
+ if err != nil {
+ return 0, err
+ }
+ // glog.V(logger.Detail).Infof("readAt: len(b): %v, off: %v, size: %v ", len(b), off, size)
+
+ errC := make(chan error)
+ // glog.V(logger.Detail).Infof("readAt: reading %v into %d bytes at offset %d.", self.chunk.Key.Log(), len(b), off)
+
+ // }
+ // glog.V(logger.Detail).Infof("-> want: %v, off: %v size: %v ", want, off, self.size)
+ var treeSize int64
+ var depth int
+ // calculate depth and max treeSize
+ treeSize = self.chunkSize
+ for ; treeSize < size; treeSize *= self.branches {
+ depth++
+ }
+ wg := sync.WaitGroup{}
+ wg.Add(1)
+ go self.join(b, off, off+int64(len(b)), depth, treeSize/self.branches, self.chunk, &wg, errC, quitC)
+ go func() {
+ wg.Wait()
+ close(errC)
+ }()
+
+ err = <-errC
+ if err != nil {
+ close(quitC)
+
+ return 0, err
+ }
+ // glog.V(logger.Detail).Infof("ReadAt received %v", err)
+ // glog.V(logger.Detail).Infof("end: len(b): %v, off: %v, size: %v ", len(b), off, size)
+ if off+int64(len(b)) >= size {
+ // glog.V(logger.Detail).Infof(" len(b): %v EOF", len(b))
+ return len(b), io.EOF
+ }
+ // glog.V(logger.Detail).Infof("ReadAt returning at %d: %v", read, err)
+ return len(b), nil
+}
+
+func (self *LazyChunkReader) join(b []byte, off int64, eoff int64, depth int, treeSize int64, chunk *Chunk, parentWg *sync.WaitGroup, errC chan error, quitC chan bool) {
+ defer parentWg.Done()
+ // return NewDPA(&LocalStore{})
+ // glog.V(logger.Detail).Infof("inh len(b): %v, off: %v eoff: %v ", len(b), off, eoff)
+
+ // glog.V(logger.Detail).Infof("depth: %v, loff: %v, eoff: %v, chunk.Size: %v, treeSize: %v", depth, off, eoff, chunk.Size, treeSize)
+
+ // chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
+
+ // find appropriate block level
+ for chunk.Size < treeSize && depth > 0 {
+ treeSize /= self.branches
+ depth--
+ }
+
+ // leaf chunk found
+ if depth == 0 {
+ // glog.V(logger.Detail).Infof("depth: %v, len(b): %v, off: %v, eoff: %v, chunk.Size: %v %v, treeSize: %v", depth, len(b), off, eoff, chunk.Size, len(chunk.SData), treeSize)
+ extra := 8 + eoff - int64(len(chunk.SData))
+ if extra > 0 {
+ eoff -= extra
+ }
+ copy(b, chunk.SData[8+off:8+eoff])
+ return // simply give back the chunks reader for content chunks
+ }
+
+ // subtree
+ start := off / treeSize
+ end := (eoff + treeSize - 1) / treeSize
+
+ wg := &sync.WaitGroup{}
+ defer wg.Wait()
+ // glog.V(logger.Detail).Infof("start %v,end %v", start, end)
+
+ for i := start; i < end; i++ {
+ soff := i * treeSize
+ roff := soff
+ seoff := soff + treeSize
+
+ if soff < off {
+ soff = off
+ }
+ if seoff > eoff {
+ seoff = eoff
+ }
+ if depth > 1 {
+ wg.Wait()
+ }
+ wg.Add(1)
+ go func(j int64) {
+ childKey := chunk.SData[8+j*self.hashSize : 8+(j+1)*self.hashSize]
+ // glog.V(logger.Detail).Infof("subtree ind.ex: %v -> %v", j, childKey.Log())
+ chunk := retrieve(childKey, self.chunkC, quitC)
+ if chunk == nil {
+ select {
+ case errC <- fmt.Errorf("chunk %v-%v not found", off, off+treeSize):
+ case <-quitC:
+ }
+ return
+ }
+ if soff < off {
+ soff = off
+ }
+ self.join(b[soff-off:seoff-off], soff-roff, seoff-roff, depth-1, treeSize/self.branches, chunk, wg, errC, quitC)
+ }(i)
+ } //for
+}
+
+// the helper method submits chunks for a key to a oueue (DPA) and
+// block until they time out or arrive
+// abort if quitC is readable
+func retrieve(key Key, chunkC chan *Chunk, quitC chan bool) *Chunk {
+ chunk := &Chunk{
+ Key: key,
+ C: make(chan bool), // close channel to signal data delivery
+ }
+ // glog.V(logger.Detail).Infof("chunk data sent for %v (key interval in chunk %v-%v)", ch.Key.Log(), j*self.chunker.hashSize, (j+1)*self.chunker.hashSize)
+ // submit chunk for retrieval
+ select {
+ case chunkC <- chunk: // submit retrieval request, someone should be listening on the other side (or we will time out globally)
+ case <-quitC:
+ return nil
+ }
+ // waiting for the chunk retrieval
+ select { // chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
+
+ case <-quitC:
+ // this is how we control process leakage (quitC is closed once join is finished (after timeout))
+ return nil
+ case <-chunk.C: // bells are ringing, data have been delivered
+ // glog.V(logger.Detail).Infof("chunk data received")
+ }
+ if len(chunk.SData) == 0 {
+ return nil // chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
+
+ }
+ return chunk
+}
+
+// Read keeps a cursor so cannot be called simulateously, see ReadAt
+func (self *LazyChunkReader) Read(b []byte) (read int, err error) {
+ read, err = self.ReadAt(b, self.off)
+ // glog.V(logger.Detail).Infof("read: %v, off: %v, error: %v", read, self.off, err)
+
+ self.off += int64(read)
+ return
+}
+
+// completely analogous to standard SectionReader implementation
+var errWhence = errors.New("Seek: invalid whence")
+var errOffset = errors.New("Seek: invalid offset")
+
+func (s *LazyChunkReader) Seek(offset int64, whence int) (int64, error) {
+ switch whence {
+ default:
+ return 0, errWhence
+ case 0:
+ offset += 0
+ case 1:
+ offset += s.off
+ case 2:
+ if s.chunk == nil {
+ return 0, fmt.Errorf("seek from the end requires rootchunk for size. call Size first")
+ }
+ offset += s.chunk.Size
+ }
+
+ if offset < 0 {
+ return 0, errOffset
+ }
+ s.off = offset
+ return offset, nil
+}
diff --git a/swarm/storage/chunker_test.go b/swarm/storage/chunker_test.go
new file mode 100644
index 000000000..e6ca3d087
--- /dev/null
+++ b/swarm/storage/chunker_test.go
@@ -0,0 +1,303 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "bytes"
+ "encoding/binary"
+ "fmt"
+ "io"
+ "runtime"
+ "sync"
+ "testing"
+ "time"
+)
+
+/*
+Tests TreeChunker by splitting and joining a random byte slice
+*/
+
+type test interface {
+ Fatalf(string, ...interface{})
+ Logf(string, ...interface{})
+}
+
+type chunkerTester struct {
+ inputs map[uint64][]byte
+ chunks map[string]*Chunk
+ t test
+}
+
+func (self *chunkerTester) checkChunks(t *testing.T, want int) {
+ l := len(self.chunks)
+ if l != want {
+ t.Errorf("expected %v chunks, got %v", want, l)
+ }
+}
+
+func (self *chunkerTester) Split(chunker Splitter, data io.Reader, size int64, chunkC chan *Chunk, swg *sync.WaitGroup) (key Key) {
+ // reset
+ self.chunks = make(map[string]*Chunk)
+
+ if self.inputs == nil {
+ self.inputs = make(map[uint64][]byte)
+ }
+
+ quitC := make(chan bool)
+ timeout := time.After(600 * time.Second)
+ if chunkC != nil {
+ go func() {
+ for {
+ select {
+ case <-timeout:
+ self.t.Fatalf("Join timeout error")
+
+ case chunk, ok := <-chunkC:
+ if !ok {
+ // glog.V(logger.Info).Infof("chunkC closed quitting")
+ close(quitC)
+ return
+ }
+ // glog.V(logger.Info).Infof("chunk %v received", len(self.chunks))
+ // self.chunks = append(self.chunks, chunk)
+ self.chunks[chunk.Key.String()] = chunk
+ if chunk.wg != nil {
+ chunk.wg.Done()
+ }
+ }
+ }
+ }()
+ }
+ key, err := chunker.Split(data, size, chunkC, swg, nil)
+ if err != nil {
+ self.t.Fatalf("Split error: %v", err)
+ }
+ if chunkC != nil {
+ if swg != nil {
+ // glog.V(logger.Info).Infof("Waiting for storage to finish")
+ swg.Wait()
+ // glog.V(logger.Info).Infof("Storage finished")
+ }
+ close(chunkC)
+ }
+ if chunkC != nil {
+ // glog.V(logger.Info).Infof("waiting for splitter finished")
+ <-quitC
+ // glog.V(logger.Info).Infof("Splitter finished")
+ }
+ return
+}
+
+func (self *chunkerTester) Join(chunker Chunker, key Key, c int, chunkC chan *Chunk, quitC chan bool) LazySectionReader {
+ // reset but not the chunks
+
+ // glog.V(logger.Info).Infof("Splitter finished")
+ reader := chunker.Join(key, chunkC)
+
+ timeout := time.After(600 * time.Second)
+ // glog.V(logger.Info).Infof("Splitter finished")
+ i := 0
+ go func() {
+ for {
+ select {
+ case <-timeout:
+ self.t.Fatalf("Join timeout error")
+
+ case chunk, ok := <-chunkC:
+ if !ok {
+ close(quitC)
+ return
+ }
+ // glog.V(logger.Info).Infof("chunk %v: %v", i, chunk.Key.String())
+ // this just mocks the behaviour of a chunk store retrieval
+ stored, success := self.chunks[chunk.Key.String()]
+ // glog.V(logger.Info).Infof("chunk %v, success: %v", chunk.Key.String(), success)
+ if !success {
+ self.t.Fatalf("not found")
+ return
+ }
+ // glog.V(logger.Info).Infof("chunk %v: %v", i, chunk.Key.String())
+ chunk.SData = stored.SData
+ chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
+ close(chunk.C)
+ i++
+ }
+ }
+ }()
+ return reader
+}
+
+func testRandomData(splitter Splitter, n int, tester *chunkerTester) {
+ if tester.inputs == nil {
+ tester.inputs = make(map[uint64][]byte)
+ }
+ input, found := tester.inputs[uint64(n)]
+ var data io.Reader
+ if !found {
+ data, input = testDataReaderAndSlice(n)
+ tester.inputs[uint64(n)] = input
+ } else {
+ data = limitReader(bytes.NewReader(input), n)
+ }
+
+ chunkC := make(chan *Chunk, 1000)
+ swg := &sync.WaitGroup{}
+
+ key := tester.Split(splitter, data, int64(n), chunkC, swg)
+ tester.t.Logf(" Key = %v\n", key)
+
+ chunkC = make(chan *Chunk, 1000)
+ quitC := make(chan bool)
+
+ chunker := NewTreeChunker(NewChunkerParams())
+ reader := tester.Join(chunker, key, 0, chunkC, quitC)
+ output := make([]byte, n)
+ // glog.V(logger.Info).Infof(" Key = %v\n", key)
+ r, err := reader.Read(output)
+ // glog.V(logger.Info).Infof(" read = %v %v\n", r, err)
+ if r != n || err != io.EOF {
+ tester.t.Fatalf("read error read: %v n = %v err = %v\n", r, n, err)
+ }
+ if input != nil {
+ if !bytes.Equal(output, input) {
+ tester.t.Fatalf("input and output mismatch\n IN: %v\nOUT: %v\n", input, output)
+ }
+ }
+ close(chunkC)
+ <-quitC
+}
+
+func TestRandomData(t *testing.T) {
+ // sizes := []int{123456}
+ sizes := []int{1, 60, 83, 179, 253, 1024, 4095, 4096, 4097, 123456}
+ tester := &chunkerTester{t: t}
+ chunker := NewTreeChunker(NewChunkerParams())
+ for _, s := range sizes {
+ testRandomData(chunker, s, tester)
+ }
+ pyramid := NewPyramidChunker(NewChunkerParams())
+ for _, s := range sizes {
+ testRandomData(pyramid, s, tester)
+ }
+}
+
+func readAll(reader LazySectionReader, result []byte) {
+ size := int64(len(result))
+
+ var end int64
+ for pos := int64(0); pos < size; pos += 1000 {
+ if pos+1000 > size {
+ end = size
+ } else {
+ end = pos + 1000
+ }
+ reader.ReadAt(result[pos:end], pos)
+ }
+}
+
+func benchReadAll(reader LazySectionReader) {
+ size, _ := reader.Size(nil)
+ output := make([]byte, 1000)
+ for pos := int64(0); pos < size; pos += 1000 {
+ reader.ReadAt(output, pos)
+ }
+}
+
+func benchmarkJoin(n int, t *testing.B) {
+ t.ReportAllocs()
+ for i := 0; i < t.N; i++ {
+ chunker := NewTreeChunker(NewChunkerParams())
+ tester := &chunkerTester{t: t}
+ data := testDataReader(n)
+
+ chunkC := make(chan *Chunk, 1000)
+ swg := &sync.WaitGroup{}
+
+ key := tester.Split(chunker, data, int64(n), chunkC, swg)
+ // t.StartTimer()
+ chunkC = make(chan *Chunk, 1000)
+ quitC := make(chan bool)
+ reader := tester.Join(chunker, key, i, chunkC, quitC)
+ benchReadAll(reader)
+ close(chunkC)
+ <-quitC
+ // t.StopTimer()
+ }
+ stats := new(runtime.MemStats)
+ runtime.ReadMemStats(stats)
+ fmt.Println(stats.Sys)
+}
+
+func benchmarkSplitTree(n int, t *testing.B) {
+ t.ReportAllocs()
+ for i := 0; i < t.N; i++ {
+ chunker := NewTreeChunker(NewChunkerParams())
+ tester := &chunkerTester{t: t}
+ data := testDataReader(n)
+ // glog.V(logger.Info).Infof("splitting data of length %v", n)
+ tester.Split(chunker, data, int64(n), nil, nil)
+ }
+ stats := new(runtime.MemStats)
+ runtime.ReadMemStats(stats)
+ fmt.Println(stats.Sys)
+}
+
+func benchmarkSplitPyramid(n int, t *testing.B) {
+ t.ReportAllocs()
+ for i := 0; i < t.N; i++ {
+ splitter := NewPyramidChunker(NewChunkerParams())
+ tester := &chunkerTester{t: t}
+ data := testDataReader(n)
+ // glog.V(logger.Info).Infof("splitting data of length %v", n)
+ tester.Split(splitter, data, int64(n), nil, nil)
+ }
+ stats := new(runtime.MemStats)
+ runtime.ReadMemStats(stats)
+ fmt.Println(stats.Sys)
+}
+
+func BenchmarkJoin_2(t *testing.B) { benchmarkJoin(100, t) }
+func BenchmarkJoin_3(t *testing.B) { benchmarkJoin(1000, t) }
+func BenchmarkJoin_4(t *testing.B) { benchmarkJoin(10000, t) }
+func BenchmarkJoin_5(t *testing.B) { benchmarkJoin(100000, t) }
+func BenchmarkJoin_6(t *testing.B) { benchmarkJoin(1000000, t) }
+func BenchmarkJoin_7(t *testing.B) { benchmarkJoin(10000000, t) }
+func BenchmarkJoin_8(t *testing.B) { benchmarkJoin(100000000, t) }
+
+func BenchmarkSplitTree_2(t *testing.B) { benchmarkSplitTree(100, t) }
+func BenchmarkSplitTree_2h(t *testing.B) { benchmarkSplitTree(500, t) }
+func BenchmarkSplitTree_3(t *testing.B) { benchmarkSplitTree(1000, t) }
+func BenchmarkSplitTree_3h(t *testing.B) { benchmarkSplitTree(5000, t) }
+func BenchmarkSplitTree_4(t *testing.B) { benchmarkSplitTree(10000, t) }
+func BenchmarkSplitTree_4h(t *testing.B) { benchmarkSplitTree(50000, t) }
+func BenchmarkSplitTree_5(t *testing.B) { benchmarkSplitTree(100000, t) }
+func BenchmarkSplitTree_6(t *testing.B) { benchmarkSplitTree(1000000, t) }
+func BenchmarkSplitTree_7(t *testing.B) { benchmarkSplitTree(10000000, t) }
+func BenchmarkSplitTree_8(t *testing.B) { benchmarkSplitTree(100000000, t) }
+
+func BenchmarkSplitPyramid_2(t *testing.B) { benchmarkSplitPyramid(100, t) }
+func BenchmarkSplitPyramid_2h(t *testing.B) { benchmarkSplitPyramid(500, t) }
+func BenchmarkSplitPyramid_3(t *testing.B) { benchmarkSplitPyramid(1000, t) }
+func BenchmarkSplitPyramid_3h(t *testing.B) { benchmarkSplitPyramid(5000, t) }
+func BenchmarkSplitPyramid_4(t *testing.B) { benchmarkSplitPyramid(10000, t) }
+func BenchmarkSplitPyramid_4h(t *testing.B) { benchmarkSplitPyramid(50000, t) }
+func BenchmarkSplitPyramid_5(t *testing.B) { benchmarkSplitPyramid(100000, t) }
+func BenchmarkSplitPyramid_6(t *testing.B) { benchmarkSplitPyramid(1000000, t) }
+func BenchmarkSplitPyramid_7(t *testing.B) { benchmarkSplitPyramid(10000000, t) }
+func BenchmarkSplitPyramid_8(t *testing.B) { benchmarkSplitPyramid(100000000, t) }
+
+// godep go test -bench ./swarm/storage -cpuprofile cpu.out -memprofile mem.out
diff --git a/swarm/storage/common_test.go b/swarm/storage/common_test.go
new file mode 100644
index 000000000..e81a82b7b
--- /dev/null
+++ b/swarm/storage/common_test.go
@@ -0,0 +1,117 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "bytes"
+ "crypto/rand"
+ "io"
+ "sync"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+type limitedReader struct {
+ r io.Reader
+ off int64
+ size int64
+}
+
+func limitReader(r io.Reader, size int) *limitedReader {
+ return &limitedReader{r, 0, int64(size)}
+}
+
+func (self *limitedReader) Read(buf []byte) (int, error) {
+ limit := int64(len(buf))
+ left := self.size - self.off
+ if limit >= left {
+ limit = left
+ }
+ n, err := self.r.Read(buf[:limit])
+ if err == nil && limit == left {
+ err = io.EOF
+ }
+ self.off += int64(n)
+ return n, err
+}
+
+func testDataReader(l int) (r io.Reader) {
+ return limitReader(rand.Reader, l)
+}
+
+func testDataReaderAndSlice(l int) (r io.Reader, slice []byte) {
+ slice = make([]byte, l)
+ if _, err := rand.Read(slice); err != nil {
+ panic("rand error")
+ }
+ r = limitReader(bytes.NewReader(slice), l)
+ return
+}
+
+func testStore(m ChunkStore, l int64, branches int64, t *testing.T) {
+
+ chunkC := make(chan *Chunk)
+ go func() {
+ for chunk := range chunkC {
+ m.Put(chunk)
+ if chunk.wg != nil {
+ chunk.wg.Done()
+ }
+ }
+ }()
+ chunker := NewTreeChunker(&ChunkerParams{
+ Branches: branches,
+ Hash: defaultHash,
+ })
+ swg := &sync.WaitGroup{}
+ key, err := chunker.Split(rand.Reader, l, chunkC, swg, nil)
+ swg.Wait()
+ close(chunkC)
+ chunkC = make(chan *Chunk)
+
+ quit := make(chan bool)
+
+ go func() {
+ for ch := range chunkC {
+ go func(chunk *Chunk) {
+ storedChunk, err := m.Get(chunk.Key)
+ if err == notFound {
+ glog.V(logger.Detail).Infof("chunk '%v' not found", chunk.Key.Log())
+ } else if err != nil {
+ glog.V(logger.Detail).Infof("error retrieving chunk %v: %v", chunk.Key.Log(), err)
+ } else {
+ chunk.SData = storedChunk.SData
+ chunk.Size = storedChunk.Size
+ }
+ glog.V(logger.Detail).Infof("chunk '%v' not found", chunk.Key.Log())
+ close(chunk.C)
+ }(ch)
+ }
+ close(quit)
+ }()
+ r := chunker.Join(key, chunkC)
+
+ b := make([]byte, l)
+ n, err := r.ReadAt(b, 0)
+ if err != io.EOF {
+ t.Fatalf("read error (%v/%v) %v", n, l, err)
+ }
+ close(chunkC)
+ <-quit
+}
diff --git a/swarm/storage/database.go b/swarm/storage/database.go
new file mode 100644
index 000000000..2532490cc
--- /dev/null
+++ b/swarm/storage/database.go
@@ -0,0 +1,99 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+// this is a clone of an earlier state of the ethereum ethdb/database
+// no need for queueing/caching
+
+import (
+ "fmt"
+
+ "github.com/ethereum/go-ethereum/compression/rle"
+ "github.com/syndtr/goleveldb/leveldb"
+ "github.com/syndtr/goleveldb/leveldb/iterator"
+ "github.com/syndtr/goleveldb/leveldb/opt"
+)
+
+const openFileLimit = 128
+
+type LDBDatabase struct {
+ db *leveldb.DB
+ comp bool
+}
+
+func NewLDBDatabase(file string) (*LDBDatabase, error) {
+ // Open the db
+ db, err := leveldb.OpenFile(file, &opt.Options{OpenFilesCacheCapacity: openFileLimit})
+ if err != nil {
+ return nil, err
+ }
+
+ database := &LDBDatabase{db: db, comp: false}
+
+ return database, nil
+}
+
+func (self *LDBDatabase) Put(key []byte, value []byte) {
+ if self.comp {
+ value = rle.Compress(value)
+ }
+
+ err := self.db.Put(key, value, nil)
+ if err != nil {
+ fmt.Println("Error put", err)
+ }
+}
+
+func (self *LDBDatabase) Get(key []byte) ([]byte, error) {
+ dat, err := self.db.Get(key, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ if self.comp {
+ return rle.Decompress(dat)
+ }
+
+ return dat, nil
+}
+
+func (self *LDBDatabase) Delete(key []byte) error {
+ return self.db.Delete(key, nil)
+}
+
+func (self *LDBDatabase) LastKnownTD() []byte {
+ data, _ := self.Get([]byte("LTD"))
+
+ if len(data) == 0 {
+ data = []byte{0x0}
+ }
+
+ return data
+}
+
+func (self *LDBDatabase) NewIterator() iterator.Iterator {
+ return self.db.NewIterator(nil, nil)
+}
+
+func (self *LDBDatabase) Write(batch *leveldb.Batch) error {
+ return self.db.Write(batch, nil)
+}
+
+func (self *LDBDatabase) Close() {
+ // Close the leveldb database
+ self.db.Close()
+}
diff --git a/swarm/storage/dbstore.go b/swarm/storage/dbstore.go
new file mode 100644
index 000000000..5ecc5c500
--- /dev/null
+++ b/swarm/storage/dbstore.go
@@ -0,0 +1,473 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// disk storage layer for the package bzz
+// DbStore implements the ChunkStore interface and is used by the DPA as
+// persistent storage of chunks
+// it implements purging based on access count allowing for external control of
+// max capacity
+
+package storage
+
+import (
+ "bytes"
+ "encoding/binary"
+ "fmt"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/rlp"
+ "github.com/syndtr/goleveldb/leveldb"
+ "github.com/syndtr/goleveldb/leveldb/iterator"
+)
+
+const (
+ defaultDbCapacity = 5000000
+ defaultRadius = 0 // not yet used
+
+ gcArraySize = 10000
+ gcArrayFreeRatio = 0.1
+
+ // key prefixes for leveldb storage
+ kpIndex = 0
+ kpData = 1
+)
+
+var (
+ keyAccessCnt = []byte{2}
+ keyEntryCnt = []byte{3}
+ keyDataIdx = []byte{4}
+ keyGCPos = []byte{5}
+)
+
+type gcItem struct {
+ idx uint64
+ value uint64
+ idxKey []byte
+}
+
+type DbStore struct {
+ db *LDBDatabase
+
+ // this should be stored in db, accessed transactionally
+ entryCnt, accessCnt, dataIdx, capacity uint64
+
+ gcPos, gcStartPos []byte
+ gcArray []*gcItem
+
+ hashfunc Hasher
+
+ lock sync.Mutex
+}
+
+func NewDbStore(path string, hash Hasher, capacity uint64, radius int) (s *DbStore, err error) {
+ s = new(DbStore)
+
+ s.hashfunc = hash
+
+ s.db, err = NewLDBDatabase(path)
+ if err != nil {
+ return
+ }
+
+ s.setCapacity(capacity)
+
+ s.gcStartPos = make([]byte, 1)
+ s.gcStartPos[0] = kpIndex
+ s.gcArray = make([]*gcItem, gcArraySize)
+
+ data, _ := s.db.Get(keyEntryCnt)
+ s.entryCnt = BytesToU64(data)
+ data, _ = s.db.Get(keyAccessCnt)
+ s.accessCnt = BytesToU64(data)
+ data, _ = s.db.Get(keyDataIdx)
+ s.dataIdx = BytesToU64(data)
+ s.gcPos, _ = s.db.Get(keyGCPos)
+ if s.gcPos == nil {
+ s.gcPos = s.gcStartPos
+ }
+ return
+}
+
+type dpaDBIndex struct {
+ Idx uint64
+ Access uint64
+}
+
+func BytesToU64(data []byte) uint64 {
+ if len(data) < 8 {
+ return 0
+ }
+ return binary.LittleEndian.Uint64(data)
+}
+
+func U64ToBytes(val uint64) []byte {
+ data := make([]byte, 8)
+ binary.LittleEndian.PutUint64(data, val)
+ return data
+}
+
+func getIndexGCValue(index *dpaDBIndex) uint64 {
+ return index.Access
+}
+
+func (s *DbStore) updateIndexAccess(index *dpaDBIndex) {
+ index.Access = s.accessCnt
+}
+
+func getIndexKey(hash Key) []byte {
+ HashSize := len(hash)
+ key := make([]byte, HashSize+1)
+ key[0] = 0
+ copy(key[1:], hash[:])
+ return key
+}
+
+func getDataKey(idx uint64) []byte {
+ key := make([]byte, 9)
+ key[0] = 1
+ binary.BigEndian.PutUint64(key[1:9], idx)
+
+ return key
+}
+
+func encodeIndex(index *dpaDBIndex) []byte {
+ data, _ := rlp.EncodeToBytes(index)
+ return data
+}
+
+func encodeData(chunk *Chunk) []byte {
+ return chunk.SData
+}
+
+func decodeIndex(data []byte, index *dpaDBIndex) {
+ dec := rlp.NewStream(bytes.NewReader(data), 0)
+ dec.Decode(index)
+}
+
+func decodeData(data []byte, chunk *Chunk) {
+ chunk.SData = data
+ chunk.Size = int64(binary.LittleEndian.Uint64(data[0:8]))
+}
+
+func gcListPartition(list []*gcItem, left int, right int, pivotIndex int) int {
+ pivotValue := list[pivotIndex].value
+ dd := list[pivotIndex]
+ list[pivotIndex] = list[right]
+ list[right] = dd
+ storeIndex := left
+ for i := left; i < right; i++ {
+ if list[i].value < pivotValue {
+ dd = list[storeIndex]
+ list[storeIndex] = list[i]
+ list[i] = dd
+ storeIndex++
+ }
+ }
+ dd = list[storeIndex]
+ list[storeIndex] = list[right]
+ list[right] = dd
+ return storeIndex
+}
+
+func gcListSelect(list []*gcItem, left int, right int, n int) int {
+ if left == right {
+ return left
+ }
+ pivotIndex := (left + right) / 2
+ pivotIndex = gcListPartition(list, left, right, pivotIndex)
+ if n == pivotIndex {
+ return n
+ } else {
+ if n < pivotIndex {
+ return gcListSelect(list, left, pivotIndex-1, n)
+ } else {
+ return gcListSelect(list, pivotIndex+1, right, n)
+ }
+ }
+}
+
+func (s *DbStore) collectGarbage(ratio float32) {
+ it := s.db.NewIterator()
+ it.Seek(s.gcPos)
+ if it.Valid() {
+ s.gcPos = it.Key()
+ } else {
+ s.gcPos = nil
+ }
+ gcnt := 0
+
+ for (gcnt < gcArraySize) && (uint64(gcnt) < s.entryCnt) {
+
+ if (s.gcPos == nil) || (s.gcPos[0] != kpIndex) {
+ it.Seek(s.gcStartPos)
+ if it.Valid() {
+ s.gcPos = it.Key()
+ } else {
+ s.gcPos = nil
+ }
+ }
+
+ if (s.gcPos == nil) || (s.gcPos[0] != kpIndex) {
+ break
+ }
+
+ gci := new(gcItem)
+ gci.idxKey = s.gcPos
+ var index dpaDBIndex
+ decodeIndex(it.Value(), &index)
+ gci.idx = index.Idx
+ // the smaller, the more likely to be gc'd
+ gci.value = getIndexGCValue(&index)
+ s.gcArray[gcnt] = gci
+ gcnt++
+ it.Next()
+ if it.Valid() {
+ s.gcPos = it.Key()
+ } else {
+ s.gcPos = nil
+ }
+ }
+ it.Release()
+
+ cutidx := gcListSelect(s.gcArray, 0, gcnt-1, int(float32(gcnt)*ratio))
+ cutval := s.gcArray[cutidx].value
+
+ // fmt.Print(gcnt, " ", s.entryCnt, " ")
+
+ // actual gc
+ for i := 0; i < gcnt; i++ {
+ if s.gcArray[i].value <= cutval {
+ batch := new(leveldb.Batch)
+ batch.Delete(s.gcArray[i].idxKey)
+ batch.Delete(getDataKey(s.gcArray[i].idx))
+ s.entryCnt--
+ batch.Put(keyEntryCnt, U64ToBytes(s.entryCnt))
+ s.db.Write(batch)
+ }
+ }
+
+ // fmt.Println(s.entryCnt)
+
+ s.db.Put(keyGCPos, s.gcPos)
+}
+
+func (s *DbStore) Counter() uint64 {
+ s.lock.Lock()
+ defer s.lock.Unlock()
+ return s.dataIdx
+}
+
+func (s *DbStore) Put(chunk *Chunk) {
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ ikey := getIndexKey(chunk.Key)
+ var index dpaDBIndex
+
+ if s.tryAccessIdx(ikey, &index) {
+ if chunk.dbStored != nil {
+ close(chunk.dbStored)
+ }
+ return // already exists, only update access
+ }
+
+ data := encodeData(chunk)
+ //data := ethutil.Encode([]interface{}{entry})
+
+ if s.entryCnt >= s.capacity {
+ s.collectGarbage(gcArrayFreeRatio)
+ }
+
+ batch := new(leveldb.Batch)
+
+ batch.Put(getDataKey(s.dataIdx), data)
+
+ index.Idx = s.dataIdx
+ s.updateIndexAccess(&index)
+
+ idata := encodeIndex(&index)
+ batch.Put(ikey, idata)
+
+ batch.Put(keyEntryCnt, U64ToBytes(s.entryCnt))
+ s.entryCnt++
+ batch.Put(keyDataIdx, U64ToBytes(s.dataIdx))
+ s.dataIdx++
+ batch.Put(keyAccessCnt, U64ToBytes(s.accessCnt))
+ s.accessCnt++
+
+ s.db.Write(batch)
+ if chunk.dbStored != nil {
+ close(chunk.dbStored)
+ }
+ glog.V(logger.Detail).Infof("DbStore.Put: %v. db storage counter: %v ", chunk.Key.Log(), s.dataIdx)
+}
+
+// try to find index; if found, update access cnt and return true
+func (s *DbStore) tryAccessIdx(ikey []byte, index *dpaDBIndex) bool {
+ idata, err := s.db.Get(ikey)
+ if err != nil {
+ return false
+ }
+ decodeIndex(idata, index)
+
+ batch := new(leveldb.Batch)
+
+ batch.Put(keyAccessCnt, U64ToBytes(s.accessCnt))
+ s.accessCnt++
+ s.updateIndexAccess(index)
+ idata = encodeIndex(index)
+ batch.Put(ikey, idata)
+
+ s.db.Write(batch)
+
+ return true
+}
+
+func (s *DbStore) Get(key Key) (chunk *Chunk, err error) {
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ var index dpaDBIndex
+
+ if s.tryAccessIdx(getIndexKey(key), &index) {
+ var data []byte
+ data, err = s.db.Get(getDataKey(index.Idx))
+ if err != nil {
+ return
+ }
+
+ hasher := s.hashfunc()
+ hasher.Write(data)
+ hash := hasher.Sum(nil)
+ if bytes.Compare(hash, key) != 0 {
+ s.db.Delete(getDataKey(index.Idx))
+ err = fmt.Errorf("invalid chunk. hash=%x, key=%v", hash, key[:])
+ return
+ }
+
+ chunk = &Chunk{
+ Key: key,
+ }
+ decodeData(data, chunk)
+ } else {
+ err = notFound
+ }
+
+ return
+
+}
+
+func (s *DbStore) updateAccessCnt(key Key) {
+
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ var index dpaDBIndex
+ s.tryAccessIdx(getIndexKey(key), &index) // result_chn == nil, only update access cnt
+
+}
+
+func (s *DbStore) setCapacity(c uint64) {
+
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ s.capacity = c
+
+ if s.entryCnt > c {
+ var ratio float32
+ ratio = float32(1.01) - float32(c)/float32(s.entryCnt)
+ if ratio < gcArrayFreeRatio {
+ ratio = gcArrayFreeRatio
+ }
+ if ratio > 1 {
+ ratio = 1
+ }
+ for s.entryCnt > c {
+ s.collectGarbage(ratio)
+ }
+ }
+}
+
+func (s *DbStore) getEntryCnt() uint64 {
+ return s.entryCnt
+}
+
+func (s *DbStore) close() {
+ s.db.Close()
+}
+
+// describes a section of the DbStore representing the unsynced
+// domain relevant to a peer
+// Start - Stop designate a continuous area Keys in an address space
+// typically the addresses closer to us than to the peer but not closer
+// another closer peer in between
+// From - To designates a time interval typically from the last disconnect
+// till the latest connection (real time traffic is relayed)
+type DbSyncState struct {
+ Start, Stop Key
+ First, Last uint64
+}
+
+// implements the syncer iterator interface
+// iterates by storage index (~ time of storage = first entry to db)
+type dbSyncIterator struct {
+ it iterator.Iterator
+ DbSyncState
+}
+
+// initialises a sync iterator from a syncToken (passed in with the handshake)
+func (self *DbStore) NewSyncIterator(state DbSyncState) (si *dbSyncIterator, err error) {
+ if state.First > state.Last {
+ return nil, fmt.Errorf("no entries found")
+ }
+ si = &dbSyncIterator{
+ it: self.db.NewIterator(),
+ DbSyncState: state,
+ }
+ si.it.Seek(getIndexKey(state.Start))
+ return si, nil
+}
+
+// walk the area from Start to Stop and returns items within time interval
+// First to Last
+func (self *dbSyncIterator) Next() (key Key) {
+ for self.it.Valid() {
+ dbkey := self.it.Key()
+ if dbkey[0] != 0 {
+ break
+ }
+ key = Key(make([]byte, len(dbkey)-1))
+ copy(key[:], dbkey[1:])
+ if bytes.Compare(key[:], self.Start) <= 0 {
+ self.it.Next()
+ continue
+ }
+ if bytes.Compare(key[:], self.Stop) > 0 {
+ break
+ }
+ var index dpaDBIndex
+ decodeIndex(self.it.Value(), &index)
+ self.it.Next()
+ if (index.Idx >= self.First) && (index.Idx < self.Last) {
+ return
+ }
+ }
+ self.it.Release()
+ return nil
+}
diff --git a/swarm/storage/dbstore_test.go b/swarm/storage/dbstore_test.go
new file mode 100644
index 000000000..e2f36a6bc
--- /dev/null
+++ b/swarm/storage/dbstore_test.go
@@ -0,0 +1,191 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "bytes"
+ "io/ioutil"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+func initDbStore(t *testing.T) *DbStore {
+ dir, err := ioutil.TempDir("", "bzz-storage-test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ m, err := NewDbStore(dir, MakeHashFunc(defaultHash), defaultDbCapacity, defaultRadius)
+ if err != nil {
+ t.Fatal("can't create store:", err)
+ }
+ return m
+}
+
+func testDbStore(l int64, branches int64, t *testing.T) {
+ m := initDbStore(t)
+ defer m.close()
+ testStore(m, l, branches, t)
+}
+
+func TestDbStore128_0x1000000(t *testing.T) {
+ testDbStore(0x1000000, 128, t)
+}
+
+func TestDbStore128_10000_(t *testing.T) {
+ testDbStore(10000, 128, t)
+}
+
+func TestDbStore128_1000_(t *testing.T) {
+ testDbStore(1000, 128, t)
+}
+
+func TestDbStore128_100_(t *testing.T) {
+ testDbStore(100, 128, t)
+}
+
+func TestDbStore2_100_(t *testing.T) {
+ testDbStore(100, 2, t)
+}
+
+func TestDbStoreNotFound(t *testing.T) {
+ m := initDbStore(t)
+ defer m.close()
+ _, err := m.Get(ZeroKey)
+ if err != notFound {
+ t.Errorf("Expected notFound, got %v", err)
+ }
+}
+
+func TestDbStoreSyncIterator(t *testing.T) {
+ m := initDbStore(t)
+ defer m.close()
+ keys := []Key{
+ Key(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000000")),
+ Key(common.Hex2Bytes("4000000000000000000000000000000000000000000000000000000000000000")),
+ Key(common.Hex2Bytes("5000000000000000000000000000000000000000000000000000000000000000")),
+ Key(common.Hex2Bytes("3000000000000000000000000000000000000000000000000000000000000000")),
+ Key(common.Hex2Bytes("2000000000000000000000000000000000000000000000000000000000000000")),
+ Key(common.Hex2Bytes("1000000000000000000000000000000000000000000000000000000000000000")),
+ }
+ for _, key := range keys {
+ m.Put(NewChunk(key, nil))
+ }
+ it, err := m.NewSyncIterator(DbSyncState{
+ Start: Key(common.Hex2Bytes("1000000000000000000000000000000000000000000000000000000000000000")),
+ Stop: Key(common.Hex2Bytes("4000000000000000000000000000000000000000000000000000000000000000")),
+ First: 2,
+ Last: 4,
+ })
+ if err != nil {
+ t.Fatalf("unexpected error creating NewSyncIterator")
+ }
+
+ var chunk Key
+ var res []Key
+ for {
+ chunk = it.Next()
+ if chunk == nil {
+ break
+ }
+ res = append(res, chunk)
+ }
+ if len(res) != 1 {
+ t.Fatalf("Expected 1 chunk, got %v: %v", len(res), res)
+ }
+ if !bytes.Equal(res[0][:], keys[3]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[3], res[0])
+ }
+
+ if err != nil {
+ t.Fatalf("unexpected error creating NewSyncIterator")
+ }
+
+ it, err = m.NewSyncIterator(DbSyncState{
+ Start: Key(common.Hex2Bytes("1000000000000000000000000000000000000000000000000000000000000000")),
+ Stop: Key(common.Hex2Bytes("5000000000000000000000000000000000000000000000000000000000000000")),
+ First: 2,
+ Last: 4,
+ })
+
+ res = nil
+ for {
+ chunk = it.Next()
+ if chunk == nil {
+ break
+ }
+ res = append(res, chunk)
+ }
+ if len(res) != 2 {
+ t.Fatalf("Expected 2 chunk, got %v: %v", len(res), res)
+ }
+ if !bytes.Equal(res[0][:], keys[3]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[3], res[0])
+ }
+ if !bytes.Equal(res[1][:], keys[2]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[2], res[1])
+ }
+
+ if err != nil {
+ t.Fatalf("unexpected error creating NewSyncIterator")
+ }
+
+ it, err = m.NewSyncIterator(DbSyncState{
+ Start: Key(common.Hex2Bytes("1000000000000000000000000000000000000000000000000000000000000000")),
+ Stop: Key(common.Hex2Bytes("4000000000000000000000000000000000000000000000000000000000000000")),
+ First: 2,
+ Last: 5,
+ })
+ res = nil
+ for {
+ chunk = it.Next()
+ if chunk == nil {
+ break
+ }
+ res = append(res, chunk)
+ }
+ if len(res) != 2 {
+ t.Fatalf("Expected 2 chunk, got %v", len(res))
+ }
+ if !bytes.Equal(res[0][:], keys[4]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[4], res[0])
+ }
+ if !bytes.Equal(res[1][:], keys[3]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[3], res[1])
+ }
+
+ it, err = m.NewSyncIterator(DbSyncState{
+ Start: Key(common.Hex2Bytes("2000000000000000000000000000000000000000000000000000000000000000")),
+ Stop: Key(common.Hex2Bytes("4000000000000000000000000000000000000000000000000000000000000000")),
+ First: 2,
+ Last: 5,
+ })
+ res = nil
+ for {
+ chunk = it.Next()
+ if chunk == nil {
+ break
+ }
+ res = append(res, chunk)
+ }
+ if len(res) != 1 {
+ t.Fatalf("Expected 1 chunk, got %v", len(res))
+ }
+ if !bytes.Equal(res[0][:], keys[3]) {
+ t.Fatalf("Expected %v chunk, got %v", keys[3], res[0])
+ }
+}
diff --git a/swarm/storage/dpa.go b/swarm/storage/dpa.go
new file mode 100644
index 000000000..31b6c54ac
--- /dev/null
+++ b/swarm/storage/dpa.go
@@ -0,0 +1,239 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "errors"
+ "io"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+/*
+DPA provides the client API entrypoints Store and Retrieve to store and retrieve
+It can store anything that has a byte slice representation, so files or serialised objects etc.
+
+Storage: DPA calls the Chunker to segment the input datastream of any size to a merkle hashed tree of chunks. The key of the root block is returned to the client.
+
+Retrieval: given the key of the root block, the DPA retrieves the block chunks and reconstructs the original data and passes it back as a lazy reader. A lazy reader is a reader with on-demand delayed processing, i.e. the chunks needed to reconstruct a large file are only fetched and processed if that particular part of the document is actually read.
+
+As the chunker produces chunks, DPA dispatches them to its own chunk store
+implementation for storage or retrieval.
+*/
+
+const (
+ storeChanCapacity = 100
+ retrieveChanCapacity = 100
+ singletonSwarmDbCapacity = 50000
+ singletonSwarmCacheCapacity = 500
+ maxStoreProcesses = 8
+ maxRetrieveProcesses = 8
+)
+
+var (
+ notFound = errors.New("not found")
+)
+
+type DPA struct {
+ ChunkStore
+ storeC chan *Chunk
+ retrieveC chan *Chunk
+ Chunker Chunker
+
+ lock sync.Mutex
+ running bool
+ wg *sync.WaitGroup
+ quitC chan bool
+}
+
+// for testing locally
+func NewLocalDPA(datadir string) (*DPA, error) {
+
+ hash := MakeHashFunc("SHA256")
+
+ dbStore, err := NewDbStore(datadir, hash, singletonSwarmDbCapacity, 0)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewDPA(&LocalStore{
+ NewMemStore(dbStore, singletonSwarmCacheCapacity),
+ dbStore,
+ }, NewChunkerParams()), nil
+}
+
+func NewDPA(store ChunkStore, params *ChunkerParams) *DPA {
+ chunker := NewTreeChunker(params)
+ return &DPA{
+ Chunker: chunker,
+ ChunkStore: store,
+ }
+}
+
+// Public API. Main entry point for document retrieval directly. Used by the
+// FS-aware API and httpaccess
+// Chunk retrieval blocks on netStore requests with a timeout so reader will
+// report error if retrieval of chunks within requested range time out.
+func (self *DPA) Retrieve(key Key) LazySectionReader {
+ return self.Chunker.Join(key, self.retrieveC)
+}
+
+// Public API. Main entry point for document storage directly. Used by the
+// FS-aware API and httpaccess
+func (self *DPA) Store(data io.Reader, size int64, swg *sync.WaitGroup, wwg *sync.WaitGroup) (key Key, err error) {
+ return self.Chunker.Split(data, size, self.storeC, swg, wwg)
+}
+
+func (self *DPA) Start() {
+ self.lock.Lock()
+ defer self.lock.Unlock()
+ if self.running {
+ return
+ }
+ self.running = true
+ self.retrieveC = make(chan *Chunk, retrieveChanCapacity)
+ self.storeC = make(chan *Chunk, storeChanCapacity)
+ self.quitC = make(chan bool)
+ self.storeLoop()
+ self.retrieveLoop()
+}
+
+func (self *DPA) Stop() {
+ self.lock.Lock()
+ defer self.lock.Unlock()
+ if !self.running {
+ return
+ }
+ self.running = false
+ close(self.quitC)
+}
+
+// retrieveLoop dispatches the parallel chunk retrieval requests received on the
+// retrieve channel to its ChunkStore (NetStore or LocalStore)
+func (self *DPA) retrieveLoop() {
+ for i := 0; i < maxRetrieveProcesses; i++ {
+ go self.retrieveWorker()
+ }
+ glog.V(logger.Detail).Infof("dpa: retrieve loop spawning %v workers", maxRetrieveProcesses)
+}
+
+func (self *DPA) retrieveWorker() {
+ for chunk := range self.retrieveC {
+ glog.V(logger.Detail).Infof("dpa: retrieve loop : chunk %v", chunk.Key.Log())
+ storedChunk, err := self.Get(chunk.Key)
+ if err == notFound {
+ glog.V(logger.Detail).Infof("chunk %v not found", chunk.Key.Log())
+ } else if err != nil {
+ glog.V(logger.Detail).Infof("error retrieving chunk %v: %v", chunk.Key.Log(), err)
+ } else {
+ chunk.SData = storedChunk.SData
+ chunk.Size = storedChunk.Size
+ }
+ close(chunk.C)
+
+ select {
+ case <-self.quitC:
+ return
+ default:
+ }
+ }
+}
+
+// storeLoop dispatches the parallel chunk store request processors
+// received on the store channel to its ChunkStore (NetStore or LocalStore)
+func (self *DPA) storeLoop() {
+ for i := 0; i < maxStoreProcesses; i++ {
+ go self.storeWorker()
+ }
+ glog.V(logger.Detail).Infof("dpa: store spawning %v workers", maxStoreProcesses)
+}
+
+func (self *DPA) storeWorker() {
+
+ for chunk := range self.storeC {
+ self.Put(chunk)
+ if chunk.wg != nil {
+ glog.V(logger.Detail).Infof("dpa: store processor %v", chunk.Key.Log())
+ chunk.wg.Done()
+
+ }
+ select {
+ case <-self.quitC:
+ return
+ default:
+ }
+ }
+}
+
+// DpaChunkStore implements the ChunkStore interface,
+// this chunk access layer assumed 2 chunk stores
+// local storage eg. LocalStore and network storage eg., NetStore
+// access by calling network is blocking with a timeout
+
+type dpaChunkStore struct {
+ n int
+ localStore ChunkStore
+ netStore ChunkStore
+}
+
+func NewDpaChunkStore(localStore, netStore ChunkStore) *dpaChunkStore {
+ return &dpaChunkStore{0, localStore, netStore}
+}
+
+// Get is the entrypoint for local retrieve requests
+// waits for response or times out
+func (self *dpaChunkStore) Get(key Key) (chunk *Chunk, err error) {
+ chunk, err = self.netStore.Get(key)
+ // timeout := time.Now().Add(searchTimeout)
+ if chunk.SData != nil {
+ glog.V(logger.Detail).Infof("DPA.Get: %v found locally, %d bytes", key.Log(), len(chunk.SData))
+ return
+ }
+ // TODO: use self.timer time.Timer and reset with defer disableTimer
+ timer := time.After(searchTimeout)
+ select {
+ case <-timer:
+ glog.V(logger.Detail).Infof("DPA.Get: %v request time out ", key.Log())
+ err = notFound
+ case <-chunk.Req.C:
+ glog.V(logger.Detail).Infof("DPA.Get: %v retrieved, %d bytes (%p)", key.Log(), len(chunk.SData), chunk)
+ }
+ return
+}
+
+// Put is the entrypoint for local store requests coming from storeLoop
+func (self *dpaChunkStore) Put(entry *Chunk) {
+ chunk, err := self.localStore.Get(entry.Key)
+ if err != nil {
+ glog.V(logger.Detail).Infof("DPA.Put: %v new chunk. call netStore.Put", entry.Key.Log())
+ chunk = entry
+ } else if chunk.SData == nil {
+ glog.V(logger.Detail).Infof("DPA.Put: %v request entry found", entry.Key.Log())
+ chunk.SData = entry.SData
+ chunk.Size = entry.Size
+ } else {
+ glog.V(logger.Detail).Infof("DPA.Put: %v chunk already known", entry.Key.Log())
+ return
+ }
+ // from this point on the storage logic is the same with network storage requests
+ glog.V(logger.Detail).Infof("DPA.Put %v: %v", self.n, chunk.Key.Log())
+ self.n++
+ self.netStore.Put(chunk)
+}
diff --git a/swarm/storage/dpa_test.go b/swarm/storage/dpa_test.go
new file mode 100644
index 000000000..1cde1c00e
--- /dev/null
+++ b/swarm/storage/dpa_test.go
@@ -0,0 +1,144 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "bytes"
+ "io"
+ "io/ioutil"
+ "os"
+ "sync"
+ "testing"
+)
+
+const testDataSize = 0x1000000
+
+func TestDPArandom(t *testing.T) {
+ dbStore := initDbStore(t)
+ dbStore.setCapacity(50000)
+ memStore := NewMemStore(dbStore, defaultCacheCapacity)
+ localStore := &LocalStore{
+ memStore,
+ dbStore,
+ }
+ chunker := NewTreeChunker(NewChunkerParams())
+ dpa := &DPA{
+ Chunker: chunker,
+ ChunkStore: localStore,
+ }
+ dpa.Start()
+ defer dpa.Stop()
+ defer os.RemoveAll("/tmp/bzz")
+
+ reader, slice := testDataReaderAndSlice(testDataSize)
+ wg := &sync.WaitGroup{}
+ key, err := dpa.Store(reader, testDataSize, wg, nil)
+ if err != nil {
+ t.Errorf("Store error: %v", err)
+ }
+ wg.Wait()
+ resultReader := dpa.Retrieve(key)
+ resultSlice := make([]byte, len(slice))
+ n, err := resultReader.ReadAt(resultSlice, 0)
+ if err != io.EOF {
+ t.Errorf("Retrieve error: %v", err)
+ }
+ if n != len(slice) {
+ t.Errorf("Slice size error got %d, expected %d.", n, len(slice))
+ }
+ if !bytes.Equal(slice, resultSlice) {
+ t.Errorf("Comparison error.")
+ }
+ ioutil.WriteFile("/tmp/slice.bzz.16M", slice, 0666)
+ ioutil.WriteFile("/tmp/result.bzz.16M", resultSlice, 0666)
+ localStore.memStore = NewMemStore(dbStore, defaultCacheCapacity)
+ resultReader = dpa.Retrieve(key)
+ for i, _ := range resultSlice {
+ resultSlice[i] = 0
+ }
+ n, err = resultReader.ReadAt(resultSlice, 0)
+ if err != io.EOF {
+ t.Errorf("Retrieve error after removing memStore: %v", err)
+ }
+ if n != len(slice) {
+ t.Errorf("Slice size error after removing memStore got %d, expected %d.", n, len(slice))
+ }
+ if !bytes.Equal(slice, resultSlice) {
+ t.Errorf("Comparison error after removing memStore.")
+ }
+}
+
+func TestDPA_capacity(t *testing.T) {
+ dbStore := initDbStore(t)
+ memStore := NewMemStore(dbStore, defaultCacheCapacity)
+ localStore := &LocalStore{
+ memStore,
+ dbStore,
+ }
+ memStore.setCapacity(0)
+ chunker := NewTreeChunker(NewChunkerParams())
+ dpa := &DPA{
+ Chunker: chunker,
+ ChunkStore: localStore,
+ }
+ dpa.Start()
+ reader, slice := testDataReaderAndSlice(testDataSize)
+ wg := &sync.WaitGroup{}
+ key, err := dpa.Store(reader, testDataSize, wg, nil)
+ if err != nil {
+ t.Errorf("Store error: %v", err)
+ }
+ wg.Wait()
+ resultReader := dpa.Retrieve(key)
+ resultSlice := make([]byte, len(slice))
+ n, err := resultReader.ReadAt(resultSlice, 0)
+ if err != io.EOF {
+ t.Errorf("Retrieve error: %v", err)
+ }
+ if n != len(slice) {
+ t.Errorf("Slice size error got %d, expected %d.", n, len(slice))
+ }
+ if !bytes.Equal(slice, resultSlice) {
+ t.Errorf("Comparison error.")
+ }
+ // Clear memStore
+ memStore.setCapacity(0)
+ // check whether it is, indeed, empty
+ dpa.ChunkStore = memStore
+ resultReader = dpa.Retrieve(key)
+ n, err = resultReader.ReadAt(resultSlice, 0)
+ if err == nil {
+ t.Errorf("Was able to read %d bytes from an empty memStore.", len(slice))
+ }
+ // check how it works with localStore
+ dpa.ChunkStore = localStore
+ // localStore.dbStore.setCapacity(0)
+ resultReader = dpa.Retrieve(key)
+ for i, _ := range resultSlice {
+ resultSlice[i] = 0
+ }
+ n, err = resultReader.ReadAt(resultSlice, 0)
+ if err != io.EOF {
+ t.Errorf("Retrieve error after clearing memStore: %v", err)
+ }
+ if n != len(slice) {
+ t.Errorf("Slice size error after clearing memStore got %d, expected %d.", n, len(slice))
+ }
+ if !bytes.Equal(slice, resultSlice) {
+ t.Errorf("Comparison error after clearing memStore.")
+ }
+}
diff --git a/swarm/storage/localstore.go b/swarm/storage/localstore.go
new file mode 100644
index 000000000..541462f0c
--- /dev/null
+++ b/swarm/storage/localstore.go
@@ -0,0 +1,74 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "encoding/binary"
+)
+
+// LocalStore is a combination of inmemory db over a disk persisted db
+// implements a Get/Put with fallback (caching) logic using any 2 ChunkStores
+type LocalStore struct {
+ memStore ChunkStore
+ DbStore ChunkStore
+}
+
+// This constructor uses MemStore and DbStore as components
+func NewLocalStore(hash Hasher, params *StoreParams) (*LocalStore, error) {
+ dbStore, err := NewDbStore(params.ChunkDbPath, hash, params.DbCapacity, params.Radius)
+ if err != nil {
+ return nil, err
+ }
+ return &LocalStore{
+ memStore: NewMemStore(dbStore, params.CacheCapacity),
+ DbStore: dbStore,
+ }, nil
+}
+
+// LocalStore is itself a chunk store
+// unsafe, in that the data is not integrity checked
+func (self *LocalStore) Put(chunk *Chunk) {
+ chunk.dbStored = make(chan bool)
+ self.memStore.Put(chunk)
+ if chunk.wg != nil {
+ chunk.wg.Add(1)
+ }
+ go func() {
+ self.DbStore.Put(chunk)
+ if chunk.wg != nil {
+ chunk.wg.Done()
+ }
+ }()
+}
+
+// Get(chunk *Chunk) looks up a chunk in the local stores
+// This method is blocking until the chunk is retrieved
+// so additional timeout may be needed to wrap this call if
+// ChunkStores are remote and can have long latency
+func (self *LocalStore) Get(key Key) (chunk *Chunk, err error) {
+ chunk, err = self.memStore.Get(key)
+ if err == nil {
+ return
+ }
+ chunk, err = self.DbStore.Get(key)
+ if err != nil {
+ return
+ }
+ chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
+ self.memStore.Put(chunk)
+ return
+}
diff --git a/swarm/storage/memstore.go b/swarm/storage/memstore.go
new file mode 100644
index 000000000..f133bd7d3
--- /dev/null
+++ b/swarm/storage/memstore.go
@@ -0,0 +1,316 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+// memory storage layer for the package blockhash
+
+package storage
+
+import (
+ "sync"
+)
+
+const (
+ memTreeLW = 2 // log2(subtree count) of the subtrees
+ memTreeFLW = 14 // log2(subtree count) of the root layer
+ dbForceUpdateAccessCnt = 1000
+ defaultCacheCapacity = 5000
+)
+
+type MemStore struct {
+ memtree *memTree
+ entryCnt, capacity uint // stored entries
+ accessCnt uint64 // access counter; oldest is thrown away when full
+ dbAccessCnt uint64
+ dbStore *DbStore
+ lock sync.Mutex
+}
+
+/*
+a hash prefix subtree containing subtrees or one storage entry (but never both)
+
+- access[0] stores the smallest (oldest) access count value in this subtree
+- if it contains more subtrees and its subtree count is at least 4, access[1:2]
+ stores the smallest access count in the first and second halves of subtrees
+ (so that access[0] = min(access[1], access[2])
+- likewise, if subtree count is at least 8,
+ access[1] = min(access[3], access[4])
+ access[2] = min(access[5], access[6])
+ (access[] is a binary tree inside the multi-bit leveled hash tree)
+*/
+
+func NewMemStore(d *DbStore, capacity uint) (m *MemStore) {
+ m = &MemStore{}
+ m.memtree = newMemTree(memTreeFLW, nil, 0)
+ m.dbStore = d
+ m.setCapacity(capacity)
+ return
+}
+
+type memTree struct {
+ subtree []*memTree
+ parent *memTree
+ parentIdx uint
+
+ bits uint // log2(subtree count)
+ width uint // subtree count
+
+ entry *Chunk // if subtrees are present, entry should be nil
+ lastDBaccess uint64
+ access []uint64
+}
+
+func newMemTree(b uint, parent *memTree, pidx uint) (node *memTree) {
+ node = new(memTree)
+ node.bits = b
+ node.width = 1 << uint(b)
+ node.subtree = make([]*memTree, node.width)
+ node.access = make([]uint64, node.width-1)
+ node.parent = parent
+ node.parentIdx = pidx
+ if parent != nil {
+ parent.subtree[pidx] = node
+ }
+
+ return node
+}
+
+func (node *memTree) updateAccess(a uint64) {
+ aidx := uint(0)
+ var aa uint64
+ oa := node.access[0]
+ for node.access[aidx] == oa {
+ node.access[aidx] = a
+ if aidx > 0 {
+ aa = node.access[((aidx-1)^1)+1]
+ aidx = (aidx - 1) >> 1
+ } else {
+ pidx := node.parentIdx
+ node = node.parent
+ if node == nil {
+ return
+ }
+ nn := node.subtree[pidx^1]
+ if nn != nil {
+ aa = nn.access[0]
+ } else {
+ aa = 0
+ }
+ aidx = (node.width + pidx - 2) >> 1
+ }
+
+ if (aa != 0) && (aa < a) {
+ a = aa
+ }
+ }
+}
+
+func (s *MemStore) setCapacity(c uint) {
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ for c < s.entryCnt {
+ s.removeOldest()
+ }
+ s.capacity = c
+}
+
+func (s *MemStore) getEntryCnt() uint {
+ return s.entryCnt
+}
+
+// entry (not its copy) is going to be in MemStore
+func (s *MemStore) Put(entry *Chunk) {
+ if s.capacity == 0 {
+ return
+ }
+
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ if s.entryCnt >= s.capacity {
+ s.removeOldest()
+ }
+
+ s.accessCnt++
+
+ node := s.memtree
+ bitpos := uint(0)
+ for node.entry == nil {
+ l := entry.Key.bits(bitpos, node.bits)
+ st := node.subtree[l]
+ if st == nil {
+ st = newMemTree(memTreeLW, node, l)
+ bitpos += node.bits
+ node = st
+ break
+ }
+ bitpos += node.bits
+ node = st
+ }
+
+ if node.entry != nil {
+
+ if node.entry.Key.isEqual(entry.Key) {
+ node.updateAccess(s.accessCnt)
+ if entry.SData == nil {
+ entry.Size = node.entry.Size
+ entry.SData = node.entry.SData
+ }
+ if entry.Req == nil {
+ entry.Req = node.entry.Req
+ }
+ entry.C = node.entry.C
+ node.entry = entry
+ return
+ }
+
+ for node.entry != nil {
+
+ l := node.entry.Key.bits(bitpos, node.bits)
+ st := node.subtree[l]
+ if st == nil {
+ st = newMemTree(memTreeLW, node, l)
+ }
+ st.entry = node.entry
+ node.entry = nil
+ st.updateAccess(node.access[0])
+
+ l = entry.Key.bits(bitpos, node.bits)
+ st = node.subtree[l]
+ if st == nil {
+ st = newMemTree(memTreeLW, node, l)
+ }
+ bitpos += node.bits
+ node = st
+
+ }
+ }
+
+ node.entry = entry
+ node.lastDBaccess = s.dbAccessCnt
+ node.updateAccess(s.accessCnt)
+ s.entryCnt++
+
+ return
+}
+
+func (s *MemStore) Get(hash Key) (chunk *Chunk, err error) {
+ s.lock.Lock()
+ defer s.lock.Unlock()
+
+ node := s.memtree
+ bitpos := uint(0)
+ for node.entry == nil {
+ l := hash.bits(bitpos, node.bits)
+ st := node.subtree[l]
+ if st == nil {
+ return nil, notFound
+ }
+ bitpos += node.bits
+ node = st
+ }
+
+ if node.entry.Key.isEqual(hash) {
+ s.accessCnt++
+ node.updateAccess(s.accessCnt)
+ chunk = node.entry
+ if s.dbAccessCnt-node.lastDBaccess > dbForceUpdateAccessCnt {
+ s.dbAccessCnt++
+ node.lastDBaccess = s.dbAccessCnt
+ if s.dbStore != nil {
+ s.dbStore.updateAccessCnt(hash)
+ }
+ }
+ } else {
+ err = notFound
+ }
+
+ return
+}
+
+func (s *MemStore) removeOldest() {
+ node := s.memtree
+
+ for node.entry == nil {
+
+ aidx := uint(0)
+ av := node.access[aidx]
+
+ for aidx < node.width/2-1 {
+ if av == node.access[aidx*2+1] {
+ node.access[aidx] = node.access[aidx*2+2]
+ aidx = aidx*2 + 1
+ } else if av == node.access[aidx*2+2] {
+ node.access[aidx] = node.access[aidx*2+1]
+ aidx = aidx*2 + 2
+ } else {
+ panic(nil)
+ }
+ }
+ pidx := aidx*2 + 2 - node.width
+ if (node.subtree[pidx] != nil) && (av == node.subtree[pidx].access[0]) {
+ if node.subtree[pidx+1] != nil {
+ node.access[aidx] = node.subtree[pidx+1].access[0]
+ } else {
+ node.access[aidx] = 0
+ }
+ } else if (node.subtree[pidx+1] != nil) && (av == node.subtree[pidx+1].access[0]) {
+ if node.subtree[pidx] != nil {
+ node.access[aidx] = node.subtree[pidx].access[0]
+ } else {
+ node.access[aidx] = 0
+ }
+ pidx++
+ } else {
+ panic(nil)
+ }
+
+ //fmt.Println(pidx)
+ node = node.subtree[pidx]
+
+ }
+
+ if node.entry.dbStored != nil {
+ <-node.entry.dbStored
+ }
+
+ if node.entry.SData != nil {
+ node.entry = nil
+ s.entryCnt--
+ }
+
+ node.access[0] = 0
+
+ //---
+
+ aidx := uint(0)
+ for {
+ aa := node.access[aidx]
+ if aidx > 0 {
+ aidx = (aidx - 1) >> 1
+ } else {
+ pidx := node.parentIdx
+ node = node.parent
+ if node == nil {
+ return
+ }
+ aidx = (node.width + pidx - 2) >> 1
+ }
+ if (aa != 0) && ((aa < node.access[aidx]) || (node.access[aidx] == 0)) {
+ node.access[aidx] = aa
+ }
+ }
+}
diff --git a/swarm/storage/memstore_test.go b/swarm/storage/memstore_test.go
new file mode 100644
index 000000000..2e0ab535a
--- /dev/null
+++ b/swarm/storage/memstore_test.go
@@ -0,0 +1,50 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "testing"
+)
+
+func testMemStore(l int64, branches int64, t *testing.T) {
+ m := NewMemStore(nil, defaultCacheCapacity)
+ testStore(m, l, branches, t)
+}
+
+func TestMemStore128_10000(t *testing.T) {
+ testMemStore(10000, 128, t)
+}
+
+func TestMemStore128_1000(t *testing.T) {
+ testMemStore(1000, 128, t)
+}
+
+func TestMemStore128_100(t *testing.T) {
+ testMemStore(100, 128, t)
+}
+
+func TestMemStore2_100(t *testing.T) {
+ testMemStore(100, 2, t)
+}
+
+func TestMemStoreNotFound(t *testing.T) {
+ m := NewMemStore(nil, defaultCacheCapacity)
+ _, err := m.Get(ZeroKey)
+ if err != notFound {
+ t.Errorf("Expected notFound, got %v", err)
+ }
+}
diff --git a/swarm/storage/netstore.go b/swarm/storage/netstore.go
new file mode 100644
index 000000000..334229aed
--- /dev/null
+++ b/swarm/storage/netstore.go
@@ -0,0 +1,134 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "path/filepath"
+ "sync"
+ "time"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
+
+/*
+NetStore is a cloud storage access abstaction layer for swarm
+it contains the shared logic of network served chunk store/retrieval requests
+both local (coming from DPA api) and remote (coming from peers via bzz protocol)
+it implements the ChunkStore interface and embeds LocalStore
+
+It is called by the bzz protocol instances via Depo (the store/retrieve request handler)
+a protocol instance is running on each peer, so this is heavily parallelised.
+NetStore falls back to a backend (CloudStorage interface)
+implemented by bzz/network/forwarder. forwarder or IPFS or IPΞS
+*/
+type NetStore struct {
+ hashfunc Hasher
+ localStore *LocalStore
+ cloud CloudStore
+ lock sync.Mutex
+}
+
+// backend engine for cloud store
+// It can be aggregate dispatching to several parallel implementations:
+// bzz/network/forwarder. forwarder or IPFS or IPΞS
+type CloudStore interface {
+ Store(*Chunk)
+ Deliver(*Chunk)
+ Retrieve(*Chunk)
+}
+
+type StoreParams struct {
+ ChunkDbPath string
+ DbCapacity uint64
+ CacheCapacity uint
+ Radius int
+}
+
+func NewStoreParams(path string) (self *StoreParams) {
+ return &StoreParams{
+ ChunkDbPath: filepath.Join(path, "chunks"),
+ DbCapacity: defaultDbCapacity,
+ CacheCapacity: defaultCacheCapacity,
+ Radius: defaultRadius,
+ }
+}
+
+// netstore contructor, takes path argument that is used to initialise dbStore,
+// the persistent (disk) storage component of LocalStore
+// the second argument is the hive, the connection/logistics manager for the node
+func NewNetStore(hash Hasher, lstore *LocalStore, cloud CloudStore, params *StoreParams) *NetStore {
+ return &NetStore{
+ hashfunc: hash,
+ localStore: lstore,
+ cloud: cloud,
+ }
+}
+
+const (
+ // maximum number of peers that a retrieved message is delivered to
+ requesterCount = 3
+)
+
+var (
+ // timeout interval before retrieval is timed out
+ searchTimeout = 3 * time.Second
+)
+
+// store logic common to local and network chunk store requests
+// ~ unsafe put in localdb no check if exists no extra copy no hash validation
+// the chunk is forced to propagate (Cloud.Store) even if locally found!
+// caller needs to make sure if that is wanted
+func (self *NetStore) Put(entry *Chunk) {
+ self.localStore.Put(entry)
+
+ // handle deliveries
+ if entry.Req != nil {
+ glog.V(logger.Detail).Infof("NetStore.Put: localStore.Put %v hit existing request...delivering", entry.Key.Log())
+ // closing C singals to other routines (local requests)
+ // that the chunk is has been retrieved
+ close(entry.Req.C)
+ // deliver the chunk to requesters upstream
+ go self.cloud.Deliver(entry)
+ } else {
+ glog.V(logger.Detail).Infof("NetStore.Put: localStore.Put %v stored locally", entry.Key.Log())
+ // handle propagating store requests
+ // go self.cloud.Store(entry)
+ go self.cloud.Store(entry)
+ }
+}
+
+// retrieve logic common for local and network chunk retrieval requests
+func (self *NetStore) Get(key Key) (*Chunk, error) {
+ var err error
+ chunk, err := self.localStore.Get(key)
+ if err == nil {
+ if chunk.Req == nil {
+ glog.V(logger.Detail).Infof("NetStore.Get: %v found locally", key)
+ } else {
+ glog.V(logger.Detail).Infof("NetStore.Get: %v hit on an existing request", key)
+ // no need to launch again
+ }
+ return chunk, err
+ }
+ // no data and no request status
+ glog.V(logger.Detail).Infof("NetStore.Get: %v not found locally. open new request", key)
+ chunk = NewChunk(key, newRequestStatus(key))
+ self.localStore.memStore.Put(chunk)
+ go self.cloud.Retrieve(chunk)
+ return chunk, nil
+}
diff --git a/swarm/storage/pyramid.go b/swarm/storage/pyramid.go
new file mode 100644
index 000000000..3c1ef17a0
--- /dev/null
+++ b/swarm/storage/pyramid.go
@@ -0,0 +1,211 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+ "math"
+ "strings"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+const (
+ processors = 8
+)
+
+type Tree struct {
+ Chunks int64
+ Levels []map[int64]*Node
+ Lock sync.RWMutex
+}
+
+type Node struct {
+ Pending int64
+ Size uint64
+ Children []common.Hash
+ Last bool
+}
+
+func (self *Node) String() string {
+ var children []string
+ for _, node := range self.Children {
+ children = append(children, node.Hex())
+ }
+ return fmt.Sprintf("pending: %v, size: %v, last :%v, children: %v", self.Pending, self.Size, self.Last, strings.Join(children, ", "))
+}
+
+type Task struct {
+ Index int64 // Index of the chunk being processed
+ Size uint64
+ Data []byte // Binary blob of the chunk
+ Last bool
+}
+
+type PyramidChunker struct {
+ hashFunc Hasher
+ chunkSize int64
+ hashSize int64
+ branches int64
+ workerCount int
+}
+
+func NewPyramidChunker(params *ChunkerParams) (self *PyramidChunker) {
+ self = &PyramidChunker{}
+ self.hashFunc = MakeHashFunc(params.Hash)
+ self.branches = params.Branches
+ self.hashSize = int64(self.hashFunc().Size())
+ self.chunkSize = self.hashSize * self.branches
+ self.workerCount = 1
+ return
+}
+
+func (self *PyramidChunker) Split(data io.Reader, size int64, chunkC chan *Chunk, swg, wwg *sync.WaitGroup) (Key, error) {
+
+ chunks := (size + self.chunkSize - 1) / self.chunkSize
+ depth := int(math.Ceil(math.Log(float64(chunks))/math.Log(float64(self.branches)))) + 1
+ // glog.V(logger.Detail).Infof("chunks: %v, depth: %v", chunks, depth)
+
+ results := Tree{
+ Chunks: chunks,
+ Levels: make([]map[int64]*Node, depth),
+ }
+ for i := 0; i < depth; i++ {
+ results.Levels[i] = make(map[int64]*Node)
+ }
+ // Create a pool of workers to crunch through the file
+ tasks := make(chan *Task, 2*processors)
+ pend := new(sync.WaitGroup)
+ abortC := make(chan bool)
+ for i := 0; i < processors; i++ {
+ pend.Add(1)
+ go self.processor(pend, swg, tasks, chunkC, &results)
+ }
+ // Feed the chunks into the task pool
+ for index := 0; ; index++ {
+ buffer := make([]byte, self.chunkSize+8)
+ n, err := data.Read(buffer[8:])
+ last := err == io.ErrUnexpectedEOF || err == io.EOF
+ // glog.V(logger.Detail).Infof("n: %v, index: %v, depth: %v", n, index, depth)
+ if err != nil && !last {
+ // glog.V(logger.Info).Infof("error: %v", err)
+ close(abortC)
+ break
+ }
+ binary.LittleEndian.PutUint64(buffer[:8], uint64(n))
+ pend.Add(1)
+ // glog.V(logger.Info).Infof("-> task %v (%v)", index, n)
+ select {
+ case tasks <- &Task{Index: int64(index), Size: uint64(n), Data: buffer[:n+8], Last: last}:
+ case <-abortC:
+ return nil, err
+ }
+ if last {
+ // glog.V(logger.Info).Infof("last task %v (%v)", index, n)
+ break
+ }
+ }
+ // Wait for the workers and return
+ close(tasks)
+ pend.Wait()
+
+ // glog.V(logger.Info).Infof("len: %v", results.Levels[0][0])
+ key := results.Levels[0][0].Children[0][:]
+ return key, nil
+}
+
+func (self *PyramidChunker) processor(pend, swg *sync.WaitGroup, tasks chan *Task, chunkC chan *Chunk, results *Tree) {
+ defer pend.Done()
+
+ // glog.V(logger.Info).Infof("processor started")
+ // Start processing leaf chunks ad infinitum
+ hasher := self.hashFunc()
+ for task := range tasks {
+ depth, pow := len(results.Levels)-1, self.branches
+ // glog.V(logger.Info).Infof("task: %v, last: %v", task.Index, task.Last)
+ size := task.Size
+ data := task.Data
+ var node *Node
+ for depth >= 0 {
+ // New chunk received, reset the hasher and start processing
+ hasher.Reset()
+ if node == nil { // Leaf node, hash the data chunk
+ hasher.Write(task.Data)
+ } else { // Internal node, hash the children
+ size = node.Size
+ data = make([]byte, hasher.Size()*len(node.Children)+8)
+ binary.LittleEndian.PutUint64(data[:8], size)
+
+ hasher.Write(data[:8])
+ for i, hash := range node.Children {
+ copy(data[i*hasher.Size()+8:], hash[:])
+ hasher.Write(hash[:])
+ }
+ }
+ hash := hasher.Sum(nil)
+ last := task.Last || (node != nil) && node.Last
+ // Insert the subresult into the memoization tree
+ results.Lock.Lock()
+ if node = results.Levels[depth][task.Index/pow]; node == nil {
+ // Figure out the pending tasks
+ pending := self.branches
+ if task.Index/pow == results.Chunks/pow {
+ pending = (results.Chunks + pow/self.branches - 1) / (pow / self.branches) % self.branches
+ }
+ node = &Node{pending, 0, make([]common.Hash, pending), last}
+ results.Levels[depth][task.Index/pow] = node
+ // glog.V(logger.Info).Infof("create node %v, %v (%v children, all pending)", depth, task.Index/pow, pending)
+ }
+ node.Pending--
+ // glog.V(logger.Info).Infof("pending now: %v", node.Pending)
+ i := task.Index / (pow / self.branches) % self.branches
+ if last {
+ node.Last = true
+ }
+ copy(node.Children[i][:], hash)
+ node.Size += size
+ left := node.Pending
+ // glog.V(logger.Info).Infof("left pending now: %v, node size: %v", left, node.Size)
+ if chunkC != nil {
+ if swg != nil {
+ swg.Add(1)
+ }
+ select {
+ case chunkC <- &Chunk{Key: hash, SData: data, wg: swg}:
+ // case <- self.quitC
+ }
+ }
+ if depth+1 < len(results.Levels) {
+ delete(results.Levels[depth+1], task.Index/(pow/self.branches))
+ }
+
+ results.Lock.Unlock()
+ // If there's more work to be done, leave for others
+ // glog.V(logger.Info).Infof("left %v", left)
+ if left > 0 {
+ break
+ }
+ // We're the last ones in this batch, merge the children together
+ depth--
+ pow *= self.branches
+ }
+ pend.Done()
+ }
+}
diff --git a/swarm/storage/types.go b/swarm/storage/types.go
new file mode 100644
index 000000000..0dcbc0100
--- /dev/null
+++ b/swarm/storage/types.go
@@ -0,0 +1,232 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package storage
+
+import (
+ "bytes"
+ "crypto"
+ "fmt"
+ "hash"
+ "io"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/crypto/sha3"
+)
+
+type Hasher func() hash.Hash
+
+// Peer is the recorded as Source on the chunk
+// should probably not be here? but network should wrap chunk object
+type Peer interface{}
+
+type Key []byte
+
+func (x Key) Size() uint {
+ return uint(len(x))
+}
+
+func (x Key) isEqual(y Key) bool {
+ return bytes.Compare(x, y) == 0
+}
+
+func (h Key) bits(i, j uint) uint {
+ ii := i >> 3
+ jj := i & 7
+ if ii >= h.Size() {
+ return 0
+ }
+
+ if jj+j <= 8 {
+ return uint((h[ii] >> jj) & ((1 << j) - 1))
+ }
+
+ res := uint(h[ii] >> jj)
+ jj = 8 - jj
+ j -= jj
+ for j != 0 {
+ ii++
+ if j < 8 {
+ res += uint(h[ii]&((1<<j)-1)) << jj
+ return res
+ }
+ res += uint(h[ii]) << jj
+ jj += 8
+ j -= 8
+ }
+ return res
+}
+
+func IsZeroKey(key Key) bool {
+ return len(key) == 0 || bytes.Equal(key, ZeroKey)
+}
+
+var ZeroKey = Key(common.Hash{}.Bytes())
+
+func MakeHashFunc(hash string) Hasher {
+ switch hash {
+ case "SHA256":
+ return crypto.SHA256.New
+ case "SHA3":
+ return sha3.NewKeccak256
+ }
+ return nil
+}
+
+func (key Key) Hex() string {
+ return fmt.Sprintf("%064x", []byte(key[:]))
+}
+
+func (key Key) Log() string {
+ if len(key[:]) < 4 {
+ return fmt.Sprintf("%x", []byte(key[:]))
+ }
+ return fmt.Sprintf("%08x", []byte(key[:4]))
+}
+
+func (key Key) String() string {
+ return fmt.Sprintf("%064x", []byte(key)[:])
+}
+
+func (key Key) MarshalJSON() (out []byte, err error) {
+ return []byte(`"` + key.String() + `"`), nil
+}
+
+func (key *Key) UnmarshalJSON(value []byte) error {
+ s := string(value)
+ *key = make([]byte, 32)
+ h := common.Hex2Bytes(s[1 : len(s)-1])
+ copy(*key, h)
+ return nil
+}
+
+// each chunk when first requested opens a record associated with the request
+// next time a request for the same chunk arrives, this record is updated
+// this request status keeps track of the request ID-s as well as the requesting
+// peers and has a channel that is closed when the chunk is retrieved. Multiple
+// local callers can wait on this channel (or combined with a timeout, block with a
+// select).
+type RequestStatus struct {
+ Key Key
+ Source Peer
+ C chan bool
+ Requesters map[uint64][]interface{}
+}
+
+func newRequestStatus(key Key) *RequestStatus {
+ return &RequestStatus{
+ Key: key,
+ Requesters: make(map[uint64][]interface{}),
+ C: make(chan bool),
+ }
+}
+
+// Chunk also serves as a request object passed to ChunkStores
+// in case it is a retrieval request, Data is nil and Size is 0
+// Note that Size is not the size of the data chunk, which is Data.Size()
+// but the size of the subtree encoded in the chunk
+// 0 if request, to be supplied by the dpa
+type Chunk struct {
+ Key Key // always
+ SData []byte // nil if request, to be supplied by dpa
+ Size int64 // size of the data covered by the subtree encoded in this chunk
+ Source Peer // peer
+ C chan bool // to signal data delivery by the dpa
+ Req *RequestStatus // request Status needed by netStore
+ wg *sync.WaitGroup // wg to synchronize
+ dbStored chan bool // never remove a chunk from memStore before it is written to dbStore
+}
+
+func NewChunk(key Key, rs *RequestStatus) *Chunk {
+ return &Chunk{Key: key, Req: rs}
+}
+
+/*
+The ChunkStore interface is implemented by :
+
+- MemStore: a memory cache
+- DbStore: local disk/db store
+- LocalStore: a combination (sequence of) memStore and dbStore
+- NetStore: cloud storage abstraction layer
+- DPA: local requests for swarm storage and retrieval
+*/
+type ChunkStore interface {
+ Put(*Chunk) // effectively there is no error even if there is an error
+ Get(Key) (*Chunk, error)
+}
+
+/*
+Chunker is the interface to a component that is responsible for disassembling and assembling larger data and indended to be the dependency of a DPA storage system with fixed maximum chunksize.
+
+It relies on the underlying chunking model.
+
+When calling Split, the caller provides a channel (chan *Chunk) on which it receives chunks to store. The DPA delegates to storage layers (implementing ChunkStore interface).
+
+Split returns an error channel, which the caller can monitor.
+After getting notified that all the data has been split (the error channel is closed), the caller can safely read or save the root key. Optionally it times out if not all chunks get stored or not the entire stream of data has been processed. By inspecting the errc channel the caller can check if any explicit errors (typically IO read/write failures) occured during splitting.
+
+When calling Join with a root key, the caller gets returned a seekable lazy reader. The caller again provides a channel on which the caller receives placeholder chunks with missing data. The DPA is supposed to forward this to the chunk stores and notify the chunker if the data has been delivered (i.e. retrieved from memory cache, disk-persisted db or cloud based swarm delivery). As the seekable reader is used, the chunker then puts these together the relevant parts on demand.
+*/
+type Splitter interface {
+ /*
+ When splitting, data is given as a SectionReader, and the key is a hashSize long byte slice (Key), the root hash of the entire content will fill this once processing finishes.
+ New chunks to store are coming to caller via the chunk storage channel, which the caller provides.
+ wg is a Waitgroup (can be nil) that can be used to block until the local storage finishes
+ The caller gets returned an error channel, if an error is encountered during splitting, it is fed to errC error channel.
+ A closed error signals process completion at which point the key can be considered final if there were no errors.
+ */
+ Split(io.Reader, int64, chan *Chunk, *sync.WaitGroup, *sync.WaitGroup) (Key, error)
+}
+
+type Joiner interface {
+ /*
+ Join reconstructs original content based on a root key.
+ When joining, the caller gets returned a Lazy SectionReader, which is
+ seekable and implements on-demand fetching of chunks as and where it is read.
+ New chunks to retrieve are coming to caller via the Chunk channel, which the caller provides.
+ If an error is encountered during joining, it appears as a reader error.
+ The SectionReader.
+ As a result, partial reads from a document are possible even if other parts
+ are corrupt or lost.
+ The chunks are not meant to be validated by the chunker when joining. This
+ is because it is left to the DPA to decide which sources are trusted.
+ */
+ Join(key Key, chunkC chan *Chunk) LazySectionReader
+}
+
+type Chunker interface {
+ Joiner
+ Splitter
+ // returns the key length
+ // KeySize() int64
+}
+
+// Size, Seek, Read, ReadAt
+type LazySectionReader interface {
+ Size(chan bool) (int64, error)
+ io.Seeker
+ io.Reader
+ io.ReaderAt
+}
+
+type LazyTestSectionReader struct {
+ *io.SectionReader
+}
+
+func (self *LazyTestSectionReader) Size(chan bool) (int64, error) {
+ return self.SectionReader.Size(), nil
+}
diff --git a/swarm/swarm.go b/swarm/swarm.go
new file mode 100644
index 000000000..1dce8cafd
--- /dev/null
+++ b/swarm/swarm.go
@@ -0,0 +1,309 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package swarm
+
+import (
+ "bytes"
+ "crypto/ecdsa"
+ "fmt"
+
+ "github.com/ethereum/go-ethereum/accounts/abi/bind"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/contracts/chequebook"
+ "github.com/ethereum/go-ethereum/contracts/ens"
+ "github.com/ethereum/go-ethereum/crypto"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/node"
+ "github.com/ethereum/go-ethereum/p2p"
+ "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/rpc"
+ "github.com/ethereum/go-ethereum/swarm/api"
+ httpapi "github.com/ethereum/go-ethereum/swarm/api/http"
+ "github.com/ethereum/go-ethereum/swarm/network"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+ "golang.org/x/net/context"
+)
+
+// the swarm stack
+type Swarm struct {
+ config *api.Config // swarm configuration
+ api *api.Api // high level api layer (fs/manifest)
+ dns api.Resolver // DNS registrar
+ dbAccess *network.DbAccess // access to local chunk db iterator and storage counter
+ storage storage.ChunkStore // internal access to storage, common interface to cloud storage backends
+ dpa *storage.DPA // distributed preimage archive, the local API to the storage with document level storage/retrieval support
+ depo network.StorageHandler // remote request handler, interface between bzz protocol and the storage
+ cloud storage.CloudStore // procurement, cloud storage backend (can multi-cloud)
+ hive *network.Hive // the logistic manager
+ backend chequebook.Backend // simple blockchain Backend
+ privateKey *ecdsa.PrivateKey
+ swapEnabled bool
+}
+
+type SwarmAPI struct {
+ Api *api.Api
+ Backend chequebook.Backend
+ PrvKey *ecdsa.PrivateKey
+}
+
+func (self *Swarm) API() *SwarmAPI {
+ return &SwarmAPI{
+ Api: self.api,
+ Backend: self.backend,
+ PrvKey: self.privateKey,
+ }
+}
+
+// creates a new swarm service instance
+// implements node.Service
+func NewSwarm(ctx *node.ServiceContext, backend chequebook.Backend, config *api.Config, swapEnabled, syncEnabled bool) (self *Swarm, err error) {
+ if bytes.Equal(common.FromHex(config.PublicKey), storage.ZeroKey) {
+ return nil, fmt.Errorf("empty public key")
+ }
+ if bytes.Equal(common.FromHex(config.BzzKey), storage.ZeroKey) {
+ return nil, fmt.Errorf("empty bzz key")
+ }
+
+ self = &Swarm{
+ config: config,
+ swapEnabled: swapEnabled,
+ backend: backend,
+ privateKey: config.Swap.PrivateKey(),
+ }
+ glog.V(logger.Debug).Infof("Setting up Swarm service components")
+
+ hash := storage.MakeHashFunc(config.ChunkerParams.Hash)
+ lstore, err := storage.NewLocalStore(hash, config.StoreParams)
+ if err != nil {
+ return
+ }
+
+ // setup local store
+ glog.V(logger.Debug).Infof("Set up local storage")
+
+ self.dbAccess = network.NewDbAccess(lstore)
+ glog.V(logger.Debug).Infof("Set up local db access (iterator/counter)")
+
+ // set up the kademlia hive
+ self.hive = network.NewHive(
+ common.HexToHash(self.config.BzzKey), // key to hive (kademlia base address)
+ config.HiveParams, // configuration parameters
+ swapEnabled, // SWAP enabled
+ syncEnabled, // syncronisation enabled
+ )
+ glog.V(logger.Debug).Infof("Set up swarm network with Kademlia hive")
+
+ // setup cloud storage backend
+ cloud := network.NewForwarder(self.hive)
+ glog.V(logger.Debug).Infof("-> set swarm forwarder as cloud storage backend")
+ // setup cloud storage internal access layer
+
+ self.storage = storage.NewNetStore(hash, lstore, cloud, config.StoreParams)
+ glog.V(logger.Debug).Infof("-> swarm net store shared access layer to Swarm Chunk Store")
+
+ // set up Depo (storage handler = cloud storage access layer for incoming remote requests)
+ self.depo = network.NewDepo(hash, lstore, self.storage)
+ glog.V(logger.Debug).Infof("-> REmote Access to CHunks")
+
+ // set up DPA, the cloud storage local access layer
+ dpaChunkStore := storage.NewDpaChunkStore(lstore, self.storage)
+ glog.V(logger.Debug).Infof("-> Local Access to Swarm")
+ // Swarm Hash Merklised Chunking for Arbitrary-length Document/File storage
+ self.dpa = storage.NewDPA(dpaChunkStore, self.config.ChunkerParams)
+ glog.V(logger.Debug).Infof("-> Content Store API")
+
+ // set up high level api
+ transactOpts := bind.NewKeyedTransactor(self.privateKey)
+
+ self.dns, err = ens.NewENS(transactOpts, config.EnsRoot, self.backend)
+ if err != nil {
+ return nil, err
+ }
+ glog.V(logger.Debug).Infof("-> Swarm Domain Name Registrar @ address %v", config.EnsRoot.Hex())
+
+ self.api = api.NewApi(self.dpa, self.dns)
+ // Manifests for Smart Hosting
+ glog.V(logger.Debug).Infof("-> Web3 virtual server API")
+
+ return self, nil
+}
+
+/*
+Start is called when the stack is started
+* starts the network kademlia hive peer management
+* (starts netStore level 0 api)
+* starts DPA level 1 api (chunking -> store/retrieve requests)
+* (starts level 2 api)
+* starts http proxy server
+* registers url scheme handlers for bzz, etc
+* TODO: start subservices like sword, swear, swarmdns
+*/
+// implements the node.Service interface
+func (self *Swarm) Start(net *p2p.Server) error {
+ connectPeer := func(url string) error {
+ node, err := discover.ParseNode(url)
+ if err != nil {
+ return fmt.Errorf("invalid node URL: %v", err)
+ }
+ net.AddPeer(node)
+ return nil
+ }
+ // set chequebook
+ if self.swapEnabled {
+ ctx := context.Background() // The initial setup has no deadline.
+ err := self.SetChequebook(ctx)
+ if err != nil {
+ return fmt.Errorf("Unable to set chequebook for SWAP: %v", err)
+ }
+ glog.V(logger.Debug).Infof("-> cheque book for SWAP: %v", self.config.Swap.Chequebook())
+ } else {
+ glog.V(logger.Debug).Infof("SWAP disabled: no cheque book set")
+ }
+
+ glog.V(logger.Warn).Infof("Starting Swarm service")
+ self.hive.Start(
+ discover.PubkeyID(&net.PrivateKey.PublicKey),
+ func() string { return net.ListenAddr },
+ connectPeer,
+ )
+ glog.V(logger.Info).Infof("Swarm network started on bzz address: %v", self.hive.Addr())
+
+ self.dpa.Start()
+ glog.V(logger.Debug).Infof("Swarm DPA started")
+
+ // start swarm http proxy server
+ if self.config.Port != "" {
+ go httpapi.StartHttpServer(self.api, self.config.Port)
+ }
+ glog.V(logger.Debug).Infof("Swarm http proxy started on port: %v", self.config.Port)
+
+ return nil
+}
+
+// implements the node.Service interface
+// stops all component services.
+func (self *Swarm) Stop() error {
+ self.dpa.Stop()
+ self.hive.Stop()
+ if ch := self.config.Swap.Chequebook(); ch != nil {
+ ch.Stop()
+ ch.Save()
+ }
+ return self.config.Save()
+}
+
+// implements the node.Service interface
+func (self *Swarm) Protocols() []p2p.Protocol {
+ proto, err := network.Bzz(self.depo, self.backend, self.hive, self.dbAccess, self.config.Swap, self.config.SyncParams)
+ if err != nil {
+ return nil
+ }
+ return []p2p.Protocol{proto}
+}
+
+// implements node.Service
+// Apis returns the RPC Api descriptors the Swarm implementation offers
+func (self *Swarm) APIs() []rpc.API {
+ return []rpc.API{
+ // public APIs
+ {
+ Namespace: "bzz",
+ Version: "0.1",
+ Service: api.NewStorage(self.api),
+ Public: true,
+ },
+ {
+ Namespace: "bzz",
+ Version: "0.1",
+ Service: &Info{self.config, chequebook.ContractParams},
+ Public: true,
+ },
+ // admin APIs
+ {
+ Namespace: "bzz",
+ Version: "0.1",
+ Service: api.NewFileSystem(self.api),
+ Public: false},
+ {
+ Namespace: "bzz",
+ Version: "0.1",
+ Service: api.NewControl(self.api, self.hive),
+ Public: false,
+ },
+ {
+ Namespace: "chequebook",
+ Version: chequebook.Version,
+ Service: chequebook.NewApi(self.config.Swap.Chequebook),
+ Public: false,
+ },
+ // {Namespace, Version, api.NewAdmin(self), false},
+ }
+}
+
+func (self *Swarm) Api() *api.Api {
+ return self.api
+}
+
+// SetChequebook ensures that the local checquebook is set up on chain.
+func (self *Swarm) SetChequebook(ctx context.Context) error {
+ err := self.config.Swap.SetChequebook(ctx, self.backend, self.config.Path)
+ if err != nil {
+ return err
+ }
+ glog.V(logger.Info).Infof("new chequebook set (%v): saving config file, resetting all connections in the hive", self.config.Swap.Contract.Hex())
+ self.config.Save()
+ self.hive.DropAll()
+ return nil
+}
+
+// Local swarm without netStore
+func NewLocalSwarm(datadir, port string) (self *Swarm, err error) {
+
+ prvKey, err := crypto.GenerateKey()
+ if err != nil {
+ return
+ }
+
+ config, err := api.NewConfig(datadir, common.Address{}, prvKey)
+ if err != nil {
+ return
+ }
+ config.Port = port
+
+ dpa, err := storage.NewLocalDPA(datadir)
+ if err != nil {
+ return
+ }
+
+ self = &Swarm{
+ api: api.NewApi(dpa, nil),
+ config: config,
+ }
+
+ return
+}
+
+// serialisable info about swarm
+type Info struct {
+ *api.Config
+ *chequebook.Params
+}
+
+func (self *Info) Info() *Info {
+ return self
+}
diff --git a/tests/block_test.go b/tests/block_test.go
index c258268db..448f2bd76 100644
--- a/tests/block_test.go
+++ b/tests/block_test.go
@@ -23,63 +23,63 @@ import (
)
func TestBcValidBlockTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcValidBlockTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcValidBlockTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcUncleHeaderValidityTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcUncleHeaderValiditiy.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcUncleHeaderValiditiy.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcUncleTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcUncleTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcUncleTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcForkUncleTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcForkUncle.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcForkUncle.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcInvalidHeaderTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcInvalidHeaderTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcInvalidHeaderTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcInvalidRLPTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcInvalidRLPTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcInvalidRLPTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcRPCAPITests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcRPC_API_Test.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcRPC_API_Test.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcForkBlockTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcForkBlockTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcForkBlockTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcForkStress(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcForkStressTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcForkStressTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
@@ -89,21 +89,21 @@ func TestBcTotalDifficulty(t *testing.T) {
// skip because these will fail due to selfish mining fix
t.Skip()
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcTotalDifficultyTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcTotalDifficultyTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcWallet(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcWalletTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcWalletTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcGasPricer(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcGasPricerTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcGasPricerTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
@@ -111,7 +111,7 @@ func TestBcGasPricer(t *testing.T) {
// TODO: iterate over files once we got more than a few
func TestBcRandom(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "RandomTests/bl201507071825GO.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "RandomTests/bl201507071825GO.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
@@ -121,14 +121,14 @@ func TestBcMultiChain(t *testing.T) {
// skip due to selfish mining
t.Skip()
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcMultiChainTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcMultiChainTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestBcState(t *testing.T) {
- err := RunBlockTest(big.NewInt(1000000), filepath.Join(blockTestDir, "bcStateTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(1000000), nil, filepath.Join(blockTestDir, "bcStateTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
@@ -136,77 +136,85 @@ func TestBcState(t *testing.T) {
// Homestead tests
func TestHomesteadBcValidBlockTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcValidBlockTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcValidBlockTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcUncleHeaderValidityTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcUncleHeaderValiditiy.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcUncleHeaderValiditiy.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcUncleTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcUncleTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcUncleTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcInvalidHeaderTests(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcInvalidHeaderTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcInvalidHeaderTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcRPCAPITests(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcRPC_API_Test.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcRPC_API_Test.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcForkStress(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcForkStressTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcForkStressTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcTotalDifficulty(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcTotalDifficultyTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcTotalDifficultyTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcWallet(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcWalletTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcWalletTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcGasPricer(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcGasPricerTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcGasPricerTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcMultiChain(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcMultiChainTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcMultiChainTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
}
func TestHomesteadBcState(t *testing.T) {
- err := RunBlockTest(big.NewInt(0), filepath.Join(blockTestDir, "Homestead", "bcStateTest.json"), BlockSkipTests)
+ err := RunBlockTest(big.NewInt(0), nil, filepath.Join(blockTestDir, "Homestead", "bcStateTest.json"), BlockSkipTests)
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+// DAO hard-fork tests
+func TestDAOBcTheDao(t *testing.T) {
+ err := RunBlockTest(big.NewInt(5), big.NewInt(8), filepath.Join(blockTestDir, "TestNetwork", "bcTheDaoTest.json"), BlockSkipTests)
if err != nil {
t.Fatal(err)
}
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
index d9a5eec08..7da15cebe 100644
--- a/tests/block_test_util.go
+++ b/tests/block_test_util.go
@@ -103,7 +103,7 @@ type btTransaction struct {
Value string
}
-func RunBlockTestWithReader(homesteadBlock *big.Int, r io.Reader, skipTests []string) error {
+func RunBlockTestWithReader(homesteadBlock, daoForkBlock *big.Int, r io.Reader, skipTests []string) error {
btjs := make(map[string]*btJSON)
if err := readJson(r, &btjs); err != nil {
return err
@@ -114,13 +114,13 @@ func RunBlockTestWithReader(homesteadBlock *big.Int, r io.Reader, skipTests []st
return err
}
- if err := runBlockTests(homesteadBlock, bt, skipTests); err != nil {
+ if err := runBlockTests(homesteadBlock, daoForkBlock, bt, skipTests); err != nil {
return err
}
return nil
}
-func RunBlockTest(homesteadBlock *big.Int, file string, skipTests []string) error {
+func RunBlockTest(homesteadBlock, daoForkBlock *big.Int, file string, skipTests []string) error {
btjs := make(map[string]*btJSON)
if err := readJsonFile(file, &btjs); err != nil {
return err
@@ -130,13 +130,13 @@ func RunBlockTest(homesteadBlock *big.Int, file string, skipTests []string) erro
if err != nil {
return err
}
- if err := runBlockTests(homesteadBlock, bt, skipTests); err != nil {
+ if err := runBlockTests(homesteadBlock, daoForkBlock, bt, skipTests); err != nil {
return err
}
return nil
}
-func runBlockTests(homesteadBlock *big.Int, bt map[string]*BlockTest, skipTests []string) error {
+func runBlockTests(homesteadBlock, daoForkBlock *big.Int, bt map[string]*BlockTest, skipTests []string) error {
skipTest := make(map[string]bool, len(skipTests))
for _, name := range skipTests {
skipTest[name] = true
@@ -148,7 +148,7 @@ func runBlockTests(homesteadBlock *big.Int, bt map[string]*BlockTest, skipTests
continue
}
// test the block
- if err := runBlockTest(homesteadBlock, test); err != nil {
+ if err := runBlockTest(homesteadBlock, daoForkBlock, test); err != nil {
return fmt.Errorf("%s: %v", name, err)
}
glog.Infoln("Block test passed: ", name)
@@ -157,7 +157,7 @@ func runBlockTests(homesteadBlock *big.Int, bt map[string]*BlockTest, skipTests
return nil
}
-func runBlockTest(homesteadBlock *big.Int, test *BlockTest) error {
+func runBlockTest(homesteadBlock, daoForkBlock *big.Int, test *BlockTest) error {
// import pre accounts & construct test genesis block & state root
db, _ := ethdb.NewMemDatabase()
if _, err := test.InsertPreState(db); err != nil {
@@ -169,7 +169,7 @@ func runBlockTest(homesteadBlock *big.Int, test *BlockTest) error {
core.WriteCanonicalHash(db, test.Genesis.Hash(), test.Genesis.NumberU64())
core.WriteHeadBlockHash(db, test.Genesis.Hash())
evmux := new(event.TypeMux)
- config := &core.ChainConfig{HomesteadBlock: homesteadBlock}
+ config := &core.ChainConfig{HomesteadBlock: homesteadBlock, DAOForkBlock: daoForkBlock, DAOForkSupport: true}
chain, err := core.NewBlockChain(db, config, ethash.NewShared(), evmux)
if err != nil {
return err
diff --git a/tests/files/BlockchainTests/TestNetwork/bcTheDaoTest.json b/tests/files/BlockchainTests/TestNetwork/bcTheDaoTest.json
new file mode 100644
index 000000000..ad01b82d1
--- /dev/null
+++ b/tests/files/BlockchainTests/TestNetwork/bcTheDaoTest.json
@@ -0,0 +1,8599 @@
+{
+ "DaoTransactions" : {
+ "blocks" : [
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "0bf4b15cb25eccec0a0706fc625c525be7da876bd7a8bf60baa8d9e1bce126d3",
+ "mixHash" : "22ffe16d1d516b8d15428b2347fe62901a12fa4977945b1ae8ced773c27e6755",
+ "nonce" : "f51d5dc330f2df67",
+ "number" : "0x01",
+ "parentHash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "receiptTrie" : "37aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054",
+ "stateRoot" : "d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01a",
+ "timestamp" : "0x5788dc1d",
+ "transactionsTrie" : "ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "1",
+ "rlp" : "0xf9024cf901f9a0cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01aa0ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179a037aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefba825208845788dc1d80a022ffe16d1d516b8d15428b2347fe62901a12fa4977945b1ae8ced773c27e675588f51d5dc330f2df67f84df84b8001827530800a801ca057cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9a05ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03ac0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x00",
+ "r" : "0x57cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9",
+ "s" : "0x5ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03a",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020040",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "ce3ecad2a028ecd1d70c3c4683c1f74d8c521dfdc7cde9bb3857e1740e914402",
+ "mixHash" : "07d75cbc66143f80cb0b7ed64d88ff9789d1cb72f7701cbc8b5d4a3940610058",
+ "nonce" : "82a2b2eb85f7ad3c",
+ "number" : "0x02",
+ "parentHash" : "0bf4b15cb25eccec0a0706fc625c525be7da876bd7a8bf60baa8d9e1bce126d3",
+ "receiptTrie" : "9a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64",
+ "stateRoot" : "c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988",
+ "timestamp" : "0x5788dc28",
+ "transactionsTrie" : "76c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abf",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "2",
+ "rlp" : "0xf9024cf901f9a00bf4b15cb25eccec0a0706fc625c525be7da876bd7a8bf60baa8d9e1bce126d3a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988a076c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abfa09a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004002832fefba825208845788dc2880a007d75cbc66143f80cb0b7ed64d88ff9789d1cb72f7701cbc8b5d4a39406100588882a2b2eb85f7ad3cf84df84b0101827530800a801ca0bb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1fa04bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x01",
+ "r" : "0xbb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1f",
+ "s" : "0x4bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020080",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "3c6ffdf610c30eab3de8cb9ee5ca2218659c998f5996b971016031464dba78c7",
+ "mixHash" : "3df8b7976e1892e74ef5d6cf859b1436d89454800d7bca1f9d3bbde6cf828d9f",
+ "nonce" : "159e3b259feea379",
+ "number" : "0x03",
+ "parentHash" : "ce3ecad2a028ecd1d70c3c4683c1f74d8c521dfdc7cde9bb3857e1740e914402",
+ "receiptTrie" : "b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097",
+ "stateRoot" : "9cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8",
+ "timestamp" : "0x5788dc2a",
+ "transactionsTrie" : "3798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "3",
+ "rlp" : "0xf9024cf901f9a0ce3ecad2a028ecd1d70c3c4683c1f74d8c521dfdc7cde9bb3857e1740e914402a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a09cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8a03798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2ca0b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba825208845788dc2a80a03df8b7976e1892e74ef5d6cf859b1436d89454800d7bca1f9d3bbde6cf828d9f88159e3b259feea379f84df84b0201827530800a801ca0f6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055a075b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5ededc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x02",
+ "r" : "0xf6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055",
+ "s" : "0x75b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5eded",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0200c0",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "9f33c42c79dd227e07cd7333ec5beabfa4f628abb778f94073e7dcf623c4f6c9",
+ "mixHash" : "d88ae9006c4143fd0de18950ef90ebe42037502c338eac1154ce21d45375b287",
+ "nonce" : "8647150d7bfbe0cd",
+ "number" : "0x04",
+ "parentHash" : "3c6ffdf610c30eab3de8cb9ee5ca2218659c998f5996b971016031464dba78c7",
+ "receiptTrie" : "d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fd",
+ "stateRoot" : "aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877",
+ "timestamp" : "0x5788dc31",
+ "transactionsTrie" : "4cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "4",
+ "rlp" : "0xf9024cf901f9a03c6ffdf610c30eab3de8cb9ee5ca2218659c998f5996b971016031464dba78c7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877a04cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2ca0d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fdb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200c004832fefba825208845788dc3180a0d88ae9006c4143fd0de18950ef90ebe42037502c338eac1154ce21d45375b287888647150d7bfbe0cdf84df84b0301827530800a801ca0753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dca066deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x03",
+ "r" : "0x753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dc",
+ "s" : "0x66deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020100",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "341d9eae5bd8696e5e8c4e445cd36ff60a85d9c43ef94df01fbef0ec2ff7125f",
+ "mixHash" : "ec72429dc3f952b9c7bb2ad9f5b23f8cd23015bdf9cee1258c817a15da6b4a8a",
+ "nonce" : "a21bef974871f679",
+ "number" : "0x05",
+ "parentHash" : "9f33c42c79dd227e07cd7333ec5beabfa4f628abb778f94073e7dcf623c4f6c9",
+ "receiptTrie" : "d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17fee",
+ "stateRoot" : "f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5",
+ "timestamp" : "0x5788dc34",
+ "transactionsTrie" : "165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cd",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "5",
+ "rlp" : "0xf9024cf901f9a09f33c42c79dd227e07cd7333ec5beabfa4f628abb778f94073e7dcf623c4f6c9a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5a0165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cda0d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17feeb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302010005832fefba82cf08845788dc3480a0ec72429dc3f952b9c7bb2ad9f5b23f8cd23015bdf9cee1258c817a15da6b4a8a88a21bef974871f679f84df84b040182ea60800a801ba0cb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169a07445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x04",
+ "r" : "0xcb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169",
+ "s" : "0x7445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020140",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "bef208f4cf5571b952ab436a84a60934d96a81c4453aa1cd80c79d6fd61242dc",
+ "mixHash" : "ec1e3b01a1cbae6c8aa72dbefa7711c041a55c8e293a8c70653f604fa892eb3a",
+ "nonce" : "0580f086c036719d",
+ "number" : "0x06",
+ "parentHash" : "341d9eae5bd8696e5e8c4e445cd36ff60a85d9c43ef94df01fbef0ec2ff7125f",
+ "receiptTrie" : "975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405",
+ "stateRoot" : "05ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174",
+ "timestamp" : "0x5788dc38",
+ "transactionsTrie" : "ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51be",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "6",
+ "rlp" : "0xf9024cf901f9a0341d9eae5bd8696e5e8c4e445cd36ff60a85d9c43ef94df01fbef0ec2ff7125fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a005ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174a0ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51bea0975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014006832fefba82cf08845788dc3880a0ec1e3b01a1cbae6c8aa72dbefa7711c041a55c8e293a8c70653f604fa892eb3a880580f086c036719df84df84b050182ea60800a801ba04d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435a023640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237eec0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x05",
+ "r" : "0x4d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435",
+ "s" : "0x23640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237ee",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xa042",
+ "hash" : "9c835a5982dbd3e45af50a688075f16b3661a330c87af0f8019ca65329ca7636",
+ "mixHash" : "3943078bb0754d40ec78d9809de292aa2ec6bf5bad40d85d8da01276752db5ae",
+ "nonce" : "37f3decdc9a7e0bd",
+ "number" : "0x07",
+ "parentHash" : "bef208f4cf5571b952ab436a84a60934d96a81c4453aa1cd80c79d6fd61242dc",
+ "receiptTrie" : "aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848f",
+ "stateRoot" : "40d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029",
+ "timestamp" : "0x5788dc3c",
+ "transactionsTrie" : "b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "7",
+ "rlp" : "0xf90260f901f9a0bef208f4cf5571b952ab436a84a60934d96a81c4453aa1cd80c79d6fd61242dca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a0b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341ca0aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018007832fefba82a042845788dc3c80a03943078bb0754d40ec78d9809de292aa2ec6bf5bad40d85d8da01276752db5ae8837f3decdc9a7e0bdf861f85f060182ea609410000000000000000000000000000000000000070a801ba0bb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9a010ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81bc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x06",
+ "r" : "0xbb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9",
+ "s" : "0x10ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81b",
+ "to" : "1000000000000000000000000000000000000007",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "8",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f070182ea609410000000000000000000000000000000000000080a801ba03bce709627e1c9340795f11cc866742a0b5ced2b7e2da53e0cfe6f5f1df0a77ea02df804cdb52edacc4e01d8632050101cf7de7b235d37c31b504010910ec8f1f6c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x65aa",
+ "hash" : "37197cab54e89c31d93dfa050c38c916efe2e8a5849b43b245305ecc450eea70",
+ "mixHash" : "1eb50717ca7b4c633ba350969235157017427af1f807946adcc61098ca98e596",
+ "nonce" : "81e6b44c39618f34",
+ "number" : "0x08",
+ "parentHash" : "9c835a5982dbd3e45af50a688075f16b3661a330c87af0f8019ca65329ca7636",
+ "receiptTrie" : "2df25a52fb0817ad3948868d59d50cab8f7f780fc5e3939b4c9140936d7bb187",
+ "stateRoot" : "8565b6c0a57e2566bb768c6c67aaad77794da4e1589966ee51bd0370a9db3d1c",
+ "timestamp" : "0x5788dc46",
+ "transactionsTrie" : "2982eb44bedb5b2484b9606fe37f966942a2cce51f0705537f9040ef0614d54e",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "8",
+ "rlp" : "0xf9026df90206a09c835a5982dbd3e45af50a688075f16b3661a330c87af0f8019ca65329ca7636a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a08565b6c0a57e2566bb768c6c67aaad77794da4e1589966ee51bd0370a9db3d1ca02982eb44bedb5b2484b9606fe37f966942a2cce51f0705537f9040ef0614d54ea02df25a52fb0817ad3948868d59d50cab8f7f780fc5e3939b4c9140936d7bb187b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018008832fefba8265aa845788dc468d64616f2d686172642d666f726ba01eb50717ca7b4c633ba350969235157017427af1f807946adcc61098ca98e5968881e6b44c39618f34f861f85f070182ea609410000000000000000000000000000000000000080a801ba03bce709627e1c9340795f11cc866742a0b5ced2b7e2da53e0cfe6f5f1df0a77ea02df804cdb52edacc4e01d8632050101cf7de7b235d37c31b504010910ec8f1f6c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x07",
+ "r" : "0x3bce709627e1c9340795f11cc866742a0b5ced2b7e2da53e0cfe6f5f1df0a77e",
+ "s" : "0x2df804cdb52edacc4e01d8632050101cf7de7b235d37c31b504010910ec8f1f6",
+ "to" : "1000000000000000000000000000000000000008",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "9",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f080182ea6094100000000000000000000000000000000000000101801ba0af2bb21c6953c5c7bb966a9c09e43c52641e6e317ab738cd409a5fb9ef5e753fa010db71dc8b41e52ce746895f743c1cc1fe7ed32f17ff7935b610fcbccdc75720c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "fcc08674a7d7b521954d2545f7d09c02ebee682ce9a2e408aa094ff254c8b772",
+ "mixHash" : "188325449fab4b060f142fad86dd35c5b9a5d09e4b3cb0da9855818c832de7ac",
+ "nonce" : "d4c9a029ed38257b",
+ "number" : "0x09",
+ "parentHash" : "37197cab54e89c31d93dfa050c38c916efe2e8a5849b43b245305ecc450eea70",
+ "receiptTrie" : "06ba5b9bbbcf94865cd9b522c4de701287f0fcb197fc2a19e54aa23d0fb20218",
+ "stateRoot" : "0eef10cd08a0a4a20df81757eeb4114a0db434c8d41e6cc35e8cf9d8c22d81c7",
+ "timestamp" : "0x5788dc51",
+ "transactionsTrie" : "7dac38119a2beeb72d0f67b77bef9a4cbae22ca5c7151f1e737f9db1bf37b135",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "9",
+ "rlp" : "0xf9026df90206a037197cab54e89c31d93dfa050c38c916efe2e8a5849b43b245305ecc450eea70a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a00eef10cd08a0a4a20df81757eeb4114a0db434c8d41e6cc35e8cf9d8c22d81c7a07dac38119a2beeb72d0f67b77bef9a4cbae22ca5c7151f1e737f9db1bf37b135a006ba5b9bbbcf94865cd9b522c4de701287f0fcb197fc2a19e54aa23d0fb20218b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018009832fefba825208845788dc518d64616f2d686172642d666f726ba0188325449fab4b060f142fad86dd35c5b9a5d09e4b3cb0da9855818c832de7ac88d4c9a029ed38257bf861f85f080182ea6094100000000000000000000000000000000000000101801ba0af2bb21c6953c5c7bb966a9c09e43c52641e6e317ab738cd409a5fb9ef5e753fa010db71dc8b41e52ce746895f743c1cc1fe7ed32f17ff7935b610fcbccdc75720c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x08",
+ "r" : "0xaf2bb21c6953c5c7bb966a9c09e43c52641e6e317ab738cd409a5fb9ef5e753f",
+ "s" : "0x10db71dc8b41e52ce746895f743c1cc1fe7ed32f17ff7935b610fcbccdc75720",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "10",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f090182ea6094100000000000000000000000000000000000000101801ca0c3d783e93561599d86cbf460e153b3cb37d90478a3c47bfc08bd29563c9d849fa0100e466f7a4c6af73a9030988c63ec88ccaba460fd6a1fb1adc30b61dbdd0857c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "5f58b34c4108e44ab7bfbfe9c70b5b86097cdff8b21ae7a990d8ed0c31a04634",
+ "mixHash" : "fd36229270002f66be02e74dcc3088b324a862e9c2797bf551a064441eb41553",
+ "nonce" : "0c81358b772e61d1",
+ "number" : "0x0a",
+ "parentHash" : "fcc08674a7d7b521954d2545f7d09c02ebee682ce9a2e408aa094ff254c8b772",
+ "receiptTrie" : "2f00350472bd9d8d635a091a20bac638d9c6bcb1d6b5c81736a0d1ca5fee93be",
+ "stateRoot" : "96859e95e173eef8004bb592b19cefd71ff683ef0900de4bba7bfe44b96fab3b",
+ "timestamp" : "0x5788dc5b",
+ "transactionsTrie" : "771cef5982e1119f26a627bbeeadc21e350838157aad275b2f4a884a57e277da",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "10",
+ "rlp" : "0xf9026df90206a0fcc08674a7d7b521954d2545f7d09c02ebee682ce9a2e408aa094ff254c8b772a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a096859e95e173eef8004bb592b19cefd71ff683ef0900de4bba7bfe44b96fab3ba0771cef5982e1119f26a627bbeeadc21e350838157aad275b2f4a884a57e277daa02f00350472bd9d8d635a091a20bac638d9c6bcb1d6b5c81736a0d1ca5fee93beb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201800a832fefba825208845788dc5b8d64616f2d686172642d666f726ba0fd36229270002f66be02e74dcc3088b324a862e9c2797bf551a064441eb41553880c81358b772e61d1f861f85f090182ea6094100000000000000000000000000000000000000101801ca0c3d783e93561599d86cbf460e153b3cb37d90478a3c47bfc08bd29563c9d849fa0100e466f7a4c6af73a9030988c63ec88ccaba460fd6a1fb1adc30b61dbdd0857c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x09",
+ "r" : "0xc3d783e93561599d86cbf460e153b3cb37d90478a3c47bfc08bd29563c9d849f",
+ "s" : "0x100e466f7a4c6af73a9030988c63ec88ccaba460fd6a1fb1adc30b61dbdd0857",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1c",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "11",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0a0182ea6094100000000000000000000000000000000000000101801ca076766ba9925c43448e1ac5c05f7583e6d3a3366eb3dc95a3489ff363b449795ca059b8da33b7aea0d60059f5c1eabce26c1e23e32f31930bff3b49eb1e94cc62a0c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0201c0",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "851a805fb871ff549a759409ed3b909ec2e3abbca7c4df259a473489c346ba43",
+ "mixHash" : "89999ed1fac8370a082cb0a364de948d6cf9db298d40c3632936cbe9efe7d58e",
+ "nonce" : "8ce8d22f2893653c",
+ "number" : "0x0b",
+ "parentHash" : "5f58b34c4108e44ab7bfbfe9c70b5b86097cdff8b21ae7a990d8ed0c31a04634",
+ "receiptTrie" : "324f8d9eb5892134e0d375c7a4826bbd28ba0f6e73b9b64bbb595e410387ddc3",
+ "stateRoot" : "56bf73c2776f59118fdb82e8b01dc88c3cbb1e2ded3c1d7ef17c4603c500346d",
+ "timestamp" : "0x5788dc63",
+ "transactionsTrie" : "10a81573cb14d5c2794e1b406e26b6d9612c888bbc98c453131bd9b06f61d7c9",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "11",
+ "rlp" : "0xf9026df90206a05f58b34c4108e44ab7bfbfe9c70b5b86097cdff8b21ae7a990d8ed0c31a04634a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a056bf73c2776f59118fdb82e8b01dc88c3cbb1e2ded3c1d7ef17c4603c500346da010a81573cb14d5c2794e1b406e26b6d9612c888bbc98c453131bd9b06f61d7c9a0324f8d9eb5892134e0d375c7a4826bbd28ba0f6e73b9b64bbb595e410387ddc3b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201c00b832fefba825208845788dc638d64616f2d686172642d666f726ba089999ed1fac8370a082cb0a364de948d6cf9db298d40c3632936cbe9efe7d58e888ce8d22f2893653cf861f85f0a0182ea6094100000000000000000000000000000000000000101801ca076766ba9925c43448e1ac5c05f7583e6d3a3366eb3dc95a3489ff363b449795ca059b8da33b7aea0d60059f5c1eabce26c1e23e32f31930bff3b49eb1e94cc62a0c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0a",
+ "r" : "0x76766ba9925c43448e1ac5c05f7583e6d3a3366eb3dc95a3489ff363b449795c",
+ "s" : "0x59b8da33b7aea0d60059f5c1eabce26c1e23e32f31930bff3b49eb1e94cc62a0",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1c",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "12",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0b0182ea6094100000000000000000000000000000000000000101801ca085939abfa5d1d2dd8e1bde2655e44236d8e1940a075000301d6deab472ccd680a078d2ae659006c58f9ccc5af29955f7439e48b30b2efe64abdd001165364faa9ac0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020200",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "d2248eb423eb10de5f570b455f4ada1d53e59b254be9c74a011952412652f96a",
+ "mixHash" : "6adfeb8c142a16fe8a4ca09d37997694a3d3a55b3cf93ba063cbca9e68e91b79",
+ "nonce" : "8319bcd74da15bc7",
+ "number" : "0x0c",
+ "parentHash" : "851a805fb871ff549a759409ed3b909ec2e3abbca7c4df259a473489c346ba43",
+ "receiptTrie" : "e150d54f9f244d65a2d906bbb8b0fe9f218119c8b0e00906846ac5cbdab800d1",
+ "stateRoot" : "c545bccf90c734ea9de210666693ada930bbcdbb0cefcde9a57848dc363e8397",
+ "timestamp" : "0x5788dc6b",
+ "transactionsTrie" : "b7757adef51c8c3b9b0433d1a0db70fe5505e8db1848934da1c1d2c6aafc3f65",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "12",
+ "rlp" : "0xf9026df90206a0851a805fb871ff549a759409ed3b909ec2e3abbca7c4df259a473489c346ba43a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c545bccf90c734ea9de210666693ada930bbcdbb0cefcde9a57848dc363e8397a0b7757adef51c8c3b9b0433d1a0db70fe5505e8db1848934da1c1d2c6aafc3f65a0e150d54f9f244d65a2d906bbb8b0fe9f218119c8b0e00906846ac5cbdab800d1b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830202000c832fefba825208845788dc6b8d64616f2d686172642d666f726ba06adfeb8c142a16fe8a4ca09d37997694a3d3a55b3cf93ba063cbca9e68e91b79888319bcd74da15bc7f861f85f0b0182ea6094100000000000000000000000000000000000000101801ca085939abfa5d1d2dd8e1bde2655e44236d8e1940a075000301d6deab472ccd680a078d2ae659006c58f9ccc5af29955f7439e48b30b2efe64abdd001165364faa9ac0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0b",
+ "r" : "0x85939abfa5d1d2dd8e1bde2655e44236d8e1940a075000301d6deab472ccd680",
+ "s" : "0x78d2ae659006c58f9ccc5af29955f7439e48b30b2efe64abdd001165364faa9a",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1c",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "13",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0c0182ea6094100000000000000000000000000000000000000101801ca00bb5ae599741966cbd02d6080937bd1f247dfaa266e19891228a4fbfc0c85226a07a4f56371aa5b685bc10d64e180e24850ae18b0fcc675e7d187f877b8d9b1bf6c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020200",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "746b52c52853e38f8b42e10bb36c6325094bd7c49ff77f0e04dd383dfde4b3e5",
+ "mixHash" : "0e925fa65c46cb3527b304c1a699ba9b9244e58715b3c0be8d30f78fbbf91bb7",
+ "nonce" : "c43118c563e4752c",
+ "number" : "0x0d",
+ "parentHash" : "d2248eb423eb10de5f570b455f4ada1d53e59b254be9c74a011952412652f96a",
+ "receiptTrie" : "f5e02249f25bfb35d3338fc0b9407ba4a2da198ad27050ee5fe76f434163f789",
+ "stateRoot" : "0d62f6b628aa29c160a6c6c5462b2395d55fc8699251ef44dd6f7bfb78096359",
+ "timestamp" : "0x5788dc76",
+ "transactionsTrie" : "38b9ac6344a8e2cdd0c0b598f70f21997ab1b39d3ecb2f7a8c7af93e300e0398",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "13",
+ "rlp" : "0xf9026df90206a0d2248eb423eb10de5f570b455f4ada1d53e59b254be9c74a011952412652f96aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a00d62f6b628aa29c160a6c6c5462b2395d55fc8699251ef44dd6f7bfb78096359a038b9ac6344a8e2cdd0c0b598f70f21997ab1b39d3ecb2f7a8c7af93e300e0398a0f5e02249f25bfb35d3338fc0b9407ba4a2da198ad27050ee5fe76f434163f789b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830202000d832fefba825208845788dc768d64616f2d686172642d666f726ba00e925fa65c46cb3527b304c1a699ba9b9244e58715b3c0be8d30f78fbbf91bb788c43118c563e4752cf861f85f0c0182ea6094100000000000000000000000000000000000000101801ca00bb5ae599741966cbd02d6080937bd1f247dfaa266e19891228a4fbfc0c85226a07a4f56371aa5b685bc10d64e180e24850ae18b0fcc675e7d187f877b8d9b1bf6c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0c",
+ "r" : "0x0bb5ae599741966cbd02d6080937bd1f247dfaa266e19891228a4fbfc0c85226",
+ "s" : "0x7a4f56371aa5b685bc10d64e180e24850ae18b0fcc675e7d187f877b8d9b1bf6",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1c",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "14",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0d0182ea6094100000000000000000000000000000000000000101801ba0db8f9cd690ad1f6481c09a5445a4185d4fcfdeed76f7ba403d303985c1abaa4ca01ed5f2e9fd9a021103acc910cbefcdaa82d2afd44205a8f681f0c17ebf2da192c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020200",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "19831eb58833d70ba74fc813e112201365ac4f4cdd33026d06df377dfae52498",
+ "mixHash" : "5e7e6fe4790cf6518a643d5351f35fd6b8f6a62b281bb5074138851bac66eb13",
+ "nonce" : "be71f6cdf480c4a2",
+ "number" : "0x0e",
+ "parentHash" : "746b52c52853e38f8b42e10bb36c6325094bd7c49ff77f0e04dd383dfde4b3e5",
+ "receiptTrie" : "308cbfc04d0a5d4821a96fec27ea00f2e278886545add9ed961c28015970ec5c",
+ "stateRoot" : "159a6f365d9aa0930979cb60b9d04cd3c72b50c2f830aa27d610f8c014a600b1",
+ "timestamp" : "0x5788dc80",
+ "transactionsTrie" : "4b6ff42fd8884c83615bf62830df849b18901c07615aafef9aaf16d33f807349",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "14",
+ "rlp" : "0xf9026df90206a0746b52c52853e38f8b42e10bb36c6325094bd7c49ff77f0e04dd383dfde4b3e5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0159a6f365d9aa0930979cb60b9d04cd3c72b50c2f830aa27d610f8c014a600b1a04b6ff42fd8884c83615bf62830df849b18901c07615aafef9aaf16d33f807349a0308cbfc04d0a5d4821a96fec27ea00f2e278886545add9ed961c28015970ec5cb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830202000e832fefba825208845788dc808d64616f2d686172642d666f726ba05e7e6fe4790cf6518a643d5351f35fd6b8f6a62b281bb5074138851bac66eb1388be71f6cdf480c4a2f861f85f0d0182ea6094100000000000000000000000000000000000000101801ba0db8f9cd690ad1f6481c09a5445a4185d4fcfdeed76f7ba403d303985c1abaa4ca01ed5f2e9fd9a021103acc910cbefcdaa82d2afd44205a8f681f0c17ebf2da192c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0d",
+ "r" : "0xdb8f9cd690ad1f6481c09a5445a4185d4fcfdeed76f7ba403d303985c1abaa4c",
+ "s" : "0x1ed5f2e9fd9a021103acc910cbefcdaa82d2afd44205a8f681f0c17ebf2da192",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "15",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0e0182ea6094100000000000000000000000000000000000000101801ca0af8f37a08239d55138f8b92680c682d4118da357c79d6a6b148a6dcce4d961d1a057bf5b29fc32419091bd8e170fed46703b7a2640be0ca91d6903d75c932be160c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020200",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "53337dbe188bd181ba13c0b12333b3560b21969c17f4ca2ce73b327d32a1bd17",
+ "mixHash" : "1203fe51e0609473cbc778ac000373a21d3e4b4b620e869e58281e98b9d46ffe",
+ "nonce" : "ab0199bac390816d",
+ "number" : "0x0f",
+ "parentHash" : "19831eb58833d70ba74fc813e112201365ac4f4cdd33026d06df377dfae52498",
+ "receiptTrie" : "3ceb3d74ba79019e8aac7a6a4de23c5584109dfcff70ed61c160e24ab46bcd3d",
+ "stateRoot" : "d2f5a74b3962d04c2124d780ffa38fc2181e1b09eabb7f4bf5a172a18f75d4d7",
+ "timestamp" : "0x5788dc8e",
+ "transactionsTrie" : "ce025c4f49fea19fbb8b91252f03fd36d2ff6e9e8817c701452992098534abda",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "15",
+ "rlp" : "0xf9026df90206a019831eb58833d70ba74fc813e112201365ac4f4cdd33026d06df377dfae52498a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0d2f5a74b3962d04c2124d780ffa38fc2181e1b09eabb7f4bf5a172a18f75d4d7a0ce025c4f49fea19fbb8b91252f03fd36d2ff6e9e8817c701452992098534abdaa03ceb3d74ba79019e8aac7a6a4de23c5584109dfcff70ed61c160e24ab46bcd3db9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830202000f832fefba825208845788dc8e8d64616f2d686172642d666f726ba01203fe51e0609473cbc778ac000373a21d3e4b4b620e869e58281e98b9d46ffe88ab0199bac390816df861f85f0e0182ea6094100000000000000000000000000000000000000101801ca0af8f37a08239d55138f8b92680c682d4118da357c79d6a6b148a6dcce4d961d1a057bf5b29fc32419091bd8e170fed46703b7a2640be0ca91d6903d75c932be160c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0e",
+ "r" : "0xaf8f37a08239d55138f8b92680c682d4118da357c79d6a6b148a6dcce4d961d1",
+ "s" : "0x57bf5b29fc32419091bd8e170fed46703b7a2640be0ca91d6903d75c932be160",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1c",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "16",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f0f0182ea6094100000000000000000000000000000000000000101801ba040a5467881266422758d59ae66fb3d2511f0131038b0e43abc397d01527fd61ea0172ed4b9c3cf917bf071cb6cc716c4f6754949ea94888d4bb9657eac98fd2c10c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020240",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "6b1d0b868bd5920d3edc2d9073a3c9fc4c9dc7656a51e2ebe89ac5fb2f0e90b3",
+ "mixHash" : "29a4eb947f50b1296aa46d5393e59f002aa01c34a9e7bed6f1fd40e66362e1e2",
+ "nonce" : "98376d65695940d3",
+ "number" : "0x10",
+ "parentHash" : "53337dbe188bd181ba13c0b12333b3560b21969c17f4ca2ce73b327d32a1bd17",
+ "receiptTrie" : "1139851ae488ee33e16c5ef766d36d924d6c4ead16eb1996a92856a5640e938e",
+ "stateRoot" : "c57fab6567df96712cd7031f96a3073f6f1706e637d91ed15fcefd308b024b86",
+ "timestamp" : "0x5788dc97",
+ "transactionsTrie" : "6f2130deb628c7742532339d5b5f1539f9579edcab16996b3b05836a6883073f",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "16",
+ "rlp" : "0xf9026df90206a053337dbe188bd181ba13c0b12333b3560b21969c17f4ca2ce73b327d32a1bd17a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c57fab6567df96712cd7031f96a3073f6f1706e637d91ed15fcefd308b024b86a06f2130deb628c7742532339d5b5f1539f9579edcab16996b3b05836a6883073fa01139851ae488ee33e16c5ef766d36d924d6c4ead16eb1996a92856a5640e938eb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302024010832fefba825208845788dc978d64616f2d686172642d666f726ba029a4eb947f50b1296aa46d5393e59f002aa01c34a9e7bed6f1fd40e66362e1e28898376d65695940d3f861f85f0f0182ea6094100000000000000000000000000000000000000101801ba040a5467881266422758d59ae66fb3d2511f0131038b0e43abc397d01527fd61ea0172ed4b9c3cf917bf071cb6cc716c4f6754949ea94888d4bb9657eac98fd2c10c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x0f",
+ "r" : "0x40a5467881266422758d59ae66fb3d2511f0131038b0e43abc397d01527fd61e",
+ "s" : "0x172ed4b9c3cf917bf071cb6cc716c4f6754949ea94888d4bb9657eac98fd2c10",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "17",
+ "rlp" : "0xf9024af901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f861f85f100182ea6094100000000000000000000000000000000000000101801ba0d7933ba406ea332cdec2d673bbf5789c34a43224629c220bd0ac2c9d81c7b094a05e0a096cbe3bdc9047b18de6be4822165c669bddf712456567dc525547059ff8c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020240",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "7cda04f38d4a31d51370d4d8cc763b3d15e53eb4fe76575a2a87a22f5c53a5cf",
+ "mixHash" : "38824245bf0d625f30f725a2daa9245035240449cbe011358328fc36066a7d91",
+ "nonce" : "16893c7414215a57",
+ "number" : "0x11",
+ "parentHash" : "6b1d0b868bd5920d3edc2d9073a3c9fc4c9dc7656a51e2ebe89ac5fb2f0e90b3",
+ "receiptTrie" : "f71904ef163e1bb258f38fba942af54f6f2947ded4702309ff60fb2a70291dc8",
+ "stateRoot" : "719b70fcc0d130db91c3ec672245c08728fb3636d3e5068de03b1eacb5dec827",
+ "timestamp" : "0x5788dca1",
+ "transactionsTrie" : "316f3430ee504cbaa58cec2ce451de2fc9e0f1e7f99b16b33f69ab3ca93130be",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "17",
+ "rlp" : "0xf9026df90206a06b1d0b868bd5920d3edc2d9073a3c9fc4c9dc7656a51e2ebe89ac5fb2f0e90b3a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0719b70fcc0d130db91c3ec672245c08728fb3636d3e5068de03b1eacb5dec827a0316f3430ee504cbaa58cec2ce451de2fc9e0f1e7f99b16b33f69ab3ca93130bea0f71904ef163e1bb258f38fba942af54f6f2947ded4702309ff60fb2a70291dc8b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302024011832fefba825208845788dca18d64616f2d686172642d666f726ba038824245bf0d625f30f725a2daa9245035240449cbe011358328fc36066a7d918816893c7414215a57f861f85f100182ea6094100000000000000000000000000000000000000101801ba0d7933ba406ea332cdec2d673bbf5789c34a43224629c220bd0ac2c9d81c7b094a05e0a096cbe3bdc9047b18de6be4822165c669bddf712456567dc525547059ff8c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x10",
+ "r" : "0xd7933ba406ea332cdec2d673bbf5789c34a43224629c220bd0ac2c9d81c7b094",
+ "s" : "0x5e0a096cbe3bdc9047b18de6be4822165c669bddf712456567dc525547059ff8",
+ "to" : "1000000000000000000000000000000000000001",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ }
+ ],
+ "genesisBlockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x42",
+ "gasLimit" : "0x2fefd8",
+ "gasUsed" : "0x00",
+ "hash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "mixHash" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "nonce" : "0102030405060708",
+ "number" : "0x00",
+ "parentHash" : "0000000000000000000000000000000000000000000000000000000000000000",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "6bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66d",
+ "timestamp" : "0x54c98c81",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "genesisRLP" : "0xf901fcf901f7a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a06bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080832fefd8808454c98c8142a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0",
+ "lastblockhash" : "7cda04f38d4a31d51370d4d8cc763b3d15e53eb4fe76575a2a87a22f5c53a5cf",
+ "postState" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0c243ebe6a031753dc0dd850acf422844a3efb76" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000001" : {
+ "balance" : "0x09",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x0a",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ "0x00" : "0x02540be400"
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x0a",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "248f0f0f33eadb89e9d87fd5c127f58567f3ffde" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "85c2f277588ea1e6901ed59e587bea222c575f87" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8888f1f195afa192cfee860698584c030f4c9db1" : {
+ "balance" : "0x049b9ca9a6943ace64",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b93fb43",
+ "code" : "0x",
+ "nonce" : "0x11",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b1d37cf6180ceb738ca45b5005a2f418c02e204b" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bf4ed7b27f1d666546e30d74d50d173d20bca754" : {
+ "balance" : "0x010bc166ae40",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b9aca00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x0f4240",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ }
+ },
+ "DaoTransactions_EmptyTransactionAndForkBlocksAhead" : {
+ "blocks" : [
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "2d909e451e1b958a488fd067628526a424c0bc3fbb0afe78998e92f6ef92c880",
+ "mixHash" : "02c435f7b9734da7aa6db2217ba1a4522f3465a99006cbd44942272fc793e5c7",
+ "nonce" : "c94ecb5430e81c0c",
+ "number" : "0x01",
+ "parentHash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "receiptTrie" : "37aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054",
+ "stateRoot" : "d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01a",
+ "timestamp" : "0x5788dca6",
+ "transactionsTrie" : "ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "1",
+ "rlp" : "0xf9024cf901f9a0cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01aa0ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179a037aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefba825208845788dca680a002c435f7b9734da7aa6db2217ba1a4522f3465a99006cbd44942272fc793e5c788c94ecb5430e81c0cf84df84b8001827530800a801ca057cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9a05ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03ac0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x00",
+ "r" : "0x57cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9",
+ "s" : "0x5ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03a",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020040",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "59d2678d1e13c27405ca21d6cc09303c52422c3eb5b9233f0431260e4314a8ff",
+ "mixHash" : "43d612b9569a9a1e1fcefc3fdff9ee4b15d6844c1b912925c15e852bc2eee47a",
+ "nonce" : "bc6be4c140452074",
+ "number" : "0x02",
+ "parentHash" : "2d909e451e1b958a488fd067628526a424c0bc3fbb0afe78998e92f6ef92c880",
+ "receiptTrie" : "9a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64",
+ "stateRoot" : "c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988",
+ "timestamp" : "0x5788dcac",
+ "transactionsTrie" : "76c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abf",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "2",
+ "rlp" : "0xf9024cf901f9a02d909e451e1b958a488fd067628526a424c0bc3fbb0afe78998e92f6ef92c880a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988a076c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abfa09a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004002832fefba825208845788dcac80a043d612b9569a9a1e1fcefc3fdff9ee4b15d6844c1b912925c15e852bc2eee47a88bc6be4c140452074f84df84b0101827530800a801ca0bb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1fa04bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x01",
+ "r" : "0xbb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1f",
+ "s" : "0x4bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020080",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "7051d31496dd62effea9d15df0bfa702853ccbe9febbcbaac756fe10c48afa31",
+ "mixHash" : "1267559086eed7764a14877cbc3ef681f1e8b6948d15f06babe3e99004fbe948",
+ "nonce" : "4806557d56b8ca98",
+ "number" : "0x03",
+ "parentHash" : "59d2678d1e13c27405ca21d6cc09303c52422c3eb5b9233f0431260e4314a8ff",
+ "receiptTrie" : "b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097",
+ "stateRoot" : "9cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8",
+ "timestamp" : "0x5788dcb4",
+ "transactionsTrie" : "3798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "3",
+ "rlp" : "0xf9024cf901f9a059d2678d1e13c27405ca21d6cc09303c52422c3eb5b9233f0431260e4314a8ffa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a09cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8a03798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2ca0b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba825208845788dcb480a01267559086eed7764a14877cbc3ef681f1e8b6948d15f06babe3e99004fbe948884806557d56b8ca98f84df84b0201827530800a801ca0f6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055a075b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5ededc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x02",
+ "r" : "0xf6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055",
+ "s" : "0x75b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5eded",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0200c0",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "2d861373e66c78d1d5eaa5833386489938365e7cb368a8666c5fbc215cbce406",
+ "mixHash" : "db2e0f7741e497b519d547dc38ef0531db80fd5410884545dfdaeb694dc57de1",
+ "nonce" : "fb70478bc0ec196f",
+ "number" : "0x04",
+ "parentHash" : "7051d31496dd62effea9d15df0bfa702853ccbe9febbcbaac756fe10c48afa31",
+ "receiptTrie" : "d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fd",
+ "stateRoot" : "aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877",
+ "timestamp" : "0x5788dcb6",
+ "transactionsTrie" : "4cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "4",
+ "rlp" : "0xf9024cf901f9a07051d31496dd62effea9d15df0bfa702853ccbe9febbcbaac756fe10c48afa31a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877a04cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2ca0d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fdb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200c004832fefba825208845788dcb680a0db2e0f7741e497b519d547dc38ef0531db80fd5410884545dfdaeb694dc57de188fb70478bc0ec196ff84df84b0301827530800a801ca0753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dca066deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x03",
+ "r" : "0x753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dc",
+ "s" : "0x66deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020100",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "5d08215124863936106a33d44911139e90b5727af7dd7e00f641e69b3651a6f7",
+ "mixHash" : "936c648b4f2d8097f8f38341961112d5002d725a43c916895af6478db2320dee",
+ "nonce" : "93aebe2f5096c2f0",
+ "number" : "0x05",
+ "parentHash" : "2d861373e66c78d1d5eaa5833386489938365e7cb368a8666c5fbc215cbce406",
+ "receiptTrie" : "d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17fee",
+ "stateRoot" : "f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5",
+ "timestamp" : "0x5788dcbb",
+ "transactionsTrie" : "165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cd",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "5",
+ "rlp" : "0xf9024cf901f9a02d861373e66c78d1d5eaa5833386489938365e7cb368a8666c5fbc215cbce406a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5a0165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cda0d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17feeb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302010005832fefba82cf08845788dcbb80a0936c648b4f2d8097f8f38341961112d5002d725a43c916895af6478db2320dee8893aebe2f5096c2f0f84df84b040182ea60800a801ba0cb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169a07445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x04",
+ "r" : "0xcb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169",
+ "s" : "0x7445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020140",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "acbdff199573486fb95c161701899d39b1c185b3d0b47f84e6dfeb523460b23d",
+ "mixHash" : "68b8605bad23304f622a5c84c7f3fa3b4552147c025ef7c4ccfc6eba9249f73a",
+ "nonce" : "a7abc8bf394b64c6",
+ "number" : "0x06",
+ "parentHash" : "5d08215124863936106a33d44911139e90b5727af7dd7e00f641e69b3651a6f7",
+ "receiptTrie" : "975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405",
+ "stateRoot" : "05ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174",
+ "timestamp" : "0x5788dcbe",
+ "transactionsTrie" : "ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51be",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "6",
+ "rlp" : "0xf9024cf901f9a05d08215124863936106a33d44911139e90b5727af7dd7e00f641e69b3651a6f7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a005ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174a0ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51bea0975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014006832fefba82cf08845788dcbe80a068b8605bad23304f622a5c84c7f3fa3b4552147c025ef7c4ccfc6eba9249f73a88a7abc8bf394b64c6f84df84b050182ea60800a801ba04d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435a023640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237eec0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x05",
+ "r" : "0x4d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435",
+ "s" : "0x23640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237ee",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xa042",
+ "hash" : "f49bb56fe54a6b9b5f680fabdda650282ed775dfd61f680b1aa22ae7981ad0f3",
+ "mixHash" : "fa179ecc633681c23745afc1b9302c33b34713054722cc90fcafa66c4626af9b",
+ "nonce" : "da2c320a8cf4466b",
+ "number" : "0x07",
+ "parentHash" : "acbdff199573486fb95c161701899d39b1c185b3d0b47f84e6dfeb523460b23d",
+ "receiptTrie" : "aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848f",
+ "stateRoot" : "40d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029",
+ "timestamp" : "0x5788dcc4",
+ "transactionsTrie" : "b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "7",
+ "rlp" : "0xf90260f901f9a0acbdff199573486fb95c161701899d39b1c185b3d0b47f84e6dfeb523460b23da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a0b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341ca0aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018007832fefba82a042845788dcc480a0fa179ecc633681c23745afc1b9302c33b34713054722cc90fcafa66c4626af9b88da2c320a8cf4466bf861f85f060182ea609410000000000000000000000000000000000000070a801ba0bb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9a010ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81bc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x06",
+ "r" : "0xbb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9",
+ "s" : "0x10ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81b",
+ "to" : "1000000000000000000000000000000000000007",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "8",
+ "rlp" : "0xf901e8f901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80c0c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0201c0",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "f72712a3cc7a529b9f546210021b6656869b4b7a087ae7edd46813b3d16d6f33",
+ "mixHash" : "ce2560cb248158e7d6dc7b91b9c9bfe33ec595e0b8c28949295fd0f3825fb3c5",
+ "nonce" : "e1456cf26b175da3",
+ "number" : "0x08",
+ "parentHash" : "f49bb56fe54a6b9b5f680fabdda650282ed775dfd61f680b1aa22ae7981ad0f3",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "c98502a5a62b5f861b5b8a73b1bdcf94045f2929024e5cc9d8af8e3989c388e1",
+ "timestamp" : "0x5788dccd",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "8",
+ "rlp" : "0xf90209f90204a0f49bb56fe54a6b9b5f680fabdda650282ed775dfd61f680b1aa22ae7981ad0f3a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c98502a5a62b5f861b5b8a73b1bdcf94045f2929024e5cc9d8af8e3989c388e1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201c008832fefba80845788dccd8d64616f2d686172642d666f726ba0ce2560cb248158e7d6dc7b91b9c9bfe33ec595e0b8c28949295fd0f3825fb3c588e1456cf26b175da3c0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020200",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x65aa",
+ "hash" : "f413ffd0487431795bb6ddc294a5d1bf3521ec030306c2753d16fad0faa7a75a",
+ "mixHash" : "0d26e09d369ab5b1fc31616bc6d88eecf0c34f548c5491a508c3ae31dbebb301",
+ "nonce" : "584a1e99e55da8aa",
+ "number" : "0x09",
+ "parentHash" : "f72712a3cc7a529b9f546210021b6656869b4b7a087ae7edd46813b3d16d6f33",
+ "receiptTrie" : "495e1248e1c24cb86cd27272086718c404d4b87531e03fa943ff149511a0faa6",
+ "stateRoot" : "deb10c3f01687b15e4c3af95f7d12cf003e80af3196bc77a80fafa75b527c31d",
+ "timestamp" : "0x5788dcd3",
+ "transactionsTrie" : "964e2a482dc1856fff3b00f545aaf8720aeef70a3ffe86cebf05bbc2c34bf539",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "9",
+ "rlp" : "0xf9026df90206a0f72712a3cc7a529b9f546210021b6656869b4b7a087ae7edd46813b3d16d6f33a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0deb10c3f01687b15e4c3af95f7d12cf003e80af3196bc77a80fafa75b527c31da0964e2a482dc1856fff3b00f545aaf8720aeef70a3ffe86cebf05bbc2c34bf539a0495e1248e1c24cb86cd27272086718c404d4b87531e03fa943ff149511a0faa6b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302020009832fefba8265aa845788dcd38d64616f2d686172642d666f726ba00d26e09d369ab5b1fc31616bc6d88eecf0c34f548c5491a508c3ae31dbebb30188584a1e99e55da8aaf861f85f070182ea6094100000000000000000000000000000000000000801801ba09e18981c45e9f6bb54e3f52cae58f2c3c00f2220a9f1c788d0ee3fc2394d4956a038207c17c10faae1fa83bff79770fa38134a19b6ca6f04059d7a307c05f67e6ac0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x07",
+ "r" : "0x9e18981c45e9f6bb54e3f52cae58f2c3c00f2220a9f1c788d0ee3fc2394d4956",
+ "s" : "0x38207c17c10faae1fa83bff79770fa38134a19b6ca6f04059d7a307c05f67e6a",
+ "to" : "1000000000000000000000000000000000000008",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "10",
+ "rlp" : "0xf90236f901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f84df84b080182ea608001801ba066a8a933ff9208ecb2334a7edcf0592751d68e5e9cf155814238cd3072a7d38ba02cd8720983a8172b1304aad194d3f2ea3daeaf5c51bc3dc983d8218448f063bdc0"
+ },
+ {
+ "blocknumber" : "11",
+ "rlp" : "0xf90236f901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f84df84b090182ea608001801ba08c41aab2b35a0c8c82f88076fe817d2c3a261e6bbab3c270f2d5f6c8ba077f2ea04861726cfb49b87296466ab8cf0790d7790e7e371168dc7e960361bc3479e985c0"
+ }
+ ],
+ "genesisBlockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x42",
+ "gasLimit" : "0x2fefd8",
+ "gasUsed" : "0x00",
+ "hash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "mixHash" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "nonce" : "0102030405060708",
+ "number" : "0x00",
+ "parentHash" : "0000000000000000000000000000000000000000000000000000000000000000",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "6bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66d",
+ "timestamp" : "0x54c98c81",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "genesisRLP" : "0xf901fcf901f7a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a06bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080832fefd8808454c98c8142a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0",
+ "lastblockhash" : "f413ffd0487431795bb6ddc294a5d1bf3521ec030306c2753d16fad0faa7a75a",
+ "postState" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0c243ebe6a031753dc0dd850acf422844a3efb76" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x0a",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ "0x00" : "0x02540be400"
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x01",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "248f0f0f33eadb89e9d87fd5c127f58567f3ffde" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "85c2f277588ea1e6901ed59e587bea222c575f87" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8888f1f195afa192cfee860698584c030f4c9db1" : {
+ "balance" : "0x0270801d946c97ec1c",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b96dd9d",
+ "code" : "0x",
+ "nonce" : "0x08",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b1d37cf6180ceb738ca45b5005a2f418c02e204b" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bf4ed7b27f1d666546e30d74d50d173d20bca754" : {
+ "balance" : "0x010bc166ae40",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b9aca00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x0f4240",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ }
+ },
+ "DaoTransactions_UncleExtradata" : {
+ "blocks" : [
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "6a6235d2937cb55dd1bb0c84f64943011c6b9aa655ecf949d0f3677d3df37fe9",
+ "mixHash" : "dc5b0e1a8b5e111a45474596139eceef6e3ef2c96226dacf6e282262a7e69d5a",
+ "nonce" : "09e6701cc7e04da7",
+ "number" : "0x01",
+ "parentHash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "receiptTrie" : "37aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054",
+ "stateRoot" : "d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01a",
+ "timestamp" : "0x5788dce1",
+ "transactionsTrie" : "ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "1",
+ "rlp" : "0xf9024cf901f9a0cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0d3f60d7c23e6d3e8eeaa691dd6d54b653e9d33ce579ed821a1e408c1e89cf01aa0ac81275d7a81a720240146377982939179218535bfcfa9469c8bdd3e264ef179a037aee413d1d4f1335720ed1ee882bac4b2d41c8072453b23445020c951682054b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001832fefba825208845788dce180a0dc5b0e1a8b5e111a45474596139eceef6e3ef2c96226dacf6e282262a7e69d5a8809e6701cc7e04da7f84df84b8001827530800a801ca057cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9a05ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03ac0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x00",
+ "r" : "0x57cb46c0b702929c4fd4127b2370f28a7aeeaa65509699e58eedf7692090a0a9",
+ "s" : "0x5ba7c83d99be6a9bca0c81947023ba3b5f2162516d82d0757bf8004f3e9bc03a",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020040",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "d79fd92f80a0745c29abc6e28578aeb8f063f2dec88c246e241b5dd5bdb8ba7d",
+ "mixHash" : "c39d82b340083da577ef2f0299521ecdf7062575dad75cb15566b77869493a4e",
+ "nonce" : "a0344ef0a4622d51",
+ "number" : "0x02",
+ "parentHash" : "6a6235d2937cb55dd1bb0c84f64943011c6b9aa655ecf949d0f3677d3df37fe9",
+ "receiptTrie" : "9a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64",
+ "stateRoot" : "c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988",
+ "timestamp" : "0x5788dce9",
+ "transactionsTrie" : "76c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abf",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "2",
+ "rlp" : "0xf9024cf901f9a06a6235d2937cb55dd1bb0c84f64943011c6b9aa655ecf949d0f3677d3df37fe9a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0c97eb33ff96a24bd16aaa76040aff370a690e6e52f0172eba3a436d7c867a988a076c7a0ce7644661f276c76fb9a82eaee879d0642cf4ed244fc10afc02c646abfa09a62bdf5dbcf4d27f17a31d5506d3249c5a6ca549787b1902ba01584bb33cf64b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302004002832fefba825208845788dce980a0c39d82b340083da577ef2f0299521ecdf7062575dad75cb15566b77869493a4e88a0344ef0a4622d51f84df84b0101827530800a801ca0bb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1fa04bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x01",
+ "r" : "0xbb6e3cf3f281af13ef1393d7052b03cab367079a9eb71aa829ec72b231a60e1f",
+ "s" : "0x4bcfe1da53f26bb95806d38e9f42fef262aaaf5191e16ec473a695c8978a0b05",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020080",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "a067ecb45dd483817f54e229556952f8eb6ffa57a88b29e989c0e3ea9f21d3fb",
+ "mixHash" : "2bbcca39f731d951481da431940b17549721062c1d213c6b6f49099030ad5767",
+ "nonce" : "94eaf9f574478fe4",
+ "number" : "0x03",
+ "parentHash" : "d79fd92f80a0745c29abc6e28578aeb8f063f2dec88c246e241b5dd5bdb8ba7d",
+ "receiptTrie" : "b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097",
+ "stateRoot" : "9cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8",
+ "timestamp" : "0x5788dcec",
+ "transactionsTrie" : "3798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "3",
+ "rlp" : "0xf9024cf901f9a0d79fd92f80a0745c29abc6e28578aeb8f063f2dec88c246e241b5dd5bdb8ba7da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a09cb74b15edd72a2075b114d9154f4bbdf784054658912024747ea9423e0d2af8a03798aa164b61e27b93484c76a5f319bd93c808dc78ef31cf8b93f4e1b248ca2ca0b9ca869c5641896a8e22fe74b4225c6a43cbc3303b24d13e0af94517180c8097b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba825208845788dcec80a02bbcca39f731d951481da431940b17549721062c1d213c6b6f49099030ad57678894eaf9f574478fe4f84df84b0201827530800a801ca0f6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055a075b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5ededc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x02",
+ "r" : "0xf6d884cae1f86bdff1281e95e416089c544a4a5578a75d5e8ad76118e341b055",
+ "s" : "0x75b7d88985ed5acd61f30c9f9570c6c33bb92f3ad1a32b86a0747817fbc5eded",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0200c0",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "f0b1b300b01ca901967fd47745e84afaf28c2d15f863da355e5791b94a911107",
+ "mixHash" : "28e1a30ba4c89a6b1a5ff007226250b3091b4bb930ce6b83a07c8e835c83f52d",
+ "nonce" : "54210a32ae9561fd",
+ "number" : "0x04",
+ "parentHash" : "a067ecb45dd483817f54e229556952f8eb6ffa57a88b29e989c0e3ea9f21d3fb",
+ "receiptTrie" : "d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fd",
+ "stateRoot" : "aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877",
+ "timestamp" : "0x5788dcf0",
+ "transactionsTrie" : "4cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "4",
+ "rlp" : "0xf9024cf901f9a0a067ecb45dd483817f54e229556952f8eb6ffa57a88b29e989c0e3ea9f21d3fba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0aeaa38b30cbc02db5cd17a91e9212346cd839fafcb1fc06126cf64b5b782b877a04cc1b34b3a9d29bf69842a54e1c48bc97afc433883f66d2c59287f118c9c3c2ca0d69ea0fac668bb7ece043f8e6ac833c5d10a7d5bf08ebfe40a8dc1721a3aa4fdb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200c004832fefba825208845788dcf080a028e1a30ba4c89a6b1a5ff007226250b3091b4bb930ce6b83a07c8e835c83f52d8854210a32ae9561fdf84df84b0301827530800a801ca0753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dca066deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0x7530",
+ "gasPrice" : "0x01",
+ "nonce" : "0x03",
+ "r" : "0x753ee5d896db8d87fe850e7935418587277cd9c010dfaaf7dd09b0a2e73785dc",
+ "s" : "0x66deb3c241d532c7b880ae7a9a311ee7a92ef1c5e4e2bf3307990a2881bc13b0",
+ "to" : "",
+ "v" : "0x1c",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020100",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "48c11a9d9affbcd36782770bc512f0fdc5b31dbef334fc6dea2ce6f6a6d1741a",
+ "mixHash" : "b3c1ccf41831ee494eab1190c9f69a9d671031114342821bc327a30cf3d74bf2",
+ "nonce" : "395f46219e639a8a",
+ "number" : "0x05",
+ "parentHash" : "f0b1b300b01ca901967fd47745e84afaf28c2d15f863da355e5791b94a911107",
+ "receiptTrie" : "d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17fee",
+ "stateRoot" : "f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5",
+ "timestamp" : "0x5788dcf4",
+ "transactionsTrie" : "165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cd",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "5",
+ "rlp" : "0xf9024cf901f9a0f0b1b300b01ca901967fd47745e84afaf28c2d15f863da355e5791b94a911107a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0f54737efdead0a75d49cc6ceaedf75fd4aacf933e8f361a9a9c0a1647bcf6ab5a0165af780d27795ebc80c27759d3d949a9c4b05d35fcc7e9d3da8be357f5340cda0d7f28f5ba69ca1893569465903e8d942153c57912f7d1f6b3e33088e8ad17feeb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302010005832fefba82cf08845788dcf480a0b3c1ccf41831ee494eab1190c9f69a9d671031114342821bc327a30cf3d74bf288395f46219e639a8af84df84b040182ea60800a801ba0cb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169a07445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62c0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x04",
+ "r" : "0xcb1400f01459519ac3dc0426c6d7f95641dc6a7b8008069c9dfbe4f94b167169",
+ "s" : "0x7445362aadae8c25e4f0b494ad553bfc652bf34fb2ed0ccbf9a6b089c2b09f62",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020140",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xcf08",
+ "hash" : "5fc71cd93151a07d5c8e223178a472dfadf85c7c0d601c461bb2412ad90008cf",
+ "mixHash" : "8cf9efd45d62f0c5e539295f5c88f2d41a449fa31413a4ac2fa0b679f41cdd46",
+ "nonce" : "76c3a1561e24c932",
+ "number" : "0x06",
+ "parentHash" : "48c11a9d9affbcd36782770bc512f0fdc5b31dbef334fc6dea2ce6f6a6d1741a",
+ "receiptTrie" : "975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405",
+ "stateRoot" : "05ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174",
+ "timestamp" : "0x5788dcf7",
+ "transactionsTrie" : "ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51be",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "6",
+ "rlp" : "0xf9024cf901f9a048c11a9d9affbcd36782770bc512f0fdc5b31dbef334fc6dea2ce6f6a6d1741aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a005ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174a0ef009c3c274a522a6e2ca98232fffff747bdfab79189be3e2b5e5dc54e2a51bea0975eeeb6e46fc2d858080444f0536a1f3a688638fdf0bcbc1958dedc5eda4405b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014006832fefba82cf08845788dcf780a08cf9efd45d62f0c5e539295f5c88f2d41a449fa31413a4ac2fa0b679f41cdd468876c3a1561e24c932f84df84b050182ea60800a801ba04d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435a023640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237eec0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x05",
+ "r" : "0x4d147b172eb81fdb11a21826eabad091084f6e9613d340b5897872843efa6435",
+ "s" : "0x23640d906f65fd156b92d518068263d99d94dc88c3e0950fd7633fb0d4d237ee",
+ "to" : "",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0xa042",
+ "hash" : "faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265",
+ "mixHash" : "f117fd70e501a76776c5dd7c227a2ae6d28aa5a4422b9ce31fdd3d57d411c6b3",
+ "nonce" : "33b7682fbfa5a723",
+ "number" : "0x07",
+ "parentHash" : "5fc71cd93151a07d5c8e223178a472dfadf85c7c0d601c461bb2412ad90008cf",
+ "receiptTrie" : "aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848f",
+ "stateRoot" : "40d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029",
+ "timestamp" : "0x5788dcfc",
+ "transactionsTrie" : "b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341c",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "7",
+ "rlp" : "0xf90260f901f9a05fc71cd93151a07d5c8e223178a472dfadf85c7c0d601c461bb2412ad90008cfa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a0b2d17fa171d19df4e817ffb15f38526d125a42b7879cd712584b130dc8ad341ca0aec104fc55d9aa0c1767af2dcf73c512f650f24bf89b9b78eb236d70a2de848fb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018007832fefba82a042845788dcfc80a0f117fd70e501a76776c5dd7c227a2ae6d28aa5a4422b9ce31fdd3d57d411c6b38833b7682fbfa5a723f861f85f060182ea609410000000000000000000000000000000000000070a801ba0bb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9a010ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81bc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x06",
+ "r" : "0xbb8523d4c53ed16b355d0a2dba02154d23a5480449dc3894be40ef95511d2fe9",
+ "s" : "0x10ad725c2df4979b7a071b3fa9b6b719223f0167d68b98f213e8611f84d4d81b",
+ "to" : "1000000000000000000000000000000000000007",
+ "v" : "0x1b",
+ "value" : "0x0a"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blocknumber" : "8",
+ "rlp" : "0xf901e8f901e3a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080a0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80c0c0"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0201c0",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "0101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322",
+ "mixHash" : "90da7c2e5e892d3ca197843e4d70c4c1b4db9b437f6911c7dc0cb2e9b5ce5be0",
+ "nonce" : "51dac304188a318e",
+ "number" : "0x08",
+ "parentHash" : "faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "2c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78",
+ "timestamp" : "0x5788dd05",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "bea28d341a7519c623e60a8f6eb59c216e918b839e87eb3004af1896aea29397"
+ },
+ "blocknumber" : "8",
+ "rlp" : "0xf90405f90204a0faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265a0bea28d341a7519c623e60a8f6eb59c216e918b839e87eb3004af1896aea29397948888f1f195afa192cfee860698584c030f4c9db1a02c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201c008832fefba80845788dd058d64616f2d686172642d666f726ba090da7c2e5e892d3ca197843e4d70c4c1b4db9b437f6911c7dc0cb2e9b5ce5be08851dac304188a318ec0f901faf901f7a05fc71cd93151a07d5c8e223178a472dfadf85c7c0d601c461bb2412ad90008cfa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a005ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014007832fefba80845788dd0480a0afe4af48fc8d02068f2f45db556679093e0bff8e468f09bb9cc85565eb4917db88b0ae44f2f84decfb",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "0000000000000000000000000000000000000000",
+ "difficulty" : "0x020140",
+ "extraData" : "0x",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "e4dd13214af7bbb7505256ae793b3ab744b9c055a296e31460ff7e8bc5854730",
+ "mixHash" : "afe4af48fc8d02068f2f45db556679093e0bff8e468f09bb9cc85565eb4917db",
+ "nonce" : "b0ae44f2f84decfb",
+ "number" : "0x07",
+ "parentHash" : "5fc71cd93151a07d5c8e223178a472dfadf85c7c0d601c461bb2412ad90008cf",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "05ecd1a706137ddc9359328005f80a4ca233a4dc443748b04275e3ef6faed174",
+ "timestamp" : "0x5788dd04",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ }
+ ]
+ },
+ {
+ "blocknumber" : "9",
+ "rlp" : "0xf90670f90206a00101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322a0e51c2b710360bb753022b0c98232a56129062b29e1c0821d3370f09f9fd41a45948888f1f195afa192cfee860698584c030f4c9db1a0f57f69858375f69a698ad907ede7a2475a95cce18e5f17b612a3e3083c5106ada0964e2a482dc1856fff3b00f545aaf8720aeef70a3ffe86cebf05bbc2c34bf539a05691b60b35567c06fd15723f333ee23a85b059e2a63e05b1bf0dd6a61d10b7d4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201c009832fefba8265aa845788dd188d64616f2d686172642d666f726ba0da8d1ebb0584e85f5eedc7d7468eb7884f13698a02ddc85e880dfc193ca7b3d3887bb80ac0706f11e9f861f85f070182ea6094100000000000000000000000000000000000000801801ba09e18981c45e9f6bb54e3f52cae58f2c3c00f2220a9f1c788d0ee3fc2394d4956a038207c17c10faae1fa83bff79770fa38134a19b6ca6f04059d7a307c05f67e6af90401f90204a0faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018008832fefba80845788dd0c8d64616f2d686172642d666f726ba0ded20d0e31e931d74374026b4b931f0510b1c0b02fb3f76312195b8b74ad83938806b256afd30a542ff901f7a0faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014008832fefba80845788dd1180a05c67667031b65a3d1520ab7fd79fd1dcc53b608155235f19ce92b2104bf7d51a887a3058ce3363d576"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x65aa",
+ "hash" : "47fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467",
+ "mixHash" : "fcb6b3c42755d3c943c7b97da78fe729cc791d53631f140f3c2466ad06098282",
+ "nonce" : "f4e5de74b2c0afd3",
+ "number" : "0x09",
+ "parentHash" : "0101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322",
+ "receiptTrie" : "5691b60b35567c06fd15723f333ee23a85b059e2a63e05b1bf0dd6a61d10b7d4",
+ "stateRoot" : "f57f69858375f69a698ad907ede7a2475a95cce18e5f17b612a3e3083c5106ad",
+ "timestamp" : "0x5788dd1f",
+ "transactionsTrie" : "964e2a482dc1856fff3b00f545aaf8720aeef70a3ffe86cebf05bbc2c34bf539",
+ "uncleHash" : "c2c05564ceaf59f1a73e832e24ac60cf96e3cc220e0479ebaf09f12977707461"
+ },
+ "blocknumber" : "9",
+ "rlp" : "0xf90476f90206a00101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322a0c2c05564ceaf59f1a73e832e24ac60cf96e3cc220e0479ebaf09f12977707461948888f1f195afa192cfee860698584c030f4c9db1a0f57f69858375f69a698ad907ede7a2475a95cce18e5f17b612a3e3083c5106ada0964e2a482dc1856fff3b00f545aaf8720aeef70a3ffe86cebf05bbc2c34bf539a05691b60b35567c06fd15723f333ee23a85b059e2a63e05b1bf0dd6a61d10b7d4b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302018009832fefba8265aa845788dd1f8d64616f2d686172642d666f726ba0fcb6b3c42755d3c943c7b97da78fe729cc791d53631f140f3c2466ad0609828288f4e5de74b2c0afd3f861f85f070182ea6094100000000000000000000000000000000000000801801ba09e18981c45e9f6bb54e3f52cae58f2c3c00f2220a9f1c788d0ee3fc2394d4956a038207c17c10faae1fa83bff79770fa38134a19b6ca6f04059d7a307c05f67e6af90207f90204a0faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302010008832fefba80845788dd1d8d64616f2d686172642d666f726ba03ced26fe3256e9f8287b52861a5582a4b551fd0b7f3a65411cb86f141ece54598895fa805c6deebdfd",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x07",
+ "r" : "0x9e18981c45e9f6bb54e3f52cae58f2c3c00f2220a9f1c788d0ee3fc2394d4956",
+ "s" : "0x38207c17c10faae1fa83bff79770fa38134a19b6ca6f04059d7a307c05f67e6a",
+ "to" : "1000000000000000000000000000000000000008",
+ "v" : "0x1b",
+ "value" : "0x01"
+ }
+ ],
+ "uncleHeaders" : [
+ {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "0000000000000000000000000000000000000000",
+ "difficulty" : "0x020100",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "7c8dd6f59379615cff1a7edbb0a9060d824d86d19ec8447c1b580ca6859e6c05",
+ "mixHash" : "3ced26fe3256e9f8287b52861a5582a4b551fd0b7f3a65411cb86f141ece5459",
+ "nonce" : "95fa805c6deebdfd",
+ "number" : "0x08",
+ "parentHash" : "faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "40d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029",
+ "timestamp" : "0x5788dd1d",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ }
+ ]
+ },
+ {
+ "blocknumber" : "10",
+ "rlp" : "0xf90455f90206a047fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467a09669b09c1fca3cae0e8a34eca70a63fbc62c36715074e8b75cc649da0a149396948888f1f195afa192cfee860698584c030f4c9db1a0a536759560008986d9adbb774618686a1a7cf849a2c08c5f6a047e9a3de66945a0f49ed12e4a98811e40b2cd24a470e3ff48ab6c1887d36fa68f79440321685d00a0f07f905c4fcfce60993e277c6ccd5bf0eacae30e71b10fa765fd98b046ada645b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201c00a832fefba82cf08845788dd258d64616f2d686172642d666f726ba0340f8760a46bbb41fc96589bc68ff07cf828b32e8a32fbc3fe6f373973472dd288fb347ffe902d0bb1f84df84b080182ea608001801ba066a8a933ff9208ecb2334a7edcf0592751d68e5e9cf155814238cd3072a7d38ba02cd8720983a8172b1304aad194d3f2ea3daeaf5c51bc3dc983d8218448f063bdf901faf901f7a00101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a02c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014009832fefba80845788dd2380a0eeea53c657dbbb61a2e239cef19464574829fd2284728bf311e1c94230a118b9886f043bd4378b18cd"
+ },
+ {
+ "blocknumber" : "11",
+ "rlp" : "0xf905fff90204a047fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467a02332e0883af77a9c57cd2f1dbd55f7c2b6a7b3a0946ebb94e9d29a7d6559428d948888f1f195afa192cfee860698584c030f4c9db1a09e8229dc7d51defa7f3d18c110cb776f2807f6a244dfe9775a5ecbbaa2d97527a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201800a832fefba80845788dd2d8d64616f2d686172642d666f726ba0413905ed55d67309eb11a9d2a12b786f94b7c0e70d79ffa08d9cdce8efaa34cb8852cdc9bfdccf22cac0f903f4f901f7a00101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a02c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302014009832fefba80845788dd2980a0ec71a16d14838a637784d4f25a4641b290ef1ad4f726d59b659709e38a690f7a88dc1dbd1bb6d69415f901f7a047fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0f57f69858375f69a698ad907ede7a2475a95cce18e5f17b612a3e3083c5106ada056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201800a832fefba80845788dd2a80a0d611411c515295dfe7b7b60021f8542f99e82959d67d00d8ea830a10fdb700d28863bbcc6e20f60707"
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020140",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x5208",
+ "hash" : "ca32dc51f04be8d5858f1565794edafc5b558c66aabbd5b468fdd9e5f2b0dde2",
+ "mixHash" : "4c8184afdf266ded8ba03efefb9b383f124af8a420d4b0623724e76c16362309",
+ "nonce" : "df8d645fe80a1c5f",
+ "number" : "0x0a",
+ "parentHash" : "47fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467",
+ "receiptTrie" : "e3e8a54108fb9689ac6f724e4f0189db4bb7df7ca6f343f939195449e94c54a8",
+ "stateRoot" : "c1673db25cd7b78891984f84cb2d44a435b87c0408f9faac1b0771f3221034c9",
+ "timestamp" : "0x5788dd37",
+ "transactionsTrie" : "916147a0805a950d8cc91ea336b3b7237474ac724029dc99f96b07eef085e4d7",
+ "uncleHash" : "5c1818947711e59c2039312ff6f53c67abf9c4bdc9aa558ade6acd0fb82d4c68"
+ },
+ "blocknumber" : "10",
+ "rlp" : "0xf9067df90206a047fbd76ebee44e255941f76197c8ea50697e4b5d2f07477575ad1b1b2d4f0467a05c1818947711e59c2039312ff6f53c67abf9c4bdc9aa558ade6acd0fb82d4c68948888f1f195afa192cfee860698584c030f4c9db1a0c1673db25cd7b78891984f84cb2d44a435b87c0408f9faac1b0771f3221034c9a0916147a0805a950d8cc91ea336b3b7237474ac724029dc99f96b07eef085e4d7a0e3e8a54108fb9689ac6f724e4f0189db4bb7df7ca6f343f939195449e94c54a8b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201400a832fefba825208845788dd378d64616f2d686172642d666f726ba04c8184afdf266ded8ba03efefb9b383f124af8a420d4b0623724e76c1636230988df8d645fe80a1c5ff861f85f080182ea609410000000000000000000000000000000000000106f801ba047acd0e2edbc13fbfed74b1b5e6f5afaae464ff6662fc15fc76cf16f6821a72da02e989a61feb7751d802ec9ec12d30a6c419a65c8ba6acd96857a73c18b6a5564f9040ef90204a0faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a040d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008008832fefba80845788dd338d64616f2d686172642d666f726ba0b4857ee254e0403f258dc214738b57bf08690794e4c438012eb18c507fa2ae9588e806cb4705dd9c46f90204a00101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a02c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302010009832fefba80845788dd338d64616f2d686172642d666f726ba006254cab91d3348cf91a9db6ea7f1f94943b6647a3b1ac2be6f1d0f2773bf0e088edc8d858b2798c52",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x08",
+ "r" : "0x47acd0e2edbc13fbfed74b1b5e6f5afaae464ff6662fc15fc76cf16f6821a72d",
+ "s" : "0x2e989a61feb7751d802ec9ec12d30a6c419a65c8ba6acd96857a73c18b6a5564",
+ "to" : "1000000000000000000000000000000000000010",
+ "v" : "0x1b",
+ "value" : "0x6f"
+ }
+ ],
+ "uncleHeaders" : [
+ {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "0000000000000000000000000000000000000000",
+ "difficulty" : "0x020080",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "12fc96f2e58a510584d8e01a02b2834c293945bba1e1f2fc48b539d345febe90",
+ "mixHash" : "b4857ee254e0403f258dc214738b57bf08690794e4c438012eb18c507fa2ae95",
+ "nonce" : "e806cb4705dd9c46",
+ "number" : "0x08",
+ "parentHash" : "faf53d9cbf0bb0503e4313936019eb34a342b75770f6c2d92412d1fe38a99265",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "40d119003a07ed2dece2e87393e1affed584f81ee4c8c262e27984b10356a029",
+ "timestamp" : "0x5788dd33",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "0000000000000000000000000000000000000000",
+ "difficulty" : "0x020100",
+ "extraData" : "0x64616f2d686172642d666f726b",
+ "gasLimit" : "0x2fefba",
+ "gasUsed" : "0x00",
+ "hash" : "f1ae04879bd8627a69a274c283ed05a38a985bae61d9cf553f4b9453c1d5a601",
+ "mixHash" : "06254cab91d3348cf91a9db6ea7f1f94943b6647a3b1ac2be6f1d0f2773bf0e0",
+ "nonce" : "edc8d858b2798c52",
+ "number" : "0x09",
+ "parentHash" : "0101dba7ec26e5cbe190ca00a34ce4b6f7ead20b0e77ebc8db7ea02eb4d56322",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "2c4f51b520aa26de8db4dc7d8d70eb0bbf8ce35afc6d61ed09881869d2feaa78",
+ "timestamp" : "0x5788dd33",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ }
+ ]
+ }
+ ],
+ "genesisBlockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x42",
+ "gasLimit" : "0x2fefd8",
+ "gasUsed" : "0x00",
+ "hash" : "cad74b3b4723472b370737ffaf503f6f746bcae45bd5a39d767c5647afa5bb09",
+ "mixHash" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "nonce" : "0102030405060708",
+ "number" : "0x00",
+ "parentHash" : "0000000000000000000000000000000000000000000000000000000000000000",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "6bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66d",
+ "timestamp" : "0x54c98c81",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "genesisRLP" : "0xf901fcf901f7a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a06bff69e94b94f30e1b69f86d3e09712edfb583ac73a46a522345e1965ca9c66da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080832fefd8808454c98c8142a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0",
+ "lastblockhash" : "ca32dc51f04be8d5858f1565794edafc5b558c66aabbd5b468fdd9e5f2b0dde2",
+ "postState" : {
+ "0000000000000000000000000000000000000000" : {
+ "balance" : "0xea300b17a8b78000",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0c243ebe6a031753dc0dd850acf422844a3efb76" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x0a",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ "0x00" : "0x02540be400"
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x01",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000010" : {
+ "balance" : "0x6f",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "248f0f0f33eadb89e9d87fd5c127f58567f3ffde" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6295ee1b4f6dd65047762f924ecd367c17eabf8f" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "85c2f277588ea1e6901ed59e587bea222c575f87" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8888f1f195afa192cfee860698584c030f4c9db1" : {
+ "balance" : "0x02be902146fa2abe24",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b968b26",
+ "code" : "0x",
+ "nonce" : "0x09",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b1d37cf6180ceb738ca45b5005a2f418c02e204b" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bf4ed7b27f1d666546e30d74d50d173d20bca754" : {
+ "balance" : "0x010bc166ae40",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec0e71ad0a90ffe1909d27dac207f7680abba42d" : {
+ "balance" : "0x0a",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000008" : {
+ "balance" : "0x00",
+ "code" : "0x73807640a13483f8ac783c557fcdf27be11ea4ac7a31600055",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0x3b9aca00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x0f4240",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ }
+ },
+ "DaoTransactions_XBlockm1" : {
+ "blocks" : [
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x",
+ "gasLimit" : "0x12b501f5",
+ "gasUsed" : "0x00",
+ "hash" : "7f8d325fa7077dffa1aef268597e0fa735306bb937866e3eb73bfcb11eaeb65b",
+ "mixHash" : "a41acffbfc68c63efb5df04aaa733d9d6a28826dc367a8a2770bc02486219532",
+ "nonce" : "14742b9b68fab457",
+ "number" : "0x01",
+ "parentHash" : "76de3875ca93859a55779bf4c963c58dda6eed39cb34c9f8d1360580f299b16a",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "17d99e7cdc3d010789109a0d1733004627c114253436be8b343b74dc8bc77dc4",
+ "timestamp" : "0x5788dd3f",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "1",
+ "rlp" : "0xf901fdf901f8a076de3875ca93859a55779bf4c963c58dda6eed39cb34c9f8d1360580f299b16aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a017d99e7cdc3d010789109a0d1733004627c114253436be8b343b74dc8bc77dc4a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018412b501f580845788dd3f80a0a41acffbfc68c63efb5df04aaa733d9d6a28826dc367a8a2770bc024862195328814742b9b68fab457c0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020040",
+ "extraData" : "0x",
+ "gasLimit" : "0x12b054b6",
+ "gasUsed" : "0x00",
+ "hash" : "b41308b0a12c1b1a06208b827d9dd659619d47b163b9b8c1b1feedbaad7a64af",
+ "mixHash" : "e56494277ca75cf1ec6060f31d34b45d76e7a133363acdffc1f512a0528a710b",
+ "nonce" : "ee6d9193ba857f47",
+ "number" : "0x02",
+ "parentHash" : "7f8d325fa7077dffa1aef268597e0fa735306bb937866e3eb73bfcb11eaeb65b",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "a639bc369df2e6dcdb261e53927d3129e7e727054063bdb15fd31b8dfad3e67d",
+ "timestamp" : "0x5788dd46",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "2",
+ "rlp" : "0xf901fdf901f8a07f8d325fa7077dffa1aef268597e0fa735306bb937866e3eb73bfcb11eaeb65ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0a639bc369df2e6dcdb261e53927d3129e7e727054063bdb15fd31b8dfad3e67da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020040028412b054b680845788dd4680a0e56494277ca75cf1ec6060f31d34b45d76e7a133363acdffc1f512a0528a710b88ee6d9193ba857f47c0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020080",
+ "extraData" : "0x",
+ "gasLimit" : "0x12aba8a2",
+ "gasUsed" : "0x00",
+ "hash" : "21b654accfe3e0120ee79787bfc95a6f454f66ea5002ba0f0c84f7c2a6aa28ee",
+ "mixHash" : "b27d43fead80c5cc7c05c6345638d52e8a88e6da13b675a279afffa9aaa90ecb",
+ "nonce" : "08f46890e77a57a1",
+ "number" : "0x03",
+ "parentHash" : "b41308b0a12c1b1a06208b827d9dd659619d47b163b9b8c1b1feedbaad7a64af",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "8cf3da7258f9aa5c4deb300f6fce33a5fb374b363b64ebbd6a05a71ceaf62268",
+ "timestamp" : "0x5788dd4a",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "3",
+ "rlp" : "0xf901fdf901f8a0b41308b0a12c1b1a06208b827d9dd659619d47b163b9b8c1b1feedbaad7a64afa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a08cf3da7258f9aa5c4deb300f6fce33a5fb374b363b64ebbd6a05a71ceaf62268a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020080038412aba8a280845788dd4a80a0b27d43fead80c5cc7c05c6345638d52e8a88e6da13b675a279afffa9aaa90ecb8808f46890e77a57a1c0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x0200c0",
+ "extraData" : "0x",
+ "gasLimit" : "0x12a6fdb9",
+ "gasUsed" : "0x00",
+ "hash" : "5473f8af2b586839c3298a36272c7753f57618fc65093a8af7ac4b6f6ea6e8ce",
+ "mixHash" : "81a197fb4cbcc54d7924aaa10c039113a4fe9b39aa6caebd4cb678c2c323630d",
+ "nonce" : "274ccd17ac4b439a",
+ "number" : "0x04",
+ "parentHash" : "21b654accfe3e0120ee79787bfc95a6f454f66ea5002ba0f0c84f7c2a6aa28ee",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "f9b0c98fed434c398e22415e46d50b0e928c2dc247c328cb0528ea94728eee3f",
+ "timestamp" : "0x5788dd50",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "4",
+ "rlp" : "0xf901fdf901f8a021b654accfe3e0120ee79787bfc95a6f454f66ea5002ba0f0c84f7c2a6aa28eea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0f9b0c98fed434c398e22415e46d50b0e928c2dc247c328cb0528ea94728eee3fa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200c0048412a6fdb980845788dd5080a081a197fb4cbcc54d7924aaa10c039113a4fe9b39aa6caebd4cb678c2c323630d88274ccd17ac4b439ac0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020100",
+ "extraData" : "0x",
+ "gasLimit" : "0x12a253fb",
+ "gasUsed" : "0x00",
+ "hash" : "31865cc304691e510efdb76576c2b2294545bfcb406aae97337b762ca8ceb91a",
+ "mixHash" : "01dc5f253639977a6f67487657287d5997ff5bd061e0aa12409a3db38c6c5e4b",
+ "nonce" : "c645fb05954a417d",
+ "number" : "0x05",
+ "parentHash" : "5473f8af2b586839c3298a36272c7753f57618fc65093a8af7ac4b6f6ea6e8ce",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "27d25b8ec2fe581a790cf37c4c2be363799f12c8ebd70d6b703f30f676de6cd2",
+ "timestamp" : "0x5788dd54",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "5",
+ "rlp" : "0xf901fdf901f8a05473f8af2b586839c3298a36272c7753f57618fc65093a8af7ac4b6f6ea6e8cea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a027d25b8ec2fe581a790cf37c4c2be363799f12c8ebd70d6b703f30f676de6cd2a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020100058412a253fb80845788dd5480a001dc5f253639977a6f67487657287d5997ff5bd061e0aa12409a3db38c6c5e4b88c645fb05954a417dc0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020140",
+ "extraData" : "0x",
+ "gasLimit" : "0x129dab68",
+ "gasUsed" : "0x00",
+ "hash" : "f4dfacab1c75d769193ff4b46190ab4e758528bcad44e0723347f705de171142",
+ "mixHash" : "bdd40a39ba235400737c0587dc140a1dc02f51f1f7a716e4ba52a7723b614657",
+ "nonce" : "dc09580bc9ac6c81",
+ "number" : "0x06",
+ "parentHash" : "31865cc304691e510efdb76576c2b2294545bfcb406aae97337b762ca8ceb91a",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "186b7bee2b8ab05978991904147c7b4b58bd498e3c8a9932210f057ea7e38c62",
+ "timestamp" : "0x5788dd5a",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "6",
+ "rlp" : "0xf901fdf901f8a031865cc304691e510efdb76576c2b2294545bfcb406aae97337b762ca8ceb91aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0186b7bee2b8ab05978991904147c7b4b58bd498e3c8a9932210f057ea7e38c62a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201400684129dab6880845788dd5a80a0bdd40a39ba235400737c0587dc140a1dc02f51f1f7a716e4ba52a7723b61465788dc09580bc9ac6c81c0c0",
+ "transactions" : [
+ ],
+ "uncleHeaders" : [
+ ]
+ },
+ {
+ "blockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020180",
+ "extraData" : "0x",
+ "gasLimit" : "0x129903ff",
+ "gasUsed" : "0x5208",
+ "hash" : "b4fd754ea31355af44d104be9c93c4ff5c69e3de6692b84234bbffa2a8935762",
+ "mixHash" : "8b3b3daa6fef89706df93df25cd7160359b3029eb183dc0d03279db3e1d668fe",
+ "nonce" : "b8bc0f59998aca79",
+ "number" : "0x07",
+ "parentHash" : "f4dfacab1c75d769193ff4b46190ab4e758528bcad44e0723347f705de171142",
+ "receiptTrie" : "8494555e17e5455b9b7c734c4e6dd720a575f04e741302abecbb610896e1bdb4",
+ "stateRoot" : "6d5aa4970c1810949e15062da2fd638123b2b1cab467a18381676cc7dfbcb331",
+ "timestamp" : "0x5788dd60",
+ "transactionsTrie" : "2067f9535b492e7070dd88a15bd979eff4f2d03814c8514cdd8cb1b7715c6d6b",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "blocknumber" : "7",
+ "rlp" : "0xf90261f901faa0f4dfacab1c75d769193ff4b46190ab4e758528bcad44e0723347f705de171142a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a06d5aa4970c1810949e15062da2fd638123b2b1cab467a18381676cc7dfbcb331a02067f9535b492e7070dd88a15bd979eff4f2d03814c8514cdd8cb1b7715c6d6ba08494555e17e5455b9b7c734c4e6dd720a575f04e741302abecbb610896e1bdb4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830201800784129903ff825208845788dd6080a08b3b3daa6fef89706df93df25cd7160359b3029eb183dc0d03279db3e1d668fe88b8bc0f59998aca79f861f85f800182ea6094100000000000000000000000000000000000000780801ba065741e61c886da761be2693206b25ef48db266aeb92b120137496d3c3b4a7429a05c16257cbbcd7f1076ca12277fe0f029835c2e5fe36796f1bf2d7b0edeca79afc0",
+ "transactions" : [
+ {
+ "data" : "0x",
+ "gasLimit" : "0xea60",
+ "gasPrice" : "0x01",
+ "nonce" : "0x00",
+ "r" : "0x65741e61c886da761be2693206b25ef48db266aeb92b120137496d3c3b4a7429",
+ "s" : "0x5c16257cbbcd7f1076ca12277fe0f029835c2e5fe36796f1bf2d7b0edeca79af",
+ "to" : "1000000000000000000000000000000000000007",
+ "v" : "0x1b",
+ "value" : "0x00"
+ }
+ ],
+ "uncleHeaders" : [
+ ]
+ }
+ ],
+ "genesisBlockHeader" : {
+ "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase" : "8888f1f195afa192cfee860698584c030f4c9db1",
+ "difficulty" : "0x020000",
+ "extraData" : "0x42",
+ "gasLimit" : "0x12b9b060",
+ "gasUsed" : "0x00",
+ "hash" : "76de3875ca93859a55779bf4c963c58dda6eed39cb34c9f8d1360580f299b16a",
+ "mixHash" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "nonce" : "0102030405060708",
+ "number" : "0x00",
+ "parentHash" : "0000000000000000000000000000000000000000000000000000000000000000",
+ "receiptTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "stateRoot" : "42b6c06dc02697e651f409032cfda2b524b81e1d12443b75648b2bedcbca4865",
+ "timestamp" : "0x54c98c81",
+ "transactionsTrie" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncleHash" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"
+ },
+ "genesisRLP" : "0xf901fdf901f8a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a042b6c06dc02697e651f409032cfda2b524b81e1d12443b75648b2bedcbca4865a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808412b9b060808454c98c8142a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0",
+ "lastblockhash" : "b4fd754ea31355af44d104be9c93c4ff5c69e3de6692b84234bbffa2a8935762",
+ "postState" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1000000000000000000000000000000000000007" : {
+ "balance" : "0x00",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8888f1f195afa192cfee860698584c030f4c9db1" : {
+ "balance" : "0x01e5b8fa8fe2ac5208",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0xe8d4a4bdf8",
+ "code" : "0x",
+ "nonce" : "0x01",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x0f4240",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "005f5cee7a43331d5a3d3eec71305925a62f34b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "057b56736d32b86616a10f619859c6cd6f59092a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "06706dd3f2c9abf0a21ddcc6941d9b86f0596936" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0737a6b837f97f46ebade41b9bc3e1c509c85c53" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "07f5c1e1bc2c93e0402f23341973a0e043f7bf8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0e0da70933f4c7849fc0d203f5d1d43b9ae4532d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "0ff30d6de14a8224aa97b78aea5388d1c51c1f00" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "12e626b0eebfe86a56d633b9864e389b45dcb260" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1591fc0f688c81fbeb17f5426a162a7024d430c2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "17802f43a0137c506ba92291391a8a8f207f487d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1975bd06d486162d5dc297798dfc41edd5d160a7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "1cba23d343a983e9b5cfd19496b9a9701ada385f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "200450f06520bdd6c527622a273333384d870efb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "23b75c2f6791eef49c69684db4c6c1f93bf49a50" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "24c4d950dfd4dd1902bbed3508144a54542bba94" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "253488078a4edf4d6f42f113d1e62836a942cf1a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "27b137a85656544b1ccb5a0f2e561a5703c6a68f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2a5ed960395e2a49b1c758cef4aa15213cfd874c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2b3455ec7fedf16e646268bf88846bd7a2319bb2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "2c19c7f9ae8b751e37aeb2d93a699722395ae18f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "304a554a310c7e546dfe434669c62820b7d83490" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "319f70bab6845585f412ec7724b744fec6095c85" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "35a051a0010aba705c9008d7a7eff6fb88f6ea7b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3ba4d81db016dc2890c81f3acec2454bff5aada5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "3c02a7bc0391e86d91b7d144e61c2c01a25a79c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "40b803a9abce16f50f36a77ba41180eb90023925" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "440c59b325d2997a134c2c7c60a8c61611212bad" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4486a3d68fac6967006d7a517b889fd3f98c102b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4613f3bca5c44ea06337a9e439fbc6d42e501d0a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "47e7aa56d6bdf3f36be34619660de61275420af8" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4863226780fe7c0356454236d3b1c8792785748d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "492ea3bb0f3315521c31f273e565b868fc090f17" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4cb31628079fb14e4bc3cd5e30c2f7489b00960c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4deb0033bb26bc534b197e61d19e0733e5679784" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fa802324e929786dbda3b8820dc7834e9134a2a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "4fd6ace747f06ece9c49699c7cabc62d02211f75" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "51e0ddd9998364a2eb38588679f0d2c42653e4a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "52c5317c848ba20c7504cb2c8052abd1fde29d03" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "542a9515200d14b68e934e9830d91645a980dd7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5524c55fb03cf21f549444ccbecb664d0acad706" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "579a80d909f346fbfb1189493f521d7f48d52238" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "58b95c9a9d5d26825e70a82b6adb139d3fd829eb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5c8536898fbb74fc7445814902fd08422eac56d0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5d2b2e6fcbe3b11d26b525e085ff818dae332479" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5dc28b15dffed94048d73806ce4b7a4612a1d48f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "5f9f3392e9f62f63b8eac0beb55541fc8627f42c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6131c42fa982e56929107413a9d526fd99405560" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6231b6d0d5e77fe001c2a460bd9584fee60d409b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "627a0a960c079c21c34f7612d5d230e01b4ad4c7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "63ed5a272de2f6d968408b4acb9024f4cc208ebf" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6966ab0d485353095148a2155858910e0965b6f9" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6d87578288b6cb5549d5076a207456a1f6a63dc0" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "6f6704e5a10332af6672e50b3d9754dc460dfa4d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "7602b46df5390e432ef1c307d4f2c9ff6d65cc97" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "779543a0491a837ca36ce8c635d6154e3c4911a6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "782495b7b3355efb2833d56ecb34dc22ad7dfcc4" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "807640a13483f8ac783c557fcdf27be11ea4ac7a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8163e7fb499e90f8544ea62bbf80d21cd26d9efd" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "84ef4b2357079cd7a7c69fd7a37cd0609a679106" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "86af3e9626fce1957c82e88cbf04ddf3a2ed7915" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "8d9edb3054ce5c5774a420ac37ebae0ac02343c6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "97f43a37f595ab5dd318fb46e7a155eae057317a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9aa008f65de0b923a2a4f02012ad034a5e2e2192" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c15b54878ba618f494b38f0ae7443db6af648ba" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9c50426be05db97f5d64fc54bf89eff947f0a321" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9da397b9e80755301a3b32173283a91c0ef6c87e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9ea779f907f0b315b364b0cfc39a0fde5b02a416" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9f27daea7aca0aa0446220b98d028715e3bc803d" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "9fcd2deaff372a39cc679d5c5e4de7bafb0b1339" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a2f1ccba9395d7fcb155bba8bc92db9bafaeade7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a3acf3a1e16b1d7c315e23510fdd7847b48234f6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a5dc5acd6a7968a4554d89d65e59b7fd3bff0f90" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a82f360a8d3455c5c41366975bde739c37bfeb8a" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
+ "balance" : "0xe8d4a51000",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ac1ecab32727358dba8962a0f3b261731aad9723" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "accc230e8a6e5be9160b8cdf2864dd2a001c28b6" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "acd87e28b0c9d1254e868b81cba4cc20d9a32225" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "adf80daec7ba8dcf15392f1ac611fff65d94f880" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "aeeb8ff27288bdabc0fa5ebb731b6f409507516c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b136707642a4ea12fb4bae820f03d2562ebff487" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b3fb0e5aba0e20e5c49d252dfd30e102b171a425" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b52042c8ca3f8aa246fa79c3feaa3d959347c0ab" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "b9637156d330c0d605a791f1c31ba5890582fe1c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bb9bc244d798123fde783fcc1c72d3bb8c189413" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bc07118b9ac290e4622f5e77a0853539789effbe" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "bcf899e6c7d9d5a215ab1e3444c86806fa854c76" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "be8539bfe837b67d1282b2b1d61c3f723966f049" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "c4bbd073882dd2add2424cf47d35213405b01324" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ca544e5c4687d109611d0f8f928b53a25af72448" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cbb9d3703e651b0d496cdefb8b92c25aeb2171f7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "cc34673c6c40e791051898567a1222daf90be287" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ceaeb481747ca6c540a000c1f3641f8cef161fa7" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d131637d5275fd1a68a3200f4ad25c71a2a9522e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d164b088bd9108b60d0ca3751da4bceb207b0782" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d1ac8b1ef1b69ff51d1d401a476e7e612414f091" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d343b217de44030afaa275f54d31a9317c7f441e" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d4fe7bc31cedb7bfb8a345f31e668033056b2728" : {
+ "balance" : "0x0f4240",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "d9aef3a1e38a39c16b31d1ace71bca8ef58d315b" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "da2fef9e4a3230988ff17df2165440f37e8b1708" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "dbe9b615a3ae8709af8b93336ce9b477e4ac0940" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e308bd1ac5fda103967359b2712dd89deffb7973" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "e4ae1efdfc53b73893af49113d8694a057b9c0d1" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ec8e57756626fdc07c63ad2eafbd28d08e7b0ca5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "ecd135fa4f61a655311e86238c92adcd779555d2" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f0b1aa0eb660754448a7937c022e30aa692fe0c5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f1385fb24aad0cd7432824085e42aff90886fef5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f14c14075d6c4ed84b86798af0956deef67365b5" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "f4c64518ea10f995918a454158c6b61407ea345c" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ },
+ "fe24cdd8648121a43a7c86d289be4dd2951ed49f" : {
+ "balance" : "0x02540be400",
+ "code" : "0x",
+ "nonce" : "0x00",
+ "storage" : {
+ }
+ }
+ }
+ }
+}
diff --git a/tests/util.go b/tests/util.go
index 877e1acdb..79c3bfad1 100644
--- a/tests/util.go
+++ b/tests/util.go
@@ -141,6 +141,8 @@ type VmTest struct {
type RuleSet struct {
HomesteadBlock *big.Int
+ DAOForkBlock *big.Int
+ DAOForkSupport bool
}
func (r RuleSet) IsHomestead(n *big.Int) bool {
@@ -164,8 +166,6 @@ type Env struct {
difficulty *big.Int
gasLimit *big.Int
- logs []vm.StructLog
-
vmTest bool
evm *vm.EVM
@@ -179,14 +179,6 @@ func NewEnv(ruleSet RuleSet, state *state.StateDB) *Env {
return env
}
-func (self *Env) StructLogs() []vm.StructLog {
- return self.logs
-}
-
-func (self *Env) AddStructLog(log vm.StructLog) {
- self.logs = append(self.logs, log)
-}
-
func NewEnvFromMap(ruleSet RuleSet, state *state.StateDB, envValues map[string]string, exeValues map[string]string) *Env {
env := NewEnv(ruleSet, state)
diff --git a/tests/vm_test_util.go b/tests/vm_test_util.go
index 2f516951b..37f0af33c 100644
--- a/tests/vm_test_util.go
+++ b/tests/vm_test_util.go
@@ -241,7 +241,7 @@ func RunVm(state *state.StateDB, env, exec map[string]string) ([]byte, vm.Logs,
caller := state.GetOrNewStateObject(from)
- vmenv := NewEnvFromMap(RuleSet{params.MainNetHomesteadBlock}, state, env, exec)
+ vmenv := NewEnvFromMap(RuleSet{params.MainNetHomesteadBlock, params.MainNetDAOForkBlock, true}, state, env, exec)
vmenv.vmTest = true
vmenv.skipTransfer = true
vmenv.initial = true