diff --git a/vendor/github.com/TomOnTime/utfutil/README.md b/vendor/github.com/TomOnTime/utfutil/README.md
index 815822469..6af907857 100644
--- a/vendor/github.com/TomOnTime/utfutil/README.md
+++ b/vendor/github.com/TomOnTime/utfutil/README.md
@@ -8,7 +8,6 @@ Have you encountered this situation? Code that has worked for years
suddenly breaks. It turns out someone tried to use it with a file
that came from a MS-Windows system. Now this perfectly good code stops
working.
-
Looking at a hex dump you realize every other byte is \0. WTF?
No, UTF. More specifically UTF-16LE with an optional BOM.
diff --git a/vendor/github.com/TomOnTime/utfutil/utfutil.go b/vendor/github.com/TomOnTime/utfutil/utfutil.go
index a7823abac..42ad551d6 100644
--- a/vendor/github.com/TomOnTime/utfutil/utfutil.go
+++ b/vendor/github.com/TomOnTime/utfutil/utfutil.go
@@ -12,12 +12,13 @@ package utfutil
// utfutil.NewReader() rewraps an existing scanner to make it UTF-encoding agnostic.
// utfutil.BytesReader() takes a []byte and decodes it to UTF-8.
-// Since it is impossible to guess 100% correctly if there is no BOM,
-// the functions take a 2nd parameter of type "EncodingHint" where you
-// specify the default encoding for BOM-less data.
+// When there is no BOM, it is impossible to guess correctly 100%
+// of the time. Therefore, the functions take a 2nd parameter of type
+// "EncodingHint" where you specify the default encoding for BOM-less
+// data.
-// If someone writes a golang equivalent of uchatdet, I'll add
-// a hint called "AUTO" which uses it.
+// In the future we'd like to have a hint called AUTO that uses
+// uchatdet (or a Go rewrite) to guess.
// Inspiration: I wrote this after spending half a day trying
// to figure out how to use unicode.BOMOverride.
diff --git a/vendor/github.com/go-ini/ini/LICENSE b/vendor/github.com/go-ini/ini/LICENSE
index 37ec93a14..d361bbcdf 100644
--- a/vendor/github.com/go-ini/ini/LICENSE
+++ b/vendor/github.com/go-ini/ini/LICENSE
@@ -176,7 +176,7 @@ recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
- Copyright [yyyy] [name of copyright owner]
+ Copyright 2014 Unknwon
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/vendor/github.com/go-ini/ini/Makefile b/vendor/github.com/go-ini/ini/Makefile
new file mode 100644
index 000000000..1316911d2
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/Makefile
@@ -0,0 +1,15 @@
+.PHONY: build test bench vet coverage
+
+build: vet bench
+
+test:
+ go test -v -cover -race
+
+bench:
+ go test -v -cover -race -test.bench=. -test.benchmem
+
+vet:
+ go vet
+
+coverage:
+ go test -coverprofile=c.out && go tool cover -html=c.out && rm c.out
\ No newline at end of file
diff --git a/vendor/github.com/go-ini/ini/README.md b/vendor/github.com/go-ini/ini/README.md
index 1272038a9..f4ff27cd3 100644
--- a/vendor/github.com/go-ini/ini/README.md
+++ b/vendor/github.com/go-ini/ini/README.md
@@ -1,4 +1,4 @@
-ini [](https://drone.io/github.com/go-ini/ini/latest) [](http://gocover.io/github.com/go-ini/ini)
+INI [](https://travis-ci.org/go-ini/ini) [](https://sourcegraph.com/github.com/go-ini/ini?badge)
===

@@ -9,7 +9,7 @@ Package ini provides INI file read and write functionality in Go.
## Feature
-- Load multiple data sources(`[]byte` or file) with overwrites.
+- Load multiple data sources(`[]byte`, file and `io.ReadCloser`) with overwrites.
- Read with recursion values.
- Read with parent-child sections.
- Read with auto-increment key names.
@@ -22,16 +22,32 @@ Package ini provides INI file read and write functionality in Go.
## Installation
+To use a tagged revision:
+
go get gopkg.in/ini.v1
+To use with latest changes:
+
+ go get github.com/go-ini/ini
+
+Please add `-u` flag to update in the future.
+
+### Testing
+
+If you want to test on your machine, please apply `-t` flag:
+
+ go get -t gopkg.in/ini.v1
+
+Please add `-u` flag to update in the future.
+
## Getting Started
### Loading from data sources
-A **Data Source** is either raw data in type `[]byte` or a file name with type `string` and you can load **as many as** data sources you want. Passing other types will simply return an error.
+A **Data Source** is either raw data in type `[]byte`, a file name with type `string` or `io.ReadCloser`. You can load **as many data sources as you want**. Passing other types will simply return an error.
```go
-cfg, err := ini.Load([]byte("raw data"), "filename")
+cfg, err := ini.Load([]byte("raw data"), "filename", ioutil.NopCloser(bytes.NewReader([]byte("some other data"))))
```
Or start with an empty object:
@@ -40,12 +56,78 @@ Or start with an empty object:
cfg := ini.Empty()
```
-When you cannot decide how many data sources to load at the beginning, you still able to **Append()** them later.
+When you cannot decide how many data sources to load at the beginning, you will still be able to **Append()** them later.
```go
err := cfg.Append("other file", []byte("other raw data"))
```
+If you have a list of files with possibilities that some of them may not available at the time, and you don't know exactly which ones, you can use `LooseLoad` to ignore nonexistent files without returning error.
+
+```go
+cfg, err := ini.LooseLoad("filename", "filename_404")
+```
+
+The cool thing is, whenever the file is available to load while you're calling `Reload` method, it will be counted as usual.
+
+#### Ignore cases of key name
+
+When you do not care about cases of section and key names, you can use `InsensitiveLoad` to force all names to be lowercased while parsing.
+
+```go
+cfg, err := ini.InsensitiveLoad("filename")
+//...
+
+// sec1 and sec2 are the exactly same section object
+sec1, err := cfg.GetSection("Section")
+sec2, err := cfg.GetSection("SecTIOn")
+
+// key1 and key2 are the exactly same key object
+key1, err := sec1.GetKey("Key")
+key2, err := sec2.GetKey("KeY")
+```
+
+#### MySQL-like boolean key
+
+MySQL's configuration allows a key without value as follows:
+
+```ini
+[mysqld]
+...
+skip-host-cache
+skip-name-resolve
+```
+
+By default, this is considered as missing value. But if you know you're going to deal with those cases, you can assign advanced load options:
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{AllowBooleanKeys: true}, "my.cnf"))
+```
+
+The value of those keys are always `true`, and when you save to a file, it will keep in the same foramt as you read.
+
+To generate such keys in your program, you could use `NewBooleanKey`:
+
+```go
+key, err := sec.NewBooleanKey("skip-host-cache")
+```
+
+#### Comment
+
+Take care that following format will be treated as comment:
+
+1. Line begins with `#` or `;`
+2. Words after `#` or `;`
+3. Words after section name (i.e words after `[some section name]`)
+
+If you want to save a value with `#` or `;`, please quote them with ``` ` ``` or ``` """ ```.
+
+Alternatively, you can use following `LoadOptions` to completely ignore inline comments:
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{IgnoreInlineComment: true}, "app.ini"))
+```
+
### Working with sections
To get a section, you would need to:
@@ -63,7 +145,7 @@ section, err := cfg.GetSection("")
When you're pretty sure the section exists, following code could make your life easier:
```go
-section := cfg.Section("")
+section := cfg.Section("section name")
```
What happens when the section somehow does not exist? Don't panic, it automatically creates and returns a new section to you.
@@ -95,6 +177,12 @@ Same rule applies to key operations:
key := cfg.Section("").Key("key name")
```
+To check if a key exists:
+
+```go
+yes := cfg.Section("").HasKey("key name")
+```
+
To create a new key:
```go
@@ -111,7 +199,7 @@ names := cfg.Section("").KeyStrings()
To get a clone hash of keys and corresponding values:
```go
-hash := cfg.GetSection("").KeysHash()
+hash := cfg.Section("").KeysHash()
```
### Working with values
@@ -133,12 +221,24 @@ val := cfg.Section("").Key("key name").Validate(func(in string) string {
})
```
+If you do not want any auto-transformation (such as recursive read) for the values, you can get raw value directly (this way you get much better performance):
+
+```go
+val := cfg.Section("").Key("key name").Value()
+```
+
+To check if raw value exists:
+
+```go
+yes := cfg.Section("").HasValue("test value")
+```
+
To get value with types:
```go
// For boolean values:
-// true when value is: 1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On
-// false when value is: 0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off
+// true when value is: 1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On
+// false when value is: 0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off
v, err = cfg.Section("").Key("BOOL").Bool()
v, err = cfg.Section("").Key("FLOAT64").Float64()
v, err = cfg.Section("").Key("INT").Int()
@@ -212,6 +312,16 @@ cfg.Section("advance").Key("two_lines").String() // how about continuation lines
cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4
```
+Well, I hate continuation lines, how do I disable that?
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{
+ IgnoreContinuation: true,
+}, "filename")
+```
+
+Holy crap!
+
Note that single quotes around values will be stripped:
```ini
@@ -219,6 +329,20 @@ foo = "some value" // foo: some value
bar = 'some value' // bar: some value
```
+Sometimes you downloaded file from [Crowdin](https://crowdin.com/) has values like the following (value is surrounded by double quotes and quotes in the value are escaped):
+
+```ini
+create_repo="created repository %s"
+```
+
+How do you transform this to regular format automatically?
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{UnescapeValueDoubleQuotes: true}, "en-US.ini"))
+cfg.Section("").Key("create_repo").String()
+// You got: created repository %s
+```
+
That's all? Hmm, no.
#### Helper methods of working with values
@@ -250,9 +374,13 @@ vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), min
vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339
```
-To auto-split value into slice:
+##### Auto-split values into a slice
+
+To use zero value of type for invalid inputs:
```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> [0.0 2.2 0.0 0.0]
vals = cfg.Section("").Key("STRINGS").Strings(",")
vals = cfg.Section("").Key("FLOAT64S").Float64s(",")
vals = cfg.Section("").Key("INTS").Ints(",")
@@ -262,6 +390,32 @@ vals = cfg.Section("").Key("UINT64S").Uint64s(",")
vals = cfg.Section("").Key("TIMES").Times(",")
```
+To exclude invalid values out of result slice:
+
+```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> [2.2]
+vals = cfg.Section("").Key("FLOAT64S").ValidFloat64s(",")
+vals = cfg.Section("").Key("INTS").ValidInts(",")
+vals = cfg.Section("").Key("INT64S").ValidInt64s(",")
+vals = cfg.Section("").Key("UINTS").ValidUints(",")
+vals = cfg.Section("").Key("UINT64S").ValidUint64s(",")
+vals = cfg.Section("").Key("TIMES").ValidTimes(",")
+```
+
+Or to return nothing but error when have invalid inputs:
+
+```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> error
+vals = cfg.Section("").Key("FLOAT64S").StrictFloat64s(",")
+vals = cfg.Section("").Key("INTS").StrictInts(",")
+vals = cfg.Section("").Key("INT64S").StrictInt64s(",")
+vals = cfg.Section("").Key("UINTS").StrictUints(",")
+vals = cfg.Section("").Key("UINT64S").StrictUint64s(",")
+vals = cfg.Section("").Key("TIMES").StrictTimes(",")
+```
+
### Save your configuration
Finally, it's time to save your configuration to somewhere.
@@ -282,6 +436,12 @@ cfg.WriteTo(writer)
cfg.WriteToIndent(writer, "\t")
```
+By default, spaces are used to align "=" sign between key and values, to disable that:
+
+```go
+ini.PrettyFormat = false
+```
+
## Advanced Usage
### Recursive Values
@@ -323,6 +483,27 @@ CLONE_URL = https://%(IMPORT_PATH)s
cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1
```
+#### Retrieve parent keys available to a child section
+
+```go
+cfg.Section("package.sub").ParentKeys() // ["CLONE_URL"]
+```
+
+### Unparseable Sections
+
+Sometimes, you have sections that do not contain key-value pairs but raw content, to handle such case, you can use `LoadOptions.UnparsableSections`:
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{UnparseableSections: []string{"COMMENTS"}}, `[COMMENTS]
+<1> This slide has the fuel listed in the wrong units `))
+
+body := cfg.Section("COMMENTS").Body()
+
+/* --- start ---
+<1> This slide has the fuel listed in the wrong units
+------ end --- */
+```
+
### Auto-increment Key Names
If key name is `-` in data source, then it would be seen as special syntax for auto-increment key name start from 1, and every section is independent on counter.
@@ -406,18 +587,18 @@ Why not?
```go
type Embeded struct {
- Dates []time.Time `delim:"|"`
- Places []string
- None []int
+ Dates []time.Time `delim:"|" comment:"Time data"`
+ Places []string `ini:"places,omitempty"`
+ None []int `ini:",omitempty"`
}
type Author struct {
Name string `ini:"NAME"`
Male bool
- Age int
+ Age int `comment:"Author's age"`
GPA float64
NeverMind string `ini:"-"`
- *Embeded
+ *Embeded `comment:"Embeded section"`
}
func main() {
@@ -438,13 +619,15 @@ So, what do I get?
```ini
NAME = Unknwon
Male = true
+; Author's age
Age = 21
GPA = 2.8
+; Embeded section
[Embeded]
+; Time data
Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00
-Places = HangZhou,Boston
-None =
+places = HangZhou,Boston
```
#### Name Mapper
@@ -464,7 +647,7 @@ type Info struct {
}
func main() {
- err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("packag_name=ini"))
+ err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini"))
// ...
cfg, err := ini.Load([]byte("PACKAGE_NAME=ini"))
@@ -478,6 +661,26 @@ func main() {
Same rules of name mapper apply to `ini.ReflectFromWithMapper` function.
+#### Value Mapper
+
+To expand values (e.g. from environment variables), you can use the `ValueMapper` to transform values:
+
+```go
+type Env struct {
+ Foo string `ini:"foo"`
+}
+
+func main() {
+ cfg, err := ini.Load([]byte("[env]\nfoo = ${MY_VAR}\n")
+ cfg.ValueMapper = os.ExpandEnv
+ // ...
+ env := &Env{}
+ err = cfg.Section("env").MapTo(env)
+}
+```
+
+This would set the value of `env.Foo` to the value of the environment variable `MY_VAR`.
+
#### Other Notes On Map/Reflect
Any embedded struct is treated as a section by default, and there is no automatic parent-child relations in map/reflect feature:
diff --git a/vendor/github.com/go-ini/ini/README_ZH.md b/vendor/github.com/go-ini/ini/README_ZH.md
index 45e19eddd..69aefef12 100644
--- a/vendor/github.com/go-ini/ini/README_ZH.md
+++ b/vendor/github.com/go-ini/ini/README_ZH.md
@@ -2,7 +2,7 @@
## 功能特性
-- 支持覆盖加载多个数据源(`[]byte` 或文件)
+- 支持覆盖加载多个数据源(`[]byte`、文件和 `io.ReadCloser`)
- 支持递归读取键值
- 支持读取父子分区
- 支持读取自增键名
@@ -15,16 +15,32 @@
## 下载安装
+使用一个特定版本:
+
go get gopkg.in/ini.v1
+使用最新版:
+
+ go get github.com/go-ini/ini
+
+如需更新请添加 `-u` 选项。
+
+### 测试安装
+
+如果您想要在自己的机器上运行测试,请使用 `-t` 标记:
+
+ go get -t gopkg.in/ini.v1
+
+如需更新请添加 `-u` 选项。
+
## 开始使用
### 从数据源加载
-一个 **数据源** 可以是 `[]byte` 类型的原始数据,或 `string` 类型的文件路径。您可以加载 **任意多个** 数据源。如果您传递其它类型的数据源,则会直接返回错误。
+一个 **数据源** 可以是 `[]byte` 类型的原始数据,`string` 类型的文件路径或 `io.ReadCloser`。您可以加载 **任意多个** 数据源。如果您传递其它类型的数据源,则会直接返回错误。
```go
-cfg, err := ini.Load([]byte("raw data"), "filename")
+cfg, err := ini.Load([]byte("raw data"), "filename", ioutil.NopCloser(bytes.NewReader([]byte("some other data"))))
```
或者从一个空白的文件开始:
@@ -39,6 +55,72 @@ cfg := ini.Empty()
err := cfg.Append("other file", []byte("other raw data"))
```
+当您想要加载一系列文件,但是不能够确定其中哪些文件是不存在的,可以通过调用函数 `LooseLoad` 来忽略它们(`Load` 会因为文件不存在而返回错误):
+
+```go
+cfg, err := ini.LooseLoad("filename", "filename_404")
+```
+
+更牛逼的是,当那些之前不存在的文件在重新调用 `Reload` 方法的时候突然出现了,那么它们会被正常加载。
+
+#### 忽略键名的大小写
+
+有时候分区和键的名称大小写混合非常烦人,这个时候就可以通过 `InsensitiveLoad` 将所有分区和键名在读取里强制转换为小写:
+
+```go
+cfg, err := ini.InsensitiveLoad("filename")
+//...
+
+// sec1 和 sec2 指向同一个分区对象
+sec1, err := cfg.GetSection("Section")
+sec2, err := cfg.GetSection("SecTIOn")
+
+// key1 和 key2 指向同一个键对象
+key1, err := sec1.GetKey("Key")
+key2, err := sec2.GetKey("KeY")
+```
+
+#### 类似 MySQL 配置中的布尔值键
+
+MySQL 的配置文件中会出现没有具体值的布尔类型的键:
+
+```ini
+[mysqld]
+...
+skip-host-cache
+skip-name-resolve
+```
+
+默认情况下这被认为是缺失值而无法完成解析,但可以通过高级的加载选项对它们进行处理:
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{AllowBooleanKeys: true}, "my.cnf"))
+```
+
+这些键的值永远为 `true`,且在保存到文件时也只会输出键名。
+
+如果您想要通过程序来生成此类键,则可以使用 `NewBooleanKey`:
+
+```go
+key, err := sec.NewBooleanKey("skip-host-cache")
+```
+
+#### 关于注释
+
+下述几种情况的内容将被视为注释:
+
+1. 所有以 `#` 或 `;` 开头的行
+2. 所有在 `#` 或 `;` 之后的内容
+3. 分区标签后的文字 (即 `[分区名]` 之后的内容)
+
+如果你希望使用包含 `#` 或 `;` 的值,请使用 ``` ` ``` 或 ``` """ ``` 进行包覆。
+
+除此之外,您还可以通过 `LoadOptions` 完全忽略行内注释:
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{IgnoreInlineComment: true}, "app.ini"))
+```
+
### 操作分区(Section)
获取指定分区:
@@ -56,7 +138,7 @@ section, err := cfg.GetSection("")
当您非常确定某个分区是存在的,可以使用以下简便方法:
```go
-section := cfg.Section("")
+section := cfg.Section("section name")
```
如果不小心判断错了,要获取的分区其实是不存在的,那会发生什么呢?没事的,它会自动创建并返回一个对应的分区对象给您。
@@ -88,6 +170,12 @@ key, err := cfg.Section("").GetKey("key name")
key := cfg.Section("").Key("key name")
```
+判断某个键是否存在:
+
+```go
+yes := cfg.Section("").HasKey("key name")
+```
+
创建一个新的键:
```go
@@ -104,7 +192,7 @@ names := cfg.Section("").KeyStrings()
获取分区下的所有键值对的克隆:
```go
-hash := cfg.GetSection("").KeysHash()
+hash := cfg.Section("").KeysHash()
```
### 操作键值(Value)
@@ -126,12 +214,24 @@ val := cfg.Section("").Key("key name").Validate(func(in string) string {
})
```
+如果您不需要任何对值的自动转变功能(例如递归读取),可以直接获取原值(这种方式性能最佳):
+
+```go
+val := cfg.Section("").Key("key name").Value()
+```
+
+判断某个原值是否存在:
+
+```go
+yes := cfg.Section("").HasValue("test value")
+```
+
获取其它类型的值:
```go
// 布尔值的规则:
-// true 当值为:1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On
-// false 当值为:0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off
+// true 当值为:1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On
+// false 当值为:0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off
v, err = cfg.Section("").Key("BOOL").Bool()
v, err = cfg.Section("").Key("FLOAT64").Float64()
v, err = cfg.Section("").Key("INT").Int()
@@ -205,6 +305,16 @@ cfg.Section("advance").Key("two_lines").String() // how about continuation lines
cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4
```
+可是我有时候觉得两行连在一起特别没劲,怎么才能不自动连接两行呢?
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{
+ IgnoreContinuation: true,
+}, "filename")
+```
+
+哇靠给力啊!
+
需要注意的是,值两侧的单引号会被自动剔除:
```ini
@@ -212,6 +322,20 @@ foo = "some value" // foo: some value
bar = 'some value' // bar: some value
```
+有时您会获得像从 [Crowdin](https://crowdin.com/) 网站下载的文件那样具有特殊格式的值(值使用双引号括起来,内部的双引号被转义):
+
+```ini
+create_repo="创建了仓库 %s"
+```
+
+那么,怎么自动地将这类值进行处理呢?
+
+```go
+cfg, err := ini.LoadSources(ini.LoadOptions{UnescapeValueDoubleQuotes: true}, "en-US.ini"))
+cfg.Section("").Key("create_repo").String()
+// You got: 创建了仓库 %s
+```
+
这就是全部了?哈哈,当然不是。
#### 操作键值的辅助方法
@@ -243,9 +367,13 @@ vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), min
vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339
```
-自动分割键值为切片(slice):
+##### 自动分割键值到切片(slice)
+
+当存在无效输入时,使用零值代替:
```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> [0.0 2.2 0.0 0.0]
vals = cfg.Section("").Key("STRINGS").Strings(",")
vals = cfg.Section("").Key("FLOAT64S").Float64s(",")
vals = cfg.Section("").Key("INTS").Ints(",")
@@ -255,6 +383,32 @@ vals = cfg.Section("").Key("UINT64S").Uint64s(",")
vals = cfg.Section("").Key("TIMES").Times(",")
```
+从结果切片中剔除无效输入:
+
+```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> [2.2]
+vals = cfg.Section("").Key("FLOAT64S").ValidFloat64s(",")
+vals = cfg.Section("").Key("INTS").ValidInts(",")
+vals = cfg.Section("").Key("INT64S").ValidInt64s(",")
+vals = cfg.Section("").Key("UINTS").ValidUints(",")
+vals = cfg.Section("").Key("UINT64S").ValidUint64s(",")
+vals = cfg.Section("").Key("TIMES").ValidTimes(",")
+```
+
+当存在无效输入时,直接返回错误:
+
+```go
+// Input: 1.1, 2.2, 3.3, 4.4 -> [1.1 2.2 3.3 4.4]
+// Input: how, 2.2, are, you -> error
+vals = cfg.Section("").Key("FLOAT64S").StrictFloat64s(",")
+vals = cfg.Section("").Key("INTS").StrictInts(",")
+vals = cfg.Section("").Key("INT64S").StrictInt64s(",")
+vals = cfg.Section("").Key("UINTS").StrictUints(",")
+vals = cfg.Section("").Key("UINT64S").StrictUint64s(",")
+vals = cfg.Section("").Key("TIMES").StrictTimes(",")
+```
+
### 保存配置
终于到了这个时刻,是时候保存一下配置了。
@@ -275,9 +429,15 @@ cfg.WriteTo(writer)
cfg.WriteToIndent(writer, "\t")
```
-### 高级用法
+默认情况下,空格将被用于对齐键值之间的等号以美化输出结果,以下代码可以禁用该功能:
-#### 递归读取键值
+```go
+ini.PrettyFormat = false
+```
+
+## 高级用法
+
+### 递归读取键值
在获取所有键值的过程中,特殊语法 `%()s` 会被应用,其中 `` 可以是相同分区或者默认分区下的键名。字符串 `%()s` 会被相应的键值所替代,如果指定的键不存在,则会用空字符串替代。您可以最多使用 99 层的递归嵌套。
@@ -297,7 +457,7 @@ cfg.Section("author").Key("GITHUB").String() // https://github.com/Unknwon
cfg.Section("package").Key("FULL_NAME").String() // github.com/go-ini/ini
```
-#### 读取父子分区
+### 读取父子分区
您可以在分区名称中使用 `.` 来表示两个或多个分区之间的父子关系。如果某个键在子分区中不存在,则会去它的父分区中再次寻找,直到没有父分区为止。
@@ -316,7 +476,28 @@ CLONE_URL = https://%(IMPORT_PATH)s
cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1
```
-#### 读取自增键名
+#### 获取上级父分区下的所有键名
+
+```go
+cfg.Section("package.sub").ParentKeys() // ["CLONE_URL"]
+```
+
+### 无法解析的分区
+
+如果遇到一些比较特殊的分区,它们不包含常见的键值对,而是没有固定格式的纯文本,则可以使用 `LoadOptions.UnparsableSections` 进行处理:
+
+```go
+cfg, err := LoadSources(ini.LoadOptions{UnparseableSections: []string{"COMMENTS"}}, `[COMMENTS]
+<1> This slide has the fuel listed in the wrong units `))
+
+body := cfg.Section("COMMENTS").Body()
+
+/* --- start ---
+<1> This slide has the fuel listed in the wrong units
+------ end --- */
+```
+
+### 读取自增键名
如果数据源中的键名为 `-`,则认为该键使用了自增键名的特殊语法。计数器从 1 开始,并且分区之间是相互独立的。
@@ -397,18 +578,18 @@ p := &Person{
```go
type Embeded struct {
- Dates []time.Time `delim:"|"`
- Places []string
- None []int
+ Dates []time.Time `delim:"|" comment:"Time data"`
+ Places []string `ini:"places,omitempty"`
+ None []int `ini:",omitempty"`
}
type Author struct {
Name string `ini:"NAME"`
Male bool
- Age int
+ Age int `comment:"Author's age"`
GPA float64
NeverMind string `ini:"-"`
- *Embeded
+ *Embeded `comment:"Embeded section"`
}
func main() {
@@ -429,13 +610,15 @@ func main() {
```ini
NAME = Unknwon
Male = true
+; Author's age
Age = 21
GPA = 2.8
+; Embeded section
[Embeded]
+; Time data
Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00
-Places = HangZhou,Boston
-None =
+places = HangZhou,Boston
```
#### 名称映射器(Name Mapper)
@@ -455,7 +638,7 @@ type Info struct{
}
func main() {
- err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("packag_name=ini"))
+ err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini"))
// ...
cfg, err := ini.Load([]byte("PACKAGE_NAME=ini"))
@@ -469,6 +652,26 @@ func main() {
使用函数 `ini.ReflectFromWithMapper` 时也可应用相同的规则。
+#### 值映射器(Value Mapper)
+
+值映射器允许使用一个自定义函数自动展开值的具体内容,例如:运行时获取环境变量:
+
+```go
+type Env struct {
+ Foo string `ini:"foo"`
+}
+
+func main() {
+ cfg, err := ini.Load([]byte("[env]\nfoo = ${MY_VAR}\n")
+ cfg.ValueMapper = os.ExpandEnv
+ // ...
+ env := &Env{}
+ err = cfg.Section("env").MapTo(env)
+}
+```
+
+本例中,`env.Foo` 将会是运行时所获取到环境变量 `MY_VAR` 的值。
+
#### 映射/反射的其它说明
任何嵌入的结构都会被默认认作一个不同的分区,并且不会自动产生所谓的父子分区关联:
diff --git a/vendor/github.com/go-ini/ini/error.go b/vendor/github.com/go-ini/ini/error.go
new file mode 100644
index 000000000..80afe7431
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/error.go
@@ -0,0 +1,32 @@
+// Copyright 2016 Unknwon
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package ini
+
+import (
+ "fmt"
+)
+
+type ErrDelimiterNotFound struct {
+ Line string
+}
+
+func IsErrDelimiterNotFound(err error) bool {
+ _, ok := err.(ErrDelimiterNotFound)
+ return ok
+}
+
+func (err ErrDelimiterNotFound) Error() string {
+ return fmt.Sprintf("key-value delimiter not found: %s", err.Line)
+}
diff --git a/vendor/github.com/go-ini/ini/file.go b/vendor/github.com/go-ini/ini/file.go
new file mode 100644
index 000000000..ce26c3b31
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/file.go
@@ -0,0 +1,398 @@
+// Copyright 2017 Unknwon
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package ini
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "os"
+ "strings"
+ "sync"
+)
+
+// File represents a combination of a or more INI file(s) in memory.
+type File struct {
+ options LoadOptions
+ dataSources []dataSource
+
+ // Should make things safe, but sometimes doesn't matter.
+ BlockMode bool
+ lock sync.RWMutex
+
+ // To keep data in order.
+ sectionList []string
+ // Actual data is stored here.
+ sections map[string]*Section
+
+ NameMapper
+ ValueMapper
+}
+
+// newFile initializes File object with given data sources.
+func newFile(dataSources []dataSource, opts LoadOptions) *File {
+ return &File{
+ BlockMode: true,
+ dataSources: dataSources,
+ sections: make(map[string]*Section),
+ sectionList: make([]string, 0, 10),
+ options: opts,
+ }
+}
+
+// Empty returns an empty file object.
+func Empty() *File {
+ // Ignore error here, we sure our data is good.
+ f, _ := Load([]byte(""))
+ return f
+}
+
+// NewSection creates a new section.
+func (f *File) NewSection(name string) (*Section, error) {
+ if len(name) == 0 {
+ return nil, errors.New("error creating new section: empty section name")
+ } else if f.options.Insensitive && name != DEFAULT_SECTION {
+ name = strings.ToLower(name)
+ }
+
+ if f.BlockMode {
+ f.lock.Lock()
+ defer f.lock.Unlock()
+ }
+
+ if inSlice(name, f.sectionList) {
+ return f.sections[name], nil
+ }
+
+ f.sectionList = append(f.sectionList, name)
+ f.sections[name] = newSection(f, name)
+ return f.sections[name], nil
+}
+
+// NewRawSection creates a new section with an unparseable body.
+func (f *File) NewRawSection(name, body string) (*Section, error) {
+ section, err := f.NewSection(name)
+ if err != nil {
+ return nil, err
+ }
+
+ section.isRawSection = true
+ section.rawBody = body
+ return section, nil
+}
+
+// NewSections creates a list of sections.
+func (f *File) NewSections(names ...string) (err error) {
+ for _, name := range names {
+ if _, err = f.NewSection(name); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// GetSection returns section by given name.
+func (f *File) GetSection(name string) (*Section, error) {
+ if len(name) == 0 {
+ name = DEFAULT_SECTION
+ }
+ if f.options.Insensitive {
+ name = strings.ToLower(name)
+ }
+
+ if f.BlockMode {
+ f.lock.RLock()
+ defer f.lock.RUnlock()
+ }
+
+ sec := f.sections[name]
+ if sec == nil {
+ return nil, fmt.Errorf("section '%s' does not exist", name)
+ }
+ return sec, nil
+}
+
+// Section assumes named section exists and returns a zero-value when not.
+func (f *File) Section(name string) *Section {
+ sec, err := f.GetSection(name)
+ if err != nil {
+ // Note: It's OK here because the only possible error is empty section name,
+ // but if it's empty, this piece of code won't be executed.
+ sec, _ = f.NewSection(name)
+ return sec
+ }
+ return sec
+}
+
+// Section returns list of Section.
+func (f *File) Sections() []*Section {
+ sections := make([]*Section, len(f.sectionList))
+ for i := range f.sectionList {
+ sections[i] = f.Section(f.sectionList[i])
+ }
+ return sections
+}
+
+// ChildSections returns a list of child sections of given section name.
+func (f *File) ChildSections(name string) []*Section {
+ return f.Section(name).ChildSections()
+}
+
+// SectionStrings returns list of section names.
+func (f *File) SectionStrings() []string {
+ list := make([]string, len(f.sectionList))
+ copy(list, f.sectionList)
+ return list
+}
+
+// DeleteSection deletes a section.
+func (f *File) DeleteSection(name string) {
+ if f.BlockMode {
+ f.lock.Lock()
+ defer f.lock.Unlock()
+ }
+
+ if len(name) == 0 {
+ name = DEFAULT_SECTION
+ }
+
+ for i, s := range f.sectionList {
+ if s == name {
+ f.sectionList = append(f.sectionList[:i], f.sectionList[i+1:]...)
+ delete(f.sections, name)
+ return
+ }
+ }
+}
+
+func (f *File) reload(s dataSource) error {
+ r, err := s.ReadCloser()
+ if err != nil {
+ return err
+ }
+ defer r.Close()
+
+ return f.parse(r)
+}
+
+// Reload reloads and parses all data sources.
+func (f *File) Reload() (err error) {
+ for _, s := range f.dataSources {
+ if err = f.reload(s); err != nil {
+ // In loose mode, we create an empty default section for nonexistent files.
+ if os.IsNotExist(err) && f.options.Loose {
+ f.parse(bytes.NewBuffer(nil))
+ continue
+ }
+ return err
+ }
+ }
+ return nil
+}
+
+// Append appends one or more data sources and reloads automatically.
+func (f *File) Append(source interface{}, others ...interface{}) error {
+ ds, err := parseDataSource(source)
+ if err != nil {
+ return err
+ }
+ f.dataSources = append(f.dataSources, ds)
+ for _, s := range others {
+ ds, err = parseDataSource(s)
+ if err != nil {
+ return err
+ }
+ f.dataSources = append(f.dataSources, ds)
+ }
+ return f.Reload()
+}
+
+func (f *File) writeToBuffer(indent string) (*bytes.Buffer, error) {
+ equalSign := "="
+ if PrettyFormat {
+ equalSign = " = "
+ }
+
+ // Use buffer to make sure target is safe until finish encoding.
+ buf := bytes.NewBuffer(nil)
+ for i, sname := range f.sectionList {
+ sec := f.Section(sname)
+ if len(sec.Comment) > 0 {
+ if sec.Comment[0] != '#' && sec.Comment[0] != ';' {
+ sec.Comment = "; " + sec.Comment
+ } else {
+ sec.Comment = sec.Comment[:1] + " " + strings.TrimSpace(sec.Comment[1:])
+ }
+ if _, err := buf.WriteString(sec.Comment + LineBreak); err != nil {
+ return nil, err
+ }
+ }
+
+ if i > 0 || DefaultHeader {
+ if _, err := buf.WriteString("[" + sname + "]" + LineBreak); err != nil {
+ return nil, err
+ }
+ } else {
+ // Write nothing if default section is empty
+ if len(sec.keyList) == 0 {
+ continue
+ }
+ }
+
+ if sec.isRawSection {
+ if _, err := buf.WriteString(sec.rawBody); err != nil {
+ return nil, err
+ }
+
+ if PrettySection {
+ // Put a line between sections
+ if _, err := buf.WriteString(LineBreak); err != nil {
+ return nil, err
+ }
+ }
+ continue
+ }
+
+ // Count and generate alignment length and buffer spaces using the
+ // longest key. Keys may be modifed if they contain certain characters so
+ // we need to take that into account in our calculation.
+ alignLength := 0
+ if PrettyFormat {
+ for _, kname := range sec.keyList {
+ keyLength := len(kname)
+ // First case will surround key by ` and second by """
+ if strings.ContainsAny(kname, "\"=:") {
+ keyLength += 2
+ } else if strings.Contains(kname, "`") {
+ keyLength += 6
+ }
+
+ if keyLength > alignLength {
+ alignLength = keyLength
+ }
+ }
+ }
+ alignSpaces := bytes.Repeat([]byte(" "), alignLength)
+
+ KEY_LIST:
+ for _, kname := range sec.keyList {
+ key := sec.Key(kname)
+ if len(key.Comment) > 0 {
+ if len(indent) > 0 && sname != DEFAULT_SECTION {
+ buf.WriteString(indent)
+ }
+ if key.Comment[0] != '#' && key.Comment[0] != ';' {
+ key.Comment = "; " + key.Comment
+ } else {
+ key.Comment = key.Comment[:1] + " " + strings.TrimSpace(key.Comment[1:])
+ }
+ if _, err := buf.WriteString(key.Comment + LineBreak); err != nil {
+ return nil, err
+ }
+ }
+
+ if len(indent) > 0 && sname != DEFAULT_SECTION {
+ buf.WriteString(indent)
+ }
+
+ switch {
+ case key.isAutoIncrement:
+ kname = "-"
+ case strings.ContainsAny(kname, "\"=:"):
+ kname = "`" + kname + "`"
+ case strings.Contains(kname, "`"):
+ kname = `"""` + kname + `"""`
+ }
+
+ for _, val := range key.ValueWithShadows() {
+ if _, err := buf.WriteString(kname); err != nil {
+ return nil, err
+ }
+
+ if key.isBooleanType {
+ if kname != sec.keyList[len(sec.keyList)-1] {
+ buf.WriteString(LineBreak)
+ }
+ continue KEY_LIST
+ }
+
+ // Write out alignment spaces before "=" sign
+ if PrettyFormat {
+ buf.Write(alignSpaces[:alignLength-len(kname)])
+ }
+
+ // In case key value contains "\n", "`", "\"", "#" or ";"
+ if strings.ContainsAny(val, "\n`") {
+ val = `"""` + val + `"""`
+ } else if !f.options.IgnoreInlineComment && strings.ContainsAny(val, "#;") {
+ val = "`" + val + "`"
+ }
+ if _, err := buf.WriteString(equalSign + val + LineBreak); err != nil {
+ return nil, err
+ }
+ }
+
+ for _, val := range key.nestedValues {
+ if _, err := buf.WriteString(indent + " " + val + LineBreak); err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ if PrettySection {
+ // Put a line between sections
+ if _, err := buf.WriteString(LineBreak); err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ return buf, nil
+}
+
+// WriteToIndent writes content into io.Writer with given indention.
+// If PrettyFormat has been set to be true,
+// it will align "=" sign with spaces under each section.
+func (f *File) WriteToIndent(w io.Writer, indent string) (int64, error) {
+ buf, err := f.writeToBuffer(indent)
+ if err != nil {
+ return 0, err
+ }
+ return buf.WriteTo(w)
+}
+
+// WriteTo writes file content into io.Writer.
+func (f *File) WriteTo(w io.Writer) (int64, error) {
+ return f.WriteToIndent(w, "")
+}
+
+// SaveToIndent writes content to file system with given value indention.
+func (f *File) SaveToIndent(filename, indent string) error {
+ // Note: Because we are truncating with os.Create,
+ // so it's safer to save to a temporary file location and rename afte done.
+ buf, err := f.writeToBuffer(indent)
+ if err != nil {
+ return err
+ }
+
+ return ioutil.WriteFile(filename, buf.Bytes(), 0666)
+}
+
+// SaveTo writes content to file system.
+func (f *File) SaveTo(filename string) error {
+ return f.SaveToIndent(filename, "")
+}
diff --git a/vendor/github.com/go-ini/ini/ini.go b/vendor/github.com/go-ini/ini/ini.go
index 1fee789a1..316211576 100644
--- a/vendor/github.com/go-ini/ini/ini.go
+++ b/vendor/github.com/go-ini/ini/ini.go
@@ -16,40 +16,48 @@
package ini
import (
- "bufio"
"bytes"
- "errors"
"fmt"
"io"
+ "io/ioutil"
"os"
"regexp"
"runtime"
- "strconv"
- "strings"
- "sync"
- "time"
)
const (
+ // Name for default section. You can use this constant or the string literal.
+ // In most of cases, an empty string is all you need to access the section.
DEFAULT_SECTION = "DEFAULT"
+
// Maximum allowed depth when recursively substituing variable names.
_DEPTH_VALUES = 99
-
- _VERSION = "1.6.0"
+ _VERSION = "1.32.1"
)
+// Version returns current package version literal.
func Version() string {
return _VERSION
}
var (
+ // Delimiter to determine or compose a new line.
+ // This variable will be changed to "\r\n" automatically on Windows
+ // at package init time.
LineBreak = "\n"
// Variable regexp pattern: %(variable)s
varPattern = regexp.MustCompile(`%\(([^\)]+)\)s`)
- // Write spaces around "=" to look better.
+ // Indicate whether to align "=" sign with spaces to produce pretty output
+ // or reduce all possible spaces for compact format.
PrettyFormat = true
+
+ // Explicitly write DEFAULT section header
+ DefaultHeader = false
+
+ // Indicate whether to put a line between sections
+ PrettySection = true
)
func init() {
@@ -67,11 +75,12 @@ func inSlice(str string, s []string) bool {
return false
}
-// dataSource is a interface that returns file content.
+// dataSource is an interface that returns object which can be read and closed.
type dataSource interface {
ReadCloser() (io.ReadCloser, error)
}
+// sourceFile represents an object that contains content on the local file system.
type sourceFile struct {
name string
}
@@ -80,635 +89,22 @@ func (s sourceFile) ReadCloser() (_ io.ReadCloser, err error) {
return os.Open(s.name)
}
-type bytesReadCloser struct {
- reader io.Reader
-}
-
-func (rc *bytesReadCloser) Read(p []byte) (n int, err error) {
- return rc.reader.Read(p)
-}
-
-func (rc *bytesReadCloser) Close() error {
- return nil
-}
-
+// sourceData represents an object that contains content in memory.
type sourceData struct {
data []byte
}
func (s *sourceData) ReadCloser() (io.ReadCloser, error) {
- return &bytesReadCloser{bytes.NewReader(s.data)}, nil
+ return ioutil.NopCloser(bytes.NewReader(s.data)), nil
}
-// ____ __.
-// | |/ _|____ ___.__.
-// | <_/ __ < | |
-// | | \ ___/\___ |
-// |____|__ \___ > ____|
-// \/ \/\/
-
-// Key represents a key under a section.
-type Key struct {
- s *Section
- Comment string
- name string
- value string
- isAutoIncr bool
+// sourceReadCloser represents an input stream with Close method.
+type sourceReadCloser struct {
+ reader io.ReadCloser
}
-// Name returns name of key.
-func (k *Key) Name() string {
- return k.name
-}
-
-// Value returns raw value of key for performance purpose.
-func (k *Key) Value() string {
- return k.value
-}
-
-// String returns string representation of value.
-func (k *Key) String() string {
- val := k.value
- if strings.Index(val, "%") == -1 {
- return val
- }
-
- for i := 0; i < _DEPTH_VALUES; i++ {
- vr := varPattern.FindString(val)
- if len(vr) == 0 {
- break
- }
-
- // Take off leading '%(' and trailing ')s'.
- noption := strings.TrimLeft(vr, "%(")
- noption = strings.TrimRight(noption, ")s")
-
- // Search in the same section.
- nk, err := k.s.GetKey(noption)
- if err != nil {
- // Search again in default section.
- nk, _ = k.s.f.Section("").GetKey(noption)
- }
-
- // Substitute by new value and take off leading '%(' and trailing ')s'.
- val = strings.Replace(val, vr, nk.value, -1)
- }
- return val
-}
-
-// Validate accepts a validate function which can
-// return modifed result as key value.
-func (k *Key) Validate(fn func(string) string) string {
- return fn(k.String())
-}
-
-// parseBool returns the boolean value represented by the string.
-//
-// It accepts 1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On,
-// 0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off.
-// Any other value returns an error.
-func parseBool(str string) (value bool, err error) {
- switch str {
- case "1", "t", "T", "true", "TRUE", "True", "YES", "yes", "Yes", "ON", "on", "On":
- return true, nil
- case "0", "f", "F", "false", "FALSE", "False", "NO", "no", "No", "OFF", "off", "Off":
- return false, nil
- }
- return false, fmt.Errorf("parsing \"%s\": invalid syntax", str)
-}
-
-// Bool returns bool type value.
-func (k *Key) Bool() (bool, error) {
- return parseBool(k.String())
-}
-
-// Float64 returns float64 type value.
-func (k *Key) Float64() (float64, error) {
- return strconv.ParseFloat(k.String(), 64)
-}
-
-// Int returns int type value.
-func (k *Key) Int() (int, error) {
- return strconv.Atoi(k.String())
-}
-
-// Int64 returns int64 type value.
-func (k *Key) Int64() (int64, error) {
- return strconv.ParseInt(k.String(), 10, 64)
-}
-
-// Uint returns uint type valued.
-func (k *Key) Uint() (uint, error) {
- u, e := strconv.ParseUint(k.String(), 10, 64)
- return uint(u), e
-}
-
-// Uint64 returns uint64 type value.
-func (k *Key) Uint64() (uint64, error) {
- return strconv.ParseUint(k.String(), 10, 64)
-}
-
-// Duration returns time.Duration type value.
-func (k *Key) Duration() (time.Duration, error) {
- return time.ParseDuration(k.String())
-}
-
-// TimeFormat parses with given format and returns time.Time type value.
-func (k *Key) TimeFormat(format string) (time.Time, error) {
- return time.Parse(format, k.String())
-}
-
-// Time parses with RFC3339 format and returns time.Time type value.
-func (k *Key) Time() (time.Time, error) {
- return k.TimeFormat(time.RFC3339)
-}
-
-// MustString returns default value if key value is empty.
-func (k *Key) MustString(defaultVal string) string {
- val := k.String()
- if len(val) == 0 {
- return defaultVal
- }
- return val
-}
-
-// MustBool always returns value without error,
-// it returns false if error occurs.
-func (k *Key) MustBool(defaultVal ...bool) bool {
- val, err := k.Bool()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustFloat64 always returns value without error,
-// it returns 0.0 if error occurs.
-func (k *Key) MustFloat64(defaultVal ...float64) float64 {
- val, err := k.Float64()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustInt always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustInt(defaultVal ...int) int {
- val, err := k.Int()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustInt64 always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustInt64(defaultVal ...int64) int64 {
- val, err := k.Int64()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustUint always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustUint(defaultVal ...uint) uint {
- val, err := k.Uint()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustUint64 always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustUint64(defaultVal ...uint64) uint64 {
- val, err := k.Uint64()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustDuration always returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustDuration(defaultVal ...time.Duration) time.Duration {
- val, err := k.Duration()
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustTimeFormat always parses with given format and returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustTimeFormat(format string, defaultVal ...time.Time) time.Time {
- val, err := k.TimeFormat(format)
- if len(defaultVal) > 0 && err != nil {
- return defaultVal[0]
- }
- return val
-}
-
-// MustTime always parses with RFC3339 format and returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustTime(defaultVal ...time.Time) time.Time {
- return k.MustTimeFormat(time.RFC3339, defaultVal...)
-}
-
-// In always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) In(defaultVal string, candidates []string) string {
- val := k.String()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InFloat64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InFloat64(defaultVal float64, candidates []float64) float64 {
- val := k.MustFloat64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InInt always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InInt(defaultVal int, candidates []int) int {
- val := k.MustInt()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InInt64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InInt64(defaultVal int64, candidates []int64) int64 {
- val := k.MustInt64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InUint always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InUint(defaultVal uint, candidates []uint) uint {
- val := k.MustUint()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InUint64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InUint64(defaultVal uint64, candidates []uint64) uint64 {
- val := k.MustUint64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InTimeFormat always parses with given format and returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InTimeFormat(format string, defaultVal time.Time, candidates []time.Time) time.Time {
- val := k.MustTimeFormat(format)
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InTime always parses with RFC3339 format and returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InTime(defaultVal time.Time, candidates []time.Time) time.Time {
- return k.InTimeFormat(time.RFC3339, defaultVal, candidates)
-}
-
-// RangeFloat64 checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeFloat64(defaultVal, min, max float64) float64 {
- val := k.MustFloat64()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeInt checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeInt(defaultVal, min, max int) int {
- val := k.MustInt()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeInt64 checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeInt64(defaultVal, min, max int64) int64 {
- val := k.MustInt64()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeTimeFormat checks if value with given format is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeTimeFormat(format string, defaultVal, min, max time.Time) time.Time {
- val := k.MustTimeFormat(format)
- if val.Unix() < min.Unix() || val.Unix() > max.Unix() {
- return defaultVal
- }
- return val
-}
-
-// RangeTime checks if value with RFC3339 format is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeTime(defaultVal, min, max time.Time) time.Time {
- return k.RangeTimeFormat(time.RFC3339, defaultVal, min, max)
-}
-
-// Strings returns list of string devide by given delimiter.
-func (k *Key) Strings(delim string) []string {
- str := k.String()
- if len(str) == 0 {
- return []string{}
- }
-
- vals := strings.Split(str, delim)
- for i := range vals {
- vals[i] = strings.TrimSpace(vals[i])
- }
- return vals
-}
-
-// Float64s returns list of float64 devide by given delimiter.
-func (k *Key) Float64s(delim string) []float64 {
- strs := k.Strings(delim)
- vals := make([]float64, len(strs))
- for i := range strs {
- vals[i], _ = strconv.ParseFloat(strs[i], 64)
- }
- return vals
-}
-
-// Ints returns list of int devide by given delimiter.
-func (k *Key) Ints(delim string) []int {
- strs := k.Strings(delim)
- vals := make([]int, len(strs))
- for i := range strs {
- vals[i], _ = strconv.Atoi(strs[i])
- }
- return vals
-}
-
-// Int64s returns list of int64 devide by given delimiter.
-func (k *Key) Int64s(delim string) []int64 {
- strs := k.Strings(delim)
- vals := make([]int64, len(strs))
- for i := range strs {
- vals[i], _ = strconv.ParseInt(strs[i], 10, 64)
- }
- return vals
-}
-
-// Uints returns list of uint devide by given delimiter.
-func (k *Key) Uints(delim string) []uint {
- strs := k.Strings(delim)
- vals := make([]uint, len(strs))
- for i := range strs {
- u, _ := strconv.ParseUint(strs[i], 10, 64)
- vals[i] = uint(u)
- }
- return vals
-}
-
-// Uint64s returns list of uint64 devide by given delimiter.
-func (k *Key) Uint64s(delim string) []uint64 {
- strs := k.Strings(delim)
- vals := make([]uint64, len(strs))
- for i := range strs {
- vals[i], _ = strconv.ParseUint(strs[i], 10, 64)
- }
- return vals
-}
-
-// TimesFormat parses with given format and returns list of time.Time devide by given delimiter.
-func (k *Key) TimesFormat(format, delim string) []time.Time {
- strs := k.Strings(delim)
- vals := make([]time.Time, len(strs))
- for i := range strs {
- vals[i], _ = time.Parse(format, strs[i])
- }
- return vals
-}
-
-// Times parses with RFC3339 format and returns list of time.Time devide by given delimiter.
-func (k *Key) Times(delim string) []time.Time {
- return k.TimesFormat(time.RFC3339, delim)
-}
-
-// SetValue changes key value.
-func (k *Key) SetValue(v string) {
- k.value = v
-}
-
-// _________ __ .__
-// / _____/ ____ _____/ |_|__| ____ ____
-// \_____ \_/ __ \_/ ___\ __\ |/ _ \ / \
-// / \ ___/\ \___| | | ( <_> ) | \
-// /_______ /\___ >\___ >__| |__|\____/|___| /
-// \/ \/ \/ \/
-
-// Section represents a config section.
-type Section struct {
- f *File
- Comment string
- name string
- keys map[string]*Key
- keyList []string
- keysHash map[string]string
-}
-
-func newSection(f *File, name string) *Section {
- return &Section{f, "", name, make(map[string]*Key), make([]string, 0, 10), make(map[string]string)}
-}
-
-// Name returns name of Section.
-func (s *Section) Name() string {
- return s.name
-}
-
-// NewKey creates a new key to given section.
-func (s *Section) NewKey(name, val string) (*Key, error) {
- if len(name) == 0 {
- return nil, errors.New("error creating new key: empty key name")
- }
-
- if s.f.BlockMode {
- s.f.lock.Lock()
- defer s.f.lock.Unlock()
- }
-
- if inSlice(name, s.keyList) {
- s.keys[name].value = val
- return s.keys[name], nil
- }
-
- s.keyList = append(s.keyList, name)
- s.keys[name] = &Key{s, "", name, val, false}
- s.keysHash[name] = val
- return s.keys[name], nil
-}
-
-// GetKey returns key in section by given name.
-func (s *Section) GetKey(name string) (*Key, error) {
- // FIXME: change to section level lock?
- if s.f.BlockMode {
- s.f.lock.RLock()
- }
- key := s.keys[name]
- if s.f.BlockMode {
- s.f.lock.RUnlock()
- }
-
- if key == nil {
- // Check if it is a child-section.
- sname := s.name
- for {
- if i := strings.LastIndex(sname, "."); i > -1 {
- sname = sname[:i]
- sec, err := s.f.GetSection(sname)
- if err != nil {
- continue
- }
- return sec.GetKey(name)
- } else {
- break
- }
- }
- return nil, fmt.Errorf("error when getting key of section '%s': key '%s' not exists", s.name, name)
- }
- return key, nil
-}
-
-// Key assumes named Key exists in section and returns a zero-value when not.
-func (s *Section) Key(name string) *Key {
- key, err := s.GetKey(name)
- if err != nil {
- // It's OK here because the only possible error is empty key name,
- // but if it's empty, this piece of code won't be executed.
- key, _ = s.NewKey(name, "")
- return key
- }
- return key
-}
-
-// Keys returns list of keys of section.
-func (s *Section) Keys() []*Key {
- keys := make([]*Key, len(s.keyList))
- for i := range s.keyList {
- keys[i] = s.Key(s.keyList[i])
- }
- return keys
-}
-
-// KeyStrings returns list of key names of section.
-func (s *Section) KeyStrings() []string {
- list := make([]string, len(s.keyList))
- copy(list, s.keyList)
- return list
-}
-
-// KeysHash returns keys hash consisting of names and values.
-func (s *Section) KeysHash() map[string]string {
- if s.f.BlockMode {
- s.f.lock.RLock()
- defer s.f.lock.RUnlock()
- }
-
- hash := map[string]string{}
- for key, value := range s.keysHash {
- hash[key] = value
- }
- return hash
-}
-
-// DeleteKey deletes a key from section.
-func (s *Section) DeleteKey(name string) {
- if s.f.BlockMode {
- s.f.lock.Lock()
- defer s.f.lock.Unlock()
- }
-
- for i, k := range s.keyList {
- if k == name {
- s.keyList = append(s.keyList[:i], s.keyList[i+1:]...)
- delete(s.keys, name)
- return
- }
- }
-}
-
-// ___________.__.__
-// \_ _____/|__| | ____
-// | __) | | | _/ __ \
-// | \ | | |_\ ___/
-// \___ / |__|____/\___ >
-// \/ \/
-
-// File represents a combination of a or more INI file(s) in memory.
-type File struct {
- // Should make things safe, but sometimes doesn't matter.
- BlockMode bool
- // Make sure data is safe in multiple goroutines.
- lock sync.RWMutex
-
- // Allow combination of multiple data sources.
- dataSources []dataSource
- // Actual data is stored here.
- sections map[string]*Section
-
- // To keep data in order.
- sectionList []string
-
- NameMapper
-}
-
-// newFile initializes File object with given data sources.
-func newFile(dataSources []dataSource) *File {
- return &File{
- BlockMode: true,
- dataSources: dataSources,
- sections: make(map[string]*Section),
- sectionList: make([]string, 0, 10),
- }
+func (s *sourceReadCloser) ReadCloser() (io.ReadCloser, error) {
+ return s.reader, nil
}
func parseDataSource(source interface{}) (dataSource, error) {
@@ -717,14 +113,43 @@ func parseDataSource(source interface{}) (dataSource, error) {
return sourceFile{s}, nil
case []byte:
return &sourceData{s}, nil
+ case io.ReadCloser:
+ return &sourceReadCloser{s}, nil
default:
return nil, fmt.Errorf("error parsing data source: unknown type '%s'", s)
}
}
-// Load loads and parses from INI data sources.
-// Arguments can be mixed of file name with string type, or raw data in []byte.
-func Load(source interface{}, others ...interface{}) (_ *File, err error) {
+type LoadOptions struct {
+ // Loose indicates whether the parser should ignore nonexistent files or return error.
+ Loose bool
+ // Insensitive indicates whether the parser forces all section and key names to lowercase.
+ Insensitive bool
+ // IgnoreContinuation indicates whether to ignore continuation lines while parsing.
+ IgnoreContinuation bool
+ // IgnoreInlineComment indicates whether to ignore comments at the end of value and treat it as part of value.
+ IgnoreInlineComment bool
+ // AllowBooleanKeys indicates whether to allow boolean type keys or treat as value is missing.
+ // This type of keys are mostly used in my.cnf.
+ AllowBooleanKeys bool
+ // AllowShadows indicates whether to keep track of keys with same name under same section.
+ AllowShadows bool
+ // AllowNestedValues indicates whether to allow AWS-like nested values.
+ // Docs: http://docs.aws.amazon.com/cli/latest/topic/config-vars.html#nested-values
+ AllowNestedValues bool
+ // UnescapeValueDoubleQuotes indicates whether to unescape double quotes inside value to regular format
+ // when value is surrounded by double quotes, e.g. key="a \"value\"" => key=a "value"
+ UnescapeValueDoubleQuotes bool
+ // UnescapeValueCommentSymbols indicates to unescape comment symbols (\# and \;) inside value to regular format
+ // when value is NOT surrounded by any quotes.
+ // Note: UNSTABLE, behavior might change to only unescape inside double quotes but may noy necessary at all.
+ UnescapeValueCommentSymbols bool
+ // Some INI formats allow group blocks that store a block of raw content that doesn't otherwise
+ // conform to key/value pairs. Specify the names of those blocks here.
+ UnparseableSections []string
+}
+
+func LoadSources(opts LoadOptions, source interface{}, others ...interface{}) (_ *File, err error) {
sources := make([]dataSource, len(others)+1)
sources[0], err = parseDataSource(source)
if err != nil {
@@ -736,491 +161,34 @@ func Load(source interface{}, others ...interface{}) (_ *File, err error) {
return nil, err
}
}
- f := newFile(sources)
- return f, f.Reload()
+ f := newFile(sources, opts)
+ if err = f.Reload(); err != nil {
+ return nil, err
+ }
+ return f, nil
}
-// Empty returns an empty file object.
-func Empty() *File {
- // Ignore error here, we sure our data is good.
- f, _ := Load([]byte(""))
- return f
+// Load loads and parses from INI data sources.
+// Arguments can be mixed of file name with string type, or raw data in []byte.
+// It will return error if list contains nonexistent files.
+func Load(source interface{}, others ...interface{}) (*File, error) {
+ return LoadSources(LoadOptions{}, source, others...)
}
-// NewSection creates a new section.
-func (f *File) NewSection(name string) (*Section, error) {
- if len(name) == 0 {
- return nil, errors.New("error creating new section: empty section name")
- }
-
- if f.BlockMode {
- f.lock.Lock()
- defer f.lock.Unlock()
- }
-
- if inSlice(name, f.sectionList) {
- return f.sections[name], nil
- }
-
- f.sectionList = append(f.sectionList, name)
- f.sections[name] = newSection(f, name)
- return f.sections[name], nil
+// LooseLoad has exactly same functionality as Load function
+// except it ignores nonexistent files instead of returning error.
+func LooseLoad(source interface{}, others ...interface{}) (*File, error) {
+ return LoadSources(LoadOptions{Loose: true}, source, others...)
}
-// NewSections creates a list of sections.
-func (f *File) NewSections(names ...string) (err error) {
- for _, name := range names {
- if _, err = f.NewSection(name); err != nil {
- return err
- }
- }
- return nil
+// InsensitiveLoad has exactly same functionality as Load function
+// except it forces all section and key names to be lowercased.
+func InsensitiveLoad(source interface{}, others ...interface{}) (*File, error) {
+ return LoadSources(LoadOptions{Insensitive: true}, source, others...)
}
-// GetSection returns section by given name.
-func (f *File) GetSection(name string) (*Section, error) {
- if len(name) == 0 {
- name = DEFAULT_SECTION
- }
-
- if f.BlockMode {
- f.lock.RLock()
- defer f.lock.RUnlock()
- }
-
- sec := f.sections[name]
- if sec == nil {
- return nil, fmt.Errorf("error when getting section: section '%s' not exists", name)
- }
- return sec, nil
-}
-
-// Section assumes named section exists and returns a zero-value when not.
-func (f *File) Section(name string) *Section {
- sec, err := f.GetSection(name)
- if err != nil {
- // Note: It's OK here because the only possible error is empty section name,
- // but if it's empty, this piece of code won't be executed.
- sec, _ = f.NewSection(name)
- return sec
- }
- return sec
-}
-
-// Section returns list of Section.
-func (f *File) Sections() []*Section {
- sections := make([]*Section, len(f.sectionList))
- for i := range f.sectionList {
- sections[i] = f.Section(f.sectionList[i])
- }
- return sections
-}
-
-// SectionStrings returns list of section names.
-func (f *File) SectionStrings() []string {
- list := make([]string, len(f.sectionList))
- copy(list, f.sectionList)
- return list
-}
-
-// DeleteSection deletes a section.
-func (f *File) DeleteSection(name string) {
- if f.BlockMode {
- f.lock.Lock()
- defer f.lock.Unlock()
- }
-
- if len(name) == 0 {
- name = DEFAULT_SECTION
- }
-
- for i, s := range f.sectionList {
- if s == name {
- f.sectionList = append(f.sectionList[:i], f.sectionList[i+1:]...)
- delete(f.sections, name)
- return
- }
- }
-}
-
-func cutComment(str string) string {
- i := strings.Index(str, "#")
- if i == -1 {
- return str
- }
- return str[:i]
-}
-
-func checkMultipleLines(buf *bufio.Reader, line, val, valQuote string) (string, error) {
- isEnd := false
- for {
- next, err := buf.ReadString('\n')
- if err != nil {
- if err != io.EOF {
- return "", err
- }
- isEnd = true
- }
- pos := strings.LastIndex(next, valQuote)
- if pos > -1 {
- val += next[:pos]
- break
- }
- val += next
- if isEnd {
- return "", fmt.Errorf("error parsing line: missing closing key quote from '%s' to '%s'", line, next)
- }
- }
- return val, nil
-}
-
-func checkContinuationLines(buf *bufio.Reader, val string) (string, bool, error) {
- isEnd := false
- for {
- valLen := len(val)
- if valLen == 0 || val[valLen-1] != '\\' {
- break
- }
- val = val[:valLen-1]
-
- next, err := buf.ReadString('\n')
- if err != nil {
- if err != io.EOF {
- return "", isEnd, err
- }
- isEnd = true
- }
-
- next = strings.TrimSpace(next)
- if len(next) == 0 {
- break
- }
- val += next
- }
- return val, isEnd, nil
-}
-
-// parse parses data through an io.Reader.
-func (f *File) parse(reader io.Reader) error {
- buf := bufio.NewReader(reader)
-
- // Handle BOM-UTF8.
- // http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding
- mask, err := buf.Peek(3)
- if err == nil && len(mask) >= 3 && mask[0] == 239 && mask[1] == 187 && mask[2] == 191 {
- buf.Read(mask)
- }
-
- count := 1
- comments := ""
- isEnd := false
-
- section, err := f.NewSection(DEFAULT_SECTION)
- if err != nil {
- return err
- }
-
- for {
- line, err := buf.ReadString('\n')
- line = strings.TrimSpace(line)
- length := len(line)
-
- // Check error and ignore io.EOF just for a moment.
- if err != nil {
- if err != io.EOF {
- return fmt.Errorf("error reading next line: %v", err)
- }
- // The last line of file could be an empty line.
- if length == 0 {
- break
- }
- isEnd = true
- }
-
- // Skip empty lines.
- if length == 0 {
- continue
- }
-
- switch {
- case line[0] == '#' || line[0] == ';': // Comments.
- if len(comments) == 0 {
- comments = line
- } else {
- comments += LineBreak + line
- }
- continue
- case line[0] == '[' && line[length-1] == ']': // New sction.
- section, err = f.NewSection(strings.TrimSpace(line[1 : length-1]))
- if err != nil {
- return err
- }
-
- if len(comments) > 0 {
- section.Comment = comments
- comments = ""
- }
- // Reset counter.
- count = 1
- continue
- }
-
- // Other possibilities.
- var (
- i int
- keyQuote string
- kname string
- valQuote string
- val string
- )
-
- // Key name surrounded by quotes.
- if line[0] == '"' {
- if length > 6 && line[0:3] == `"""` {
- keyQuote = `"""`
- } else {
- keyQuote = `"`
- }
- } else if line[0] == '`' {
- keyQuote = "`"
- }
- if len(keyQuote) > 0 {
- qLen := len(keyQuote)
- pos := strings.Index(line[qLen:], keyQuote)
- if pos == -1 {
- return fmt.Errorf("error parsing line: missing closing key quote: %s", line)
- }
- pos = pos + qLen
- i = strings.IndexAny(line[pos:], "=:")
- if i < 0 {
- return fmt.Errorf("error parsing line: key-value delimiter not found: %s", line)
- } else if i == pos {
- return fmt.Errorf("error parsing line: key is empty: %s", line)
- }
- i = i + pos
- kname = line[qLen:pos] // Just keep spaces inside quotes.
- } else {
- i = strings.IndexAny(line, "=:")
- if i < 0 {
- return fmt.Errorf("error parsing line: key-value delimiter not found: %s", line)
- } else if i == 0 {
- return fmt.Errorf("error parsing line: key is empty: %s", line)
- }
- kname = strings.TrimSpace(line[0:i])
- }
-
- isAutoIncr := false
- // Auto increment.
- if kname == "-" {
- isAutoIncr = true
- kname = "#" + fmt.Sprint(count)
- count++
- }
-
- lineRight := strings.TrimSpace(line[i+1:])
- lineRightLength := len(lineRight)
- firstChar := ""
- if lineRightLength >= 2 {
- firstChar = lineRight[0:1]
- }
- if firstChar == "`" {
- valQuote = "`"
- } else if firstChar == `"` {
- if lineRightLength >= 3 && lineRight[0:3] == `"""` {
- valQuote = `"""`
- } else {
- valQuote = `"`
- }
- } else if firstChar == `'` {
- valQuote = `'`
- }
-
- if len(valQuote) > 0 {
- qLen := len(valQuote)
- pos := strings.LastIndex(lineRight[qLen:], valQuote)
- // For multiple-line value check.
- if pos == -1 {
- if valQuote == `"` || valQuote == `'` {
- return fmt.Errorf("error parsing line: single quote does not allow multiple-line value: %s", line)
- }
-
- val = lineRight[qLen:] + "\n"
- val, err = checkMultipleLines(buf, line, val, valQuote)
- if err != nil {
- return err
- }
- } else {
- val = lineRight[qLen : pos+qLen]
- }
- } else {
- val = strings.TrimSpace(cutComment(lineRight))
- val, isEnd, err = checkContinuationLines(buf, val)
- if err != nil {
- return err
- }
- }
-
- k, err := section.NewKey(kname, val)
- if err != nil {
- return err
- }
- k.isAutoIncr = isAutoIncr
- if len(comments) > 0 {
- k.Comment = comments
- comments = ""
- }
-
- if isEnd {
- break
- }
- }
- return nil
-}
-
-func (f *File) reload(s dataSource) error {
- r, err := s.ReadCloser()
- if err != nil {
- return err
- }
- defer r.Close()
-
- return f.parse(r)
-}
-
-// Reload reloads and parses all data sources.
-func (f *File) Reload() (err error) {
- for _, s := range f.dataSources {
- if err = f.reload(s); err != nil {
- return err
- }
- }
- return nil
-}
-
-// Append appends one or more data sources and reloads automatically.
-func (f *File) Append(source interface{}, others ...interface{}) error {
- ds, err := parseDataSource(source)
- if err != nil {
- return err
- }
- f.dataSources = append(f.dataSources, ds)
- for _, s := range others {
- ds, err = parseDataSource(s)
- if err != nil {
- return err
- }
- f.dataSources = append(f.dataSources, ds)
- }
- return f.Reload()
-}
-
-// WriteToIndent writes file content into io.Writer with given value indention.
-func (f *File) WriteToIndent(w io.Writer, indent string) (n int64, err error) {
- equalSign := "="
- if PrettyFormat {
- equalSign = " = "
- }
-
- // Use buffer to make sure target is safe until finish encoding.
- buf := bytes.NewBuffer(nil)
- for i, sname := range f.sectionList {
- sec := f.Section(sname)
- if len(sec.Comment) > 0 {
- if sec.Comment[0] != '#' && sec.Comment[0] != ';' {
- sec.Comment = "; " + sec.Comment
- }
- if _, err = buf.WriteString(sec.Comment + LineBreak); err != nil {
- return 0, err
- }
- }
-
- if i > 0 {
- if _, err = buf.WriteString("[" + sname + "]" + LineBreak); err != nil {
- return 0, err
- }
- } else {
- // Write nothing if default section is empty.
- if len(sec.keyList) == 0 {
- continue
- }
- }
-
- for _, kname := range sec.keyList {
- key := sec.Key(kname)
- if len(key.Comment) > 0 {
- if len(indent) > 0 && sname != DEFAULT_SECTION {
- buf.WriteString(indent)
- }
- if key.Comment[0] != '#' && key.Comment[0] != ';' {
- key.Comment = "; " + key.Comment
- }
- if _, err = buf.WriteString(key.Comment + LineBreak); err != nil {
- return 0, err
- }
- }
-
- if len(indent) > 0 && sname != DEFAULT_SECTION {
- buf.WriteString(indent)
- }
-
- switch {
- case key.isAutoIncr:
- kname = "-"
- case strings.Contains(kname, "`") || strings.Contains(kname, `"`):
- kname = `"""` + kname + `"""`
- case strings.Contains(kname, `=`) || strings.Contains(kname, `:`):
- kname = "`" + kname + "`"
- }
-
- val := key.value
- // In case key value contains "\n", "`" or "\"".
- if strings.Contains(val, "\n") || strings.Contains(val, "`") || strings.Contains(val, `"`) ||
- strings.Contains(val, "#") {
- val = `"""` + val + `"""`
- }
- if _, err = buf.WriteString(kname + equalSign + val + LineBreak); err != nil {
- return 0, err
- }
- }
-
- // Put a line between sections.
- if _, err = buf.WriteString(LineBreak); err != nil {
- return 0, err
- }
- }
-
- return buf.WriteTo(w)
-}
-
-// WriteTo writes file content into io.Writer.
-func (f *File) WriteTo(w io.Writer) (int64, error) {
- return f.WriteToIndent(w, "")
-}
-
-// SaveToIndent writes content to file system with given value indention.
-func (f *File) SaveToIndent(filename, indent string) error {
- // Note: Because we are truncating with os.Create,
- // so it's safer to save to a temporary file location and rename afte done.
- tmpPath := filename + "." + strconv.Itoa(time.Now().Nanosecond()) + ".tmp"
- defer os.Remove(tmpPath)
-
- fw, err := os.Create(tmpPath)
- if err != nil {
- return err
- }
-
- if _, err = f.WriteToIndent(fw, indent); err != nil {
- fw.Close()
- return err
- }
- fw.Close()
-
- // Remove old file and rename the new one.
- os.Remove(filename)
- return os.Rename(tmpPath, filename)
-}
-
-// SaveTo writes content to file system.
-func (f *File) SaveTo(filename string) error {
- return f.SaveToIndent(filename, "")
+// InsensitiveLoad has exactly same functionality as Load function
+// except it allows have shadow keys.
+func ShadowLoad(source interface{}, others ...interface{}) (*File, error) {
+ return LoadSources(LoadOptions{AllowShadows: true}, source, others...)
}
diff --git a/vendor/github.com/go-ini/ini/key.go b/vendor/github.com/go-ini/ini/key.go
new file mode 100644
index 000000000..7c8566a1b
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/key.go
@@ -0,0 +1,751 @@
+// Copyright 2014 Unknwon
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package ini
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "strconv"
+ "strings"
+ "time"
+)
+
+// Key represents a key under a section.
+type Key struct {
+ s *Section
+ Comment string
+ name string
+ value string
+ isAutoIncrement bool
+ isBooleanType bool
+
+ isShadow bool
+ shadows []*Key
+
+ nestedValues []string
+}
+
+// newKey simply return a key object with given values.
+func newKey(s *Section, name, val string) *Key {
+ return &Key{
+ s: s,
+ name: name,
+ value: val,
+ }
+}
+
+func (k *Key) addShadow(val string) error {
+ if k.isShadow {
+ return errors.New("cannot add shadow to another shadow key")
+ } else if k.isAutoIncrement || k.isBooleanType {
+ return errors.New("cannot add shadow to auto-increment or boolean key")
+ }
+
+ shadow := newKey(k.s, k.name, val)
+ shadow.isShadow = true
+ k.shadows = append(k.shadows, shadow)
+ return nil
+}
+
+// AddShadow adds a new shadow key to itself.
+func (k *Key) AddShadow(val string) error {
+ if !k.s.f.options.AllowShadows {
+ return errors.New("shadow key is not allowed")
+ }
+ return k.addShadow(val)
+}
+
+func (k *Key) addNestedValue(val string) error {
+ if k.isAutoIncrement || k.isBooleanType {
+ return errors.New("cannot add nested value to auto-increment or boolean key")
+ }
+
+ k.nestedValues = append(k.nestedValues, val)
+ return nil
+}
+
+func (k *Key) AddNestedValue(val string) error {
+ if !k.s.f.options.AllowNestedValues {
+ return errors.New("nested value is not allowed")
+ }
+ return k.addNestedValue(val)
+}
+
+// ValueMapper represents a mapping function for values, e.g. os.ExpandEnv
+type ValueMapper func(string) string
+
+// Name returns name of key.
+func (k *Key) Name() string {
+ return k.name
+}
+
+// Value returns raw value of key for performance purpose.
+func (k *Key) Value() string {
+ return k.value
+}
+
+// ValueWithShadows returns raw values of key and its shadows if any.
+func (k *Key) ValueWithShadows() []string {
+ if len(k.shadows) == 0 {
+ return []string{k.value}
+ }
+ vals := make([]string, len(k.shadows)+1)
+ vals[0] = k.value
+ for i := range k.shadows {
+ vals[i+1] = k.shadows[i].value
+ }
+ return vals
+}
+
+// NestedValues returns nested values stored in the key.
+// It is possible returned value is nil if no nested values stored in the key.
+func (k *Key) NestedValues() []string {
+ return k.nestedValues
+}
+
+// transformValue takes a raw value and transforms to its final string.
+func (k *Key) transformValue(val string) string {
+ if k.s.f.ValueMapper != nil {
+ val = k.s.f.ValueMapper(val)
+ }
+
+ // Fail-fast if no indicate char found for recursive value
+ if !strings.Contains(val, "%") {
+ return val
+ }
+ for i := 0; i < _DEPTH_VALUES; i++ {
+ vr := varPattern.FindString(val)
+ if len(vr) == 0 {
+ break
+ }
+
+ // Take off leading '%(' and trailing ')s'.
+ noption := strings.TrimLeft(vr, "%(")
+ noption = strings.TrimRight(noption, ")s")
+
+ // Search in the same section.
+ nk, err := k.s.GetKey(noption)
+ if err != nil || k == nk {
+ // Search again in default section.
+ nk, _ = k.s.f.Section("").GetKey(noption)
+ }
+
+ // Substitute by new value and take off leading '%(' and trailing ')s'.
+ val = strings.Replace(val, vr, nk.value, -1)
+ }
+ return val
+}
+
+// String returns string representation of value.
+func (k *Key) String() string {
+ return k.transformValue(k.value)
+}
+
+// Validate accepts a validate function which can
+// return modifed result as key value.
+func (k *Key) Validate(fn func(string) string) string {
+ return fn(k.String())
+}
+
+// parseBool returns the boolean value represented by the string.
+//
+// It accepts 1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On,
+// 0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off.
+// Any other value returns an error.
+func parseBool(str string) (value bool, err error) {
+ switch str {
+ case "1", "t", "T", "true", "TRUE", "True", "YES", "yes", "Yes", "y", "ON", "on", "On":
+ return true, nil
+ case "0", "f", "F", "false", "FALSE", "False", "NO", "no", "No", "n", "OFF", "off", "Off":
+ return false, nil
+ }
+ return false, fmt.Errorf("parsing \"%s\": invalid syntax", str)
+}
+
+// Bool returns bool type value.
+func (k *Key) Bool() (bool, error) {
+ return parseBool(k.String())
+}
+
+// Float64 returns float64 type value.
+func (k *Key) Float64() (float64, error) {
+ return strconv.ParseFloat(k.String(), 64)
+}
+
+// Int returns int type value.
+func (k *Key) Int() (int, error) {
+ return strconv.Atoi(k.String())
+}
+
+// Int64 returns int64 type value.
+func (k *Key) Int64() (int64, error) {
+ return strconv.ParseInt(k.String(), 10, 64)
+}
+
+// Uint returns uint type valued.
+func (k *Key) Uint() (uint, error) {
+ u, e := strconv.ParseUint(k.String(), 10, 64)
+ return uint(u), e
+}
+
+// Uint64 returns uint64 type value.
+func (k *Key) Uint64() (uint64, error) {
+ return strconv.ParseUint(k.String(), 10, 64)
+}
+
+// Duration returns time.Duration type value.
+func (k *Key) Duration() (time.Duration, error) {
+ return time.ParseDuration(k.String())
+}
+
+// TimeFormat parses with given format and returns time.Time type value.
+func (k *Key) TimeFormat(format string) (time.Time, error) {
+ return time.Parse(format, k.String())
+}
+
+// Time parses with RFC3339 format and returns time.Time type value.
+func (k *Key) Time() (time.Time, error) {
+ return k.TimeFormat(time.RFC3339)
+}
+
+// MustString returns default value if key value is empty.
+func (k *Key) MustString(defaultVal string) string {
+ val := k.String()
+ if len(val) == 0 {
+ k.value = defaultVal
+ return defaultVal
+ }
+ return val
+}
+
+// MustBool always returns value without error,
+// it returns false if error occurs.
+func (k *Key) MustBool(defaultVal ...bool) bool {
+ val, err := k.Bool()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatBool(defaultVal[0])
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustFloat64 always returns value without error,
+// it returns 0.0 if error occurs.
+func (k *Key) MustFloat64(defaultVal ...float64) float64 {
+ val, err := k.Float64()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatFloat(defaultVal[0], 'f', -1, 64)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustInt always returns value without error,
+// it returns 0 if error occurs.
+func (k *Key) MustInt(defaultVal ...int) int {
+ val, err := k.Int()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatInt(int64(defaultVal[0]), 10)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustInt64 always returns value without error,
+// it returns 0 if error occurs.
+func (k *Key) MustInt64(defaultVal ...int64) int64 {
+ val, err := k.Int64()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatInt(defaultVal[0], 10)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustUint always returns value without error,
+// it returns 0 if error occurs.
+func (k *Key) MustUint(defaultVal ...uint) uint {
+ val, err := k.Uint()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatUint(uint64(defaultVal[0]), 10)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustUint64 always returns value without error,
+// it returns 0 if error occurs.
+func (k *Key) MustUint64(defaultVal ...uint64) uint64 {
+ val, err := k.Uint64()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = strconv.FormatUint(defaultVal[0], 10)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustDuration always returns value without error,
+// it returns zero value if error occurs.
+func (k *Key) MustDuration(defaultVal ...time.Duration) time.Duration {
+ val, err := k.Duration()
+ if len(defaultVal) > 0 && err != nil {
+ k.value = defaultVal[0].String()
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustTimeFormat always parses with given format and returns value without error,
+// it returns zero value if error occurs.
+func (k *Key) MustTimeFormat(format string, defaultVal ...time.Time) time.Time {
+ val, err := k.TimeFormat(format)
+ if len(defaultVal) > 0 && err != nil {
+ k.value = defaultVal[0].Format(format)
+ return defaultVal[0]
+ }
+ return val
+}
+
+// MustTime always parses with RFC3339 format and returns value without error,
+// it returns zero value if error occurs.
+func (k *Key) MustTime(defaultVal ...time.Time) time.Time {
+ return k.MustTimeFormat(time.RFC3339, defaultVal...)
+}
+
+// In always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) In(defaultVal string, candidates []string) string {
+ val := k.String()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InFloat64 always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InFloat64(defaultVal float64, candidates []float64) float64 {
+ val := k.MustFloat64()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InInt always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InInt(defaultVal int, candidates []int) int {
+ val := k.MustInt()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InInt64 always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InInt64(defaultVal int64, candidates []int64) int64 {
+ val := k.MustInt64()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InUint always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InUint(defaultVal uint, candidates []uint) uint {
+ val := k.MustUint()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InUint64 always returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InUint64(defaultVal uint64, candidates []uint64) uint64 {
+ val := k.MustUint64()
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InTimeFormat always parses with given format and returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InTimeFormat(format string, defaultVal time.Time, candidates []time.Time) time.Time {
+ val := k.MustTimeFormat(format)
+ for _, cand := range candidates {
+ if val == cand {
+ return val
+ }
+ }
+ return defaultVal
+}
+
+// InTime always parses with RFC3339 format and returns value without error,
+// it returns default value if error occurs or doesn't fit into candidates.
+func (k *Key) InTime(defaultVal time.Time, candidates []time.Time) time.Time {
+ return k.InTimeFormat(time.RFC3339, defaultVal, candidates)
+}
+
+// RangeFloat64 checks if value is in given range inclusively,
+// and returns default value if it's not.
+func (k *Key) RangeFloat64(defaultVal, min, max float64) float64 {
+ val := k.MustFloat64()
+ if val < min || val > max {
+ return defaultVal
+ }
+ return val
+}
+
+// RangeInt checks if value is in given range inclusively,
+// and returns default value if it's not.
+func (k *Key) RangeInt(defaultVal, min, max int) int {
+ val := k.MustInt()
+ if val < min || val > max {
+ return defaultVal
+ }
+ return val
+}
+
+// RangeInt64 checks if value is in given range inclusively,
+// and returns default value if it's not.
+func (k *Key) RangeInt64(defaultVal, min, max int64) int64 {
+ val := k.MustInt64()
+ if val < min || val > max {
+ return defaultVal
+ }
+ return val
+}
+
+// RangeTimeFormat checks if value with given format is in given range inclusively,
+// and returns default value if it's not.
+func (k *Key) RangeTimeFormat(format string, defaultVal, min, max time.Time) time.Time {
+ val := k.MustTimeFormat(format)
+ if val.Unix() < min.Unix() || val.Unix() > max.Unix() {
+ return defaultVal
+ }
+ return val
+}
+
+// RangeTime checks if value with RFC3339 format is in given range inclusively,
+// and returns default value if it's not.
+func (k *Key) RangeTime(defaultVal, min, max time.Time) time.Time {
+ return k.RangeTimeFormat(time.RFC3339, defaultVal, min, max)
+}
+
+// Strings returns list of string divided by given delimiter.
+func (k *Key) Strings(delim string) []string {
+ str := k.String()
+ if len(str) == 0 {
+ return []string{}
+ }
+
+ runes := []rune(str)
+ vals := make([]string, 0, 2)
+ var buf bytes.Buffer
+ escape := false
+ idx := 0
+ for {
+ if escape {
+ escape = false
+ if runes[idx] != '\\' && !strings.HasPrefix(string(runes[idx:]), delim) {
+ buf.WriteRune('\\')
+ }
+ buf.WriteRune(runes[idx])
+ } else {
+ if runes[idx] == '\\' {
+ escape = true
+ } else if strings.HasPrefix(string(runes[idx:]), delim) {
+ idx += len(delim) - 1
+ vals = append(vals, strings.TrimSpace(buf.String()))
+ buf.Reset()
+ } else {
+ buf.WriteRune(runes[idx])
+ }
+ }
+ idx += 1
+ if idx == len(runes) {
+ break
+ }
+ }
+
+ if buf.Len() > 0 {
+ vals = append(vals, strings.TrimSpace(buf.String()))
+ }
+
+ return vals
+}
+
+// StringsWithShadows returns list of string divided by given delimiter.
+// Shadows will also be appended if any.
+func (k *Key) StringsWithShadows(delim string) []string {
+ vals := k.ValueWithShadows()
+ results := make([]string, 0, len(vals)*2)
+ for i := range vals {
+ if len(vals) == 0 {
+ continue
+ }
+
+ results = append(results, strings.Split(vals[i], delim)...)
+ }
+
+ for i := range results {
+ results[i] = k.transformValue(strings.TrimSpace(results[i]))
+ }
+ return results
+}
+
+// Float64s returns list of float64 divided by given delimiter. Any invalid input will be treated as zero value.
+func (k *Key) Float64s(delim string) []float64 {
+ vals, _ := k.parseFloat64s(k.Strings(delim), true, false)
+ return vals
+}
+
+// Ints returns list of int divided by given delimiter. Any invalid input will be treated as zero value.
+func (k *Key) Ints(delim string) []int {
+ vals, _ := k.parseInts(k.Strings(delim), true, false)
+ return vals
+}
+
+// Int64s returns list of int64 divided by given delimiter. Any invalid input will be treated as zero value.
+func (k *Key) Int64s(delim string) []int64 {
+ vals, _ := k.parseInt64s(k.Strings(delim), true, false)
+ return vals
+}
+
+// Uints returns list of uint divided by given delimiter. Any invalid input will be treated as zero value.
+func (k *Key) Uints(delim string) []uint {
+ vals, _ := k.parseUints(k.Strings(delim), true, false)
+ return vals
+}
+
+// Uint64s returns list of uint64 divided by given delimiter. Any invalid input will be treated as zero value.
+func (k *Key) Uint64s(delim string) []uint64 {
+ vals, _ := k.parseUint64s(k.Strings(delim), true, false)
+ return vals
+}
+
+// TimesFormat parses with given format and returns list of time.Time divided by given delimiter.
+// Any invalid input will be treated as zero value (0001-01-01 00:00:00 +0000 UTC).
+func (k *Key) TimesFormat(format, delim string) []time.Time {
+ vals, _ := k.parseTimesFormat(format, k.Strings(delim), true, false)
+ return vals
+}
+
+// Times parses with RFC3339 format and returns list of time.Time divided by given delimiter.
+// Any invalid input will be treated as zero value (0001-01-01 00:00:00 +0000 UTC).
+func (k *Key) Times(delim string) []time.Time {
+ return k.TimesFormat(time.RFC3339, delim)
+}
+
+// ValidFloat64s returns list of float64 divided by given delimiter. If some value is not float, then
+// it will not be included to result list.
+func (k *Key) ValidFloat64s(delim string) []float64 {
+ vals, _ := k.parseFloat64s(k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidInts returns list of int divided by given delimiter. If some value is not integer, then it will
+// not be included to result list.
+func (k *Key) ValidInts(delim string) []int {
+ vals, _ := k.parseInts(k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidInt64s returns list of int64 divided by given delimiter. If some value is not 64-bit integer,
+// then it will not be included to result list.
+func (k *Key) ValidInt64s(delim string) []int64 {
+ vals, _ := k.parseInt64s(k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidUints returns list of uint divided by given delimiter. If some value is not unsigned integer,
+// then it will not be included to result list.
+func (k *Key) ValidUints(delim string) []uint {
+ vals, _ := k.parseUints(k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidUint64s returns list of uint64 divided by given delimiter. If some value is not 64-bit unsigned
+// integer, then it will not be included to result list.
+func (k *Key) ValidUint64s(delim string) []uint64 {
+ vals, _ := k.parseUint64s(k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidTimesFormat parses with given format and returns list of time.Time divided by given delimiter.
+func (k *Key) ValidTimesFormat(format, delim string) []time.Time {
+ vals, _ := k.parseTimesFormat(format, k.Strings(delim), false, false)
+ return vals
+}
+
+// ValidTimes parses with RFC3339 format and returns list of time.Time divided by given delimiter.
+func (k *Key) ValidTimes(delim string) []time.Time {
+ return k.ValidTimesFormat(time.RFC3339, delim)
+}
+
+// StrictFloat64s returns list of float64 divided by given delimiter or error on first invalid input.
+func (k *Key) StrictFloat64s(delim string) ([]float64, error) {
+ return k.parseFloat64s(k.Strings(delim), false, true)
+}
+
+// StrictInts returns list of int divided by given delimiter or error on first invalid input.
+func (k *Key) StrictInts(delim string) ([]int, error) {
+ return k.parseInts(k.Strings(delim), false, true)
+}
+
+// StrictInt64s returns list of int64 divided by given delimiter or error on first invalid input.
+func (k *Key) StrictInt64s(delim string) ([]int64, error) {
+ return k.parseInt64s(k.Strings(delim), false, true)
+}
+
+// StrictUints returns list of uint divided by given delimiter or error on first invalid input.
+func (k *Key) StrictUints(delim string) ([]uint, error) {
+ return k.parseUints(k.Strings(delim), false, true)
+}
+
+// StrictUint64s returns list of uint64 divided by given delimiter or error on first invalid input.
+func (k *Key) StrictUint64s(delim string) ([]uint64, error) {
+ return k.parseUint64s(k.Strings(delim), false, true)
+}
+
+// StrictTimesFormat parses with given format and returns list of time.Time divided by given delimiter
+// or error on first invalid input.
+func (k *Key) StrictTimesFormat(format, delim string) ([]time.Time, error) {
+ return k.parseTimesFormat(format, k.Strings(delim), false, true)
+}
+
+// StrictTimes parses with RFC3339 format and returns list of time.Time divided by given delimiter
+// or error on first invalid input.
+func (k *Key) StrictTimes(delim string) ([]time.Time, error) {
+ return k.StrictTimesFormat(time.RFC3339, delim)
+}
+
+// parseFloat64s transforms strings to float64s.
+func (k *Key) parseFloat64s(strs []string, addInvalid, returnOnInvalid bool) ([]float64, error) {
+ vals := make([]float64, 0, len(strs))
+ for _, str := range strs {
+ val, err := strconv.ParseFloat(str, 64)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, val)
+ }
+ }
+ return vals, nil
+}
+
+// parseInts transforms strings to ints.
+func (k *Key) parseInts(strs []string, addInvalid, returnOnInvalid bool) ([]int, error) {
+ vals := make([]int, 0, len(strs))
+ for _, str := range strs {
+ val, err := strconv.Atoi(str)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, val)
+ }
+ }
+ return vals, nil
+}
+
+// parseInt64s transforms strings to int64s.
+func (k *Key) parseInt64s(strs []string, addInvalid, returnOnInvalid bool) ([]int64, error) {
+ vals := make([]int64, 0, len(strs))
+ for _, str := range strs {
+ val, err := strconv.ParseInt(str, 10, 64)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, val)
+ }
+ }
+ return vals, nil
+}
+
+// parseUints transforms strings to uints.
+func (k *Key) parseUints(strs []string, addInvalid, returnOnInvalid bool) ([]uint, error) {
+ vals := make([]uint, 0, len(strs))
+ for _, str := range strs {
+ val, err := strconv.ParseUint(str, 10, 0)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, uint(val))
+ }
+ }
+ return vals, nil
+}
+
+// parseUint64s transforms strings to uint64s.
+func (k *Key) parseUint64s(strs []string, addInvalid, returnOnInvalid bool) ([]uint64, error) {
+ vals := make([]uint64, 0, len(strs))
+ for _, str := range strs {
+ val, err := strconv.ParseUint(str, 10, 64)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, val)
+ }
+ }
+ return vals, nil
+}
+
+// parseTimesFormat transforms strings to times in given format.
+func (k *Key) parseTimesFormat(format string, strs []string, addInvalid, returnOnInvalid bool) ([]time.Time, error) {
+ vals := make([]time.Time, 0, len(strs))
+ for _, str := range strs {
+ val, err := time.Parse(format, str)
+ if err != nil && returnOnInvalid {
+ return nil, err
+ }
+ if err == nil || addInvalid {
+ vals = append(vals, val)
+ }
+ }
+ return vals, nil
+}
+
+// SetValue changes key value.
+func (k *Key) SetValue(v string) {
+ if k.s.f.BlockMode {
+ k.s.f.lock.Lock()
+ defer k.s.f.lock.Unlock()
+ }
+
+ k.value = v
+ k.s.keysHash[k.name] = v
+}
diff --git a/vendor/github.com/go-ini/ini/parser.go b/vendor/github.com/go-ini/ini/parser.go
new file mode 100644
index 000000000..db3af8f00
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/parser.go
@@ -0,0 +1,401 @@
+// Copyright 2015 Unknwon
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package ini
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "io"
+ "strconv"
+ "strings"
+ "unicode"
+)
+
+type tokenType int
+
+const (
+ _TOKEN_INVALID tokenType = iota
+ _TOKEN_COMMENT
+ _TOKEN_SECTION
+ _TOKEN_KEY
+)
+
+type parser struct {
+ buf *bufio.Reader
+ isEOF bool
+ count int
+ comment *bytes.Buffer
+}
+
+func newParser(r io.Reader) *parser {
+ return &parser{
+ buf: bufio.NewReader(r),
+ count: 1,
+ comment: &bytes.Buffer{},
+ }
+}
+
+// BOM handles header of UTF-8, UTF-16 LE and UTF-16 BE's BOM format.
+// http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding
+func (p *parser) BOM() error {
+ mask, err := p.buf.Peek(2)
+ if err != nil && err != io.EOF {
+ return err
+ } else if len(mask) < 2 {
+ return nil
+ }
+
+ switch {
+ case mask[0] == 254 && mask[1] == 255:
+ fallthrough
+ case mask[0] == 255 && mask[1] == 254:
+ p.buf.Read(mask)
+ case mask[0] == 239 && mask[1] == 187:
+ mask, err := p.buf.Peek(3)
+ if err != nil && err != io.EOF {
+ return err
+ } else if len(mask) < 3 {
+ return nil
+ }
+ if mask[2] == 191 {
+ p.buf.Read(mask)
+ }
+ }
+ return nil
+}
+
+func (p *parser) readUntil(delim byte) ([]byte, error) {
+ data, err := p.buf.ReadBytes(delim)
+ if err != nil {
+ if err == io.EOF {
+ p.isEOF = true
+ } else {
+ return nil, err
+ }
+ }
+ return data, nil
+}
+
+func cleanComment(in []byte) ([]byte, bool) {
+ i := bytes.IndexAny(in, "#;")
+ if i == -1 {
+ return nil, false
+ }
+ return in[i:], true
+}
+
+func readKeyName(in []byte) (string, int, error) {
+ line := string(in)
+
+ // Check if key name surrounded by quotes.
+ var keyQuote string
+ if line[0] == '"' {
+ if len(line) > 6 && string(line[0:3]) == `"""` {
+ keyQuote = `"""`
+ } else {
+ keyQuote = `"`
+ }
+ } else if line[0] == '`' {
+ keyQuote = "`"
+ }
+
+ // Get out key name
+ endIdx := -1
+ if len(keyQuote) > 0 {
+ startIdx := len(keyQuote)
+ // FIXME: fail case -> """"""name"""=value
+ pos := strings.Index(line[startIdx:], keyQuote)
+ if pos == -1 {
+ return "", -1, fmt.Errorf("missing closing key quote: %s", line)
+ }
+ pos += startIdx
+
+ // Find key-value delimiter
+ i := strings.IndexAny(line[pos+startIdx:], "=:")
+ if i < 0 {
+ return "", -1, ErrDelimiterNotFound{line}
+ }
+ endIdx = pos + i
+ return strings.TrimSpace(line[startIdx:pos]), endIdx + startIdx + 1, nil
+ }
+
+ endIdx = strings.IndexAny(line, "=:")
+ if endIdx < 0 {
+ return "", -1, ErrDelimiterNotFound{line}
+ }
+ return strings.TrimSpace(line[0:endIdx]), endIdx + 1, nil
+}
+
+func (p *parser) readMultilines(line, val, valQuote string) (string, error) {
+ for {
+ data, err := p.readUntil('\n')
+ if err != nil {
+ return "", err
+ }
+ next := string(data)
+
+ pos := strings.LastIndex(next, valQuote)
+ if pos > -1 {
+ val += next[:pos]
+
+ comment, has := cleanComment([]byte(next[pos:]))
+ if has {
+ p.comment.Write(bytes.TrimSpace(comment))
+ }
+ break
+ }
+ val += next
+ if p.isEOF {
+ return "", fmt.Errorf("missing closing key quote from '%s' to '%s'", line, next)
+ }
+ }
+ return val, nil
+}
+
+func (p *parser) readContinuationLines(val string) (string, error) {
+ for {
+ data, err := p.readUntil('\n')
+ if err != nil {
+ return "", err
+ }
+ next := strings.TrimSpace(string(data))
+
+ if len(next) == 0 {
+ break
+ }
+ val += next
+ if val[len(val)-1] != '\\' {
+ break
+ }
+ val = val[:len(val)-1]
+ }
+ return val, nil
+}
+
+// hasSurroundedQuote check if and only if the first and last characters
+// are quotes \" or \'.
+// It returns false if any other parts also contain same kind of quotes.
+func hasSurroundedQuote(in string, quote byte) bool {
+ return len(in) >= 2 && in[0] == quote && in[len(in)-1] == quote &&
+ strings.IndexByte(in[1:], quote) == len(in)-2
+}
+
+func (p *parser) readValue(in []byte,
+ ignoreContinuation, ignoreInlineComment, unescapeValueDoubleQuotes, unescapeValueCommentSymbols bool) (string, error) {
+
+ line := strings.TrimLeftFunc(string(in), unicode.IsSpace)
+ if len(line) == 0 {
+ return "", nil
+ }
+
+ var valQuote string
+ if len(line) > 3 && string(line[0:3]) == `"""` {
+ valQuote = `"""`
+ } else if line[0] == '`' {
+ valQuote = "`"
+ } else if unescapeValueDoubleQuotes && line[0] == '"' {
+ valQuote = `"`
+ }
+
+ if len(valQuote) > 0 {
+ startIdx := len(valQuote)
+ pos := strings.LastIndex(line[startIdx:], valQuote)
+ // Check for multi-line value
+ if pos == -1 {
+ return p.readMultilines(line, line[startIdx:], valQuote)
+ }
+
+ if unescapeValueDoubleQuotes && valQuote == `"` {
+ return strings.Replace(line[startIdx:pos+startIdx], `\"`, `"`, -1), nil
+ }
+ return line[startIdx : pos+startIdx], nil
+ }
+
+ // Won't be able to reach here if value only contains whitespace
+ line = strings.TrimSpace(line)
+
+ // Check continuation lines when desired
+ if !ignoreContinuation && line[len(line)-1] == '\\' {
+ return p.readContinuationLines(line[:len(line)-1])
+ }
+
+ // Check if ignore inline comment
+ if !ignoreInlineComment {
+ i := strings.IndexAny(line, "#;")
+ if i > -1 {
+ p.comment.WriteString(line[i:])
+ line = strings.TrimSpace(line[:i])
+ }
+ }
+
+ // Trim single and double quotes
+ if hasSurroundedQuote(line, '\'') ||
+ hasSurroundedQuote(line, '"') {
+ line = line[1 : len(line)-1]
+ } else if len(valQuote) == 0 && unescapeValueCommentSymbols {
+ if strings.Contains(line, `\;`) {
+ line = strings.Replace(line, `\;`, ";", -1)
+ }
+ if strings.Contains(line, `\#`) {
+ line = strings.Replace(line, `\#`, "#", -1)
+ }
+ }
+ return line, nil
+}
+
+// parse parses data through an io.Reader.
+func (f *File) parse(reader io.Reader) (err error) {
+ p := newParser(reader)
+ if err = p.BOM(); err != nil {
+ return fmt.Errorf("BOM: %v", err)
+ }
+
+ // Ignore error because default section name is never empty string.
+ name := DEFAULT_SECTION
+ if f.options.Insensitive {
+ name = strings.ToLower(DEFAULT_SECTION)
+ }
+ section, _ := f.NewSection(name)
+
+ // This "last" is not strictly equivalent to "previous one" if current key is not the first nested key
+ var isLastValueEmpty bool
+ var lastRegularKey *Key
+
+ var line []byte
+ var inUnparseableSection bool
+ for !p.isEOF {
+ line, err = p.readUntil('\n')
+ if err != nil {
+ return err
+ }
+
+ if f.options.AllowNestedValues &&
+ isLastValueEmpty && len(line) > 0 {
+ if line[0] == ' ' || line[0] == '\t' {
+ lastRegularKey.addNestedValue(string(bytes.TrimSpace(line)))
+ continue
+ }
+ }
+
+ line = bytes.TrimLeftFunc(line, unicode.IsSpace)
+ if len(line) == 0 {
+ continue
+ }
+
+ // Comments
+ if line[0] == '#' || line[0] == ';' {
+ // Note: we do not care ending line break,
+ // it is needed for adding second line,
+ // so just clean it once at the end when set to value.
+ p.comment.Write(line)
+ continue
+ }
+
+ // Section
+ if line[0] == '[' {
+ // Read to the next ']' (TODO: support quoted strings)
+ // TODO(unknwon): use LastIndexByte when stop supporting Go1.4
+ closeIdx := bytes.LastIndex(line, []byte("]"))
+ if closeIdx == -1 {
+ return fmt.Errorf("unclosed section: %s", line)
+ }
+
+ name := string(line[1:closeIdx])
+ section, err = f.NewSection(name)
+ if err != nil {
+ return err
+ }
+
+ comment, has := cleanComment(line[closeIdx+1:])
+ if has {
+ p.comment.Write(comment)
+ }
+
+ section.Comment = strings.TrimSpace(p.comment.String())
+
+ // Reset aotu-counter and comments
+ p.comment.Reset()
+ p.count = 1
+
+ inUnparseableSection = false
+ for i := range f.options.UnparseableSections {
+ if f.options.UnparseableSections[i] == name ||
+ (f.options.Insensitive && strings.ToLower(f.options.UnparseableSections[i]) == strings.ToLower(name)) {
+ inUnparseableSection = true
+ continue
+ }
+ }
+ continue
+ }
+
+ if inUnparseableSection {
+ section.isRawSection = true
+ section.rawBody += string(line)
+ continue
+ }
+
+ kname, offset, err := readKeyName(line)
+ if err != nil {
+ // Treat as boolean key when desired, and whole line is key name.
+ if IsErrDelimiterNotFound(err) && f.options.AllowBooleanKeys {
+ kname, err := p.readValue(line,
+ f.options.IgnoreContinuation,
+ f.options.IgnoreInlineComment,
+ f.options.UnescapeValueDoubleQuotes,
+ f.options.UnescapeValueCommentSymbols)
+ if err != nil {
+ return err
+ }
+ key, err := section.NewBooleanKey(kname)
+ if err != nil {
+ return err
+ }
+ key.Comment = strings.TrimSpace(p.comment.String())
+ p.comment.Reset()
+ continue
+ }
+ return err
+ }
+
+ // Auto increment.
+ isAutoIncr := false
+ if kname == "-" {
+ isAutoIncr = true
+ kname = "#" + strconv.Itoa(p.count)
+ p.count++
+ }
+
+ value, err := p.readValue(line[offset:],
+ f.options.IgnoreContinuation,
+ f.options.IgnoreInlineComment,
+ f.options.UnescapeValueDoubleQuotes,
+ f.options.UnescapeValueCommentSymbols)
+ if err != nil {
+ return err
+ }
+ isLastValueEmpty = len(value) == 0
+
+ key, err := section.NewKey(kname, value)
+ if err != nil {
+ return err
+ }
+ key.isAutoIncrement = isAutoIncr
+ key.Comment = strings.TrimSpace(p.comment.String())
+ p.comment.Reset()
+ lastRegularKey = key
+ }
+ return nil
+}
diff --git a/vendor/github.com/go-ini/ini/section.go b/vendor/github.com/go-ini/ini/section.go
new file mode 100644
index 000000000..d8a402619
--- /dev/null
+++ b/vendor/github.com/go-ini/ini/section.go
@@ -0,0 +1,257 @@
+// Copyright 2014 Unknwon
+//
+// Licensed under the Apache License, Version 2.0 (the "License"): you may
+// not use this file except in compliance with the License. You may obtain
+// a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations
+// under the License.
+
+package ini
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+)
+
+// Section represents a config section.
+type Section struct {
+ f *File
+ Comment string
+ name string
+ keys map[string]*Key
+ keyList []string
+ keysHash map[string]string
+
+ isRawSection bool
+ rawBody string
+}
+
+func newSection(f *File, name string) *Section {
+ return &Section{
+ f: f,
+ name: name,
+ keys: make(map[string]*Key),
+ keyList: make([]string, 0, 10),
+ keysHash: make(map[string]string),
+ }
+}
+
+// Name returns name of Section.
+func (s *Section) Name() string {
+ return s.name
+}
+
+// Body returns rawBody of Section if the section was marked as unparseable.
+// It still follows the other rules of the INI format surrounding leading/trailing whitespace.
+func (s *Section) Body() string {
+ return strings.TrimSpace(s.rawBody)
+}
+
+// SetBody updates body content only if section is raw.
+func (s *Section) SetBody(body string) {
+ if !s.isRawSection {
+ return
+ }
+ s.rawBody = body
+}
+
+// NewKey creates a new key to given section.
+func (s *Section) NewKey(name, val string) (*Key, error) {
+ if len(name) == 0 {
+ return nil, errors.New("error creating new key: empty key name")
+ } else if s.f.options.Insensitive {
+ name = strings.ToLower(name)
+ }
+
+ if s.f.BlockMode {
+ s.f.lock.Lock()
+ defer s.f.lock.Unlock()
+ }
+
+ if inSlice(name, s.keyList) {
+ if s.f.options.AllowShadows {
+ if err := s.keys[name].addShadow(val); err != nil {
+ return nil, err
+ }
+ } else {
+ s.keys[name].value = val
+ }
+ return s.keys[name], nil
+ }
+
+ s.keyList = append(s.keyList, name)
+ s.keys[name] = newKey(s, name, val)
+ s.keysHash[name] = val
+ return s.keys[name], nil
+}
+
+// NewBooleanKey creates a new boolean type key to given section.
+func (s *Section) NewBooleanKey(name string) (*Key, error) {
+ key, err := s.NewKey(name, "true")
+ if err != nil {
+ return nil, err
+ }
+
+ key.isBooleanType = true
+ return key, nil
+}
+
+// GetKey returns key in section by given name.
+func (s *Section) GetKey(name string) (*Key, error) {
+ // FIXME: change to section level lock?
+ if s.f.BlockMode {
+ s.f.lock.RLock()
+ }
+ if s.f.options.Insensitive {
+ name = strings.ToLower(name)
+ }
+ key := s.keys[name]
+ if s.f.BlockMode {
+ s.f.lock.RUnlock()
+ }
+
+ if key == nil {
+ // Check if it is a child-section.
+ sname := s.name
+ for {
+ if i := strings.LastIndex(sname, "."); i > -1 {
+ sname = sname[:i]
+ sec, err := s.f.GetSection(sname)
+ if err != nil {
+ continue
+ }
+ return sec.GetKey(name)
+ } else {
+ break
+ }
+ }
+ return nil, fmt.Errorf("error when getting key of section '%s': key '%s' not exists", s.name, name)
+ }
+ return key, nil
+}
+
+// HasKey returns true if section contains a key with given name.
+func (s *Section) HasKey(name string) bool {
+ key, _ := s.GetKey(name)
+ return key != nil
+}
+
+// Haskey is a backwards-compatible name for HasKey.
+// TODO: delete me in v2
+func (s *Section) Haskey(name string) bool {
+ return s.HasKey(name)
+}
+
+// HasValue returns true if section contains given raw value.
+func (s *Section) HasValue(value string) bool {
+ if s.f.BlockMode {
+ s.f.lock.RLock()
+ defer s.f.lock.RUnlock()
+ }
+
+ for _, k := range s.keys {
+ if value == k.value {
+ return true
+ }
+ }
+ return false
+}
+
+// Key assumes named Key exists in section and returns a zero-value when not.
+func (s *Section) Key(name string) *Key {
+ key, err := s.GetKey(name)
+ if err != nil {
+ // It's OK here because the only possible error is empty key name,
+ // but if it's empty, this piece of code won't be executed.
+ key, _ = s.NewKey(name, "")
+ return key
+ }
+ return key
+}
+
+// Keys returns list of keys of section.
+func (s *Section) Keys() []*Key {
+ keys := make([]*Key, len(s.keyList))
+ for i := range s.keyList {
+ keys[i] = s.Key(s.keyList[i])
+ }
+ return keys
+}
+
+// ParentKeys returns list of keys of parent section.
+func (s *Section) ParentKeys() []*Key {
+ var parentKeys []*Key
+ sname := s.name
+ for {
+ if i := strings.LastIndex(sname, "."); i > -1 {
+ sname = sname[:i]
+ sec, err := s.f.GetSection(sname)
+ if err != nil {
+ continue
+ }
+ parentKeys = append(parentKeys, sec.Keys()...)
+ } else {
+ break
+ }
+
+ }
+ return parentKeys
+}
+
+// KeyStrings returns list of key names of section.
+func (s *Section) KeyStrings() []string {
+ list := make([]string, len(s.keyList))
+ copy(list, s.keyList)
+ return list
+}
+
+// KeysHash returns keys hash consisting of names and values.
+func (s *Section) KeysHash() map[string]string {
+ if s.f.BlockMode {
+ s.f.lock.RLock()
+ defer s.f.lock.RUnlock()
+ }
+
+ hash := map[string]string{}
+ for key, value := range s.keysHash {
+ hash[key] = value
+ }
+ return hash
+}
+
+// DeleteKey deletes a key from section.
+func (s *Section) DeleteKey(name string) {
+ if s.f.BlockMode {
+ s.f.lock.Lock()
+ defer s.f.lock.Unlock()
+ }
+
+ for i, k := range s.keyList {
+ if k == name {
+ s.keyList = append(s.keyList[:i], s.keyList[i+1:]...)
+ delete(s.keys, name)
+ return
+ }
+ }
+}
+
+// ChildSections returns a list of child sections of current section.
+// For example, "[parent.child1]" and "[parent.child12]" are child sections
+// of section "[parent]".
+func (s *Section) ChildSections() []*Section {
+ prefix := s.name + "."
+ children := make([]*Section, 0, 3)
+ for _, name := range s.f.sectionList {
+ if strings.HasPrefix(name, prefix) {
+ children = append(children, s.f.sections[name])
+ }
+ }
+ return children
+}
diff --git a/vendor/github.com/go-ini/ini/struct.go b/vendor/github.com/go-ini/ini/struct.go
index c11843710..9719dc698 100644
--- a/vendor/github.com/go-ini/ini/struct.go
+++ b/vendor/github.com/go-ini/ini/struct.go
@@ -19,6 +19,7 @@ import (
"errors"
"fmt"
"reflect"
+ "strings"
"time"
"unicode"
)
@@ -76,10 +77,80 @@ func parseDelim(actual string) string {
var reflectTime = reflect.TypeOf(time.Now()).Kind()
+// setSliceWithProperType sets proper values to slice based on its type.
+func setSliceWithProperType(key *Key, field reflect.Value, delim string, allowShadow, isStrict bool) error {
+ var strs []string
+ if allowShadow {
+ strs = key.StringsWithShadows(delim)
+ } else {
+ strs = key.Strings(delim)
+ }
+
+ numVals := len(strs)
+ if numVals == 0 {
+ return nil
+ }
+
+ var vals interface{}
+ var err error
+
+ sliceOf := field.Type().Elem().Kind()
+ switch sliceOf {
+ case reflect.String:
+ vals = strs
+ case reflect.Int:
+ vals, err = key.parseInts(strs, true, false)
+ case reflect.Int64:
+ vals, err = key.parseInt64s(strs, true, false)
+ case reflect.Uint:
+ vals, err = key.parseUints(strs, true, false)
+ case reflect.Uint64:
+ vals, err = key.parseUint64s(strs, true, false)
+ case reflect.Float64:
+ vals, err = key.parseFloat64s(strs, true, false)
+ case reflectTime:
+ vals, err = key.parseTimesFormat(time.RFC3339, strs, true, false)
+ default:
+ return fmt.Errorf("unsupported type '[]%s'", sliceOf)
+ }
+ if err != nil && isStrict {
+ return err
+ }
+
+ slice := reflect.MakeSlice(field.Type(), numVals, numVals)
+ for i := 0; i < numVals; i++ {
+ switch sliceOf {
+ case reflect.String:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]string)[i]))
+ case reflect.Int:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]int)[i]))
+ case reflect.Int64:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]int64)[i]))
+ case reflect.Uint:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]uint)[i]))
+ case reflect.Uint64:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]uint64)[i]))
+ case reflect.Float64:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]float64)[i]))
+ case reflectTime:
+ slice.Index(i).Set(reflect.ValueOf(vals.([]time.Time)[i]))
+ }
+ }
+ field.Set(slice)
+ return nil
+}
+
+func wrapStrictError(err error, isStrict bool) error {
+ if isStrict {
+ return err
+ }
+ return nil
+}
+
// setWithProperType sets proper value to field based on its type,
// but it does not return error for failing parsing,
// because we want to use default value that is already assigned to strcut.
-func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error {
+func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string, allowShadow, isStrict bool) error {
switch t.Kind() {
case reflect.String:
if len(key.String()) == 0 {
@@ -89,78 +160,70 @@ func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim stri
case reflect.Bool:
boolVal, err := key.Bool()
if err != nil {
- return nil
+ return wrapStrictError(err, isStrict)
}
field.SetBool(boolVal)
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
durationVal, err := key.Duration()
- if err == nil {
+ // Skip zero value
+ if err == nil && int64(durationVal) > 0 {
field.Set(reflect.ValueOf(durationVal))
return nil
}
intVal, err := key.Int64()
if err != nil {
- return nil
+ return wrapStrictError(err, isStrict)
}
field.SetInt(intVal)
// byte is an alias for uint8, so supporting uint8 breaks support for byte
case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:
durationVal, err := key.Duration()
- if err == nil {
+ // Skip zero value
+ if err == nil && int(durationVal) > 0 {
field.Set(reflect.ValueOf(durationVal))
return nil
}
uintVal, err := key.Uint64()
if err != nil {
- return nil
+ return wrapStrictError(err, isStrict)
}
field.SetUint(uintVal)
- case reflect.Float64:
+ case reflect.Float32, reflect.Float64:
floatVal, err := key.Float64()
if err != nil {
- return nil
+ return wrapStrictError(err, isStrict)
}
field.SetFloat(floatVal)
case reflectTime:
timeVal, err := key.Time()
if err != nil {
- return nil
+ return wrapStrictError(err, isStrict)
}
field.Set(reflect.ValueOf(timeVal))
case reflect.Slice:
- vals := key.Strings(delim)
- numVals := len(vals)
- if numVals == 0 {
- return nil
- }
-
- sliceOf := field.Type().Elem().Kind()
-
- var times []time.Time
- if sliceOf == reflectTime {
- times = key.Times(delim)
- }
-
- slice := reflect.MakeSlice(field.Type(), numVals, numVals)
- for i := 0; i < numVals; i++ {
- switch sliceOf {
- case reflectTime:
- slice.Index(i).Set(reflect.ValueOf(times[i]))
- default:
- slice.Index(i).Set(reflect.ValueOf(vals[i]))
- }
- }
- field.Set(slice)
+ return setSliceWithProperType(key, field, delim, allowShadow, isStrict)
default:
return fmt.Errorf("unsupported type '%s'", t)
}
return nil
}
-func (s *Section) mapTo(val reflect.Value) error {
+func parseTagOptions(tag string) (rawName string, omitEmpty bool, allowShadow bool) {
+ opts := strings.SplitN(tag, ",", 3)
+ rawName = opts[0]
+ if len(opts) > 1 {
+ omitEmpty = opts[1] == "omitempty"
+ }
+ if len(opts) > 2 {
+ allowShadow = opts[2] == "allowshadow"
+ }
+ return rawName, omitEmpty, allowShadow
+}
+
+func (s *Section) mapTo(val reflect.Value, isStrict bool) error {
if val.Kind() == reflect.Ptr {
val = val.Elem()
}
@@ -175,7 +238,8 @@ func (s *Section) mapTo(val reflect.Value) error {
continue
}
- fieldName := s.parseFieldName(tpField.Name, tag)
+ rawName, _, allowShadow := parseTagOptions(tag)
+ fieldName := s.parseFieldName(tpField.Name, rawName)
if len(fieldName) == 0 || !field.CanSet() {
continue
}
@@ -188,7 +252,7 @@ func (s *Section) mapTo(val reflect.Value) error {
if isAnonymous || isStruct {
if sec, err := s.f.GetSection(fieldName); err == nil {
- if err = sec.mapTo(field); err != nil {
+ if err = sec.mapTo(field, isStrict); err != nil {
return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
}
continue
@@ -196,7 +260,8 @@ func (s *Section) mapTo(val reflect.Value) error {
}
if key, err := s.GetKey(fieldName); err == nil {
- if err = setWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil {
+ delim := parseDelim(tpField.Tag.Get("delim"))
+ if err = setWithProperType(tpField.Type, key, field, delim, allowShadow, isStrict); err != nil {
return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
}
}
@@ -215,7 +280,22 @@ func (s *Section) MapTo(v interface{}) error {
return errors.New("cannot map to non-pointer struct")
}
- return s.mapTo(val)
+ return s.mapTo(val, false)
+}
+
+// MapTo maps section to given struct in strict mode,
+// which returns all possible error including value parsing error.
+func (s *Section) StrictMapTo(v interface{}) error {
+ typ := reflect.TypeOf(v)
+ val := reflect.ValueOf(v)
+ if typ.Kind() == reflect.Ptr {
+ typ = typ.Elem()
+ val = val.Elem()
+ } else {
+ return errors.New("cannot map to non-pointer struct")
+ }
+
+ return s.mapTo(val, true)
}
// MapTo maps file to given struct.
@@ -223,6 +303,12 @@ func (f *File) MapTo(v interface{}) error {
return f.Section("").MapTo(v)
}
+// MapTo maps file to given struct in strict mode,
+// which returns all possible error including value parsing error.
+func (f *File) StrictMapTo(v interface{}) error {
+ return f.Section("").StrictMapTo(v)
+}
+
// MapTo maps data sources to given struct with name mapper.
func MapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error {
cfg, err := Load(source, others...)
@@ -233,45 +319,104 @@ func MapToWithMapper(v interface{}, mapper NameMapper, source interface{}, other
return cfg.MapTo(v)
}
+// StrictMapToWithMapper maps data sources to given struct with name mapper in strict mode,
+// which returns all possible error including value parsing error.
+func StrictMapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error {
+ cfg, err := Load(source, others...)
+ if err != nil {
+ return err
+ }
+ cfg.NameMapper = mapper
+ return cfg.StrictMapTo(v)
+}
+
// MapTo maps data sources to given struct.
func MapTo(v, source interface{}, others ...interface{}) error {
return MapToWithMapper(v, nil, source, others...)
}
-// reflectWithProperType does the opposite thing with setWithProperType.
+// StrictMapTo maps data sources to given struct in strict mode,
+// which returns all possible error including value parsing error.
+func StrictMapTo(v, source interface{}, others ...interface{}) error {
+ return StrictMapToWithMapper(v, nil, source, others...)
+}
+
+// reflectSliceWithProperType does the opposite thing as setSliceWithProperType.
+func reflectSliceWithProperType(key *Key, field reflect.Value, delim string) error {
+ slice := field.Slice(0, field.Len())
+ if field.Len() == 0 {
+ return nil
+ }
+
+ var buf bytes.Buffer
+ sliceOf := field.Type().Elem().Kind()
+ for i := 0; i < field.Len(); i++ {
+ switch sliceOf {
+ case reflect.String:
+ buf.WriteString(slice.Index(i).String())
+ case reflect.Int, reflect.Int64:
+ buf.WriteString(fmt.Sprint(slice.Index(i).Int()))
+ case reflect.Uint, reflect.Uint64:
+ buf.WriteString(fmt.Sprint(slice.Index(i).Uint()))
+ case reflect.Float64:
+ buf.WriteString(fmt.Sprint(slice.Index(i).Float()))
+ case reflectTime:
+ buf.WriteString(slice.Index(i).Interface().(time.Time).Format(time.RFC3339))
+ default:
+ return fmt.Errorf("unsupported type '[]%s'", sliceOf)
+ }
+ buf.WriteString(delim)
+ }
+ key.SetValue(buf.String()[:buf.Len()-1])
+ return nil
+}
+
+// reflectWithProperType does the opposite thing as setWithProperType.
func reflectWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error {
switch t.Kind() {
case reflect.String:
key.SetValue(field.String())
- case reflect.Bool,
- reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
- reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
- reflect.Float64,
- reflectTime:
- key.SetValue(fmt.Sprint(field))
+ case reflect.Bool:
+ key.SetValue(fmt.Sprint(field.Bool()))
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ key.SetValue(fmt.Sprint(field.Int()))
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ key.SetValue(fmt.Sprint(field.Uint()))
+ case reflect.Float32, reflect.Float64:
+ key.SetValue(fmt.Sprint(field.Float()))
+ case reflectTime:
+ key.SetValue(fmt.Sprint(field.Interface().(time.Time).Format(time.RFC3339)))
case reflect.Slice:
- vals := field.Slice(0, field.Len())
- if field.Len() == 0 {
- return nil
- }
-
- var buf bytes.Buffer
- isTime := fmt.Sprint(field.Type()) == "[]time.Time"
- for i := 0; i < field.Len(); i++ {
- if isTime {
- buf.WriteString(vals.Index(i).Interface().(time.Time).Format(time.RFC3339))
- } else {
- buf.WriteString(fmt.Sprint(vals.Index(i)))
- }
- buf.WriteString(delim)
- }
- key.SetValue(buf.String()[:buf.Len()-1])
+ return reflectSliceWithProperType(key, field, delim)
default:
return fmt.Errorf("unsupported type '%s'", t)
}
return nil
}
+// CR: copied from encoding/json/encode.go with modifications of time.Time support.
+// TODO: add more test coverage.
+func isEmptyValue(v reflect.Value) bool {
+ switch v.Kind() {
+ case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
+ return v.Len() == 0
+ case reflect.Bool:
+ return !v.Bool()
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return v.Int() == 0
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ return v.Uint() == 0
+ case reflect.Float32, reflect.Float64:
+ return v.Float() == 0
+ case reflect.Interface, reflect.Ptr:
+ return v.IsNil()
+ case reflectTime:
+ t, ok := v.Interface().(time.Time)
+ return ok && t.IsZero()
+ }
+ return false
+}
+
func (s *Section) reflectFrom(val reflect.Value) error {
if val.Kind() == reflect.Ptr {
val = val.Elem()
@@ -287,21 +432,32 @@ func (s *Section) reflectFrom(val reflect.Value) error {
continue
}
- fieldName := s.parseFieldName(tpField.Name, tag)
+ opts := strings.SplitN(tag, ",", 2)
+ if len(opts) == 2 && opts[1] == "omitempty" && isEmptyValue(field) {
+ continue
+ }
+
+ fieldName := s.parseFieldName(tpField.Name, opts[0])
if len(fieldName) == 0 || !field.CanSet() {
continue
}
if (tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous) ||
- (tpField.Type.Kind() == reflect.Struct) {
+ (tpField.Type.Kind() == reflect.Struct && tpField.Type.Name() != "Time") {
// Note: The only error here is section doesn't exist.
sec, err := s.f.GetSection(fieldName)
if err != nil {
// Note: fieldName can never be empty here, ignore error.
sec, _ = s.f.NewSection(fieldName)
}
+
+ // Add comment from comment tag
+ if len(sec.Comment) == 0 {
+ sec.Comment = tpField.Tag.Get("comment")
+ }
+
if err = sec.reflectFrom(field); err != nil {
- return fmt.Errorf("error reflecting field(%s): %v", fieldName, err)
+ return fmt.Errorf("error reflecting field (%s): %v", fieldName, err)
}
continue
}
@@ -311,8 +467,14 @@ func (s *Section) reflectFrom(val reflect.Value) error {
if err != nil {
key, _ = s.NewKey(fieldName, "")
}
+
+ // Add comment from comment tag
+ if len(key.Comment) == 0 {
+ key.Comment = tpField.Tag.Get("comment")
+ }
+
if err = reflectWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil {
- return fmt.Errorf("error reflecting field(%s): %v", fieldName, err)
+ return fmt.Errorf("error reflecting field (%s): %v", fieldName, err)
}
}
diff --git a/vendor/github.com/google/uuid/.travis.yml b/vendor/github.com/google/uuid/.travis.yml
deleted file mode 100644
index d8156a60b..000000000
--- a/vendor/github.com/google/uuid/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: go
-
-go:
- - 1.4.3
- - 1.5.3
- - tip
-
-script:
- - go test -v ./...
diff --git a/vendor/github.com/google/uuid/dce.go b/vendor/github.com/google/uuid/dce.go
index a6479dbae..fa820b9d3 100644
--- a/vendor/github.com/google/uuid/dce.go
+++ b/vendor/github.com/google/uuid/dce.go
@@ -42,7 +42,7 @@ func NewDCESecurity(domain Domain, id uint32) (UUID, error) {
// NewDCEPerson returns a DCE Security (Version 2) UUID in the person
// domain with the id returned by os.Getuid.
//
-// NewDCEPerson(Person, uint32(os.Getuid()))
+// NewDCESecurity(Person, uint32(os.Getuid()))
func NewDCEPerson() (UUID, error) {
return NewDCESecurity(Person, uint32(os.Getuid()))
}
@@ -50,7 +50,7 @@ func NewDCEPerson() (UUID, error) {
// NewDCEGroup returns a DCE Security (Version 2) UUID in the group
// domain with the id returned by os.Getgid.
//
-// NewDCEGroup(Group, uint32(os.Getgid()))
+// NewDCESecurity(Group, uint32(os.Getgid()))
func NewDCEGroup() (UUID, error) {
return NewDCESecurity(Group, uint32(os.Getgid()))
}
diff --git a/vendor/github.com/google/uuid/hash.go b/vendor/github.com/google/uuid/hash.go
index 4fc5a77df..b17461631 100644
--- a/vendor/github.com/google/uuid/hash.go
+++ b/vendor/github.com/google/uuid/hash.go
@@ -27,7 +27,7 @@ var (
func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID {
h.Reset()
h.Write(space[:])
- h.Write([]byte(data))
+ h.Write(data)
s := h.Sum(nil)
var uuid UUID
copy(uuid[:], s)
diff --git a/vendor/github.com/google/uuid/json_test.go b/vendor/github.com/google/uuid/json_test.go
deleted file mode 100644
index 245f91edf..000000000
--- a/vendor/github.com/google/uuid/json_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "encoding/json"
- "reflect"
- "testing"
-)
-
-var testUUID = Must(Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479"))
-
-func TestJSON(t *testing.T) {
- type S struct {
- ID1 UUID
- ID2 UUID
- }
- s1 := S{ID1: testUUID}
- data, err := json.Marshal(&s1)
- if err != nil {
- t.Fatal(err)
- }
- var s2 S
- if err := json.Unmarshal(data, &s2); err != nil {
- t.Fatal(err)
- }
- if !reflect.DeepEqual(&s1, &s2) {
- t.Errorf("got %#v, want %#v", s2, s1)
- }
-}
-
-func BenchmarkUUID_MarshalJSON(b *testing.B) {
- x := &struct {
- UUID UUID `json:"uuid"`
- }{}
- var err error
- x.UUID, err = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
- if err != nil {
- b.Fatal(err)
- }
- for i := 0; i < b.N; i++ {
- js, err := json.Marshal(x)
- if err != nil {
- b.Fatalf("marshal json: %#v (%v)", js, err)
- }
- }
-}
-
-func BenchmarkUUID_UnmarshalJSON(b *testing.B) {
- js := []byte(`{"uuid":"f47ac10b-58cc-0372-8567-0e02b2c3d479"}`)
- var x *struct {
- UUID UUID `json:"uuid"`
- }
- for i := 0; i < b.N; i++ {
- err := json.Unmarshal(js, &x)
- if err != nil {
- b.Fatalf("marshal json: %#v (%v)", js, err)
- }
- }
-}
diff --git a/vendor/github.com/google/uuid/node.go b/vendor/github.com/google/uuid/node.go
index 5f0156a2e..384f07d02 100644
--- a/vendor/github.com/google/uuid/node.go
+++ b/vendor/github.com/google/uuid/node.go
@@ -5,16 +5,14 @@
package uuid
import (
- "net"
"sync"
)
var (
- nodeMu sync.Mutex
- interfaces []net.Interface // cached list of interfaces
- ifname string // name of interface being used
- nodeID [6]byte // hardware for version 1 UUIDs
- zeroID [6]byte // nodeID with only 0's
+ nodeMu sync.Mutex
+ ifname string // name of interface being used
+ nodeID [6]byte // hardware for version 1 UUIDs
+ zeroID [6]byte // nodeID with only 0's
)
// NodeInterface returns the name of the interface from which the NodeID was
@@ -39,20 +37,12 @@ func SetNodeInterface(name string) bool {
}
func setNodeInterface(name string) bool {
- if interfaces == nil {
- var err error
- interfaces, err = net.Interfaces()
- if err != nil && name != "" {
- return false
- }
- }
- for _, ifs := range interfaces {
- if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) {
- copy(nodeID[:], ifs.HardwareAddr)
- ifname = ifs.Name
- return true
- }
+ iname, addr := getHardwareInterface(name) // null implementation for js
+ if iname != "" && addr != nil {
+ ifname = iname
+ copy(nodeID[:], addr)
+ return true
}
// We found no interfaces with a valid hardware address. If name
@@ -94,9 +84,6 @@ func SetNodeID(id []byte) bool {
// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is
// not valid. The NodeID is only well defined for version 1 and 2 UUIDs.
func (uuid UUID) NodeID() []byte {
- if len(uuid) != 16 {
- return nil
- }
var node [6]byte
copy(node[:], uuid[10:])
return node[:]
diff --git a/vendor/github.com/google/uuid/node_js.go b/vendor/github.com/google/uuid/node_js.go
new file mode 100644
index 000000000..24b78edc9
--- /dev/null
+++ b/vendor/github.com/google/uuid/node_js.go
@@ -0,0 +1,12 @@
+// Copyright 2017 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build js
+
+package uuid
+
+// getHardwareInterface returns nil values for the JS version of the code.
+// This remvoves the "net" dependency, because it is not used in the browser.
+// Using the "net" library inflates the size of the transpiled JS code by 673k bytes.
+func getHardwareInterface(name string) (string, []byte) { return "", nil }
diff --git a/vendor/github.com/google/uuid/node_net.go b/vendor/github.com/google/uuid/node_net.go
new file mode 100644
index 000000000..0cbbcddbd
--- /dev/null
+++ b/vendor/github.com/google/uuid/node_net.go
@@ -0,0 +1,33 @@
+// Copyright 2017 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !js
+
+package uuid
+
+import "net"
+
+var interfaces []net.Interface // cached list of interfaces
+
+// getHardwareInterface returns the name and hardware address of interface name.
+// If name is "" then the name and hardware address of one of the system's
+// interfaces is returned. If no interfaces are found (name does not exist or
+// there are no interfaces) then "", nil is returned.
+//
+// Only addresses of at least 6 bytes are returned.
+func getHardwareInterface(name string) (string, []byte) {
+ if interfaces == nil {
+ var err error
+ interfaces, err = net.Interfaces()
+ if err != nil {
+ return "", nil
+ }
+ }
+ for _, ifs := range interfaces {
+ if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) {
+ return ifs.Name, ifs.HardwareAddr
+ }
+ }
+ return "", nil
+}
diff --git a/vendor/github.com/google/uuid/seq_test.go b/vendor/github.com/google/uuid/seq_test.go
deleted file mode 100644
index 853a4aa3f..000000000
--- a/vendor/github.com/google/uuid/seq_test.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "flag"
- "runtime"
- "testing"
- "time"
-)
-
-// This test is only run when --regressions is passed on the go test line.
-var regressions = flag.Bool("regressions", false, "run uuid regression tests")
-
-// TestClockSeqRace tests for a particular race condition of returning two
-// identical Version1 UUIDs. The duration of 1 minute was chosen as the race
-// condition, before being fixed, nearly always occured in under 30 seconds.
-func TestClockSeqRace(t *testing.T) {
- if !*regressions {
- t.Skip("skipping regression tests")
- }
- duration := time.Minute
-
- done := make(chan struct{})
- defer close(done)
-
- ch := make(chan UUID, 10000)
- ncpu := runtime.NumCPU()
- switch ncpu {
- case 0, 1:
- // We can't run the test effectively.
- t.Skip("skipping race test, only one CPU detected")
- return
- default:
- runtime.GOMAXPROCS(ncpu)
- }
- for i := 0; i < ncpu; i++ {
- go func() {
- for {
- select {
- case <-done:
- return
- case ch <- Must(NewUUID()):
- }
- }
- }()
- }
-
- uuids := make(map[string]bool)
- cnt := 0
- start := time.Now()
- for u := range ch {
- s := u.String()
- if uuids[s] {
- t.Errorf("duplicate uuid after %d in %v: %s", cnt, time.Since(start), s)
- return
- }
- uuids[s] = true
- if time.Since(start) > duration {
- return
- }
- cnt++
- }
-}
diff --git a/vendor/github.com/google/uuid/sql_test.go b/vendor/github.com/google/uuid/sql_test.go
deleted file mode 100644
index 4fbd01bd7..000000000
--- a/vendor/github.com/google/uuid/sql_test.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "strings"
- "testing"
-)
-
-func TestScan(t *testing.T) {
- var stringTest string = "f47ac10b-58cc-0372-8567-0e02b2c3d479"
- var badTypeTest int = 6
- var invalidTest string = "f47ac10b-58cc-0372-8567-0e02b2c3d4"
-
- byteTest := make([]byte, 16)
- byteTestUUID := Must(Parse(stringTest))
- copy(byteTest, byteTestUUID[:])
-
- // sunny day tests
-
- var uuid UUID
- err := (&uuid).Scan(stringTest)
- if err != nil {
- t.Fatal(err)
- }
-
- err = (&uuid).Scan([]byte(stringTest))
- if err != nil {
- t.Fatal(err)
- }
-
- err = (&uuid).Scan(byteTest)
- if err != nil {
- t.Fatal(err)
- }
-
- // bad type tests
-
- err = (&uuid).Scan(badTypeTest)
- if err == nil {
- t.Error("int correctly parsed and shouldn't have")
- }
- if !strings.Contains(err.Error(), "unable to scan type") {
- t.Error("attempting to parse an int returned an incorrect error message")
- }
-
- // invalid/incomplete uuids
-
- err = (&uuid).Scan(invalidTest)
- if err == nil {
- t.Error("invalid uuid was parsed without error")
- }
- if !strings.Contains(err.Error(), "invalid UUID") {
- t.Error("attempting to parse an invalid UUID returned an incorrect error message")
- }
-
- err = (&uuid).Scan(byteTest[:len(byteTest)-2])
- if err == nil {
- t.Error("invalid byte uuid was parsed without error")
- }
- if !strings.Contains(err.Error(), "invalid UUID") {
- t.Error("attempting to parse an invalid byte UUID returned an incorrect error message")
- }
-
- // empty tests
-
- uuid = UUID{}
- var emptySlice []byte
- err = (&uuid).Scan(emptySlice)
- if err != nil {
- t.Fatal(err)
- }
-
- for _, v := range uuid {
- if v != 0 {
- t.Error("UUID was not nil after scanning empty byte slice")
- }
- }
-
- uuid = UUID{}
- var emptyString string
- err = (&uuid).Scan(emptyString)
- if err != nil {
- t.Fatal(err)
- }
- for _, v := range uuid {
- if v != 0 {
- t.Error("UUID was not nil after scanning empty byte slice")
- }
- }
-
- uuid = UUID{}
- err = (&uuid).Scan(nil)
- if err != nil {
- t.Fatal(err)
- }
- for _, v := range uuid {
- if v != 0 {
- t.Error("UUID was not nil after scanning nil")
- }
- }
-}
-
-func TestValue(t *testing.T) {
- stringTest := "f47ac10b-58cc-0372-8567-0e02b2c3d479"
- uuid := Must(Parse(stringTest))
- val, _ := uuid.Value()
- if val != stringTest {
- t.Error("Value() did not return expected string")
- }
-}
diff --git a/vendor/github.com/google/uuid/time.go b/vendor/github.com/google/uuid/time.go
index fd7fe0ac4..e6ef06cdc 100644
--- a/vendor/github.com/google/uuid/time.go
+++ b/vendor/github.com/google/uuid/time.go
@@ -86,7 +86,7 @@ func clockSequence() int {
return int(clockSeq & 0x3fff)
}
-// SetClockSeq sets the clock sequence to the lower 14 bits of seq. Setting to
+// SetClockSequence sets the clock sequence to the lower 14 bits of seq. Setting to
// -1 causes a new sequence to be generated.
func SetClockSequence(seq int) {
defer timeMu.Unlock()
@@ -100,9 +100,9 @@ func setClockSequence(seq int) {
randomBits(b[:]) // clock sequence
seq = int(b[0])<<8 | int(b[1])
}
- old_seq := clockSeq
+ oldSeq := clockSeq
clockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant
- if old_seq != clockSeq {
+ if oldSeq != clockSeq {
lasttime = 0
}
}
diff --git a/vendor/github.com/google/uuid/uuid.go b/vendor/github.com/google/uuid/uuid.go
index b7b9ced31..7f3643fe9 100644
--- a/vendor/github.com/google/uuid/uuid.go
+++ b/vendor/github.com/google/uuid/uuid.go
@@ -58,11 +58,11 @@ func Parse(s string) (UUID, error) {
14, 16,
19, 21,
24, 26, 28, 30, 32, 34} {
- if v, ok := xtob(s[x], s[x+1]); !ok {
+ v, ok := xtob(s[x], s[x+1])
+ if !ok {
return uuid, errors.New("invalid UUID format")
- } else {
- uuid[i] = v
}
+ uuid[i] = v
}
return uuid, nil
}
@@ -88,15 +88,22 @@ func ParseBytes(b []byte) (UUID, error) {
14, 16,
19, 21,
24, 26, 28, 30, 32, 34} {
- if v, ok := xtob(b[x], b[x+1]); !ok {
+ v, ok := xtob(b[x], b[x+1])
+ if !ok {
return uuid, errors.New("invalid UUID format")
- } else {
- uuid[i] = v
}
+ uuid[i] = v
}
return uuid, nil
}
+// FromBytes creates a new UUID from a byte slice. Returns an error if the slice
+// does not have a length of 16. The bytes are copied from the slice.
+func FromBytes(b []byte) (uuid UUID, err error) {
+ err = uuid.UnmarshalBinary(b)
+ return uuid, err
+}
+
// Must returns uuid if err is nil and panics otherwise.
func Must(uuid UUID, err error) UUID {
if err != nil {
@@ -176,7 +183,7 @@ func (v Variant) String() string {
return fmt.Sprintf("BadVariant%d", int(v))
}
-// SetRand sets the random number generator to r, which implents io.Reader.
+// SetRand sets the random number generator to r, which implements io.Reader.
// If r.Read returns an error when the package requests random data then
// a panic will be issued.
//
diff --git a/vendor/github.com/google/uuid/uuid_test.go b/vendor/github.com/google/uuid/uuid_test.go
deleted file mode 100644
index 2426168d1..000000000
--- a/vendor/github.com/google/uuid/uuid_test.go
+++ /dev/null
@@ -1,525 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "bytes"
- "fmt"
- "os"
- "strings"
- "testing"
- "time"
- "unsafe"
-)
-
-type test struct {
- in string
- version Version
- variant Variant
- isuuid bool
-}
-
-var tests = []test{
- {"f47ac10b-58cc-0372-8567-0e02b2c3d479", 0, RFC4122, true},
- {"f47ac10b-58cc-1372-8567-0e02b2c3d479", 1, RFC4122, true},
- {"f47ac10b-58cc-2372-8567-0e02b2c3d479", 2, RFC4122, true},
- {"f47ac10b-58cc-3372-8567-0e02b2c3d479", 3, RFC4122, true},
- {"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-5372-8567-0e02b2c3d479", 5, RFC4122, true},
- {"f47ac10b-58cc-6372-8567-0e02b2c3d479", 6, RFC4122, true},
- {"f47ac10b-58cc-7372-8567-0e02b2c3d479", 7, RFC4122, true},
- {"f47ac10b-58cc-8372-8567-0e02b2c3d479", 8, RFC4122, true},
- {"f47ac10b-58cc-9372-8567-0e02b2c3d479", 9, RFC4122, true},
- {"f47ac10b-58cc-a372-8567-0e02b2c3d479", 10, RFC4122, true},
- {"f47ac10b-58cc-b372-8567-0e02b2c3d479", 11, RFC4122, true},
- {"f47ac10b-58cc-c372-8567-0e02b2c3d479", 12, RFC4122, true},
- {"f47ac10b-58cc-d372-8567-0e02b2c3d479", 13, RFC4122, true},
- {"f47ac10b-58cc-e372-8567-0e02b2c3d479", 14, RFC4122, true},
- {"f47ac10b-58cc-f372-8567-0e02b2c3d479", 15, RFC4122, true},
-
- {"urn:uuid:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"URN:UUID:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-1567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-2567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-3567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-4567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-5567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-6567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-7567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-9567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-a567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-b567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-c567-0e02b2c3d479", 4, Microsoft, true},
- {"f47ac10b-58cc-4372-d567-0e02b2c3d479", 4, Microsoft, true},
- {"f47ac10b-58cc-4372-e567-0e02b2c3d479", 4, Future, true},
- {"f47ac10b-58cc-4372-f567-0e02b2c3d479", 4, Future, true},
-
- {"f47ac10b158cc-5372-a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc25372-a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-53723a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-5372-a56740e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-5372-a567-0e02-2c3d479", 0, Invalid, false},
- {"g47ac10b-58cc-4372-a567-0e02b2c3d479", 0, Invalid, false},
-}
-
-var constants = []struct {
- c interface{}
- name string
-}{
- {Person, "Person"},
- {Group, "Group"},
- {Org, "Org"},
- {Invalid, "Invalid"},
- {RFC4122, "RFC4122"},
- {Reserved, "Reserved"},
- {Microsoft, "Microsoft"},
- {Future, "Future"},
- {Domain(17), "Domain17"},
- {Variant(42), "BadVariant42"},
-}
-
-func testTest(t *testing.T, in string, tt test) {
- uuid, err := Parse(in)
- if ok := (err == nil); ok != tt.isuuid {
- t.Errorf("Parse(%s) got %v expected %v\b", in, ok, tt.isuuid)
- }
- if err != nil {
- return
- }
-
- if v := uuid.Variant(); v != tt.variant {
- t.Errorf("Variant(%s) got %d expected %d\b", in, v, tt.variant)
- }
- if v := uuid.Version(); v != tt.version {
- t.Errorf("Version(%s) got %d expected %d\b", in, v, tt.version)
- }
-}
-
-func testBytes(t *testing.T, in []byte, tt test) {
- uuid, err := ParseBytes(in)
- if ok := (err == nil); ok != tt.isuuid {
- t.Errorf("ParseBytes(%s) got %v expected %v\b", in, ok, tt.isuuid)
- }
- if err != nil {
- return
- }
- suuid, _ := Parse(string(in))
- if uuid != suuid {
- t.Errorf("ParseBytes(%s) got %v expected %v\b", in, uuid, suuid)
- }
-}
-
-func TestUUID(t *testing.T) {
- for _, tt := range tests {
- testTest(t, tt.in, tt)
- testTest(t, strings.ToUpper(tt.in), tt)
- testBytes(t, []byte(tt.in), tt)
- }
-}
-
-func TestConstants(t *testing.T) {
- for x, tt := range constants {
- v, ok := tt.c.(fmt.Stringer)
- if !ok {
- t.Errorf("%x: %v: not a stringer", x, v)
- } else if s := v.String(); s != tt.name {
- v, _ := tt.c.(int)
- t.Errorf("%x: Constant %T:%d gives %q, expected %q", x, tt.c, v, s, tt.name)
- }
- }
-}
-
-func TestRandomUUID(t *testing.T) {
- m := make(map[string]bool)
- for x := 1; x < 32; x++ {
- uuid := New()
- s := uuid.String()
- if m[s] {
- t.Errorf("NewRandom returned duplicated UUID %s", s)
- }
- m[s] = true
- if v := uuid.Version(); v != 4 {
- t.Errorf("Random UUID of version %s", v)
- }
- if uuid.Variant() != RFC4122 {
- t.Errorf("Random UUID is variant %d", uuid.Variant())
- }
- }
-}
-
-func TestNew(t *testing.T) {
- m := make(map[UUID]bool)
- for x := 1; x < 32; x++ {
- s := New()
- if m[s] {
- t.Errorf("New returned duplicated UUID %s", s)
- }
- m[s] = true
- uuid, err := Parse(s.String())
- if err != nil {
- t.Errorf("New.String() returned %q which does not decode", s)
- continue
- }
- if v := uuid.Version(); v != 4 {
- t.Errorf("Random UUID of version %s", v)
- }
- if uuid.Variant() != RFC4122 {
- t.Errorf("Random UUID is variant %d", uuid.Variant())
- }
- }
-}
-
-func TestClockSeq(t *testing.T) {
- // Fake time.Now for this test to return a monotonically advancing time; restore it at end.
- defer func(orig func() time.Time) { timeNow = orig }(timeNow)
- monTime := time.Now()
- timeNow = func() time.Time {
- monTime = monTime.Add(1 * time.Second)
- return monTime
- }
-
- SetClockSequence(-1)
- uuid1, err := NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
- uuid2, err := NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
-
- if s1, s2 := uuid1.ClockSequence(), uuid2.ClockSequence(); s1 != s2 {
- t.Errorf("clock sequence %d != %d", s1, s2)
- }
-
- SetClockSequence(-1)
- uuid2, err = NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
-
- // Just on the very off chance we generated the same sequence
- // two times we try again.
- if uuid1.ClockSequence() == uuid2.ClockSequence() {
- SetClockSequence(-1)
- uuid2, err = NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
- }
- if s1, s2 := uuid1.ClockSequence(), uuid2.ClockSequence(); s1 == s2 {
- t.Errorf("Duplicate clock sequence %d", s1)
- }
-
- SetClockSequence(0x1234)
- uuid1, err = NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
- if seq := uuid1.ClockSequence(); seq != 0x1234 {
- t.Errorf("%s: expected seq 0x1234 got 0x%04x", uuid1, seq)
- }
-}
-
-func TestCoding(t *testing.T) {
- text := "7d444840-9dc0-11d1-b245-5ffdce74fad2"
- urn := "urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2"
- data := UUID{
- 0x7d, 0x44, 0x48, 0x40,
- 0x9d, 0xc0,
- 0x11, 0xd1,
- 0xb2, 0x45,
- 0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2,
- }
- if v := data.String(); v != text {
- t.Errorf("%x: encoded to %s, expected %s", data, v, text)
- }
- if v := data.URN(); v != urn {
- t.Errorf("%x: urn is %s, expected %s", data, v, urn)
- }
-
- uuid, err := Parse(text)
- if err != nil {
- t.Errorf("Parse returned unexpected error %v", err)
- }
- if data != uuid {
- t.Errorf("%s: decoded to %s, expected %s", text, uuid, data)
- }
-}
-
-func TestVersion1(t *testing.T) {
- uuid1, err := NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
- uuid2, err := NewUUID()
- if err != nil {
- t.Fatalf("could not create UUID: %v", err)
- }
-
- if uuid1 == uuid2 {
- t.Errorf("%s:duplicate uuid", uuid1)
- }
- if v := uuid1.Version(); v != 1 {
- t.Errorf("%s: version %s expected 1", uuid1, v)
- }
- if v := uuid2.Version(); v != 1 {
- t.Errorf("%s: version %s expected 1", uuid2, v)
- }
- n1 := uuid1.NodeID()
- n2 := uuid2.NodeID()
- if !bytes.Equal(n1, n2) {
- t.Errorf("Different nodes %x != %x", n1, n2)
- }
- t1 := uuid1.Time()
- t2 := uuid2.Time()
- q1 := uuid1.ClockSequence()
- q2 := uuid2.ClockSequence()
-
- switch {
- case t1 == t2 && q1 == q2:
- t.Error("time stopped")
- case t1 > t2 && q1 == q2:
- t.Error("time reversed")
- case t1 < t2 && q1 != q2:
- t.Error("clock sequence chaned unexpectedly")
- }
-}
-
-func TestNode(t *testing.T) {
- // This test is mostly to make sure we don't leave nodeMu locked.
- ifname = ""
- if ni := NodeInterface(); ni != "" {
- t.Errorf("NodeInterface got %q, want %q", ni, "")
- }
- if SetNodeInterface("xyzzy") {
- t.Error("SetNodeInterface succeeded on a bad interface name")
- }
- if !SetNodeInterface("") {
- t.Error("SetNodeInterface failed")
- }
- if ni := NodeInterface(); ni == "" {
- t.Error("NodeInterface returned an empty string")
- }
-
- ni := NodeID()
- if len(ni) != 6 {
- t.Errorf("ni got %d bytes, want 6", len(ni))
- }
- hasData := false
- for _, b := range ni {
- if b != 0 {
- hasData = true
- }
- }
- if !hasData {
- t.Error("nodeid is all zeros")
- }
-
- id := []byte{1, 2, 3, 4, 5, 6, 7, 8}
- SetNodeID(id)
- ni = NodeID()
- if !bytes.Equal(ni, id[:6]) {
- t.Errorf("got nodeid %v, want %v", ni, id[:6])
- }
-
- if ni := NodeInterface(); ni != "user" {
- t.Errorf("got inteface %q, want %q", ni, "user")
- }
-}
-
-func TestNodeAndTime(t *testing.T) {
- // Time is February 5, 1998 12:30:23.136364800 AM GMT
-
- uuid, err := Parse("7d444840-9dc0-11d1-b245-5ffdce74fad2")
- if err != nil {
- t.Fatalf("Parser returned unexpected error %v", err)
- }
- node := []byte{0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2}
-
- ts := uuid.Time()
- c := time.Unix(ts.UnixTime())
- want := time.Date(1998, 2, 5, 0, 30, 23, 136364800, time.UTC)
- if !c.Equal(want) {
- t.Errorf("Got time %v, want %v", c, want)
- }
- if !bytes.Equal(node, uuid.NodeID()) {
- t.Errorf("Expected node %v got %v", node, uuid.NodeID())
- }
-}
-
-func TestMD5(t *testing.T) {
- uuid := NewMD5(NameSpaceDNS, []byte("python.org")).String()
- want := "6fa459ea-ee8a-3ca4-894e-db77e160355e"
- if uuid != want {
- t.Errorf("MD5: got %q expected %q", uuid, want)
- }
-}
-
-func TestSHA1(t *testing.T) {
- uuid := NewSHA1(NameSpaceDNS, []byte("python.org")).String()
- want := "886313e1-3b8a-5372-9b90-0c9aee199e5d"
- if uuid != want {
- t.Errorf("SHA1: got %q expected %q", uuid, want)
- }
-}
-
-func TestNodeID(t *testing.T) {
- nid := []byte{1, 2, 3, 4, 5, 6}
- SetNodeInterface("")
- s := NodeInterface()
- if s == "" || s == "user" {
- t.Errorf("NodeInterface %q after SetInteface", s)
- }
- node1 := NodeID()
- if node1 == nil {
- t.Error("NodeID nil after SetNodeInterface", s)
- }
- SetNodeID(nid)
- s = NodeInterface()
- if s != "user" {
- t.Errorf("Expected NodeInterface %q got %q", "user", s)
- }
- node2 := NodeID()
- if node2 == nil {
- t.Error("NodeID nil after SetNodeID", s)
- }
- if bytes.Equal(node1, node2) {
- t.Error("NodeID not changed after SetNodeID", s)
- } else if !bytes.Equal(nid, node2) {
- t.Errorf("NodeID is %x, expected %x", node2, nid)
- }
-}
-
-func testDCE(t *testing.T, name string, uuid UUID, err error, domain Domain, id uint32) {
- if err != nil {
- t.Errorf("%s failed: %v", name, err)
- return
- }
- if v := uuid.Version(); v != 2 {
- t.Errorf("%s: %s: expected version 2, got %s", name, uuid, v)
- return
- }
- if v := uuid.Domain(); v != domain {
- t.Errorf("%s: %s: expected domain %d, got %d", name, uuid, domain, v)
- }
- if v := uuid.ID(); v != id {
- t.Errorf("%s: %s: expected id %d, got %d", name, uuid, id, v)
- }
-}
-
-func TestDCE(t *testing.T) {
- uuid, err := NewDCESecurity(42, 12345678)
- testDCE(t, "NewDCESecurity", uuid, err, 42, 12345678)
- uuid, err = NewDCEPerson()
- testDCE(t, "NewDCEPerson", uuid, err, Person, uint32(os.Getuid()))
- uuid, err = NewDCEGroup()
- testDCE(t, "NewDCEGroup", uuid, err, Group, uint32(os.Getgid()))
-}
-
-type badRand struct{}
-
-func (r badRand) Read(buf []byte) (int, error) {
- for i, _ := range buf {
- buf[i] = byte(i)
- }
- return len(buf), nil
-}
-
-func TestBadRand(t *testing.T) {
- SetRand(badRand{})
- uuid1 := New()
- uuid2 := New()
- if uuid1 != uuid2 {
- t.Errorf("execpted duplicates, got %q and %q", uuid1, uuid2)
- }
- SetRand(nil)
- uuid1 = New()
- uuid2 = New()
- if uuid1 == uuid2 {
- t.Errorf("unexecpted duplicates, got %q", uuid1)
- }
-}
-
-var asString = "f47ac10b-58cc-0372-8567-0e02b2c3d479"
-var asBytes = []byte(asString)
-
-func BenchmarkParse(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _, err := Parse(asString)
- if err != nil {
- b.Fatal(err)
- }
- }
-}
-
-func BenchmarkParseBytes(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _, err := ParseBytes(asBytes)
- if err != nil {
- b.Fatal(err)
- }
- }
-}
-
-// parseBytesUnsafe is to benchmark using unsafe.
-func parseBytesUnsafe(b []byte) (UUID, error) {
- return Parse(*(*string)(unsafe.Pointer(&b)))
-}
-
-func BenchmarkParseBytesUnsafe(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _, err := parseBytesUnsafe(asBytes)
- if err != nil {
- b.Fatal(err)
- }
- }
-}
-
-// parseBytesCopy is to benchmark not using unsafe.
-func parseBytesCopy(b []byte) (UUID, error) {
- return Parse(string(b))
-}
-
-func BenchmarkParseBytesCopy(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _, err := parseBytesCopy(asBytes)
- if err != nil {
- b.Fatal(err)
- }
- }
-}
-
-func BenchmarkNew(b *testing.B) {
- for i := 0; i < b.N; i++ {
- New()
- }
-}
-
-func BenchmarkUUID_String(b *testing.B) {
- uuid, err := Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
- if err != nil {
- b.Fatal(err)
- }
- for i := 0; i < b.N; i++ {
- if uuid.String() == "" {
- b.Fatal("invalid uuid")
- }
- }
-}
-
-func BenchmarkUUID_URN(b *testing.B) {
- uuid, err := Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
- if err != nil {
- b.Fatal(err)
- }
- for i := 0; i < b.N; i++ {
- if uuid.URN() == "" {
- b.Fatal("invalid uuid")
- }
- }
-}
diff --git a/vendor/github.com/google/uuid/version1.go b/vendor/github.com/google/uuid/version1.go
index 22dc07cdc..199a1ac65 100644
--- a/vendor/github.com/google/uuid/version1.go
+++ b/vendor/github.com/google/uuid/version1.go
@@ -13,7 +13,7 @@ import (
// or SetNodeInterface then it will be set automatically. If the NodeID cannot
// be set NewUUID returns nil. If clock sequence has not been set by
// SetClockSequence then it will be set automatically. If GetTime fails to
-// return the current NewUUID returns Nil and an error.
+// return the current NewUUID returns nil and an error.
//
// In most cases, New should be used.
func NewUUID() (UUID, error) {
diff --git a/vendor/github.com/google/uuid/version4.go b/vendor/github.com/google/uuid/version4.go
index 87977c3cb..84af91c9f 100644
--- a/vendor/github.com/google/uuid/version4.go
+++ b/vendor/github.com/google/uuid/version4.go
@@ -14,12 +14,12 @@ func New() UUID {
return Must(NewRandom())
}
-// NewRandom returns a Random (Version 4) UUID or panics.
+// NewRandom returns a Random (Version 4) UUID.
//
// The strength of the UUIDs is based on the strength of the crypto/rand
// package.
//
-// A note about uniqueness derived from from the UUID Wikipedia entry:
+// A note about uniqueness derived from the UUID Wikipedia entry:
//
// Randomly generated UUIDs have 122 random bits. One's annual risk of being
// hit by a meteorite is estimated to be one chance in 17 billion, that
diff --git a/vendor/github.com/jmespath/go-jmespath/Makefile b/vendor/github.com/jmespath/go-jmespath/Makefile
index ad17bf001..a828d2848 100644
--- a/vendor/github.com/jmespath/go-jmespath/Makefile
+++ b/vendor/github.com/jmespath/go-jmespath/Makefile
@@ -35,7 +35,7 @@ buildfuzz:
go-fuzz-build github.com/jmespath/go-jmespath/fuzz
fuzz: buildfuzz
- go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/corpus
+ go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/testdata
bench:
go test -bench . -cpuprofile cpu.out
diff --git a/vendor/github.com/jmespath/go-jmespath/api.go b/vendor/github.com/jmespath/go-jmespath/api.go
index 67df3fc1c..8e26ffeec 100644
--- a/vendor/github.com/jmespath/go-jmespath/api.go
+++ b/vendor/github.com/jmespath/go-jmespath/api.go
@@ -1,5 +1,42 @@
package jmespath
+import "strconv"
+
+// JMESPath is the epresentation of a compiled JMES path query. A JMESPath is
+// safe for concurrent use by multiple goroutines.
+type JMESPath struct {
+ ast ASTNode
+ intr *treeInterpreter
+}
+
+// Compile parses a JMESPath expression and returns, if successful, a JMESPath
+// object that can be used to match against data.
+func Compile(expression string) (*JMESPath, error) {
+ parser := NewParser()
+ ast, err := parser.Parse(expression)
+ if err != nil {
+ return nil, err
+ }
+ jmespath := &JMESPath{ast: ast, intr: newInterpreter()}
+ return jmespath, nil
+}
+
+// MustCompile is like Compile but panics if the expression cannot be parsed.
+// It simplifies safe initialization of global variables holding compiled
+// JMESPaths.
+func MustCompile(expression string) *JMESPath {
+ jmespath, err := Compile(expression)
+ if err != nil {
+ panic(`jmespath: Compile(` + strconv.Quote(expression) + `): ` + err.Error())
+ }
+ return jmespath
+}
+
+// Search evaluates a JMESPath expression against input data and returns the result.
+func (jp *JMESPath) Search(data interface{}) (interface{}, error) {
+ return jp.intr.Execute(jp.ast, data)
+}
+
// Search evaluates a JMESPath expression against input data and returns the result.
func Search(expression string, data interface{}) (interface{}, error) {
intr := newInterpreter()
diff --git a/vendor/github.com/jmespath/go-jmespath/functions.go b/vendor/github.com/jmespath/go-jmespath/functions.go
index 8a3f2ef0d..9b7cd89b4 100644
--- a/vendor/github.com/jmespath/go-jmespath/functions.go
+++ b/vendor/github.com/jmespath/go-jmespath/functions.go
@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"math"
+ "reflect"
"sort"
"strconv"
"strings"
@@ -124,197 +125,197 @@ type functionCaller struct {
func newFunctionCaller() *functionCaller {
caller := &functionCaller{}
caller.functionTable = map[string]functionEntry{
- "length": functionEntry{
+ "length": {
name: "length",
arguments: []argSpec{
- argSpec{types: []jpType{jpString, jpArray, jpObject}},
+ {types: []jpType{jpString, jpArray, jpObject}},
},
handler: jpfLength,
},
- "starts_with": functionEntry{
+ "starts_with": {
name: "starts_with",
arguments: []argSpec{
- argSpec{types: []jpType{jpString}},
- argSpec{types: []jpType{jpString}},
+ {types: []jpType{jpString}},
+ {types: []jpType{jpString}},
},
handler: jpfStartsWith,
},
- "abs": functionEntry{
+ "abs": {
name: "abs",
arguments: []argSpec{
- argSpec{types: []jpType{jpNumber}},
+ {types: []jpType{jpNumber}},
},
handler: jpfAbs,
},
- "avg": functionEntry{
+ "avg": {
name: "avg",
arguments: []argSpec{
- argSpec{types: []jpType{jpArrayNumber}},
+ {types: []jpType{jpArrayNumber}},
},
handler: jpfAvg,
},
- "ceil": functionEntry{
+ "ceil": {
name: "ceil",
arguments: []argSpec{
- argSpec{types: []jpType{jpNumber}},
+ {types: []jpType{jpNumber}},
},
handler: jpfCeil,
},
- "contains": functionEntry{
+ "contains": {
name: "contains",
arguments: []argSpec{
- argSpec{types: []jpType{jpArray, jpString}},
- argSpec{types: []jpType{jpAny}},
+ {types: []jpType{jpArray, jpString}},
+ {types: []jpType{jpAny}},
},
handler: jpfContains,
},
- "ends_with": functionEntry{
+ "ends_with": {
name: "ends_with",
arguments: []argSpec{
- argSpec{types: []jpType{jpString}},
- argSpec{types: []jpType{jpString}},
+ {types: []jpType{jpString}},
+ {types: []jpType{jpString}},
},
handler: jpfEndsWith,
},
- "floor": functionEntry{
+ "floor": {
name: "floor",
arguments: []argSpec{
- argSpec{types: []jpType{jpNumber}},
+ {types: []jpType{jpNumber}},
},
handler: jpfFloor,
},
- "map": functionEntry{
+ "map": {
name: "amp",
arguments: []argSpec{
- argSpec{types: []jpType{jpExpref}},
- argSpec{types: []jpType{jpArray}},
+ {types: []jpType{jpExpref}},
+ {types: []jpType{jpArray}},
},
handler: jpfMap,
hasExpRef: true,
},
- "max": functionEntry{
+ "max": {
name: "max",
arguments: []argSpec{
- argSpec{types: []jpType{jpArrayNumber, jpArrayString}},
+ {types: []jpType{jpArrayNumber, jpArrayString}},
},
handler: jpfMax,
},
- "merge": functionEntry{
+ "merge": {
name: "merge",
arguments: []argSpec{
- argSpec{types: []jpType{jpObject}, variadic: true},
+ {types: []jpType{jpObject}, variadic: true},
},
handler: jpfMerge,
},
- "max_by": functionEntry{
+ "max_by": {
name: "max_by",
arguments: []argSpec{
- argSpec{types: []jpType{jpArray}},
- argSpec{types: []jpType{jpExpref}},
+ {types: []jpType{jpArray}},
+ {types: []jpType{jpExpref}},
},
handler: jpfMaxBy,
hasExpRef: true,
},
- "sum": functionEntry{
+ "sum": {
name: "sum",
arguments: []argSpec{
- argSpec{types: []jpType{jpArrayNumber}},
+ {types: []jpType{jpArrayNumber}},
},
handler: jpfSum,
},
- "min": functionEntry{
+ "min": {
name: "min",
arguments: []argSpec{
- argSpec{types: []jpType{jpArrayNumber, jpArrayString}},
+ {types: []jpType{jpArrayNumber, jpArrayString}},
},
handler: jpfMin,
},
- "min_by": functionEntry{
+ "min_by": {
name: "min_by",
arguments: []argSpec{
- argSpec{types: []jpType{jpArray}},
- argSpec{types: []jpType{jpExpref}},
+ {types: []jpType{jpArray}},
+ {types: []jpType{jpExpref}},
},
handler: jpfMinBy,
hasExpRef: true,
},
- "type": functionEntry{
+ "type": {
name: "type",
arguments: []argSpec{
- argSpec{types: []jpType{jpAny}},
+ {types: []jpType{jpAny}},
},
handler: jpfType,
},
- "keys": functionEntry{
+ "keys": {
name: "keys",
arguments: []argSpec{
- argSpec{types: []jpType{jpObject}},
+ {types: []jpType{jpObject}},
},
handler: jpfKeys,
},
- "values": functionEntry{
+ "values": {
name: "values",
arguments: []argSpec{
- argSpec{types: []jpType{jpObject}},
+ {types: []jpType{jpObject}},
},
handler: jpfValues,
},
- "sort": functionEntry{
+ "sort": {
name: "sort",
arguments: []argSpec{
- argSpec{types: []jpType{jpArrayString, jpArrayNumber}},
+ {types: []jpType{jpArrayString, jpArrayNumber}},
},
handler: jpfSort,
},
- "sort_by": functionEntry{
+ "sort_by": {
name: "sort_by",
arguments: []argSpec{
- argSpec{types: []jpType{jpArray}},
- argSpec{types: []jpType{jpExpref}},
+ {types: []jpType{jpArray}},
+ {types: []jpType{jpExpref}},
},
handler: jpfSortBy,
hasExpRef: true,
},
- "join": functionEntry{
+ "join": {
name: "join",
arguments: []argSpec{
- argSpec{types: []jpType{jpString}},
- argSpec{types: []jpType{jpArrayString}},
+ {types: []jpType{jpString}},
+ {types: []jpType{jpArrayString}},
},
handler: jpfJoin,
},
- "reverse": functionEntry{
+ "reverse": {
name: "reverse",
arguments: []argSpec{
- argSpec{types: []jpType{jpArray, jpString}},
+ {types: []jpType{jpArray, jpString}},
},
handler: jpfReverse,
},
- "to_array": functionEntry{
+ "to_array": {
name: "to_array",
arguments: []argSpec{
- argSpec{types: []jpType{jpAny}},
+ {types: []jpType{jpAny}},
},
handler: jpfToArray,
},
- "to_string": functionEntry{
+ "to_string": {
name: "to_string",
arguments: []argSpec{
- argSpec{types: []jpType{jpAny}},
+ {types: []jpType{jpAny}},
},
handler: jpfToString,
},
- "to_number": functionEntry{
+ "to_number": {
name: "to_number",
arguments: []argSpec{
- argSpec{types: []jpType{jpAny}},
+ {types: []jpType{jpAny}},
},
handler: jpfToNumber,
},
- "not_null": functionEntry{
+ "not_null": {
name: "not_null",
arguments: []argSpec{
- argSpec{types: []jpType{jpAny}, variadic: true},
+ {types: []jpType{jpAny}, variadic: true},
},
handler: jpfNotNull,
},
@@ -357,7 +358,7 @@ func (a *argSpec) typeCheck(arg interface{}) error {
return nil
}
case jpArray:
- if _, ok := arg.([]interface{}); ok {
+ if isSliceType(arg) {
return nil
}
case jpObject:
@@ -409,8 +410,9 @@ func jpfLength(arguments []interface{}) (interface{}, error) {
arg := arguments[0]
if c, ok := arg.(string); ok {
return float64(utf8.RuneCountInString(c)), nil
- } else if c, ok := arg.([]interface{}); ok {
- return float64(len(c)), nil
+ } else if isSliceType(arg) {
+ v := reflect.ValueOf(arg)
+ return float64(v.Len()), nil
} else if c, ok := arg.(map[string]interface{}); ok {
return float64(len(c)), nil
}
diff --git a/vendor/github.com/jmespath/go-jmespath/parser.go b/vendor/github.com/jmespath/go-jmespath/parser.go
index c8f4bcebd..1240a1755 100644
--- a/vendor/github.com/jmespath/go-jmespath/parser.go
+++ b/vendor/github.com/jmespath/go-jmespath/parser.go
@@ -353,7 +353,7 @@ func (p *Parser) nud(token token) (ASTNode, error) {
case tFlatten:
left := ASTNode{
nodeType: ASTFlatten,
- children: []ASTNode{ASTNode{nodeType: ASTIdentity}},
+ children: []ASTNode{{nodeType: ASTIdentity}},
}
right, err := p.parseProjectionRHS(bindingPowers[tFlatten])
if err != nil {
@@ -378,7 +378,7 @@ func (p *Parser) nud(token token) (ASTNode, error) {
}
return ASTNode{
nodeType: ASTProjection,
- children: []ASTNode{ASTNode{nodeType: ASTIdentity}, right},
+ children: []ASTNode{{nodeType: ASTIdentity}, right},
}, nil
} else {
return p.parseMultiSelectList()
diff --git a/vendor/github.com/miekg/dns/dnsutil/util.go b/vendor/github.com/miekg/dns/dnsutil/util.go
index 9ed03f296..76ac4de66 100644
--- a/vendor/github.com/miekg/dns/dnsutil/util.go
+++ b/vendor/github.com/miekg/dns/dnsutil/util.go
@@ -11,7 +11,7 @@ import (
"github.com/miekg/dns"
)
-// AddDomain adds origin to s if s is not already a FQDN.
+// AddOrigin adds origin to s if s is not already a FQDN.
// Note that the result may not be a FQDN. If origin does not end
// with a ".", the result won't either.
// This implements the zonefile convention (specified in RFC 1035,
@@ -20,7 +20,9 @@ import (
func AddOrigin(s, origin string) string {
// ("foo.", "origin.") -> "foo." (already a FQDN)
// ("foo", "origin.") -> "foo.origin."
- // ("foo"), "origin" -> "foo.origin"
+ // ("foo", "origin") -> "foo.origin"
+ // ("foo", ".") -> "foo." (Same as dns.Fqdn())
+ // ("foo.", ".") -> "foo." (Same as dns.Fqdn())
// ("@", "origin.") -> "origin." (@ represents the apex (bare) domain)
// ("", "origin.") -> "origin." (not obvious)
// ("foo", "") -> "foo" (not obvious)
@@ -34,32 +36,34 @@ func AddOrigin(s, origin string) string {
if s == "@" || len(s) == 0 {
return origin // Expand apex.
}
-
if origin == "." {
- return s + origin // AddOrigin(s, ".") is an expensive way to add a ".".
+ return dns.Fqdn(s)
}
return s + "." + origin // The simple case.
}
// TrimDomainName trims origin from s if s is a subdomain.
-// This function will never return "", but returns "@" instead (@ represents the apex (bare) domain).
+// This function will never return "", but returns "@" instead (@ represents the apex domain).
func TrimDomainName(s, origin string) string {
// An apex (bare) domain is always returned as "@".
// If the return value ends in a ".", the domain was not the suffix.
// origin can end in "." or not. Either way the results should be the same.
if len(s) == 0 {
- return "@" // Return the apex (@) rather than "".
+ return "@"
}
// Someone is using TrimDomainName(s, ".") to remove a dot if it exists.
if origin == "." {
return strings.TrimSuffix(s, origin)
}
- // Dude, you aren't even if the right subdomain!
+ original := s
+ s = dns.Fqdn(s)
+ origin = dns.Fqdn(origin)
+
if !dns.IsSubDomain(origin, s) {
- return s
+ return original
}
slabels := dns.Split(s)
diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go
index cbe3f3e38..6b1f2891a 100644
--- a/vendor/github.com/pkg/errors/stack.go
+++ b/vendor/github.com/pkg/errors/stack.go
@@ -79,14 +79,6 @@ func (f Frame) Format(s fmt.State, verb rune) {
// StackTrace is stack of Frames from innermost (newest) to outermost (oldest).
type StackTrace []Frame
-// Format formats the stack of Frames according to the fmt.Formatter interface.
-//
-// %s lists source files for each Frame in the stack
-// %v lists the source file and line number for each Frame in the stack
-//
-// Format accepts flags that alter the printing of some verbs, as follows:
-//
-// %+v Prints filename, function, and line number for each Frame in the stack.
func (st StackTrace) Format(s fmt.State, verb rune) {
switch verb {
case 'v':
diff --git a/vendor/github.com/urfave/cli/README.md b/vendor/github.com/urfave/cli/README.md
index 34055fe74..6096701d8 100644
--- a/vendor/github.com/urfave/cli/README.md
+++ b/vendor/github.com/urfave/cli/README.md
@@ -32,6 +32,7 @@ applications in an expressive way.
+ [Alternate Names](#alternate-names)
+ [Ordering](#ordering)
+ [Values from the Environment](#values-from-the-environment)
+ + [Values from files](#values-from-files)
+ [Values from alternate input sources (YAML, TOML, and others)](#values-from-alternate-input-sources-yaml-toml-and-others)
+ [Precedence](#precedence)
* [Subcommands](#subcommands)
@@ -46,6 +47,7 @@ applications in an expressive way.
* [Version Flag](#version-flag)
+ [Customization](#customization-2)
+ [Full API Example](#full-api-example)
+ * [Combining short Bool options](#combining-short-bool-options)
- [Contribution Guidelines](#contribution-guidelines)
@@ -587,6 +589,41 @@ func main() {
}
```
+#### Values from files
+
+You can also have the default value set from file via `FilePath`. e.g.
+
+
+``` go
+package main
+
+import (
+ "os"
+
+ "github.com/urfave/cli"
+)
+
+func main() {
+ app := cli.NewApp()
+
+ app.Flags = []cli.Flag {
+ cli.StringFlag{
+ Name: "password, p",
+ Usage: "password for the mysql database",
+ FilePath: "/etc/mysql/password",
+ },
+ }
+
+ app.Run(os.Args)
+}
+```
+
+Note that default values set from file (e.g. `FilePath`) take precedence over
+default values set from the enviornment (e.g. `EnvVar`).
+
#### Values from alternate input sources (YAML, TOML, and others)
There is a separate package altsrc that adds support for getting flag values
@@ -1374,6 +1411,26 @@ func wopAction(c *cli.Context) error {
}
```
+### Combining short Bool options
+
+Traditional use of boolean options using their shortnames look like this:
+```
+# cmd foobar -s -o
+```
+
+Suppose you want users to be able to combine your bool options with their shortname. This
+can be done using the **UseShortOptionHandling** bool in your commands. Suppose your program
+has a two bool flags such as *serve* and *option* with the short options of *-o* and
+*-s* respectively. With **UseShortOptionHandling** set to *true*, a user can use a syntax
+like:
+```
+# cmd foobar -so
+```
+
+If you enable the **UseShortOptionHandling*, then you must not use any flags that have a single
+leading *-* or this will result in failures. For example, **-option** can no longer be used. Flags
+with two leading dashes (such as **--options**) are still valid.
+
## Contribution Guidelines
Feel free to put up a pull request to fix a bug or maybe add a feature. I will
diff --git a/vendor/github.com/urfave/cli/app.go b/vendor/github.com/urfave/cli/app.go
index 51fc45d87..9add067b0 100644
--- a/vendor/github.com/urfave/cli/app.go
+++ b/vendor/github.com/urfave/cli/app.go
@@ -83,6 +83,9 @@ type App struct {
Writer io.Writer
// ErrWriter writes error output
ErrWriter io.Writer
+ // Execute this function to handle ExitErrors. If not provided, HandleExitCoder is provided to
+ // function as a default, so this is optional.
+ ExitErrHandler ExitErrHandlerFunc
// Other custom info
Metadata map[string]interface{}
// Carries a function which returns app specific info.
@@ -207,7 +210,7 @@ func (a *App) Run(arguments []string) (err error) {
if err != nil {
if a.OnUsageError != nil {
err := a.OnUsageError(context, err, false)
- HandleExitCoder(err)
+ a.handleExitCoder(context, err)
return err
}
fmt.Fprintf(a.Writer, "%s %s\n\n", "Incorrect Usage.", err.Error())
@@ -240,8 +243,9 @@ func (a *App) Run(arguments []string) (err error) {
if a.Before != nil {
beforeErr := a.Before(context)
if beforeErr != nil {
+ fmt.Fprintf(a.Writer, "%v\n\n", beforeErr)
ShowAppHelp(context)
- HandleExitCoder(beforeErr)
+ a.handleExitCoder(context, beforeErr)
err = beforeErr
return err
}
@@ -263,7 +267,7 @@ func (a *App) Run(arguments []string) (err error) {
// Run default Action
err = HandleAction(a.Action, context)
- HandleExitCoder(err)
+ a.handleExitCoder(context, err)
return err
}
@@ -330,7 +334,7 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
if err != nil {
if a.OnUsageError != nil {
err = a.OnUsageError(context, err, true)
- HandleExitCoder(err)
+ a.handleExitCoder(context, err)
return err
}
fmt.Fprintf(a.Writer, "%s %s\n\n", "Incorrect Usage.", err.Error())
@@ -352,7 +356,7 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
defer func() {
afterErr := a.After(context)
if afterErr != nil {
- HandleExitCoder(err)
+ a.handleExitCoder(context, err)
if err != nil {
err = NewMultiError(err, afterErr)
} else {
@@ -365,7 +369,7 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
if a.Before != nil {
beforeErr := a.Before(context)
if beforeErr != nil {
- HandleExitCoder(beforeErr)
+ a.handleExitCoder(context, beforeErr)
err = beforeErr
return err
}
@@ -383,7 +387,7 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
// Run default Action
err = HandleAction(a.Action, context)
- HandleExitCoder(err)
+ a.handleExitCoder(context, err)
return err
}
@@ -449,7 +453,6 @@ func (a *App) hasFlag(flag Flag) bool {
}
func (a *App) errWriter() io.Writer {
-
// When the app ErrWriter is nil use the package level one.
if a.ErrWriter == nil {
return ErrWriter
@@ -464,6 +467,14 @@ func (a *App) appendFlag(flag Flag) {
}
}
+func (a *App) handleExitCoder(context *Context, err error) {
+ if a.ExitErrHandler != nil {
+ a.ExitErrHandler(context, err)
+ } else {
+ HandleExitCoder(err)
+ }
+}
+
// Author represents someone who has contributed to a cli project.
type Author struct {
Name string // The Authors name
@@ -491,7 +502,7 @@ func HandleAction(action interface{}, context *Context) (err error) {
} else if a, ok := action.(func(*Context)); ok { // deprecated function signature
a(context)
return nil
- } else {
- return errInvalidActionType
}
+
+ return errInvalidActionType
}
diff --git a/vendor/github.com/urfave/cli/category.go b/vendor/github.com/urfave/cli/category.go
index 1a6055023..bf3c73c55 100644
--- a/vendor/github.com/urfave/cli/category.go
+++ b/vendor/github.com/urfave/cli/category.go
@@ -10,7 +10,7 @@ type CommandCategory struct {
}
func (c CommandCategories) Less(i, j int) bool {
- return c[i].Name < c[j].Name
+ return lexicographicLess(c[i].Name, c[j].Name)
}
func (c CommandCategories) Len() int {
diff --git a/vendor/github.com/urfave/cli/command.go b/vendor/github.com/urfave/cli/command.go
index 23de2944b..ed4a81a21 100644
--- a/vendor/github.com/urfave/cli/command.go
+++ b/vendor/github.com/urfave/cli/command.go
@@ -1,6 +1,7 @@
package cli
import (
+ "flag"
"fmt"
"io/ioutil"
"sort"
@@ -55,6 +56,10 @@ type Command struct {
HideHelp bool
// Boolean to hide this command from help or completion
Hidden bool
+ // Boolean to enable short-option handling so user can combine several
+ // single-character bool arguements into one
+ // i.e. foobar -o -v -> foobar -ov
+ UseShortOptionHandling bool
// Full name of command for help, defaults to full command name, including parent commands.
HelpName string
@@ -73,7 +78,7 @@ func (c CommandsByName) Len() int {
}
func (c CommandsByName) Less(i, j int) bool {
- return c[i].Name < c[j].Name
+ return lexicographicLess(c[i].Name, c[j].Name)
}
func (c CommandsByName) Swap(i, j int) {
@@ -106,57 +111,7 @@ func (c Command) Run(ctx *Context) (err error) {
)
}
- set, err := flagSet(c.Name, c.Flags)
- if err != nil {
- return err
- }
- set.SetOutput(ioutil.Discard)
-
- if c.SkipFlagParsing {
- err = set.Parse(append([]string{"--"}, ctx.Args().Tail()...))
- } else if !c.SkipArgReorder {
- firstFlagIndex := -1
- terminatorIndex := -1
- for index, arg := range ctx.Args() {
- if arg == "--" {
- terminatorIndex = index
- break
- } else if arg == "-" {
- // Do nothing. A dash alone is not really a flag.
- continue
- } else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 {
- firstFlagIndex = index
- }
- }
-
- if firstFlagIndex > -1 {
- args := ctx.Args()
- regularArgs := make([]string, len(args[1:firstFlagIndex]))
- copy(regularArgs, args[1:firstFlagIndex])
-
- var flagArgs []string
- if terminatorIndex > -1 {
- flagArgs = args[firstFlagIndex:terminatorIndex]
- regularArgs = append(regularArgs, args[terminatorIndex:]...)
- } else {
- flagArgs = args[firstFlagIndex:]
- }
-
- err = set.Parse(append(flagArgs, regularArgs...))
- } else {
- err = set.Parse(ctx.Args().Tail())
- }
- } else {
- err = set.Parse(ctx.Args().Tail())
- }
-
- nerr := normalizeFlags(c.Flags, set)
- if nerr != nil {
- fmt.Fprintln(ctx.App.Writer, nerr)
- fmt.Fprintln(ctx.App.Writer)
- ShowCommandHelp(ctx, c.Name)
- return nerr
- }
+ set, err := c.parseFlags(ctx.Args().Tail())
context := NewContext(ctx.App, set, ctx)
context.Command = c
@@ -167,7 +122,7 @@ func (c Command) Run(ctx *Context) (err error) {
if err != nil {
if c.OnUsageError != nil {
err := c.OnUsageError(context, err, false)
- HandleExitCoder(err)
+ context.App.handleExitCoder(context, err)
return err
}
fmt.Fprintln(context.App.Writer, "Incorrect Usage:", err.Error())
@@ -184,7 +139,7 @@ func (c Command) Run(ctx *Context) (err error) {
defer func() {
afterErr := c.After(context)
if afterErr != nil {
- HandleExitCoder(err)
+ context.App.handleExitCoder(context, err)
if err != nil {
err = NewMultiError(err, afterErr)
} else {
@@ -198,7 +153,7 @@ func (c Command) Run(ctx *Context) (err error) {
err = c.Before(context)
if err != nil {
ShowCommandHelp(context, c.Name)
- HandleExitCoder(err)
+ context.App.handleExitCoder(context, err)
return err
}
}
@@ -210,11 +165,87 @@ func (c Command) Run(ctx *Context) (err error) {
err = HandleAction(c.Action, context)
if err != nil {
- HandleExitCoder(err)
+ context.App.handleExitCoder(context, err)
}
return err
}
+func (c *Command) parseFlags(args Args) (*flag.FlagSet, error) {
+ set, err := flagSet(c.Name, c.Flags)
+ if err != nil {
+ return nil, err
+ }
+ set.SetOutput(ioutil.Discard)
+
+ if c.SkipFlagParsing {
+ return set, set.Parse(append([]string{"--"}, args...))
+ }
+
+ if c.UseShortOptionHandling {
+ args = translateShortOptions(args)
+ }
+
+ if !c.SkipArgReorder {
+ args = reorderArgs(args)
+ }
+
+ err = set.Parse(args)
+ if err != nil {
+ return nil, err
+ }
+
+ err = normalizeFlags(c.Flags, set)
+ if err != nil {
+ return nil, err
+ }
+
+ return set, nil
+}
+
+// reorderArgs moves all flags before arguments as this is what flag expects
+func reorderArgs(args []string) []string {
+ var nonflags, flags []string
+
+ readFlagValue := false
+ for i, arg := range args {
+ if arg == "--" {
+ nonflags = append(nonflags, args[i:]...)
+ break
+ }
+
+ if readFlagValue {
+ readFlagValue = false
+ flags = append(flags, arg)
+ continue
+ }
+
+ if arg != "-" && strings.HasPrefix(arg, "-") {
+ flags = append(flags, arg)
+
+ readFlagValue = !strings.Contains(arg, "=")
+ } else {
+ nonflags = append(nonflags, arg)
+ }
+ }
+
+ return append(flags, nonflags...)
+}
+
+func translateShortOptions(flagArgs Args) []string {
+ // separate combined flags
+ var flagArgsSeparated []string
+ for _, flagArg := range flagArgs {
+ if strings.HasPrefix(flagArg, "-") && strings.HasPrefix(flagArg, "--") == false && len(flagArg) > 2 {
+ for _, flagChar := range flagArg[1:] {
+ flagArgsSeparated = append(flagArgsSeparated, "-"+string(flagChar))
+ }
+ } else {
+ flagArgsSeparated = append(flagArgsSeparated, flagArg)
+ }
+ }
+ return flagArgsSeparated
+}
+
// Names returns the names including short names and aliases.
func (c Command) Names() []string {
names := []string{c.Name}
diff --git a/vendor/github.com/urfave/cli/context.go b/vendor/github.com/urfave/cli/context.go
index db94191e2..552ee7405 100644
--- a/vendor/github.com/urfave/cli/context.go
+++ b/vendor/github.com/urfave/cli/context.go
@@ -3,6 +3,7 @@ package cli
import (
"errors"
"flag"
+ "os"
"reflect"
"strings"
"syscall"
@@ -73,7 +74,7 @@ func (c *Context) IsSet(name string) bool {
// change in version 2 to add `IsSet` to the Flag interface to push the
// responsibility closer to where the information required to determine
// whether a flag is set by non-standard means such as environment
- // variables is avaliable.
+ // variables is available.
//
// See https://github.com/urfave/cli/issues/294 for additional discussion
flags := c.Command.Flags
@@ -93,18 +94,26 @@ func (c *Context) IsSet(name string) bool {
val = val.Elem()
}
- envVarValue := val.FieldByName("EnvVar")
- if !envVarValue.IsValid() {
- return
+ filePathValue := val.FieldByName("FilePath")
+ if filePathValue.IsValid() {
+ eachName(filePathValue.String(), func(filePath string) {
+ if _, err := os.Stat(filePath); err == nil {
+ c.setFlags[name] = true
+ return
+ }
+ })
}
- eachName(envVarValue.String(), func(envVar string) {
- envVar = strings.TrimSpace(envVar)
- if _, ok := syscall.Getenv(envVar); ok {
- c.setFlags[name] = true
- return
- }
- })
+ envVarValue := val.FieldByName("EnvVar")
+ if envVarValue.IsValid() {
+ eachName(envVarValue.String(), func(envVar string) {
+ envVar = strings.TrimSpace(envVar)
+ if _, ok := syscall.Getenv(envVar); ok {
+ c.setFlags[name] = true
+ return
+ }
+ })
+ }
})
}
}
diff --git a/vendor/github.com/urfave/cli/flag.go b/vendor/github.com/urfave/cli/flag.go
index 877ff3523..d4a4d41a2 100644
--- a/vendor/github.com/urfave/cli/flag.go
+++ b/vendor/github.com/urfave/cli/flag.go
@@ -3,6 +3,7 @@ package cli
import (
"flag"
"fmt"
+ "io/ioutil"
"reflect"
"runtime"
"strconv"
@@ -37,6 +38,18 @@ var HelpFlag Flag = BoolFlag{
// to display a flag.
var FlagStringer FlagStringFunc = stringifyFlag
+// FlagNamePrefixer converts a full flag name and its placeholder into the help
+// message flag prefix. This is used by the default FlagStringer.
+var FlagNamePrefixer FlagNamePrefixFunc = prefixedNames
+
+// FlagEnvHinter annotates flag help message with the environment variable
+// details. This is used by the default FlagStringer.
+var FlagEnvHinter FlagEnvHintFunc = withEnvHint
+
+// FlagFileHinter annotates flag help message with the environment variable
+// details. This is used by the default FlagStringer.
+var FlagFileHinter FlagFileHintFunc = withFileHint
+
// FlagsByName is a slice of Flag.
type FlagsByName []Flag
@@ -45,7 +58,7 @@ func (f FlagsByName) Len() int {
}
func (f FlagsByName) Less(i, j int) bool {
- return f[i].GetName() < f[j].GetName()
+ return lexicographicLess(f[i].GetName(), f[j].GetName())
}
func (f FlagsByName) Swap(i, j int) {
@@ -112,15 +125,9 @@ func (f GenericFlag) Apply(set *flag.FlagSet) {
// provided by the user for parsing by the flag
func (f GenericFlag) ApplyWithError(set *flag.FlagSet) error {
val := f.Value
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- if err := val.Set(envVal); err != nil {
- return fmt.Errorf("could not parse %s as value for flag %s: %s", envVal, f.Name, err)
- }
- break
- }
+ if fileEnvVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ if err := val.Set(fileEnvVal); err != nil {
+ return fmt.Errorf("could not parse %s as value for flag %s: %s", fileEnvVal, f.Name, err)
}
}
@@ -163,21 +170,19 @@ func (f StringSliceFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f StringSliceFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- newVal := &StringSlice{}
- for _, s := range strings.Split(envVal, ",") {
- s = strings.TrimSpace(s)
- if err := newVal.Set(s); err != nil {
- return fmt.Errorf("could not parse %s as string value for flag %s: %s", envVal, f.Name, err)
- }
- }
- f.Value = newVal
- break
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ newVal := &StringSlice{}
+ for _, s := range strings.Split(envVal, ",") {
+ s = strings.TrimSpace(s)
+ if err := newVal.Set(s); err != nil {
+ return fmt.Errorf("could not parse %s as string value for flag %s: %s", envVal, f.Name, err)
}
}
+ if f.Value == nil {
+ f.Value = newVal
+ } else {
+ *f.Value = *newVal
+ }
}
eachName(f.Name, func(name string) {
@@ -226,21 +231,19 @@ func (f IntSliceFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f IntSliceFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- newVal := &IntSlice{}
- for _, s := range strings.Split(envVal, ",") {
- s = strings.TrimSpace(s)
- if err := newVal.Set(s); err != nil {
- return fmt.Errorf("could not parse %s as int slice value for flag %s: %s", envVal, f.Name, err)
- }
- }
- f.Value = newVal
- break
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ newVal := &IntSlice{}
+ for _, s := range strings.Split(envVal, ",") {
+ s = strings.TrimSpace(s)
+ if err := newVal.Set(s); err != nil {
+ return fmt.Errorf("could not parse %s as int slice value for flag %s: %s", envVal, f.Name, err)
}
}
+ if f.Value == nil {
+ f.Value = newVal
+ } else {
+ *f.Value = *newVal
+ }
}
eachName(f.Name, func(name string) {
@@ -289,21 +292,19 @@ func (f Int64SliceFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f Int64SliceFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- newVal := &Int64Slice{}
- for _, s := range strings.Split(envVal, ",") {
- s = strings.TrimSpace(s)
- if err := newVal.Set(s); err != nil {
- return fmt.Errorf("could not parse %s as int64 slice value for flag %s: %s", envVal, f.Name, err)
- }
- }
- f.Value = newVal
- break
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ newVal := &Int64Slice{}
+ for _, s := range strings.Split(envVal, ",") {
+ s = strings.TrimSpace(s)
+ if err := newVal.Set(s); err != nil {
+ return fmt.Errorf("could not parse %s as int64 slice value for flag %s: %s", envVal, f.Name, err)
}
}
+ if f.Value == nil {
+ f.Value = newVal
+ } else {
+ *f.Value = *newVal
+ }
}
eachName(f.Name, func(name string) {
@@ -324,23 +325,15 @@ func (f BoolFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f BoolFlag) ApplyWithError(set *flag.FlagSet) error {
val := false
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- if envVal == "" {
- val = false
- break
- }
-
- envValBool, err := strconv.ParseBool(envVal)
- if err != nil {
- return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err)
- }
-
- val = envValBool
- break
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ if envVal == "" {
+ val = false
+ } else {
+ envValBool, err := strconv.ParseBool(envVal)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err)
}
+ val = envValBool
}
}
@@ -364,23 +357,16 @@ func (f BoolTFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f BoolTFlag) ApplyWithError(set *flag.FlagSet) error {
val := true
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- if envVal == "" {
- val = false
- break
- }
- envValBool, err := strconv.ParseBool(envVal)
- if err != nil {
- return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err)
- }
-
- val = envValBool
- break
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ if envVal == "" {
+ val = false
+ } else {
+ envValBool, err := strconv.ParseBool(envVal)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err)
}
+ val = envValBool
}
}
@@ -403,14 +389,8 @@ func (f StringFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f StringFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- f.Value = envVal
- break
- }
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ f.Value = envVal
}
eachName(f.Name, func(name string) {
@@ -432,18 +412,12 @@ func (f IntFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f IntFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValInt, err := strconv.ParseInt(envVal, 0, 64)
- if err != nil {
- return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err)
- }
- f.Value = int(envValInt)
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValInt, err := strconv.ParseInt(envVal, 0, 64)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err)
}
+ f.Value = int(envValInt)
}
eachName(f.Name, func(name string) {
@@ -465,19 +439,13 @@ func (f Int64Flag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f Int64Flag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValInt, err := strconv.ParseInt(envVal, 0, 64)
- if err != nil {
- return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err)
- }
-
- f.Value = envValInt
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValInt, err := strconv.ParseInt(envVal, 0, 64)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err)
}
+
+ f.Value = envValInt
}
eachName(f.Name, func(name string) {
@@ -499,19 +467,13 @@ func (f UintFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f UintFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValInt, err := strconv.ParseUint(envVal, 0, 64)
- if err != nil {
- return fmt.Errorf("could not parse %s as uint value for flag %s: %s", envVal, f.Name, err)
- }
-
- f.Value = uint(envValInt)
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValInt, err := strconv.ParseUint(envVal, 0, 64)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as uint value for flag %s: %s", envVal, f.Name, err)
}
+
+ f.Value = uint(envValInt)
}
eachName(f.Name, func(name string) {
@@ -533,19 +495,13 @@ func (f Uint64Flag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f Uint64Flag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValInt, err := strconv.ParseUint(envVal, 0, 64)
- if err != nil {
- return fmt.Errorf("could not parse %s as uint64 value for flag %s: %s", envVal, f.Name, err)
- }
-
- f.Value = uint64(envValInt)
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValInt, err := strconv.ParseUint(envVal, 0, 64)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as uint64 value for flag %s: %s", envVal, f.Name, err)
}
+
+ f.Value = uint64(envValInt)
}
eachName(f.Name, func(name string) {
@@ -567,19 +523,13 @@ func (f DurationFlag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f DurationFlag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValDuration, err := time.ParseDuration(envVal)
- if err != nil {
- return fmt.Errorf("could not parse %s as duration for flag %s: %s", envVal, f.Name, err)
- }
-
- f.Value = envValDuration
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValDuration, err := time.ParseDuration(envVal)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as duration for flag %s: %s", envVal, f.Name, err)
}
+
+ f.Value = envValDuration
}
eachName(f.Name, func(name string) {
@@ -601,19 +551,13 @@ func (f Float64Flag) Apply(set *flag.FlagSet) {
// ApplyWithError populates the flag given the flag set and environment
func (f Float64Flag) ApplyWithError(set *flag.FlagSet) error {
- if f.EnvVar != "" {
- for _, envVar := range strings.Split(f.EnvVar, ",") {
- envVar = strings.TrimSpace(envVar)
- if envVal, ok := syscall.Getenv(envVar); ok {
- envValFloat, err := strconv.ParseFloat(envVal, 10)
- if err != nil {
- return fmt.Errorf("could not parse %s as float64 value for flag %s: %s", envVal, f.Name, err)
- }
-
- f.Value = float64(envValFloat)
- break
- }
+ if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok {
+ envValFloat, err := strconv.ParseFloat(envVal, 10)
+ if err != nil {
+ return fmt.Errorf("could not parse %s as float64 value for flag %s: %s", envVal, f.Name, err)
}
+
+ f.Value = float64(envValFloat)
}
eachName(f.Name, func(name string) {
@@ -697,6 +641,14 @@ func withEnvHint(envVar, str string) string {
return str + envText
}
+func withFileHint(filePath, str string) string {
+ fileText := ""
+ if filePath != "" {
+ fileText = fmt.Sprintf(" [%s]", filePath)
+ }
+ return str + fileText
+}
+
func flagValue(f Flag) reflect.Value {
fv := reflect.ValueOf(f)
for fv.Kind() == reflect.Ptr {
@@ -710,14 +662,29 @@ func stringifyFlag(f Flag) string {
switch f.(type) {
case IntSliceFlag:
- return withEnvHint(fv.FieldByName("EnvVar").String(),
- stringifyIntSliceFlag(f.(IntSliceFlag)))
+ return FlagFileHinter(
+ fv.FieldByName("FilePath").String(),
+ FlagEnvHinter(
+ fv.FieldByName("EnvVar").String(),
+ stringifyIntSliceFlag(f.(IntSliceFlag)),
+ ),
+ )
case Int64SliceFlag:
- return withEnvHint(fv.FieldByName("EnvVar").String(),
- stringifyInt64SliceFlag(f.(Int64SliceFlag)))
+ return FlagFileHinter(
+ fv.FieldByName("FilePath").String(),
+ FlagEnvHinter(
+ fv.FieldByName("EnvVar").String(),
+ stringifyInt64SliceFlag(f.(Int64SliceFlag)),
+ ),
+ )
case StringSliceFlag:
- return withEnvHint(fv.FieldByName("EnvVar").String(),
- stringifyStringSliceFlag(f.(StringSliceFlag)))
+ return FlagFileHinter(
+ fv.FieldByName("FilePath").String(),
+ FlagEnvHinter(
+ fv.FieldByName("EnvVar").String(),
+ stringifyStringSliceFlag(f.(StringSliceFlag)),
+ ),
+ )
}
placeholder, usage := unquoteUsage(fv.FieldByName("Usage").String())
@@ -744,8 +711,13 @@ func stringifyFlag(f Flag) string {
usageWithDefault := strings.TrimSpace(fmt.Sprintf("%s%s", usage, defaultValueString))
- return withEnvHint(fv.FieldByName("EnvVar").String(),
- fmt.Sprintf("%s\t%s", prefixedNames(fv.FieldByName("Name").String(), placeholder), usageWithDefault))
+ return FlagFileHinter(
+ fv.FieldByName("FilePath").String(),
+ FlagEnvHinter(
+ fv.FieldByName("EnvVar").String(),
+ fmt.Sprintf("%s\t%s", FlagNamePrefixer(fv.FieldByName("Name").String(), placeholder), usageWithDefault),
+ ),
+ )
}
func stringifyIntSliceFlag(f IntSliceFlag) string {
@@ -795,5 +767,20 @@ func stringifySliceFlag(usage, name string, defaultVals []string) string {
}
usageWithDefault := strings.TrimSpace(fmt.Sprintf("%s%s", usage, defaultVal))
- return fmt.Sprintf("%s\t%s", prefixedNames(name, placeholder), usageWithDefault)
+ return fmt.Sprintf("%s\t%s", FlagNamePrefixer(name, placeholder), usageWithDefault)
+}
+
+func flagFromFileEnv(filePath, envName string) (val string, ok bool) {
+ for _, envVar := range strings.Split(envName, ",") {
+ envVar = strings.TrimSpace(envVar)
+ if envVal, ok := syscall.Getenv(envVar); ok {
+ return envVal, true
+ }
+ }
+ for _, fileVar := range strings.Split(filePath, ",") {
+ if data, err := ioutil.ReadFile(fileVar); err == nil {
+ return string(data), true
+ }
+ }
+ return "", false
}
diff --git a/vendor/github.com/urfave/cli/flag_generated.go b/vendor/github.com/urfave/cli/flag_generated.go
index 491b61956..001576c8b 100644
--- a/vendor/github.com/urfave/cli/flag_generated.go
+++ b/vendor/github.com/urfave/cli/flag_generated.go
@@ -13,6 +13,7 @@ type BoolFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Destination *bool
}
@@ -60,6 +61,7 @@ type BoolTFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Destination *bool
}
@@ -107,6 +109,7 @@ type DurationFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value time.Duration
Destination *time.Duration
@@ -155,6 +158,7 @@ type Float64Flag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value float64
Destination *float64
@@ -200,11 +204,12 @@ func lookupFloat64(name string, set *flag.FlagSet) float64 {
// GenericFlag is a flag with type Generic
type GenericFlag struct {
- Name string
- Usage string
- EnvVar string
- Hidden bool
- Value Generic
+ Name string
+ Usage string
+ EnvVar string
+ FilePath string
+ Hidden bool
+ Value Generic
}
// String returns a readable representation of this value
@@ -250,6 +255,7 @@ type Int64Flag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value int64
Destination *int64
@@ -298,6 +304,7 @@ type IntFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value int
Destination *int
@@ -343,11 +350,12 @@ func lookupInt(name string, set *flag.FlagSet) int {
// IntSliceFlag is a flag with type *IntSlice
type IntSliceFlag struct {
- Name string
- Usage string
- EnvVar string
- Hidden bool
- Value *IntSlice
+ Name string
+ Usage string
+ EnvVar string
+ FilePath string
+ Hidden bool
+ Value *IntSlice
}
// String returns a readable representation of this value
@@ -390,11 +398,12 @@ func lookupIntSlice(name string, set *flag.FlagSet) []int {
// Int64SliceFlag is a flag with type *Int64Slice
type Int64SliceFlag struct {
- Name string
- Usage string
- EnvVar string
- Hidden bool
- Value *Int64Slice
+ Name string
+ Usage string
+ EnvVar string
+ FilePath string
+ Hidden bool
+ Value *Int64Slice
}
// String returns a readable representation of this value
@@ -440,6 +449,7 @@ type StringFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value string
Destination *string
@@ -485,11 +495,12 @@ func lookupString(name string, set *flag.FlagSet) string {
// StringSliceFlag is a flag with type *StringSlice
type StringSliceFlag struct {
- Name string
- Usage string
- EnvVar string
- Hidden bool
- Value *StringSlice
+ Name string
+ Usage string
+ EnvVar string
+ FilePath string
+ Hidden bool
+ Value *StringSlice
}
// String returns a readable representation of this value
@@ -535,6 +546,7 @@ type Uint64Flag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value uint64
Destination *uint64
@@ -583,6 +595,7 @@ type UintFlag struct {
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
Value uint
Destination *uint
diff --git a/vendor/github.com/urfave/cli/funcs.go b/vendor/github.com/urfave/cli/funcs.go
index cba5e6cb0..0036b1130 100644
--- a/vendor/github.com/urfave/cli/funcs.go
+++ b/vendor/github.com/urfave/cli/funcs.go
@@ -23,6 +23,22 @@ type CommandNotFoundFunc func(*Context, string)
// is displayed and the execution is interrupted.
type OnUsageErrorFunc func(context *Context, err error, isSubcommand bool) error
+// ExitErrHandlerFunc is executed if provided in order to handle ExitError values
+// returned by Actions and Before/After functions.
+type ExitErrHandlerFunc func(context *Context, err error)
+
// FlagStringFunc is used by the help generation to display a flag, which is
// expected to be a single line.
type FlagStringFunc func(Flag) string
+
+// FlagNamePrefixFunc is used by the default FlagStringFunc to create prefix
+// text for a flag's full name.
+type FlagNamePrefixFunc func(fullName, placeholder string) string
+
+// FlagEnvHintFunc is used by the default FlagStringFunc to annotate flag help
+// with the environment variable details.
+type FlagEnvHintFunc func(envVar, str string) string
+
+// FlagFileHintFunc is used by the default FlagStringFunc to annotate flag help
+// with the file path details.
+type FlagFileHintFunc func(filePath, str string) string
diff --git a/vendor/github.com/urfave/cli/generate-flag-types b/vendor/github.com/urfave/cli/generate-flag-types
old mode 100644
new mode 100755
index 7147381ce..135885731
--- a/vendor/github.com/urfave/cli/generate-flag-types
+++ b/vendor/github.com/urfave/cli/generate-flag-types
@@ -142,6 +142,7 @@ def _write_cli_flag_types(outfile, types):
Name string
Usage string
EnvVar string
+ FilePath string
Hidden bool
""".format(**typedef))
diff --git a/vendor/github.com/urfave/cli/runtests b/vendor/github.com/urfave/cli/runtests
old mode 100644
new mode 100755
diff --git a/vendor/github.com/urfave/cli/sort.go b/vendor/github.com/urfave/cli/sort.go
new file mode 100644
index 000000000..23d1c2f77
--- /dev/null
+++ b/vendor/github.com/urfave/cli/sort.go
@@ -0,0 +1,29 @@
+package cli
+
+import "unicode"
+
+// lexicographicLess compares strings alphabetically considering case.
+func lexicographicLess(i, j string) bool {
+ iRunes := []rune(i)
+ jRunes := []rune(j)
+
+ lenShared := len(iRunes)
+ if lenShared > len(jRunes) {
+ lenShared = len(jRunes)
+ }
+
+ for index := 0; index < lenShared; index++ {
+ ir := iRunes[index]
+ jr := jRunes[index]
+
+ if lir, ljr := unicode.ToLower(ir), unicode.ToLower(jr); lir != ljr {
+ return lir < ljr
+ }
+
+ if ir != jr {
+ return ir < jr
+ }
+ }
+
+ return i < j
+}
diff --git a/vendor/golang.org/x/net/publicsuffix/gen.go b/vendor/golang.org/x/net/publicsuffix/gen.go
deleted file mode 100644
index f85a3c32b..000000000
--- a/vendor/golang.org/x/net/publicsuffix/gen.go
+++ /dev/null
@@ -1,713 +0,0 @@
-// Copyright 2012 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
-
-package main
-
-// This program generates table.go and table_test.go based on the authoritative
-// public suffix list at https://publicsuffix.org/list/effective_tld_names.dat
-//
-// The version is derived from
-// https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat
-// and a human-readable form is at
-// https://github.com/publicsuffix/list/commits/master/public_suffix_list.dat
-//
-// To fetch a particular git revision, such as 5c70ccd250, pass
-// -url "https://raw.githubusercontent.com/publicsuffix/list/5c70ccd250/public_suffix_list.dat"
-// and -version "an explicit version string".
-
-import (
- "bufio"
- "bytes"
- "flag"
- "fmt"
- "go/format"
- "io"
- "io/ioutil"
- "net/http"
- "os"
- "regexp"
- "sort"
- "strings"
-
- "golang.org/x/net/idna"
-)
-
-const (
- // These sum of these four values must be no greater than 32.
- nodesBitsChildren = 10
- nodesBitsICANN = 1
- nodesBitsTextOffset = 15
- nodesBitsTextLength = 6
-
- // These sum of these four values must be no greater than 32.
- childrenBitsWildcard = 1
- childrenBitsNodeType = 2
- childrenBitsHi = 14
- childrenBitsLo = 14
-)
-
-var (
- maxChildren int
- maxTextOffset int
- maxTextLength int
- maxHi uint32
- maxLo uint32
-)
-
-func max(a, b int) int {
- if a < b {
- return b
- }
- return a
-}
-
-func u32max(a, b uint32) uint32 {
- if a < b {
- return b
- }
- return a
-}
-
-const (
- nodeTypeNormal = 0
- nodeTypeException = 1
- nodeTypeParentOnly = 2
- numNodeType = 3
-)
-
-func nodeTypeStr(n int) string {
- switch n {
- case nodeTypeNormal:
- return "+"
- case nodeTypeException:
- return "!"
- case nodeTypeParentOnly:
- return "o"
- }
- panic("unreachable")
-}
-
-const (
- defaultURL = "https://publicsuffix.org/list/effective_tld_names.dat"
- gitCommitURL = "https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat"
-)
-
-var (
- labelEncoding = map[string]uint32{}
- labelsList = []string{}
- labelsMap = map[string]bool{}
- rules = []string{}
-
- // validSuffixRE is used to check that the entries in the public suffix
- // list are in canonical form (after Punycode encoding). Specifically,
- // capital letters are not allowed.
- validSuffixRE = regexp.MustCompile(`^[a-z0-9_\!\*\-\.]+$`)
-
- shaRE = regexp.MustCompile(`"sha":"([^"]+)"`)
- dateRE = regexp.MustCompile(`"committer":{[^{]+"date":"([^"]+)"`)
-
- comments = flag.Bool("comments", false, "generate table.go comments, for debugging")
- subset = flag.Bool("subset", false, "generate only a subset of the full table, for debugging")
- url = flag.String("url", defaultURL, "URL of the publicsuffix.org list. If empty, stdin is read instead")
- v = flag.Bool("v", false, "verbose output (to stderr)")
- version = flag.String("version", "", "the effective_tld_names.dat version")
-)
-
-func main() {
- if err := main1(); err != nil {
- fmt.Fprintln(os.Stderr, err)
- os.Exit(1)
- }
-}
-
-func main1() error {
- flag.Parse()
- if nodesBitsTextLength+nodesBitsTextOffset+nodesBitsICANN+nodesBitsChildren > 32 {
- return fmt.Errorf("not enough bits to encode the nodes table")
- }
- if childrenBitsLo+childrenBitsHi+childrenBitsNodeType+childrenBitsWildcard > 32 {
- return fmt.Errorf("not enough bits to encode the children table")
- }
- if *version == "" {
- if *url != defaultURL {
- return fmt.Errorf("-version was not specified, and the -url is not the default one")
- }
- sha, date, err := gitCommit()
- if err != nil {
- return err
- }
- *version = fmt.Sprintf("publicsuffix.org's public_suffix_list.dat, git revision %s (%s)", sha, date)
- }
- var r io.Reader = os.Stdin
- if *url != "" {
- res, err := http.Get(*url)
- if err != nil {
- return err
- }
- if res.StatusCode != http.StatusOK {
- return fmt.Errorf("bad GET status for %s: %d", *url, res.Status)
- }
- r = res.Body
- defer res.Body.Close()
- }
-
- var root node
- icann := false
- br := bufio.NewReader(r)
- for {
- s, err := br.ReadString('\n')
- if err != nil {
- if err == io.EOF {
- break
- }
- return err
- }
- s = strings.TrimSpace(s)
- if strings.Contains(s, "BEGIN ICANN DOMAINS") {
- icann = true
- continue
- }
- if strings.Contains(s, "END ICANN DOMAINS") {
- icann = false
- continue
- }
- if s == "" || strings.HasPrefix(s, "//") {
- continue
- }
- s, err = idna.ToASCII(s)
- if err != nil {
- return err
- }
- if !validSuffixRE.MatchString(s) {
- return fmt.Errorf("bad publicsuffix.org list data: %q", s)
- }
-
- if *subset {
- switch {
- case s == "ac.jp" || strings.HasSuffix(s, ".ac.jp"):
- case s == "ak.us" || strings.HasSuffix(s, ".ak.us"):
- case s == "ao" || strings.HasSuffix(s, ".ao"):
- case s == "ar" || strings.HasSuffix(s, ".ar"):
- case s == "arpa" || strings.HasSuffix(s, ".arpa"):
- case s == "cy" || strings.HasSuffix(s, ".cy"):
- case s == "dyndns.org" || strings.HasSuffix(s, ".dyndns.org"):
- case s == "jp":
- case s == "kobe.jp" || strings.HasSuffix(s, ".kobe.jp"):
- case s == "kyoto.jp" || strings.HasSuffix(s, ".kyoto.jp"):
- case s == "om" || strings.HasSuffix(s, ".om"):
- case s == "uk" || strings.HasSuffix(s, ".uk"):
- case s == "uk.com" || strings.HasSuffix(s, ".uk.com"):
- case s == "tw" || strings.HasSuffix(s, ".tw"):
- case s == "zw" || strings.HasSuffix(s, ".zw"):
- case s == "xn--p1ai" || strings.HasSuffix(s, ".xn--p1ai"):
- // xn--p1ai is Russian-Cyrillic "рф".
- default:
- continue
- }
- }
-
- rules = append(rules, s)
-
- nt, wildcard := nodeTypeNormal, false
- switch {
- case strings.HasPrefix(s, "*."):
- s, nt = s[2:], nodeTypeParentOnly
- wildcard = true
- case strings.HasPrefix(s, "!"):
- s, nt = s[1:], nodeTypeException
- }
- labels := strings.Split(s, ".")
- for n, i := &root, len(labels)-1; i >= 0; i-- {
- label := labels[i]
- n = n.child(label)
- if i == 0 {
- if nt != nodeTypeParentOnly && n.nodeType == nodeTypeParentOnly {
- n.nodeType = nt
- }
- n.icann = n.icann && icann
- n.wildcard = n.wildcard || wildcard
- }
- labelsMap[label] = true
- }
- }
- labelsList = make([]string, 0, len(labelsMap))
- for label := range labelsMap {
- labelsList = append(labelsList, label)
- }
- sort.Strings(labelsList)
-
- if err := generate(printReal, &root, "table.go"); err != nil {
- return err
- }
- if err := generate(printTest, &root, "table_test.go"); err != nil {
- return err
- }
- return nil
-}
-
-func generate(p func(io.Writer, *node) error, root *node, filename string) error {
- buf := new(bytes.Buffer)
- if err := p(buf, root); err != nil {
- return err
- }
- b, err := format.Source(buf.Bytes())
- if err != nil {
- return err
- }
- return ioutil.WriteFile(filename, b, 0644)
-}
-
-func gitCommit() (sha, date string, retErr error) {
- res, err := http.Get(gitCommitURL)
- if err != nil {
- return "", "", err
- }
- if res.StatusCode != http.StatusOK {
- return "", "", fmt.Errorf("bad GET status for %s: %d", gitCommitURL, res.Status)
- }
- defer res.Body.Close()
- b, err := ioutil.ReadAll(res.Body)
- if err != nil {
- return "", "", err
- }
- if m := shaRE.FindSubmatch(b); m != nil {
- sha = string(m[1])
- }
- if m := dateRE.FindSubmatch(b); m != nil {
- date = string(m[1])
- }
- if sha == "" || date == "" {
- retErr = fmt.Errorf("could not find commit SHA and date in %s", gitCommitURL)
- }
- return sha, date, retErr
-}
-
-func printTest(w io.Writer, n *node) error {
- fmt.Fprintf(w, "// generated by go run gen.go; DO NOT EDIT\n\n")
- fmt.Fprintf(w, "package publicsuffix\n\nvar rules = [...]string{\n")
- for _, rule := range rules {
- fmt.Fprintf(w, "%q,\n", rule)
- }
- fmt.Fprintf(w, "}\n\nvar nodeLabels = [...]string{\n")
- if err := n.walk(w, printNodeLabel); err != nil {
- return err
- }
- fmt.Fprintf(w, "}\n")
- return nil
-}
-
-func printReal(w io.Writer, n *node) error {
- const header = `// generated by go run gen.go; DO NOT EDIT
-
-package publicsuffix
-
-const version = %q
-
-const (
- nodesBitsChildren = %d
- nodesBitsICANN = %d
- nodesBitsTextOffset = %d
- nodesBitsTextLength = %d
-
- childrenBitsWildcard = %d
- childrenBitsNodeType = %d
- childrenBitsHi = %d
- childrenBitsLo = %d
-)
-
-const (
- nodeTypeNormal = %d
- nodeTypeException = %d
- nodeTypeParentOnly = %d
-)
-
-// numTLD is the number of top level domains.
-const numTLD = %d
-
-`
- fmt.Fprintf(w, header, *version,
- nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength,
- childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo,
- nodeTypeNormal, nodeTypeException, nodeTypeParentOnly, len(n.children))
-
- text := combineText(labelsList)
- if text == "" {
- return fmt.Errorf("internal error: makeText returned no text")
- }
- for _, label := range labelsList {
- offset, length := strings.Index(text, label), len(label)
- if offset < 0 {
- return fmt.Errorf("internal error: could not find %q in text %q", label, text)
- }
- maxTextOffset, maxTextLength = max(maxTextOffset, offset), max(maxTextLength, length)
- if offset >= 1<= 1< 64 {
- n, plus = 64, " +"
- }
- fmt.Fprintf(w, "%q%s\n", text[:n], plus)
- text = text[n:]
- }
-
- if err := n.walk(w, assignIndexes); err != nil {
- return err
- }
-
- fmt.Fprintf(w, `
-
-// nodes is the list of nodes. Each node is represented as a uint32, which
-// encodes the node's children, wildcard bit and node type (as an index into
-// the children array), ICANN bit and text.
-//
-// If the table was generated with the -comments flag, there is a //-comment
-// after each node's data. In it is the nodes-array indexes of the children,
-// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The
-// nodeType is printed as + for normal, ! for exception, and o for parent-only
-// nodes that have children but don't match a domain label in their own right.
-// An I denotes an ICANN domain.
-//
-// The layout within the uint32, from MSB to LSB, is:
-// [%2d bits] unused
-// [%2d bits] children index
-// [%2d bits] ICANN bit
-// [%2d bits] text index
-// [%2d bits] text length
-var nodes = [...]uint32{
-`,
- 32-nodesBitsChildren-nodesBitsICANN-nodesBitsTextOffset-nodesBitsTextLength,
- nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength)
- if err := n.walk(w, printNode); err != nil {
- return err
- }
- fmt.Fprintf(w, `}
-
-// children is the list of nodes' children, the parent's wildcard bit and the
-// parent's node type. If a node has no children then their children index
-// will be in the range [0, 6), depending on the wildcard bit and node type.
-//
-// The layout within the uint32, from MSB to LSB, is:
-// [%2d bits] unused
-// [%2d bits] wildcard bit
-// [%2d bits] node type
-// [%2d bits] high nodes index (exclusive) of children
-// [%2d bits] low nodes index (inclusive) of children
-var children=[...]uint32{
-`,
- 32-childrenBitsWildcard-childrenBitsNodeType-childrenBitsHi-childrenBitsLo,
- childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo)
- for i, c := range childrenEncoding {
- s := "---------------"
- lo := c & (1<> childrenBitsLo) & (1<>(childrenBitsLo+childrenBitsHi)) & (1<>(childrenBitsLo+childrenBitsHi+childrenBitsNodeType) != 0
- if *comments {
- fmt.Fprintf(w, "0x%08x, // c0x%04x (%s)%s %s\n",
- c, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType))
- } else {
- fmt.Fprintf(w, "0x%x,\n", c)
- }
- }
- fmt.Fprintf(w, "}\n\n")
- fmt.Fprintf(w, "// max children %d (capacity %d)\n", maxChildren, 1<= 1<= 1<= 1< 0 && ss[0] == "" {
- ss = ss[1:]
- }
- return ss
-}
-
-// crush combines a list of strings, taking advantage of overlaps. It returns a
-// single string that contains each input string as a substring.
-func crush(ss []string) string {
- maxLabelLen := 0
- for _, s := range ss {
- if maxLabelLen < len(s) {
- maxLabelLen = len(s)
- }
- }
-
- for prefixLen := maxLabelLen; prefixLen > 0; prefixLen-- {
- prefixes := makePrefixMap(ss, prefixLen)
- for i, s := range ss {
- if len(s) <= prefixLen {
- continue
- }
- mergeLabel(ss, i, prefixLen, prefixes)
- }
- }
-
- return strings.Join(ss, "")
-}
-
-// mergeLabel merges the label at ss[i] with the first available matching label
-// in prefixMap, where the last "prefixLen" characters in ss[i] match the first
-// "prefixLen" characters in the matching label.
-// It will merge ss[i] repeatedly until no more matches are available.
-// All matching labels merged into ss[i] are replaced by "".
-func mergeLabel(ss []string, i, prefixLen int, prefixes prefixMap) {
- s := ss[i]
- suffix := s[len(s)-prefixLen:]
- for _, j := range prefixes[suffix] {
- // Empty strings mean "already used." Also avoid merging with self.
- if ss[j] == "" || i == j {
- continue
- }
- if *v {
- fmt.Fprintf(os.Stderr, "%d-length overlap at (%4d,%4d): %q and %q share %q\n",
- prefixLen, i, j, ss[i], ss[j], suffix)
- }
- ss[i] += ss[j][prefixLen:]
- ss[j] = ""
- // ss[i] has a new suffix, so merge again if possible.
- // Note: we only have to merge again at the same prefix length. Shorter
- // prefix lengths will be handled in the next iteration of crush's for loop.
- // Can there be matches for longer prefix lengths, introduced by the merge?
- // I believe that any such matches would by necessity have been eliminated
- // during substring removal or merged at a higher prefix length. For
- // instance, in crush("abc", "cde", "bcdef"), combining "abc" and "cde"
- // would yield "abcde", which could be merged with "bcdef." However, in
- // practice "cde" would already have been elimintated by removeSubstrings.
- mergeLabel(ss, i, prefixLen, prefixes)
- return
- }
-}
-
-// prefixMap maps from a prefix to a list of strings containing that prefix. The
-// list of strings is represented as indexes into a slice of strings stored
-// elsewhere.
-type prefixMap map[string][]int
-
-// makePrefixMap constructs a prefixMap from a slice of strings.
-func makePrefixMap(ss []string, prefixLen int) prefixMap {
- prefixes := make(prefixMap)
- for i, s := range ss {
- // We use < rather than <= because if a label matches on a prefix equal to
- // its full length, that's actually a substring match handled by
- // removeSubstrings.
- if prefixLen < len(s) {
- prefix := s[:prefixLen]
- prefixes[prefix] = append(prefixes[prefix], i)
- }
- }
-
- return prefixes
-}
diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go
index 549511c88..bf20c036b 100644
--- a/vendor/golang.org/x/net/publicsuffix/table.go
+++ b/vendor/golang.org/x/net/publicsuffix/table.go
@@ -2,10 +2,10 @@
package publicsuffix
-const version = "publicsuffix.org's public_suffix_list.dat, git revision 38b238d6324042f2c2e6270459d1f4ccfe789fba (2017-08-28T20:09:01Z)"
+const version = "publicsuffix.org's public_suffix_list.dat, git revision 915565885d0fbd25caf7d8b339cd3478f558da94 (2016-10-19T08:16:09Z)"
const (
- nodesBitsChildren = 10
+ nodesBitsChildren = 9
nodesBitsICANN = 1
nodesBitsTextOffset = 15
nodesBitsTextLength = 6
@@ -23,459 +23,446 @@ const (
)
// numTLD is the number of top level domains.
-const numTLD = 1557
+const numTLD = 1553
// Text is the combined text of all labels.
-const text = "bifukagawalterbihorologyukuhashimoichinosekigaharaxastronomy-gat" +
- "ewaybomloans3-ca-central-1bikedagestangeorgeorgiabilbaogakihokum" +
- "akogengerdalces3-website-us-west-1billustrationikinuyamashinashi" +
- "kitchenikkoebenhavnikolaevents3-website-us-west-2bioddabirdartce" +
- "nterprisesakikugawarszawashingtondclkariyameldalindesnesakurainv" +
- "estmentsakyotanabellunord-odalivornomutashinainzais-a-candidateb" +
- "irkenesoddtangenovaraumalopolskanlandrayddnsfreebox-oslocus-3bir" +
- "thplacebitballooningladefinimakanegasakindlegokasells-for-lessal" +
- "angenikonantankarlsoyurihonjoyentattoolsztynsettlersalondonetska" +
- "rmoyusuharabjarkoyusuisserveexchangebjerkreimbalsfjordgcahcesuol" +
- "ocalhostrodawaraugustowadaegubalsanagochihayaakasakawaharanzanne" +
- "frankfurtarumizusawabkhaziamallamagazineat-url-o-g-i-naturalhist" +
- "orymuseumcentereviewskrakowebredirectmeteorappaleobihirosakikami" +
- "jimabogadocscbgdyniabruzzoologicalvinklein-addrammenuernberggfar" +
- "merseinebinagisochildrensgardenaturalsciencesnaturelles3-ap-nort" +
- "heast-2ixboxenapponazure-mobileastcoastaldefenceatonsberg12000em" +
- "mafanconagawakayamadridvagsoyericssonyoursidealerimo-i-ranaamesj" +
- "evuemielno-ip6bjugninohekinannestadraydnsaltdalombardiamondsalva" +
- "dordalibabalatinord-frontierblockbustermezjavald-aostaplesalzbur" +
- "glassassinationalheritagematsubarakawagoebloombergbauerninomiyak" +
- "onojosoyrorosamegawabloxcmsamnangerbluedancebmoattachmentsamsclu" +
- "bindalombardynamisches-dnsamsungleezebmsandvikcoromantovalle-d-a" +
- "ostathellebmwedeployuufcfanirasakis-a-catererbnpparibaselburgliw" +
- "icebnrwegroweibolzanorddalomzaporizhzheguris-a-celticsfanishiaza" +
- "is-a-chefarmsteadrivelandrobaknoluoktachikawalbrzycharternidrudu" +
- "nsanfranciscofreakunedre-eikerbonnishigoppdalorenskoglobalashovh" +
- "achinohedmarkarpaczeladzlglobodoes-itvedestrandupontariobookingl" +
- "ogoweirboomladbrokesangobootsanjournalismailillesandefjordurbana" +
- "mexnetlifyis-a-conservativefsnillfjordurhamburgloppenzaogashimad" +
- "achicagoboatsannanishiharaboschaefflerdalotenkawabostikaruizawab" +
- "ostonakijinsekikogentingmbhartiffanyuzawabotanicalgardenishiizun" +
- "azukis-a-cpadualstackspace-to-rentalstomakomaibarabotanicgardeni" +
- "shikatakayamatta-varjjataxihuanishikatsuragit-repostfoldnavybota" +
- "nybouncemerckmsdnipropetrovskjervoyagebounty-fullensakerryproper" +
- "tiesannohelplfinancialotteboutiquebecngminakamichiharabozentsuji" +
- "iebplacedekagaminordkappgafanpachigasakievennodesashibetsukumiya" +
- "mazonawsaarlandyndns-at-workinggroupalmspringsakerbrandywinevall" +
- "eybrasiliabresciabrindisibenikebristoloseyouripirangapartmentsan" +
- "okarumaifarsundyndns-blogdnsantabarbarabritishcolumbialowiezachp" +
- "omorskienishikawazukamitsuebroadcastlefrakkestadyndns-freeboxost" +
- "rowwlkpmgmodenakatombetsumitakagiizebroadwaybroke-itgorybrokerbr" +
- "onnoysundyndns-homednsantacruzsantafedjeffersonishimerabrotherme" +
- "saverdeatnurembergmxfinitybrowsersafetymarketsanukis-a-cubicle-s" +
- "lavellinotteroybrumunddalottokonamegatakasugais-a-democratjeldsu" +
- "ndyndns-ipamperedchefashionishinomiyashironobrunelasticbeanstalk" +
- "asaokaminoyamaxunusualpersonishinoomotegobrusselsaotomeloyalistj" +
- "ordalshalsenishinoshimattelefonicarbonia-iglesias-carboniaiglesi" +
- "ascarboniabruxellesapodlasiellaktyubinskiptveterinairealtorlandy" +
- "ndns-mailouvrehabmerbryanskleppanamabrynewjerseybuskerudinewport" +
- "lligatjmaxxxjaworznowtv-infoodnetworkshoppingrimstadyndns-office" +
- "-on-the-webcambulancebuzenishiokoppegardyndns-picsapporobuzzpana" +
- "sonicateringebugattipschlesischesardegnamsskoganeis-a-designerim" +
- "arumorimachidabwfastlylbaltimore-og-romsdalillyokozehimejibigawa" +
- "ukraanghkeymachinewhampshirebungoonord-aurdalpha-myqnapcloudacce" +
- "sscambridgestonemurorangeiseiyoichippubetsubetsugaruhrhcloudns3-" +
- "eu-central-1bzhitomirumalselvendrellowiczest-le-patronishitosash" +
- "imizunaminamiashigaracompute-1computerhistoryofscience-fictionco" +
- "msecuritytacticsaseboknowsitallvivano-frankivskasuyanagawacondos" +
- "hichinohealth-carereformitakeharaconferenceconstructionconsulado" +
- "esntexistanbullensvanguardyndns-workisboringrueconsultanthropolo" +
- "gyconsultingvollcontactoyonocontemporaryarteducationalchikugodoh" +
- "aruovatoyookannamifunecontractorskenconventureshinodearthdfcbank" +
- "aszubycookingchannelsdvrdnsdojoetsuwanouchikujogaszczytnordreisa" +
- "-geekatowicecoolkuszkolahppiacenzaganquannakadomarineustarhubsas" +
- "katchewancooperaunitemp-dnsassaris-a-gurulsandoycopenhagencyclop" +
- "edichernihivanovodkagoshimalvikashibatakashimaseratis-a-financia" +
- "ladvisor-aurdalucaniacorsicagliaridagawashtenawdev-myqnapcloudap" +
- "plebtimnetzwhoswhokksundyndns1corvettenrightathomeftparliamentoy" +
- "osatoyakokonoecosenzakopanerairguardiann-arboretumbriacosidnsfor" +
- "-better-thanawatchesatxn--12c1fe0bradescorporationcostumedio-cam" +
- "pidano-mediocampidanomediocouchpotatofriesaudacouncilcouponsauhe" +
- "radynnsavannahgacoursesaves-the-whalessandria-trani-barletta-and" +
- "riatranibarlettaandriacqhachiojiyahoooshikamaishimodatecranbrook" +
- "uwanalyticsavonaplesaxocreditcardynulvikatsushikabeeldengeluidyn" +
- "v6creditunioncremonashgabadaddjambylcrewiiheyakagecricketrzyncri" +
- "meast-kazakhstanangercrotonexus-2crownprovidercrsvparmacruisesbs" +
- "chokoladencryptonomichigangwoncuisinellair-traffic-controlleycul" +
- "turalcentertainmentoyotaris-a-hard-workercuneocupcakecxn--12cfi8" +
- "ixb8lcyberlevagangaviikanonjis-a-huntercymrussiacyonabarunzencyo" +
- "utheworkpccwildlifedorainfracloudcontrolledogawarabikomaezakirun" +
- "orfolkebibleikangerfidonnakaniikawatanagurafieldfiguerestauranto" +
- "yotsukaidownloadfilateliafilegearfilminamiechizenfinalfinancefin" +
- "eartscientistockholmestrandfinlandfinnoyfirebaseapparscjohnsonfi" +
- "renzefirestonefirmdaleirvikatsuyamasfjordenfishingolffanscotland" +
- "fitjarfitnessettlementoyourafjalerflesbergulenflickragerotikakeg" +
- "awaflightscrapper-siteflirflogintogurafloraflorencefloridavvesii" +
- "dazaifudaigojomedizinhistorischescrappingunmarburguovdageaidnusl" +
- "ivinghistoryfloripaderbornfloristanohatakahamangyshlakasamatsudo" +
- "ntexisteingeekaufenflorogerserveftpartis-a-landscaperflowerserve" +
- "game-serversicherungushikamifuranortonflynnhostingxn--1ck2e1bamb" +
- "leclercasadelamonedatingjerstadotsuruokakudamatsuemrflynnhubanan" +
- "arepublicaseihichisobetsuitainairforcechirealmetlifeinsuranceu-1" +
- "fndfor-ourfor-someethnologyfor-theaterforexrothachirogatakahatak" +
- "aishimogosenforgotdnservehalflifestyleforli-cesena-forlicesenafo" +
- "rlikescandynamic-dnservehttpartnerservehumourforsaleitungsenfors" +
- "andasuolodingenfortmissoulancashireggio-calabriafortworthadanose" +
- "gawaforuminamifuranofosneserveirchernovtsykkylvenetogakushimotog" +
- "anewyorkshirecipesaro-urbino-pesarourbinopesaromasvuotnaharimamu" +
- "rogawassamukawataricohdatsunanjoburgriwataraidyndns-remotewdyndn" +
- "s-serverdaluccapitalonewspaperfotaruis-a-lawyerfoxfordebianfredr" +
- "ikstadtvserveminecraftoystre-slidrettozawafreeddnsgeekgalaxyfree" +
- "masonryfreesitexascolipicenogiftservemp3freetlservep2partservepi" +
- "cservequakefreiburgfreightcminamiiselectozsdeloittevadsoccertifi" +
- "cationfresenius-4fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-v" +
- "egiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafr" +
- "iuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafri" +
- "uliveneziagiuliafriulivgiuliafrlfroganservesarcasmatartanddesign" +
- "frognfrolandfrom-akrehamnfrom-alfrom-arfrom-azfrom-capebretonami" +
- "astalowa-wolayangroupartyfrom-coguchikuzenfrom-ctrani-andria-bar" +
- "letta-trani-andriafrom-dchirurgiens-dentistes-en-francefrom-dedy" +
- "n-ip24from-flanderservicesettsurgeonshalloffamemergencyachtsevas" +
- "topolefrom-gausdalfrom-higashiagatsumagoizumizakirkenesevenassis" +
- "icilyfrom-iafrom-idfrom-ilfrom-incheonfrom-ksewilliamhillfrom-ky" +
- "owariasahikawafrom-lancasterfrom-maniwakuratextileksvikautokeino" +
- "from-mdfrom-megurokunohealthcareersharis-a-liberalfrom-microsoft" +
- "bankazofrom-mnfrom-modellingfrom-msharpasadenamsosnowiechiryukyu" +
- "ragifuchungbukharafrom-mtnfrom-nchitachinakagawatchandclockashih" +
- "arafrom-ndfrom-nefrom-nhktraniandriabarlettatraniandriafrom-njcb" +
- "nlfrom-nminamiizukamishihoronobeauxartsandcraftshawaiijimarugame" +
- "-hostrolekamikitayamatsuris-a-libertarianfrom-nvalled-aostatoilf" +
- "rom-nyfrom-ohkurafrom-oketohmannorth-kazakhstanfrom-orfrom-padov" +
- "aksdalfrom-pratohnoshooguyfrom-rivnefrom-schoenbrunnfrom-sdfrom-" +
- "tnfrom-txn--1ctwolominamatakkokamiokamiminershellaspeziafrom-uta" +
- "zuerichardlillehammerfeste-ipassagenshimojis-a-linux-useranishia" +
- "ritabashijonawatefrom-val-daostavalleyfrom-vtranoyfrom-wafrom-wi" +
- "elunnerfrom-wvalledaostavangerfrom-wyfrosinonefrostalbanshimokaw" +
- "afroyahikobeardubaiduckdnshimokitayamafstavernfujiiderafujikawag" +
- "uchikonefujiminohtawaramotoineppubolognakanotoddenfujinomiyadafu" +
- "jiokayamansionshimonitayanagithubusercontentransportransurlfujis" +
- "atoshonairtelecitychyattorneyagawakuyabukidsmynasushiobaragusart" +
- "shimonosekikawafujisawafujishiroishidakabiratoridefenseljordfuji" +
- "tsurugashimaritimekeepingfujixeroxn--1lqs03nfujiyoshidafukayabea" +
- "tshimosuwalkis-a-llamarylandfukuchiyamadafukudominichitosetogits" +
- "uldalucernefukuis-a-musicianfukumitsubishigakirovogradoyfukuokaz" +
- "akiryuohadselfipassenger-associationfukuroishikarikaturindalfuku" +
- "sakisarazurewebsiteshikagamiishibukawafukuyamagatakaharufunabash" +
- "iriuchinadafunagatakahashimamakishiwadafunahashikamiamakusatsuma" +
- "sendaisennangonohejis-a-nascarfanfundaciofuoiskujukuriyamanxn--1" +
- "lqs71dfuosskoczowinbarcelonagasakikonaikawachinaganoharamcoacham" +
- "pionshiphoptobishimaizurugbydgoszczecinemakeupowiathletajimabari" +
- "akembuchikumagayagawakkanaibetsubamericanfamilydscloudcontrolapp" +
- "spotagerfurnitureggio-emilia-romagnakasatsunairtrafficplexus-1fu" +
- "rubiraquarellebesbyenglandfurudonostiaarpaviancarrierfurukawais-" +
- "a-nurservebbshimotsukefusodegaurafussagamiharafutabayamaguchinom" +
- "igawafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiaf" +
- "uturecmshimotsumafuturehostingfuturemailingfvgfylkesbiblackfrida" +
- "yfyresdalhangglidinghangoutsystemscloudfunctionshinichinanhannan" +
- "mokuizumodernhannotaireshinjournalisteinkjerusalembroideryhanyuz" +
- "enhapmirhareidsbergenharstadharvestcelebrationhasamarcheapgfoggi" +
- "ahasaminami-alpssells-itrapaniimimatakatoris-a-playerhashbanghas" +
- "udahasura-appharmacienshinjukumanohasvikazunohatogayaitakamoriok" +
- "aluganskolevangerhatoyamazakitahiroshimarnardalhatsukaichikaisei" +
- "s-a-republicancerresearchaeologicaliforniahattfjelldalhayashimam" +
- "otobungotakadapliernewmexicodyn-vpnplusterhazuminobusellsyourhom" +
- "egoodshinkamigotoyohashimotoshimahboehringerikehelsinkitakamiizu" +
- "misanofidelityhembygdsforbundhemneshinshinotsurgeryhemsedalhepfo" +
- "rgeherokussldheroyhgtvallee-aosteroyhigashichichibunkyonanaoshim" +
- "ageandsoundandvisionhigashihiroshimanehigashiizumozakitakatakana" +
- "beautysfjordhigashikagawahigashikagurasoedahigashikawakitaaikita" +
- "kyushuaiahigashikurumeiwamarriottravelchannelhigashimatsushimars" +
- "hallstatebankddielddanuorrikuzentakataiwanairlinebraskaunjargals" +
- "aceohigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycle" +
- "shinshirohigashinarusembokukitamidoris-a-rockstarachowicehigashi" +
- "nehigashiomihachimanchesterhigashiosakasayamanakakogawahigashish" +
- "irakawamatakanezawahigashisumiyoshikawaminamiaikitamotosumy-rout" +
- "erhigashitsunotogawahigashiurausukitanakagusukumoduminamiminowah" +
- "igashiyamatokoriyamanashifteditchyouripharmacyshintokushimahigas" +
- "hiyodogawahigashiyoshinogaris-a-socialistmein-vigorgehiraizumisa" +
- "tohobby-sitehirakatashinagawahiranais-a-soxfanhirarahiratsukagaw" +
- "ahirayaizuwakamatsubushikusakadogawahistorichouseshintomikasahar" +
- "ahitachiomiyagildeskaliszhitachiotagooglecodespotravelersinsuran" +
- "cehitraeumtgeradellogliastradinghjartdalhjelmelandholeckobierzyc" +
- "eholidayhomeiphdhomelinkfhappouhomelinuxn--1qqw23ahomeofficehome" +
- "securitymaceratakaokamakurazakitashiobarahomesecuritypchloehomes" +
- "enseminehomeunixn--2m4a15ehondahoneywellbeingzonehongopocznorthw" +
- "esternmutualhonjyoitakarazukameokameyamatotakadahornindalhorseou" +
- "lminamiogunicomcastresistancehortendofinternet-dnshinyoshitomiok" +
- "amogawahospitalhoteleshiojirishirifujiedahotmailhoyangerhoylande" +
- "troitskydivinghumanitieshioyanaizuhurdalhurumajis-a-studentalhyl" +
- "lestadhyogoris-a-teacherkassymantechnologyhyugawarahyundaiwafune" +
- "hzchocolatemasekashiwarajewishartgalleryjfkharkovalleeaosteigenj" +
- "gorajlcube-serverrankoshigayakumoldelmenhorstagejlljmphilipsynol" +
- "ogy-diskstationjnjcphilatelyjoyokaichibahccavuotnagareyamalborkd" +
- "alwaysdatabaseballangenoamishirasatochigiessensiositelemarkherso" +
- "njpmorganjpnjprshiraokananporovigotpantheonsitejuniperjurkoshuna" +
- "ntokigawakosugekotohiradomainshiratakahagitlaborkotourakouhokuta" +
- "makis-an-artistcgrouphiladelphiaareadmyblogsitekounosupplieshish" +
- "ikuis-an-engineeringkouyamashikokuchuokouzushimasoykozagawakozak" +
- "is-an-entertainerkozowindmillkpnkppspdnshisognekrasnodarkredston" +
- "ekristiansandcatshisuifuelblagdenesnaaseralingenkainanaejrietisa" +
- "latinabenonichoshibuyachiyodavvenjargaulardalutskasukabedzin-the" +
- "-bandaioiraseeklogest-mon-blogueurovisionisshingugekristiansundk" +
- "rodsheradkrokstadelvaldaostarnbergkryminamisanrikubetsupportrent" +
- "ino-alto-adigekumatorinokumejimasudakumenanyokkaichiropractichoy" +
- "odobashichikashukujitawarakunisakis-bykunitachiarailwaykunitomig" +
- "usukumamotoyamassa-carrara-massacarraramassabusinessebyklegalloc" +
- "alhistoryggeelvinckhmelnytskyivanylvenicekunneppulawykunstsammlu" +
- "ngkunstunddesignkuokgrouphoenixn--30rr7ykureggioemiliaromagnakay" +
- "amatsumaebashikshacknetrentino-altoadigekurgankurobelaudiblebork" +
- "angerkurogimilanokuroisoftwarendalenugkuromatsunais-certifieduca" +
- "torahimeshimamateramochizukirakurotakikawasakis-foundationkushir" +
- "ogawakustanais-gonekusupplykutchanelkutnokuzumakis-into-animelbo" +
- "urnekvafjordkvalsundkvamlidlugolekafjordkvanangenkvinesdalkvinnh" +
- "eradkviteseidskogkvitsoykwpspiegelkzmisugitokorozawamitourismola" +
- "ngevagrarchaeologyeongbuknx-serveronakatsugawamitoyoakemiuramiya" +
- "zumiyotamanomjondalenmlbfanmonstermonticellolmontrealestatefarme" +
- "quipmentrentino-s-tirollagrigentomologyeonggiehtavuoatnagaivuotn" +
- "agaokakyotambabia-goracleaningatlantabusebastopologyeongnamegawa" +
- "keisenbahnmonza-brianzaporizhzhiamonza-e-della-brianzapposhitara" +
- "mamonzabrianzaptokuyamatsusakahoginankokubunjis-leetnedalmonzaeb" +
- "rianzaramonzaedellabrianzamoonscalezajskolobrzegersundmoparachut" +
- "ingmordoviajessheiminamitanemoriyamatsushigemoriyoshimilitarymor" +
- "monmouthagakhanamigawamoroyamatsuuramortgagemoscowindowshizukuis" +
- "himofusaintlouis-a-bruinsfanmoseushistorymosjoenmoskeneshizuokan" +
- "azawamosshoujis-lostre-toteneis-an-accountantshirahamatonbetsurn" +
- "adalmosvikomaganemoteginowaniihamatamakawajimaoris-not-certified" +
- "unetbankhakassiamoviemovistargardmtpchristiansburgrondarmtranbym" +
- "uenstermuginozawaonsenmuikamisunagawamukochikushinonsenergymulho" +
- "uservebeermunakatanemuncieszynmuosattemuphonefosshowamurmanskoma" +
- "kiyosunndalmurotorcraftrentino-stirolmusashimurayamatsuzakis-sav" +
- "edmusashinoharamuseetrentino-sud-tirolmuseumverenigingmusicargod" +
- "addynaliascoli-picenogataijis-slickharkivgucciprianiigataishinom" +
- "akinderoymutsuzawamy-vigorlicemy-wanggouvicenzamyactivedirectory" +
- "myasustor-elvdalmycdn77-securecifedexhibitionmyddnskingmydissent" +
- "rentino-sudtirolmydrobofagemydshowtimemorialmyeffectrentino-sued" +
- "-tirolmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccess" +
- "hriramsterdamnserverbaniamyfusionmyhome-serversaillesienarashino" +
- "mykolaivaolbia-tempio-olbiatempioolbialystokkepnoduminamiuonumat" +
- "sumotofukemymailermymediapchristmasakimobetsuliguriamyokohamamat" +
- "sudamypephotographysiomypetsigdalmyphotoshibajddarchitecturealty" +
- "dalipaymypsxn--32vp30hagebostadmysecuritycamerakermyshopblocksil" +
- "komatsushimashikizunokunimihoboleslawiechonanbuilderschmidtre-ga" +
- "uldalukowhalingroks-thisayamanobeokalmykiamytis-a-bloggermytulea" +
- "piagetmyipictetrentino-suedtirolmyvnchromedicaltanissettairamywi" +
- "reitrentinoa-adigepinkomforbarclays3-us-east-2pioneerpippupictur" +
- "esimple-urlpiszpittsburghofauskedsmokorsetagayasells-for-usgarde" +
- "npiwatepixolinopizzapkommunalforbundplanetariuminamiyamashirokaw" +
- "anabelembetsukubanklabudhabikinokawabarthaebaruminamimakis-a-pai" +
- "nteractivegarsheis-a-patsfanplantationplantslingplatformshangril" +
- "anslupskommuneplaystationplazaplchryslerplumbingopmnpodzonepohlp" +
- "oivronpokerpokrovskomonopolitiendapolkowicepoltavalle-aostarostw" +
- "odzislawinnersnoasaitamatsukuris-uberleetrdpomorzeszowiosokaneya" +
- "mazoepordenonepornporsangerporsanguidell-ogliastraderporsgrunnan" +
- "poznanpraxis-a-bookkeeperugiaprdpreservationpresidioprgmrprimelh" +
- "uscultureisenprincipeprivatizehealthinsuranceprochowiceproductio" +
- "nsokndalprofbsbxn--12co0c3b4evalleaostaticschuleprogressivegasia" +
- "promombetsurfbx-oschwarzgwangjuifminamidaitomangotsukisofukushim" +
- "aparocherkasyno-dschweizpropertyprotectionprotonetrentinoaadigep" +
- "rudentialpruszkowitdkomorotsukamisatokamachintaifun-dnsaliasdabu" +
- "rprzeworskogptplusdecorativeartsolarssonpvtrentinoalto-adigepwch" +
- "ungnamdalseidfjordyndns-weberlincolniyodogawapzqldqponqslgbtrent" +
- "inoaltoadigequicksytesolognequipelementsolundbeckomvuxn--2scrj9c" +
- "hoseiroumuenchenissandnessjoenissayokoshibahikariwanumatakazakis" +
- "-a-greenissedaluroyqvchurchaseljeepsongdalenviknagatorodoystufft" +
- "oread-booksnesomnaritakurashikis-very-badajozorastuttgartrentino" +
- "sudtirolsusakis-very-evillagesusonosuzakaniepcesuzukanmakiwakuni" +
- "gamidsundsuzukis-very-goodhandsonsvalbardunloppacificirclegnicaf" +
- "ederationsveiosvelvikongsvingersvizzerasvn-reposooswedenswidnica" +
- "rtierswiebodzindianapolis-a-anarchistoireggiocalabriaswiftcovers" +
- "winoujscienceandhistoryswisshikis-very-nicesynology-dsopotrentin" +
- "os-tirolturystykanoyaltakasakiwientuscanytushuissier-justicetuva" +
- "lle-daostatic-accessorreisahayakawakamiichikawamisatotaltuxfamil" +
- "ytwmailvbargainstitutelevisionaustdalimanowarudaustevollavangena" +
- "turbruksgymnaturhistorisches3-eu-west-1venneslaskerrylogisticsor" +
- "tlandvestfoldvestnesoruminanovestre-slidreamhostersouthcarolinaz" +
- "awavestre-totennishiawakuravestvagoyvevelstadvibo-valentiavibova" +
- "lentiavideovillaskimitsubatamicable-modemoneyvinnicartoonartdeco" +
- "ffeedbackplaneapplinzis-very-sweetpeppervinnytsiavipsinaappilots" +
- "irdalvirginiavirtualvirtueeldomeindianmarketingvirtuelvisakataki" +
- "nouevistaprinternationalfirearmsouthwestfalenviterboltrevisohugh" +
- "esor-odalvivoldavixn--3bst00mincommbankmpspbarclaycards3-sa-east" +
- "-1vlaanderenvladikavkazimierz-dolnyvladimirvlogoipimientaketomis" +
- "atolgavolkswagentsowavologdanskonskowolawavolvolkenkundenvolyngd" +
- "alvossevangenvotevotingvotoyonakagyokutourspjelkavikongsbergwloc" +
- "lawekonsulatrobeepilepsydneywmflabspreadbettingworldworse-thanda" +
- "wowithgoogleapisa-hockeynutsiracusakakinokiawpdevcloudwritesthis" +
- "blogsytewroclawithyoutubeneventoeidsvollwtcircustomerwtfbxoscien" +
- "cecentersciencehistorywuozuwwwiwatsukiyonowruzhgorodeowzmiuwajim" +
- "axn--42c2d9axn--45br5cylxn--45brj9citadeliveryxn--45q11citicatho" +
- "licheltenham-radio-opencraftrainingripescaravantaaxn--4gbriminin" +
- "gxn--4it168dxn--4it797kooris-an-actorxn--4pvxs4allxn--54b7fta0cc" +
- "ivilaviationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilisati" +
- "onxn--5rtq34kopervikhmelnitskiyamashikexn--5su34j936bgsgxn--5tzm" +
- "5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264civili" +
- "zationxn--80adxhkspydebergxn--80ao21axn--80aqecdr1axn--80asehdba" +
- "rreauctionaval-d-aosta-valleyolasiteu-2xn--80aswgxn--80audnedaln" +
- "xn--8ltr62koryokamikawanehonbetsurutaharaxn--8pvr4uxn--8y0a063ax" +
- "n--90a3academy-firewall-gatewayxn--90aeroportalaheadjudaicaaarbo" +
- "rteaches-yogasawaracingroks-theatreexn--90aishobaraomoriguchihar" +
- "ahkkeravjuedischesapeakebayernrtritonxn--90azhytomyrxn--9dbhblg6" +
- "dietcimdbarrel-of-knowledgemologicallimitediscountysvardolls3-us" +
- "-gov-west-1xn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aropor" +
- "t-byandexn--3ds443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-kn" +
- "owledgeologyombondiscoveryomitanobninskarasjohkaminokawanishiaiz" +
- "ubangeu-3utilitiesquare7xn--avery-yuasakegawaxn--b-5gaxn--b4w605" +
- "ferdxn--bck1b9a5dre4civilwarmanagementjxn--0trq7p7nnxn--bdddj-mr" +
- "abdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccav" +
- "uotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsu" +
- "rreyxn--bjddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-gra" +
- "ingerxn--bod-2naroyxn--brnny-wuaccident-investigation-aptiblease" +
- "ating-organicbcn-north-1xn--brnnysund-m8accident-prevention-webh" +
- "openairbusantiquest-a-la-maisondre-landebudapest-a-la-masionionj" +
- "ukudoyamagentositelekommunikationthewifiat-band-campaniaxn--brum" +
- "-voagatroandinosaurepbodynathomebuiltrentinosued-tirolxn--btsfjo" +
- "rd-9zaxn--c1avgxn--c2br7gxn--c3s14minnesotaketakatsukis-into-car" +
- "shiranukanagawaxn--cck2b3barsyonlinewhollandishakotanavigationav" +
- "oibmdisrechtranakaiwamizawaweddingjesdalimoliserniaustinnatuurwe" +
- "tenschappenaumburgjerdrumckinseyokosukanzakiyokawaragrocerybnika" +
- "hokutobamaintenancebetsuikicks-assedic66xn--cg4bkis-with-theband" +
- "ovre-eikerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumintelligenc" +
- "exn--comunicaes-v6a2oxn--correios-e-telecomunicaes-ghc29axn--czr" +
- "694bashkiriaustraliaisondriodejaneirochesterxn--czrs0trogstadxn-" +
- "-czru2dxn--czrw28basilicataniaustrheimatunduhrennesoyokotebinore" +
- "-og-uvdalaziobiraskvolloabathsbcasacamdvrcampobassociatestingjem" +
- "nes3-ap-southeast-1xn--d1acj3basketballyngenavuotnaklodzkodairau" +
- "thordalandroiddnss3-eu-west-2xn--d1alfaromeoxn--d1atromsaitomobe" +
- "llevuelosangelesjaguarmeniaxn--d5qv7z876claimsardiniaxn--davvenj" +
- "rga-y4axn--djrs72d6uyxn--djty4kosaigawaxn--dnna-grajewolterskluw" +
- "erxn--drbak-wuaxn--dyry-iraxn--e1a4clanbibaidarq-axn--eckvdtc9dx" +
- "n--efvn9srlxn--efvy88haibarakisosakitagawaxn--ehqz56nxn--elqq16h" +
- "air-surveillancexn--estv75gxn--eveni-0qa01gaxn--f6qx53axn--fct42" +
- "9kosakaerodromegallupinbarefootballfinanzgoraurskog-holandroverh" +
- "alla-speziaetnagahamaroygardenebakkeshibechambagriculturennebude" +
- "jjudygarlandd-dnshome-webservercellikes-piedmontblancomeeres3-ap" +
- "-south-1kappchizippodhaleangaviikadenadexetereport3l3p0rtargets-" +
- "itargivestbytomaritimobaravennagasuke12hpalace164lima-cityeatsel" +
- "inogradultarnobrzegyptianativeamericanantiques3-ap-northeast-133" +
- "7xn--fhbeiarnxn--finny-yuaxn--fiq228c5hsrtrentinostirolxn--fiq64" +
- "batodayonagoyautomotivecoalvdalaskanittedallasalleasinglesurance" +
- "rtmgretagajoboji234xn--fiqs8srvaporcloudxn--fiqz9storagexn--fjor" +
- "d-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn" +
- "--frde-grandrapidstordalxn--frna-woaraisaijotromsojampagefrontap" +
- "piemontexn--frya-hraxn--fzc2c9e2cldmailuxembourgrongaxn--fzys8d6" +
- "9uvgmailxn--g2xx48clickasumigaurawa-mazowszextraspacekitagatajir" +
- "issagaeroclubmedecincinnationwidealstahaugesunderseaportsinfolld" +
- "alabamagasakishimabarackmazerbaijan-mayendoftheinternetflixilove" +
- "collegefantasyleaguernseyxn--gckr3f0fedorapeopleirfjordynvpncher" +
- "nivtsiciliaxn--gecrj9clinichernigovernmentjometacentruminamiawaj" +
- "ikis-a-doctorayxn--ggaviika-8ya47hakatanoshiroomuraxn--gildeskl-" +
- "g0axn--givuotna-8yasakaiminatoyonezawaxn--gjvik-wuaxn--gk3at1exn" +
- "--gls-elacaixaxn--gmq050isleofmandalxn--gmqw5axn--h-2failxn--h1a" +
- "eghakodatexn--h2breg3evenestorepaircraftrentinosud-tirolxn--h2br" +
- "j9c8cliniquenoharaxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" +
- "a35batsfjordivtasvuodnakamagayahababyglandivttasvuotnakamurataji" +
- "mibuildingjovikarasjokarasuyamarylhurstjohnayorovnoceanographics" +
- "3-us-west-1xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctrus" +
- "teexn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hx" +
- "t814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn" +
- "--indery-fyasugivingxn--io0a7issmarterthanyouxn--j1aefedoraproje" +
- "ctoyotomiyazakis-a-knightpointtokaizukamikoaniikappugliaxn--j1am" +
- "hakonexn--j6w193gxn--jlq61u9w7bauhausposts-and-telecommunication" +
- "sncfdiyonaguniversityoriikarateu-4xn--jlster-byasuokanraxn--jrpe" +
- "land-54axn--jvr189misakis-into-cartoonshiraois-a-techietis-a-the" +
- "rapistoiaxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kf" +
- "jord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--" +
- "3e0b707exn--koluokta-7ya57hakubaghdadxn--kprw13dxn--kpry57dxn--k" +
- "pu716fermodalenxn--kput3iwchofunatoriginsurecreationishiwakis-a-" +
- "geekashiwazakiyosatokashikiyosemitexn--krager-gyatomitamamuraxn-" +
- "-kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49j" +
- "elenia-goraxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazu" +
- "ryxn--kvnangen-k0axn--l-1fairwindstorfjordxn--l1accentureklambor" +
- "ghiniizaxn--laheadju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ld" +
- "ingen-q1axn--leagaviika-52bbcasertaipeiheijiitatebayashiibahcavu" +
- "otnagaraholtalenvironmentalconservationflfanfshostrowiecasinordl" +
- "andnpalermomahachijorpelandrangedalindashorokanaieverbankaratsug" +
- "inamikatagamiharuconnectashkentatamotors3-us-west-2xn--lesund-hu" +
- "axn--lgbbat1ad8jeonnamerikawauexn--lgrd-poaclintonoshoesarluxury" +
- "xn--lhppi-xqaxn--linds-pramericanartrvareserveblogspotrentinosue" +
- "dtirolxn--lns-qlapyatigorskypexn--loabt-0qaxn--lrdal-sraxn--lren" +
- "skog-54axn--lt-liaclothingdustkakamigaharaxn--lten-granexn--lury" +
- "-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddestorjdevclo" +
- "udfrontdoorxn--mgb9awbferraraxn--mgba3a3ejtrysiljanxn--mgba3a4f1" +
- "6axn--mgba3a4franamizuholdingsmilelverumisasaguris-into-gamessin" +
- "atsukigatakasagotembaixadaxn--mgba7c0bbn0axn--mgbaakc7dvferrarit" +
- "togoldpoint2thisamitsukexn--mgbaam7a8hakuis-a-personaltrainerxn-" +
- "-mgbab2bdxn--mgbai9a5eva00bbtatarantottoriiyamanouchikuhokuryuga" +
- "sakitaurayasudautoscanadaejeonbukaragandasnesoddenmarkhangelskja" +
- "kdnepropetrovskiervaapsteiermark12xn--mgbai9azgqp6jetztrentino-a" +
- "-adigexn--mgbayh7gpagespeedmobilizeroxn--mgbb9fbpobanazawaxn--mg" +
- "bbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgberp4a5d4a87gxn--mgbe" +
- "rp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskodjejuegosh" +
- "ikiminokamoenairportland-4-salernoboribetsuckstpetersburgxn--mgb" +
- "qly7c0a67fbcnsarpsborgrossetouchijiwadegreexn--mgbqly7cvafranzis" +
- "kanerdpolicexn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bbvacations" +
- "watch-and-clockerxn--mgbx4cd0abbottulanxessor-varangerxn--mix082" +
- "ferreroticanonoichinomiyakexn--mix891fetsundyroyrvikinguitarscho" +
- "larshipschoolxn--mjndalen-64axn--mk0axindustriesteamfamberkeleyx" +
- "n--mk1bu44cntkmaxxn--11b4c3dyndns-wikinkobayashikaoirminamibosog" +
- "ndaluzernxn--mkru45ixn--mlatvuopmi-s4axn--mli-tlaquilanciaxn--ml" +
- "selv-iuaxn--moreke-juaxn--mori-qsakuhokkaidoomdnsiskinkyotobetsu" +
- "midatlanticolognextdirectmparaglidingroundhandlingroznyxn--mosje" +
- "n-eyawaraxn--mot-tlarvikoseis-an-actresshirakofuefukihaboromskog" +
- "xn--mre-og-romsdal-qqbentleyoshiokaracoldwarmiamihamadaveroykeni" +
- "waizumiotsukuibestadds3-external-1xn--msy-ula0hakusandiegoodyear" +
- "xn--mtta-vrjjat-k7afamilycompanycolonialwilliamsburgrparisor-fro" +
- "nxn--muost-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn-" +
- "-3hcrj9cistrondheimmobilienxn--nit225kosherbrookegawaxn--nmesjev" +
- "uemie-tcbalestrandabergamoarekexn--nnx388axn--nodessakuragawaxn-" +
- "-nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-bya" +
- "eservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattanoogan" +
- "ordre-landxn--o3cw4haldenxn--o3cyx2axn--od0algxn--od0aq3beppubli" +
- "shproxyzgorzeleccollectionhlfanhs3-website-ap-northeast-1xn--ogb" +
- "pf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osyro-wua" +
- "xn--p1acfgujolsterxn--p1aixn--pbt977coloradoplateaudioxn--pgbs0d" +
- "hlxn--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4columbus" +
- "heyxn--qcka1pmcdonaldstreamuneuesolutionsomaxn--qqqt11misconfuse" +
- "dxn--qxamusementunesorfoldxn--rady-iraxn--rdal-poaxn--rde-ulavag" +
- "iskexn--rdy-0nabarixn--rennesy-v1axn--rhkkervju-01aflakstadaokag" +
- "akibichuoxn--rholt-mragowoodsideltaitogliattirestudioxn--rhqv96g" +
- "xn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn--risr-iraxn--r" +
- "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaikitahatakama" +
- "tsukawaxn--rovu88bernuorockartuzyukinfinitintuitateshinanomachim" +
- "kentateyamavocatanzarowebspacebizenakanojohanamakinoharassnasaba" +
- "erobatickets3-ap-southeast-2xn--rros-granvindafjordxn--rskog-uua" +
- "xn--rst-0narutokyotangovtunkoninjamisonxn--rsta-francaiseharaxn-" +
- "-rvc1e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithruheredumbrell" +
- "ajollamericanexpressexyxn--s9brj9communitysnesarufutsunomiyawaka" +
- "saikaitakoelnxn--sandnessjen-ogbizxn--sandy-yuaxn--seral-lraxn--" +
- "ses554gxn--sgne-gratangenxn--skierv-utazaskoyabearalvahkijobserv" +
- "erisignieznoipifonymishimatsunoxn--skjervy-v1axn--skjk-soaxn--sk" +
- "nit-yqaxn--sknland-fxaxn--slat-5narviikamitondabayashiogamagoriz" +
- "iaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-a-bulls-fanxn--s" +
- "nase-nraxn--sndre-land-0cbremangerxn--snes-poaxn--snsa-roaxn--sr" +
- "-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbeski" +
- "dyn-o-saurlandes3-website-ap-southeast-1xn--srfold-byaxn--srreis" +
- "a-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalse" +
- "n-sqbestbuyshouses3-website-ap-southeast-2xn--stre-toten-zcbstud" +
- "yndns-at-homedepotenzamamicrolightingxn--t60b56axn--tckweatherch" +
- "annelxn--tiq49xqyjevnakershuscountryestateofdelawarezzoologyxn--" +
- "tjme-hraxn--tn0agrinet-freakstuff-4-salexn--tnsberg-q1axn--tor13" +
- "1oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr" +
- "-vraxn--uc0atvarggatrentoyokawaxn--uc0ay4axn--uist22hammarfeasta" +
- "fricapetownnews-stagingxn--uisz3gxn--unjrga-rtaobaokinawashirosa" +
- "tochiokinoshimalatvuopmiasakuchinotsuchiurakawalesundxn--unup4yx" +
- "n--uuwu58axn--vads-jraxn--vard-jraxn--vegrshei-c0axn--vermgensbe" +
- "rater-ctbetainaboxfusejnynysadodgeometre-experts-comptables3-web" +
- "site-eu-west-1xn--vermgensberatung-pwbieigersundray-dnsupdaterno" +
- "pilawavoues3-fips-us-gov-west-1xn--vestvgy-ixa6oxn--vg-yiabcgxn-" +
- "-vgan-qoaxn--vgsy-qoa0jewelryxn--vgu402comobilyxn--vhquvaroyxn--" +
- "vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bi" +
- "elawalmartatsunoceanographiquevje-og-hornnes3-website-sa-east-1x" +
- "n--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1comparemarkerr" +
- "yhotelsasayamaxn--wgbl6axn--xhq521biellaakesvuemieleccexn--xkc2a" +
- "l3hye2axn--xkc2dl3a5ee0hamurakamigoris-a-photographerokuappfizer" +
- "xn--y9a3aquariumissilewismillerxn--yer-znarvikoshimizumakis-an-a" +
- "narchistoricalsocietyxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn-" +
- "-3oq18vl8pn36axn--ystre-slidre-ujbieszczadygeyachimataikikuchiku" +
- "seikarugamvikareliancexn--zbx025dxn--zf0ao64axn--zf0avxn--3pxu8k" +
- "onyveloftrentino-aadigexn--zfr164bievatmallorcadaques3-website-u" +
- "s-east-1xperiaxz"
+const text = "biellaakesvuemieleccebieszczadygeyachimatainaircraftraeumtgerade" +
+ "alstahaugesunderseaportsinfolldalaskanittedallasalleasinglesango" +
+ "ppdalinzaintuitateshinanomachintaifun-dnsaliaskimitsubatamicable" +
+ "-modembetsukuinuyamanouchikuhokuryugasakitaurayasudabievatmallor" +
+ "cadaquesanjotateyamabifukagawalmartatsunobihorologyuzhno-sakhali" +
+ "nskaszubybikedagestangebilbaogakievenesannaninomiyakonojoshkar-o" +
+ "lawabillustrationirasakinvestmentsannohelplfinancialipetskatowic" +
+ "ebiobirdartcenterprisesakikuchikuseikarugapartmentsanokatsushika" +
+ "beeldengeluidunloppacificasinore-og-uvdalivornobirkenesoddtangen" +
+ "ovarabirthplacebjarkoybjerkreimdbalatinorddalillyonagoyastronomy" +
+ "asustor-elvdalwaysdatabaseballangenoamishirasatochigiessenebakke" +
+ "shibechambagriculturennebudapest-a-la-masionativeamericanantique" +
+ "s3-ap-northeast-2bjugnieznordlandunsantabarbarablockbusternidupo" +
+ "ntariobloombergbauernrtattoolsztynsettlersantacruzsantafedextras" +
+ "pace-to-rentalstomakomaibarabloxcmsanukis-a-candidatebluedaplier" +
+ "neustarhubalestrandabergamoarekeymachineues3-us-west-1bmoattachm" +
+ "entsaotomeloyalistjordalshalsenishiazais-a-catererbmsapodhalewis" +
+ "millerbmweirbnpparibaselburgloppenzaogashimadachicagoboatsapporo" +
+ "bnrwfarmsteadurbanamexhibitionishigotsukisosakitagawabomloanswat" +
+ "ch-and-clockerbondurhamburgmbhartiffanybonnishiharabookingminaka" +
+ "michiharabootsaratovalleaostatoilomzaporizhzheguris-a-celticsfan" +
+ "ishiizunazukis-a-chefarsundvrcambridgestonewyorkshirecreationish" +
+ "ikatakayamatsuzakis-a-conservativefsncfdvrdnsiskinkyotobetsumida" +
+ "tlanticateringebudejjuedischesapeakebayernurembergmodenakanotodd" +
+ "enishikatsuragithubusercontentaxihuanishikawazukanazawaboschaeff" +
+ "lerdalorenskogmxfinitybostikatsuyamaseratis-a-cpadoval-daostaval" +
+ "leybostonakijinsekikogentingrimstadwgripebotanicalgardenishimera" +
+ "botanicgardenishinomiyashironobotanybouncemerckmsdnipropetrovskl" +
+ "eppalmspringsakerbounty-fullensakerrypropertiesardegnamsosnowiec" +
+ "atholicheltenham-radio-openair-traffic-controlleyboutiquebecngri" +
+ "wataraidyndns-ipamperedchefashionishinoomotegovtgorybozentsujiie" +
+ "bradescorporationishinoshimatta-varjjatjeldsundyndns-mailotenkaw" +
+ "abrandywinevalleybrasiliabresciabrindisibenikebristolgaulardalot" +
+ "tebritishcolumbialowiezaganquannefrankfurtjmaxxxjaworznowtvalled" +
+ "-aostavangerbroadcastleclerchelyabinskypescaravantaabroadwaybrok" +
+ "e-itjometlifeinsurancebrokerbronnoysundyndns-office-on-the-webca" +
+ "mpobassociatesardiniabrothermesaverdeatnuorockartuzybrowsersafet" +
+ "ymarketsarlottokorozawabrumunddalouvreitjxn--0trq7p7nnishiokoppe" +
+ "gardyndns-picsarpsborgroks-thisayamanashiibaghdadultkmaxxn--11b4" +
+ "c3dyndns-remotegildeskalmykiabrunelblagdenesnaaseralingenkainana" +
+ "ejrietisalatinabenoboribetsucksarufutsunomiyawakasaikaitakoelnis" +
+ "hitosashimizunaminamiashigarabrusselsasayamabruxellesaseboknowsi" +
+ "tallowiczest-le-patrondheimperiabryanskodjeepostfoldnavyatkakami" +
+ "gaharabrynewhampshirebungoonordreisa-geekaufenishiwakis-a-cubicl" +
+ "e-slavellinotteroybuskerudinewhollandyndns-servercellikes-piedmo" +
+ "ntblancomeeresaskatchewanggouvicenzabuzenissandnessjoenissayokos" +
+ "hibahikariwanumatakazakis-a-democratmpanamabuzzgradyndns-weberli" +
+ "ncolnissedalucaniabwhalingrondarbzhitomirkutskydivingrongacomput" +
+ "erhistoryofscience-fictioncomsecuritytacticschulezajskddielddanu" +
+ "orrikuzentakatajirissagamiharacondoshichinohealth-carereformitak" +
+ "eharaconferenceconstructionconsuladoharuhrconsultanthropologycon" +
+ "sultingvollutskfhappoumuenchencontactoyotomiyazakis-a-geekgalaxy" +
+ "contemporaryarteducationalchikugojomedio-campidano-mediocampidan" +
+ "omediocontractorskenconventureshinodesashibetsuikinderoycookingc" +
+ "hannelveruminamibosogndaluxembourgujolstercoolkuszippodlasiellak" +
+ "asamatsudovre-eikercoopencraftoyotsukaidownloadcopenhagencyclope" +
+ "dichernovtsykkylvenetogakushimotoganewmexicoldwarmiamiastalowa-w" +
+ "oladbrokesassaris-a-designerimarumorimachidacorsicagliaridagawal" +
+ "tercorvettenrightathomegoodschwarzgwangjuifminamidaitomangotemba" +
+ "ixadacosenzamamibuilderschmidtre-gauldaluxurycostumedizinhistori" +
+ "scheschweizjcbnluzerncouchpotatofriesciencecentersciencehistoryc" +
+ "ouncilvivano-frankivskhabarovskhakassiacouponscientistockholmest" +
+ "randcoursescjohnsoncq-acranbrookuwanalyticscotlandcreditcardcred" +
+ "itunioncremonashorokanaiecrewiiheyaizuwakamatsubushikusakadogawa" +
+ "cricketrzyncrimeacrotonewspapercrownprovidercrsvparaglidingulenc" +
+ "ruisescrapper-sitecryptonomichigangwoncuisinellajollamericanexpr" +
+ "essexyculturalcentertainmentoyouracuneocupcakecxn--1ctwolominama" +
+ "takkofuefukihabororostrowwlkpmgunmarnardalcymruovatoystre-slidre" +
+ "ttozawacyonabarussiacyouthdfcbankzlguovdageaidnufcfanfieldfiguer" +
+ "estaurantozsdefilateliafilminamiechizenfinalfinancefineartservef" +
+ "tparisor-fronfinlandfinnoyfirebaseapparliamentranbyfirenzefirest" +
+ "onexus-east-1firmdaleirfjordfishingolffanservegame-serverisignfi" +
+ "tjarqhachiojiyahikobeatservehalflifestylefitnessettlementrani-an" +
+ "dria-barletta-trani-andriafjalerflesbergflickragerotikamakurazak" +
+ "irkeneservehttparmaflightservehumourflirumansionserveirchiryukyu" +
+ "ragifuchukotkakegawassamukawataricohdavvenjargausdaluccapitalone" +
+ "wjerseyflogintogurafloraflorencefloridafloristanohatakaharulvikh" +
+ "arkovalledaostavernflorokunohealthcareerserveminecraftraniandria" +
+ "barlettatraniandriaflowerservemp3utilitiesquarezzoologicalvinkle" +
+ "in-addrammenuernbergdyniabogadocscbggfareastcoastaldefence-burgj" +
+ "emnes3-ap-northeast-1kappleaseating-organicbcg12000emmafanconaga" +
+ "wakayamadridvagsoyericsson-aptibleangaviikadenaamesjevuemielno-i" +
+ "p6flynnhubalsfjordiscountysnes3-us-west-2fndfoodnetworkshoppingf" +
+ "or-ourfor-someetnedalfor-theaterforexrothruheredstoneforgotdnser" +
+ "vep2parocherkasyzrankoshigayaltaijis-a-greenforli-cesena-forlice" +
+ "senaforlikescandyndns-at-workinggrouparservepicservequakeforsale" +
+ "irvikhersonforsandasuoloftranoyfortmissoulan-udefenseljordfortwo" +
+ "rthachirogatakamoriokamikitayamatotakadaforuminamifuranofosneser" +
+ "vesarcasmatartanddesignfotaruis-a-gurunzenfoxfordegreefreeboxost" +
+ "rowiechitachinakagawatchandclockazimierz-dolnyfreemasonryfreibur" +
+ "gfreightcmwildlifedjejuegoshikiminokamoenairlinedre-eikerfreseni" +
+ "uscountryestateofdelawaredumbrellanbibaidarfribourgfriuli-v-giul" +
+ "iafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-ven" +
+ "eziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiu" +
+ "liafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfrogan" +
+ "servicesettsurgeonshalloffamemergencyberlevagangaviikanonjis-a-h" +
+ "ard-workerfrognfrolandfrom-akrehamnfrom-alfrom-arfrom-azpartis-a" +
+ "-hunterfrom-capebretonamiasakuchinotsuchiurakawarszawashingtondc" +
+ "lkhmelnitskiyamasfjordenfrom-collectionfrom-ctransportransurlfro" +
+ "m-dchitosetogitsuldalucernefrom-dell-ogliastrakhanawafrom-flande" +
+ "rsevastopolefrom-gafrom-higashiagatsumagoirminamiiselectrapaniim" +
+ "imatakatoris-a-knightpointtokamachippubetsubetsugaruslivinghisto" +
+ "ryfrom-iafrom-idfrom-ilfrom-incheonfrom-ksevenassisicilyfrom-kyo" +
+ "wariasahikawafrom-lancashireggio-calabriafrom-manxn--1qqw23afrom" +
+ "-mdfrom-meguromskoguchikuzenfrom-microsoftbankhmelnytskyivallee-" +
+ "aosteroyfrom-mnfrom-mochizukirovogradoyfrom-msewilliamhillfrom-m" +
+ "tnfrom-nchloefrom-ndfrom-nefrom-nhktravelchannelfrom-njcpartners" +
+ "franziskanerdpolicefrom-nminamiizukamitondabayashiogamagoriziafr" +
+ "om-nvalleeaosteigenfrom-nyfrom-ohkurafrom-oketohmaorivnefrom-orf" +
+ "rom-paderbornfrom-pratohnoshoooshikamaishimofusartshangrilangeva" +
+ "grarboretumbriafrom-ris-a-landscaperugiafrom-schoenbrunnfrom-sdf" +
+ "rom-tnfrom-txn--2m4a15efrom-utazuerichardlillehammerfest-mon-blo" +
+ "gueurovisionfrom-vaksdalfrom-vtravelersinsurancefrom-wafrom-wiel" +
+ "unnerfrom-wvanylvenicefrom-wyfrosinonefrostalbansharis-a-lawyerf" +
+ "royahabadajozoraholtalenvironmentalconservationfstavropolitienda" +
+ "fujiiderafujikawaguchikonefujiminohtawaramotoineppubolognakaniik" +
+ "awatanagurafujinomiyadafujiokayamapartsharpartyfujisatoshonairpo" +
+ "rtland-4-salernogatagajobojis-a-liberalfujisawafujishiroishidaka" +
+ "biratoridellogliastraderfujitsurugashimamateramodalenfujixeroxn-" +
+ "-30rr7yfujiyoshidafukayabeardubaiduckdnshomebuiltrdfukuchiyamada" +
+ "fukudominichocolatemasekazofukuis-a-libertarianfukumitsubishigak" +
+ "iryuohadanoshiroomurafukuokazakisarazurewebsiteshikagamiishibuka" +
+ "wafukuroishikarikaturindalfukusakishiwadafukuyamagatakahashimama" +
+ "kisofukushimarburgfunabashiriuchinadafunagatakahatakaishimoichin" +
+ "osekigaharafunahashikamiamakusatsumasendaisennangonohejis-a-linu" +
+ "x-useranishiaritabashikaoizumizakitchenfundaciofuoiskujukuriyama" +
+ "rcheapasadenaklodzkodairafuosskoczowinbaltimore-og-romsdalimited" +
+ "iscoveryonaguniversityoriikashibatakashimarylhurstjohnaval-d-aos" +
+ "ta-valleyukibestadishakotankashiharaukraanghkepnord-frontierepai" +
+ "rbusantiquest-a-la-maisondre-landebusinessebyklefrakkestadds3-ap" +
+ "-southeast-2furnitureggio-emilia-romagnakanojohanamakinoharafuru" +
+ "biraquarellebesbyglandfurudonostiafurukawairtelecityeatshawaiiji" +
+ "marugame-hostingfusodegaurafussaintlouis-a-anarchistoireggiocala" +
+ "briafutabayamaguchinomigawafutboldlygoingnowhere-for-moregontrai" +
+ "lroadfuttsurugiminamimakis-a-llamarylandfuturemailingfvgfyis-a-m" +
+ "usicianfylkesbiblackfridayfyresdalhannanmokuizumodernhannovarese" +
+ "rveblogspotrentino-a-adigehanyuzenhapmirhareidsbergenharstadharv" +
+ "estcelebrationhasamarahasaminami-alpssells-itrentino-aadigehashb" +
+ "anghasudahasura-appassenger-associationhasviklabudhabikinokawaba" +
+ "rthaebaruminamiminowahatogayahoohatoyamazakitahiroshimarriottren" +
+ "tino-alto-adigehatsukaichikaiseis-a-painteractivegarsheis-a-pats" +
+ "fanhattfjelldalhayashimamotobuildinghazuminobusellsyourhomeipavi" +
+ "ancargodaddyndns-at-homednshimonosekikawahboehringerikehelsinkit" +
+ "akamiizumisanofidelitysvardollshimosuwalkis-a-personaltrainerhem" +
+ "bygdsforbundhemneshimotsukehemsedalhepforgeherokussldheroyhgtvsh" +
+ "imotsumahigashichichibungotakadatinghigashihiroshimanehigashiizu" +
+ "mozakitakatakanezawahigashikagawahigashikagurasoedahigashikawaki" +
+ "taaikitakyushuaiahigashikurumeiwamarshallstatebankmpspbamblebtim" +
+ "netz-2higashimatsushimarinehigashimatsuyamakitaakitadaitoigawahi" +
+ "gashimurayamalatvuopmidoris-a-photographerokuappfizerhigashinaru" +
+ "sembokukitamidsundhigashinehigashiomihachimanchesterhigashiosaka" +
+ "sayamamotorcycleshinichinanhigashishirakawamatakaokamikoaniikapp" +
+ "ugliahigashisumiyoshikawaminamiaikitamotosumitakaginankokubunjis" +
+ "-a-playerhigashitsunotogawahigashiurausukitanakagusukumoduminami" +
+ "ogunicomcastresistancehigashiyamatokoriyamanakakogawahigashiyodo" +
+ "gawahigashiyoshinogaris-a-republicancerresearchaeologicalifornia" +
+ "hiraizumisatohobby-sitehirakatashinagawahiranairtraffichofunator" +
+ "ientexpressatxn--1ck2e1balsanagochihayaakasakawaharavennagasakik" +
+ "onaikawachinaganoharamcoalaheadjudaicaaarborteaches-yogasawaraci" +
+ "ngroks-theatreemersongdalenviknakamuratakahamannortonsbergladelm" +
+ "enhorstackspacekitagataiwanairguardigitalimanowarudaugustowadaeg" +
+ "ubs3-ap-southeast-1hirarahiratsukagawahirayaitakarazukamiminersh" +
+ "injournalismailillesandefjordhistorichouseshinjukumanohitachiomi" +
+ "yaginowaniihamatamakawajimaritimodellinghitachiotagooglecodespot" +
+ "rentino-altoadigehitoyoshimifunehitradinghjartdalhjelmelandholec" +
+ "kobierzyceholidayhomelinuxn--32vp30hagakhanamigawahomesecurityma" +
+ "ceratakasagoperaunitextileitungsenhomesecuritypccwindmillhomesen" +
+ "seminehomeunixn--3bst00minamisanrikubetsupplyhondahoneywellbeing" +
+ "zonehongorgehonjyoitakasakitashiobarahornindalhorseoulminamitane" +
+ "hortendofinternetrentino-s-tirollagrigentomologyhoteleshinkamigo" +
+ "toyohashimototalhotmailhoyangerhoylandetroitskokonoehumanitieshi" +
+ "nshinotsurgeryhurdalhurumajis-a-rockstarachowicehyllestadhyogori" +
+ "s-a-socialistmeindianapolis-a-bloggerhyugawarahyundaiwafunehzcho" +
+ "nanbugattipschlesischesaudajgorajlchoshibuyachiyodavvesiidazaifu" +
+ "daigodoesntexistanbullensvanguardyndns-wikindleikangerjlljmpharm" +
+ "acienshiojirishirifujiedajnjelenia-gorajoyentrentino-sued-tirolj" +
+ "oyokaichibahcavuotnagaraumalselvendrelljpmorganjpnchoyodobashich" +
+ "ikashukujitawarajprshioyamemorialjuniperjurkristiansundkrodshera" +
+ "dkrokstadelvaldaostarnbergkryminamiyamashirokawanabelgorodeokuma" +
+ "torinokumejimassa-carrara-massacarraramassabunkyonanaoshimageand" +
+ "soundandvisionkumenanyokkaichirurgiens-dentistes-en-francekunisa" +
+ "kis-an-artistcgroupgfoggiakunitachiarailwaykunitomigusukumamotoy" +
+ "amasoykunneppulawykunstsammlungkunstunddesignkuokgrouphdkureisen" +
+ "kurgankurobelaudibleborkdalkurogimilitarykuroisoftwarendalenugku" +
+ "romatsunais-an-engineeringkurotakikawasakis-an-entertainerkursko" +
+ "mmunalforbundkushirogawakustanais-bykusupplieshiranukaniepcekutc" +
+ "hanelkutnokuzbassnillfjordkuzumakis-certifiedogawarabikomaezakir" +
+ "unorthwesternmutualkvafjordkvalsundkvamfamberkeleykvanangenkvine" +
+ "sdalkvinnheradkviteseidskogkvitsoykwpspjelkavikommunemitourismol" +
+ "anciamitoyoakemiuramiyazumiyotamanomjondalenmlbfanmonmouthagebos" +
+ "tadmonstermonticellombardiamondshiraois-into-carshintomikasahara" +
+ "montrealestatefarmequipmentrentino-suedtirolmonza-brianzaporizhz" +
+ "hiamonza-e-della-brianzapposhiraokanmakiyokawaramonzabrianzaptok" +
+ "yotangotpantheonsitemonzaebrianzaramonzaedellabrianzamoparachuti" +
+ "ngmordoviajessheiminanomoriyamatsunomoriyoshiokamitsuemormoneymo" +
+ "royamatsusakahoginozawaonsenmortgagemoscowindowshiratakahagivest" +
+ "bytomaritimekeepingmoseushistorymosjoenmoskeneshishikuis-into-ca" +
+ "rtoonshinyoshitomiokaneyamaxunusualpersonmosshisognemosvikomorot" +
+ "sukamisunagawamoviemovistargardmtpchristmasakikugawatchesauherad" +
+ "yndns-workisboringrossetouchijiwadeloittevadsoccertificationissh" +
+ "ingugemtranakatsugawamuenstermugithubcloudusercontentrentinoa-ad" +
+ "igemuikamogawamukochikushinonsenergymulhouservebeermunakatanemun" +
+ "cieszynmuosattemuphiladelphiaareadmyblogsitemurmanskomvuxn--3ds4" +
+ "43gmurotorcraftrentinoaadigemusashimurayamatsushigemusashinohara" +
+ "museetrentinoalto-adigemuseumverenigingmutsuzawamutuellevangermy" +
+ "dissentrentinoaltoadigemydrobofagemydshisuifuelmyeffectrentinos-" +
+ "tirolmyfritzwinnershitaramamyftphilatelymykolaivarggatrentinosti" +
+ "rolmymediapchromedicaltanissettaishinomakimobetsuliguriamyokoham" +
+ "amatsudamypepsonyoursidedyn-o-saurecipesaro-urbino-pesarourbinop" +
+ "esaromamurogawawioshizukuishimogosenmypetshizuokannamiharumyphot" +
+ "oshibahccavuotnagareyamalvikongsbergmypsxn--3e0b707emysecurityca" +
+ "merakermyshopblockshoujis-into-gamessinashikiwakunigamihamadamyt" +
+ "is-a-bookkeepermincommbankomonomyvnchryslerpictetrentinosud-tiro" +
+ "lpictureshowtimeteorapphoenixn--3oq18vl8pn36apiemontepilotshrira" +
+ "mlidlugolekagaminogiftsienaplesigdalpimientaketomisatomskongsvin" +
+ "gerpinkoninjamisonpioneerpippuphonefosshowapiszpittsburghofastly" +
+ "piwatepizzapkonskowolayangroupharmacyshirahamatonbetsurgutsiracu" +
+ "saitoshimaplanetariuminnesotaketakatsukis-foundationplantationpl" +
+ "antsilkonsulatrobeepilepsydneyplatformintelligenceplaystationpla" +
+ "zaplchungbukazunoplombardyndns-blogdnsimbirskonyvelolplumbingopm" +
+ "npodzonepohlpoivronpokerpokrovskooris-a-techietis-a-soxfanpolkow" +
+ "icepoltavalle-aostarostwodzislawitdkopervikomforbananarepublicar" +
+ "toonartdecoffeedbackplaneappalacemreviewskrakoweddinglassassinat" +
+ "ionalheritagematsubarakawagoeu-1pomorzeszowithgoogleapisa-hockey" +
+ "nutrentinosudtirolpordenonepornporsangerporsanguideltajimicrolig" +
+ "htingporsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidiop" +
+ "rgmrprimelhusgardenprincipeprivatizehealthinsuranceprochowicepro" +
+ "ductionsimple-urlprofauskedsmokorsetagayasells-for-ulsandoyprogr" +
+ "essivegasiaprojectrentinosued-tirolpromombetsurfbsbxn--1lqs03npr" +
+ "opertyprotectionprotonetrentinosuedtirolprudentialpruszkowithyou" +
+ "tubeneventoeidsvollprzeworskogptplusterptzpvtrentoyonakagyokutoy" +
+ "akokamishihoronobeokaminoyamatsuris-leetrentino-stirolpwchungnam" +
+ "dalseidfjordynnsavannahgapzqldqponqslgbtrevisohughesirdalquicksy" +
+ "teslingqvchurchaseljeffersoniyodogawastoragestordalstorenburgsto" +
+ "rfjordstpetersburgstreamsterdamnserverbaniastudiostudyndns-homef" +
+ "tpaccessnoasakakinokiastuff-4-salestufftoread-booksnesnzstuttgar" +
+ "trogstadsurreysusakis-not-certifieducatorahimeshimakanegasakinko" +
+ "bayashikshacknethnologysusonosuzakanrasuzukanumazurysuzukis-save" +
+ "dunetbankolobrzegersundsvalbardudinkakudamatsuesveiosvelvikoseis" +
+ "-a-therapistoiasvizzeraswedenswidnicarrierswiebodzindianmarketin" +
+ "gswiftcoveronaritakurashikis-slickomaganeswinoujscienceandhistor" +
+ "yswisshikis-uberleetrentino-sud-tirolturystykarasjohkamiokaminok" +
+ "awanishiaizubangetuscanytushuissier-justicetuvalle-daostatichuva" +
+ "shiatuxfamilyversicherungvestfoldvestnesolutionslupskoryolasitev" +
+ "estre-slidreamhostersomavestre-totennishiawakuravestvagoyvevelst" +
+ "advibo-valentiavibovalentiavideovillaskoyabearalvahkijobserverda" +
+ "lvdalcesomnarashinovinnicartiervinnytsiavipsinaapphotographysiov" +
+ "irginiavirtualvirtueeldomeindustriesteambulancevirtuelvisakegawa" +
+ "vistaprinternationalfirearmsooviterboltromsakatakinouevivoldavla" +
+ "dikavkazanvladimirvladivostokaizukarasuyamazoevlogoipiagetmyiphi" +
+ "lipsyvolkenkundenvolkswagentsopotritonvologdanskoshunantokonameg" +
+ "atakasugais-an-accountantshinshirovolvolgogradvolyngdalvoronezhy" +
+ "tomyrvossevangenvotevotingvotoyonezawavrnworldworse-thanggliding" +
+ "wowiwatsukiyonowruzhgorodoywritesthisblogsytewroclawloclawekostr" +
+ "omahachijorpelandwtcirclegnicafederationwtfbx-oslodingenwuozuwww" +
+ "mflabsor-odalwzmiuwajimaxn--4gq48lf9jeonnamerikawauexn--4it168dx" +
+ "n--4it797kotohiradomainsurehabmerxn--4pvxsor-varangerxn--54b7fta" +
+ "0ccitichernigovernmentoyookanzakiyosatokigawaxn--55qw42gxn--55qx" +
+ "5dxn--5js045dxn--5rtp49civilaviationxn--5rtq34kotouraxn--5su34j9" +
+ "36bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn-" +
+ "-7t0a264civilisationxn--80adxhksorfoldxn--80ao21axn--80aqecdr1ax" +
+ "n--80asehdbarclaycardsakuraibigawaurskog-holandroverhalla-spezia" +
+ "grocerybnikahokutobishimaizurubtsovskiervaapsteiermarkariyakumol" +
+ "dev-myqnapcloudcontrolappagefrontappagespeedmobilizerobiraeropor" +
+ "talabamagasakishimabarackmaze12xn--80aswgxn--80audnedalnxn--8ltr" +
+ "62kouhokutamakis-an-actorxn--8pvr4uxn--8y0a063axn--90a3academyac" +
+ "tivedirectoryazannakadomari-elasticbeanstalkounosunndalxn--90ais" +
+ "hobaraomoriguchiharahkkeravjudygarlandxn--90azhaibarakitahatakan" +
+ "abeautydalxn--9dbhblg6dietcimmobilienxn--9dbq2axn--9et52uxn--9kr" +
+ "t00axn--andy-iraxn--aroport-byanagawaxn--asky-iraxn--aurskog-hla" +
+ "nd-jnbarclaysakyotanabellunordkappgafanpachigasakidsmynasushioba" +
+ "ragusaarlandiskstationavigationavuotnakayamatsuuraustevollavagis" +
+ "kebinagisochildrensgardenaturalhistorymuseumcenterepbodyndns-fre" +
+ "ebox-oskolegokasells-for-less3-eu-central-1xn--avery-yuasakuhokk" +
+ "aidontexisteingeekouyamashikis-an-actresshintokushimaxn--b-5gaxn" +
+ "--b4w605ferdxn--bck1b9a5dre4civilizationxn--bdddj-mrabdxn--beara" +
+ "lvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn-" +
+ "-bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyanaizuxn--bjddar-" +
+ "ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--bod-2n" +
+ "aroyxn--brnny-wuaccident-investigationjukudoyamagadancebetsukuba" +
+ "bia-goracleaningatlantabusebastopologyeonggiehtavuoatnadexeterim" +
+ "o-i-ranagahamaroygardendoftheinternetflixilovecollegefantasyleag" +
+ "uernseyxn--brnnysund-m8accident-preventionlineat-urlxn--brum-voa" +
+ "gatromsojavald-aostaplesokanoyakagexn--btsfjord-9zaxn--c1avgxn--" +
+ "c2br7gxn--c3s14misasaguris-into-animelbournexn--cck2b3barefootba" +
+ "llooningliwiceventsalangenayoroddaustinnaturalsciencesnaturelles" +
+ "3-eu-west-1xn--cg4bkis-very-badaddjamalborkangerxn--ciqpnxn--clc" +
+ "hc0ea0b2g2a9gcdn77-sslattumisawaxn--comunicaes-v6a2oxn--correios" +
+ "-e-telecomunicaes-ghc29axn--czr694bargainstitutelemarkashiwaraus" +
+ "traliaisondriodejaneirochestereportarantours3-external-1xn--czrs" +
+ "0trusteexn--czru2dxn--czrw28barreauctionflfanfshostrodawaraustrh" +
+ "eimatunduhrennesoyokotebinorilskarlsoyokozebizenakamagayachts3-e" +
+ "xternal-2xn--d1acj3barrel-of-knowledgeologyukuhashimojibmditchyo" +
+ "uripalanakhodkanagawauthordalandroidgcahcesuolocalhistoryggeelvi" +
+ "nckarmoyomitanobninskarpaczeladz-1xn--d1alfaromeoxn--d1atrvbarce" +
+ "lonagasukeu-2xn--d5qv7z876civilwarmanagementoyosatoyokawaxn--dav" +
+ "venjrga-y4axn--djrs72d6uyxn--djty4kouzushimashikokuchuoxn--dnna-" +
+ "grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e1a4claimsaves-th" +
+ "e-whalessandria-trani-barletta-andriatranibarlettaandriaxn--eckv" +
+ "dtc9dxn--efvn9sorreisahayakawakamiichikawamisatottoris-lostre-to" +
+ "teneis-a-studentalxn--efvy88hair-surveillancexn--ehqz56nxn--elqq" +
+ "16hakatanotaireshimokawaxn--estv75gxn--eveni-0qa01gaxn--f6qx53ax" +
+ "n--fct429kozagawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsortlandx" +
+ "n--fiq64barrell-of-knowledgeometre-experts-comptablesalondonetsk" +
+ "ashiwazakiyosemiteverbankasukabedzin-the-bandaioiraseeklogesuran" +
+ "certmgretachikawakkanaibetsubamericanfamilydscloudcontrolledekaf" +
+ "jordivtasvuodnagatorogersaltdalimoliserniautomotivecodynaliascol" +
+ "i-picenoipirangamvikaruizawamusementaobaokinawashirosatochiokino" +
+ "shimakeupowiathletajimabariakembuchikumagayagawakuyabukihokumako" +
+ "gengerdalipayekaterinburgjerdrumckinseyokosukareliance164xn--fiq" +
+ "s8sorumisakis-gonexn--fiqz9southcarolinazawaxn--fjord-lraxn--fjq" +
+ "720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grand" +
+ "rapidsouthwestfalenxn--frna-woaraisaijosoyrovigorlicexn--frya-hr" +
+ "axn--fzc2c9e2clickchristiansburgroundhandlingroznyxn--fzys8d69uv" +
+ "gmailxn--g2xx48clinichernihivanovosibirskautokeinoxn--gckr3f0fbx" +
+ "ostrolekaluganskharkivgucciprianiigataitogliattirescrappingushik" +
+ "amifuranosegawaxn--gecrj9cliniquenoharaxn--ggaviika-8ya47hakodat" +
+ "exn--gildeskl-g0axn--givuotna-8yandexn--3pxu8kosugexn--gjvik-wua" +
+ "xn--gk3at1exn--gls-elacaixaxn--gmq050is-very-evillagexn--gmqw5ax" +
+ "n--h-2failxn--h1aeghakonexn--h2brj9clintonoshoesavonamsskoganeis" +
+ "-a-doctorayxn--hbmer-xqaxn--hcesuolo-7ya35bashkiriautoscanadaeje" +
+ "onbukarumaifarmerseinextdirectargets-itargivingjesdalavangenatur" +
+ "bruksgymnaturhistorisches3-fips-us-gov-west-1xn--hery-iraxn--hge" +
+ "bostad-g3axn--hmmrfeasta-s4acctrysiljan-mayenxn--hnefoss-q1axn--" +
+ "hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn" +
+ "--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyaotsurnadal" +
+ "xn--io0a7is-very-goodhandsonxn--j1aefermobilyxn--j1amhakubankhva" +
+ "olbia-tempio-olbiatempioolbialystokkemerovodkagoshimalopolskanla" +
+ "ndxn--j6w193gxn--jlq61u9w7basilicataniaveroykeniwaizumiotsukumiy" +
+ "amazonawsabaerobaticketsaritsynologyeongnamegawakeisenbahnatuurw" +
+ "etenschappenaumburgjovikasaokamisatokashikiwienaustdalazioceanog" +
+ "raphics3-sa-east-1xn--jlster-byaroslavlaanderenxn--jrpeland-54ax" +
+ "n--jvr189misconfusedxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77" +
+ "d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn" +
+ "--klty5xn--42c2d9axn--koluokta-7ya57hakuis-a-nascarfanxn--kprw13" +
+ "dxn--kpry57dxn--kpu716ferraraxn--kput3is-very-nicexn--krager-gya" +
+ "sakaiminatoyonoxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxax" +
+ "n--krjohka-hwab49jetztrentino-sudtirolxn--ksnes-uuaxn--kvfjord-n" +
+ "xaxn--kvitsy-fyasugis-very-sweetpepperxn--kvnangen-k0axn--l-1fai" +
+ "rwindsowaxn--l1accentureklamborghiniizaxn--laheadju-7yasuokarate" +
+ "xn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52basket" +
+ "ballfinanzgoravocatanzarowebhopocznoceanographiquehimeji234xn--l" +
+ "esund-huaxn--lgbbat1ad8jevnakershuscultureggioemiliaromagnakasat" +
+ "sunais-a-teacherkassymantechnologyxn--lgrd-poacoachampionshiphop" +
+ "tobamagazinebraskaunjargallupinbatodayurihonjournalisteinkjerusa" +
+ "lembroideryusuharavoues3-us-gov-west-1xn--lhppi-xqaxn--linds-pra" +
+ "mericanartulansokndalxn--lns-qlanxesspreadbettingxn--loabt-0qaxn" +
+ "--lrdal-sraxn--lrenskog-54axn--lt-liaclothingrpanasonichernivtsi" +
+ "ciliaxn--lten-granexn--lury-iraxn--mely-iraxn--merker-kuaxn--mgb" +
+ "2ddespydebergxn--mgb9awbferrarittogoldpoint2thisamitsukexn--mgba" +
+ "3a3ejtunesolarssonxn--mgba3a4f16axn--mgba3a4franamizuholdingsmil" +
+ "eksvikozakis-an-anarchistoricalsocietyumenxn--mgba7c0bbn0axn--mg" +
+ "baakc7dvferreroticanonoichinomiyakexn--mgbaam7a8hakusandiegoodye" +
+ "arthadselfipassagenshellaspeziaxn--mgbab2bdxn--mgbai9a5eva00bats" +
+ "fjordivttasvuotnaharimaniwakuratexascolipicenord-aurdalpha-myqna" +
+ "pcloudappspotagerhcloudfunctionsalvadordalibabaikaliszczytnord-o" +
+ "dalindasdaburyatiaarpaleomutashinaiinetarnobrzegyptianhlfanhsalz" +
+ "burglobalashovhachinohedmarkasumigaurawa-mazowszexboxenapponazur" +
+ "e-mobilevje-og-hornnesamegawaxasnesoddenmarkhangelskjervoyagemol" +
+ "ogicallyngenglanddnskingjerstadotsuruokamchatkameokameyamashinat" +
+ "sukigatakamatsukawaetnagaivuotnagaokakyotambabydgoszczecinemagen" +
+ "tositelekommunikationthewifiat-band-campaniamallamaintenanceobih" +
+ "irosakikamijimattelefonicarbonia-iglesias-carboniaiglesiascarbon" +
+ "iabruzzoologyeongbuk-uralsk12xn--mgbai9azgqp6jewelryxn--mgbayh7g" +
+ "paduaxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca" +
+ "7dzdoxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--m" +
+ "gbpl2fhskpnxn--mgbqly7c0a67fbcloudnsdojoetsuwanouchikujogaszkola" +
+ "hppiacenzakopanerairforcexn--mgbqly7cvafredrikstadtverranzanxn--" +
+ "mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausposts-and-telecommun" +
+ "icationsnasadodgeorgeorgiaxn--mgbx4cd0abbottunkosherbrookegawaxn" +
+ "--mix082fetsundxn--mix891fgxn--1lqs71dxn--mjndalen-64axn--mk0axi" +
+ "nfinitis-with-thebandoomdnsfor-better-thandaxn--mk1bu44cnsaxoxn-" +
+ "-mkru45isleofmandalxn--mlatvuopmi-s4axn--mli-tlapyatigorskppspie" +
+ "gelxn--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mosjen-ey" +
+ "atominamiawajikissmarterthanyoustkarasjokomakiyosumycdn77-secure" +
+ "chtrainingxn--mot-tlaquilancasterxn--mre-og-romsdal-qqbbcasadela" +
+ "monedatsunanjoburglobodoes-itvedestrandiyusuisserveexchangexn--m" +
+ "sy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycntoyotaris-a-finan" +
+ "cialadvisor-aurdalukowhoswhokksundynv6xn--muost-0qaxn--mxtq1mish" +
+ "imatsumaebashimodatexn--ngbc5azdxn--ngbe9e0axn--ngbrxn--45brj9ci" +
+ "rcus-2xn--nit225krasnodarxn--nmesjevuemie-tcbajddarchaeologyxn--" +
+ "nnx388axn--nodexn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--nts" +
+ "q17gxn--nttery-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26ax" +
+ "n--o1achattanooganorfolkebiblegallocus-1xn--o3cw4halsaitamatsuku" +
+ "ris-a-nurservebbshimokitayamaxn--od0algxn--od0aq3bbtarumizusawax" +
+ "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyatsukaratsuginam" +
+ "ikatagamihoboleslawiecolonialwilliamsburgruexn--osyro-wuaxn--p1a" +
+ "cfhvalerxn--p1aiwchoseirouterxn--pbt977coloradoplateaudioxn--pgb" +
+ "s0dhlxn--porsgu-sta26fidonnakaiwamizawaxn--pssu33lxn--pssy2uxn--" +
+ "q9jyb4columbusheyxn--qcka1pmcdonaldsrlxn--qqqt11missilelxn--qxam" +
+ "urskjakdnepropetrovskiptveterinairealtorlandxn--rady-iraxn--rdal" +
+ "-poaxn--rde-ularvikrasnoyarskomitamamuraxn--rdy-0nabarixn--renne" +
+ "sy-v1axn--rhkkervju-01aflakstadaokagakibichuoxn--rholt-mragowood" +
+ "sidexn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn" +
+ "--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byatsushiroxn--" +
+ "rny31hammarfeastafricapetownnews-stagingxn--rovu88bbvacationsupd" +
+ "atelevisionikiitatebayashijonawatexn--rros-granvindafjordxn--rsk" +
+ "og-uuaxn--rst-0narutomobellevuelosangelesjaguarchitecturealtychy" +
+ "attorneyagawalbrzycharternopilawalesundxn--rsta-francaiseharaxn-" +
+ "-ryken-vuaxn--ryrvik-byawaraxn--s-1faitheguardianxn--s9brj9commu" +
+ "nitysfjordyroyrvikinguitarsbschokoladenxn--sandnessjen-ogbizhevs" +
+ "kredirectmeldalxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gra" +
+ "tangenxn--skierv-utazaskvolloabathsbcomobaraxn--skjervy-v1axn--s" +
+ "kjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5narviikananporovnox" +
+ "n--slt-elabbvieeexn--smla-hraxn--smna-gratis-a-bulls-fanxn--snas" +
+ "e-nraxn--sndre-land-0cbremangerxn--snes-poaxn--snsa-roaxn--sr-au" +
+ "rdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbentleyu" +
+ "uconnectatamotorsamnangerxn--srfold-byawatahamaxn--srreisa-q1axn" +
+ "--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbep" +
+ "publishproxyzgorzeleccolognewportlligatewayuzawaxn--stre-toten-z" +
+ "cbsrtroandinosaurlandesmolenskosaigawaxn--t60b56axn--tckweatherc" +
+ "hannelxn--tiq49xqyjewishartgalleryxn--tjme-hraxn--tn0agrinet-fre" +
+ "aksrvaroyxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trgstad-r1ax" +
+ "n--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvdonskoshimizumaki" +
+ "zunokunimilanoxn--uc0ay4axn--uist22hamurakamigoriginshimonitayan" +
+ "agitlaborxn--uisz3gxn--unjrga-rtambovenneslaskerrylogisticsologn" +
+ "exn--unup4yxn--uuwu58axn--vads-jraxn--vard-jraxn--vegrshei-c0axn" +
+ "--vermgensberater-ctberndnpalermomasvuotnakatombetsupportatarsta" +
+ "nikkoebenhavnikolaevennodessaikiraxn--vermgensberatung-pwbeskidy" +
+ "nathomedepotenzachpomorskienikonantanangerxn--vestvgy-ixa6oxn--v" +
+ "g-yiabcn-north-1xn--vgan-qoaxn--vgsy-qoa0jfkomatsushimashikexn--" +
+ "vgu402comparemarkerryhotelscholarshipschooluroyxn--vhquversaille" +
+ "solundbeckosakaerodromegalsacechirealminamiuonumasudaxn--vler-qo" +
+ "axn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bestbuysh" +
+ "ousesamsclubindalindesnesamsunglogowegroweibolzanordre-landrange" +
+ "dalinkasuyakutiaxn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wg" +
+ "bh1compute-1xn--wgbl6axn--xhq521betainaboxfusejnynysagaeroclubme" +
+ "decincinnationwidealerxn--xkc2al3hye2axn--xkc2dl3a5ee0hangoutsys" +
+ "temscloudfrontdoorxn--y9a3aquariumisugitokuyamatsumotofukexn--ye" +
+ "r-znarvikristiansandcatshirakoenigxn--yfro4i67oxn--ygarden-p1axn" +
+ "--ygbi2ammxn--45q11citadeliveryokamikawanehonbetsurutaharaxn--ys" +
+ "tre-slidre-ujbieigersundrivelandrobaknoluoktaikicks-assedicaseih" +
+ "ichisobetsuitaipeiheijiiyamanobeauxartsandcraftsandvikcoromantov" +
+ "alle-d-aostathellexusdecorativeartsanfranciscofreakunemurorangei" +
+ "seiyoichiropracticasertairaxn--zbx025dxn--zf0ao64axn--zf0avxn--4" +
+ "gbriminingxn--zfr164bielawallonieruchomoscienceandindustryninohe" +
+ "kinannestadrudmurtiaxperiaxz"
// nodes is the list of nodes. Each node is represented as a uint32, which
// encodes the node's children, wildcard bit and node type (as an index into
@@ -489,8419 +476,8147 @@ const text = "bifukagawalterbihorologyukuhashimoichinosekigaharaxastronomy-gat"
// An I denotes an ICANN domain.
//
// The layout within the uint32, from MSB to LSB, is:
-// [ 0 bits] unused
-// [10 bits] children index
+// [ 1 bits] unused
+// [ 9 bits] children index
// [ 1 bits] ICANN bit
// [15 bits] text index
// [ 6 bits] text length
var nodes = [...]uint32{
- 0x31fe83,
- 0x28e944,
- 0x2ed8c6,
- 0x380743,
- 0x380746,
- 0x3a5306,
- 0x3b5e43,
- 0x30a7c4,
- 0x20d0c7,
- 0x2ed508,
- 0x1a07102,
- 0x31f1c7,
- 0x368c09,
- 0x2d68ca,
- 0x2d68cb,
- 0x238503,
- 0x2dec46,
- 0x23d6c5,
- 0x1e07542,
- 0x21cf84,
- 0x266d03,
- 0x346145,
- 0x22035c2,
- 0x20a643,
- 0x271f944,
- 0x342285,
- 0x2a10042,
- 0x38a48e,
- 0x255083,
- 0x3affc6,
- 0x2e00142,
- 0x2d4207,
- 0x240d86,
- 0x3204f02,
- 0x22ee43,
- 0x256204,
- 0x32d106,
- 0x25b788,
- 0x2811c6,
- 0x378fc4,
- 0x3600242,
- 0x33b8c9,
- 0x212107,
- 0x2e6046,
- 0x341809,
- 0x2a0048,
- 0x33a904,
- 0x2a0f46,
- 0x21f886,
- 0x3a02d42,
- 0x3a014f,
- 0x28c84e,
- 0x21bfc4,
- 0x382c85,
- 0x30a6c5,
- 0x2e2109,
- 0x249089,
- 0x33b1c7,
- 0x23f8c6,
- 0x20ae43,
- 0x3e01d42,
- 0x2e3203,
- 0x225d0a,
- 0x20cac3,
- 0x242f85,
- 0x28e142,
- 0x28e149,
- 0x4200bc2,
- 0x209204,
- 0x28ad46,
- 0x2e5c05,
- 0x361644,
- 0x4a1a344,
- 0x203ec3,
- 0x218d04,
- 0x4e00702,
- 0x2f8e84,
- 0x52f5f04,
- 0x339bca,
- 0x5600f82,
- 0x28bc47,
- 0x281548,
- 0x6206502,
- 0x31d0c7,
- 0x2c6d44,
- 0x2c6d47,
- 0x393c45,
- 0x35e887,
- 0x33af86,
- 0x271dc4,
- 0x378385,
- 0x28ea47,
- 0x72001c2,
- 0x224143,
- 0x200c42,
- 0x200c43,
- 0x760b5c2,
- 0x20f4c5,
- 0x7a01d02,
- 0x357844,
- 0x27e405,
- 0x21bf07,
- 0x25aece,
- 0x2bf044,
- 0x23df04,
- 0x211c43,
- 0x28a4c9,
- 0x30eacb,
- 0x2ea6c8,
- 0x3415c8,
- 0x306208,
- 0x2b7288,
- 0x33a74a,
- 0x35e787,
- 0x321606,
- 0x7e8f282,
- 0x36a683,
- 0x377683,
- 0x37fd44,
- 0x3b5e83,
- 0x32c343,
- 0x1727e02,
- 0x8203302,
- 0x283f45,
- 0x29e006,
- 0x2da184,
- 0x388547,
- 0x2fa686,
- 0x389384,
- 0x3aa107,
- 0x223d43,
- 0x86cd5c2,
- 0x8a0d342,
- 0x8e1e642,
- 0x21e646,
+ 0x29e943,
+ 0x364444,
+ 0x28af46,
+ 0x371983,
+ 0x371986,
+ 0x394246,
+ 0x3a4103,
+ 0x202f04,
+ 0x24f607,
+ 0x28ab88,
+ 0x1a00882,
+ 0x309dc7,
+ 0x3533c9,
+ 0x2fb3ca,
+ 0x2fb3cb,
+ 0x22fe43,
+ 0x28cac6,
+ 0x2352c5,
+ 0x1e00702,
+ 0x211ac4,
+ 0x2c7a83,
+ 0x226bc5,
+ 0x2200d42,
+ 0x2a0f43,
+ 0x2707e44,
+ 0x368485,
+ 0x2a00c42,
+ 0x3797ce,
+ 0x24a483,
+ 0x38b406,
+ 0x2e04642,
+ 0x2a5907,
+ 0x237d46,
+ 0x3200a42,
+ 0x2ae043,
+ 0x2ae044,
+ 0x280f86,
+ 0x36f448,
+ 0x283a46,
+ 0x386144,
+ 0x3601002,
+ 0x326a09,
+ 0x363a07,
+ 0x3351c6,
+ 0x355049,
+ 0x293988,
+ 0x367104,
+ 0x3a6606,
+ 0x20e306,
+ 0x3a02e02,
+ 0x241d0f,
+ 0x33174e,
+ 0x212484,
+ 0x2bb945,
+ 0x202e05,
+ 0x2ea589,
+ 0x23e889,
+ 0x325747,
+ 0x221646,
+ 0x26b083,
+ 0x3e056c2,
+ 0x346fc3,
+ 0x207a4a,
+ 0x211e83,
+ 0x250585,
+ 0x2040c2,
+ 0x2830c9,
+ 0x4204802,
+ 0x209084,
+ 0x29e486,
+ 0x284b45,
+ 0x34c904,
+ 0x4a74a04,
+ 0x204803,
+ 0x234304,
+ 0x4e01842,
+ 0x364184,
+ 0x52e41c4,
+ 0x22410a,
+ 0x56009c2,
+ 0x334307,
+ 0x38e008,
+ 0x6201182,
+ 0x322847,
+ 0x2b7344,
+ 0x2b7347,
+ 0x383d05,
+ 0x370a47,
+ 0x325506,
+ 0x332a44,
+ 0x340c85,
+ 0x28df47,
+ 0x72046c2,
+ 0x349183,
+ 0x218782,
+ 0x366703,
+ 0x76108c2,
+ 0x2798c5,
+ 0x7a02d42,
+ 0x368ac4,
+ 0x277785,
+ 0x2123c7,
+ 0x2ddc0e,
+ 0x330a44,
+ 0x244744,
+ 0x20ca03,
+ 0x326ec9,
+ 0x30528b,
+ 0x30e148,
+ 0x31cd88,
+ 0x320888,
+ 0x20a588,
+ 0x354e8a,
+ 0x370947,
+ 0x217906,
+ 0x7e9c3c2,
+ 0x377d83,
+ 0x380c43,
+ 0x38bc84,
+ 0x250ac3,
+ 0x3a4143,
+ 0x1713b02,
+ 0x8203182,
+ 0x2484c5,
+ 0x30c046,
+ 0x2c9bc4,
+ 0x396e07,
+ 0x22eec6,
+ 0x280304,
+ 0x3a7dc7,
+ 0x203183,
+ 0x86bdb82,
+ 0x8a4f882,
+ 0x8e13702,
+ 0x213706,
0x9200002,
- 0x2501c5,
- 0x329343,
- 0x201684,
- 0x2efb04,
- 0x2efb05,
- 0x203c43,
- 0x979c783,
- 0x9a092c2,
- 0x291d85,
- 0x291d8b,
- 0x343c06,
- 0x21270b,
- 0x226544,
- 0x213a49,
- 0x2148c4,
- 0x9e14b02,
- 0x215943,
- 0x216283,
- 0x1616b42,
- 0x275fc3,
- 0x216b4a,
- 0xa201102,
- 0x21d205,
- 0x29a88a,
- 0x2e0544,
- 0x201103,
- 0x325384,
- 0x21ae03,
- 0x21ae04,
- 0x21ae07,
- 0x21b605,
- 0x21d685,
- 0x21dc46,
- 0x21dfc6,
- 0x21ea43,
- 0x222688,
- 0x206c03,
- 0xa60c702,
- 0x245848,
- 0x23614b,
- 0x228908,
- 0x228e06,
- 0x229dc7,
- 0x22da48,
- 0xb6024c2,
- 0xba430c2,
- 0x32da08,
- 0x233347,
- 0x2e7b45,
- 0x2e7b48,
- 0x2c3b08,
- 0x2be483,
- 0x232e04,
- 0x37fd82,
- 0xbe34382,
- 0xc23e102,
- 0xca37302,
- 0x237303,
- 0xce01382,
- 0x30a783,
- 0x300f44,
- 0x20a043,
- 0x322844,
- 0x20d7cb,
- 0x2322c3,
- 0x2e6a46,
- 0x245f44,
- 0x2982ce,
- 0x381245,
- 0x3b00c8,
- 0x263347,
- 0x26334a,
- 0x22e803,
- 0x317a07,
- 0x30ec85,
- 0x23a384,
- 0x272706,
- 0x272707,
- 0x330f44,
- 0x301f87,
- 0x25a184,
- 0x25b204,
- 0x25b206,
- 0x25f704,
- 0x36bdc6,
- 0x216983,
- 0x233108,
- 0x316ec8,
- 0x23dec3,
- 0x275f83,
- 0x3a6604,
- 0x3aae83,
- 0xd235f42,
- 0xd6df482,
- 0x207143,
- 0x203f86,
- 0x2a1043,
- 0x285184,
- 0xda165c2,
- 0x2165c3,
- 0x35f083,
- 0x21fe02,
- 0xde008c2,
- 0x2c9786,
- 0x23e347,
- 0x2fd645,
- 0x38fd04,
- 0x294d45,
- 0x2f8a47,
- 0x2add85,
- 0x2e4689,
- 0x2e9906,
- 0x2ef808,
- 0x2fd546,
- 0xe20e982,
- 0x2ddb08,
- 0x300d06,
- 0x219205,
- 0x316887,
- 0x316dc4,
- 0x316dc5,
- 0x281384,
- 0x345d88,
- 0xe6127c2,
- 0xea04882,
- 0x33ca06,
- 0x2cf588,
- 0x34d485,
- 0x351546,
- 0x356108,
- 0x371488,
- 0xee35dc5,
- 0xf214f44,
- 0x34e247,
- 0xf614602,
- 0xfa22902,
- 0x10e0f882,
- 0x28ae45,
- 0x2aaa45,
- 0x30af86,
- 0x350007,
- 0x386287,
- 0x11638543,
- 0x2b0307,
- 0x30e7c8,
- 0x3a0849,
- 0x38a647,
- 0x3b9c87,
- 0x238788,
- 0x238f86,
- 0x239e86,
- 0x23aacc,
- 0x23c08a,
- 0x23c407,
- 0x23d58b,
- 0x23e187,
- 0x23e18e,
- 0x19a3f304,
- 0x240244,
- 0x242547,
- 0x3ac747,
- 0x246d46,
- 0x246d47,
- 0x247407,
- 0x19e29682,
- 0x2495c6,
- 0x2495ca,
- 0x24a08b,
- 0x24ac87,
- 0x24b845,
- 0x24bb83,
- 0x24bdc6,
- 0x24bdc7,
- 0x20d283,
- 0x1a206e02,
- 0x24c78a,
- 0x1a769d02,
- 0x1aa4f282,
- 0x1ae4dd42,
- 0x1b240e82,
- 0x24e9c5,
- 0x24ef44,
- 0x1ba1a442,
- 0x2f8f05,
- 0x24a683,
- 0x2149c5,
- 0x2b7184,
- 0x205ec4,
- 0x25a486,
- 0x262586,
- 0x291f83,
- 0x204844,
- 0x3894c3,
- 0x1c204c82,
- 0x210ac4,
- 0x210ac6,
- 0x34e7c5,
- 0x37e946,
- 0x316988,
- 0x273544,
- 0x266ac8,
- 0x398785,
- 0x22bc88,
- 0x2b2dc6,
- 0x26d907,
- 0x233d84,
- 0x233d86,
- 0x242bc3,
- 0x393fc3,
- 0x211d08,
- 0x322004,
- 0x356747,
- 0x20c7c6,
- 0x2dedc9,
- 0x322a88,
- 0x325448,
- 0x331ac4,
- 0x35f103,
- 0x229942,
- 0x1d2234c2,
- 0x1d61a202,
- 0x36c083,
- 0x1da08e02,
- 0x20d204,
- 0x3521c6,
- 0x3b3745,
- 0x24fa83,
- 0x23cf44,
- 0x2b95c7,
- 0x25a783,
- 0x251208,
- 0x218405,
- 0x264143,
- 0x27e385,
- 0x27e4c4,
- 0x300a06,
- 0x218f84,
- 0x21ab86,
- 0x21be46,
- 0x210584,
- 0x23e543,
- 0x1de1a582,
- 0x23dd05,
- 0x20b9c3,
- 0x1e20c882,
- 0x23aa83,
- 0x2231c5,
- 0x23cac3,
- 0x23cac9,
- 0x1e606b82,
- 0x1ee07842,
- 0x2918c5,
- 0x2211c6,
- 0x2d9d46,
- 0x2bb248,
- 0x2bb24b,
- 0x203fcb,
- 0x220bc5,
- 0x2fd845,
- 0x2cdfc9,
- 0x1600302,
- 0x210748,
- 0x213d44,
- 0x1f601842,
- 0x326403,
- 0x1fecdd46,
- 0x348e08,
- 0x20208b42,
- 0x2bdec8,
- 0x2060c182,
- 0x2bf7ca,
- 0x20a3fd03,
- 0x203606,
- 0x36cc48,
- 0x209708,
- 0x3b3a46,
- 0x37c807,
- 0x3a0347,
- 0x34daca,
- 0x2e05c4,
- 0x354d44,
- 0x368649,
- 0x2139fb45,
- 0x28ca46,
- 0x210083,
- 0x253d44,
- 0x2160df44,
- 0x20df47,
- 0x22c507,
- 0x234404,
- 0x2df805,
- 0x30b048,
- 0x375e07,
- 0x381007,
- 0x21a07602,
- 0x32e984,
- 0x29b188,
- 0x2504c4,
- 0x251844,
- 0x251c45,
- 0x251d87,
- 0x222349,
- 0x252a04,
- 0x253149,
- 0x253388,
- 0x253ac4,
- 0x253ac7,
- 0x21e54003,
- 0x254187,
- 0x1609c42,
- 0x16b4a42,
- 0x254b86,
- 0x2550c7,
- 0x255584,
- 0x257687,
- 0x258d47,
- 0x259983,
- 0x2f6802,
- 0x207d82,
- 0x231683,
- 0x231684,
- 0x23168b,
- 0x3416c8,
- 0x263c84,
- 0x25c985,
- 0x25eb47,
- 0x260105,
- 0x2c8c0a,
- 0x263bc3,
- 0x22206b02,
- 0x206b04,
- 0x267189,
- 0x26a743,
- 0x26a807,
- 0x373089,
- 0x212508,
- 0x2db543,
- 0x282f07,
- 0x283649,
- 0x23d483,
- 0x289844,
- 0x28d209,
- 0x290146,
- 0x21c203,
- 0x200182,
- 0x264d83,
- 0x2b4847,
- 0x2c3e85,
- 0x3413c6,
- 0x259004,
- 0x374e05,
- 0x225cc3,
- 0x20e646,
- 0x213c42,
- 0x3a1784,
- 0x2260d382,
- 0x226603,
- 0x22a01802,
- 0x251743,
- 0x21e444,
- 0x21e447,
- 0x201986,
- 0x20df02,
- 0x22e0dec2,
- 0x2c4244,
- 0x23235182,
- 0x23601b82,
- 0x265704,
- 0x265705,
- 0x345105,
- 0x35c386,
- 0x23a074c2,
- 0x2074c5,
- 0x213005,
- 0x2157c3,
- 0x219d06,
- 0x21a645,
- 0x21e5c2,
- 0x34d0c5,
- 0x21e5c4,
- 0x228203,
- 0x22a443,
- 0x23e11442,
- 0x2dcf47,
- 0x376084,
- 0x376089,
- 0x253c44,
- 0x2357c3,
- 0x300589,
- 0x389e08,
- 0x242aa8c4,
- 0x2aa8c6,
- 0x219983,
- 0x25d3c3,
- 0x323043,
- 0x246eebc2,
- 0x379b82,
- 0x24a17202,
- 0x32af48,
- 0x358e08,
- 0x3a5a46,
- 0x2fd0c5,
- 0x317885,
- 0x333d07,
- 0x2247c5,
- 0x210642,
- 0x24e04742,
- 0x160a442,
- 0x2447c8,
- 0x2dda45,
- 0x2bfbc4,
- 0x2f2845,
- 0x381d87,
- 0x240944,
- 0x24c682,
- 0x25200582,
- 0x33ffc4,
- 0x21ca07,
- 0x292507,
- 0x35e844,
- 0x29a843,
- 0x23de04,
- 0x23de08,
- 0x23a1c6,
- 0x27258a,
- 0x222204,
- 0x29abc8,
- 0x290584,
- 0x229ec6,
- 0x29c484,
- 0x28b146,
- 0x376349,
- 0x274847,
- 0x241243,
- 0x256351c2,
- 0x2755c3,
- 0x214d02,
- 0x25a52e42,
- 0x313486,
- 0x374588,
- 0x2ac047,
- 0x3ab249,
- 0x299f49,
- 0x2acf05,
- 0x2adec9,
- 0x2ae685,
- 0x2ae7c9,
- 0x2afe45,
- 0x2b11c8,
- 0x25e0a104,
- 0x26259ac7,
- 0x2b13c3,
- 0x2b13c7,
- 0x3ba046,
- 0x2b1a47,
- 0x2a9b05,
- 0x2a2cc3,
- 0x26636d02,
- 0x339704,
- 0x26a42a42,
- 0x266603,
- 0x26e206c2,
- 0x30df06,
- 0x2814c5,
- 0x2b3cc7,
- 0x332043,
- 0x32c2c4,
- 0x217003,
- 0x342c43,
- 0x27205e82,
- 0x27a0c442,
- 0x3a5404,
- 0x2f67c3,
- 0x24e545,
- 0x27e01c82,
- 0x286007c2,
- 0x2c8286,
- 0x322144,
- 0x38c444,
- 0x38c44a,
- 0x28e00942,
- 0x38298a,
- 0x39b8c8,
- 0x29231604,
- 0x2046c3,
- 0x20d8c3,
- 0x306349,
- 0x25bd09,
- 0x364986,
- 0x29655783,
- 0x335d45,
- 0x30d2cd,
- 0x39ba86,
- 0x204f4b,
- 0x29a02b02,
- 0x225b48,
- 0x2be22782,
- 0x2c203e02,
- 0x2b1685,
- 0x2c604182,
- 0x266847,
- 0x21b987,
- 0x20bf43,
- 0x23b188,
- 0x2ca02542,
- 0x3780c4,
- 0x21a8c3,
- 0x348505,
- 0x364603,
- 0x33c406,
- 0x212a84,
- 0x275f43,
- 0x2b6443,
- 0x2ce09942,
- 0x2fd7c4,
- 0x379c85,
- 0x3b6587,
- 0x280003,
- 0x2b5103,
- 0x2b5c03,
- 0x1631182,
- 0x2b5cc3,
- 0x2b63c3,
- 0x2d2086c2,
- 0x3a2e44,
- 0x262786,
- 0x34ba83,
- 0x2086c3,
- 0x2d6b8042,
- 0x2b8048,
- 0x2b8304,
- 0x37ce46,
- 0x2b8bc7,
- 0x258346,
- 0x2a0304,
- 0x3b201702,
- 0x3b9f0b,
- 0x307c0e,
- 0x221d4f,
- 0x2ac5c3,
- 0x3ba64d42,
- 0x160b542,
- 0x3be00a82,
- 0x2e89c3,
- 0x2e4903,
- 0x2de046,
- 0x207986,
- 0x203007,
- 0x304704,
- 0x3c221302,
- 0x3c618742,
- 0x3a1205,
- 0x2e7007,
- 0x38c946,
- 0x3ca28142,
- 0x228144,
- 0x2bc743,
- 0x3ce09a02,
- 0x3d366443,
- 0x2bce04,
- 0x2c5409,
- 0x16cb602,
- 0x3d605242,
- 0x385d85,
- 0x3dacb882,
- 0x3de03582,
- 0x3541c7,
- 0x21b2c9,
- 0x368e8b,
- 0x3a0105,
- 0x2714c9,
- 0x384d06,
- 0x343c47,
- 0x3e206844,
- 0x341d89,
- 0x380907,
- 0x348ac7,
- 0x2122c3,
- 0x2122c6,
- 0x312247,
- 0x263a43,
- 0x263a46,
- 0x3ea01cc2,
- 0x3ee022c2,
- 0x22bf03,
- 0x32bec5,
- 0x25a007,
- 0x227906,
- 0x2c3e05,
- 0x207a84,
- 0x28ddc5,
- 0x2fae04,
- 0x3f204bc2,
- 0x337447,
- 0x2ca604,
- 0x24f3c4,
- 0x25bc0d,
- 0x25d749,
- 0x3ab748,
- 0x25e044,
- 0x234a85,
- 0x322907,
- 0x3329c4,
- 0x2fa747,
- 0x204bc5,
- 0x3f6ac504,
- 0x2b5e05,
- 0x269404,
- 0x256fc6,
- 0x34fe05,
- 0x3fa048c2,
- 0x2011c4,
- 0x2011c5,
- 0x3802c6,
- 0x206d85,
- 0x3c0144,
- 0x2cda83,
- 0x208d46,
- 0x222545,
- 0x22b605,
- 0x34ff04,
- 0x222283,
- 0x22228c,
- 0x3fe90a82,
- 0x40206702,
- 0x40600282,
- 0x211a83,
- 0x211a84,
- 0x40a02942,
- 0x2fba48,
- 0x341485,
- 0x34c984,
- 0x36ee86,
- 0x40e0d842,
- 0x41234502,
- 0x41601fc2,
- 0x2a6a85,
- 0x210446,
- 0x226144,
- 0x32d646,
- 0x28ba06,
- 0x215c83,
- 0x41b2770a,
- 0x2f6b05,
- 0x2f6fc3,
- 0x22a9c6,
- 0x30c989,
- 0x22a9c7,
- 0x29f648,
- 0x29ff09,
- 0x241b08,
- 0x22e546,
- 0x209b03,
- 0x41e0c202,
- 0x395343,
- 0x395349,
- 0x333608,
- 0x42253442,
- 0x42604a82,
- 0x229443,
- 0x2e4505,
- 0x25c404,
- 0x2c9ec9,
- 0x26eb44,
- 0x2e0908,
- 0x2050c3,
- 0x20dc44,
- 0x2acd03,
- 0x221208,
- 0x25bb47,
- 0x42e281c2,
- 0x270d02,
- 0x388b05,
- 0x272dc9,
- 0x28cac3,
- 0x284bc4,
- 0x335d04,
- 0x227543,
- 0x28580a,
- 0x43382842,
- 0x43601182,
- 0x2cd543,
- 0x384f83,
- 0x160dc02,
- 0x20ffc3,
- 0x43a14702,
- 0x43e00802,
- 0x4420f644,
- 0x20f646,
- 0x3b6a46,
- 0x248c44,
- 0x37d243,
- 0x200803,
- 0x2f60c3,
- 0x24a406,
- 0x30aa05,
- 0x2cd6c7,
- 0x343b09,
- 0x2d2d85,
- 0x2d3f46,
- 0x2d4908,
- 0x2d4b06,
- 0x260ec4,
- 0x2a1d8b,
- 0x2d8403,
- 0x2d8405,
- 0x2d8548,
- 0x22c2c2,
- 0x3544c2,
- 0x4464ea42,
- 0x44a14642,
- 0x221343,
- 0x44e745c2,
- 0x2745c3,
- 0x2d8844,
- 0x2d8e03,
- 0x45605902,
- 0x45a0c0c6,
- 0x2af186,
- 0x45edcac2,
- 0x462162c2,
- 0x4662a482,
- 0x46a00e82,
- 0x46e176c2,
- 0x47202ec2,
- 0x205383,
- 0x344905,
- 0x348206,
- 0x4761bf84,
- 0x34e5ca,
- 0x20bd46,
- 0x220e04,
- 0x28a483,
- 0x4820ea42,
- 0x204d42,
- 0x23d503,
- 0x48608e83,
- 0x2d8047,
- 0x34fd07,
- 0x49e31787,
- 0x23fcc7,
- 0x2309c3,
- 0x33188a,
- 0x263544,
- 0x3863c4,
- 0x3863ca,
- 0x24b685,
- 0x4a2190c2,
- 0x254b43,
- 0x4a601942,
- 0x21b543,
- 0x275583,
- 0x4ae02b82,
- 0x2b0284,
- 0x2256c4,
- 0x208105,
- 0x39e745,
- 0x2fc3c6,
- 0x2fc746,
- 0x4b206802,
- 0x4b600982,
- 0x3139c5,
- 0x2aee92,
- 0x259806,
- 0x231483,
- 0x315a06,
- 0x231485,
- 0x1616b82,
- 0x53a17102,
- 0x35fd43,
- 0x217103,
- 0x35d703,
- 0x53e02c82,
- 0x38a783,
- 0x54205b82,
- 0x20cc43,
- 0x3a2e88,
- 0x231e83,
- 0x231e86,
- 0x3b0c87,
- 0x26c286,
- 0x26c28b,
- 0x220d47,
- 0x339504,
- 0x54a00e42,
- 0x341305,
- 0x54e08e43,
- 0x2aec83,
- 0x32de85,
- 0x331783,
- 0x55331786,
- 0x2108ca,
- 0x2488c3,
- 0x240c44,
- 0x2cf4c6,
- 0x2364c6,
- 0x55601a03,
- 0x32c187,
- 0x364887,
- 0x2a3885,
- 0x251046,
- 0x222583,
- 0x57619f43,
- 0x57a0cb42,
- 0x34bd44,
- 0x22c24c,
- 0x232f09,
- 0x2445c7,
- 0x38ad45,
- 0x252c84,
- 0x25e6c8,
- 0x265d45,
- 0x57e6c505,
- 0x27b709,
- 0x2e6103,
- 0x24f204,
- 0x5821cc82,
- 0x221543,
- 0x5869bf42,
- 0x3bbe86,
- 0x16235c2,
- 0x58a35b42,
- 0x2a6988,
- 0x2ac343,
- 0x2b5d47,
- 0x2daa05,
- 0x2e5205,
- 0x2e520b,
- 0x2e58c6,
- 0x2e5406,
- 0x2e9006,
- 0x232b84,
+ 0x37f645,
+ 0x315043,
+ 0x205244,
+ 0x2dbe44,
+ 0x2dbe45,
+ 0x207043,
+ 0x9723ac3,
+ 0x9a093c2,
+ 0x2873c5,
+ 0x2873cb,
+ 0x22d086,
+ 0x20cbcb,
+ 0x26ff44,
+ 0x20d189,
+ 0x20ed44,
+ 0x9e0fd82,
+ 0x210c83,
+ 0x211183,
+ 0x1611302,
+ 0x23c343,
+ 0x21130a,
+ 0xa211d42,
+ 0x211d45,
+ 0x28ea8a,
+ 0x2cd704,
+ 0x212d43,
+ 0x213384,
+ 0x213cc3,
+ 0x213cc4,
+ 0x213cc7,
+ 0x214245,
+ 0x218dc5,
+ 0x219586,
+ 0x21a0c6,
+ 0x21aa43,
+ 0x21dc48,
+ 0x258e83,
+ 0xa615802,
+ 0x21f008,
+ 0x21580b,
+ 0x222d08,
+ 0x223586,
+ 0x224547,
+ 0x229748,
+ 0xb279a82,
+ 0xb693f02,
+ 0x20b608,
+ 0x2ad0c7,
+ 0x23b405,
+ 0x23b408,
+ 0x281888,
+ 0x2ada03,
+ 0x22eac4,
+ 0x38bcc2,
+ 0xba2f482,
+ 0xbe051c2,
+ 0xc62f802,
+ 0x22f803,
+ 0xca02ec2,
+ 0x202ec3,
+ 0x2fe704,
+ 0x21abc3,
+ 0x3670c4,
+ 0x24edcb,
+ 0x215743,
+ 0x2d2f86,
+ 0x223f84,
+ 0x29b84e,
+ 0x360445,
+ 0x38b508,
+ 0x24bd87,
+ 0x24bd8a,
+ 0x222a83,
+ 0x222a87,
+ 0x305445,
+ 0x231c84,
+ 0x24d886,
+ 0x24d887,
+ 0x2beb44,
+ 0x2f6607,
+ 0x377e04,
+ 0x3afe84,
+ 0x3afe86,
+ 0x267544,
+ 0x208606,
+ 0x210ac3,
+ 0x217188,
+ 0x21cfc8,
+ 0x244703,
+ 0x23c303,
+ 0x395544,
+ 0x39a003,
+ 0xce00482,
+ 0xd304e82,
+ 0x2004c3,
+ 0x2072c6,
+ 0x369e83,
+ 0x263584,
+ 0xd616942,
+ 0x244c43,
+ 0x216943,
+ 0x21b182,
+ 0xda008c2,
+ 0x2b9fc6,
+ 0x235fc7,
+ 0x2e9345,
+ 0x367a44,
+ 0x27e045,
+ 0x2026c7,
+ 0x26a205,
+ 0x2c6889,
+ 0x2cf2c6,
+ 0x2d48c8,
0x2e9246,
- 0x58eeae88,
- 0x246003,
- 0x231a43,
- 0x231a44,
- 0x2ea484,
- 0x2eab87,
- 0x2ec3c5,
- 0x592ec502,
- 0x59607082,
- 0x207085,
- 0x295bc4,
- 0x2ef38b,
- 0x2efa08,
- 0x2998c4,
- 0x228182,
- 0x59e99842,
- 0x350e83,
- 0x2efec4,
- 0x2f0185,
- 0x2f0607,
- 0x2f2384,
- 0x220c04,
- 0x5a204102,
- 0x36f5c9,
- 0x2f3185,
- 0x3a03c5,
- 0x2f3e45,
- 0x5a621483,
- 0x2f4dc4,
- 0x2f4dcb,
- 0x2f5204,
- 0x2f5c0b,
- 0x2f6005,
- 0x221e8a,
- 0x2f7608,
- 0x2f780a,
- 0x2f7fc3,
- 0x2f7fca,
- 0x5aa33502,
- 0x5ae2fa42,
- 0x236903,
- 0x5b2f9f02,
- 0x2f9f03,
- 0x5b71c482,
- 0x5bb29ac2,
- 0x2fac84,
- 0x2227c6,
- 0x32d385,
- 0x2fd4c3,
- 0x320446,
- 0x317345,
- 0x262a84,
- 0x5be06b42,
- 0x2ba844,
- 0x2cdc4a,
- 0x22fd07,
- 0x2e5e86,
- 0x2612c7,
- 0x20c743,
- 0x2bce48,
- 0x39fd8b,
- 0x230305,
- 0x2f41c5,
- 0x2f41c6,
- 0x2ea004,
- 0x3bf388,
- 0x20e543,
- 0x21f784,
- 0x21f787,
- 0x355746,
- 0x344b06,
- 0x29810a,
- 0x250d44,
- 0x250d4a,
- 0x5c20c386,
- 0x20c387,
- 0x25ca07,
- 0x27b0c4,
- 0x27b0c9,
- 0x262445,
- 0x2439cb,
- 0x2eef43,
- 0x21ad43,
- 0x5c625b03,
- 0x23a584,
- 0x5ca00482,
- 0x2f70c6,
- 0x5cea2a45,
- 0x315c45,
- 0x258586,
- 0x352b04,
- 0x5d2044c2,
- 0x24bbc4,
- 0x5d60b282,
- 0x28b5c5,
- 0x236c84,
- 0x22cb43,
- 0x5de17142,
- 0x217143,
- 0x273e86,
- 0x5e204242,
- 0x2241c8,
- 0x22a844,
- 0x22a846,
- 0x204dc6,
- 0x25ec04,
- 0x208cc5,
- 0x214e48,
- 0x215647,
- 0x2159c7,
- 0x2159cf,
- 0x29b086,
- 0x22f483,
- 0x22f484,
- 0x36edc4,
- 0x213103,
- 0x22a004,
- 0x2494c4,
- 0x5e60fd02,
- 0x291cc3,
- 0x24bf43,
- 0x5ea0d2c2,
- 0x22f043,
- 0x20d2c3,
- 0x21d70a,
- 0x2e7d07,
- 0x381f0c,
- 0x3821c6,
- 0x2f5a86,
- 0x2f6447,
- 0x5ee0e947,
- 0x252d49,
- 0x245984,
- 0x253e04,
- 0x5f221382,
- 0x5f600a02,
- 0x2984c6,
- 0x32bf84,
- 0x2df606,
- 0x239048,
- 0x2bf2c4,
- 0x266886,
- 0x2d9d05,
- 0x26e488,
- 0x2041c3,
- 0x26fd85,
- 0x270b03,
- 0x3a04c3,
- 0x3a04c4,
- 0x206ac3,
- 0x5fa0e602,
- 0x5fe00742,
- 0x2eee09,
- 0x273885,
- 0x276bc4,
- 0x27ab05,
- 0x217e84,
- 0x2c62c7,
- 0x36ecc5,
- 0x231944,
- 0x231948,
- 0x2d6206,
- 0x2dac04,
- 0x2e0788,
- 0x2e1fc7,
- 0x60202502,
- 0x2e6f44,
- 0x2131c4,
- 0x348cc7,
- 0x60602504,
- 0x210f82,
- 0x60a06742,
- 0x227103,
- 0x2dfc84,
- 0x2b2143,
- 0x370645,
- 0x60e06d42,
- 0x2eeac5,
- 0x21b9c2,
- 0x35c7c5,
- 0x374745,
- 0x61204d02,
- 0x35f004,
- 0x61606182,
- 0x266d86,
- 0x2a7806,
- 0x272f08,
- 0x2c7588,
- 0x30de84,
- 0x2f97c5,
- 0x395809,
- 0x2fd8c4,
- 0x210884,
- 0x208483,
- 0x61a1f545,
- 0x2cb6c7,
- 0x28d004,
- 0x31288d,
- 0x332182,
- 0x33f203,
- 0x3479c3,
- 0x61e00d02,
- 0x397dc5,
- 0x212cc7,
- 0x23fd84,
- 0x23fd87,
- 0x2a0109,
- 0x2cdd89,
- 0x277e07,
- 0x20f803,
- 0x2ba348,
- 0x2522c9,
- 0x349c47,
- 0x355685,
- 0x395546,
- 0x398bc6,
- 0x3aaf05,
- 0x25d845,
- 0x62209142,
- 0x37da45,
- 0x2bad08,
- 0x2c9546,
- 0x626c0d47,
- 0x2f6244,
- 0x29bb07,
- 0x300246,
- 0x62a3b442,
- 0x37ffc6,
- 0x302d4a,
- 0x3035c5,
- 0x62ee6282,
- 0x63260a02,
- 0x312586,
- 0x2b36c8,
- 0x636926c7,
- 0x63a04502,
- 0x226783,
- 0x36a846,
- 0x22cf04,
- 0x3b0b46,
- 0x344e06,
- 0x36d78a,
- 0x377705,
- 0x208806,
- 0x2205c3,
- 0x2205c4,
- 0x203082,
- 0x314a43,
- 0x63e11ac2,
- 0x2f8483,
- 0x382c04,
- 0x2b3804,
- 0x2b380a,
- 0x22e603,
- 0x281288,
- 0x22e60a,
- 0x2b4247,
- 0x309306,
- 0x266c44,
- 0x220cc2,
- 0x228cc2,
- 0x64207002,
- 0x23ddc3,
- 0x25c7c7,
- 0x320707,
- 0x28e8c4,
- 0x39d147,
- 0x2f0706,
- 0x21e747,
- 0x233484,
- 0x398ac5,
- 0x2ce485,
- 0x6462be42,
- 0x231146,
- 0x327943,
- 0x371742,
- 0x383306,
- 0x64a08bc2,
- 0x64e05082,
- 0x3c0985,
- 0x6522a202,
- 0x65604782,
- 0x348085,
- 0x39e345,
- 0x2088c5,
- 0x26f003,
- 0x352285,
- 0x2e5987,
- 0x305cc5,
- 0x311985,
- 0x3b01c4,
- 0x24d486,
- 0x264544,
- 0x65a00d42,
- 0x666f2bc5,
- 0x2ab647,
- 0x3176c8,
- 0x29f806,
- 0x29f80d,
- 0x2aac09,
- 0x2aac12,
- 0x359f05,
- 0x36f8c3,
- 0x66a08882,
- 0x314544,
- 0x39bb03,
- 0x3963c5,
- 0x304a45,
- 0x66e1a902,
- 0x264183,
- 0x67231802,
- 0x67a43242,
- 0x67e1f342,
- 0x2ed385,
- 0x23fec3,
- 0x36d408,
- 0x68204382,
- 0x686000c2,
- 0x2b0246,
- 0x35f2ca,
- 0x205503,
- 0x209f43,
- 0x2ef103,
- 0x69202642,
- 0x77602cc2,
- 0x77e0d582,
- 0x206442,
- 0x37fdc9,
- 0x2caa44,
- 0x23b488,
- 0x782fd502,
- 0x78603642,
- 0x2f5e45,
- 0x23d9c8,
- 0x3a2fc8,
- 0x25920c,
- 0x22fac3,
- 0x78a68dc2,
- 0x78e0c402,
- 0x2d3206,
- 0x30a185,
- 0x2a7b83,
- 0x381c46,
- 0x30a2c6,
- 0x20d883,
- 0x30bc43,
- 0x30c146,
- 0x30cd84,
- 0x29d386,
- 0x2d85c5,
- 0x30d10a,
- 0x2397c4,
- 0x30e244,
- 0x30f08a,
- 0x79203442,
- 0x2413c5,
- 0x31018a,
- 0x310a85,
- 0x311344,
- 0x311446,
- 0x3115c4,
- 0x221806,
- 0x79611042,
- 0x33c0c6,
- 0x3b1b45,
- 0x3b80c7,
- 0x200206,
- 0x2de844,
- 0x2de847,
- 0x327646,
- 0x245345,
- 0x245347,
- 0x3abdc7,
- 0x3abdce,
- 0x232206,
- 0x2fa605,
- 0x202447,
- 0x216303,
- 0x3326c7,
- 0x2172c5,
- 0x21b0c4,
- 0x2343c2,
- 0x2432c7,
- 0x304784,
- 0x383884,
- 0x270b8b,
- 0x224e03,
- 0x2d4c47,
- 0x224e04,
- 0x2f11c7,
- 0x299543,
- 0x33dd4d,
- 0x398608,
- 0x224604,
- 0x231845,
- 0x312bc5,
- 0x313003,
- 0x79a0c4c2,
- 0x314a03,
- 0x314d43,
- 0x20f204,
- 0x283745,
- 0x22a4c7,
- 0x220646,
- 0x382943,
- 0x38344b,
- 0x259c8b,
- 0x2ac9cb,
- 0x2fbd4b,
- 0x2c578a,
- 0x30e48b,
- 0x32420b,
- 0x362f0c,
- 0x38bf4b,
- 0x3bdf51,
- 0x3bfd8a,
- 0x31604b,
- 0x31630c,
- 0x31660b,
- 0x316b8a,
- 0x317c8a,
- 0x318c8e,
- 0x31930b,
- 0x3195ca,
- 0x31a9d1,
- 0x31ae0a,
- 0x31b30b,
- 0x31b84e,
- 0x31c18c,
- 0x31c68b,
- 0x31c94e,
- 0x31cccc,
- 0x31d9ca,
- 0x31eccc,
- 0x79f1efca,
- 0x31f7c8,
- 0x320909,
- 0x3232ca,
- 0x32354a,
- 0x3237cb,
- 0x326d8e,
- 0x327111,
- 0x330189,
- 0x3303ca,
- 0x3313cb,
- 0x334a0a,
- 0x3354d6,
- 0x336e4b,
- 0x337b0a,
- 0x337f4a,
- 0x33a4cb,
- 0x33b749,
- 0x33e6c9,
- 0x33ec8d,
- 0x33f2cb,
- 0x34040b,
- 0x340dcb,
- 0x347049,
- 0x34768e,
- 0x347dca,
- 0x3494ca,
- 0x349a0a,
- 0x34a14b,
- 0x34a98b,
- 0x34ac4d,
- 0x34c50d,
- 0x34cd50,
- 0x34d20b,
- 0x35064c,
- 0x3512cb,
- 0x353ccb,
- 0x35528e,
- 0x355e0b,
- 0x355e0d,
- 0x35ae8b,
- 0x35b90f,
- 0x35bccb,
- 0x35c50a,
- 0x35cb49,
- 0x35de09,
- 0x35e18b,
- 0x35e44e,
- 0x36020b,
- 0x361acf,
- 0x36394b,
- 0x363c0b,
- 0x363ecb,
- 0x3643ca,
- 0x368a89,
- 0x36e04f,
- 0x372a8c,
- 0x3732cc,
- 0x37374e,
- 0x373ccf,
- 0x37408e,
- 0x375690,
- 0x375a8f,
- 0x37660e,
- 0x376f4c,
- 0x377252,
- 0x379891,
- 0x37a18e,
- 0x37a94e,
- 0x37ae8e,
- 0x37b20f,
- 0x37b5ce,
- 0x37b953,
- 0x37be11,
- 0x37c24c,
- 0x37c54e,
- 0x37c9cc,
- 0x37de53,
- 0x37ead0,
- 0x37f30c,
- 0x37f60c,
- 0x37facb,
- 0x38044e,
- 0x380d8b,
- 0x3816cb,
- 0x382fcc,
- 0x38b38a,
- 0x38b74c,
- 0x38ba4c,
- 0x38bd49,
- 0x38d7cb,
- 0x38da88,
- 0x38df49,
- 0x38df4f,
- 0x38f88b,
- 0x7a39028a,
- 0x391e4c,
- 0x393009,
- 0x393488,
- 0x39368b,
- 0x393d8b,
- 0x39490a,
- 0x394b8b,
- 0x3950cc,
- 0x396048,
- 0x398d4b,
- 0x39b1cb,
- 0x39ef4e,
- 0x3a05cb,
- 0x3a1f0b,
- 0x3ab94b,
- 0x3abc09,
- 0x3ac14d,
- 0x3b1d4a,
- 0x3b2c97,
- 0x3b4398,
- 0x3b6bc9,
- 0x3b7d0b,
- 0x3b8fd4,
- 0x3b94cb,
- 0x3b9a4a,
- 0x3ba38a,
- 0x3ba60b,
- 0x3badd0,
- 0x3bb1d1,
- 0x3bc00a,
- 0x3bd54d,
- 0x3bdc4d,
- 0x3c05cb,
- 0x3c1206,
- 0x231243,
- 0x7a791143,
- 0x26ed86,
- 0x248805,
- 0x22d287,
- 0x3240c6,
- 0x1608742,
- 0x2c1fc9,
- 0x320244,
- 0x2e4d48,
- 0x210943,
- 0x314487,
- 0x239202,
- 0x2b3d03,
- 0x7aa04542,
- 0x2d0d06,
- 0x2d2104,
- 0x37a844,
- 0x3443c3,
- 0x3443c5,
- 0x7b2cb8c2,
- 0x7b6aeb44,
- 0x27b007,
- 0x7ba43282,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x200e03,
- 0x207102,
- 0x16fb88,
- 0x20f882,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x215443,
- 0x32b7d6,
- 0x32ca13,
- 0x39cfc9,
- 0x34e148,
- 0x341189,
- 0x310306,
- 0x340010,
- 0x24c9d3,
- 0x355808,
- 0x2a0a87,
- 0x37d347,
- 0x28db0a,
- 0x232309,
- 0x3961c9,
- 0x28664b,
- 0x33af86,
- 0x20728a,
- 0x228e06,
- 0x31fe43,
- 0x2dce85,
- 0x233108,
- 0x266e4d,
- 0x28af0c,
- 0x218c87,
- 0x318fcd,
- 0x214f44,
- 0x23a84a,
- 0x23bbca,
- 0x23c08a,
- 0x24ccc7,
- 0x246b87,
+ 0xde06c02,
+ 0x33b648,
+ 0x2fe4c6,
+ 0x3b1a45,
+ 0x3ae4c7,
+ 0x301084,
+ 0x301085,
+ 0x283c04,
+ 0x283c08,
+ 0xe20cc82,
+ 0xe6131c2,
+ 0x329cc6,
+ 0x318208,
+ 0x339345,
+ 0x33a3c6,
+ 0x33c648,
+ 0x35b948,
+ 0xeac8945,
+ 0xefa8204,
+ 0x3aae87,
+ 0xf20e802,
+ 0xf61dec2,
+ 0x10a16582,
+ 0x357b85,
+ 0x2a3e05,
+ 0x2de246,
+ 0x319b87,
+ 0x399547,
+ 0x1122d183,
+ 0x29a147,
+ 0x2d4488,
+ 0x38fec9,
+ 0x379987,
+ 0x3a5187,
+ 0x22fe88,
+ 0x230686,
+ 0x231786,
+ 0x2323cc,
+ 0x232f4a,
+ 0x233787,
+ 0x23518b,
+ 0x235e07,
+ 0x235e0e,
+ 0x236a84,
+ 0x2374c4,
+ 0x239b07,
+ 0x25b087,
+ 0x23d9c6,
+ 0x23d9c7,
+ 0x23e107,
+ 0x14600bc2,
+ 0x23ec86,
+ 0x23ec8a,
+ 0x23ef0b,
+ 0x240007,
+ 0x2407c5,
+ 0x240b03,
+ 0x240fc6,
+ 0x240fc7,
+ 0x230a83,
+ 0x14a0b382,
+ 0x24198a,
+ 0x14f54502,
+ 0x152a6c02,
+ 0x15642b82,
+ 0x15a37e42,
+ 0x243a85,
+ 0x244504,
+ 0x16200682,
+ 0x364205,
+ 0x226b83,
+ 0x317c85,
+ 0x20a484,
+ 0x20ec44,
+ 0x291786,
+ 0x378106,
+ 0x2875c3,
+ 0x261f84,
+ 0x281e43,
+ 0x16600f82,
+ 0x200f84,
+ 0x3ab406,
+ 0x200f85,
+ 0x258c06,
+ 0x3ae5c8,
+ 0x263804,
+ 0x2c7848,
+ 0x2e0c45,
+ 0x22e708,
+ 0x32c306,
+ 0x2b49c7,
+ 0x239504,
+ 0x239506,
+ 0x307003,
+ 0x384083,
+ 0x2be608,
+ 0x30c584,
+ 0x2a0887,
+ 0x30a106,
+ 0x30a109,
+ 0x252448,
+ 0x27efc8,
+ 0x280444,
+ 0x378983,
+ 0x22aa02,
+ 0x16ab1d82,
+ 0x16e2cf42,
+ 0x3a1603,
+ 0x17219c42,
+ 0x24f744,
+ 0x3400c6,
+ 0x371305,
+ 0x23fe83,
+ 0x232884,
+ 0x300447,
+ 0x367783,
+ 0x2379c8,
+ 0x3af5c5,
+ 0x36fc43,
+ 0x277705,
+ 0x277844,
+ 0x208306,
+ 0x20c804,
+ 0x20cf06,
+ 0x212306,
+ 0x2512c4,
+ 0x215683,
+ 0x21a883,
+ 0x1767e402,
+ 0x360fc5,
+ 0x215dc3,
+ 0x17a00442,
+ 0x232383,
+ 0x331e85,
+ 0x2343c3,
+ 0x2343c9,
+ 0x17e08042,
+ 0x18614b42,
+ 0x286b45,
+ 0x21ba46,
+ 0x29f387,
+ 0x2c9786,
+ 0x2b83c8,
+ 0x2b83cb,
+ 0x20730b,
+ 0x22aac5,
+ 0x2d02c5,
+ 0x2bf489,
+ 0x1600ec2,
+ 0x251488,
+ 0x20ce04,
+ 0x18e00202,
+ 0x24ea03,
+ 0x1965b246,
+ 0x330e88,
+ 0x19a031c2,
+ 0x228108,
+ 0x19e00d82,
+ 0x27008a,
+ 0x20f043,
+ 0x31d346,
+ 0x330448,
+ 0x378cc8,
+ 0x32f8c6,
+ 0x36dd07,
+ 0x241f07,
+ 0x20de8a,
+ 0x2cd784,
+ 0x33f184,
+ 0x352f49,
+ 0x38f8c5,
+ 0x2f31c6,
+ 0x2138c3,
+ 0x247984,
+ 0x212104,
+ 0x3412c7,
+ 0x21e687,
+ 0x2d7e84,
+ 0x20ddc5,
+ 0x2de308,
+ 0x35d607,
+ 0x360207,
+ 0x1a206ac2,
+ 0x369684,
+ 0x28f388,
+ 0x384544,
+ 0x2455c4,
+ 0x2459c5,
+ 0x245b07,
+ 0x206ac9,
+ 0x246684,
+ 0x246e89,
+ 0x247348,
+ 0x247704,
+ 0x247707,
+ 0x1a647f83,
+ 0x248a47,
+ 0x16475c2,
+ 0x17a4a82,
+ 0x249a06,
+ 0x24a4c7,
0x24a904,
- 0x233d86,
- 0x209d44,
- 0x2c7ec8,
- 0x26eb89,
- 0x2bb246,
- 0x2bb248,
- 0x24d18d,
- 0x2cdfc9,
- 0x209708,
- 0x3a0347,
- 0x300fca,
- 0x2550c6,
- 0x2664c7,
- 0x2bd584,
- 0x292347,
- 0x35180a,
- 0x38690e,
- 0x2247c5,
- 0x29224b,
- 0x32f709,
- 0x25bd09,
- 0x21b7c7,
- 0x2936ca,
- 0x348c07,
- 0x307d49,
- 0x20b808,
- 0x33420b,
- 0x2e4505,
- 0x3ab60a,
- 0x2734c9,
- 0x331d0a,
- 0x2d2e0b,
- 0x38668b,
- 0x2863d5,
- 0x30be85,
- 0x3a03c5,
- 0x2f4dca,
- 0x364a8a,
- 0x32f487,
- 0x2252c3,
- 0x298448,
- 0x2db34a,
- 0x22a846,
- 0x252109,
- 0x26e488,
- 0x2dac04,
- 0x2b2149,
- 0x2c7588,
- 0x2b2d07,
- 0x2f2bc6,
- 0x2ab647,
- 0x376d87,
- 0x24a205,
- 0x22460c,
- 0x231845,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x20f882,
- 0x238543,
- 0x208e83,
- 0x200e03,
- 0x201a03,
- 0x238543,
- 0x208e83,
- 0xe03,
- 0x231e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x16fb88,
- 0x20f882,
- 0x201742,
- 0x23c2c2,
- 0x202542,
- 0x200542,
- 0x2e6dc2,
- 0x4638543,
- 0x23cac3,
- 0x21b583,
- 0x323043,
- 0x255783,
- 0x28cac3,
- 0x2dcd86,
- 0x208e83,
- 0x201a03,
- 0x20bdc3,
- 0x16fb88,
- 0x345b44,
- 0x20da07,
- 0x2112c3,
- 0x2b1684,
- 0x208543,
- 0x21b843,
- 0x323043,
- 0x36dc7,
- 0x145944,
- 0xf183,
- 0x145c05,
- 0x207102,
- 0x19c783,
- 0x5a0f882,
- 0x1490fc9,
- 0x9144d,
- 0x9178d,
- 0x23c2c2,
- 0x31604,
- 0x145c49,
- 0x200442,
- 0x5f4ed48,
- 0xf4544,
- 0x16fb88,
- 0x1409702,
- 0x1510cc6,
- 0x239283,
- 0x2bcc43,
- 0x6638543,
- 0x23a844,
- 0x6a3cac3,
- 0x6f23043,
- 0x205e82,
- 0x231604,
- 0x208e83,
- 0x301dc3,
- 0x2014c2,
- 0x201a03,
- 0x222dc2,
- 0x2fabc3,
- 0x204242,
- 0x205983,
- 0x26e543,
- 0x200202,
- 0x16fb88,
- 0x239283,
- 0x301dc3,
- 0x2014c2,
- 0x2fabc3,
- 0x204242,
- 0x205983,
- 0x26e543,
- 0x200202,
- 0x2fabc3,
- 0x204242,
- 0x205983,
- 0x26e543,
- 0x200202,
- 0x238543,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x20cb02,
- 0x221483,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x208e83,
- 0x201a03,
- 0x355685,
- 0x21a902,
- 0x207102,
- 0x16fb88,
- 0x1480cc8,
- 0x323043,
- 0x20fec1,
- 0x201641,
- 0x203c01,
- 0x201301,
- 0x267401,
- 0x2ae601,
- 0x211341,
- 0x28a0c1,
- 0x24dfc1,
- 0x2fbf81,
+ 0x24c9c7,
+ 0x24e4c7,
+ 0x252083,
+ 0x23aa82,
+ 0x201682,
+ 0x252b03,
+ 0x252b04,
+ 0x252b0b,
+ 0x31ce88,
+ 0x258b44,
+ 0x253805,
+ 0x255e47,
+ 0x257a05,
+ 0x2d9a8a,
+ 0x258a83,
+ 0x1aa21842,
+ 0x258d84,
+ 0x25ae49,
+ 0x25edc3,
+ 0x25ee87,
+ 0x3ac249,
+ 0x280d08,
+ 0x200c83,
+ 0x276607,
+ 0x276d49,
+ 0x202883,
+ 0x27d9c4,
+ 0x282309,
+ 0x2856c6,
+ 0x286e03,
+ 0x2038c2,
+ 0x233e83,
+ 0x39b6c7,
+ 0x37f785,
+ 0x3585c6,
+ 0x247b84,
+ 0x2d37c5,
+ 0x207a03,
+ 0x21ac86,
+ 0x20d382,
+ 0x390e04,
+ 0x227982,
+ 0x2db883,
+ 0x1ae007c2,
+ 0x244a43,
+ 0x21a544,
+ 0x21a547,
+ 0x3713c6,
+ 0x2499c2,
+ 0x1b22d642,
+ 0x325e44,
+ 0x1b626b02,
+ 0x1ba0acc2,
+ 0x2d6484,
+ 0x2d6485,
+ 0x2c3e85,
+ 0x341a46,
+ 0x1be01e02,
+ 0x29fe45,
+ 0x2ded05,
+ 0x201e03,
+ 0x3650c6,
+ 0x378445,
+ 0x213682,
+ 0x33a005,
+ 0x213684,
+ 0x217c43,
+ 0x219343,
+ 0x1c20c502,
+ 0x28e147,
+ 0x35d884,
+ 0x35d889,
+ 0x247884,
+ 0x22b603,
+ 0x346449,
+ 0x360e88,
+ 0x2a3c84,
+ 0x2a3c86,
+ 0x201f83,
+ 0x212883,
+ 0x21eb03,
+ 0x1c6e1102,
+ 0x2e9182,
+ 0x1ca0b2c2,
+ 0x316b88,
+ 0x34afc8,
+ 0x394986,
+ 0x2549c5,
+ 0x21a905,
+ 0x306007,
+ 0x255805,
+ 0x21c2c2,
+ 0x1ce61e82,
+ 0x1614b82,
+ 0x38fa48,
+ 0x33b585,
+ 0x2c8084,
+ 0x2e0b85,
+ 0x390507,
+ 0x258884,
+ 0x23a882,
+ 0x1d204c42,
+ 0x32c704,
+ 0x213507,
+ 0x3abd87,
+ 0x370a04,
+ 0x28ea43,
+ 0x244644,
+ 0x244648,
+ 0x231ac6,
+ 0x24d70a,
+ 0x206984,
+ 0x28edc8,
+ 0x253ac4,
+ 0x224646,
+ 0x290e84,
+ 0x357e86,
+ 0x35db49,
+ 0x259187,
+ 0x33a683,
+ 0x1d605e82,
+ 0x26a843,
+ 0x20ff82,
+ 0x1da04d42,
+ 0x2dfe86,
+ 0x35ed48,
+ 0x2a5287,
+ 0x3a30c9,
+ 0x23a4c9,
+ 0x2a5c85,
+ 0x2a6e49,
+ 0x2a7b45,
+ 0x2a7c89,
+ 0x2a8b85,
+ 0x284244,
+ 0x1de84247,
+ 0x2957c3,
+ 0x2a9c07,
+ 0x3a5546,
+ 0x2aa407,
+ 0x2a2945,
+ 0x2aba83,
+ 0x1e232a02,
+ 0x392844,
+ 0x1e63a3c2,
+ 0x25a183,
+ 0x1ea0f1c2,
+ 0x2e8b86,
+ 0x38df85,
+ 0x2acb87,
+ 0x324d83,
+ 0x250a44,
+ 0x206f83,
+ 0x20b343,
+ 0x1ee082c2,
+ 0x1f600042,
+ 0x394344,
+ 0x23aa43,
+ 0x364885,
+ 0x25fcc5,
+ 0x1fa05602,
+ 0x20200942,
+ 0x276946,
+ 0x209744,
+ 0x30c6c4,
+ 0x30c6ca,
+ 0x20a00a82,
+ 0x2f768a,
+ 0x372fc8,
+ 0x20e01604,
+ 0x201d83,
+ 0x216c03,
+ 0x3209c9,
+ 0x223349,
+ 0x300546,
+ 0x21202243,
+ 0x2da985,
+ 0x2f81cd,
+ 0x202246,
+ 0x2065cb,
+ 0x21606382,
+ 0x333208,
+ 0x21a0bf02,
+ 0x21e00b42,
+ 0x2af285,
+ 0x222074c2,
+ 0x264c47,
+ 0x2a2247,
+ 0x2103c3,
+ 0x2ae348,
+ 0x22601982,
+ 0x203a04,
+ 0x3786c3,
+ 0x332c05,
+ 0x3833c3,
+ 0x38da46,
+ 0x31b204,
+ 0x23c2c3,
+ 0x26ad83,
+ 0x22a095c2,
+ 0x22aa44,
+ 0x351445,
+ 0x36bb47,
+ 0x274643,
+ 0x2ad803,
+ 0x2aed83,
+ 0x1621a82,
+ 0x2aee43,
+ 0x2af643,
+ 0x22e04282,
+ 0x2f5d44,
+ 0x378306,
+ 0x204283,
+ 0x2af9c3,
+ 0x232b09c2,
+ 0x2b09c8,
+ 0x2b1404,
+ 0x25a546,
+ 0x2b1847,
+ 0x22ba06,
+ 0x230d44,
+ 0x30e001c2,
+ 0x3a540b,
+ 0x39fb4e,
+ 0x21c80f,
+ 0x233383,
+ 0x31633e42,
+ 0x1604ec2,
+ 0x31a02b82,
+ 0x227683,
+ 0x202b83,
+ 0x235c06,
+ 0x2aea46,
+ 0x27d807,
+ 0x34aa44,
+ 0x31e1bb82,
+ 0x32229e82,
+ 0x228e45,
+ 0x3a4ac7,
+ 0x371b86,
+ 0x326436c2,
+ 0x2436c4,
+ 0x36e203,
+ 0x32a09682,
+ 0x32f508c3,
+ 0x391004,
+ 0x2b6b49,
+ 0x16bc882,
+ 0x33216c82,
+ 0x216c85,
+ 0x33644802,
+ 0x33a00102,
+ 0x33e507,
+ 0x239049,
+ 0x35364b,
+ 0x241cc5,
+ 0x377609,
+ 0x2bcfc6,
+ 0x22d0c7,
+ 0x33e0c744,
+ 0x305ac9,
+ 0x35a787,
+ 0x201b47,
+ 0x209883,
+ 0x209886,
+ 0x2da2c7,
+ 0x206003,
+ 0x271e46,
+ 0x34605642,
+ 0x34a34642,
+ 0x21fa43,
+ 0x250645,
+ 0x222547,
+ 0x281b86,
+ 0x37f705,
+ 0x311244,
+ 0x3b1405,
+ 0x2e8904,
+ 0x34e02102,
+ 0x3210c7,
+ 0x2d6044,
+ 0x223244,
+ 0x22324d,
+ 0x248809,
+ 0x2e0f48,
+ 0x22cd04,
+ 0x209b05,
+ 0x27ee47,
+ 0x332784,
+ 0x22ef87,
+ 0x3a8405,
+ 0x353a9084,
+ 0x2fa005,
+ 0x25da84,
+ 0x265d46,
+ 0x319985,
+ 0x35636b42,
+ 0x212e04,
+ 0x212e05,
+ 0x213206,
+ 0x37f845,
+ 0x256584,
+ 0x2dbc83,
+ 0x32fd86,
+ 0x220f45,
+ 0x225285,
+ 0x319a84,
+ 0x206a03,
+ 0x206a0c,
+ 0x35a86002,
+ 0x35e01042,
+ 0x3620b402,
+ 0x332683,
+ 0x332684,
+ 0x366061c2,
+ 0x3a6088,
+ 0x358685,
+ 0x236604,
+ 0x23b9c6,
+ 0x36a0a242,
+ 0x36e09bc2,
+ 0x37200982,
+ 0x2d8845,
+ 0x251186,
+ 0x341204,
+ 0x2814c6,
+ 0x3340c6,
+ 0x203483,
+ 0x3772788a,
+ 0x23ad85,
+ 0x274803,
+ 0x225046,
+ 0x2efe09,
+ 0x225047,
+ 0x28bd48,
+ 0x293849,
+ 0x219888,
+ 0x36a346,
+ 0x20b203,
+ 0x37a9a1c2,
+ 0x3856c3,
+ 0x3856c9,
+ 0x3357c8,
+ 0x37e09782,
+ 0x38206742,
+ 0x2348c3,
+ 0x2cf145,
+ 0x253304,
+ 0x31c8c9,
+ 0x25f6c4,
+ 0x2b1648,
+ 0x206743,
+ 0x24f244,
+ 0x326b83,
+ 0x21ba88,
+ 0x223187,
+ 0x38643742,
+ 0x269d42,
+ 0x238c45,
+ 0x268849,
+ 0x211003,
+ 0x278184,
+ 0x2da944,
+ 0x202c03,
+ 0x278cca,
+ 0x38b72e82,
+ 0x38e12dc2,
+ 0x2bdb03,
+ 0x3751c3,
+ 0x164f202,
+ 0x250d03,
+ 0x39250042,
+ 0x39603042,
+ 0x39b07b04,
+ 0x366086,
+ 0x3469c6,
+ 0x276b84,
+ 0x25a943,
+ 0x27be43,
+ 0x2e4983,
+ 0x23f286,
+ 0x2c2e45,
+ 0x2be0c7,
+ 0x22cf89,
+ 0x2c1d45,
+ 0x2c2d86,
+ 0x2c3708,
+ 0x2c3906,
+ 0x238744,
+ 0x29718b,
+ 0x2c6383,
+ 0x2c6385,
+ 0x2c64c8,
+ 0x21e442,
+ 0x33e802,
+ 0x39e43b02,
+ 0x3a20e842,
+ 0x21bbc3,
+ 0x3a600e02,
+ 0x269fc3,
+ 0x2c67c4,
+ 0x2c8183,
+ 0x3ae25682,
+ 0x3b2cc5c6,
+ 0x2bb346,
+ 0x2ccc08,
+ 0x3b6cad42,
+ 0x3ba111c2,
+ 0x3be19382,
+ 0x3c209f82,
+ 0x3c614882,
+ 0x3ca00ac2,
+ 0x228343,
+ 0x318d45,
+ 0x209c86,
+ 0x3ce12444,
+ 0x3ab20a,
+ 0x310606,
+ 0x22ad04,
+ 0x27e943,
+ 0x3da06bc2,
+ 0x205902,
+ 0x24dbc3,
+ 0x3de38483,
+ 0x2ee087,
+ 0x319887,
+ 0x3f252c07,
+ 0x20f007,
+ 0x215a43,
+ 0x22c6ca,
+ 0x240584,
+ 0x341504,
+ 0x34150a,
+ 0x247045,
+ 0x3f601642,
+ 0x24d483,
+ 0x3fa01dc2,
+ 0x201f43,
+ 0x26a803,
+ 0x40201942,
+ 0x29a0c4,
+ 0x220a84,
+ 0x3a36c5,
+ 0x2d7205,
+ 0x22da06,
+ 0x22dd86,
+ 0x40608382,
+ 0x40a025c2,
+ 0x2eb445,
+ 0x2bb052,
+ 0x29fbc6,
+ 0x21ce83,
+ 0x2fd346,
+ 0x221d85,
+ 0x1611342,
+ 0x48e0d502,
+ 0x2ed8c3,
+ 0x212043,
+ 0x265603,
+ 0x49203382,
+ 0x379ac3,
+ 0x49602182,
+ 0x204a03,
+ 0x2f5d88,
+ 0x223b43,
+ 0x223b46,
+ 0x333a07,
+ 0x2d84c6,
+ 0x2d84cb,
+ 0x22ac47,
+ 0x392644,
+ 0x49e02602,
+ 0x3a6505,
+ 0x215a03,
+ 0x22fd83,
+ 0x31aa03,
+ 0x31aa06,
+ 0x2d038a,
+ 0x26d703,
+ 0x21d5c4,
+ 0x318146,
+ 0x3b1e46,
+ 0x4a2264c3,
+ 0x250907,
+ 0x29cf8d,
+ 0x39eb87,
+ 0x296ec5,
+ 0x237806,
+ 0x220f83,
+ 0x4bb65303,
+ 0x4be07a82,
+ 0x307604,
+ 0x21e3cc,
+ 0x35bb89,
+ 0x36f307,
+ 0x246045,
+ 0x255904,
+ 0x26ae08,
+ 0x274885,
+ 0x274a85,
+ 0x3612c9,
+ 0x335283,
+ 0x2a6b84,
+ 0x4c206d42,
+ 0x206d43,
+ 0x4c690942,
+ 0x295bc6,
+ 0x16b5482,
+ 0x4ca95782,
+ 0x2d8748,
+ 0x2b6d43,
+ 0x2f9f47,
+ 0x2d7785,
+ 0x295785,
+ 0x2f6c4b,
+ 0x2d1f06,
+ 0x2f6e46,
+ 0x2f9d06,
+ 0x226284,
+ 0x2d4ac6,
+ 0x2d5048,
+ 0x234b03,
+ 0x252ec3,
+ 0x252ec4,
+ 0x2d70c4,
+ 0x2d7487,
+ 0x2d8185,
+ 0x4ced82c2,
+ 0x4d206a42,
+ 0x209285,
+ 0x2990c4,
+ 0x2dac8b,
+ 0x2dbd48,
+ 0x2e6804,
+ 0x243702,
+ 0x4da80b82,
+ 0x2b0c03,
+ 0x2dc204,
+ 0x2dc4c5,
+ 0x272d87,
+ 0x2e06c4,
+ 0x22ab04,
+ 0x4de07442,
+ 0x359f49,
+ 0x2e1585,
+ 0x241f85,
+ 0x2e2105,
+ 0x4e21bd03,
+ 0x2e2f44,
+ 0x2e2f4b,
+ 0x2e3444,
+ 0x2e3ecb,
+ 0x2e48c5,
+ 0x21c94a,
+ 0x2e4f88,
+ 0x2e518a,
+ 0x2e5a03,
+ 0x2e5a0a,
+ 0x4e626402,
+ 0x4ea41542,
+ 0x265903,
+ 0x4eee7d82,
+ 0x2e7d83,
+ 0x4f35d142,
+ 0x4f7157c2,
+ 0x2e8784,
+ 0x21dd86,
+ 0x281205,
+ 0x2e91c3,
+ 0x29ef06,
+ 0x21d445,
+ 0x21e104,
+ 0x4fa08782,
+ 0x2ca784,
+ 0x2bf10a,
+ 0x386847,
+ 0x38ddc6,
+ 0x2d0847,
+ 0x21e503,
+ 0x253b48,
+ 0x25b5cb,
+ 0x300645,
+ 0x2b6e85,
+ 0x2b6e86,
+ 0x225904,
+ 0x335b88,
+ 0x20b4c3,
+ 0x20e204,
+ 0x20e207,
+ 0x280ec6,
+ 0x321746,
+ 0x29b68a,
+ 0x244fc4,
+ 0x244fca,
+ 0x2de886,
+ 0x2de887,
+ 0x253887,
+ 0x26f884,
+ 0x26f889,
+ 0x24b7c5,
+ 0x23a30b,
+ 0x26ddc3,
+ 0x20d0c3,
+ 0x21a943,
+ 0x231e84,
+ 0x4fe04b42,
+ 0x254186,
+ 0x2ab805,
+ 0x2b2dc5,
+ 0x3324c6,
+ 0x279384,
+ 0x502013c2,
+ 0x240b44,
+ 0x50607982,
+ 0x232984,
+ 0x227783,
+ 0x50a12082,
+ 0x349f83,
+ 0x24ae86,
+ 0x50e01bc2,
+ 0x30f108,
+ 0x224ec4,
+ 0x224ec6,
+ 0x305546,
+ 0x255f04,
+ 0x32fd05,
+ 0x3a8108,
+ 0x3a8607,
+ 0x3b0bc7,
+ 0x3b0bcf,
+ 0x28f286,
+ 0x210d03,
+ 0x210d04,
+ 0x2251c4,
+ 0x229103,
+ 0x224784,
+ 0x373e44,
+ 0x51226442,
+ 0x287303,
+ 0x390683,
+ 0x51617642,
+ 0x222a43,
+ 0x24f803,
+ 0x218e4a,
+ 0x23b5c7,
+ 0x3a568c,
+ 0x3a5946,
+ 0x230ac6,
+ 0x23a6c7,
+ 0x2302c7,
+ 0x23e289,
+ 0x21f144,
+ 0x23ea84,
+ 0x51a0a442,
+ 0x51e01402,
+ 0x29ba46,
+ 0x250704,
+ 0x376e86,
+ 0x230748,
+ 0x330cc4,
+ 0x264c86,
+ 0x2c9745,
+ 0x25f008,
+ 0x207503,
+ 0x266a45,
+ 0x269b43,
+ 0x242083,
+ 0x242084,
+ 0x26afc3,
+ 0x522e1202,
+ 0x52602482,
+ 0x26dc89,
+ 0x274985,
+ 0x283dc4,
+ 0x3614c5,
+ 0x210804,
+ 0x2ed107,
+ 0x33fac5,
+ 0x252dc4,
+ 0x252dc8,
+ 0x2d3486,
+ 0x2d5204,
+ 0x2d5208,
+ 0x2d5e87,
+ 0x52a015c2,
+ 0x2da0c4,
+ 0x2d3904,
+ 0x201d47,
+ 0x52e41384,
+ 0x22dc82,
+ 0x53201882,
+ 0x202b43,
+ 0x216b84,
+ 0x222903,
+ 0x222905,
+ 0x5362c082,
+ 0x2e9085,
+ 0x210fc2,
+ 0x376445,
+ 0x35ef05,
+ 0x53a168c2,
+ 0x2168c4,
+ 0x53e08d82,
+ 0x2c7b06,
+ 0x2ac106,
+ 0x268988,
+ 0x2b7b88,
+ 0x2e8b04,
+ 0x35e245,
+ 0x2f39c9,
+ 0x29f484,
+ 0x2d0344,
+ 0x2513c3,
+ 0x5420dfc5,
+ 0x374f07,
+ 0x2881c4,
+ 0x35a90d,
+ 0x35b202,
+ 0x3858c3,
+ 0x39a083,
+ 0x54601082,
+ 0x3886c5,
+ 0x31b447,
+ 0x20f0c4,
+ 0x20f0c7,
+ 0x293a49,
+ 0x2bf249,
+ 0x214687,
+ 0x24fa83,
+ 0x2b52c8,
+ 0x23dd09,
+ 0x2e9947,
+ 0x2e9cc5,
+ 0x2ea486,
+ 0x2eaac6,
+ 0x2eac45,
+ 0x248905,
+ 0x54a01282,
+ 0x228685,
+ 0x2b9988,
+ 0x2a79c6,
+ 0x3a1c87,
+ 0x2e4b04,
+ 0x2ab1c7,
+ 0x2edd06,
+ 0x54e00242,
+ 0x212f06,
+ 0x2f004a,
+ 0x2f1045,
+ 0x552d29c2,
+ 0x55638282,
+ 0x2da606,
+ 0x3574c8,
+ 0x55babf47,
+ 0x55e00602,
+ 0x20a503,
+ 0x3b0306,
+ 0x30aa04,
+ 0x3338c6,
+ 0x341746,
+ 0x3971ca,
+ 0x3a1e05,
+ 0x20d586,
+ 0x218743,
+ 0x218744,
+ 0x207282,
+ 0x2fe483,
+ 0x56253e82,
+ 0x2dd843,
+ 0x2f7904,
+ 0x2dca04,
+ 0x35760a,
+ 0x245483,
+ 0x283b08,
+ 0x36a40a,
+ 0x278447,
+ 0x2f4846,
+ 0x2c79c4,
+ 0x22abc2,
+ 0x200e42,
+ 0x56609202,
+ 0x244603,
+ 0x253647,
+ 0x29f1c7,
+ 0x38f98b,
+ 0x3643c4,
+ 0x349447,
+ 0x272e86,
+ 0x213807,
+ 0x2ad204,
+ 0x33bb85,
+ 0x2a96c5,
+ 0x56a10442,
+ 0x221a46,
+ 0x2259c3,
+ 0x226cc2,
+ 0x226cc6,
+ 0x56e0d942,
+ 0x57203e42,
+ 0x203e45,
+ 0x57624982,
+ 0x57a06ec2,
+ 0x358845,
+ 0x2c0f45,
+ 0x20d645,
+ 0x264183,
+ 0x340185,
+ 0x2d1fc7,
+ 0x2aa2c5,
+ 0x3219c5,
+ 0x38b604,
+ 0x379bc6,
+ 0x243c84,
+ 0x57e00cc2,
+ 0x276485,
+ 0x2a4887,
+ 0x377088,
+ 0x26a8c6,
+ 0x26a8cd,
+ 0x270789,
+ 0x270792,
+ 0x322045,
+ 0x326e03,
+ 0x58a019c2,
+ 0x2e6004,
+ 0x2022c3,
+ 0x35e145,
+ 0x2f2605,
+ 0x58e21e42,
+ 0x290f03,
+ 0x59242d42,
+ 0x59694082,
+ 0x59a18882,
+ 0x346e05,
+ 0x2a1003,
+ 0x397008,
+ 0x59e011c2,
+ 0x5a203282,
+ 0x29a086,
+ 0x27f30a,
+ 0x204983,
+ 0x256503,
+ 0x2f3c43,
+ 0x5ae06202,
+ 0x692033c2,
+ 0x69a04cc2,
+ 0x203dc2,
+ 0x38bd09,
+ 0x2bbcc4,
+ 0x2ae648,
+ 0x69ee9202,
+ 0x6a205882,
+ 0x2e4105,
+ 0x2355c8,
+ 0x247d88,
+ 0x2f334c,
+ 0x23a183,
+ 0x25d442,
+ 0x6a62d742,
+ 0x2c21c6,
+ 0x2f56c5,
+ 0x30f5c3,
+ 0x3903c6,
+ 0x2f5806,
+ 0x22fc43,
+ 0x2f6a03,
+ 0x2f6fc6,
+ 0x2f7d84,
+ 0x270186,
+ 0x2c6545,
+ 0x2f800a,
+ 0x23d184,
+ 0x2f8d84,
+ 0x34b94a,
+ 0x6aa6cd42,
+ 0x347a45,
+ 0x2fa44a,
+ 0x2fb885,
+ 0x2fc404,
+ 0x2fc506,
+ 0x2fc684,
+ 0x366dc6,
+ 0x6ae00282,
+ 0x38d706,
+ 0x38e7c5,
+ 0x204707,
+ 0x239f46,
+ 0x22d584,
+ 0x22d587,
+ 0x3277c6,
+ 0x212f45,
+ 0x2c6c87,
+ 0x39ae07,
+ 0x39ae0e,
+ 0x223ec6,
+ 0x22ee45,
+ 0x279a07,
+ 0x2deb83,
+ 0x2deb87,
+ 0x3a8a05,
+ 0x211204,
+ 0x2120c2,
+ 0x37a547,
+ 0x34aac4,
+ 0x2ae9c4,
+ 0x269bcb,
+ 0x2201c3,
+ 0x2c3a47,
+ 0x2201c4,
+ 0x2ce307,
+ 0x238943,
+ 0x32914d,
+ 0x388f08,
+ 0x252cc4,
+ 0x252cc5,
+ 0x2fca45,
+ 0x2fd003,
+ 0x6b224dc2,
+ 0x2fe443,
+ 0x2fea03,
+ 0x365c44,
+ 0x276e45,
+ 0x2193c7,
+ 0x2187c6,
+ 0x372f83,
+ 0x226e0b,
+ 0x29d34b,
+ 0x267c4b,
+ 0x276f4a,
+ 0x2a734b,
+ 0x2cae0b,
+ 0x2d2a0c,
+ 0x2d5711,
+ 0x33d90a,
+ 0x34e1cb,
+ 0x37bd0b,
+ 0x3ae28a,
+ 0x3b2eca,
+ 0x2ff60d,
+ 0x300d4e,
+ 0x301b4b,
+ 0x301e0a,
+ 0x302d51,
+ 0x30318a,
+ 0x30368b,
+ 0x303bce,
+ 0x30450c,
+ 0x30498b,
+ 0x304c4e,
+ 0x304fcc,
+ 0x3087ca,
+ 0x3098cc,
+ 0x6b709bca,
+ 0x30adc9,
+ 0x30c94a,
+ 0x30cbca,
+ 0x30ce4b,
+ 0x312f8e,
+ 0x313311,
+ 0x31bcc9,
+ 0x31bf0a,
+ 0x31cb0b,
+ 0x31e2ca,
+ 0x31ee56,
+ 0x32060b,
+ 0x321e0a,
+ 0x32220a,
+ 0x32424b,
+ 0x326889,
+ 0x329ac9,
+ 0x32ae0d,
+ 0x32c48b,
+ 0x32d60b,
+ 0x32dfcb,
+ 0x32e449,
+ 0x32ea8e,
+ 0x32efca,
+ 0x335e4a,
+ 0x33648a,
+ 0x336e4b,
+ 0x33768b,
+ 0x33794d,
+ 0x33904d,
+ 0x339c90,
+ 0x33a14b,
+ 0x33ac8c,
+ 0x33c3cb,
+ 0x33e00b,
+ 0x33f64b,
+ 0x34490b,
+ 0x34538f,
+ 0x34574b,
+ 0x34600a,
+ 0x346709,
+ 0x346b49,
+ 0x34808b,
+ 0x34834e,
+ 0x34bfcb,
+ 0x34cd8f,
+ 0x34ed8b,
+ 0x34f04b,
+ 0x34f30b,
+ 0x34f74a,
+ 0x353249,
+ 0x35624f,
+ 0x35ce4c,
+ 0x35d34c,
+ 0x35de0e,
+ 0x35e48f,
+ 0x35e84e,
+ 0x35fa90,
+ 0x35fe8f,
+ 0x3608ce,
+ 0x3617cc,
+ 0x361ad2,
+ 0x36b751,
+ 0x36bd0e,
+ 0x36c14e,
+ 0x36c68e,
+ 0x36ca0f,
+ 0x36cdce,
+ 0x36d153,
+ 0x36d611,
+ 0x36da4e,
+ 0x36decc,
+ 0x36e2d3,
+ 0x36f650,
+ 0x36ff0c,
+ 0x37020c,
+ 0x3706cb,
+ 0x37168e,
+ 0x371f8b,
+ 0x3723cb,
+ 0x373b0c,
+ 0x37acca,
+ 0x37b50c,
+ 0x37b80c,
+ 0x37bb09,
+ 0x37cf0b,
+ 0x37d1c8,
+ 0x37d3c9,
+ 0x37d3cf,
+ 0x37ed0b,
+ 0x37fa0a,
+ 0x380fcc,
+ 0x382e49,
+ 0x383208,
+ 0x38374b,
+ 0x383e4b,
+ 0x384c8a,
+ 0x384f0b,
+ 0x38544c,
+ 0x385e08,
+ 0x38910b,
+ 0x38ba0b,
+ 0x38fc4b,
+ 0x391a4b,
+ 0x39a98b,
+ 0x39ac49,
+ 0x39b18d,
+ 0x3a004a,
+ 0x3a0f97,
+ 0x3a2898,
+ 0x3a5bc9,
+ 0x3a7b4b,
+ 0x3a9414,
+ 0x3a990b,
+ 0x3a9e8a,
+ 0x3aa30a,
+ 0x3aa58b,
+ 0x3ab590,
+ 0x3ab991,
+ 0x3ac48a,
+ 0x3ad88d,
+ 0x3adf8d,
+ 0x3b328b,
+ 0x3b4506,
+ 0x221b43,
+ 0x6bb99283,
+ 0x323dc6,
+ 0x28b6c5,
+ 0x2c55c7,
+ 0x33d7c6,
+ 0x1617982,
+ 0x2b0d49,
+ 0x29ed04,
+ 0x2cfe48,
+ 0x242743,
+ 0x2e5f47,
+ 0x230902,
+ 0x2acbc3,
+ 0x6be006c2,
+ 0x2c0586,
+ 0x2c17c4,
+ 0x307c84,
+ 0x236c43,
+ 0x236c45,
+ 0x6c6ff382,
+ 0x6caa8004,
+ 0x26f7c7,
+ 0x16ce2c2,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x2025c3,
+ 0x200882,
+ 0x880c8,
+ 0x216582,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x317416,
+ 0x31a5d3,
+ 0x3492c9,
+ 0x3aad88,
+ 0x3a6389,
+ 0x2fa5c6,
+ 0x32c750,
+ 0x21d6d3,
+ 0x200b08,
+ 0x25aa47,
+ 0x274ec7,
+ 0x29cb4a,
+ 0x2f7989,
+ 0x3336c9,
+ 0x28a70b,
+ 0x325506,
+ 0x31cf8a,
+ 0x223586,
+ 0x29e903,
+ 0x28e085,
+ 0x217188,
+ 0x2c7bcd,
+ 0x357c4c,
+ 0x38e487,
+ 0x3025cd,
+ 0x3a8204,
+ 0x23214a,
+ 0x232a8a,
+ 0x232f4a,
+ 0x21d9c7,
+ 0x23cfc7,
+ 0x23f644,
+ 0x239506,
+ 0x3258c4,
+ 0x2ec848,
+ 0x25f709,
+ 0x2b83c6,
+ 0x2b83c8,
+ 0x2423cd,
+ 0x2bf489,
+ 0x378cc8,
+ 0x241f07,
+ 0x2fe78a,
+ 0x24a4c6,
+ 0x25a047,
+ 0x2cdac4,
+ 0x240d07,
+ 0x30130a,
+ 0x3397ce,
+ 0x255805,
+ 0x2fcd4b,
+ 0x277a09,
+ 0x223349,
+ 0x2a2087,
+ 0x358b0a,
+ 0x201c87,
+ 0x39fc89,
+ 0x358108,
+ 0x369c4b,
+ 0x2cf145,
+ 0x2e0e0a,
+ 0x2a37c9,
+ 0x30f54a,
+ 0x2c1dcb,
+ 0x240c0b,
+ 0x28a495,
+ 0x2d5d45,
+ 0x241f85,
+ 0x2e2f4a,
+ 0x215cca,
+ 0x310c47,
+ 0x220683,
+ 0x29b9c8,
+ 0x2cb14a,
+ 0x224ec6,
+ 0x23db49,
+ 0x25f008,
+ 0x2d5204,
+ 0x22fb09,
+ 0x2b7b88,
+ 0x32c247,
+ 0x276486,
+ 0x2a4887,
+ 0x28fd87,
+ 0x23f085,
+ 0x25564c,
+ 0x252cc5,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x216582,
+ 0x22d183,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x22d183,
+ 0x238483,
+ 0x223b43,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x216582,
+ 0x201a42,
+ 0x233182,
+ 0x201982,
+ 0x204c02,
+ 0x293d42,
+ 0x462d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x21eb03,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x20b443,
+ 0x880c8,
+ 0x335d44,
+ 0x24f007,
+ 0x251fc3,
+ 0x231404,
+ 0x214bc3,
+ 0x282343,
+ 0x21eb03,
+ 0x16e747,
+ 0x200882,
+ 0x123ac3,
+ 0x5a16582,
+ 0x86a0d,
+ 0x233182,
+ 0x1604,
+ 0x201502,
+ 0x5e01508,
+ 0xe26c4,
+ 0x880c8,
+ 0x140de82,
+ 0x14fa2c6,
+ 0x230983,
+ 0x316403,
+ 0x662d183,
+ 0x232144,
+ 0x6a343c3,
+ 0x6e1eb03,
+ 0x2082c2,
+ 0x201604,
+ 0x238483,
+ 0x212ec3,
+ 0x202282,
+ 0x2264c3,
+ 0x21ed42,
+ 0x2e86c3,
+ 0x201bc2,
+ 0x29c743,
+ 0x22d743,
+ 0x204702,
+ 0x880c8,
+ 0x230983,
+ 0x212ec3,
+ 0x202282,
+ 0x2e86c3,
+ 0x201bc2,
+ 0x29c743,
+ 0x22d743,
+ 0x204702,
+ 0x2e86c3,
+ 0x201bc2,
+ 0x29c743,
+ 0x22d743,
+ 0x204702,
+ 0x22d183,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x202002,
+ 0x21bd03,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x238483,
+ 0x2264c3,
+ 0x2e9cc5,
+ 0x221e42,
+ 0x200882,
+ 0x880c8,
+ 0x1462d48,
+ 0x21eb03,
+ 0x225b41,
+ 0x20fd41,
+ 0x20c401,
+ 0x20c041,
+ 0x226fc1,
+ 0x26f541,
+ 0x252041,
+ 0x225c41,
+ 0x2d5901,
+ 0x2ff8c1,
0x200141,
0x200001,
- 0x131645,
- 0x16fb88,
- 0x2008c1,
- 0x201781,
- 0x200301,
- 0x200081,
- 0x200181,
- 0x200401,
- 0x200041,
- 0x2086c1,
- 0x200101,
- 0x200281,
- 0x200801,
- 0x200981,
- 0x200441,
- 0x204101,
- 0x2227c1,
- 0x200341,
+ 0x880c8,
+ 0x200481,
0x200741,
- 0x2002c1,
- 0x2000c1,
- 0x203441,
- 0x200201,
+ 0x200081,
0x200c81,
- 0x2005c1,
- 0x204541,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x200442,
- 0x201a03,
- 0x36dc7,
- 0x8cbc7,
- 0x24386,
- 0x44f4a,
- 0x906c8,
- 0x5c288,
- 0x5c6c7,
- 0xffc6,
- 0xe1d45,
- 0x11205,
- 0x86286,
- 0x12cf06,
- 0x286644,
- 0x31cf87,
- 0x16fb88,
- 0x2de944,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x323043,
- 0x255783,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x21a902,
- 0x2ba8c3,
- 0x242043,
- 0x2cc103,
- 0x202d42,
- 0x33eb43,
- 0x203ec3,
- 0x20fc03,
- 0x200001,
- 0x2ed0c5,
- 0x203c43,
- 0x226544,
- 0x332083,
- 0x322103,
- 0x222903,
- 0x383283,
- 0xaa38543,
- 0x240244,
- 0x24ac83,
- 0x207583,
- 0x2228c3,
- 0x23aa83,
- 0x23cac3,
- 0x23c803,
- 0x202103,
- 0x2aab03,
- 0x322083,
- 0x2bdec3,
- 0x20df43,
- 0x255684,
- 0x257307,
- 0x2f6802,
- 0x25c003,
- 0x263783,
- 0x27e983,
- 0x20fe03,
- 0x20dec3,
- 0xaf23043,
- 0x209ac3,
- 0x204c03,
- 0x231603,
- 0x34bc85,
- 0x209c83,
- 0x304d43,
- 0xb207a83,
- 0x374803,
- 0x213643,
- 0x229443,
- 0x28cac3,
- 0x22c2c2,
- 0x20c0c3,
- 0x208e83,
- 0x1600e03,
- 0x22b1c3,
- 0x2014c3,
- 0x21a743,
- 0x201a03,
- 0x36ea03,
- 0x223583,
- 0x221483,
- 0x233503,
- 0x30bcc3,
- 0x2fad83,
- 0x317345,
- 0x20c843,
- 0x2df706,
- 0x2fadc3,
- 0x349703,
- 0x2205c4,
- 0x20c9c3,
- 0x386603,
- 0x2f1a03,
- 0x20bdc3,
- 0x21a902,
- 0x22fac3,
- 0x30e403,
- 0x30fac4,
- 0x383884,
- 0x21a5c3,
- 0x16fb88,
- 0x207102,
- 0x200242,
- 0x202d42,
- 0x20cac2,
- 0x201d02,
- 0x201442,
- 0x23de42,
- 0x201842,
- 0x207b02,
- 0x201fc2,
- 0x2281c2,
- 0x214642,
- 0x2745c2,
- 0x20cb42,
- 0x2e6dc2,
- 0x21cc82,
- 0x225b82,
- 0x204102,
- 0x2204c2,
- 0x205842,
- 0x200482,
- 0x221dc2,
- 0x2044c2,
- 0x20d2c2,
- 0x200a02,
- 0x21f542,
- 0x204782,
- 0x7102,
- 0x242,
- 0x2d42,
- 0xcac2,
- 0x1d02,
- 0x1442,
- 0x3de42,
- 0x1842,
- 0x7b02,
- 0x1fc2,
- 0x281c2,
- 0x14642,
- 0x745c2,
- 0xcb42,
- 0xe6dc2,
- 0x1cc82,
- 0x25b82,
- 0x4102,
- 0x204c2,
- 0x5842,
- 0x482,
- 0x21dc2,
- 0x44c2,
- 0xd2c2,
- 0xa02,
- 0x1f542,
- 0x4782,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x2442,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x20f882,
- 0x201a03,
- 0xc638543,
- 0x323043,
- 0x28cac3,
- 0x1a3443,
- 0x219302,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x4542,
- 0x201c02,
- 0x1442b45,
- 0x232282,
- 0x16fb88,
- 0xf882,
- 0x209d82,
- 0x209b02,
- 0x20ddc2,
- 0x2190c2,
- 0x206802,
- 0x11205,
- 0x201282,
- 0x2014c2,
- 0x202c82,
- 0x200dc2,
- 0x21cc82,
- 0x3951c2,
- 0x206742,
- 0x260a42,
- 0x36dc7,
- 0x1501cd,
- 0xe1dc9,
- 0x5900b,
- 0xe5848,
- 0x56809,
- 0x106046,
- 0x323043,
- 0x16fb88,
- 0x145944,
- 0xf183,
- 0x145c05,
- 0x16fb88,
- 0x5d3c6,
- 0x145c49,
- 0x126447,
- 0x207102,
- 0x286644,
- 0x20f882,
- 0x238543,
- 0x201742,
- 0x23cac3,
- 0x207b02,
- 0x2de944,
- 0x255783,
- 0x253442,
- 0x208e83,
- 0x200442,
- 0x201a03,
- 0x3a03c6,
- 0x323d8f,
- 0x7156c3,
- 0x16fb88,
- 0x20f882,
- 0x21b583,
- 0x323043,
- 0x28cac3,
- 0xe03,
- 0x152e1cb,
- 0xe2648,
- 0x14b7aca,
- 0x14f5907,
- 0x8dbcb,
- 0x149785,
- 0x36dc7,
- 0x20f882,
- 0x238543,
- 0x323043,
- 0x208e83,
- 0x207102,
- 0x200b42,
- 0x2092c2,
- 0xfe38543,
- 0x248582,
- 0x23cac3,
- 0x209c42,
- 0x20d382,
- 0x323043,
- 0x210642,
- 0x259c42,
- 0x2aeb02,
- 0x2006c2,
- 0x295e02,
- 0x203102,
- 0x200782,
- 0x2351c2,
- 0x2335c2,
- 0x252e42,
- 0x2b5102,
- 0x2d2942,
- 0x327982,
- 0x2111c2,
- 0x28cac3,
- 0x200802,
- 0x208e83,
- 0x24d382,
- 0x289e82,
- 0x201a03,
- 0x2485c2,
- 0x20d2c2,
- 0x221382,
- 0x200742,
- 0x204d02,
- 0x2e6282,
- 0x22be42,
- 0x231802,
- 0x2312c2,
- 0x3195ca,
- 0x35c50a,
- 0x39090a,
- 0x3c1382,
- 0x208a82,
- 0x212a42,
- 0x10223fc9,
- 0x1072c38a,
- 0x1438547,
- 0x10a02482,
- 0x1416dc3,
- 0x12c2,
- 0x12c38a,
- 0x252044,
- 0x11238543,
- 0x23cac3,
- 0x253384,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x28cac3,
- 0x208e83,
- 0xe3bc5,
- 0x200e03,
- 0x201a03,
- 0x20c843,
- 0x202443,
- 0x16fb88,
- 0x140ff44,
- 0x1441c5,
- 0x12620a,
- 0x11ec42,
- 0x1affc6,
- 0x35ad1,
- 0x11a23fc9,
- 0x144248,
- 0x10b388,
- 0x8cf47,
- 0xbc2,
- 0x13164b,
- 0x1b320a,
- 0x71ca,
- 0x26547,
- 0x16fb88,
- 0x114008,
- 0x14507,
- 0x17c2198b,
- 0x23087,
- 0xc702,
- 0x5b907,
- 0x1920a,
- 0x8cc4f,
- 0x4f70f,
- 0x22902,
- 0xf882,
- 0xaaa48,
- 0xe228a,
- 0x6a08,
- 0x64b88,
- 0xdfbc8,
- 0x4c82,
- 0x42bcf,
- 0xa670b,
- 0xf8d08,
- 0x3e607,
- 0x185b8a,
- 0x3af8b,
- 0x57f89,
- 0x185a87,
- 0x6908,
- 0x1089cc,
- 0x81a87,
- 0x1a800a,
- 0xdd088,
- 0x1aafce,
- 0x2438e,
- 0x2638b,
- 0x27bcb,
- 0x2920b,
- 0x2c049,
- 0x2ff8b,
- 0x31ccd,
- 0x329cb,
- 0x62b4d,
- 0x62ecd,
- 0xfa44a,
- 0x1836cb,
- 0x3b64b,
- 0x47085,
- 0x1802cc10,
- 0x12d40f,
- 0x12db4f,
- 0x37a4d,
- 0xbf490,
- 0xc182,
- 0x18623a08,
- 0x8ca48,
- 0x18af52c5,
- 0x52a0b,
- 0x11f3d0,
- 0x5ad08,
- 0x6b0a,
- 0x27d89,
- 0x6b307,
- 0x6b647,
- 0x6b807,
- 0x6bb87,
- 0x6ca87,
- 0x6d487,
- 0x6ddc7,
- 0x6e187,
- 0x6f187,
- 0x6f487,
- 0x70147,
- 0x70307,
- 0x704c7,
- 0x70687,
- 0x70987,
- 0x70e47,
- 0x71707,
- 0x72007,
- 0x72c87,
- 0x731c7,
- 0x73387,
- 0x73707,
- 0x74487,
- 0x74687,
- 0x750c7,
- 0x75287,
- 0x75447,
- 0x75dc7,
- 0x76087,
- 0x77a47,
- 0x78187,
- 0x78447,
- 0x78bc7,
- 0x78d87,
- 0x79187,
- 0x79687,
- 0x79907,
- 0x79d07,
- 0x79ec7,
- 0x7a087,
- 0x7ae07,
- 0x7c447,
- 0x7c987,
- 0x7cc87,
- 0x7ce47,
- 0x7d1c7,
- 0x7d787,
- 0x13c42,
- 0x64c8a,
- 0xe90c7,
- 0x287c5,
- 0x806d1,
- 0x157c6,
- 0x11318a,
- 0xaa8ca,
- 0x5d3c6,
- 0xb880b,
- 0x17202,
- 0x3a1d1,
- 0x1bbc89,
- 0x9c0c9,
- 0x351c2,
- 0xa808a,
- 0xac7c9,
- 0xacf0f,
- 0xada4e,
- 0xae208,
- 0x206c2,
- 0xb649,
- 0x1025ce,
- 0xe8b4c,
- 0xf328f,
- 0x1a5b4e,
- 0x1684c,
- 0x18009,
- 0x1c291,
- 0x1f108,
- 0x2ac92,
- 0x2bb4d,
- 0x33c4d,
- 0x15208b,
- 0x41cd5,
- 0x164ec9,
- 0xfcf8a,
- 0x40809,
- 0x4d650,
- 0x4e70b,
- 0x5898f,
- 0x6390b,
- 0x7298c,
- 0x77650,
- 0x8430a,
- 0x853cd,
- 0x894ce,
- 0x8ef4a,
- 0xede0c,
- 0x176a54,
- 0x1bb911,
- 0x95a8b,
- 0x97fcf,
- 0xa290d,
- 0xa76ce,
- 0xb2bcc,
- 0xb330c,
- 0x160b0b,
- 0x160e0e,
- 0xd6750,
- 0x11868b,
- 0x1876cd,
- 0x1bce4f,
- 0xba0cc,
- 0xbb0ce,
- 0xbc011,
- 0xc7c4c,
- 0xc9307,
- 0xc9c0d,
- 0x130d4c,
- 0x1605d0,
- 0x174c0d,
- 0xd1b47,
- 0xd7c10,
- 0xdd6c8,
- 0xf178b,
- 0x134c4f,
- 0x3ef48,
- 0x11338d,
- 0x15c750,
- 0x172e49,
- 0x18e086c6,
- 0xb8243,
- 0xbc445,
- 0x9a02,
- 0x143889,
- 0x5e04a,
- 0x10fb06,
- 0x2594a,
- 0x1900c949,
- 0x1c003,
- 0xdebd1,
- 0xdf009,
- 0xe0407,
- 0x35c4b,
- 0xe67d0,
- 0xe6c8c,
- 0xe8e48,
- 0xe9805,
- 0xb988,
- 0x1ad4ca,
- 0x1c0c7,
- 0x16bac7,
- 0x982,
- 0x12bcca,
- 0x12e7c9,
- 0x79545,
- 0x402ca,
- 0x9260f,
- 0x4b8cb,
- 0x14bd4c,
- 0x17a492,
- 0x94e45,
- 0xec1c8,
- 0x17618a,
- 0x196f3d05,
- 0x190ecc,
- 0x129ac3,
- 0x1951c2,
- 0xfb30a,
- 0x14fb70c,
- 0x14f508,
- 0x62d08,
- 0x36d47,
- 0xb282,
- 0x4242,
- 0x47590,
- 0xa02,
- 0x3904f,
- 0x86286,
- 0x7c0e,
- 0xebbcb,
- 0x8f148,
- 0xda049,
- 0x18f052,
- 0x95cd,
- 0x586c8,
- 0x58ec9,
- 0x5d50d,
- 0x5e4c9,
- 0x5e88b,
- 0x60648,
- 0x65808,
- 0x65b88,
- 0x65e49,
- 0x6604a,
- 0x6a98c,
- 0xeb04a,
- 0x10bd07,
- 0x1f54d,
- 0xfde8b,
- 0x12004c,
- 0x404c8,
- 0x4f049,
- 0x1b01d0,
- 0xc2,
- 0x2d3cd,
- 0x2642,
- 0x2cc2,
- 0x10bc4a,
- 0x11308a,
- 0x11438b,
- 0x3b80c,
- 0x113b0a,
- 0x113d8e,
- 0xf2cd,
- 0x11d708,
- 0x4542,
- 0x11f46c0e,
- 0x1260ee4e,
- 0x12f43f8a,
- 0x1373a14e,
- 0x13f9d38e,
- 0x1460138c,
- 0x1438547,
- 0x1438549,
- 0x1416dc3,
- 0x14e3700c,
- 0x15707789,
- 0x15f3b509,
- 0x12c2,
- 0x146b51,
- 0xed91,
- 0x143ecd,
- 0x13a091,
- 0x19d2d1,
- 0x12cf,
- 0x36f4f,
- 0x1076cc,
- 0x13b44c,
- 0x18954d,
- 0x1b5295,
- 0x10ed8c,
- 0xea88c,
- 0x122ed0,
- 0x158fcc,
- 0x16d9cc,
- 0x191819,
- 0x1a83d9,
- 0x1aa459,
- 0x1b3e94,
- 0x1b8ad4,
- 0x1c0d14,
- 0x2394,
- 0x3754,
- 0x1670ee49,
- 0x16dc0fc9,
- 0x176ea949,
- 0x1221f309,
- 0x12c2,
- 0x12a1f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x1321f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x13a1f309,
- 0x12c2,
- 0x1421f309,
- 0x12c2,
- 0x14a1f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x1521f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x15a1f309,
- 0x12c2,
- 0x1621f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x16a1f309,
- 0x12c2,
- 0x1721f309,
- 0x12c2,
- 0x17a1f309,
- 0x12c2,
- 0x238a,
- 0x12c2,
- 0x35ac5,
- 0x1b3204,
- 0x146c0e,
- 0xee4e,
- 0x143f8a,
- 0x13a14e,
- 0x19d38e,
- 0x138c,
- 0x3700c,
- 0x107789,
- 0x13b509,
- 0x10ee49,
- 0x1c0fc9,
- 0xea949,
- 0x122f8d,
- 0x2649,
- 0x3a09,
- 0x5bf04,
- 0x11d8c4,
- 0x126144,
- 0x15f784,
- 0x8de84,
- 0x4b744,
- 0x6e44,
- 0x67344,
- 0x8cf44,
- 0x157e2c3,
- 0xc182,
- 0xf2c3,
- 0x4c82,
- 0x207102,
- 0x20f882,
- 0x201742,
- 0x207602,
- 0x207b02,
- 0x200442,
- 0x204242,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231603,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x208e83,
- 0x201a03,
- 0x160c3,
- 0x323043,
- 0x31604,
- 0x207102,
- 0x39c783,
- 0x1b638543,
- 0x2bf347,
- 0x323043,
- 0x211a83,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x243d0a,
- 0x3a03c5,
- 0x221483,
- 0x205082,
- 0x16fb88,
- 0x16fb88,
- 0xf882,
- 0x127482,
- 0x1bf51b0b,
- 0x5ba45,
- 0x35dc5,
- 0x114b46,
- 0x145944,
- 0xf183,
- 0x145c05,
- 0x131645,
- 0x16fb88,
- 0x23087,
- 0x38543,
- 0x1c644d87,
- 0x1432c6,
- 0x1c93b345,
- 0x143387,
- 0x1b4d0a,
- 0x1b4bc8,
- 0x11887,
- 0x6df88,
- 0x99707,
- 0x152cf,
- 0x435c7,
- 0x150d86,
- 0x11f3d0,
- 0x12a58f,
- 0x20a89,
- 0x10fb84,
- 0x1cd4344e,
- 0xb098c,
- 0x5810a,
- 0xa7987,
- 0x3520a,
- 0xbb49,
- 0xb514c,
- 0x4304a,
- 0x5ec8a,
- 0x145c49,
- 0x10fb06,
- 0xa7a4a,
- 0xe8a,
- 0xa4e49,
- 0xde488,
- 0xde786,
- 0xe284d,
- 0xbc8c5,
- 0x126447,
- 0x1019c9,
- 0xf72c7,
- 0xb5ed4,
- 0x103acb,
- 0xf8b4a,
- 0xab10d,
- 0xd3c3,
- 0xd3c3,
- 0x24386,
- 0xd3c3,
- 0x19c783,
- 0x16fb88,
- 0xf882,
- 0x53384,
- 0x5f843,
- 0x155685,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x203ec3,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x29c283,
- 0x202443,
- 0x203ec3,
- 0x286644,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x206683,
- 0x238543,
- 0x23cac3,
- 0x207603,
- 0x21b583,
- 0x323043,
- 0x231604,
- 0x3797c3,
- 0x229443,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0x36a883,
- 0x1ea38543,
- 0x23cac3,
- 0x250ac3,
- 0x323043,
- 0x212143,
- 0x229443,
- 0x201a03,
- 0x204103,
- 0x35f584,
- 0x16fb88,
- 0x1f238543,
- 0x23cac3,
- 0x2ae2c3,
- 0x323043,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x20e943,
- 0x16fb88,
- 0x1fa38543,
- 0x23cac3,
- 0x21b583,
- 0x200e03,
- 0x201a03,
- 0x16fb88,
- 0x1438547,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x131645,
- 0x36dc7,
- 0xb610b,
- 0xdf404,
- 0xbc8c5,
- 0x1480cc8,
- 0xae90d,
- 0x20e6c505,
- 0x7bd44,
- 0x10c3,
- 0x172d45,
- 0x33b145,
- 0x16fb88,
- 0xd3c2,
- 0x2bc3,
- 0xf9306,
- 0x31f948,
- 0x3347c7,
- 0x286644,
- 0x39c286,
- 0x3b5146,
- 0x16fb88,
- 0x2ddac3,
- 0x342a49,
- 0x26d615,
- 0x6d61f,
- 0x238543,
- 0x3b3a52,
- 0xf6306,
- 0x114dc5,
- 0x6b0a,
- 0x27d89,
- 0x3b380f,
- 0x2de944,
- 0x3490c5,
- 0x304b10,
- 0x34e347,
- 0x200e03,
- 0x293408,
- 0x12ce46,
- 0x29630a,
- 0x230f04,
- 0x2f3743,
- 0x3a03c6,
- 0x205082,
- 0x22facb,
- 0xe03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x2f9a03,
- 0x20f882,
- 0x6ed43,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x211a83,
- 0x228243,
- 0x201a03,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x207102,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x35dc5,
- 0x286644,
- 0x238543,
- 0x23cac3,
- 0x20f644,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x204c03,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x210543,
- 0x707c3,
- 0x11a83,
- 0x208e83,
- 0x201a03,
- 0x3195ca,
- 0x335289,
- 0x35438b,
- 0x35490a,
- 0x35c50a,
- 0x369bcb,
- 0x38274a,
- 0x38b38a,
- 0x39090a,
- 0x390b8b,
- 0x3ad209,
- 0x3af10a,
- 0x3af7cb,
- 0x3b978b,
- 0x3bfb4a,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x35dcb,
- 0x651c8,
- 0x1174c9,
- 0x16fb88,
- 0x238543,
- 0x26b304,
- 0x20b342,
- 0x21bf84,
- 0x346145,
- 0x203ec3,
- 0x286644,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x253384,
- 0x2de944,
- 0x231604,
- 0x229443,
- 0x208e83,
- 0x201a03,
- 0x22d585,
- 0x206683,
- 0x221483,
- 0x20ec43,
- 0x231944,
- 0x20fe84,
- 0x2cc105,
- 0x16fb88,
- 0x30dc84,
- 0x36bdc6,
- 0x281384,
- 0x20f882,
- 0x381107,
- 0x254d87,
- 0x251844,
- 0x260105,
- 0x374e05,
- 0x2b13c5,
- 0x231604,
- 0x2cf6c8,
- 0x23eb46,
- 0x3bffc8,
- 0x257cc5,
- 0x2e4505,
- 0x263544,
- 0x201a03,
- 0x2f4544,
- 0x368dc6,
- 0x3a04c3,
- 0x231944,
- 0x280bc5,
- 0x2e4ac4,
- 0x34da44,
- 0x205082,
- 0x2669c6,
- 0x3a2906,
- 0x30a185,
- 0x207102,
- 0x39c783,
- 0x2760f882,
- 0x223b84,
- 0x207b02,
- 0x28cac3,
- 0x200e82,
- 0x208e83,
- 0x200442,
- 0x215443,
- 0x202443,
- 0x16fb88,
- 0x16fb88,
- 0x323043,
- 0x207102,
- 0x2820f882,
- 0x323043,
- 0x270443,
- 0x3797c3,
- 0x32e5c4,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x207102,
- 0x28a0f882,
- 0x238543,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x482,
- 0x208882,
- 0x21a902,
- 0x211a83,
- 0x2ef783,
- 0x207102,
- 0x131645,
- 0x16fb88,
- 0x36dc7,
- 0x20f882,
- 0x23cac3,
- 0x253384,
- 0x2020c3,
- 0x323043,
- 0x204c03,
- 0x28cac3,
- 0x208e83,
- 0x21eb43,
- 0x201a03,
- 0x2252c3,
- 0x122213,
- 0x124cd4,
- 0x36dc7,
- 0x139986,
- 0x5e24b,
- 0x24386,
- 0x5c0c7,
- 0x120589,
- 0xe838a,
- 0x9058d,
- 0x14fecc,
- 0x3954a,
- 0x11205,
- 0x1b4d48,
- 0x86286,
- 0x31586,
- 0x12cf06,
- 0x20c182,
- 0x10b14c,
- 0x1b33c7,
- 0x2a691,
- 0x238543,
- 0x6df05,
- 0x7588,
- 0x18ec4,
- 0x29cbe1c6,
- 0x806c6,
- 0xb9a06,
- 0x960ca,
- 0xb4003,
- 0x2a24c984,
- 0xe8345,
- 0x18e43,
- 0x2a63dc47,
- 0xe3bc5,
- 0xb88cc,
- 0xf7a88,
- 0xbd248,
- 0xa6589,
- 0x14dc08,
- 0x1425886,
- 0x2ab71549,
- 0x14978a,
- 0x16308,
- 0x114b48,
- 0x8cf44,
- 0xb5ac5,
- 0x2ae42bc3,
- 0x2b332106,
- 0x2b6f4dc4,
- 0x2bb39d87,
- 0x114b44,
- 0x114b44,
- 0x114b44,
- 0x114b44,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x207102,
- 0x20f882,
- 0x323043,
- 0x205e82,
- 0x208e83,
- 0x201a03,
- 0x215443,
- 0x373ccf,
- 0x37408e,
- 0x16fb88,
- 0x238543,
- 0x4db87,
- 0x23cac3,
- 0x323043,
- 0x255783,
- 0x208e83,
- 0x201a03,
- 0x20d4c3,
- 0x20d4c7,
- 0x200142,
- 0x2ce609,
- 0x200242,
- 0x24788b,
- 0x2c110a,
- 0x2c67c9,
- 0x201242,
- 0x2100c6,
- 0x26cd95,
- 0x2479d5,
- 0x275793,
- 0x247f53,
- 0x201d42,
- 0x212c45,
- 0x31d44c,
- 0x27c6cb,
- 0x29c705,
- 0x20cac2,
- 0x28e142,
- 0x384c06,
- 0x200bc2,
- 0x3acc46,
- 0x2dd20d,
- 0x26540c,
- 0x22cc84,
- 0x200f82,
- 0x203402,
- 0x22b048,
- 0x201d02,
- 0x20a746,
- 0x28bf04,
- 0x26cf55,
- 0x275913,
- 0x216d03,
- 0x33844a,
- 0x205407,
- 0x3145c9,
- 0x38d4c7,
- 0x20d342,
- 0x200002,
- 0x3ba886,
- 0x212702,
- 0x16fb88,
- 0x216b42,
- 0x201102,
- 0x27f847,
- 0x217387,
- 0x222d85,
- 0x20c702,
- 0x225287,
- 0x225448,
- 0x2024c2,
- 0x2430c2,
- 0x237302,
- 0x201382,
- 0x242688,
- 0x20a043,
- 0x25fa08,
- 0x2e9b0d,
- 0x2322c3,
- 0x32ec08,
- 0x245f4f,
- 0x24630e,
- 0x339a4a,
- 0x22e811,
- 0x22ec90,
- 0x2c34cd,
- 0x2c380c,
- 0x36a707,
- 0x3385c7,
- 0x39c349,
- 0x20d302,
- 0x201442,
- 0x25db0c,
- 0x25de0b,
- 0x2008c2,
- 0x360cc6,
- 0x20e982,
- 0x204882,
- 0x222902,
- 0x20f882,
- 0x3b69c4,
- 0x244387,
- 0x229682,
- 0x24a347,
- 0x24b547,
- 0x20d282,
- 0x20c8c2,
- 0x24da45,
- 0x21a442,
- 0x2f290e,
- 0x2ab3cd,
- 0x23cac3,
- 0x28d58e,
- 0x2c5c0d,
- 0x25ac43,
- 0x201482,
- 0x2891c4,
+ 0x2007c1,
+ 0x200901,
+ 0x200041,
+ 0x204281,
+ 0x2001c1,
+ 0x2000c1,
+ 0x200341,
+ 0x200ac1,
+ 0x201501,
+ 0x2014c1,
+ 0x204101,
+ 0x200b81,
+ 0x200241,
+ 0x200a01,
+ 0x2002c1,
+ 0x200281,
+ 0x204701,
+ 0x20dec1,
+ 0x200781,
+ 0x200641,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
0x216582,
- 0x20fac2,
- 0x364145,
- 0x373587,
- 0x393202,
- 0x207602,
- 0x252f87,
- 0x255ac8,
- 0x2f6802,
- 0x294ec6,
- 0x25d98c,
- 0x25dccb,
- 0x206b02,
- 0x26764f,
- 0x267a10,
- 0x267e0f,
- 0x2681d5,
- 0x268714,
- 0x268c0e,
- 0x268f8e,
- 0x26930f,
- 0x2696ce,
- 0x269a54,
- 0x269f53,
- 0x26a40d,
- 0x27d949,
- 0x291ac3,
- 0x201802,
- 0x2b7505,
- 0x206346,
- 0x207b02,
- 0x3a4ec7,
- 0x323043,
- 0x217202,
- 0x37e548,
- 0x22ea51,
- 0x22ee90,
- 0x2007c2,
- 0x290e07,
- 0x204182,
- 0x332b07,
- 0x209a02,
- 0x342089,
- 0x384bc7,
- 0x27ac08,
- 0x2be006,
- 0x2ef683,
- 0x339205,
- 0x2022c2,
- 0x207a82,
- 0x3bac85,
- 0x391345,
- 0x204bc2,
- 0x231043,
- 0x2e4b47,
- 0x205747,
- 0x200502,
- 0x25f1c4,
- 0x211b83,
- 0x211b89,
- 0x215148,
- 0x200282,
- 0x202942,
- 0x242387,
- 0x263285,
- 0x2ad208,
- 0x215c87,
- 0x21a243,
- 0x294c86,
- 0x2c334d,
- 0x2c36cc,
- 0x2c8346,
- 0x209b02,
- 0x20c202,
- 0x204a82,
- 0x245dcf,
- 0x2461ce,
- 0x374e87,
- 0x20b302,
- 0x2c72c5,
- 0x2c72c6,
- 0x214702,
- 0x200802,
- 0x228246,
- 0x2b57c3,
- 0x332a46,
- 0x2d0285,
- 0x2d028d,
- 0x2d0855,
- 0x2d108c,
- 0x2d1e4d,
- 0x2d2212,
- 0x214642,
- 0x2745c2,
- 0x202ec2,
- 0x249386,
- 0x302486,
- 0x200982,
- 0x2063c6,
- 0x202c82,
- 0x39b505,
- 0x200542,
- 0x2ab4c9,
- 0x2e324c,
- 0x2e358b,
- 0x200442,
- 0x257708,
- 0x2052c2,
- 0x20cb42,
- 0x278ec6,
- 0x21f285,
- 0x36c107,
- 0x24bc85,
- 0x28ea05,
- 0x235d82,
- 0x219a42,
- 0x21cc82,
- 0x2f3587,
- 0x2613cd,
- 0x26174c,
- 0x317947,
- 0x2235c2,
- 0x225b82,
- 0x23f688,
- 0x343a08,
- 0x34c008,
- 0x313344,
- 0x361087,
- 0x2efc43,
- 0x299842,
- 0x206682,
- 0x2f2149,
- 0x3ab3c7,
- 0x204102,
- 0x2792c5,
- 0x22fa42,
- 0x236902,
- 0x35dc83,
- 0x35dc86,
- 0x2f9a02,
- 0x2fab42,
- 0x200c02,
- 0x281e06,
- 0x345607,
- 0x221282,
- 0x206b42,
- 0x25f84f,
- 0x28d3cd,
- 0x3029ce,
- 0x2c5a8c,
+ 0x22d183,
+ 0x2343c3,
+ 0x201502,
+ 0x2264c3,
+ 0x16e747,
+ 0x131ac7,
+ 0x1e1c6,
+ 0x1736ca,
+ 0x85c48,
+ 0x53188,
+ 0x53547,
+ 0x50d06,
+ 0xce6c5,
+ 0x51f05,
+ 0x161186,
+ 0x155646,
+ 0x224104,
+ 0x322707,
+ 0x880c8,
+ 0x22d684,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x21eb03,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x221e42,
+ 0x2be043,
+ 0x2f5003,
+ 0x20b283,
+ 0x202e02,
+ 0x248083,
+ 0x204803,
+ 0x206e83,
+ 0x200001,
+ 0x207043,
+ 0x26ff44,
+ 0x324dc3,
+ 0x30c683,
+ 0x21dec3,
+ 0x379b43,
+ 0xaa2d183,
+ 0x2374c4,
+ 0x21de83,
+ 0x232383,
+ 0x2343c3,
+ 0x234103,
+ 0x208143,
+ 0x2a3ec3,
+ 0x30c603,
+ 0x228103,
+ 0x212103,
+ 0x24c1c4,
+ 0x23aa82,
+ 0x252a43,
+ 0x2585c3,
+ 0x272bc3,
+ 0x250b43,
+ 0x24f8c3,
+ 0x21eb03,
+ 0x2db983,
+ 0x220883,
+ 0x201603,
+ 0x210483,
+ 0x2f2903,
+ 0xaefe5c3,
+ 0x385d43,
+ 0x200983,
+ 0x2348c3,
+ 0x211003,
+ 0x21e442,
+ 0x286fc3,
+ 0x238483,
+ 0x16025c3,
+ 0x217e83,
+ 0x21da43,
+ 0x29af43,
+ 0x2264c3,
+ 0x30e803,
+ 0x21bd03,
+ 0x2ad283,
+ 0x2f6a83,
+ 0x2e8883,
+ 0x21d445,
+ 0x215cc3,
+ 0x2e88c3,
+ 0x39c083,
+ 0x218744,
+ 0x25b343,
+ 0x22e8c3,
+ 0x277c03,
+ 0x20b443,
+ 0x221e42,
+ 0x23a183,
+ 0x2f9b84,
+ 0x2ae9c4,
+ 0x244843,
+ 0x880c8,
+ 0x882,
+ 0x1002,
+ 0x2e02,
+ 0x1482,
+ 0x2d42,
+ 0x4c2,
+ 0x44682,
+ 0x202,
+ 0x1f82,
+ 0x982,
+ 0x43742,
+ 0xe842,
+ 0xe02,
+ 0x7a82,
+ 0x93d42,
+ 0x6d42,
+ 0x26282,
+ 0x7442,
+ 0x1f882,
+ 0x8b02,
+ 0x4b42,
+ 0x1c882,
+ 0x13c2,
+ 0x17642,
+ 0x1402,
+ 0xdfc2,
+ 0x6ec2,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x216582,
+ 0x2264c3,
+ 0xc22d183,
+ 0x21eb03,
+ 0x211003,
+ 0x223b42,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x6c2,
+ 0x202f02,
+ 0x223f42,
+ 0x880c8,
+ 0x16582,
+ 0x235f82,
+ 0x203142,
+ 0x23e682,
+ 0x201642,
+ 0x208382,
+ 0x51f05,
+ 0x2029c2,
+ 0x202282,
+ 0x203382,
+ 0x205d02,
+ 0x206d42,
+ 0x385542,
+ 0x201882,
+ 0x227642,
+ 0x16e747,
+ 0x119d4d,
+ 0xeafc9,
+ 0x47b8b,
+ 0xd1e88,
+ 0x13bc89,
+ 0x21eb03,
+ 0x880c8,
+ 0x880c8,
+ 0x53e06,
+ 0x200882,
+ 0x224104,
+ 0x216582,
+ 0x22d183,
0x201a42,
- 0x204142,
- 0x2bde45,
- 0x317e46,
- 0x209002,
- 0x205842,
- 0x200482,
- 0x215c04,
- 0x2e9984,
- 0x2b8706,
- 0x204242,
- 0x37d6c7,
- 0x233803,
- 0x233808,
- 0x33cb48,
- 0x240687,
- 0x249286,
- 0x202502,
- 0x242603,
- 0x351107,
- 0x26ffc6,
- 0x2e2d05,
- 0x3136c8,
- 0x206182,
- 0x337547,
- 0x21f542,
- 0x332182,
- 0x207f02,
- 0x2e95c9,
- 0x23b442,
- 0x2018c2,
- 0x248383,
- 0x377787,
- 0x2002c2,
- 0x2e33cc,
- 0x2e36cb,
- 0x2c83c6,
- 0x218d85,
- 0x22a202,
- 0x204782,
- 0x2c1486,
- 0x237e83,
- 0x378407,
- 0x243cc2,
- 0x200d42,
- 0x26cc15,
- 0x247b95,
- 0x275653,
- 0x2480d3,
- 0x2955c7,
- 0x2c0ec8,
- 0x379d90,
- 0x3c020f,
- 0x2c0ed3,
- 0x2c6592,
- 0x2ce1d0,
- 0x2db58f,
- 0x2dc512,
- 0x2dffd1,
- 0x2e0cd3,
- 0x2e9392,
- 0x2ea0cf,
- 0x2f7c4e,
- 0x2f9a92,
- 0x2faed1,
- 0x303e4f,
- 0x347a4e,
- 0x3559d1,
- 0x2fee10,
- 0x32f912,
- 0x36fd51,
- 0x3af4c6,
- 0x30dd47,
- 0x382ac7,
- 0x203702,
- 0x286d05,
- 0x304887,
- 0x21a902,
- 0x218f42,
- 0x230d85,
- 0x226c43,
- 0x244c06,
- 0x26158d,
- 0x2618cc,
- 0x206442,
- 0x31d2cb,
- 0x27c58a,
- 0x212b0a,
- 0x2c04c9,
- 0x2f0c0b,
- 0x215dcd,
- 0x304f8c,
- 0x2f574a,
- 0x277bcc,
- 0x27d34b,
- 0x29c54c,
- 0x2b4c0b,
- 0x2e31c3,
- 0x36f946,
- 0x3061c2,
- 0x2fd502,
- 0x256d03,
- 0x203642,
- 0x203643,
- 0x260b86,
- 0x268387,
- 0x2c48c6,
- 0x2e2448,
- 0x343708,
- 0x2cc7c6,
- 0x20c402,
- 0x309b4d,
- 0x309e8c,
- 0x2dea07,
- 0x30db47,
- 0x2302c2,
- 0x221682,
- 0x260982,
- 0x255e82,
- 0x20f882,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x215443,
- 0x207102,
- 0x207542,
- 0x2da97d45,
- 0x2de97685,
- 0x2e320c86,
- 0x16fb88,
- 0x2e6b68c5,
- 0x20f882,
- 0x201742,
- 0x2ea34cc5,
- 0x2ee852c5,
- 0x2f285e07,
- 0x2f6f6e09,
- 0x2fa74084,
- 0x207b02,
- 0x217202,
- 0x2fe56a05,
- 0x302977c9,
- 0x30785908,
- 0x30ab3185,
- 0x30f3f5c7,
- 0x31227248,
- 0x316ec085,
- 0x31a00106,
- 0x31e41489,
- 0x323311c8,
- 0x326c8988,
- 0x32a9ef0a,
- 0x32e7e204,
- 0x332d99c5,
- 0x336c30c8,
- 0x33b85d85,
- 0x21a602,
- 0x33e11103,
- 0x342aa246,
- 0x3475d1c8,
- 0x34a8ab86,
- 0x34e8a688,
- 0x35348206,
- 0x356e2dc4,
+ 0x2343c3,
+ 0x201f82,
+ 0x22d684,
+ 0x202243,
+ 0x209782,
+ 0x238483,
+ 0x201502,
+ 0x2264c3,
+ 0x241f86,
+ 0x30d40f,
+ 0x6fef43,
+ 0x880c8,
+ 0x216582,
+ 0x211cc3,
+ 0x21eb03,
+ 0x211003,
+ 0x1568ecb,
+ 0x16e747,
+ 0x216582,
+ 0x22d183,
+ 0x21eb03,
+ 0x238483,
+ 0x200882,
+ 0x201102,
+ 0x2093c2,
+ 0xfa2d183,
+ 0x23e4c2,
+ 0x2343c3,
+ 0x2475c2,
+ 0x227982,
+ 0x21eb03,
+ 0x21c2c2,
+ 0x301dc2,
+ 0x2a7fc2,
+ 0x201142,
+ 0x289f82,
+ 0x206982,
+ 0x200902,
+ 0x205e82,
+ 0x26a242,
0x204d42,
- 0x35addc87,
- 0x35eaf444,
- 0x36280087,
- 0x367b0c87,
- 0x200442,
- 0x36aa3885,
- 0x36e8f904,
- 0x372f1447,
- 0x37632c47,
- 0x37a89006,
- 0x37e38385,
- 0x3829d7c7,
- 0x386d5dc8,
- 0x38ab7887,
- 0x38ea6c89,
- 0x3939e345,
- 0x397778c7,
- 0x39a974c6,
- 0x39e102c8,
- 0x3279cd,
- 0x27a209,
- 0x28384b,
- 0x289ecb,
- 0x2ae3cb,
- 0x2e62cb,
- 0x31804b,
- 0x31830b,
- 0x318949,
- 0x31984b,
- 0x319b0b,
- 0x31a08b,
- 0x31b08a,
- 0x31b5ca,
- 0x31bbcc,
- 0x31e00b,
- 0x31ea4a,
- 0x33064a,
- 0x33c6ce,
- 0x33d1ce,
- 0x33d54a,
- 0x33efca,
- 0x33fa8b,
- 0x33fd4b,
- 0x340b0b,
- 0x36124b,
- 0x36184a,
- 0x36250b,
- 0x3627ca,
- 0x362a4a,
- 0x362cca,
- 0x38424b,
- 0x38c6cb,
- 0x38e64e,
- 0x38e9cb,
- 0x39464b,
- 0x395b0b,
- 0x39900a,
- 0x399289,
- 0x3994ca,
- 0x39a94a,
- 0x3addcb,
- 0x3afa8b,
- 0x3b05ca,
- 0x3b1fcb,
- 0x3b674b,
- 0x3bf58b,
- 0x3a287a88,
- 0x3a68fd09,
- 0x3aaa6409,
- 0x3aee4d48,
- 0x34b945,
- 0x202d43,
- 0x21b744,
- 0x345805,
- 0x273dc6,
- 0x274805,
- 0x28f584,
- 0x3a4dc8,
- 0x312ec5,
- 0x299a84,
- 0x211587,
- 0x2a550a,
- 0x3813ca,
- 0x308f07,
- 0x202c47,
- 0x303647,
- 0x271907,
- 0x2ff9c5,
- 0x204906,
- 0x22b9c7,
- 0x2c8684,
- 0x2db006,
- 0x2daf06,
- 0x208185,
- 0x331c04,
- 0x388bc6,
- 0x2a4707,
- 0x232646,
- 0x2bfa07,
+ 0x2ad802,
+ 0x230cc2,
+ 0x225a02,
+ 0x228f02,
+ 0x211003,
+ 0x203042,
+ 0x238483,
+ 0x2425c2,
+ 0x267c02,
+ 0x2264c3,
+ 0x248102,
+ 0x217642,
+ 0x20a442,
+ 0x202482,
+ 0x2168c2,
+ 0x2d29c2,
+ 0x210442,
+ 0x242d42,
+ 0x221bc2,
+ 0x301e0a,
+ 0x34600a,
+ 0x38074a,
+ 0x3b4682,
+ 0x20d802,
+ 0x23c282,
+ 0xff49009,
+ 0x103a418a,
+ 0x1042fe87,
+ 0xc002,
+ 0x1a418a,
+ 0x245dc4,
+ 0x10e2d183,
+ 0x2343c3,
+ 0x247344,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x215cc3,
+ 0x223ec3,
+ 0x880c8,
+ 0x1450c84,
+ 0x50505,
+ 0x4e80a,
+ 0x109842,
+ 0x18b406,
+ 0x162d51,
+ 0x11749009,
+ 0x163187,
+ 0x4802,
+ 0x1aa80a,
+ 0xdb7c7,
+ 0x880c8,
+ 0xfd948,
+ 0xe707,
+ 0x1281c44b,
+ 0x15802,
+ 0x1a6707,
+ 0x1b1a4a,
+ 0x10728f,
+ 0x131b4f,
+ 0x1dec2,
+ 0x16582,
+ 0xa3e08,
+ 0xea70a,
+ 0x167408,
+ 0xf82,
+ 0x10700f,
+ 0x124e4b,
+ 0x2988,
+ 0x16e847,
+ 0x16a8a,
+ 0xae14b,
+ 0x112089,
+ 0x173507,
+ 0xf424c,
+ 0x10ec87,
+ 0xd060a,
+ 0x132d48,
+ 0x8e28e,
+ 0x553ce,
+ 0xdb60b,
+ 0x110d8b,
+ 0xead0b,
+ 0x1e1c9,
+ 0x1fb8b,
+ 0x2398d,
+ 0x260cb,
+ 0x2708d,
+ 0x2c90d,
+ 0x2ec8a,
+ 0xae80b,
+ 0xc6fcb,
+ 0xe82c5,
+ 0x10a710,
+ 0x8128f,
+ 0xb74f,
+ 0x2a24d,
+ 0x6fd50,
+ 0xd82,
+ 0x12fa2488,
+ 0x131948,
+ 0x132e4bc5,
+ 0x4668b,
+ 0x52088,
+ 0x110f4a,
+ 0x58d89,
+ 0x60587,
+ 0x608c7,
+ 0x60a87,
+ 0x611c7,
+ 0x629c7,
+ 0x62f47,
+ 0x636c7,
+ 0x63d47,
+ 0x64307,
+ 0x644c7,
+ 0x66087,
+ 0x66247,
+ 0x66407,
+ 0x665c7,
+ 0x668c7,
+ 0x66e07,
+ 0x67a47,
+ 0x67f07,
+ 0x68707,
+ 0x69207,
+ 0x693c7,
+ 0x699c7,
+ 0x69e87,
+ 0x6a087,
+ 0x6a347,
+ 0x6a507,
+ 0x6a6c7,
+ 0x6ac07,
+ 0x6b4c7,
+ 0x6bf87,
+ 0x6c687,
+ 0x6c947,
+ 0x6ce07,
+ 0x6cfc7,
+ 0x6d347,
+ 0x6e3c7,
+ 0x6ea07,
+ 0x6ee07,
+ 0x6efc7,
+ 0x6f187,
+ 0x6f5c7,
+ 0x70307,
+ 0x70607,
+ 0x70c07,
+ 0x70dc7,
+ 0x71147,
+ 0x71587,
+ 0xd382,
+ 0x33d8a,
+ 0xf9dc7,
+ 0x134c87cb,
+ 0x14c87d6,
+ 0x18351,
+ 0xdfb8a,
+ 0xa3c8a,
+ 0x53e06,
+ 0xc114b,
+ 0xb2c2,
+ 0x31ad1,
+ 0x959c9,
+ 0x90ac9,
+ 0x5e82,
+ 0x9c34a,
+ 0xa5449,
+ 0xa5c8f,
+ 0xa688e,
+ 0xa7188,
+ 0xf1c2,
+ 0x169a89,
+ 0x8498e,
+ 0xac64c,
+ 0xd400f,
+ 0x194a8e,
+ 0x1098c,
+ 0x15309,
+ 0x16451,
+ 0x19a48,
+ 0x2bd52,
+ 0x2e5cd,
+ 0x393cd,
+ 0x13ff8b,
+ 0x179d95,
+ 0x33c49,
+ 0x5488a,
+ 0x58749,
+ 0x5fe90,
+ 0x60f0b,
+ 0x6e54f,
+ 0x71d0b,
+ 0x756cc,
+ 0x787d0,
+ 0x8660a,
+ 0x86e8d,
+ 0x14ea0e,
+ 0x18004a,
+ 0x8c7cc,
+ 0x8fa54,
+ 0x95651,
+ 0x98f8b,
+ 0x9b54f,
+ 0xab6cd,
+ 0xabfce,
+ 0x12c10c,
+ 0x15710c,
+ 0xdc8cb,
+ 0xeef8e,
+ 0xfb250,
+ 0x10938b,
+ 0x11270d,
+ 0x15f28f,
+ 0xb504c,
+ 0xb824e,
+ 0xb8a51,
+ 0xba84c,
+ 0x1362c7,
+ 0x11c60d,
+ 0xbe94c,
+ 0xc4d90,
+ 0xd35cd,
+ 0xe7847,
+ 0xec4d0,
+ 0xf0688,
+ 0xf124b,
+ 0x17318f,
+ 0x2b848,
+ 0xdfd8d,
+ 0x1763d0,
+ 0x13aaf9c6,
+ 0xb0bc3,
+ 0x9682,
+ 0x2cd09,
+ 0x551ca,
+ 0xf9bc6,
+ 0x13cd5389,
+ 0x124c3,
+ 0x109f11,
+ 0x9f89,
+ 0xcd5c7,
+ 0x10710b,
+ 0xd2d10,
+ 0xd31cc,
+ 0xd47c5,
+ 0x11ab08,
+ 0x19be4a,
+ 0x122b07,
+ 0x25c2,
+ 0x5160a,
+ 0x1694c9,
+ 0xa62ca,
+ 0x1abe8f,
+ 0x4084b,
+ 0x10760c,
+ 0x1078d2,
+ 0xb5485,
+ 0x15d98a,
+ 0x142e1fc5,
+ 0x19900c,
+ 0x1157c3,
+ 0x185542,
+ 0xe8e4a,
+ 0x108548,
+ 0x163407,
+ 0x4b42,
+ 0x7982,
+ 0x1bc2,
+ 0x129e10,
+ 0x1402,
+ 0x3074f,
+ 0x161186,
+ 0x1113ce,
+ 0xe3a4b,
+ 0x180248,
+ 0xc9a89,
+ 0x17e4d2,
+ 0x178b8d,
+ 0x45e88,
+ 0x47a49,
+ 0x485cd,
+ 0x4a189,
+ 0x4a64b,
+ 0x4ac08,
+ 0x4e648,
+ 0x53f48,
+ 0x559c9,
+ 0x55bca,
+ 0x57f4c,
+ 0xe31ca,
+ 0xf6ac7,
+ 0xdfcd,
+ 0xeb88b,
+ 0x9eb0c,
+ 0x18b610,
+ 0x3282,
+ 0xc570d,
+ 0x6202,
+ 0x33c2,
+ 0xf6a0a,
+ 0xdfa8a,
+ 0xe5e4b,
+ 0xc718c,
+ 0xfd6ce,
+ 0x165d0d,
+ 0xf3dc8,
+ 0x6c2,
+ 0x11a0c0ce,
+ 0x11c2fe87,
+ 0x121aa0c9,
+ 0x11583,
+ 0x127117cc,
+ 0xc002,
+ 0x50111,
+ 0xc011,
+ 0xa1091,
+ 0x81ed1,
+ 0x11170f,
+ 0x11dfcc,
+ 0x121acd,
+ 0x123f0d,
+ 0x142615,
+ 0x14b18c,
+ 0x159590,
+ 0xfa8c,
+ 0x5274c,
+ 0x47109,
+ 0xc002,
+ 0x501ce,
+ 0xc0ce,
+ 0xa114e,
+ 0x81f8e,
+ 0x1117cc,
+ 0x11e089,
+ 0x14b249,
+ 0x14280d,
+ 0xfb49,
+ 0x52809,
+ 0x1267c3,
+ 0x940c3,
+ 0xc002,
+ 0x162d45,
+ 0x1aa804,
+ 0xdf704,
+ 0x127244,
+ 0x17f904,
+ 0x17c084,
+ 0x163184,
+ 0x144bdc3,
+ 0x140de83,
+ 0x19fd04,
+ 0x1573dc3,
+ 0xd82,
+ 0x165d03,
+ 0x200882,
+ 0x216582,
+ 0x201a42,
+ 0x206ac2,
+ 0x201f82,
+ 0x201502,
+ 0x201bc2,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201603,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x238483,
+ 0x2264c3,
+ 0x1d003,
+ 0x21eb03,
+ 0x200882,
+ 0x323ac3,
+ 0x15e2d183,
+ 0x330d47,
+ 0x21eb03,
+ 0x332683,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x24690a,
+ 0x241f85,
+ 0x21bd03,
+ 0x203e42,
+ 0x880c8,
+ 0x880c8,
+ 0x16582,
+ 0x113682,
+ 0x1a6845,
+ 0x880c8,
+ 0x2d183,
+ 0x77947,
+ 0x1161cf,
+ 0xf9c44,
+ 0x11220a,
+ 0xac287,
+ 0xf78a,
+ 0x93e8a,
+ 0xa660a,
+ 0xf9bc6,
+ 0x27ca,
+ 0xccd,
+ 0x123ac3,
+ 0x880c8,
+ 0x16582,
+ 0x47344,
+ 0x67683,
+ 0xe9cc5,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x204803,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x290c83,
+ 0x223ec3,
+ 0x204803,
+ 0x224104,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
0x232dc3,
- 0x26c7c6,
- 0x23cf85,
- 0x285f07,
- 0x27100a,
- 0x284e04,
- 0x220808,
- 0x2a2009,
- 0x2d0e47,
- 0x31e8c6,
- 0x257988,
- 0x28b2c9,
- 0x314784,
- 0x376004,
- 0x35d785,
- 0x22b6c8,
- 0x2ccc07,
- 0x29a3c9,
- 0x3af5c8,
- 0x353706,
- 0x24d486,
- 0x29fd88,
- 0x365bc6,
- 0x297685,
- 0x2890c6,
- 0x280ec8,
- 0x256286,
- 0x25cb8b,
- 0x2ac646,
- 0x2a224d,
- 0x208605,
- 0x2af306,
- 0x218a05,
- 0x35d949,
- 0x27a787,
- 0x36d148,
- 0x2969c6,
- 0x2a1509,
- 0x341046,
- 0x270f85,
- 0x2a7f06,
- 0x2d3586,
- 0x2d3b09,
- 0x333f06,
- 0x3529c7,
- 0x248c85,
- 0x201d83,
- 0x25cd05,
- 0x2a2507,
- 0x338d06,
- 0x208509,
- 0x320c86,
- 0x289306,
- 0x219fc9,
- 0x288ac9,
- 0x2a8747,
- 0x20cd08,
- 0x280509,
- 0x286988,
- 0x38b5c6,
- 0x2de245,
- 0x23fa4a,
- 0x289386,
- 0x2bf1c6,
- 0x2d7605,
- 0x272408,
- 0x2220c7,
- 0x239fca,
- 0x253b46,
- 0x27a645,
- 0x20a506,
- 0x236b47,
- 0x31e787,
- 0x24fc45,
- 0x271145,
- 0x2e79c6,
- 0x2fbfc6,
- 0x2be306,
- 0x2bb884,
- 0x287e09,
- 0x290bc6,
- 0x2d430a,
- 0x222b88,
- 0x3059c8,
- 0x3813ca,
- 0x205b45,
- 0x2a4645,
- 0x3575c8,
- 0x2b0fc8,
- 0x2b43c7,
- 0x295946,
- 0x329608,
- 0x30a447,
- 0x287088,
- 0x2bbec6,
- 0x289b88,
- 0x29cd06,
- 0x257e47,
- 0x2a27c6,
- 0x388bc6,
- 0x383d4a,
- 0x345506,
- 0x2de249,
- 0x36b086,
- 0x2b6c0a,
- 0x2e2dc9,
- 0x2fe406,
- 0x2bccc4,
- 0x2b75cd,
- 0x28ff87,
- 0x32df46,
- 0x2c8845,
- 0x3410c5,
- 0x204dc6,
- 0x2d4fc9,
- 0x3879c7,
- 0x2826c6,
- 0x2bd406,
- 0x28f609,
- 0x33f784,
- 0x3a1184,
- 0x39c0c8,
- 0x260f46,
- 0x279388,
- 0x30fec8,
- 0x378187,
- 0x3beb49,
- 0x2be507,
- 0x2b678a,
- 0x2fc88f,
- 0x25100a,
- 0x2bdc45,
- 0x281105,
- 0x220085,
- 0x28be47,
- 0x236703,
- 0x20cf08,
- 0x201e46,
- 0x201f49,
- 0x2e4806,
- 0x3a3607,
- 0x2a12c9,
- 0x36d048,
- 0x2d76c7,
- 0x315603,
- 0x34b9c5,
- 0x236685,
- 0x2bb6cb,
- 0x385e44,
- 0x30ad44,
- 0x27f006,
- 0x315e87,
- 0x392a4a,
- 0x251a87,
- 0x36a947,
- 0x2852c5,
- 0x2016c5,
- 0x253689,
- 0x388bc6,
- 0x25190d,
- 0x334145,
- 0x2a10c3,
- 0x200dc3,
- 0x39cf05,
- 0x3534c5,
- 0x257988,
- 0x283007,
- 0x3a0f06,
- 0x2a6086,
- 0x232545,
- 0x23cd87,
- 0x377c87,
- 0x23ea07,
- 0x2d9a4a,
- 0x26c888,
- 0x2bb884,
- 0x256007,
- 0x284707,
- 0x352846,
- 0x26f5c7,
- 0x2ece48,
- 0x2e8548,
- 0x276346,
- 0x374f88,
- 0x2d1704,
- 0x22b9c6,
- 0x239b86,
- 0x333b86,
- 0x2d0006,
- 0x233ac4,
- 0x2719c6,
- 0x2c7146,
- 0x29f406,
- 0x2381c6,
- 0x213ec6,
- 0x223f06,
- 0x3a0e08,
- 0x3bcc88,
- 0x2da288,
- 0x274a08,
- 0x357546,
- 0x217e05,
- 0x2dd4c6,
- 0x2b3205,
- 0x397f07,
- 0x27df05,
- 0x21ae83,
- 0x2058c5,
- 0x34cc44,
- 0x214005,
- 0x22dc83,
- 0x33d807,
- 0x374a48,
- 0x2bfac6,
- 0x2b0c4d,
- 0x2810c6,
- 0x29e985,
- 0x227603,
- 0x2c2a89,
- 0x33f906,
- 0x29dd86,
- 0x2a8004,
- 0x250f87,
- 0x334546,
- 0x387c85,
- 0x20b2c3,
- 0x209484,
- 0x2848c6,
- 0x204a04,
- 0x239c88,
- 0x2005c9,
- 0x325f49,
- 0x2a7e0a,
- 0x2a918d,
- 0x20abc7,
- 0x2bf046,
- 0x205ec4,
- 0x2f6e09,
- 0x28e688,
- 0x28fb86,
- 0x245246,
- 0x26f5c7,
- 0x2b9786,
- 0x22c986,
- 0x36aac6,
- 0x3b0d0a,
- 0x227248,
- 0x364dc5,
- 0x26fa09,
- 0x28758a,
- 0x2f1e88,
- 0x2a40c8,
- 0x29dd08,
- 0x2ad74c,
- 0x318585,
- 0x2a6308,
- 0x2e7546,
- 0x36d2c6,
- 0x3a34c7,
- 0x251985,
- 0x289245,
- 0x325e09,
- 0x219847,
- 0x201f05,
- 0x22d887,
- 0x200dc3,
- 0x2cd145,
- 0x214308,
- 0x25d087,
- 0x2a3f89,
- 0x2dac05,
- 0x395a04,
- 0x2a8e48,
- 0x2dddc7,
- 0x2d7888,
- 0x2508c8,
- 0x2d6645,
- 0x281906,
- 0x2a6186,
- 0x277449,
- 0x2b26c7,
- 0x2b3ac6,
- 0x2236c7,
- 0x20e743,
- 0x274084,
- 0x2d1805,
- 0x23cec4,
- 0x393244,
- 0x288547,
- 0x25b347,
- 0x234284,
- 0x2a3dd0,
- 0x234e47,
- 0x2016c5,
- 0x37178c,
- 0x250684,
- 0x2a9e48,
- 0x257d49,
- 0x36e646,
- 0x34dd48,
- 0x223384,
- 0x37d0c8,
- 0x23a5c6,
- 0x238048,
- 0x2a4cc6,
- 0x2cc8cb,
- 0x201d85,
- 0x2d1688,
- 0x200a04,
- 0x200a0a,
- 0x2a3f89,
- 0x357f06,
- 0x220148,
- 0x263805,
- 0x2b9044,
- 0x2a9d46,
- 0x23e8c8,
- 0x287a88,
- 0x329e86,
- 0x358b04,
- 0x23f9c6,
- 0x2be587,
- 0x27ff87,
- 0x26f5cf,
- 0x204187,
- 0x2fe4c7,
- 0x23d2c5,
- 0x35fcc5,
- 0x2a8409,
- 0x2ed806,
- 0x286045,
- 0x288dc7,
- 0x2c6188,
- 0x29f505,
- 0x2a27c6,
- 0x2229c8,
- 0x28ab8a,
- 0x39c888,
- 0x292f47,
- 0x2fccc6,
- 0x26f9c6,
- 0x20ca43,
- 0x2052c3,
- 0x287749,
- 0x280389,
- 0x2a6b86,
- 0x2dac05,
- 0x304588,
- 0x220148,
- 0x365d48,
- 0x36ab4b,
- 0x2b0e87,
- 0x315849,
- 0x26f848,
- 0x356284,
- 0x3886c8,
- 0x295089,
- 0x2b3dc5,
- 0x28bd47,
- 0x274105,
- 0x287988,
- 0x297bcb,
- 0x29d510,
- 0x2aec45,
- 0x21e20c,
- 0x3a10c5,
- 0x285343,
- 0x296706,
- 0x2c5a04,
- 0x28fa06,
- 0x2a4707,
- 0x222a44,
- 0x24c3c8,
- 0x20cdcd,
- 0x330a05,
- 0x20ac04,
- 0x241b84,
- 0x27bd89,
- 0x292bc8,
- 0x320b07,
- 0x23a648,
- 0x287ec8,
- 0x2829c5,
- 0x28c647,
- 0x282947,
- 0x342807,
- 0x271149,
- 0x223c49,
- 0x36c986,
- 0x2c3a06,
- 0x26f806,
- 0x33e9c5,
- 0x3b4944,
+ 0x22d183,
+ 0x2343c3,
+ 0x206ac3,
+ 0x211cc3,
+ 0x21eb03,
+ 0x201604,
+ 0x36b683,
+ 0x2348c3,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0x3b0343,
+ 0x1822d183,
+ 0x2343c3,
+ 0x244d43,
+ 0x21eb03,
+ 0x275803,
+ 0x2348c3,
+ 0x2264c3,
+ 0x207443,
+ 0x27f5c4,
+ 0x880c8,
+ 0x18a2d183,
+ 0x2343c3,
+ 0x2a7243,
+ 0x21eb03,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x220703,
+ 0x880c8,
+ 0x1922d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x2025c3,
+ 0x2264c3,
+ 0x880c8,
+ 0x142fe87,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x16e747,
+ 0x176c84,
+ 0x1462d48,
+ 0xa7dcd,
+ 0x3256c5,
+ 0x880c8,
+ 0x742,
+ 0x35bc3,
+ 0xe6786,
+ 0x307e48,
+ 0x3afd07,
+ 0x224104,
+ 0x355346,
+ 0x359446,
+ 0x880c8,
+ 0x301043,
+ 0x20b149,
+ 0x2b46d5,
+ 0xb46df,
+ 0x22d183,
+ 0x32f8d2,
+ 0xfea86,
+ 0x13af45,
+ 0x110f4a,
+ 0x58d89,
+ 0x32f68f,
+ 0x22d684,
+ 0x331145,
+ 0x2f26d0,
+ 0x3aaf87,
+ 0x2025c3,
+ 0x32d208,
+ 0x2aeeca,
+ 0x2014c4,
+ 0x2e1a03,
+ 0x241f86,
+ 0x203e42,
+ 0x38660b,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x2e6a83,
+ 0x216582,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x332683,
+ 0x203043,
+ 0x2264c3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x238483,
+ 0x2264c3,
+ 0x200882,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x224104,
+ 0x22d183,
+ 0x2343c3,
+ 0x307b04,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x220883,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x251283,
+ 0x2efc3,
+ 0x132683,
+ 0x238483,
+ 0x2264c3,
+ 0x301e0a,
+ 0x31ec09,
+ 0x33e6cb,
+ 0x33ed4a,
+ 0x34600a,
+ 0x3543cb,
+ 0x372d8a,
+ 0x37acca,
+ 0x38074a,
+ 0x3809cb,
+ 0x39bb89,
+ 0x39d94a,
+ 0x39e38b,
+ 0x3a9bcb,
+ 0x3b2c8a,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x37549,
+ 0x880c8,
+ 0x22d183,
+ 0x260584,
+ 0x214a02,
+ 0x212444,
+ 0x226bc5,
+ 0x204803,
+ 0x224104,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x247344,
+ 0x22d684,
+ 0x201604,
+ 0x2348c3,
+ 0x238483,
+ 0x2264c3,
+ 0x28fb85,
+ 0x232dc3,
+ 0x21bd03,
+ 0x25b743,
+ 0x252dc4,
+ 0x250bc4,
+ 0x26dfc5,
+ 0x880c8,
+ 0x2f88c4,
+ 0x208606,
+ 0x283c04,
+ 0x216582,
+ 0x360307,
+ 0x249c07,
+ 0x2455c4,
+ 0x257a05,
+ 0x2d37c5,
+ 0x2a9c05,
+ 0x201604,
+ 0x318348,
+ 0x36ed86,
+ 0x2dbb08,
+ 0x236f45,
+ 0x2cf145,
+ 0x240584,
+ 0x2264c3,
+ 0x2e26c4,
+ 0x353586,
+ 0x242083,
+ 0x252dc4,
+ 0x262c45,
+ 0x2cfbc4,
+ 0x365b84,
+ 0x203e42,
+ 0x245206,
+ 0x392446,
+ 0x2f56c5,
+ 0x200882,
+ 0x323ac3,
+ 0x1f216582,
+ 0x2358c4,
+ 0x201f82,
+ 0x211003,
+ 0x209f82,
+ 0x238483,
+ 0x201502,
+ 0x217643,
+ 0x223ec3,
+ 0x880c8,
+ 0x880c8,
+ 0x21eb03,
+ 0x200882,
+ 0x1fe16582,
+ 0x21eb03,
+ 0x266383,
+ 0x36b683,
+ 0x31f984,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x200882,
+ 0x20616582,
+ 0x22d183,
+ 0x238483,
+ 0x2264c3,
+ 0x4b42,
+ 0x2019c2,
+ 0x221e42,
+ 0x332683,
+ 0x2db083,
+ 0x200882,
+ 0x880c8,
+ 0x16e747,
+ 0x216582,
+ 0x2343c3,
+ 0x247344,
+ 0x208f43,
+ 0x21eb03,
+ 0x220883,
+ 0x211003,
+ 0x238483,
+ 0x21ab43,
+ 0x2264c3,
+ 0x220683,
+ 0x1244d3,
+ 0x12f214,
+ 0x16e747,
+ 0x15686,
+ 0x1e1c6,
+ 0x52fc7,
+ 0x9f049,
+ 0x2654a,
+ 0x85b0d,
+ 0x119a4c,
+ 0x29e8a,
+ 0x51f05,
+ 0x18bec8,
+ 0x161186,
+ 0x155646,
+ 0x200d82,
+ 0xde40c,
+ 0x1aa9c7,
+ 0x24d11,
+ 0x22d183,
+ 0xd0585,
+ 0x1b4284,
+ 0x18346,
+ 0x19f046,
+ 0x8a24a,
+ 0xacec3,
+ 0x9f005,
+ 0xce83,
+ 0xc120c,
+ 0xe5408,
+ 0x1ad408,
+ 0xa0288,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x200882,
+ 0x216582,
+ 0x21eb03,
+ 0x2082c2,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x35e48f,
+ 0x35e84e,
+ 0x880c8,
+ 0x22d183,
+ 0x429c7,
+ 0x2343c3,
+ 0x21eb03,
+ 0x202243,
+ 0x238483,
+ 0x2264c3,
+ 0x220003,
+ 0x36b047,
+ 0x204642,
+ 0x2a9849,
+ 0x201002,
+ 0x32a10b,
+ 0x28c14a,
+ 0x2a4209,
+ 0x201902,
+ 0x250e06,
+ 0x248f95,
+ 0x32a255,
+ 0x24de93,
+ 0x32a7d3,
+ 0x2056c2,
+ 0x214605,
+ 0x27ff4c,
+ 0x219e0b,
+ 0x269005,
+ 0x201482,
+ 0x2040c2,
+ 0x377506,
+ 0x204802,
+ 0x24eb06,
+ 0x332ecd,
+ 0x36288c,
+ 0x30a784,
+ 0x2009c2,
+ 0x219f02,
+ 0x22c108,
+ 0x202d42,
+ 0x29d5c6,
+ 0x3345c4,
+ 0x249155,
+ 0x24e013,
+ 0x20a583,
+ 0x34868a,
+ 0x30e547,
+ 0x2e6089,
+ 0x20f507,
+ 0x24f882,
+ 0x200002,
0x200006,
- 0x200386,
- 0x282a08,
- 0x23680b,
- 0x284cc7,
- 0x205ec4,
- 0x334486,
- 0x2ed187,
- 0x388f45,
- 0x210bc5,
- 0x21b484,
- 0x223bc6,
- 0x200088,
- 0x2f6e09,
- 0x259706,
- 0x28df88,
- 0x387d46,
- 0x355088,
- 0x2d6c8c,
- 0x282886,
- 0x29e64d,
- 0x29eacb,
- 0x352a85,
- 0x377dc7,
- 0x334006,
- 0x31e648,
- 0x36ca09,
- 0x276608,
- 0x2016c5,
- 0x2076c7,
- 0x286a88,
- 0x332489,
- 0x2a0986,
- 0x25960a,
- 0x31e3c8,
- 0x27644b,
- 0x2d964c,
- 0x37d1c8,
- 0x283e46,
- 0x28c048,
- 0x28a807,
- 0x2e4909,
- 0x2976cd,
- 0x2a26c6,
- 0x365308,
- 0x3bcb49,
- 0x2c4a48,
- 0x289c88,
- 0x2c798c,
- 0x2c8e87,
- 0x2c96c7,
- 0x270f85,
- 0x31a807,
- 0x2c6048,
- 0x2a9dc6,
- 0x26020c,
- 0x2f60c8,
- 0x2d5708,
- 0x262246,
- 0x236407,
- 0x36cb84,
- 0x274a08,
- 0x28d88c,
- 0x22834c,
- 0x2bdcc5,
- 0x2b85c7,
- 0x358a86,
- 0x236386,
- 0x35db08,
- 0x202b84,
- 0x23264b,
- 0x37d80b,
- 0x2fccc6,
- 0x20cc47,
- 0x339305,
- 0x278585,
- 0x232786,
- 0x2637c5,
- 0x385e05,
- 0x2e40c7,
- 0x27f609,
- 0x2fc184,
- 0x2feac5,
- 0x2ead45,
- 0x2b5448,
- 0x235685,
- 0x2c0b89,
- 0x2b16c7,
- 0x2b16cb,
- 0x261ac6,
- 0x3a0b49,
- 0x331b48,
- 0x272885,
- 0x342908,
- 0x223c88,
- 0x249b07,
- 0x383b47,
- 0x2885c9,
- 0x237f87,
- 0x27de09,
- 0x29b88c,
- 0x2a6b88,
- 0x331009,
- 0x360987,
- 0x287f89,
- 0x25b487,
- 0x2d9748,
- 0x3bed05,
- 0x22b946,
- 0x2c8888,
- 0x30cf08,
- 0x287449,
- 0x385e47,
- 0x278645,
- 0x21f949,
- 0x345306,
- 0x2440c4,
- 0x2440c6,
- 0x35d048,
- 0x254547,
- 0x236a08,
- 0x375049,
- 0x3b1a07,
- 0x2a56c6,
- 0x377e84,
- 0x205949,
- 0x28c4c8,
- 0x262107,
- 0x2b56c6,
- 0x236746,
- 0x2bf144,
- 0x241986,
- 0x202003,
- 0x34f109,
- 0x201d46,
- 0x3752c5,
- 0x2a6086,
- 0x2d79c5,
- 0x286f08,
- 0x37cf07,
- 0x261e06,
- 0x234d06,
- 0x3059c8,
- 0x2a8587,
- 0x2a2705,
- 0x2a3bc8,
- 0x3bb748,
- 0x31e3c8,
- 0x3a0f85,
- 0x22b9c6,
- 0x325d09,
- 0x2772c4,
- 0x351d8b,
- 0x22c68b,
- 0x364cc9,
- 0x200dc3,
- 0x25efc5,
- 0x21d306,
- 0x3ba188,
- 0x2fc804,
- 0x2bfac6,
- 0x2d9b89,
- 0x2bc9c5,
- 0x2e4006,
- 0x2dddc6,
- 0x220144,
- 0x2af4ca,
- 0x375208,
- 0x30cf06,
- 0x2cf245,
- 0x3b8247,
- 0x23d187,
- 0x281904,
- 0x22c8c7,
- 0x2b6784,
- 0x333b06,
- 0x20cf43,
- 0x271145,
- 0x334f05,
- 0x3beec8,
- 0x2561c5,
- 0x2825c9,
- 0x274847,
- 0x27484b,
- 0x2aa04c,
- 0x2aa64a,
- 0x33f5c7,
- 0x202e83,
- 0x202e88,
- 0x3a1145,
- 0x29f585,
- 0x2140c4,
- 0x2d9646,
- 0x257d46,
- 0x2419c7,
- 0x34d58b,
- 0x233ac4,
- 0x2e7644,
- 0x2cbd04,
- 0x2d3706,
- 0x222a44,
- 0x22b7c8,
- 0x34b885,
- 0x24fac5,
- 0x365c87,
- 0x377ec9,
- 0x3534c5,
- 0x38dcca,
- 0x248b89,
- 0x2911ca,
- 0x3b0e49,
- 0x310444,
- 0x2bd4c5,
- 0x2b9888,
- 0x2f150b,
- 0x35d785,
- 0x33be86,
- 0x236304,
- 0x282b06,
- 0x3b1889,
- 0x2ed287,
- 0x320e48,
- 0x2a9506,
- 0x2be507,
- 0x287a88,
- 0x3870c6,
- 0x39b804,
- 0x3743c7,
- 0x376945,
- 0x389b87,
- 0x200104,
- 0x333f86,
- 0x2d5f48,
- 0x29ec88,
- 0x2e7007,
- 0x27f988,
- 0x29cdc5,
- 0x213e44,
- 0x3812c8,
- 0x27fa84,
- 0x220005,
- 0x2ffbc4,
- 0x30a547,
- 0x290c87,
- 0x2880c8,
- 0x2d7a06,
- 0x256145,
- 0x2823c8,
- 0x39ca88,
- 0x2a7d49,
- 0x22c986,
- 0x23a048,
- 0x20088a,
- 0x388fc8,
- 0x2ec085,
- 0x349286,
- 0x248a48,
- 0x20778a,
- 0x226047,
- 0x28ee45,
- 0x29ad48,
- 0x2c2404,
- 0x272486,
- 0x2c9a48,
- 0x213ec6,
- 0x20b308,
- 0x296e87,
- 0x211486,
- 0x2bccc4,
- 0x364707,
- 0x2b8e84,
- 0x3b1847,
- 0x2a064d,
- 0x288805,
- 0x2d4dcb,
- 0x2285c6,
- 0x257808,
- 0x24c384,
- 0x357746,
- 0x2848c6,
- 0x28c387,
- 0x29e30d,
- 0x24e587,
- 0x2b93c8,
- 0x278705,
- 0x276e08,
- 0x2ccb86,
- 0x29ce48,
- 0x22ab46,
- 0x25a707,
- 0x39ae89,
- 0x36ebc7,
- 0x28fe48,
- 0x27af45,
- 0x222e08,
- 0x219405,
- 0x3ab545,
- 0x3b10c5,
- 0x23ef43,
- 0x289144,
- 0x26fa05,
- 0x241489,
- 0x3043c6,
- 0x2ecf48,
- 0x383905,
- 0x2bb507,
- 0x2ad54a,
- 0x2e3f49,
- 0x2d348a,
- 0x2da308,
- 0x22d6cc,
- 0x288e4d,
- 0x301bc3,
- 0x20b208,
- 0x209445,
- 0x28a946,
- 0x36cec6,
- 0x2ebb05,
- 0x2237c9,
- 0x20e1c5,
- 0x2823c8,
- 0x25fe06,
- 0x35e006,
- 0x2a8d09,
- 0x39ed87,
- 0x297e86,
- 0x2ad4c8,
- 0x333a88,
- 0x2e4f47,
- 0x2381ce,
- 0x2ccdc5,
- 0x332385,
- 0x213dc8,
- 0x20a247,
- 0x200842,
- 0x2c7504,
- 0x28f90a,
- 0x2621c8,
- 0x389206,
- 0x2a1408,
- 0x2a6186,
- 0x3337c8,
- 0x2b3ac8,
- 0x3ab504,
- 0x2bba45,
- 0x681384,
- 0x681384,
- 0x681384,
- 0x201e03,
- 0x2365c6,
- 0x282886,
- 0x2a508c,
- 0x200943,
- 0x223286,
- 0x20cf04,
- 0x33f888,
- 0x2d99c5,
- 0x28fa06,
- 0x2c31c8,
- 0x2db2c6,
- 0x261d86,
- 0x357d08,
- 0x2d1887,
- 0x237d49,
- 0x2fa8ca,
- 0x20a944,
- 0x27df05,
- 0x29a385,
- 0x2f6c06,
- 0x20ac06,
- 0x2a5ac6,
- 0x2ff206,
- 0x237e84,
- 0x237e8b,
- 0x23c584,
- 0x2a5245,
- 0x2b2ac5,
- 0x378246,
- 0x2090c8,
- 0x288d07,
- 0x320c04,
- 0x232fc3,
- 0x2c1f05,
- 0x311847,
- 0x288c0b,
- 0x3bedc7,
- 0x2c30c8,
- 0x2e7287,
- 0x23d406,
- 0x27a4c8,
- 0x2b004b,
- 0x345746,
- 0x21d449,
- 0x2b01c5,
- 0x315603,
- 0x2e4006,
- 0x296d88,
- 0x21f083,
- 0x271e03,
- 0x287a86,
- 0x2a6186,
- 0x36958a,
- 0x283e85,
- 0x28470b,
- 0x2a5fcb,
- 0x210a83,
- 0x20b943,
- 0x2b6704,
- 0x2af6c7,
- 0x296e04,
- 0x277344,
- 0x2e73c4,
- 0x223e88,
- 0x2cf188,
- 0x205249,
- 0x39e3c8,
- 0x28b487,
- 0x2381c6,
- 0x2ecb8f,
- 0x2ccf06,
- 0x2d9944,
- 0x2cefca,
- 0x311747,
- 0x208206,
- 0x297509,
- 0x2051c5,
- 0x3bf005,
- 0x205306,
- 0x222f43,
- 0x2c2449,
- 0x2273c6,
- 0x202d09,
- 0x392a46,
- 0x271145,
- 0x2be0c5,
- 0x204183,
- 0x2af808,
- 0x213887,
- 0x201e44,
- 0x33f708,
- 0x2ffe04,
- 0x2f0486,
- 0x296706,
- 0x248fc6,
- 0x2d1549,
- 0x29f505,
- 0x388bc6,
- 0x2666c9,
- 0x2cb906,
- 0x223f06,
- 0x397346,
- 0x21ce85,
- 0x2ffbc6,
- 0x25a704,
- 0x3bed05,
- 0x2c8884,
- 0x2b9f86,
- 0x334104,
- 0x2136c3,
- 0x28e745,
- 0x23dac8,
- 0x262987,
- 0x2c1ac9,
- 0x28ed48,
- 0x29fb51,
- 0x2dde4a,
- 0x2fcc07,
- 0x25a986,
- 0x20cf04,
- 0x2c8988,
- 0x233fc8,
- 0x29fd0a,
- 0x2c094d,
- 0x2a7f06,
- 0x357e06,
- 0x3647c6,
- 0x24fac7,
- 0x2b9485,
- 0x210187,
- 0x20cdc5,
- 0x2b1804,
- 0x2ae086,
- 0x241807,
- 0x2c214d,
- 0x248987,
- 0x3a4cc8,
- 0x2826c9,
- 0x349186,
- 0x2a0905,
- 0x22dcc4,
- 0x35d146,
- 0x281806,
- 0x262346,
- 0x2a1c88,
- 0x21cd43,
- 0x20aa83,
- 0x338e45,
- 0x207b06,
- 0x2b3a85,
- 0x2a9708,
- 0x2a48ca,
- 0x3a2dc4,
- 0x33f888,
- 0x29dd08,
- 0x378087,
- 0x3839c9,
- 0x2c2dc8,
- 0x2a6d07,
- 0x2957c6,
- 0x213eca,
- 0x35d1c8,
- 0x2f8589,
- 0x292c88,
- 0x229b89,
- 0x2e8747,
- 0x33bdc5,
- 0x36ad46,
- 0x2a9c48,
- 0x287c08,
- 0x29de88,
- 0x2fcdc8,
- 0x2a5245,
- 0x218944,
- 0x213588,
- 0x24b384,
- 0x3b0c44,
- 0x271145,
- 0x299ac7,
- 0x377c89,
- 0x28c187,
- 0x2008c5,
- 0x27f206,
- 0x363686,
- 0x200b84,
- 0x2a9046,
- 0x255f84,
- 0x276d06,
- 0x377a46,
- 0x21eec6,
- 0x2016c5,
- 0x2a95c7,
- 0x202e83,
- 0x21dd89,
- 0x3057c8,
- 0x2f6d04,
- 0x2f6d0d,
- 0x29ed88,
- 0x2d7248,
- 0x2f8506,
- 0x39af89,
- 0x2e3f49,
- 0x3b1585,
- 0x2a49ca,
- 0x2edbca,
- 0x2a5ccc,
- 0x2a5e46,
- 0x27fe06,
- 0x2cd086,
- 0x2c84c9,
- 0x28ab86,
- 0x2101c6,
- 0x20e286,
- 0x274a08,
- 0x27f986,
- 0x2d92cb,
- 0x299c45,
- 0x24fac5,
- 0x280085,
- 0x39be46,
- 0x213e83,
- 0x248f46,
- 0x248907,
- 0x2c8845,
- 0x24d545,
- 0x3410c5,
- 0x313846,
- 0x204dc4,
- 0x385806,
- 0x284049,
- 0x39bccc,
- 0x2b1548,
- 0x23e844,
- 0x2ff8c6,
- 0x2286c6,
- 0x296d88,
- 0x220148,
- 0x39bbc9,
- 0x3b8247,
- 0x260c89,
- 0x255806,
- 0x237404,
- 0x214944,
- 0x20a584,
- 0x287a88,
- 0x377aca,
- 0x353446,
- 0x35fb87,
- 0x37e787,
- 0x3a0c45,
- 0x29a344,
- 0x295046,
- 0x2b94c6,
- 0x202bc3,
- 0x305607,
- 0x2507c8,
- 0x3b16ca,
- 0x2d4708,
- 0x28a688,
- 0x334145,
- 0x352b85,
- 0x284dc5,
- 0x3a1006,
- 0x2393c6,
- 0x25b285,
- 0x34f349,
- 0x29a14c,
- 0x284e87,
- 0x29fd88,
- 0x24ee05,
- 0x681384,
- 0x240ac4,
- 0x25d1c4,
- 0x217946,
- 0x2a728e,
- 0x3bf087,
- 0x24fcc5,
- 0x27724c,
- 0x2ffcc7,
- 0x241787,
- 0x274e89,
- 0x2208c9,
- 0x28ee45,
- 0x3057c8,
- 0x325d09,
- 0x31e285,
- 0x2c8788,
- 0x227546,
- 0x381546,
- 0x2e2dc4,
- 0x25ff08,
- 0x248743,
- 0x235e44,
- 0x2c1f85,
- 0x204dc7,
- 0x21b4c5,
- 0x200749,
- 0x27e64d,
- 0x2935c6,
- 0x229b04,
- 0x2958c8,
- 0x27f44a,
- 0x21da87,
- 0x243905,
- 0x235e83,
- 0x2a618e,
- 0x2af90c,
- 0x2f1f87,
- 0x2a7447,
- 0x200143,
- 0x28abc5,
- 0x25d1c5,
- 0x2a17c8,
- 0x29db49,
- 0x23e746,
- 0x296e04,
- 0x2fcb46,
- 0x3650cb,
- 0x2e3ccc,
- 0x376447,
- 0x2d9585,
- 0x3bb648,
- 0x2e4d05,
- 0x2cefc7,
- 0x2ddc87,
- 0x248745,
- 0x213e83,
- 0x3b36c4,
- 0x21b705,
- 0x2fc085,
- 0x2fc086,
- 0x2821c8,
- 0x241807,
- 0x36d1c6,
- 0x25b686,
- 0x3b1006,
- 0x2f88c9,
- 0x28c747,
- 0x262606,
- 0x2e3e46,
- 0x27e106,
- 0x2af405,
- 0x21e8c6,
- 0x390e05,
- 0x235708,
- 0x2990cb,
- 0x294b86,
- 0x37e7c4,
- 0x2c8109,
- 0x274844,
- 0x2274c8,
- 0x2441c7,
- 0x289b84,
- 0x2c2688,
- 0x2c94c4,
- 0x2af444,
- 0x39ac45,
- 0x330a46,
- 0x223dc7,
- 0x20b3c3,
- 0x2a5785,
- 0x32a504,
- 0x3323c6,
- 0x3b1608,
- 0x39c785,
- 0x298d89,
- 0x21fb45,
- 0x223288,
- 0x22cfc7,
- 0x398048,
- 0x2c1907,
- 0x2fe589,
- 0x271846,
- 0x360486,
- 0x20e284,
- 0x295705,
- 0x3093cc,
- 0x280087,
- 0x280fc7,
- 0x37e648,
- 0x2935c6,
- 0x2794c4,
- 0x34bc04,
- 0x288449,
- 0x2cd186,
- 0x253707,
- 0x2cff84,
- 0x24ab06,
- 0x35f245,
- 0x2d7547,
- 0x2d9246,
- 0x2594c9,
- 0x2eda07,
- 0x26f5c7,
- 0x2a8b86,
- 0x24aa45,
- 0x285988,
- 0x227248,
- 0x2f6a46,
- 0x39c7c5,
- 0x344806,
- 0x202c03,
- 0x2a1649,
- 0x2a584e,
- 0x2c1608,
- 0x2fff08,
- 0x2f684b,
- 0x298fc6,
- 0x20a884,
- 0x261d84,
- 0x2a594a,
- 0x21e107,
- 0x2626c5,
- 0x21d449,
- 0x2c7205,
- 0x3b0c87,
- 0x250584,
- 0x27b907,
- 0x30fdc8,
- 0x2d0f06,
- 0x365489,
- 0x2c2eca,
- 0x21e086,
- 0x29e8c6,
- 0x2b2a45,
- 0x38ef85,
- 0x325647,
- 0x24ec48,
- 0x35f188,
- 0x3ab506,
- 0x2be145,
- 0x20a98e,
- 0x2bb884,
- 0x2a1745,
- 0x27eb89,
- 0x2ed608,
- 0x292e86,
- 0x2a36cc,
- 0x2a44d0,
- 0x2a6ecf,
- 0x2a8308,
- 0x33f5c7,
- 0x2016c5,
- 0x26fa05,
- 0x389089,
- 0x29af49,
- 0x23fac6,
- 0x35d807,
- 0x2b8545,
- 0x2b43c9,
- 0x3528c6,
- 0x28a9cd,
- 0x288789,
- 0x277344,
- 0x2c1388,
- 0x213649,
- 0x353606,
- 0x27f305,
- 0x360486,
- 0x320d09,
- 0x281688,
- 0x217e05,
- 0x200984,
- 0x2a388b,
- 0x3534c5,
- 0x2a39c6,
- 0x289186,
- 0x26e646,
- 0x27c18b,
- 0x298e89,
- 0x25b5c5,
- 0x397e07,
- 0x2dddc6,
- 0x34dec6,
- 0x25cf48,
- 0x330b49,
- 0x3a4a8c,
- 0x311648,
- 0x23c586,
- 0x329e83,
- 0x28bf46,
- 0x27bfc5,
- 0x284a48,
- 0x2bdb46,
- 0x2d7788,
- 0x251b05,
- 0x283245,
- 0x27a8c8,
- 0x333947,
- 0x36ce07,
- 0x2419c7,
- 0x34dd48,
- 0x39ad08,
- 0x31a706,
- 0x2b9dc7,
- 0x273f47,
- 0x27be8a,
- 0x20d703,
- 0x39be46,
- 0x23e985,
- 0x28f904,
- 0x2826c9,
- 0x2fe504,
- 0x262a04,
- 0x2a4d44,
- 0x2a744b,
- 0x2137c7,
- 0x20abc5,
- 0x29cac8,
- 0x27f206,
- 0x27f208,
- 0x283dc6,
- 0x293345,
- 0x293e85,
- 0x295f46,
- 0x296b48,
- 0x297448,
- 0x282886,
- 0x29c90f,
- 0x2a1110,
- 0x208605,
- 0x202e83,
- 0x2374c5,
- 0x315788,
- 0x29ae49,
- 0x31e3c8,
- 0x2f8748,
- 0x2bec08,
- 0x213887,
- 0x27eec9,
- 0x2d7988,
- 0x2730c4,
- 0x2a4bc8,
- 0x2b5509,
- 0x2babc7,
- 0x2a2644,
- 0x28c248,
- 0x2a938a,
- 0x3085c6,
- 0x2a7f06,
- 0x22c849,
- 0x2a4707,
- 0x2d4588,
- 0x2fdbc8,
- 0x2cfe08,
- 0x3690c5,
- 0x38ff05,
- 0x24fac5,
- 0x25d185,
- 0x38cb87,
- 0x213e85,
- 0x2c8845,
- 0x20ae06,
- 0x31e307,
- 0x2f1447,
- 0x2a9686,
- 0x2da845,
- 0x2a39c6,
- 0x202f45,
- 0x2b83c8,
- 0x2f1e04,
- 0x2cb986,
- 0x348084,
- 0x2b9048,
- 0x2cba8a,
- 0x28300c,
- 0x34d785,
- 0x24fb86,
- 0x3a4c46,
- 0x234b86,
- 0x23c604,
- 0x35f505,
- 0x283c07,
- 0x2a4789,
- 0x2d3c07,
- 0x681384,
- 0x681384,
- 0x320a85,
- 0x38d584,
- 0x2a308a,
- 0x27f086,
- 0x27a704,
- 0x208185,
- 0x3875c5,
- 0x2b93c4,
- 0x288dc7,
- 0x21fac7,
- 0x2d3708,
- 0x342348,
- 0x217e09,
- 0x2a5308,
- 0x2a324b,
- 0x251044,
- 0x375f45,
- 0x2860c5,
- 0x241949,
- 0x330b49,
- 0x2c8008,
- 0x243f48,
- 0x2df044,
- 0x228705,
- 0x202d43,
- 0x2f6bc5,
- 0x388c46,
- 0x29d98c,
- 0x2189c6,
- 0x37cfc6,
- 0x293105,
- 0x3138c8,
- 0x2c1786,
- 0x25ab06,
- 0x2a7f06,
- 0x22e2cc,
- 0x262504,
- 0x3b114a,
- 0x293048,
- 0x29d7c7,
- 0x32a406,
- 0x23e807,
- 0x2f2ec5,
- 0x2b56c6,
- 0x35c286,
- 0x367cc7,
- 0x262a44,
- 0x30a645,
- 0x27eb84,
- 0x2b1887,
- 0x27edc8,
- 0x27fc8a,
- 0x286907,
- 0x375387,
- 0x33f547,
- 0x2e4e49,
- 0x29d98a,
- 0x2373c3,
- 0x262945,
- 0x20b343,
- 0x2e7409,
- 0x254ec8,
- 0x23d2c7,
- 0x31e4c9,
- 0x227346,
- 0x2042c8,
- 0x33d785,
- 0x39cb8a,
- 0x2dbc89,
- 0x276209,
- 0x3a34c7,
- 0x2340c9,
- 0x21edc8,
- 0x367e86,
- 0x24fd48,
- 0x21ce87,
- 0x237f87,
- 0x248b87,
- 0x2d5dc8,
- 0x2ff746,
- 0x2a9145,
- 0x283c07,
- 0x29e3c8,
- 0x348004,
- 0x2d41c4,
- 0x297d87,
- 0x2b3e47,
- 0x325b8a,
- 0x367e06,
- 0x35854a,
- 0x2c7447,
- 0x2bb647,
- 0x358004,
- 0x27dec4,
- 0x2d7446,
- 0x281b84,
- 0x281b8c,
- 0x203185,
- 0x21ff89,
- 0x265684,
- 0x2b9485,
- 0x27f3c8,
- 0x22d245,
- 0x204dc6,
- 0x225f44,
- 0x28f30a,
- 0x2b25c6,
- 0x2a424a,
- 0x2b7887,
- 0x236b45,
- 0x222f45,
- 0x3a0c8a,
- 0x296cc5,
- 0x2a7e06,
- 0x24b384,
- 0x2b6886,
- 0x325705,
- 0x2bdc06,
- 0x2e700c,
- 0x2d388a,
- 0x2957c4,
- 0x2381c6,
- 0x2a4707,
- 0x2d91c4,
- 0x274a08,
- 0x39e246,
- 0x20a809,
- 0x2baec9,
- 0x2a6c89,
- 0x351f46,
- 0x21cf86,
- 0x24fe87,
- 0x34f288,
- 0x21cd89,
- 0x2137c7,
- 0x29cc46,
- 0x2be587,
- 0x364685,
- 0x2bb884,
- 0x24fa47,
- 0x274105,
- 0x28f845,
- 0x36c347,
- 0x248608,
- 0x3bb5c6,
- 0x29f24d,
- 0x2a19cf,
- 0x2a5fcd,
- 0x200904,
- 0x23dbc6,
- 0x2dc1c8,
- 0x20e245,
- 0x27c048,
- 0x2499ca,
- 0x277344,
- 0x365646,
- 0x33ae07,
- 0x233ac7,
- 0x2d1949,
- 0x24fd05,
- 0x2b93c4,
- 0x2bb98a,
- 0x2c2989,
- 0x2341c7,
- 0x272306,
- 0x353606,
- 0x228646,
- 0x374486,
- 0x2db94f,
- 0x2dc089,
- 0x27f986,
- 0x233ec6,
- 0x320289,
- 0x2b9ec7,
- 0x229403,
- 0x22e446,
- 0x2052c3,
- 0x2eb9c8,
- 0x2be3c7,
- 0x2a8509,
- 0x296588,
- 0x36cf48,
- 0x385f86,
- 0x218909,
- 0x398845,
- 0x2b9f84,
- 0x29a687,
- 0x2c8545,
- 0x200904,
- 0x20ac88,
- 0x202044,
- 0x2b9c07,
- 0x3749c6,
- 0x2e7a85,
- 0x292c88,
- 0x3534cb,
- 0x3778c7,
- 0x3a0f06,
- 0x2ccf84,
- 0x348186,
- 0x271145,
- 0x274105,
- 0x285709,
- 0x2889c9,
- 0x237fc4,
- 0x238005,
- 0x238205,
- 0x39ca06,
- 0x3058c8,
- 0x2c6b86,
- 0x25060b,
- 0x36e4ca,
- 0x2b8f85,
- 0x293f06,
- 0x3a2ac5,
- 0x2e9dc5,
- 0x2ad387,
- 0x39c0c8,
- 0x260c84,
- 0x26be86,
- 0x2974c6,
- 0x21ef87,
- 0x3155c4,
- 0x2848c6,
- 0x2427c5,
- 0x2427c9,
- 0x21b584,
- 0x29a4c9,
- 0x282886,
- 0x2c8f48,
- 0x238205,
- 0x37e885,
- 0x2bdc06,
- 0x3a4989,
- 0x2208c9,
- 0x37d046,
- 0x2ed708,
- 0x277348,
- 0x3a2a84,
- 0x2bbcc4,
- 0x2bbcc8,
- 0x32e048,
- 0x260d89,
- 0x388bc6,
- 0x2a7f06,
- 0x3294cd,
- 0x2bfac6,
- 0x2d6b49,
- 0x2dd5c5,
- 0x205306,
- 0x2102c8,
- 0x326885,
- 0x273f84,
- 0x271145,
- 0x2882c8,
- 0x2a2e49,
- 0x27ec44,
- 0x333f86,
- 0x22d10a,
- 0x2f1e88,
- 0x325d09,
- 0x261f0a,
- 0x31e446,
- 0x2a1b88,
- 0x2ced85,
- 0x2c5ec8,
- 0x2c1a05,
- 0x227209,
- 0x37ac49,
- 0x203282,
- 0x2b01c5,
- 0x2782c6,
- 0x2827c7,
- 0x34e085,
- 0x30ce06,
- 0x326948,
- 0x2935c6,
- 0x2b9749,
- 0x2810c6,
- 0x25cdc8,
- 0x2b0805,
- 0x264906,
- 0x25a808,
- 0x287a88,
- 0x2e8648,
- 0x353788,
- 0x21e8c4,
- 0x281943,
- 0x2b9984,
- 0x286b06,
- 0x3646c4,
- 0x2ffe47,
- 0x25aa09,
- 0x2cbd05,
- 0x2fdbc6,
- 0x22e446,
- 0x28200b,
- 0x2b8ec6,
- 0x2cf8c6,
- 0x2d13c8,
- 0x24d486,
- 0x236943,
- 0x2164c3,
- 0x2bb884,
- 0x239f45,
- 0x387b87,
- 0x27edc8,
- 0x27edcf,
- 0x283b0b,
- 0x3056c8,
- 0x334006,
- 0x3059ce,
- 0x251143,
- 0x387b04,
- 0x2b8e45,
- 0x2b9246,
- 0x29514b,
- 0x299b86,
- 0x222a49,
- 0x2e7a85,
- 0x3999c8,
- 0x216688,
- 0x22078c,
- 0x2a7486,
- 0x2f6c06,
- 0x2dac05,
- 0x28fc08,
- 0x25a805,
- 0x356288,
- 0x2a3a4a,
- 0x2a6409,
- 0x681384,
- 0x3b60f882,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x208e83,
- 0x201a03,
- 0x213083,
- 0x286644,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x2de944,
- 0x323043,
- 0x34e347,
- 0x28cac3,
- 0x200e03,
- 0x293408,
- 0x201a03,
- 0x29630b,
- 0x2f3743,
- 0x3a03c6,
- 0x205082,
- 0x22facb,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x201a03,
- 0x220b83,
- 0x201503,
- 0x207102,
- 0x16fb88,
- 0x32d1c5,
- 0x274188,
- 0x2f9f88,
- 0x20f882,
- 0x20a605,
- 0x3785c7,
- 0x201842,
- 0x24c5c7,
- 0x207b02,
- 0x2f6607,
- 0x2cc409,
- 0x2ce948,
- 0x2cfc89,
- 0x24b2c2,
- 0x2707c7,
- 0x37cdc4,
- 0x378687,
- 0x36e3c7,
- 0x264d42,
- 0x28cac3,
- 0x214642,
- 0x204d42,
- 0x200442,
- 0x21cc82,
- 0x206b42,
- 0x20d2c2,
- 0x2aff05,
- 0x240a05,
- 0xf882,
- 0x3cac3,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x170c3,
- 0x8c1,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x221f43,
- 0x3e4f5906,
- 0x42bc3,
- 0x873c5,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x84c2,
- 0x16fb88,
- 0xe03,
- 0x1a3443,
- 0x4ec04,
- 0xe5105,
- 0x207102,
- 0x39cdc4,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x38acc3,
- 0x2b13c5,
- 0x255783,
- 0x211a83,
- 0x208e83,
- 0x21b543,
- 0x201a03,
- 0x215443,
- 0x20e383,
- 0x202443,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x20f882,
- 0x201a03,
- 0x16fb88,
- 0x323043,
- 0x1a3443,
- 0x16fb88,
- 0x1a3443,
- 0x2bcc43,
- 0x238543,
- 0x23a844,
- 0x23cac3,
- 0x323043,
- 0x205e82,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x205e82,
- 0x229443,
- 0x208e83,
- 0x201a03,
- 0x2ef783,
- 0x215443,
- 0x207102,
- 0x20f882,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x3a03c5,
- 0xa4f06,
- 0x286644,
- 0x205082,
- 0x16fb88,
- 0x207102,
- 0x25088,
- 0x134943,
- 0x20f882,
- 0x42899306,
- 0x6a04,
- 0xb610b,
- 0x44e86,
- 0x8cbc7,
- 0x23cac3,
- 0x51648,
- 0x323043,
- 0x8b205,
- 0x1493c4,
- 0x227583,
- 0x556c7,
- 0xe06c4,
- 0x208e83,
- 0x1a3284,
- 0x1a3443,
- 0x201a03,
- 0x2f4544,
- 0xb5ec8,
- 0x12cf06,
- 0x16308,
- 0x1252c5,
- 0x9fc9,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x200e03,
- 0x201a03,
- 0x2f3743,
- 0x205082,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231603,
- 0x21bf84,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x2de944,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x3a03c6,
- 0x23cac3,
- 0x323043,
- 0x18a783,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x8cbc7,
- 0x16fb88,
- 0x323043,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x45238543,
- 0x23cac3,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x207102,
- 0x20f882,
- 0x238543,
- 0x323043,
- 0x208e83,
- 0x200442,
- 0x201a03,
- 0x31f1c7,
- 0x342b8b,
- 0x22fc83,
- 0x244708,
- 0x34f007,
- 0x348746,
- 0x382d45,
- 0x232309,
- 0x28c848,
- 0x346789,
- 0x346790,
- 0x36f64b,
- 0x2e2109,
- 0x205dc3,
- 0x20af09,
- 0x23bd86,
- 0x23bd8c,
- 0x32d288,
- 0x3bc208,
- 0x244a49,
- 0x29854e,
- 0x2cc1cb,
- 0x2e5c0c,
- 0x203ec3,
- 0x26ad0c,
- 0x203ec9,
- 0x30ae47,
- 0x23ca0c,
- 0x2b478a,
- 0x252044,
- 0x2768cd,
- 0x26abc8,
- 0x21308d,
- 0x26fec6,
- 0x28664b,
- 0x200cc9,
- 0x2cf787,
- 0x332c86,
- 0x3372c9,
- 0x34834a,
- 0x319108,
- 0x2f3204,
- 0x2fe987,
- 0x363787,
- 0x2d0184,
- 0x38d204,
- 0x2345c9,
- 0x28a4c9,
- 0x2b7288,
- 0x216d05,
- 0x339645,
- 0x213c86,
- 0x276789,
- 0x249c4d,
- 0x33bf88,
- 0x213b87,
- 0x382dc8,
- 0x2fa686,
- 0x39b444,
- 0x2501c5,
- 0x201c46,
- 0x202884,
- 0x203dc7,
- 0x206f4a,
- 0x219784,
- 0x21dfc6,
- 0x21ea49,
- 0x21ea4f,
- 0x21fc8d,
- 0x220f06,
- 0x224c90,
- 0x225086,
- 0x2257c7,
- 0x2269c7,
- 0x2269cf,
- 0x2276c9,
- 0x22cb06,
- 0x22da47,
- 0x22da48,
- 0x22f289,
- 0x358088,
- 0x2eb507,
- 0x212843,
- 0x394f46,
- 0x3c0b48,
- 0x29880a,
- 0x236089,
- 0x205d83,
- 0x3784c6,
- 0x26bcca,
- 0x28eb87,
- 0x30ac8a,
- 0x25a18e,
- 0x227806,
- 0x2b03c7,
- 0x217bc6,
- 0x203f86,
- 0x38fd0b,
- 0x31708a,
- 0x32138d,
- 0x21d047,
- 0x20e408,
- 0x20e409,
- 0x20e40f,
- 0x2c1c4c,
- 0x2b4089,
- 0x2d890e,
- 0x34e44a,
- 0x28b906,
- 0x314a86,
- 0x319d8c,
- 0x31be8c,
- 0x327508,
- 0x36eac7,
- 0x274d85,
- 0x3485c4,
- 0x20f88e,
- 0x299684,
- 0x388947,
- 0x39140a,
- 0x38a814,
- 0x39390f,
- 0x226b88,
- 0x394e08,
- 0x35eccd,
- 0x35ecce,
- 0x3a0849,
- 0x238788,
- 0x23878f,
- 0x23c70c,
- 0x23c70f,
- 0x23d907,
- 0x240c0a,
- 0x2459cb,
- 0x243788,
- 0x245c87,
- 0x3ac74d,
- 0x322b46,
- 0x276a86,
- 0x248dc9,
- 0x364b08,
- 0x24cf48,
- 0x24cf4e,
- 0x2f4087,
- 0x24e145,
- 0x24e9c5,
- 0x204b44,
- 0x348a06,
- 0x2b7188,
- 0x20db03,
- 0x2f948e,
- 0x3acb08,
- 0x2b588b,
- 0x378bc7,
- 0x3ab345,
- 0x233d86,
- 0x2b1f87,
- 0x32f2c8,
- 0x325449,
- 0x322dc5,
- 0x28e788,
- 0x21c946,
- 0x3afeca,
- 0x20f789,
- 0x23cac9,
- 0x23cacb,
- 0x346448,
- 0x2d0049,
- 0x216dc6,
- 0x23768a,
- 0x293c0a,
- 0x240e0c,
- 0x28e4c7,
- 0x2ce74a,
- 0x36b38b,
- 0x36b399,
- 0x312408,
- 0x3a0445,
- 0x2cdd46,
- 0x25c489,
- 0x3449c6,
- 0x2df8ca,
- 0x28ca46,
- 0x20df44,
- 0x2cdecd,
- 0x20df47,
- 0x218209,
- 0x250ac5,
- 0x250c08,
- 0x251409,
- 0x251844,
- 0x251f47,
- 0x251f48,
- 0x2526c7,
- 0x26e2c8,
- 0x255cc7,
- 0x25b845,
- 0x25f3cc,
- 0x25fc09,
- 0x2c8c0a,
- 0x39ec09,
- 0x20b009,
- 0x37ee4c,
- 0x264f0b,
- 0x2662c8,
- 0x267448,
- 0x26a804,
- 0x289848,
- 0x28d209,
- 0x2b4847,
- 0x20e646,
- 0x200f47,
- 0x2c4289,
- 0x32264b,
- 0x325147,
- 0x201a87,
- 0x2b79c7,
- 0x213004,
- 0x213005,
- 0x2a7c05,
- 0x34b1cb,
- 0x3a9384,
- 0x350448,
- 0x26e94a,
- 0x21ca07,
- 0x300687,
- 0x294712,
- 0x276c06,
- 0x23a1c6,
- 0x33888e,
- 0x27ab46,
- 0x29abc8,
- 0x29b38f,
- 0x213448,
- 0x302848,
- 0x3bd10a,
- 0x3bd111,
- 0x2a990e,
- 0x25654a,
- 0x25654c,
- 0x20bf07,
- 0x238990,
- 0x200408,
- 0x2a9b05,
- 0x2b238a,
- 0x2028cc,
- 0x29cf8d,
- 0x302346,
- 0x302347,
- 0x30234c,
- 0x30c80c,
- 0x335d4c,
- 0x2edfcb,
- 0x28e0c4,
- 0x22c9c4,
- 0x354609,
- 0x39e807,
- 0x229989,
- 0x293a49,
- 0x3b6587,
- 0x2b4606,
- 0x2b4609,
- 0x2b4a03,
- 0x21b7ca,
- 0x31fd07,
- 0x34304b,
- 0x32120a,
- 0x2f6744,
- 0x35f646,
- 0x286b89,
- 0x281a04,
- 0x20324a,
- 0x3a1205,
- 0x2c4d45,
- 0x2c4d4d,
- 0x2c508e,
- 0x2b9ac5,
- 0x32ab86,
- 0x39ffc7,
- 0x25f64a,
- 0x3a8286,
- 0x2eefc4,
- 0x2f9847,
- 0x3bc50b,
- 0x2fa747,
- 0x30b444,
- 0x256fc6,
- 0x256fcd,
- 0x2c3f4c,
- 0x208d46,
- 0x33c18a,
- 0x230206,
- 0x22ddc8,
- 0x285107,
- 0x34c98a,
- 0x3840c6,
- 0x210443,
- 0x210446,
- 0x3c09c8,
- 0x2a344a,
- 0x2801c7,
- 0x2801c8,
- 0x289e04,
- 0x256ac7,
- 0x283288,
- 0x345388,
- 0x284508,
- 0x35874a,
- 0x2e4505,
- 0x2e9a07,
- 0x256393,
- 0x343d86,
- 0x2e0908,
- 0x229f89,
- 0x24c488,
- 0x38600b,
- 0x2d3d48,
- 0x2bc644,
- 0x27a9c6,
- 0x317ec6,
- 0x330889,
- 0x3bc3c7,
- 0x25f4c8,
- 0x2931c6,
- 0x36c244,
- 0x30aa05,
- 0x2d4008,
- 0x2cd88a,
- 0x2cdb48,
- 0x2d4b06,
- 0x2a1d8a,
- 0x2fc208,
- 0x2d8fc8,
- 0x2d9ec8,
- 0x2da506,
- 0x2dc3c6,
- 0x20c0cc,
- 0x2dc990,
- 0x285505,
- 0x213248,
- 0x30d410,
- 0x213250,
- 0x34660e,
- 0x20bd4e,
- 0x20bd54,
- 0x20e78f,
- 0x20eb46,
- 0x3072d1,
- 0x332e13,
- 0x333288,
- 0x31d245,
- 0x2a0bc8,
- 0x395705,
- 0x23540c,
- 0x2309c9,
- 0x2994c9,
- 0x230e47,
- 0x263549,
- 0x261047,
- 0x2ffa46,
- 0x24ffc7,
- 0x20ef05,
- 0x217103,
- 0x20dcc9,
- 0x22a249,
- 0x38a783,
- 0x3b35c4,
- 0x358c8d,
- 0x3b83cf,
- 0x36c285,
- 0x331786,
- 0x21ac47,
- 0x32d007,
- 0x290806,
- 0x29080b,
- 0x2aa805,
- 0x263c06,
- 0x300b87,
- 0x257449,
- 0x345a06,
- 0x20cb45,
- 0x2248cb,
- 0x230786,
- 0x38ad45,
- 0x273988,
- 0x2a6988,
- 0x2ba50c,
- 0x2ba510,
- 0x2b64c9,
- 0x2c5607,
- 0x2e520b,
- 0x30be86,
- 0x2eb3ca,
- 0x2ec90b,
- 0x2ee70a,
- 0x2ee986,
- 0x2ef645,
- 0x31fa46,
- 0x37d408,
- 0x230f0a,
- 0x35e95c,
- 0x2f380c,
- 0x2f3b08,
- 0x3a03c5,
- 0x35cec7,
- 0x25b0c6,
- 0x27f7c5,
- 0x2227c6,
- 0x2909c8,
- 0x2c2c07,
- 0x298448,
- 0x2b04ca,
- 0x33764c,
- 0x3378c9,
- 0x39b5c7,
- 0x215c04,
- 0x24ea86,
- 0x2d518a,
- 0x293b45,
- 0x211ecc,
- 0x212e48,
- 0x389c88,
- 0x21904c,
- 0x2266cc,
- 0x229549,
- 0x229787,
- 0x23ff4c,
- 0x2454c4,
- 0x24718a,
- 0x23354c,
- 0x279a4b,
- 0x24bfcb,
- 0x3821c6,
- 0x2f7447,
- 0x20e947,
- 0x238bcf,
- 0x303191,
- 0x2e16d2,
- 0x314ecd,
- 0x314ece,
- 0x31520e,
- 0x20e948,
- 0x20e952,
- 0x253e08,
- 0x34ec47,
- 0x25430a,
- 0x208b08,
- 0x27ab05,
- 0x38c9ca,
- 0x2255c7,
- 0x2e6f44,
- 0x227103,
- 0x297185,
- 0x3bd387,
- 0x2fb547,
- 0x29d18e,
- 0x308c8d,
- 0x30d7c9,
- 0x21f545,
- 0x31c443,
- 0x326446,
- 0x264085,
- 0x27dc48,
- 0x2c0649,
- 0x2a0105,
- 0x3ac94f,
- 0x2b6207,
- 0x382bc5,
- 0x37958a,
- 0x358946,
- 0x2522c9,
- 0x37db4c,
- 0x2fec09,
- 0x2094c6,
- 0x26e74c,
- 0x329f86,
- 0x3017c8,
- 0x301c86,
- 0x312586,
- 0x2082c4,
- 0x266643,
- 0x2b380a,
- 0x32e411,
- 0x30650a,
- 0x265345,
- 0x271ac7,
- 0x25c7c7,
- 0x283384,
- 0x28338b,
- 0x2cfb08,
- 0x2c1486,
- 0x37e6c5,
- 0x3b01c4,
- 0x280ac9,
- 0x320804,
- 0x24cd87,
- 0x359f05,
- 0x359f07,
- 0x338ac5,
- 0x2affc3,
- 0x34eb08,
- 0x35f2ca,
- 0x20b3c3,
- 0x32d20a,
- 0x281ec6,
- 0x3ac6cf,
- 0x2f4009,
- 0x2f9410,
- 0x2ebe48,
- 0x2d5809,
- 0x29f087,
- 0x256f4f,
- 0x31e884,
- 0x2de9c4,
- 0x224f06,
- 0x317b06,
- 0x2e2aca,
- 0x381c46,
- 0x2ff587,
- 0x30c148,
- 0x30c347,
- 0x30cbc7,
- 0x30f08a,
- 0x310b4b,
- 0x3b1b45,
- 0x2e1308,
- 0x204443,
- 0x2045cc,
- 0x38000f,
- 0x274b8d,
- 0x2aefc7,
- 0x30d909,
- 0x2e8207,
- 0x24f2c8,
- 0x38aa0c,
- 0x2bc548,
- 0x231848,
- 0x321d0e,
- 0x336054,
- 0x336564,
- 0x354e4a,
- 0x37018b,
- 0x261104,
- 0x261109,
- 0x3656c8,
- 0x24ef85,
- 0x20d60a,
- 0x3acd47,
- 0x31f944,
- 0x39c783,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x28cac3,
- 0x20c0c6,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0x207102,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x323043,
- 0x255783,
- 0x20c0c6,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x207102,
- 0x242043,
- 0x20f882,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x201382,
- 0x235f42,
- 0x20f882,
- 0x238543,
- 0x206902,
+ 0x202f42,
+ 0x880c8,
+ 0x211302,
+ 0x211d42,
+ 0x273cc7,
+ 0x3a8ac7,
+ 0x21ed05,
+ 0x215802,
+ 0x220647,
+ 0x220808,
+ 0x279a82,
+ 0x293f02,
+ 0x22f802,
+ 0x202ec2,
+ 0x239c48,
+ 0x21abc3,
+ 0x267848,
+ 0x2cf4cd,
+ 0x215743,
+ 0x369908,
+ 0x234a4f,
+ 0x234e0e,
+ 0x223f8a,
+ 0x36a611,
+ 0x36aa90,
+ 0x2b348d,
+ 0x2b37cc,
+ 0x3b2447,
+ 0x348807,
+ 0x355409,
+ 0x23c302,
+ 0x2004c2,
+ 0x254c8c,
+ 0x254f8b,
+ 0x2008c2,
+ 0x2dca86,
+ 0x206c02,
+ 0x2131c2,
+ 0x21dec2,
+ 0x216582,
+ 0x392904,
+ 0x23b147,
+ 0x200bc2,
+ 0x23f1c7,
+ 0x240447,
+ 0x214ec2,
+ 0x230542,
+ 0x242885,
+ 0x200682,
+ 0x26380e,
+ 0x27620d,
+ 0x2343c3,
+ 0x28268e,
+ 0x356b8d,
+ 0x2de803,
+ 0x2058c2,
+ 0x27cac4,
+ 0x2446c2,
+ 0x20ddc2,
+ 0x346905,
+ 0x34f587,
+ 0x372642,
+ 0x206ac2,
+ 0x246cc7,
+ 0x24c608,
+ 0x23aa82,
+ 0x2b5506,
+ 0x254b0c,
+ 0x254e4b,
+ 0x221842,
+ 0x25bccf,
+ 0x25c090,
+ 0x25c48f,
+ 0x25c855,
+ 0x25cd94,
+ 0x25d28e,
+ 0x25d60e,
+ 0x25d98f,
+ 0x25dd4e,
+ 0x25e0d4,
+ 0x25e5d3,
+ 0x25ea8d,
+ 0x271749,
+ 0x286d43,
+ 0x2007c2,
+ 0x20a805,
+ 0x208f46,
+ 0x201f82,
+ 0x26bdc7,
+ 0x21eb03,
+ 0x20b2c2,
+ 0x2c7448,
+ 0x36a851,
+ 0x36ac90,
0x200942,
- 0x231604,
- 0x20f644,
- 0x22a482,
- 0x21bf84,
- 0x200442,
- 0x201a03,
- 0x221483,
- 0x3821c6,
- 0x21a902,
- 0x202642,
- 0x20c4c2,
- 0x47a13443,
- 0x47e0bf03,
- 0x5d306,
- 0x5d306,
- 0x286644,
- 0x200e03,
- 0x14b700a,
- 0x12ea0c,
- 0xf4cc,
- 0x871cd,
- 0x131645,
- 0x26547,
- 0x1b1c6,
- 0x21088,
- 0x23087,
- 0x28b08,
- 0x1aa20a,
- 0x1397c7,
- 0x48adf485,
- 0x1359c9,
- 0x3e34b,
- 0x35dcb,
- 0x42e48,
- 0x172f4a,
- 0x9288e,
- 0x144c28b,
- 0x6a04,
- 0x63d46,
- 0x7588,
- 0xf8d08,
- 0x3e607,
- 0x1a787,
- 0x57f89,
- 0x81a87,
- 0xdd088,
- 0x12f5c9,
- 0x49804,
- 0x49f45,
- 0x12bfce,
- 0xb084d,
- 0x8ca48,
- 0x48e34406,
- 0x49834408,
- 0x7b548,
- 0x11f3d0,
- 0x5998c,
- 0x6b9c7,
- 0x6c647,
- 0x71387,
- 0x77fc7,
- 0x13c42,
- 0x144ec7,
- 0x11724c,
- 0x43b87,
- 0xac206,
- 0xac7c9,
- 0xae208,
- 0x206c2,
- 0x942,
- 0xbee8b,
- 0x1a3307,
- 0x18009,
- 0x164ec9,
- 0x3ef48,
- 0xb8042,
- 0x134649,
- 0xcc60a,
- 0xd2689,
- 0xdfdc9,
- 0xe0b08,
- 0xe1b87,
- 0xe4489,
- 0xe61c5,
- 0xe67d0,
- 0x191646,
- 0x11205,
- 0x31e8d,
- 0x235c6,
- 0xefd07,
- 0xf4558,
- 0x14f508,
- 0xc74a,
- 0xb282,
- 0x5524d,
- 0xa02,
- 0x86286,
- 0x95408,
- 0x8f148,
- 0x16fa49,
- 0x586c8,
- 0x6420e,
- 0x126447,
- 0x1051cd,
- 0xfb445,
- 0x144c48,
- 0x19fc08,
- 0x106046,
- 0xc2,
- 0x12cf06,
- 0x4542,
- 0x341,
- 0x65a07,
- 0xf6fc3,
- 0x492f4dc4,
- 0x4969c243,
+ 0x22a647,
+ 0x2074c2,
+ 0x3328c7,
+ 0x209682,
+ 0x305dc9,
+ 0x3774c7,
+ 0x3615c8,
+ 0x228246,
+ 0x2daf83,
+ 0x34ad45,
+ 0x234642,
+ 0x200402,
+ 0x200405,
+ 0x399485,
+ 0x202102,
+ 0x24a503,
+ 0x2cfc47,
+ 0x208a07,
+ 0x203f42,
+ 0x2fec04,
+ 0x214803,
+ 0x2be489,
+ 0x2db488,
+ 0x20b402,
+ 0x2061c2,
+ 0x22f2c7,
+ 0x24bcc5,
+ 0x2a5f88,
+ 0x3b0e87,
+ 0x2047c3,
+ 0x27df86,
+ 0x2b330d,
+ 0x2b368c,
+ 0x276a06,
+ 0x203142,
+ 0x29a1c2,
+ 0x206742,
+ 0x2348cf,
+ 0x234cce,
+ 0x2d3847,
+ 0x200342,
+ 0x39e205,
+ 0x39e206,
+ 0x250042,
+ 0x203042,
+ 0x217c86,
+ 0x2a9a83,
+ 0x332806,
+ 0x2bfb05,
+ 0x2bfb0d,
+ 0x2c00d5,
+ 0x2c0c0c,
+ 0x2c150d,
+ 0x2c18d2,
+ 0x20e842,
+ 0x200e02,
+ 0x200ac2,
+ 0x2d6646,
+ 0x2ac506,
+ 0x2025c2,
+ 0x208fc6,
+ 0x203382,
+ 0x2249c5,
+ 0x204c02,
+ 0x263949,
+ 0x34700c,
+ 0x34734b,
+ 0x201502,
+ 0x24ca48,
+ 0x2042c2,
+ 0x207a82,
+ 0x219bc6,
+ 0x36c005,
+ 0x3a1687,
+ 0x24a385,
+ 0x28df05,
+ 0x242a42,
+ 0x202042,
+ 0x206d42,
+ 0x26e847,
+ 0x2d094d,
+ 0x2d0ccc,
+ 0x2229c7,
+ 0x2b5482,
+ 0x226282,
+ 0x36f088,
+ 0x22ce88,
+ 0x2d5b48,
+ 0x2dfd44,
+ 0x2ef207,
+ 0x2dbf83,
+ 0x280b82,
+ 0x2014c2,
+ 0x2e0489,
+ 0x3a3247,
+ 0x207442,
+ 0x26d485,
+ 0x241542,
+ 0x22ff42,
+ 0x297fc3,
+ 0x297fc6,
+ 0x2e6a82,
+ 0x2e8642,
+ 0x200c02,
+ 0x30f006,
+ 0x29dc87,
+ 0x200b82,
+ 0x208782,
+ 0x26768f,
+ 0x2824cd,
+ 0x284d8e,
+ 0x356a0c,
+ 0x20d342,
+ 0x207482,
+ 0x228085,
+ 0x3b3086,
+ 0x212182,
+ 0x208b02,
+ 0x204b42,
+ 0x282844,
+ 0x2cf344,
+ 0x338a86,
+ 0x201bc2,
+ 0x275247,
+ 0x214343,
+ 0x21cb88,
+ 0x224348,
+ 0x239247,
+ 0x33fbc6,
+ 0x2015c2,
+ 0x239bc3,
+ 0x35bf87,
+ 0x266c86,
+ 0x2d6585,
+ 0x2d8e88,
+ 0x208d82,
+ 0x3211c7,
+ 0x20dfc2,
+ 0x35b202,
+ 0x20ad82,
+ 0x2bf8c9,
+ 0x200242,
+ 0x200a02,
+ 0x222c43,
+ 0x321887,
+ 0x201a02,
+ 0x34718c,
+ 0x34748b,
+ 0x276a86,
+ 0x20cdc5,
+ 0x224982,
+ 0x206ec2,
+ 0x2b3006,
+ 0x229083,
+ 0x340d07,
+ 0x246002,
+ 0x200cc2,
+ 0x248e15,
+ 0x32a415,
+ 0x24dd53,
+ 0x32a953,
+ 0x264dc7,
+ 0x288288,
+ 0x288290,
+ 0x289b0f,
+ 0x28bf13,
+ 0x2a3fd2,
+ 0x2a9410,
+ 0x2e79cf,
+ 0x2f14d2,
+ 0x351551,
+ 0x2afb13,
+ 0x2bf692,
+ 0x2c8d0f,
+ 0x2cb38e,
+ 0x2cc152,
+ 0x2cd191,
+ 0x2cdd8f,
+ 0x2ced4e,
+ 0x2d4c11,
+ 0x2e0090,
+ 0x2e4452,
+ 0x2e55d1,
+ 0x2e6b06,
+ 0x2e89c7,
+ 0x2f77c7,
+ 0x201582,
+ 0x27a485,
+ 0x2f2447,
+ 0x221e42,
+ 0x203c42,
+ 0x22c605,
+ 0x221303,
+ 0x26e246,
+ 0x2d0b0d,
+ 0x2d0e4c,
+ 0x203dc2,
+ 0x27fdcb,
+ 0x219cca,
+ 0x31b28a,
+ 0x2b22c9,
+ 0x2dd20b,
+ 0x3b0fcd,
+ 0x2f2b4c,
+ 0x2144ca,
+ 0x221e8c,
+ 0x24d10b,
+ 0x268e4c,
+ 0x26c10b,
+ 0x346f83,
+ 0x287e86,
+ 0x326e82,
+ 0x2e9202,
+ 0x208943,
+ 0x205882,
+ 0x205883,
+ 0x238406,
+ 0x25ca07,
+ 0x271406,
+ 0x2ea8c8,
+ 0x22cb88,
+ 0x2f0206,
+ 0x22d742,
+ 0x2f508d,
+ 0x2f53cc,
+ 0x22d747,
+ 0x2f8787,
+ 0x2156c2,
+ 0x21bf02,
+ 0x21eb82,
+ 0x24b982,
+ 0x216582,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x200882,
+ 0x200702,
+ 0x2368c545,
+ 0x23a03985,
+ 0x23f0b146,
+ 0x880c8,
+ 0x242b0185,
+ 0x216582,
+ 0x201a42,
+ 0x24755c45,
+ 0x24a786c5,
+ 0x24e79547,
+ 0x2527b109,
+ 0x2564b084,
+ 0x201f82,
+ 0x20b2c2,
+ 0x25a43785,
+ 0x25e8bb89,
+ 0x26311f08,
+ 0x266abe45,
+ 0x26b0bc07,
+ 0x26e18948,
+ 0x272d8045,
+ 0x27604606,
+ 0x27b47b09,
+ 0x27f25348,
+ 0x282b8888,
+ 0x2869310a,
+ 0x28a48444,
+ 0x28ec9405,
+ 0x292b5dc8,
+ 0x29616c85,
+ 0x21ac42,
+ 0x29a00343,
+ 0x29ea2f86,
+ 0x2a233a88,
+ 0x2a69e2c6,
+ 0x2aa9ddc8,
+ 0x2ae09c86,
+ 0x2b2f6284,
+ 0x205902,
+ 0x2b73b7c7,
+ 0x2baa8444,
+ 0x2be746c7,
+ 0x2c333a07,
+ 0x201502,
+ 0x2c696ec5,
+ 0x2ca31504,
+ 0x2cf7fd07,
+ 0x2d211e47,
+ 0x2d67c906,
+ 0x2da29585,
+ 0x2de91bc7,
+ 0x2e2d1a48,
+ 0x2e60ab87,
+ 0x2eb12b09,
+ 0x2eec0f45,
+ 0x2f32bb87,
+ 0x2f68b886,
+ 0x2fa51008,
+ 0x225a4d,
+ 0x242bc9,
+ 0x2e4ccb,
+ 0x3726cb,
+ 0x26f30b,
+ 0x2a564b,
+ 0x2ffd0b,
+ 0x2fffcb,
+ 0x300849,
+ 0x30208b,
+ 0x30234b,
+ 0x30290b,
+ 0x30340a,
+ 0x30394a,
+ 0x303f4c,
+ 0x308e0b,
+ 0x30964a,
+ 0x31c18a,
+ 0x32734e,
+ 0x3282ce,
+ 0x32864a,
+ 0x32b14a,
+ 0x32cb4b,
+ 0x32ce0b,
+ 0x32dd0b,
+ 0x34c50b,
+ 0x34cb0a,
+ 0x34d7cb,
+ 0x34da8a,
+ 0x34dd0a,
+ 0x34df8a,
+ 0x373f4b,
+ 0x37c18b,
+ 0x37dace,
+ 0x37de4b,
+ 0x3849cb,
+ 0x38598b,
+ 0x3893ca,
+ 0x389649,
+ 0x38988a,
+ 0x38af0a,
+ 0x39c60b,
+ 0x39e64b,
+ 0x39f24a,
+ 0x3a02cb,
+ 0x3a4f0b,
+ 0x3b26cb,
+ 0x2fe7ab48,
+ 0x30285289,
+ 0x30626809,
+ 0x30acfe48,
+ 0x338805,
+ 0x203443,
+ 0x204204,
+ 0x327145,
+ 0x24adc6,
+ 0x259145,
+ 0x284404,
+ 0x26bcc8,
+ 0x3739c5,
+ 0x28d904,
+ 0x3b3f87,
+ 0x2996ca,
+ 0x3605ca,
+ 0x336947,
+ 0x203347,
+ 0x2f10c7,
+ 0x362607,
+ 0x2b9d05,
+ 0x306d46,
+ 0x2fb0c7,
+ 0x3a2784,
+ 0x376b06,
+ 0x376a06,
+ 0x3a3745,
+ 0x280584,
+ 0x2d3d46,
+ 0x298387,
+ 0x225d46,
+ 0x2c7ec7,
+ 0x28d6c3,
+ 0x268446,
+ 0x2328c5,
+ 0x279647,
+ 0x266fca,
+ 0x263204,
+ 0x2180c8,
+ 0x2fb649,
+ 0x2ce487,
+ 0x3aed06,
+ 0x29f988,
+ 0x306409,
+ 0x2e6244,
+ 0x35d804,
+ 0x2f9685,
+ 0x2fadc8,
+ 0x2bd1c7,
+ 0x2aa009,
+ 0x327c48,
+ 0x2fc706,
+ 0x379bc6,
+ 0x2943c8,
+ 0x375fc6,
+ 0x203985,
+ 0x27c9c6,
+ 0x274bc8,
+ 0x2347c6,
+ 0x25708b,
+ 0x233406,
+ 0x295d4d,
+ 0x358a45,
+ 0x2a8306,
+ 0x218a05,
+ 0x297c89,
+ 0x2f1d07,
+ 0x382048,
+ 0x2db2c6,
+ 0x294ac9,
+ 0x3a6246,
+ 0x266f45,
+ 0x29c1c6,
+ 0x2a8e86,
+ 0x2c2909,
+ 0x306206,
+ 0x279247,
+ 0x33cf05,
+ 0x205703,
+ 0x257205,
+ 0x296007,
+ 0x323446,
+ 0x358949,
+ 0x30b146,
+ 0x27cc06,
+ 0x365389,
+ 0x27c3c9,
+ 0x29ca07,
+ 0x369fc8,
+ 0x39ee89,
+ 0x27a108,
+ 0x31f686,
+ 0x2cc9c5,
+ 0x30a44a,
+ 0x27cc86,
+ 0x330bc6,
+ 0x2a3145,
+ 0x24d588,
+ 0x206847,
+ 0x2318ca,
+ 0x247786,
+ 0x243005,
+ 0x2a0e06,
+ 0x265b47,
+ 0x3aebc7,
+ 0x2bacc5,
+ 0x267105,
+ 0x2acf46,
+ 0x383446,
+ 0x2ad886,
+ 0x328cc4,
+ 0x27b489,
+ 0x286146,
+ 0x2a5a0a,
+ 0x214048,
+ 0x32b888,
+ 0x3605ca,
+ 0x202145,
+ 0x2982c5,
+ 0x323c48,
+ 0x2c9188,
+ 0x320d47,
+ 0x265146,
+ 0x315308,
+ 0x202b87,
+ 0x279788,
+ 0x35f146,
+ 0x27dd08,
+ 0x2b3b86,
+ 0x2370c7,
+ 0x295506,
+ 0x2d3d46,
+ 0x23628a,
+ 0x392986,
+ 0x2cc9c9,
+ 0x2b0486,
+ 0x2d238a,
+ 0x2f6289,
+ 0x2f0306,
+ 0x37c504,
+ 0x20a8cd,
+ 0x285507,
+ 0x317906,
+ 0x2b8745,
+ 0x3a62c5,
+ 0x305546,
+ 0x26d9c9,
+ 0x3ad5c7,
+ 0x275cc6,
+ 0x2cd946,
+ 0x284489,
+ 0x212a44,
+ 0x228dc4,
+ 0x204308,
+ 0x2387c6,
+ 0x26d548,
+ 0x2d6b88,
+ 0x203ac7,
+ 0x200849,
+ 0x2ada87,
+ 0x2b004a,
+ 0x22decf,
+ 0x2377ca,
+ 0x227e85,
+ 0x274e05,
+ 0x216005,
+ 0x334507,
+ 0x277283,
+ 0x36a1c8,
+ 0x334d86,
+ 0x334e89,
+ 0x2c6a06,
+ 0x2c2747,
+ 0x294889,
+ 0x381f48,
+ 0x2a3207,
+ 0x2fee83,
+ 0x338885,
+ 0x3b2005,
+ 0x328b0b,
+ 0x216d44,
+ 0x2c5044,
+ 0x273486,
+ 0x2ff447,
+ 0x39794a,
+ 0x245807,
+ 0x3b0407,
+ 0x2786c5,
+ 0x205285,
+ 0x2196c9,
+ 0x2d3d46,
+ 0x24568d,
+ 0x358045,
+ 0x2a2d43,
+ 0x205d03,
+ 0x349205,
+ 0x350005,
+ 0x29f988,
+ 0x276707,
+ 0x228b46,
+ 0x29a646,
+ 0x22d905,
+ 0x234687,
+ 0x2035c7,
+ 0x36ec47,
+ 0x2c948a,
+ 0x268508,
+ 0x328cc4,
+ 0x2ade47,
+ 0x277cc7,
+ 0x32d086,
+ 0x264607,
+ 0x2b2a08,
+ 0x226708,
+ 0x26b786,
+ 0x367f08,
+ 0x2c32c4,
+ 0x2fb0c6,
+ 0x3a9146,
+ 0x2c0a86,
+ 0x349c06,
+ 0x29abc4,
+ 0x3626c6,
+ 0x2b76c6,
+ 0x293606,
+ 0x2293c6,
+ 0x205bc6,
+ 0x2b2846,
+ 0x228a48,
+ 0x39de08,
+ 0x2c9cc8,
+ 0x259348,
+ 0x323bc6,
+ 0x210785,
+ 0x275386,
+ 0x2abec5,
+ 0x388807,
+ 0x28ae45,
+ 0x213d43,
+ 0x364605,
+ 0x22fd84,
+ 0x205d05,
+ 0x210143,
+ 0x39a7c7,
+ 0x31c448,
+ 0x2c7f86,
+ 0x2c514d,
+ 0x274dc6,
+ 0x292b85,
+ 0x2afd43,
+ 0x2b5789,
+ 0x212bc6,
+ 0x231246,
+ 0x29c2c4,
+ 0x237747,
+ 0x235b06,
+ 0x243245,
+ 0x216ec3,
+ 0x378a44,
+ 0x277e86,
+ 0x2b15c4,
+ 0x30d748,
+ 0x324a89,
+ 0x2f2209,
+ 0x29c0ca,
+ 0x23f88d,
+ 0x29da47,
+ 0x330a46,
+ 0x20ec44,
+ 0x27b109,
+ 0x283588,
+ 0x285106,
+ 0x263bc6,
+ 0x264607,
+ 0x2c3c06,
+ 0x21b606,
+ 0x38c346,
+ 0x333a8a,
+ 0x218948,
+ 0x22bc45,
+ 0x27d649,
+ 0x279c8a,
+ 0x2c54c8,
+ 0x2979c8,
+ 0x292108,
+ 0x2a864c,
+ 0x2dc7c5,
+ 0x29a8c8,
+ 0x39e106,
+ 0x2d1d06,
+ 0x37af07,
+ 0x245705,
+ 0x27cb45,
+ 0x2f20c9,
+ 0x212747,
+ 0x2b2ec5,
+ 0x21e9c7,
+ 0x205d03,
+ 0x2bd705,
+ 0x366548,
+ 0x2d1687,
+ 0x297889,
+ 0x2d7985,
+ 0x2f4504,
+ 0x2a1788,
+ 0x2cf787,
+ 0x2a33c8,
+ 0x2740c8,
+ 0x32c005,
+ 0x334c86,
+ 0x257706,
+ 0x2e7649,
+ 0x315b87,
+ 0x2ac986,
+ 0x30e947,
+ 0x217d43,
+ 0x24b084,
+ 0x298c45,
+ 0x2ae0c4,
+ 0x236844,
+ 0x27adc7,
+ 0x3affc7,
+ 0x239a04,
+ 0x2976d0,
+ 0x3056c7,
+ 0x205285,
+ 0x22ae8c,
+ 0x2018c4,
+ 0x2bee08,
+ 0x236fc9,
+ 0x2ffb86,
+ 0x2a03c8,
+ 0x25a7c4,
+ 0x25a7c8,
+ 0x231ec6,
+ 0x229248,
+ 0x298946,
+ 0x2c828b,
+ 0x205705,
+ 0x2c3248,
+ 0x21a3c4,
+ 0x27c04a,
+ 0x297889,
+ 0x2e0d06,
+ 0x2160c8,
+ 0x258645,
+ 0x301944,
+ 0x2bed06,
+ 0x36eb08,
+ 0x27ab48,
+ 0x345d06,
+ 0x31d6c4,
+ 0x30a3c6,
+ 0x2adb07,
+ 0x2745c7,
+ 0x26460f,
+ 0x2074c7,
+ 0x2f03c7,
+ 0x2d1bc5,
+ 0x2ed845,
+ 0x29c6c9,
+ 0x28ae86,
+ 0x278fc5,
+ 0x27c6c7,
+ 0x37b188,
+ 0x293705,
+ 0x295506,
+ 0x213e88,
+ 0x29e2ca,
+ 0x282988,
+ 0x287947,
+ 0x22e306,
+ 0x27d606,
+ 0x21f283,
+ 0x2042c3,
+ 0x279e49,
+ 0x39ed09,
+ 0x2bec06,
+ 0x2d7985,
+ 0x2a84c8,
+ 0x2160c8,
+ 0x387808,
+ 0x38c3cb,
+ 0x2c5387,
+ 0x2fd189,
+ 0x264888,
+ 0x33c7c4,
+ 0x2c2a08,
+ 0x2895c9,
+ 0x2acc85,
+ 0x334407,
+ 0x24b105,
+ 0x27aa48,
+ 0x28c3cb,
+ 0x291910,
+ 0x2a8105,
+ 0x21a30c,
+ 0x228d05,
+ 0x2032c3,
+ 0x2a2c06,
+ 0x2b6e04,
+ 0x231606,
+ 0x298387,
+ 0x213f04,
+ 0x2415c8,
+ 0x36a08d,
+ 0x2d9685,
+ 0x23fd84,
+ 0x219904,
+ 0x27d0c9,
+ 0x297408,
+ 0x30afc7,
+ 0x231f48,
+ 0x27b548,
+ 0x275fc5,
+ 0x331547,
+ 0x275f47,
+ 0x20af07,
+ 0x267109,
+ 0x235989,
+ 0x23f346,
+ 0x2b39c6,
+ 0x264846,
+ 0x25b8c5,
+ 0x3af344,
+ 0x204506,
+ 0x204a46,
+ 0x276008,
+ 0x26580b,
+ 0x2630c7,
+ 0x20ec44,
+ 0x317d86,
+ 0x203107,
+ 0x348b45,
+ 0x318f05,
+ 0x201e84,
+ 0x235906,
+ 0x204588,
+ 0x27b109,
+ 0x257c86,
+ 0x282f08,
+ 0x243306,
+ 0x33ce48,
+ 0x2d8a8c,
+ 0x275e86,
+ 0x29284d,
+ 0x292ccb,
+ 0x279305,
+ 0x203707,
+ 0x306306,
+ 0x3aea88,
+ 0x23f3c9,
+ 0x2e7288,
+ 0x205285,
+ 0x2ecc07,
+ 0x27a208,
+ 0x384789,
+ 0x2a05c6,
+ 0x33bfca,
+ 0x3ae808,
+ 0x2e70cb,
+ 0x2c608c,
+ 0x25a8c8,
+ 0x277506,
+ 0x334708,
+ 0x29df47,
+ 0x2cfa09,
+ 0x28ba8d,
+ 0x2961c6,
+ 0x3017c8,
+ 0x39dcc9,
+ 0x2b6188,
+ 0x27de08,
+ 0x2b7f8c,
+ 0x2b9347,
+ 0x2b9f07,
+ 0x266f45,
+ 0x3a4d47,
+ 0x37b048,
+ 0x2bed86,
+ 0x257b0c,
+ 0x2e4988,
+ 0x2c44c8,
+ 0x24b5c6,
+ 0x3b1d87,
+ 0x23f544,
+ 0x259348,
+ 0x356e4c,
+ 0x3a1a0c,
+ 0x227f05,
+ 0x393d47,
+ 0x31d646,
+ 0x3b1d06,
+ 0x297e48,
+ 0x38c284,
+ 0x225d4b,
+ 0x22844b,
+ 0x22e306,
+ 0x369f07,
+ 0x307d45,
+ 0x26ca85,
+ 0x225e86,
+ 0x258605,
+ 0x216d05,
+ 0x3accc7,
+ 0x273a89,
+ 0x233504,
+ 0x2722c5,
+ 0x2d7645,
+ 0x254448,
+ 0x22b4c5,
+ 0x2a7809,
+ 0x2af2c7,
+ 0x2af2cb,
+ 0x2d1046,
+ 0x228789,
+ 0x2804c8,
+ 0x271c05,
+ 0x20b008,
+ 0x2359c8,
+ 0x207ec7,
+ 0x27d4c7,
+ 0x27ae49,
+ 0x229187,
+ 0x32d3c9,
+ 0x2aaf4c,
+ 0x312a08,
+ 0x2b9b49,
+ 0x2be7c7,
+ 0x27b609,
+ 0x3b0107,
+ 0x2c6188,
+ 0x3afac5,
+ 0x2fb046,
+ 0x2b8788,
+ 0x2f8b88,
+ 0x279b49,
+ 0x216d47,
+ 0x26cb45,
+ 0x20e3c9,
+ 0x2c4086,
+ 0x28b884,
+ 0x2e6f46,
+ 0x233908,
+ 0x2426c7,
+ 0x265a08,
+ 0x367fc9,
+ 0x261a47,
+ 0x299886,
+ 0x2037c4,
+ 0x364689,
+ 0x3313c8,
+ 0x24b487,
+ 0x306e46,
+ 0x3b20c6,
+ 0x330b44,
+ 0x27f886,
+ 0x205c83,
+ 0x308149,
+ 0x2056c6,
+ 0x2a61c5,
+ 0x29a646,
+ 0x2a3505,
+ 0x27a688,
+ 0x25a607,
+ 0x362446,
+ 0x355c86,
+ 0x32b888,
+ 0x29c847,
+ 0x296205,
+ 0x29ab48,
+ 0x39ea48,
+ 0x3ae808,
+ 0x228bc5,
+ 0x2fb0c6,
+ 0x2f1fc9,
+ 0x257584,
+ 0x3760cb,
+ 0x21b30b,
+ 0x22bb49,
+ 0x205d03,
+ 0x256385,
+ 0x205986,
+ 0x229908,
+ 0x22de44,
+ 0x2c7f86,
+ 0x2c95c9,
+ 0x2c5b05,
+ 0x3acc06,
+ 0x2cf786,
+ 0x2160c4,
+ 0x2a1b4a,
+ 0x2a6108,
+ 0x2f8b86,
+ 0x368a05,
+ 0x204887,
+ 0x301547,
+ 0x334c84,
+ 0x21b547,
+ 0x2b0044,
+ 0x2c0a06,
+ 0x202e03,
+ 0x267105,
+ 0x373445,
+ 0x207708,
+ 0x2ae005,
+ 0x275bc9,
+ 0x259187,
+ 0x25918b,
+ 0x2a2d8c,
+ 0x2a3a0a,
+ 0x30bc07,
+ 0x200a83,
+ 0x2d3948,
+ 0x228d85,
+ 0x293785,
+ 0x338944,
+ 0x2c6086,
+ 0x236fc6,
+ 0x27f8c7,
+ 0x3656cb,
+ 0x29abc4,
+ 0x3821c4,
+ 0x26b904,
+ 0x2c25c6,
+ 0x213f04,
+ 0x2faec8,
+ 0x338745,
+ 0x23fec5,
+ 0x387747,
+ 0x203809,
+ 0x350005,
+ 0x375a4a,
+ 0x37b2c9,
+ 0x290f8a,
+ 0x333bc9,
+ 0x353144,
+ 0x2cda05,
+ 0x2c3d08,
+ 0x37fdcb,
+ 0x2f9685,
+ 0x38d4c6,
+ 0x2159c4,
+ 0x276106,
+ 0x2618c9,
+ 0x317e47,
+ 0x30b308,
+ 0x23fc06,
+ 0x2ada87,
+ 0x27ab48,
+ 0x38f586,
+ 0x280204,
+ 0x35eb87,
+ 0x34e905,
+ 0x360c07,
+ 0x204604,
+ 0x306286,
+ 0x218bc8,
+ 0x292e88,
+ 0x3a4ac7,
+ 0x217d88,
+ 0x2b3c45,
+ 0x205b44,
+ 0x3604c8,
+ 0x217e84,
+ 0x207ec5,
+ 0x2ed984,
+ 0x202c87,
+ 0x286207,
+ 0x27b748,
+ 0x2a3546,
+ 0x2adf85,
+ 0x2759c8,
+ 0x282b88,
+ 0x29c009,
+ 0x21b606,
+ 0x231948,
+ 0x27beca,
+ 0x348bc8,
+ 0x2d8045,
+ 0x275586,
+ 0x26d888,
+ 0x2eccca,
+ 0x341107,
+ 0x283985,
+ 0x28ef48,
+ 0x2b1184,
+ 0x24d606,
+ 0x2ba688,
+ 0x205bc6,
+ 0x380dc8,
+ 0x2573c7,
+ 0x3b3e86,
+ 0x37c504,
+ 0x29ce07,
+ 0x2fac04,
+ 0x261887,
+ 0x23108d,
+ 0x22bbc5,
+ 0x2d148b,
+ 0x298a46,
+ 0x24cb48,
+ 0x241584,
+ 0x272086,
+ 0x277e86,
+ 0x334a47,
+ 0x29250d,
+ 0x25fd07,
+ 0x300248,
+ 0x29fb05,
+ 0x284008,
+ 0x2bd146,
+ 0x2b3cc8,
+ 0x20e886,
+ 0x367707,
+ 0x368189,
+ 0x33f9c7,
+ 0x2853c8,
+ 0x26f705,
+ 0x21ed88,
+ 0x3b1c45,
+ 0x23b2c5,
+ 0x333e45,
+ 0x226743,
+ 0x27ca44,
+ 0x27d645,
+ 0x347b09,
+ 0x31b646,
+ 0x2b2b08,
+ 0x2ecec5,
+ 0x312447,
+ 0x249dca,
+ 0x3acb49,
+ 0x2a8d8a,
+ 0x2c9d48,
+ 0x21e80c,
+ 0x27c74d,
+ 0x2f86c3,
+ 0x380cc8,
+ 0x378a05,
+ 0x29e086,
+ 0x381dc6,
+ 0x2e3985,
+ 0x30ea49,
+ 0x310045,
+ 0x2759c8,
+ 0x279146,
+ 0x33f4c6,
+ 0x2a1649,
+ 0x38ed87,
+ 0x28c686,
+ 0x249d48,
+ 0x2c0988,
+ 0x2d0047,
+ 0x2293ce,
+ 0x2bd385,
+ 0x384685,
+ 0x205ac8,
+ 0x322d07,
+ 0x214782,
+ 0x2b7b04,
+ 0x23150a,
+ 0x24b548,
+ 0x203206,
+ 0x2949c8,
+ 0x257706,
+ 0x335988,
+ 0x2ac988,
+ 0x23b284,
+ 0x328945,
+ 0x683c04,
+ 0x683c04,
+ 0x683c04,
+ 0x203983,
+ 0x3b1f46,
+ 0x275e86,
+ 0x29924c,
+ 0x205b03,
+ 0x279c86,
+ 0x213f84,
+ 0x212b48,
+ 0x2c9405,
+ 0x231606,
+ 0x2b5ec8,
+ 0x2cb0c6,
+ 0x3623c6,
+ 0x29f788,
+ 0x298cc7,
+ 0x228f49,
+ 0x2e96ca,
+ 0x20abc4,
+ 0x28ae45,
+ 0x2a9fc5,
+ 0x2128c6,
+ 0x29da86,
+ 0x299c86,
+ 0x2ec386,
+ 0x229084,
+ 0x22908b,
+ 0x233904,
+ 0x204905,
+ 0x2ab5c5,
+ 0x203b86,
+ 0x359288,
+ 0x27c607,
+ 0x30b0c4,
+ 0x259cc3,
+ 0x2b0c85,
+ 0x2e6e07,
+ 0x2a4449,
+ 0x27c50b,
+ 0x27f8c7,
+ 0x207607,
+ 0x2b5dc8,
+ 0x312587,
+ 0x2a4686,
+ 0x242e88,
+ 0x299e8b,
+ 0x327086,
+ 0x213a89,
+ 0x29a005,
+ 0x2fee83,
+ 0x3acc06,
+ 0x2572c8,
+ 0x20e943,
+ 0x2e6f03,
+ 0x27ab46,
+ 0x257706,
+ 0x38ac8a,
+ 0x277545,
+ 0x277ccb,
+ 0x29a58b,
+ 0x240a03,
+ 0x20f943,
+ 0x2affc4,
+ 0x367b47,
+ 0x257344,
+ 0x2039c4,
+ 0x39df84,
+ 0x348ec8,
+ 0x368948,
+ 0x30e389,
+ 0x2c0fc8,
+ 0x3065c7,
+ 0x2293c6,
+ 0x2b274f,
+ 0x2bd4c6,
+ 0x2c9384,
+ 0x36878a,
+ 0x2e6d07,
+ 0x3a37c6,
+ 0x28b8c9,
+ 0x30e305,
+ 0x207845,
+ 0x30e446,
+ 0x21eec3,
+ 0x2b11c9,
+ 0x218ac6,
+ 0x367d89,
+ 0x397946,
+ 0x267105,
+ 0x228305,
+ 0x2074c3,
+ 0x367c88,
+ 0x2df587,
+ 0x334d84,
+ 0x2129c8,
+ 0x2d3ac4,
+ 0x2d4646,
+ 0x2a2c06,
+ 0x23e7c6,
+ 0x2c3109,
+ 0x293705,
+ 0x2d3d46,
+ 0x264ac9,
+ 0x3ac846,
+ 0x2b2846,
+ 0x387c46,
+ 0x2119c5,
+ 0x2ed986,
+ 0x367704,
+ 0x3afac5,
+ 0x2b8784,
+ 0x309246,
+ 0x358004,
+ 0x202c83,
+ 0x283645,
+ 0x2356c8,
+ 0x21e007,
+ 0x2b4549,
+ 0x283888,
+ 0x294191,
+ 0x2cf80a,
+ 0x22e247,
+ 0x2ee8c6,
+ 0x213f84,
+ 0x2b8888,
+ 0x239748,
+ 0x29434a,
+ 0x2a75cd,
+ 0x29c1c6,
+ 0x29f886,
+ 0x29cec6,
+ 0x2bab47,
+ 0x300305,
+ 0x250ec7,
+ 0x212a85,
+ 0x2af404,
+ 0x2a7006,
+ 0x27f707,
+ 0x2b0ecd,
+ 0x26d7c7,
+ 0x26bbc8,
+ 0x275cc9,
+ 0x275486,
+ 0x2a0545,
+ 0x210184,
+ 0x233a06,
+ 0x334b86,
+ 0x24b6c6,
+ 0x297088,
+ 0x211883,
+ 0x203b43,
+ 0x323585,
+ 0x3112c6,
+ 0x2ac945,
+ 0x23fe08,
+ 0x29854a,
+ 0x2f5cc4,
+ 0x212b48,
+ 0x292108,
+ 0x2039c7,
+ 0x2ecf89,
+ 0x2b5ac8,
+ 0x27b187,
+ 0x264fc6,
+ 0x205bca,
+ 0x233a88,
+ 0x2c5ec9,
+ 0x2974c8,
+ 0x21adc9,
+ 0x2e7387,
+ 0x2d9005,
+ 0x226986,
+ 0x2bec08,
+ 0x24ccc8,
+ 0x30bec8,
+ 0x22e408,
+ 0x204905,
+ 0x200884,
+ 0x2df288,
+ 0x20bdc4,
+ 0x3339c4,
+ 0x267105,
+ 0x28d947,
+ 0x2035c9,
+ 0x334847,
+ 0x231985,
+ 0x273686,
+ 0x346d46,
+ 0x213bc4,
+ 0x2a1986,
+ 0x2addc4,
+ 0x283f06,
+ 0x3b0586,
+ 0x2150c6,
+ 0x205285,
+ 0x23fcc7,
+ 0x200a83,
+ 0x3334c9,
+ 0x32b688,
+ 0x2129c4,
+ 0x27b00d,
+ 0x292f88,
+ 0x2f0848,
+ 0x2c5e46,
+ 0x368289,
+ 0x3acb49,
+ 0x2615c5,
+ 0x29864a,
+ 0x2863ca,
+ 0x28b24c,
+ 0x28b3c6,
+ 0x274446,
+ 0x2bd646,
+ 0x269509,
+ 0x29e2c6,
+ 0x250f06,
+ 0x310106,
+ 0x259348,
+ 0x217d86,
+ 0x2c344b,
+ 0x28dac5,
+ 0x23fec5,
+ 0x2746c5,
+ 0x202606,
+ 0x205b83,
+ 0x23e746,
+ 0x26d747,
+ 0x2b8745,
+ 0x379c85,
+ 0x3a62c5,
+ 0x2eb2c6,
+ 0x261684,
+ 0x311e06,
+ 0x28f789,
+ 0x20248c,
+ 0x2af148,
+ 0x28f8c4,
+ 0x2ed746,
+ 0x298b46,
+ 0x2572c8,
+ 0x2160c8,
+ 0x202389,
+ 0x204887,
+ 0x238509,
+ 0x24c346,
+ 0x22f904,
+ 0x20edc4,
+ 0x27a944,
+ 0x27ab48,
+ 0x20340a,
+ 0x34ff86,
+ 0x353d47,
+ 0x2c7687,
+ 0x228885,
+ 0x2a9f84,
+ 0x289586,
+ 0x300346,
+ 0x235bc3,
+ 0x32b4c7,
+ 0x273fc8,
+ 0x26170a,
+ 0x30fa88,
+ 0x29ddc8,
+ 0x358045,
+ 0x279405,
+ 0x2631c5,
+ 0x228c46,
+ 0x229d06,
+ 0x3aff05,
+ 0x308389,
+ 0x2a9d8c,
+ 0x263287,
+ 0x2943c8,
+ 0x258945,
+ 0x683c04,
+ 0x2e3d84,
+ 0x2d17c4,
+ 0x214b06,
+ 0x29b10e,
+ 0x2078c7,
+ 0x2bad45,
+ 0x25750c,
+ 0x2c0847,
+ 0x27f687,
+ 0x2806c9,
+ 0x218189,
+ 0x283985,
+ 0x32b688,
+ 0x2f1fc9,
+ 0x2f3d05,
+ 0x2b8688,
+ 0x2c2c06,
+ 0x360746,
+ 0x2f6284,
+ 0x33c1c8,
+ 0x248283,
+ 0x3630c4,
+ 0x2b0d05,
+ 0x305547,
+ 0x201ec5,
+ 0x27bd89,
+ 0x38040d,
+ 0x2a1f86,
+ 0x2e9644,
+ 0x2650c8,
+ 0x2738ca,
+ 0x21fe87,
+ 0x23a245,
+ 0x203c43,
+ 0x29a74e,
+ 0x25770c,
+ 0x2f99c7,
+ 0x29b2c7,
+ 0x204643,
+ 0x29e305,
+ 0x2d17c5,
+ 0x294d88,
+ 0x291f49,
+ 0x36e986,
+ 0x257344,
+ 0x22e186,
+ 0x32ffcb,
+ 0x3a694c,
+ 0x35dc47,
+ 0x2c90c5,
+ 0x39e948,
+ 0x2cfe05,
+ 0x368787,
+ 0x33b7c7,
+ 0x248285,
+ 0x205b83,
+ 0x371284,
+ 0x2041c5,
+ 0x383505,
+ 0x383506,
+ 0x28e848,
+ 0x27f707,
+ 0x3820c6,
+ 0x200a06,
+ 0x333d86,
+ 0x265689,
+ 0x331647,
+ 0x378186,
+ 0x3a6ac6,
+ 0x248346,
+ 0x2a8405,
+ 0x399a86,
+ 0x398f45,
+ 0x22b548,
+ 0x29154b,
+ 0x289386,
+ 0x2c76c4,
+ 0x2eca89,
+ 0x259184,
+ 0x2c2b88,
+ 0x2aab47,
+ 0x27dd04,
+ 0x2b4e88,
+ 0x2b9904,
+ 0x2a8444,
+ 0x3a26c5,
+ 0x2d96c6,
+ 0x348e07,
+ 0x23fd43,
+ 0x299945,
+ 0x316144,
+ 0x3846c6,
+ 0x261648,
+ 0x323ac5,
+ 0x28d3c9,
+ 0x20e5c5,
+ 0x2d6288,
+ 0x34a5c7,
+ 0x388948,
+ 0x2b4387,
+ 0x2f0489,
+ 0x362546,
+ 0x336186,
+ 0x310104,
+ 0x264f05,
+ 0x2f490c,
+ 0x2746c7,
+ 0x274cc7,
+ 0x2c7548,
+ 0x2a1f86,
+ 0x26d684,
+ 0x31b184,
+ 0x27acc9,
+ 0x2bd746,
+ 0x219747,
+ 0x349b84,
+ 0x31b746,
+ 0x27f285,
+ 0x2a3087,
+ 0x2c33c6,
+ 0x33be89,
+ 0x28b087,
+ 0x264607,
+ 0x2a14c6,
+ 0x23f785,
+ 0x278e48,
+ 0x218948,
+ 0x23acc6,
+ 0x323b05,
+ 0x251a46,
+ 0x206583,
+ 0x294c09,
+ 0x299a0e,
+ 0x2b3188,
+ 0x2d3bc8,
+ 0x23aacb,
+ 0x28d606,
+ 0x209c84,
+ 0x27c344,
+ 0x299b0a,
+ 0x21a207,
+ 0x378245,
+ 0x213a89,
+ 0x2b7785,
+ 0x333a07,
+ 0x2ff984,
+ 0x324c07,
+ 0x2d6a88,
+ 0x2ce546,
+ 0x34a889,
+ 0x2b5bca,
+ 0x21a186,
+ 0x292ac6,
+ 0x2ab545,
+ 0x37e405,
+ 0x3261c7,
+ 0x244208,
+ 0x27f1c8,
+ 0x23b286,
+ 0x228385,
+ 0x29d80e,
+ 0x328cc4,
+ 0x23ac45,
+ 0x273009,
+ 0x28ac88,
+ 0x287886,
+ 0x296d0c,
+ 0x298150,
+ 0x29ad4f,
+ 0x29c5c8,
+ 0x30bc07,
+ 0x205285,
+ 0x27d645,
+ 0x348c89,
+ 0x28f149,
+ 0x30a4c6,
+ 0x2f9707,
+ 0x393cc5,
+ 0x320d49,
+ 0x32d106,
+ 0x29e10d,
+ 0x27a809,
+ 0x2039c4,
+ 0x2b2f08,
+ 0x2df349,
+ 0x350146,
+ 0x273785,
+ 0x336186,
+ 0x30b1c9,
+ 0x38e148,
+ 0x210785,
+ 0x27bfc4,
+ 0x296ecb,
+ 0x350005,
+ 0x226786,
+ 0x27ca86,
+ 0x25f1c6,
+ 0x38c5cb,
+ 0x28d4c9,
+ 0x3b0245,
+ 0x388707,
+ 0x2cf786,
+ 0x231346,
+ 0x27bc48,
+ 0x2d97c9,
+ 0x26b98c,
+ 0x2e6c08,
+ 0x350246,
+ 0x345d03,
+ 0x334606,
+ 0x27d305,
+ 0x278008,
+ 0x227d86,
+ 0x2a32c8,
+ 0x245885,
+ 0x294505,
+ 0x2a1d48,
+ 0x301687,
+ 0x381d07,
+ 0x27f8c7,
+ 0x2a03c8,
+ 0x30bd48,
+ 0x262286,
+ 0x309087,
+ 0x24af47,
+ 0x27d1ca,
+ 0x24c243,
+ 0x202606,
+ 0x203545,
+ 0x231504,
+ 0x275cc9,
+ 0x2f0404,
+ 0x21e084,
+ 0x2989c4,
+ 0x29b2cb,
+ 0x2df4c7,
+ 0x29da45,
+ 0x2913c8,
+ 0x273686,
+ 0x273688,
+ 0x277486,
+ 0x287d45,
+ 0x288685,
+ 0x28a0c6,
+ 0x28b548,
+ 0x28b808,
+ 0x275e86,
+ 0x29120f,
+ 0x2946d0,
+ 0x358a45,
+ 0x200a83,
+ 0x24a985,
+ 0x2fd0c8,
+ 0x28f049,
+ 0x3ae808,
+ 0x34a708,
+ 0x330608,
+ 0x2df587,
+ 0x273349,
+ 0x2a34c8,
+ 0x2785c4,
+ 0x298848,
+ 0x254509,
+ 0x30aac7,
+ 0x296144,
+ 0x334908,
+ 0x23fa8a,
+ 0x2c2446,
+ 0x29c1c6,
+ 0x21b4c9,
+ 0x298387,
+ 0x2c2f88,
+ 0x332348,
+ 0x349a08,
+ 0x353885,
+ 0x37f385,
+ 0x23fec5,
+ 0x2d1785,
+ 0x371dc7,
+ 0x205b85,
+ 0x2b8745,
+ 0x36fd86,
+ 0x3ae747,
+ 0x37fd07,
+ 0x23fd86,
+ 0x2ca285,
+ 0x226786,
+ 0x25a685,
+ 0x2c06c8,
+ 0x31b5c4,
+ 0x3ac8c6,
+ 0x358844,
+ 0x301948,
+ 0x22534a,
+ 0x27670c,
+ 0x3658c5,
+ 0x2bac06,
+ 0x26bb46,
+ 0x323946,
+ 0x2fd2c4,
+ 0x27f545,
+ 0x2772c7,
+ 0x298409,
+ 0x2a4547,
+ 0x683c04,
+ 0x683c04,
+ 0x30af45,
+ 0x20f5c4,
+ 0x2966ca,
+ 0x273506,
+ 0x2e7044,
+ 0x3a3745,
+ 0x2eee85,
+ 0x300244,
+ 0x27c6c7,
+ 0x20e547,
+ 0x2c25c8,
+ 0x319188,
+ 0x210789,
+ 0x2994c8,
+ 0x29688b,
+ 0x2128c4,
+ 0x35d745,
+ 0x279045,
+ 0x27f849,
+ 0x2d97c9,
+ 0x2ec988,
+ 0x327ac8,
+ 0x203b84,
+ 0x298b85,
+ 0x203443,
+ 0x212885,
+ 0x2d3dc6,
+ 0x291d8c,
+ 0x2189c6,
+ 0x25a6c6,
+ 0x287b05,
+ 0x2eb348,
+ 0x3a6bc6,
+ 0x2eea46,
+ 0x29c1c6,
+ 0x21f40c,
+ 0x24b884,
+ 0x333eca,
+ 0x287a48,
+ 0x291bc7,
+ 0x316046,
+ 0x36ea47,
+ 0x2e12c5,
+ 0x306e46,
+ 0x352386,
+ 0x381bc7,
+ 0x21e0c4,
+ 0x202d85,
+ 0x273004,
+ 0x2af487,
+ 0x273248,
+ 0x2742ca,
+ 0x27a087,
+ 0x23ae47,
+ 0x30bb87,
+ 0x2cff49,
+ 0x291d8a,
+ 0x229043,
+ 0x21dfc5,
+ 0x215103,
+ 0x39dfc9,
+ 0x24b308,
+ 0x2d1bc7,
+ 0x3ae909,
+ 0x218a46,
+ 0x2c6b08,
+ 0x39a745,
+ 0x282c8a,
+ 0x216249,
+ 0x26b649,
+ 0x37af07,
+ 0x239849,
+ 0x214fc8,
+ 0x2edb06,
+ 0x2badc8,
+ 0x2119c7,
+ 0x229187,
+ 0x37b2c7,
+ 0x2d1a48,
+ 0x2ed5c6,
+ 0x23f845,
+ 0x2772c7,
+ 0x2925c8,
+ 0x3587c4,
+ 0x2a58c4,
+ 0x28c587,
+ 0x2acd07,
+ 0x2f1e4a,
+ 0x2eda86,
+ 0x2f984a,
+ 0x2b7a47,
+ 0x328a87,
+ 0x23b384,
+ 0x32d484,
+ 0x2272c6,
+ 0x30ed84,
+ 0x30ed8c,
+ 0x3a2005,
+ 0x215f09,
+ 0x2d6404,
+ 0x300305,
+ 0x273848,
+ 0x28b8c5,
+ 0x305546,
+ 0x207c84,
+ 0x29044a,
+ 0x2b14c6,
+ 0x29228a,
+ 0x20ab87,
+ 0x265b45,
+ 0x21eec5,
+ 0x2288ca,
+ 0x2a1a85,
+ 0x29c0c6,
+ 0x20bdc4,
+ 0x2b0146,
+ 0x326285,
+ 0x227e46,
+ 0x3a4acc,
+ 0x2cba4a,
+ 0x264fc4,
+ 0x2293c6,
+ 0x298387,
+ 0x2c8744,
+ 0x259348,
+ 0x38d3c6,
+ 0x29d689,
+ 0x2c4b89,
+ 0x312b09,
+ 0x376286,
+ 0x211ac6,
+ 0x2baf07,
+ 0x3082c8,
+ 0x2118c9,
+ 0x2df4c7,
+ 0x2b3ac6,
+ 0x2adb07,
+ 0x29cd85,
+ 0x328cc4,
+ 0x2baac7,
+ 0x24b105,
+ 0x2846c5,
+ 0x2fe0c7,
+ 0x248148,
+ 0x39e8c6,
+ 0x29344d,
+ 0x294f8f,
+ 0x29a58d,
+ 0x21b3c4,
+ 0x2357c6,
+ 0x2cbe08,
+ 0x3100c5,
+ 0x27d388,
+ 0x207d8a,
+ 0x2039c4,
+ 0x330206,
+ 0x27e487,
+ 0x33fe07,
+ 0x298d89,
+ 0x2bad85,
+ 0x300244,
+ 0x32888a,
+ 0x2b5689,
+ 0x239947,
+ 0x268206,
+ 0x350146,
+ 0x298ac6,
+ 0x35ec46,
+ 0x2cb70f,
+ 0x2cbcc9,
+ 0x217d86,
+ 0x239646,
+ 0x29ed49,
+ 0x309187,
+ 0x2101c3,
+ 0x21f586,
+ 0x2042c3,
+ 0x2e3848,
+ 0x2ad947,
+ 0x29c7c9,
+ 0x2a2a88,
+ 0x381e48,
+ 0x216e86,
+ 0x331209,
+ 0x33b905,
+ 0x2a33c4,
+ 0x2d90c7,
+ 0x269585,
+ 0x21b3c4,
+ 0x29db08,
+ 0x21a4c4,
+ 0x302b87,
+ 0x31c3c6,
+ 0x2ad005,
+ 0x2974c8,
+ 0x35000b,
+ 0x32bb87,
+ 0x228b46,
+ 0x2bd544,
+ 0x209c06,
+ 0x267105,
+ 0x24b105,
+ 0x278bc9,
+ 0x27c2c9,
+ 0x2291c4,
+ 0x229205,
+ 0x229405,
+ 0x282b06,
+ 0x32b788,
+ 0x2b7186,
+ 0x273e0b,
+ 0x2ffa0a,
+ 0x2fad05,
+ 0x288706,
+ 0x2f59c5,
+ 0x3b2585,
+ 0x297b47,
+ 0x204308,
+ 0x238504,
+ 0x2614c6,
+ 0x28b886,
+ 0x215187,
+ 0x2fee44,
+ 0x277e86,
+ 0x239d85,
+ 0x239d89,
+ 0x211cc4,
+ 0x2aa109,
+ 0x275e86,
+ 0x2b9408,
+ 0x229405,
+ 0x2c7785,
+ 0x227e46,
+ 0x26b889,
+ 0x218189,
+ 0x25a746,
+ 0x28ad88,
+ 0x257608,
+ 0x2f5984,
+ 0x32e244,
+ 0x32e248,
+ 0x317a08,
+ 0x238609,
+ 0x2d3d46,
+ 0x29c1c6,
+ 0x3151cd,
+ 0x2c7f86,
+ 0x2d8949,
+ 0x254785,
+ 0x30e446,
+ 0x251008,
+ 0x311d45,
+ 0x24af84,
+ 0x267105,
+ 0x27b948,
+ 0x296489,
+ 0x2730c4,
+ 0x306286,
+ 0x2e74ca,
+ 0x2c54c8,
+ 0x2f1fc9,
+ 0x2d114a,
+ 0x3ae886,
+ 0x295148,
+ 0x368545,
+ 0x30f908,
+ 0x2b4485,
+ 0x218909,
+ 0x36c449,
+ 0x228e82,
+ 0x29a005,
+ 0x26c7c6,
+ 0x275dc7,
+ 0x3aacc5,
+ 0x2f8a86,
+ 0x2f7e08,
+ 0x2a1f86,
+ 0x2c3bc9,
+ 0x274dc6,
+ 0x27bac8,
+ 0x2a90c5,
+ 0x244046,
+ 0x367808,
+ 0x27ab48,
+ 0x3b0608,
+ 0x2fc788,
+ 0x399a84,
+ 0x22d8c3,
+ 0x2c3e04,
+ 0x22e106,
+ 0x29cdc4,
+ 0x2d3b07,
+ 0x2ee949,
+ 0x2bcd45,
+ 0x332346,
+ 0x21f586,
+ 0x28e68b,
+ 0x2fac46,
+ 0x318546,
+ 0x3ac9c8,
+ 0x379bc6,
+ 0x265943,
+ 0x396f83,
+ 0x328cc4,
+ 0x231845,
+ 0x243147,
+ 0x273248,
+ 0x27324f,
+ 0x2771cb,
+ 0x32b588,
+ 0x306306,
+ 0x32b88e,
+ 0x227e43,
+ 0x2430c4,
+ 0x2fabc5,
+ 0x33db46,
+ 0x28968b,
+ 0x28da06,
+ 0x213f09,
+ 0x2ad005,
+ 0x389d88,
+ 0x206408,
+ 0x21804c,
+ 0x29b306,
+ 0x2128c6,
+ 0x2d7985,
+ 0x285188,
+ 0x276705,
+ 0x33c7c8,
+ 0x29a9ca,
+ 0x226809,
+ 0x683c04,
+ 0x31216582,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x238483,
+ 0x2264c3,
+ 0x224103,
+ 0x224104,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x22d684,
+ 0x21eb03,
+ 0x3aaf87,
+ 0x211003,
+ 0x2025c3,
+ 0x32d208,
+ 0x2264c3,
+ 0x2aeecb,
+ 0x2e1a03,
+ 0x241f86,
+ 0x203e42,
+ 0x38660b,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x2264c3,
+ 0x280ec3,
+ 0x200cc3,
+ 0x200882,
+ 0x880c8,
+ 0x281045,
+ 0x2db108,
+ 0x2e7e08,
+ 0x216582,
+ 0x2a0f05,
+ 0x340ec7,
+ 0x200202,
+ 0x2417c7,
+ 0x201f82,
+ 0x23a887,
+ 0x36b2c9,
+ 0x318908,
+ 0x349889,
+ 0x32ed82,
+ 0x266707,
+ 0x25a4c4,
+ 0x340f87,
+ 0x2ff907,
+ 0x233e42,
+ 0x211003,
+ 0x20e842,
+ 0x205902,
+ 0x201502,
+ 0x206d42,
+ 0x208782,
+ 0x217642,
+ 0x2a8c45,
+ 0x2e3cc5,
+ 0x16582,
+ 0x343c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x12003,
+ 0x481,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x238483,
+ 0x2264c3,
+ 0x21ca03,
+ 0x340f2d86,
+ 0x107003,
+ 0x79ac5,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x9502,
+ 0x880c8,
+ 0x441c4,
+ 0xd0205,
+ 0x200882,
+ 0x2ba384,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x35bb03,
+ 0x2a9c05,
+ 0x202243,
+ 0x332683,
+ 0x238483,
+ 0x201f43,
+ 0x2264c3,
+ 0x217643,
+ 0x224183,
+ 0x223ec3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x216582,
+ 0x2264c3,
+ 0x880c8,
+ 0x21eb03,
+ 0x880c8,
+ 0x316403,
+ 0x22d183,
+ 0x232144,
+ 0x2343c3,
+ 0x21eb03,
+ 0x2082c2,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x2082c2,
+ 0x2348c3,
+ 0x238483,
+ 0x2264c3,
+ 0x2db083,
+ 0x217643,
+ 0x200882,
+ 0x216582,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x241f85,
+ 0x1835c6,
+ 0x224104,
+ 0x203e42,
+ 0x880c8,
+ 0x200882,
+ 0x20448,
+ 0x216582,
+ 0xee46,
+ 0x167404,
+ 0x10f2cb,
+ 0x173606,
+ 0x131ac7,
+ 0x2343c3,
+ 0x21eb03,
+ 0x157f45,
+ 0x155dc4,
+ 0x202c43,
+ 0x4c207,
+ 0xcd884,
+ 0x238483,
+ 0x133184,
+ 0x2264c3,
+ 0x2e26c4,
+ 0x149708,
+ 0x155646,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x2025c3,
+ 0x2264c3,
+ 0x2e1a03,
+ 0x203e42,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201603,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x22d684,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x241f86,
+ 0x2343c3,
+ 0x21eb03,
+ 0x179ac3,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x131ac7,
+ 0x880c8,
+ 0x21eb03,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x3aa2d183,
+ 0x2343c3,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x200882,
+ 0x216582,
+ 0x22d183,
+ 0x21eb03,
+ 0x238483,
+ 0x201502,
+ 0x2264c3,
+ 0x309dc7,
+ 0x20b28b,
+ 0x200b03,
+ 0x2a06c8,
+ 0x308047,
+ 0x2017c6,
+ 0x2bba05,
+ 0x2f7989,
+ 0x20bc48,
+ 0x20bc49,
+ 0x20bc50,
+ 0x359fcb,
+ 0x2ea589,
+ 0x20c783,
+ 0x221749,
+ 0x232c46,
+ 0x232c4c,
+ 0x20be48,
+ 0x3ac688,
+ 0x26e089,
+ 0x29bace,
+ 0x37cc4b,
+ 0x38db4c,
+ 0x204803,
+ 0x2582cc,
+ 0x207209,
+ 0x2de107,
+ 0x23430c,
+ 0x39b60a,
+ 0x245dc4,
+ 0x3b08cd,
+ 0x258188,
+ 0x2ded8d,
+ 0x266b86,
+ 0x28a70b,
+ 0x209dc9,
+ 0x318407,
+ 0x31d846,
+ 0x320f49,
+ 0x332a4a,
+ 0x302708,
+ 0x2e1604,
+ 0x272187,
+ 0x226a87,
+ 0x349d84,
+ 0x20f244,
+ 0x27e989,
+ 0x326ec9,
+ 0x20a588,
+ 0x2114c5,
+ 0x392785,
+ 0x20d3c6,
+ 0x3b0789,
+ 0x20800d,
+ 0x38d5c8,
+ 0x20d2c7,
+ 0x2bba88,
+ 0x22eec6,
+ 0x3a1504,
+ 0x37f645,
+ 0x2055c6,
+ 0x206104,
+ 0x207107,
+ 0x20914a,
+ 0x2139c4,
+ 0x21a0c6,
+ 0x21aa49,
+ 0x21aa4f,
+ 0x21b00d,
+ 0x21b786,
+ 0x220050,
+ 0x220446,
+ 0x220b87,
+ 0x221087,
+ 0x22108f,
+ 0x222309,
+ 0x227746,
+ 0x229747,
+ 0x229748,
+ 0x229b09,
+ 0x28d708,
+ 0x2d7d07,
+ 0x20cd03,
+ 0x3852c6,
+ 0x204008,
+ 0x29bd8a,
+ 0x215749,
+ 0x20bd83,
+ 0x340dc6,
+ 0x26130a,
+ 0x2ef8c7,
+ 0x2ddf4a,
+ 0x377e0e,
+ 0x222446,
+ 0x29a207,
+ 0x214d86,
+ 0x2072c6,
+ 0x37f18b,
+ 0x21d18a,
+ 0x21768d,
+ 0x211b87,
+ 0x310288,
+ 0x310289,
+ 0x31028f,
+ 0x3b218c,
+ 0x278289,
+ 0x33948e,
+ 0x3ab08a,
+ 0x368dc6,
+ 0x37bf86,
+ 0x30420c,
+ 0x31370c,
+ 0x327688,
+ 0x33f8c7,
+ 0x2131c5,
+ 0x29e584,
+ 0x24fb0e,
+ 0x332cc4,
+ 0x238a87,
+ 0x26274a,
+ 0x382554,
+ 0x3839cf,
+ 0x221248,
+ 0x385188,
+ 0x370e8d,
+ 0x370e8e,
+ 0x38fec9,
+ 0x22fe88,
+ 0x22fe8f,
+ 0x23400c,
+ 0x23400f,
+ 0x235507,
+ 0x237bca,
+ 0x21f18b,
+ 0x23a0c8,
+ 0x23bb47,
+ 0x25b08d,
+ 0x252506,
+ 0x3b0a86,
+ 0x23e5c9,
+ 0x215d48,
+ 0x242188,
+ 0x24218e,
+ 0x20b387,
+ 0x25f8c5,
+ 0x243a85,
+ 0x202084,
+ 0x201a86,
+ 0x20a488,
+ 0x24f103,
+ 0x3b154e,
+ 0x25b448,
+ 0x29ff0b,
+ 0x366947,
+ 0x3a31c5,
+ 0x239506,
+ 0x2aa947,
+ 0x39a248,
+ 0x27efc9,
+ 0x28f685,
+ 0x283688,
+ 0x213446,
+ 0x38b30a,
+ 0x24fa09,
+ 0x2343c9,
+ 0x2343cb,
+ 0x364b88,
+ 0x349c49,
+ 0x211586,
+ 0x2b074a,
+ 0x35904a,
+ 0x237dcc,
+ 0x367287,
+ 0x2a998a,
+ 0x27258b,
+ 0x272599,
+ 0x2da488,
+ 0x242005,
+ 0x25b246,
+ 0x2ed389,
+ 0x318e06,
+ 0x21250a,
+ 0x2f31c6,
+ 0x212104,
+ 0x2bf38d,
+ 0x3412c7,
+ 0x212109,
+ 0x244d45,
+ 0x244e88,
+ 0x245389,
+ 0x2455c4,
+ 0x245cc7,
+ 0x245cc8,
+ 0x246347,
+ 0x263e88,
+ 0x24c807,
+ 0x36f505,
+ 0x2567cc,
+ 0x256e89,
+ 0x2d9a8a,
+ 0x38ec09,
+ 0x221849,
+ 0x26b00c,
+ 0x259b8b,
+ 0x259e48,
+ 0x25bac8,
+ 0x25ee84,
+ 0x27d9c8,
+ 0x282309,
+ 0x39b6c7,
+ 0x21ac86,
+ 0x399907,
+ 0x325e89,
+ 0x366ecb,
+ 0x324907,
+ 0x3714c7,
+ 0x20acc7,
+ 0x2ded04,
+ 0x2ded05,
+ 0x2a81c5,
+ 0x337ecb,
+ 0x3981c4,
+ 0x319fc8,
+ 0x25f4ca,
+ 0x213507,
+ 0x346547,
+ 0x288f12,
+ 0x283e06,
+ 0x231ac6,
+ 0x322fce,
+ 0x361506,
+ 0x28edc8,
+ 0x28ff4f,
+ 0x2df148,
+ 0x284c08,
+ 0x35f54a,
+ 0x35f551,
+ 0x2a274e,
+ 0x23be4a,
+ 0x23be4c,
+ 0x230087,
+ 0x230090,
+ 0x204ac8,
+ 0x2a2945,
+ 0x2aad0a,
+ 0x20614c,
+ 0x2b3e0d,
+ 0x2ac3c6,
+ 0x2ac3c7,
+ 0x2ac3cc,
+ 0x2efc8c,
+ 0x2da98c,
+ 0x28c98b,
+ 0x283044,
+ 0x21b644,
+ 0x3741c9,
+ 0x2d72c7,
+ 0x2e94c9,
+ 0x358e89,
+ 0x36bb47,
+ 0x39b486,
+ 0x39b489,
+ 0x3a4a43,
+ 0x2a208a,
+ 0x29e7c7,
+ 0x30b6cb,
+ 0x21750a,
+ 0x23a9c4,
+ 0x353e86,
+ 0x27a309,
+ 0x30ec04,
+ 0x3a20ca,
+ 0x228e45,
+ 0x2b6485,
+ 0x2b648d,
+ 0x2b67ce,
+ 0x39f105,
+ 0x3167c6,
+ 0x241b87,
+ 0x26748a,
+ 0x39a446,
+ 0x35a2c4,
+ 0x35e2c7,
+ 0x210ecb,
+ 0x22ef87,
+ 0x202104,
+ 0x265d46,
+ 0x265d4d,
+ 0x325b4c,
+ 0x32fd86,
+ 0x38d7ca,
+ 0x225806,
+ 0x210288,
+ 0x263507,
+ 0x23660a,
+ 0x23c3c6,
+ 0x211a83,
+ 0x251186,
+ 0x203e88,
+ 0x296a8a,
+ 0x24aa47,
+ 0x24aa48,
+ 0x267b84,
+ 0x27b2c7,
+ 0x2c4108,
+ 0x2a3648,
+ 0x286808,
+ 0x27fa0a,
+ 0x2cf145,
+ 0x2cf3c7,
+ 0x23bc93,
+ 0x22d206,
+ 0x2b1648,
+ 0x224709,
+ 0x241688,
+ 0x216f0b,
+ 0x2b7848,
+ 0x211004,
+ 0x2a1e46,
+ 0x3b3106,
+ 0x2d9509,
+ 0x385c07,
+ 0x2568c8,
+ 0x287bc6,
+ 0x3a17c4,
+ 0x2c2e45,
+ 0x2bdc88,
+ 0x2be28a,
+ 0x2bf008,
+ 0x2c3906,
+ 0x29718a,
+ 0x233588,
+ 0x2c8548,
+ 0x2c9908,
+ 0x2c9f46,
+ 0x2cc006,
+ 0x31098c,
+ 0x2cc5d0,
+ 0x286fc5,
+ 0x2def48,
+ 0x2f8310,
+ 0x2def50,
+ 0x20bace,
+ 0x31060e,
+ 0x310614,
+ 0x31d9cf,
+ 0x31dd86,
+ 0x342211,
+ 0x349e53,
+ 0x34a2c8,
+ 0x27fd45,
+ 0x358288,
+ 0x20f985,
+ 0x22b24c,
+ 0x24bf89,
+ 0x2388c9,
+ 0x399687,
+ 0x240589,
+ 0x215a47,
+ 0x2b9d86,
+ 0x37f447,
+ 0x20c185,
+ 0x212043,
+ 0x24f2c9,
+ 0x217a49,
+ 0x379ac3,
+ 0x3aabc4,
+ 0x34ae4d,
+ 0x3558cf,
+ 0x2fe005,
+ 0x31aa06,
+ 0x20cfc7,
+ 0x21d5c7,
+ 0x285d86,
+ 0x285d8b,
+ 0x2a3bc5,
+ 0x258ac6,
+ 0x208487,
+ 0x26d109,
+ 0x2de6c6,
+ 0x364505,
+ 0x21c08b,
+ 0x22e946,
+ 0x246045,
+ 0x27e148,
+ 0x2d8748,
+ 0x2ca44c,
+ 0x2ca450,
+ 0x2ce7c9,
+ 0x2d5587,
+ 0x2f6c4b,
+ 0x2d5d46,
+ 0x2d7bca,
+ 0x2d928b,
+ 0x2d9d0a,
+ 0x2d9f86,
+ 0x2daf45,
+ 0x307f46,
+ 0x274f88,
+ 0x39974a,
+ 0x370b1c,
+ 0x2e1acc,
+ 0x2e1dc8,
+ 0x241f85,
+ 0x2e42c7,
+ 0x29b706,
+ 0x273c45,
+ 0x21dd86,
+ 0x285f48,
+ 0x2b5907,
+ 0x29b9c8,
+ 0x29a30a,
+ 0x3212cc,
+ 0x321549,
+ 0x224a87,
+ 0x282844,
+ 0x244386,
+ 0x28478a,
+ 0x358f85,
+ 0x3637cc,
+ 0x364f08,
+ 0x360d08,
+ 0x3b188c,
+ 0x20c8cc,
+ 0x20da49,
+ 0x20dc87,
+ 0x22d34c,
+ 0x29d284,
+ 0x2e83ca,
+ 0x2ad2cc,
+ 0x26eb4b,
+ 0x39070b,
+ 0x3a5946,
+ 0x23c107,
+ 0x2302c7,
+ 0x2302cf,
+ 0x2f0c11,
+ 0x3b3a12,
+ 0x23c90d,
+ 0x23c90e,
+ 0x23cc4e,
+ 0x31db88,
+ 0x31db92,
+ 0x23ea88,
+ 0x201407,
+ 0x248bca,
+ 0x20d888,
+ 0x3614c5,
+ 0x371c0a,
+ 0x220987,
+ 0x2da0c4,
+ 0x202b43,
+ 0x311185,
+ 0x35f7c7,
+ 0x39fe87,
+ 0x2b400e,
+ 0x3366cd,
+ 0x338149,
+ 0x20dfc5,
+ 0x35d103,
+ 0x24ea46,
+ 0x36fb85,
+ 0x271a48,
+ 0x2b2449,
+ 0x25b285,
+ 0x25b28f,
+ 0x2dad87,
+ 0x2f78c5,
+ 0x306b0a,
+ 0x27fc06,
+ 0x23dd09,
+ 0x2ea18c,
+ 0x2ebe09,
+ 0x378a86,
+ 0x25f2cc,
+ 0x2ec206,
+ 0x2ef3c8,
+ 0x2ef5c6,
+ 0x2da606,
+ 0x280604,
+ 0x25a1c3,
+ 0x35760a,
+ 0x369111,
+ 0x38c04a,
+ 0x3627c5,
+ 0x2a64c7,
+ 0x253647,
+ 0x2c4204,
+ 0x2c420b,
+ 0x318788,
+ 0x2b3006,
+ 0x2c75c5,
+ 0x38b604,
+ 0x262b49,
+ 0x29f2c4,
+ 0x21da87,
+ 0x322045,
+ 0x322047,
+ 0x323205,
+ 0x2a8d03,
+ 0x2012c8,
+ 0x27f30a,
+ 0x23fd43,
+ 0x28108a,
+ 0x26db46,
+ 0x25b00f,
+ 0x356849,
+ 0x3b14d0,
+ 0x2e22c8,
+ 0x2c45c9,
+ 0x293287,
+ 0x265ccf,
+ 0x3aecc4,
+ 0x22d704,
+ 0x219f46,
+ 0x222b86,
+ 0x3a5dca,
+ 0x3903c6,
+ 0x33eb87,
+ 0x2f6fc8,
+ 0x2f71c7,
+ 0x2f7bc7,
+ 0x34b94a,
+ 0x2fa14b,
+ 0x38e7c5,
+ 0x3b3648,
+ 0x238b83,
+ 0x261d0c,
+ 0x212f4f,
+ 0x2594cd,
+ 0x2bb187,
+ 0x338289,
+ 0x22f4c7,
+ 0x25a288,
+ 0x38274c,
+ 0x2a6c48,
+ 0x252cc8,
+ 0x30c28e,
+ 0x31f814,
+ 0x31fd24,
+ 0x33f28a,
+ 0x35a54b,
+ 0x215b04,
+ 0x215b09,
+ 0x330288,
+ 0x244545,
+ 0x24ec0a,
+ 0x36b187,
+ 0x307e44,
+ 0x323ac3,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x211003,
+ 0x2cc5c6,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0x200882,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x21eb03,
+ 0x202243,
+ 0x2cc5c6,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x200882,
+ 0x2f5003,
+ 0x216582,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x202ec2,
+ 0x200482,
+ 0x216582,
+ 0x22d183,
+ 0x22b782,
+ 0x200a82,
+ 0x201604,
+ 0x307b04,
+ 0x219382,
+ 0x212444,
+ 0x201502,
+ 0x2264c3,
+ 0x21bd03,
+ 0x3a5946,
+ 0x221e42,
+ 0x206202,
+ 0x224dc2,
+ 0x3d224643,
+ 0x3d626703,
+ 0x53d46,
+ 0x53d46,
+ 0x224104,
+ 0x140a30a,
+ 0x16970c,
+ 0x165f0c,
+ 0x798cd,
+ 0xdb7c7,
+ 0x1b908,
+ 0x22f08,
+ 0x1a7eca,
+ 0x3e31f345,
+ 0x11f349,
+ 0x163048,
+ 0x1ac10a,
+ 0x16348e,
+ 0x144148b,
+ 0x167404,
+ 0x2988,
+ 0x16e847,
+ 0x178587,
+ 0x112089,
+ 0x10ec87,
+ 0x132d48,
+ 0x1a2f89,
+ 0x17a845,
+ 0x5074e,
+ 0xa910d,
+ 0x131948,
+ 0x3e6d7e86,
+ 0x60c47,
+ 0x62607,
+ 0x67347,
+ 0x6c4c7,
+ 0xd382,
+ 0x141807,
+ 0x1d34c,
+ 0xeaec7,
+ 0x8ddc6,
+ 0xa5449,
+ 0xa7188,
+ 0xf1c2,
+ 0xa82,
+ 0x13088b,
+ 0x15309,
+ 0x33c49,
+ 0x2b848,
+ 0xb09c2,
+ 0x1afb89,
+ 0xccf89,
+ 0xcdbc8,
+ 0xce147,
+ 0xcf0c9,
+ 0xd2905,
+ 0xd2d10,
+ 0x164d46,
+ 0x51f05,
+ 0x23b4d,
+ 0x10e846,
+ 0xdc047,
+ 0xe26d8,
+ 0x108548,
+ 0x19104a,
+ 0x4114d,
+ 0x1402,
+ 0x161186,
+ 0x89948,
+ 0x180248,
+ 0x87f89,
+ 0x45e88,
+ 0x4da0e,
+ 0xe8f85,
+ 0x539c8,
+ 0x3282,
+ 0x155646,
+ 0x6c2,
+ 0xb81,
+ 0x3eae2f44,
+ 0x3ee90c43,
0x141,
- 0x19d06,
+ 0x1650c6,
0x141,
0x1,
- 0x19d06,
- 0xf6fc3,
- 0x1402285,
- 0x252044,
- 0x238543,
- 0x253384,
- 0x231604,
- 0x208e83,
- 0x229e45,
- 0x221f43,
- 0x20c843,
- 0x355685,
- 0x202443,
- 0x4aa38543,
- 0x23cac3,
- 0x323043,
+ 0x1650c6,
+ 0x14f60c5,
+ 0x245dc4,
+ 0x22d183,
+ 0x247344,
+ 0x201604,
+ 0x238483,
+ 0x2245c5,
+ 0x21ca03,
+ 0x215cc3,
+ 0x2e9cc5,
+ 0x223ec3,
+ 0x3fe2d183,
+ 0x2343c3,
+ 0x21eb03,
0x200041,
- 0x28cac3,
- 0x20f644,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x215443,
- 0x16fb88,
- 0x207102,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x200942,
- 0x231604,
- 0x255783,
- 0x28cac3,
- 0x208e83,
- 0x200e03,
- 0x201a03,
- 0x202443,
- 0x16fb88,
- 0x37fd82,
- 0x18c1c7,
- 0xf882,
- 0x10a985,
- 0x1480cc8,
- 0x10c50e,
- 0x4ba0ab02,
- 0x31fec8,
- 0x2bdd86,
- 0x2ca186,
- 0x2bd707,
- 0x4be00b42,
- 0x4c3ac548,
- 0x21870a,
- 0x26b448,
- 0x200242,
- 0x31fb49,
- 0x3b1b87,
- 0x21ec06,
- 0x34e849,
- 0x2e9b44,
- 0x348646,
- 0x2ca584,
- 0x27f584,
- 0x25f009,
- 0x32d906,
- 0x240ac5,
- 0x297a85,
- 0x3b9d87,
- 0x2c76c7,
- 0x2979c4,
- 0x2bd946,
- 0x307b85,
- 0x30a3c5,
- 0x3a2a05,
- 0x339407,
- 0x378a05,
- 0x31ddc9,
- 0x234fc5,
- 0x32f404,
- 0x3a81c7,
- 0x341b0e,
- 0x306bc9,
- 0x338749,
- 0x388d86,
- 0x24a608,
- 0x36ae4b,
- 0x2b698c,
- 0x33ea46,
- 0x2e5ac7,
- 0x212245,
- 0x38d20a,
- 0x2b7389,
- 0x209b49,
- 0x259f06,
- 0x300945,
- 0x2edac5,
- 0x3570c9,
- 0x3a2b8b,
- 0x27e286,
- 0x3471c6,
- 0x20de04,
- 0x2943c6,
- 0x24e1c8,
- 0x3c0846,
- 0x215006,
- 0x205fc8,
- 0x2092c7,
- 0x209909,
- 0x211385,
- 0x16fb88,
- 0x21a704,
- 0x2394c4,
- 0x201105,
- 0x3a6649,
- 0x228f87,
- 0x228f8b,
- 0x22b3ca,
- 0x230905,
- 0x4c612842,
- 0x342f07,
- 0x4ca30c08,
- 0x3578c7,
- 0x2c3d45,
- 0x209dca,
- 0xf882,
- 0x2be6cb,
- 0x255e0a,
- 0x22a146,
- 0x216383,
- 0x2a038d,
- 0x3572cc,
- 0x357a4d,
- 0x250545,
- 0x334fc5,
- 0x20db47,
- 0x36c689,
- 0x218606,
- 0x381ac5,
- 0x2d2b88,
- 0x2942c3,
- 0x2fa288,
- 0x2942c8,
- 0x2cb287,
- 0x314808,
- 0x3b49c9,
- 0x374847,
- 0x342707,
- 0x202108,
- 0x2d1c84,
- 0x2d1c87,
- 0x26fdc8,
- 0x355546,
- 0x3b874f,
- 0x226207,
- 0x2eb686,
- 0x2298c5,
- 0x22a8c3,
- 0x381947,
- 0x37cc43,
- 0x252886,
- 0x254006,
- 0x254706,
- 0x298b85,
- 0x26e2c3,
- 0x397cc8,
- 0x37f889,
- 0x3920cb,
- 0x254888,
- 0x255985,
- 0x2584c5,
- 0x4cef6802,
- 0x250089,
- 0x34eec7,
- 0x263c85,
- 0x25ef07,
- 0x260506,
- 0x374345,
- 0x263ecb,
- 0x2662c4,
- 0x26b005,
- 0x26b147,
- 0x27db86,
- 0x27e045,
- 0x289a47,
- 0x28a187,
- 0x2d5104,
- 0x291b8a,
- 0x292048,
- 0x2cee09,
- 0x2a0f05,
- 0x3bf1c6,
- 0x24e38a,
- 0x2be906,
- 0x26f2c7,
- 0x2ceacd,
- 0x2aa349,
- 0x396fc5,
- 0x339f07,
- 0x333448,
- 0x25a5c8,
- 0x332847,
- 0x358246,
- 0x21cb87,
- 0x253c43,
- 0x34b1c4,
- 0x371cc5,
- 0x39d947,
- 0x3a2409,
- 0x231b08,
- 0x34cbc5,
- 0x23bac4,
- 0x254a45,
- 0x256c4d,
- 0x2006c2,
- 0x230386,
- 0x2861c6,
- 0x2e654a,
- 0x3904c6,
- 0x39ab85,
- 0x342445,
- 0x342447,
- 0x3afd0c,
- 0x27b3ca,
- 0x294086,
- 0x28ad05,
- 0x294206,
- 0x294547,
- 0x296886,
- 0x298a8c,
- 0x34e989,
- 0x4d21a187,
- 0x29b745,
- 0x29b746,
- 0x29bcc8,
- 0x246f85,
- 0x2ab085,
- 0x2ab808,
- 0x2aba0a,
- 0x4d6335c2,
- 0x4da14d02,
- 0x2e76c5,
- 0x2eb603,
- 0x243408,
- 0x252403,
- 0x2abc84,
- 0x25240b,
- 0x36b208,
- 0x2daa48,
- 0x4df3b049,
- 0x2afc09,
- 0x2b0746,
- 0x2b1c08,
- 0x2b1e09,
- 0x2b2886,
- 0x2b2a05,
- 0x3944c6,
- 0x2b2f49,
- 0x389347,
- 0x2647c6,
- 0x2de087,
- 0x218487,
- 0x2dd9c4,
- 0x4e34f809,
- 0x2d32c8,
- 0x3ac448,
- 0x3932c7,
- 0x2cd346,
- 0x36c489,
- 0x2ca847,
- 0x32598a,
- 0x358388,
- 0x208387,
- 0x208f86,
- 0x271d8a,
- 0x26fbc8,
- 0x2ed485,
- 0x230685,
- 0x2ef1c7,
- 0x311cc9,
- 0x30150b,
- 0x31a308,
- 0x235049,
- 0x254c87,
- 0x2bd04c,
- 0x2bfccc,
- 0x2bffca,
- 0x2c024c,
- 0x2ca108,
- 0x2ca308,
- 0x2ca504,
- 0x2caa09,
- 0x2cac49,
- 0x2cae8a,
- 0x2cb109,
- 0x2cb447,
- 0x3ba98c,
- 0x23f586,
- 0x2cbf88,
- 0x2be9c6,
- 0x387486,
- 0x396ec7,
- 0x306dc8,
- 0x3445cb,
- 0x28e307,
- 0x250289,
- 0x350b89,
- 0x253507,
- 0x2771c4,
- 0x271c07,
- 0x2fda46,
- 0x21d8c6,
- 0x33c345,
- 0x297248,
- 0x2993c4,
- 0x2993c6,
- 0x27b28b,
- 0x21bac9,
- 0x36c886,
- 0x204bc9,
- 0x339586,
- 0x25f1c8,
- 0x211b83,
- 0x300ac5,
- 0x219b09,
- 0x21da05,
- 0x2fba44,
- 0x27d046,
- 0x2fd385,
- 0x299906,
- 0x310ec7,
- 0x33a986,
- 0x3b134b,
- 0x237587,
- 0x241646,
- 0x354786,
- 0x3b9e46,
- 0x297989,
- 0x25384a,
- 0x2bbb85,
- 0x2202cd,
- 0x2abb06,
- 0x204a86,
- 0x2f3f06,
- 0x22dd45,
- 0x2e6ac7,
- 0x300087,
- 0x2e7dce,
- 0x28cac3,
- 0x2cd309,
- 0x210c89,
- 0x38d607,
- 0x364207,
- 0x2a5bc5,
- 0x2b57c5,
- 0x4e63470f,
- 0x2d5a47,
- 0x2d5c08,
- 0x2d6144,
- 0x2d7106,
- 0x4ea4ea42,
- 0x2da786,
- 0x20c0c6,
- 0x210e4e,
- 0x2fa0ca,
- 0x273b06,
- 0x23398a,
- 0x211689,
- 0x32b385,
- 0x3a4808,
- 0x3bca06,
- 0x306748,
- 0x33aac8,
- 0x2194cb,
- 0x2bd805,
- 0x378a88,
- 0x20610c,
- 0x2c3c07,
- 0x254246,
- 0x2fd1c8,
- 0x3488c8,
- 0x4ee06802,
- 0x23588b,
- 0x2123c9,
- 0x205549,
- 0x2174c7,
- 0x223408,
- 0x4f36bec8,
- 0x38ffcb,
- 0x23edc9,
- 0x338f0d,
- 0x27fa88,
- 0x22b1c8,
- 0x4f6014c2,
- 0x203cc4,
- 0x4fa19302,
- 0x2fe206,
- 0x4fe004c2,
- 0x261b8a,
- 0x2199c6,
- 0x232808,
- 0x2c6f48,
- 0x2b6f06,
- 0x22fe46,
- 0x2f9186,
- 0x2b5a45,
- 0x2443c4,
- 0x50206d04,
- 0x214106,
- 0x29c747,
- 0x50620c47,
- 0x2d644b,
- 0x341ec9,
- 0x33500a,
- 0x2106c4,
- 0x342588,
- 0x26458d,
- 0x2f2489,
- 0x2f26c8,
- 0x2f2d49,
- 0x2f4544,
- 0x245884,
- 0x285cc5,
- 0x320fcb,
- 0x36b186,
- 0x34b905,
- 0x2279c9,
- 0x2bda08,
- 0x210dc4,
- 0x38d389,
- 0x2064c5,
- 0x2c7708,
- 0x342dc7,
- 0x338b48,
- 0x286d86,
- 0x233207,
- 0x29a989,
- 0x224a49,
- 0x38adc5,
- 0x34dfc5,
- 0x50a08402,
- 0x32f1c4,
- 0x2fdd45,
- 0x2ce506,
- 0x33bd05,
- 0x387e47,
- 0x214205,
- 0x27dbc4,
- 0x388e46,
- 0x381b47,
- 0x23d046,
- 0x2c41c5,
- 0x207f48,
- 0x2bdf85,
- 0x211a07,
- 0x214689,
- 0x21bc0a,
- 0x2fc487,
- 0x2fc48c,
- 0x240a86,
- 0x37e349,
- 0x246a45,
- 0x246ec8,
- 0x207c03,
- 0x216d85,
- 0x2fd705,
- 0x282d47,
- 0x50e06ac2,
- 0x22f647,
- 0x2e56c6,
- 0x373b46,
- 0x30bfc6,
- 0x348806,
- 0x206748,
- 0x2a0d05,
- 0x2eb747,
- 0x2eb74d,
- 0x227103,
- 0x227105,
- 0x379347,
- 0x22f988,
- 0x378f05,
- 0x2216c8,
- 0x37ccc6,
- 0x335b87,
- 0x2cbec5,
- 0x2bd886,
- 0x39ce45,
- 0x21c70a,
- 0x2f1346,
- 0x383f47,
- 0x2bca85,
- 0x2f5047,
- 0x2f97c4,
- 0x2fb9c6,
- 0x2fe345,
- 0x32d70b,
- 0x2fd8c9,
- 0x24214a,
- 0x38ae48,
- 0x30e048,
- 0x380a8c,
- 0x3964c7,
- 0x3054c8,
- 0x307f48,
- 0x3084c5,
- 0x311a8a,
- 0x31c449,
- 0x51200d02,
- 0x201886,
- 0x216044,
- 0x216049,
- 0x27d549,
- 0x27e9c7,
- 0x2b4e07,
- 0x2938c9,
- 0x22df48,
- 0x22df4f,
- 0x2e3a06,
- 0x2df14b,
- 0x34b445,
- 0x34b447,
- 0x368849,
- 0x21aa46,
- 0x38d307,
- 0x2e1a45,
- 0x23ae84,
- 0x284fc6,
- 0x2262c4,
- 0x2db107,
- 0x2d6f08,
- 0x51700848,
- 0x301245,
- 0x301387,
- 0x260a09,
- 0x205304,
- 0x24b348,
- 0x51ab7cc8,
- 0x283384,
- 0x23c208,
- 0x332d44,
- 0x22be49,
- 0x351a45,
- 0x51e05082,
- 0x2e3a45,
- 0x310045,
- 0x20fc48,
- 0x23d747,
- 0x52200d42,
- 0x3322c5,
- 0x2d8e46,
- 0x27cb06,
- 0x32f188,
- 0x337d48,
- 0x33bcc6,
- 0x34bb06,
- 0x38c289,
- 0x373a86,
- 0x21a90b,
- 0x2e5f85,
- 0x208a46,
- 0x29e108,
- 0x3a0a06,
- 0x322c46,
- 0x221b8a,
- 0x23b30a,
- 0x2498c5,
- 0x2a0dc7,
- 0x313646,
- 0x52606442,
- 0x379487,
- 0x266cc5,
- 0x24e304,
- 0x24e305,
- 0x2105c6,
- 0x278fc7,
- 0x215dc5,
- 0x23b484,
- 0x2c4788,
- 0x322d05,
- 0x3af347,
- 0x3b6dc5,
- 0x21c645,
- 0x258f84,
- 0x2ee209,
- 0x3079c8,
- 0x263146,
- 0x2b5386,
- 0x345186,
- 0x52b08148,
- 0x308347,
- 0x30874d,
- 0x3090cc,
- 0x3096c9,
- 0x309909,
- 0x52f67742,
- 0x3b6343,
- 0x215ac3,
- 0x2fdb05,
- 0x39da4a,
- 0x32f046,
- 0x30e2c5,
- 0x311084,
- 0x31108b,
- 0x323a8c,
- 0x3244cc,
- 0x3247d5,
- 0x32660d,
- 0x327d0f,
- 0x3280d2,
- 0x32854f,
- 0x328912,
- 0x328d93,
- 0x32924d,
- 0x32980d,
- 0x329b8e,
- 0x32a10e,
- 0x32a94c,
- 0x32ad0c,
- 0x32b14b,
- 0x32b4ce,
- 0x32c612,
- 0x32ee0c,
- 0x32fd90,
- 0x33cd52,
- 0x33d9cc,
- 0x33e08d,
- 0x33e3cc,
- 0x3406d1,
- 0x34734d,
- 0x349e0d,
- 0x34a40a,
- 0x34a68c,
- 0x34af8c,
- 0x34b60c,
- 0x34c20c,
- 0x3523d3,
- 0x352cd0,
- 0x3530d0,
- 0x35398d,
- 0x353f8c,
- 0x354b89,
- 0x35690d,
- 0x356c53,
- 0x3595d1,
- 0x359a13,
- 0x35a0cf,
- 0x35a48c,
- 0x35a78f,
- 0x35ab4d,
- 0x35b14f,
- 0x35b510,
- 0x35bf8e,
- 0x35f88e,
- 0x35fe10,
- 0x36150d,
- 0x361e8e,
- 0x36220c,
- 0x363213,
- 0x3658ce,
- 0x365f50,
- 0x366351,
- 0x36678f,
- 0x366b53,
- 0x3672cd,
- 0x36760f,
- 0x3679ce,
- 0x368090,
- 0x368489,
- 0x369210,
- 0x36980f,
- 0x369e8f,
- 0x36a252,
- 0x36dcce,
- 0x36e7cd,
- 0x36f00d,
- 0x36f34d,
- 0x37078d,
- 0x370acd,
- 0x370e10,
- 0x37120b,
- 0x371a8c,
- 0x371e0c,
- 0x37240c,
- 0x37270e,
- 0x382350,
- 0x384512,
- 0x38498b,
- 0x384e8e,
- 0x38520e,
- 0x386dce,
- 0x38724b,
- 0x53388016,
- 0x38988d,
- 0x38a014,
- 0x38b04d,
- 0x38cd55,
- 0x38e30d,
- 0x38ec8f,
- 0x38f4cf,
- 0x39238f,
- 0x39274e,
- 0x392ccd,
- 0x394091,
- 0x39668c,
- 0x39698c,
- 0x396c8b,
- 0x39710c,
- 0x3974cf,
- 0x397892,
- 0x39824d,
- 0x39974c,
- 0x399bcc,
- 0x399ecd,
- 0x39a20f,
- 0x39a5ce,
- 0x39d70c,
- 0x39dccd,
- 0x39e00b,
- 0x39e9cc,
- 0x39f2cd,
- 0x39f60e,
- 0x39f989,
- 0x3a1353,
- 0x3a188d,
- 0x3a1bcd,
- 0x3a21cc,
- 0x3a264e,
- 0x3a37cf,
- 0x3a3b8c,
- 0x3a3e8d,
- 0x3a41cf,
- 0x3a458c,
- 0x3a508c,
- 0x3a550c,
- 0x3a580c,
- 0x3a5ecd,
- 0x3a6212,
- 0x3a688c,
- 0x3a6b8c,
- 0x3a6e91,
- 0x3a72cf,
- 0x3a768f,
- 0x3a7a53,
- 0x3a8a0e,
- 0x3a8d8f,
- 0x3a914c,
- 0x537a948e,
- 0x3a980f,
- 0x3a9bd6,
- 0x3aaa92,
- 0x3acf0c,
- 0x3ada0f,
- 0x3ae08d,
- 0x3ae3cf,
- 0x3ae78c,
- 0x3aea8d,
- 0x3aedcd,
- 0x3b084e,
- 0x3b228c,
- 0x3b258c,
- 0x3b2890,
- 0x3b57d1,
- 0x3b5c0b,
- 0x3b5f4c,
- 0x3b624e,
- 0x3b7211,
- 0x3b764e,
- 0x3b79cd,
- 0x3bc7cb,
- 0x3bd88f,
- 0x3be394,
- 0x210642,
- 0x210642,
- 0x204d43,
- 0x210642,
- 0x204d43,
- 0x210642,
- 0x2009c2,
- 0x394505,
- 0x3b6f0c,
- 0x210642,
- 0x210642,
- 0x2009c2,
- 0x210642,
- 0x29c345,
- 0x21bc05,
- 0x210642,
- 0x210642,
- 0x201102,
- 0x29c345,
- 0x326b49,
- 0x3592cc,
- 0x210642,
- 0x210642,
- 0x210642,
- 0x210642,
- 0x394505,
- 0x210642,
- 0x210642,
- 0x210642,
- 0x210642,
- 0x201102,
- 0x326b49,
- 0x210642,
- 0x210642,
- 0x210642,
- 0x21bc05,
- 0x210642,
- 0x21bc05,
- 0x3592cc,
- 0x3b6f0c,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x208e83,
- 0x201a03,
- 0xe008,
- 0x64344,
- 0xe03,
- 0xc63c8,
- 0x207102,
- 0x5460f882,
- 0x24ac83,
- 0x23f044,
- 0x2020c3,
- 0x39e544,
- 0x23a1c6,
- 0x216f83,
- 0x304704,
- 0x2d7b05,
- 0x28cac3,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0x243d0a,
- 0x3821c6,
- 0x38558c,
- 0x16fb88,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x229443,
- 0x20c0c6,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0xac408,
- 0x131645,
- 0x35f09,
- 0x35c2,
- 0x55b95645,
- 0x26547,
- 0xba9c8,
- 0x14b0e,
- 0x90212,
- 0x10a78b,
- 0x1398c6,
- 0x55edf485,
- 0x562df48c,
- 0x148f87,
- 0x36dc7,
- 0x15000a,
- 0x46690,
- 0x13b345,
- 0xb610b,
- 0xf8d08,
- 0x3e607,
- 0x3af8b,
- 0x57f89,
- 0x185a87,
- 0x81a87,
- 0x7e4c7,
- 0x3e546,
- 0xdd088,
- 0x56824386,
- 0xb084d,
- 0x14f9d0,
- 0x56c0c182,
- 0x8ca48,
- 0x4f450,
- 0x15090c,
- 0x5735cd4d,
- 0x64a88,
- 0x721c7,
- 0x76f09,
- 0x5d3c6,
- 0x9bec8,
- 0x351c2,
- 0xa808a,
- 0x293c7,
- 0x43b87,
- 0xac7c9,
- 0xae208,
- 0x8b205,
- 0xd538e,
- 0x5c4e,
- 0x17a8f,
- 0x18009,
- 0x164ec9,
- 0x15d38b,
- 0x7ba8f,
- 0xee40c,
- 0xa88cb,
- 0xc8b48,
- 0xd6347,
- 0xdbe88,
- 0xfe78b,
- 0xff34c,
- 0x10038c,
- 0x1037cc,
- 0x10b54d,
- 0x3ef48,
- 0xd2942,
- 0x134649,
- 0x195d8b,
- 0xcd546,
- 0x11f30b,
- 0xe118a,
- 0xe1d45,
- 0xe67d0,
- 0xe9f06,
- 0x16b986,
- 0x11205,
- 0x10fc48,
- 0xefd07,
- 0xeffc7,
- 0x8d047,
- 0xfe04a,
- 0xba84a,
- 0x86286,
- 0x99d0d,
- 0x8f148,
- 0x586c8,
- 0x58ec9,
- 0xbc8c5,
- 0x1ad70c,
- 0x10b74b,
- 0x19e604,
- 0x105e09,
- 0x106046,
- 0x16546,
- 0x2642,
- 0x12cf06,
- 0xc68b,
- 0x112707,
- 0x4542,
- 0xd1305,
- 0x2e604,
- 0x8c1,
- 0x52d03,
- 0x56764886,
- 0x9c243,
- 0x7b02,
- 0x293c4,
- 0x242,
- 0x86644,
- 0xf82,
- 0x6502,
- 0x3302,
- 0xd342,
- 0x1382,
- 0xdf482,
- 0x8c2,
- 0x22902,
- 0x40e82,
- 0x1a442,
- 0x4c82,
- 0x234c2,
- 0x3cac3,
- 0x6b82,
- 0x1842,
- 0x7602,
- 0x6b02,
- 0x17202,
- 0x36d02,
- 0x206c2,
- 0xc442,
- 0x1c82,
- 0x942,
- 0x55783,
- 0x4182,
- 0x2542,
- 0xb8042,
- 0x9a02,
- 0x282,
- 0x2942,
- 0xd842,
- 0xc202,
- 0x4a82,
- 0x182842,
- 0x745c2,
- 0xe82,
- 0x8e83,
- 0x1942,
- 0x6802,
- 0x982,
- 0x5b82,
- 0x18ad45,
- 0x7082,
- 0x2fa42,
- 0x13ebc3,
- 0x482,
- 0xb282,
- 0xa02,
- 0x2502,
- 0x6742,
- 0xd42,
- 0xc2,
- 0x2642,
- 0x35dc5,
- 0x17f087,
- 0x20d0c3,
- 0x207102,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x2046c3,
- 0x229443,
- 0x208e83,
- 0x200e03,
- 0x201a03,
- 0x29c283,
- 0x10c3,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x28cac3,
- 0x208e83,
- 0x200e03,
- 0x1a3443,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x200041,
- 0x28cac3,
- 0x208e83,
- 0x21b543,
- 0x201a03,
- 0x146f44,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x26eac3,
- 0x21b583,
- 0x207b03,
- 0x289303,
- 0x219983,
- 0x241503,
- 0x323043,
- 0x231604,
- 0x208e83,
- 0x201a03,
- 0x202443,
- 0x333cc4,
- 0x251183,
- 0x3ec3,
- 0x3c0943,
- 0x20a3c8,
- 0x271dc4,
- 0x2cf30a,
- 0x2bed86,
- 0x112384,
- 0x3a7ec7,
- 0x226cca,
- 0x2e38c9,
- 0x3b7f87,
- 0x3be84a,
- 0x39c783,
- 0x2e774b,
- 0x28b689,
- 0x345285,
- 0x2da5c7,
- 0xf882,
- 0x238543,
- 0x21a447,
- 0x2379c5,
- 0x2ca689,
- 0x23cac3,
- 0x2bd606,
- 0x2c9883,
- 0xe5743,
- 0x110646,
- 0xd386,
- 0x16f07,
- 0x21af86,
- 0x222985,
- 0x3a3147,
- 0x2de5c7,
- 0x59b23043,
- 0x33dc07,
- 0x374703,
- 0x3b5045,
- 0x231604,
- 0x231308,
- 0x366fcc,
- 0x2b4fc5,
- 0x2aa4c6,
- 0x21a307,
- 0x39b687,
- 0x23dfc7,
- 0x23f108,
- 0x30f50f,
- 0x2e3b05,
- 0x24ad87,
- 0x33acc7,
- 0x2abdca,
- 0x2d29c9,
- 0x39e6c5,
- 0x31078a,
- 0xc546,
- 0x2c9905,
- 0x3703c4,
- 0x2c6e86,
- 0x300e07,
- 0x2d2847,
- 0x306908,
- 0x217645,
- 0x2378c6,
- 0x214f85,
- 0x2e8105,
- 0x21ba04,
- 0x2b6e07,
- 0x20658a,
- 0x34d908,
- 0x367f06,
- 0x29443,
- 0x2e4505,
- 0x26bf86,
- 0x3babc6,
- 0x211106,
- 0x28cac3,
- 0x3984c7,
- 0x33ac45,
- 0x208e83,
- 0x2e144d,
- 0x200e03,
- 0x306a08,
- 0x3b3644,
- 0x310945,
- 0x2abcc6,
- 0x23f386,
- 0x208947,
- 0x2aed47,
- 0x26f045,
- 0x201a03,
- 0x20a147,
- 0x277089,
- 0x36bbc9,
- 0x227f4a,
- 0x235d82,
- 0x3b5004,
- 0x2eb2c4,
- 0x344487,
- 0x22f508,
- 0x2f0889,
- 0x226fc9,
- 0x2f1ac7,
- 0x28bb46,
- 0xf3006,
- 0x2f4544,
- 0x2f4b4a,
- 0x2f8248,
- 0x2f9049,
- 0x2c4bc6,
- 0x2b9545,
- 0x34d7c8,
- 0x2cdc4a,
- 0x20ec43,
- 0x333e46,
- 0x2f1bc7,
- 0x225f45,
- 0x3b3505,
- 0x3a04c3,
- 0x231944,
- 0x230645,
- 0x28a287,
- 0x307b05,
- 0x2ef086,
- 0x103d45,
- 0x273bc3,
- 0x273bc9,
- 0x26c04c,
- 0x2a2b4c,
- 0x2d8648,
- 0x284187,
- 0x301e08,
- 0x30214a,
- 0x302fcb,
- 0x28b7c8,
- 0x23ec48,
- 0x23f486,
- 0x345045,
- 0x34624a,
- 0x228cc5,
- 0x205082,
- 0x2cbd87,
- 0x29f806,
- 0x368d45,
- 0x304209,
- 0x281405,
- 0x3716c5,
- 0x218ac9,
- 0x388a46,
- 0x204448,
- 0x332643,
- 0x217186,
- 0x27cf86,
- 0x311f05,
- 0x311f09,
- 0x2f0fc9,
- 0x27a3c7,
- 0x114204,
- 0x314207,
- 0x226ec9,
- 0x23f805,
- 0x444c8,
- 0x39c485,
- 0x341a05,
- 0x3911c9,
- 0x20cac2,
- 0x2628c4,
+ 0x211003,
+ 0x307b04,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x880c8,
0x200882,
- 0x204182,
- 0x30e985,
- 0x312108,
- 0x2bc805,
- 0x2cb603,
- 0x2cb605,
- 0x2da983,
- 0x2162c2,
- 0x383c84,
- 0x2fc183,
- 0x20cb42,
- 0x341504,
- 0x2ec043,
- 0x206682,
- 0x28cfc3,
- 0x295384,
- 0x2eae03,
- 0x2f6584,
- 0x204242,
- 0x221383,
- 0x219c43,
- 0x206182,
- 0x332182,
- 0x2f0e09,
- 0x204382,
- 0x290d84,
- 0x201f82,
- 0x34d644,
- 0x28bb04,
- 0x2c0d84,
- 0x202642,
- 0x23e882,
- 0x229703,
- 0x302d83,
- 0x24a9c4,
- 0x28a404,
- 0x2f1d44,
- 0x2f8404,
- 0x315743,
- 0x224183,
- 0x20c4c4,
- 0x315584,
- 0x315d86,
- 0x232ec2,
- 0x20f882,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x207102,
- 0x39c783,
- 0x238543,
- 0x23cac3,
- 0x201843,
- 0x323043,
- 0x231604,
- 0x2f10c4,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0x2f5204,
- 0x31fe83,
- 0x2c37c3,
- 0x359e44,
- 0x39c286,
- 0x211c43,
- 0x36dc7,
- 0x21f243,
- 0x202103,
- 0x2b8d83,
- 0x263a43,
- 0x229443,
- 0x3321c5,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x216403,
- 0x239043,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x255783,
- 0x208e83,
- 0x2464c4,
- 0x1a3443,
- 0x201a03,
- 0x25b0c4,
- 0x2c6c85,
- 0x36dc7,
- 0x20f882,
- 0x201742,
- 0x207b02,
- 0x204d42,
- 0xe03,
- 0x200442,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x215443,
- 0x286644,
- 0x16fb88,
- 0x238543,
- 0x200e03,
- 0x10c3,
- 0x13e8c4,
- 0x252044,
- 0x16fb88,
- 0x238543,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x200a82,
+ 0x201604,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x223ec3,
+ 0x880c8,
+ 0x38bcc2,
+ 0x16582,
+ 0x1462d48,
+ 0xf738e,
+ 0x40e00142,
+ 0x29e988,
+ 0x227fc6,
+ 0x2bb546,
+ 0x227947,
+ 0x41201102,
+ 0x417566c8,
+ 0x3af8ca,
+ 0x2606c8,
+ 0x201002,
+ 0x29e609,
+ 0x38e807,
+ 0x21ac06,
+ 0x201009,
+ 0x254704,
+ 0x2f5fc6,
+ 0x2d5fc4,
+ 0x273a04,
+ 0x2563c9,
+ 0x281786,
+ 0x2e3d85,
+ 0x220e45,
+ 0x3a5287,
+ 0x2b7cc7,
+ 0x243884,
+ 0x227b86,
+ 0x39fac5,
+ 0x202b05,
+ 0x2f5905,
+ 0x392547,
+ 0x366785,
+ 0x308bc9,
+ 0x2808c5,
+ 0x2d07c4,
+ 0x39a387,
+ 0x30584e,
+ 0x30fc49,
+ 0x322e89,
+ 0x348986,
+ 0x31e708,
+ 0x2b024b,
+ 0x2d210c,
+ 0x25b946,
+ 0x37cb07,
+ 0x209805,
+ 0x20f24a,
+ 0x20a689,
+ 0x252249,
+ 0x293d86,
+ 0x2ee6c5,
+ 0x28b145,
+ 0x361f09,
+ 0x2f5a8b,
+ 0x277606,
+ 0x32e5c6,
+ 0x20d2c4,
+ 0x288bc6,
+ 0x25f948,
+ 0x203d06,
+ 0x3a82c6,
+ 0x208bc8,
+ 0x2093c7,
+ 0x209589,
+ 0x20c445,
+ 0x880c8,
+ 0x378504,
+ 0x229e04,
+ 0x212d45,
+ 0x395589,
+ 0x223707,
+ 0x22370b,
+ 0x2255ca,
+ 0x22b185,
+ 0x41a0b602,
+ 0x2173c7,
+ 0x41e2c488,
+ 0x2833c7,
+ 0x281ac5,
+ 0x32594a,
+ 0x16582,
+ 0x24b90b,
+ 0x2adc4a,
+ 0x2248c6,
+ 0x3a31c3,
+ 0x230dcd,
+ 0x3320cc,
+ 0x36210d,
+ 0x3845c5,
+ 0x237205,
+ 0x24f147,
+ 0x3a8e89,
+ 0x3af7c6,
+ 0x390245,
+ 0x2ee3c8,
+ 0x288ac3,
+ 0x2e8108,
+ 0x288ac8,
+ 0x2bc507,
+ 0x2e62c8,
+ 0x3af3c9,
+ 0x236107,
+ 0x20ae07,
+ 0x335048,
0x253384,
- 0x231604,
- 0x200e03,
- 0x2014c2,
- 0x201a03,
- 0x20c843,
- 0x31944,
- 0x355685,
- 0x205082,
- 0x3156c3,
- 0x145c49,
- 0xdfb46,
- 0x19c588,
- 0x207102,
- 0x16fb88,
- 0x20f882,
- 0x23cac3,
- 0x323043,
- 0x200942,
- 0xe03,
- 0x201a03,
- 0x207102,
- 0x1bea07,
- 0x1370c9,
- 0x3dc3,
- 0x16fb88,
- 0xd303,
- 0x5db4c807,
- 0x38543,
- 0x1788,
- 0x23cac3,
- 0x323043,
- 0x186c46,
- 0x255783,
- 0xe8888,
- 0xc9148,
- 0x3fbc6,
- 0x28cac3,
- 0xd30c8,
- 0x187ec3,
- 0xe8a85,
- 0x3ccc7,
- 0x8e83,
- 0x63c3,
- 0x1a03,
- 0xcb02,
- 0x17044a,
- 0x10ea43,
- 0x313e44,
- 0x10f30b,
- 0x10f8c8,
- 0x95e02,
- 0x207102,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x2de944,
- 0x323043,
- 0x255783,
- 0x28cac3,
- 0x208e83,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x229443,
- 0x208e83,
- 0x201a03,
- 0x236903,
- 0x215443,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x10c3,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x229443,
- 0x208e83,
- 0x201a03,
- 0x21a902,
- 0x200141,
- 0x207102,
- 0x200001,
- 0x327e02,
- 0x16fb88,
- 0x224c85,
- 0x2008c1,
- 0x38543,
- 0x201781,
- 0x200301,
- 0x200081,
- 0x2ac602,
- 0x37cc44,
- 0x394483,
- 0x200181,
- 0x200401,
+ 0x253387,
+ 0x266a88,
+ 0x205846,
+ 0x3661cf,
+ 0x215507,
+ 0x2e3506,
+ 0x25a405,
+ 0x224f43,
+ 0x372207,
+ 0x36e143,
+ 0x246506,
+ 0x247f86,
+ 0x249686,
+ 0x28d1c5,
+ 0x263e83,
+ 0x3885c8,
+ 0x370489,
+ 0x38124b,
+ 0x249808,
+ 0x24c4c5,
+ 0x24d4c5,
+ 0x4223aa82,
+ 0x37f509,
+ 0x201687,
+ 0x258b45,
+ 0x2562c7,
+ 0x257e06,
+ 0x35eb05,
+ 0x36f9cb,
+ 0x259e44,
+ 0x260285,
+ 0x2603c7,
+ 0x271986,
+ 0x271fc5,
+ 0x27dbc7,
+ 0x27e647,
+ 0x26db04,
+ 0x2871ca,
+ 0x287688,
+ 0x3685c9,
+ 0x3a65c5,
+ 0x333386,
+ 0x25fb0a,
+ 0x220d46,
+ 0x24bb47,
+ 0x318a8d,
+ 0x2273c9,
+ 0x30ff45,
+ 0x24ff87,
+ 0x335608,
+ 0x3675c8,
+ 0x341b87,
+ 0x34a486,
+ 0x2116c7,
+ 0x247883,
+ 0x337ec4,
+ 0x35c385,
+ 0x38cac7,
+ 0x391f49,
+ 0x21a6c8,
+ 0x22fd05,
+ 0x382a04,
+ 0x240e85,
+ 0x2448cd,
+ 0x201142,
+ 0x3006c6,
+ 0x3610c6,
+ 0x2bde4a,
+ 0x3791c6,
+ 0x37fc45,
+ 0x319285,
+ 0x319287,
+ 0x38b14c,
+ 0x26fb8a,
+ 0x288886,
+ 0x29e445,
+ 0x288a06,
+ 0x288d47,
+ 0x28a9c6,
+ 0x28d0cc,
+ 0x201149,
+ 0x42765547,
+ 0x290305,
+ 0x290306,
+ 0x2906c8,
+ 0x2b1f05,
+ 0x2a4805,
+ 0x2a4a48,
+ 0x2a4c4a,
+ 0x42a6a242,
+ 0x42e0ff82,
+ 0x382245,
+ 0x29cdc3,
+ 0x37a688,
+ 0x21d083,
+ 0x2a4ec4,
+ 0x23de4b,
+ 0x272408,
+ 0x2d77c8,
+ 0x433255c9,
+ 0x2a8949,
+ 0x2a9006,
+ 0x2aa5c8,
+ 0x2aa7c9,
+ 0x2ab386,
+ 0x2ab505,
+ 0x383086,
+ 0x2abc09,
+ 0x2802c7,
+ 0x243f06,
+ 0x235c47,
+ 0x3af647,
+ 0x33b504,
+ 0x43743909,
+ 0x2c2288,
+ 0x3565c8,
+ 0x2368c7,
+ 0x2bd906,
+ 0x2fe209,
+ 0x331f47,
+ 0x2f1b0a,
+ 0x376848,
+ 0x3237c7,
+ 0x326086,
+ 0x33aa0a,
+ 0x249fc8,
+ 0x28ab05,
+ 0x21bf85,
+ 0x2bcb87,
+ 0x2d26c9,
+ 0x2d6e0b,
+ 0x2dd8c8,
+ 0x280949,
+ 0x249b07,
+ 0x3ad20c,
+ 0x2b1acc,
+ 0x2b1dca,
+ 0x2b204c,
+ 0x2bb4c8,
+ 0x2bb6c8,
+ 0x2bb8c4,
+ 0x2bbc89,
+ 0x2bbec9,
+ 0x2bc10a,
+ 0x2bc389,
+ 0x2bc6c7,
+ 0x20010c,
+ 0x36ef86,
+ 0x26de48,
+ 0x220e06,
+ 0x387346,
+ 0x30fe47,
+ 0x341d08,
+ 0x25180b,
+ 0x283287,
+ 0x2aeb49,
+ 0x2474c9,
+ 0x255f87,
+ 0x2d6204,
+ 0x35efc7,
+ 0x29f606,
+ 0x219006,
+ 0x38d985,
+ 0x2ccd88,
+ 0x20ef04,
+ 0x20ef06,
+ 0x26fa4b,
+ 0x2a2389,
+ 0x364086,
+ 0x3a8409,
+ 0x3926c6,
+ 0x2fec08,
+ 0x214803,
+ 0x2083c5,
+ 0x219149,
+ 0x21fe05,
+ 0x3a6084,
+ 0x270fc6,
+ 0x3a5a85,
+ 0x2e6846,
+ 0x2fbc07,
+ 0x367186,
+ 0x2952cb,
+ 0x2b0647,
+ 0x2d2586,
+ 0x374346,
+ 0x3a5346,
+ 0x243849,
+ 0x26238a,
+ 0x2b6045,
+ 0x21f68d,
+ 0x2a4d46,
+ 0x391246,
+ 0x2e21c6,
+ 0x210205,
+ 0x2d3007,
+ 0x2962c7,
+ 0x23b68e,
+ 0x211003,
+ 0x2bd8c9,
+ 0x318fc9,
+ 0x20f647,
+ 0x276b87,
+ 0x299d85,
+ 0x306f45,
+ 0x43a7eacf,
+ 0x2c4807,
+ 0x2c49c8,
+ 0x2c5a44,
+ 0x2c5d06,
+ 0x43e43b02,
+ 0x2ca1c6,
+ 0x2cc5c6,
+ 0x251b4e,
+ 0x2e7f4a,
+ 0x21cd06,
+ 0x33fcca,
+ 0x3b4089,
+ 0x316fc5,
+ 0x393b48,
+ 0x3ad0c6,
+ 0x34ab88,
+ 0x30f788,
+ 0x25ab8b,
+ 0x227a45,
+ 0x366808,
+ 0x208d0c,
+ 0x281987,
+ 0x248b06,
+ 0x22f108,
+ 0x201948,
+ 0x44208382,
+ 0x362b0b,
+ 0x280bc9,
+ 0x363e89,
+ 0x209987,
+ 0x30e688,
+ 0x4460c648,
+ 0x3a8c0b,
+ 0x22b6c9,
+ 0x20870d,
+ 0x217e88,
+ 0x22c288,
+ 0x44a02282,
+ 0x31d784,
+ 0x44e23b42,
+ 0x2ebc06,
+ 0x452016c2,
+ 0x3a180a,
+ 0x201fc6,
+ 0x225f08,
+ 0x31ea08,
+ 0x2b7546,
+ 0x386986,
+ 0x2e6606,
+ 0x2a00c5,
+ 0x23b184,
+ 0x456feb84,
+ 0x338986,
+ 0x269047,
+ 0x45a2ab47,
+ 0x32be0b,
+ 0x305c09,
+ 0x23724a,
+ 0x251404,
+ 0x3193c8,
+ 0x243ccd,
+ 0x2e07c9,
+ 0x2e0a08,
+ 0x2e1149,
+ 0x2e26c4,
+ 0x200f04,
+ 0x269885,
+ 0x30b48b,
+ 0x272386,
+ 0x3387c5,
+ 0x281c49,
+ 0x227c48,
+ 0x29ca84,
+ 0x20f3c9,
+ 0x2b0585,
+ 0x2b7d08,
+ 0x20b4c7,
+ 0x323288,
+ 0x27a506,
+ 0x217287,
+ 0x28eb89,
+ 0x21c209,
+ 0x2460c5,
+ 0x231445,
+ 0x45e25242,
+ 0x39a144,
+ 0x2fd585,
+ 0x2a9746,
+ 0x2f89c5,
+ 0x268307,
+ 0x243405,
+ 0x243484,
+ 0x348a46,
+ 0x3902c7,
+ 0x243b46,
+ 0x325dc5,
+ 0x31d488,
+ 0x2281c5,
+ 0x332607,
+ 0x397409,
+ 0x2a24ca,
+ 0x22dac7,
+ 0x22dacc,
+ 0x2e3d46,
+ 0x226349,
+ 0x2ad585,
+ 0x2c6e08,
+ 0x211543,
+ 0x211545,
+ 0x2e9405,
+ 0x256cc7,
+ 0x46214f02,
+ 0x236e47,
+ 0x2d6786,
+ 0x343846,
+ 0x2e8cc6,
+ 0x201886,
+ 0x347e88,
+ 0x3583c5,
+ 0x2e35c7,
+ 0x2e35cd,
+ 0x202b43,
+ 0x3a35c5,
+ 0x3068c7,
+ 0x3864c8,
+ 0x386085,
+ 0x366c88,
+ 0x22a946,
+ 0x31f507,
+ 0x2bcf05,
+ 0x227ac6,
+ 0x3711c5,
+ 0x2ba40a,
+ 0x2eb1c6,
+ 0x236487,
+ 0x2c5bc5,
+ 0x35a387,
+ 0x35e244,
+ 0x3a6006,
+ 0x2f61c5,
+ 0x28158b,
+ 0x29f489,
+ 0x37a20a,
+ 0x246148,
+ 0x2ff148,
+ 0x300a4c,
+ 0x3047c7,
+ 0x32b388,
+ 0x32edc8,
+ 0x336085,
+ 0x2bc94a,
+ 0x35d109,
+ 0x46601082,
+ 0x205446,
+ 0x214684,
+ 0x3b1249,
+ 0x2220c9,
+ 0x24d307,
+ 0x26c307,
+ 0x358d09,
+ 0x210408,
+ 0x21040f,
+ 0x3477c6,
+ 0x20a0cb,
+ 0x2e9b05,
+ 0x2e9b07,
+ 0x2e9f49,
+ 0x20f346,
+ 0x20f347,
+ 0x3b3d85,
+ 0x232784,
+ 0x2633c6,
+ 0x201284,
+ 0x30ac07,
+ 0x345e08,
+ 0x46aee5c8,
+ 0x2eebc5,
+ 0x2eed07,
+ 0x238289,
+ 0x2740c4,
+ 0x3a3888,
+ 0x46f20b88,
+ 0x2c4204,
+ 0x2330c8,
+ 0x31d904,
+ 0x21f989,
+ 0x2230c5,
+ 0x47203e42,
+ 0x347805,
+ 0x220c85,
+ 0x29fc88,
+ 0x235347,
+ 0x47600cc2,
+ 0x2c81c5,
+ 0x246b46,
+ 0x256646,
+ 0x39a108,
+ 0x2ec008,
+ 0x2f8986,
+ 0x31b086,
+ 0x22a489,
+ 0x343786,
+ 0x37870b,
+ 0x30c145,
+ 0x20d7c6,
+ 0x390088,
+ 0x252606,
+ 0x28f506,
+ 0x21c64a,
+ 0x2ae4ca,
+ 0x24ce85,
+ 0x358487,
+ 0x2d8e06,
+ 0x47a03dc2,
+ 0x306a07,
+ 0x2c7a45,
+ 0x25fa84,
+ 0x25fa85,
+ 0x251306,
+ 0x270447,
+ 0x2144c5,
+ 0x222184,
+ 0x2712c8,
+ 0x28f5c5,
+ 0x2cebc7,
+ 0x39c105,
+ 0x216805,
+ 0x247b04,
+ 0x28cbc9,
+ 0x39f908,
+ 0x2f5ec6,
+ 0x36fcc6,
+ 0x2c3f06,
+ 0x47ef3648,
+ 0x2f3847,
+ 0x2f3fcd,
+ 0x2f460c,
+ 0x2f4c09,
+ 0x2f4e49,
+ 0x48351e02,
+ 0x3a4803,
+ 0x24cf03,
+ 0x29f6c5,
+ 0x38cbca,
+ 0x31af46,
+ 0x2f8e05,
+ 0x2fc144,
+ 0x2fc14b,
+ 0x30d10c,
+ 0x30d94c,
+ 0x30dc55,
+ 0x311acd,
+ 0x313a0f,
+ 0x313dd2,
+ 0x31424f,
+ 0x314612,
+ 0x314a93,
+ 0x314f4d,
+ 0x31550d,
+ 0x31588e,
+ 0x315d4e,
+ 0x31658c,
+ 0x31694c,
+ 0x316d8b,
+ 0x31710e,
+ 0x31a1d2,
+ 0x31ad0c,
+ 0x31b8d0,
+ 0x327e52,
+ 0x328dcc,
+ 0x32948d,
+ 0x3297cc,
+ 0x32d8d1,
+ 0x32e74d,
+ 0x336b0d,
+ 0x33710a,
+ 0x33738c,
+ 0x337c8c,
+ 0x3384cc,
+ 0x338d4c,
+ 0x33c9d3,
+ 0x33d050,
+ 0x33d450,
+ 0x33dccd,
+ 0x33e2cc,
+ 0x33efc9,
+ 0x3402cd,
+ 0x340613,
+ 0x342e51,
+ 0x343293,
+ 0x343b4f,
+ 0x343f0c,
+ 0x34420f,
+ 0x3445cd,
+ 0x344bcf,
+ 0x344f90,
+ 0x345a0e,
+ 0x34b48e,
+ 0x34bbd0,
+ 0x34c7cd,
+ 0x34d14e,
+ 0x34d4cc,
+ 0x34e493,
+ 0x34fc8e,
+ 0x3503d0,
+ 0x3507d1,
+ 0x350c0f,
+ 0x350fd3,
+ 0x35198d,
+ 0x351ccf,
+ 0x35208e,
+ 0x352990,
+ 0x352d89,
+ 0x3539d0,
+ 0x35400f,
+ 0x35468f,
+ 0x354a52,
+ 0x355ece,
+ 0x35788d,
+ 0x35998d,
+ 0x359ccd,
+ 0x35ac4d,
+ 0x35af8d,
+ 0x35b2d0,
+ 0x35b6cb,
+ 0x35c14c,
+ 0x35c4cc,
+ 0x35c7cc,
+ 0x35cace,
+ 0x372990,
+ 0x3744d2,
+ 0x37494b,
+ 0x3750ce,
+ 0x37544e,
+ 0x375cce,
+ 0x37728b,
+ 0x48777856,
+ 0x378ecd,
+ 0x379354,
+ 0x37a98d,
+ 0x37c655,
+ 0x37d78d,
+ 0x37e10f,
+ 0x37e94f,
+ 0x38150f,
+ 0x3818ce,
+ 0x382b0d,
+ 0x384151,
+ 0x386b0c,
+ 0x386e0c,
+ 0x38710b,
+ 0x387a0c,
+ 0x387dcf,
+ 0x388192,
+ 0x388b4d,
+ 0x389b0c,
+ 0x389f8c,
+ 0x38a28d,
+ 0x38a5cf,
+ 0x38a98e,
+ 0x38c88c,
+ 0x38ce4d,
+ 0x38d18b,
+ 0x38e9cc,
+ 0x38ef4d,
+ 0x38f28e,
+ 0x38f709,
+ 0x3909d3,
+ 0x3913cd,
+ 0x39170d,
+ 0x391d0c,
+ 0x39218e,
+ 0x392b0f,
+ 0x392ecc,
+ 0x3931cd,
+ 0x39350f,
+ 0x3938cc,
+ 0x393fcc,
+ 0x39444c,
+ 0x39474c,
+ 0x394e0d,
+ 0x395152,
+ 0x3957cc,
+ 0x395acc,
+ 0x395dd1,
+ 0x39620f,
+ 0x3965cf,
+ 0x396993,
+ 0x39764e,
+ 0x397bcf,
+ 0x397f8c,
+ 0x48b982ce,
+ 0x39864f,
+ 0x398a16,
+ 0x399c12,
+ 0x39b88c,
+ 0x39c24f,
+ 0x39c8cd,
+ 0x39cc0f,
+ 0x39cfcc,
+ 0x39d2cd,
+ 0x39d60d,
+ 0x39f4ce,
+ 0x3a058c,
+ 0x3a088c,
+ 0x3a0b90,
+ 0x3a3a91,
+ 0x3a3ecb,
+ 0x3a440c,
+ 0x3a470e,
+ 0x3a7051,
+ 0x3a748e,
+ 0x3a780d,
+ 0x3ace8b,
+ 0x3adbcf,
+ 0x3aee94,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x205903,
+ 0x21c2c2,
+ 0x205903,
+ 0x21c2c2,
+ 0x205e02,
+ 0x3830c5,
+ 0x3a6d4c,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x205e02,
+ 0x21c2c2,
+ 0x290d45,
+ 0x2a24c5,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x211d42,
+ 0x290d45,
+ 0x312d49,
+ 0x342b4c,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x3830c5,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x211d42,
+ 0x312d49,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x21c2c2,
+ 0x2a24c5,
+ 0x21c2c2,
+ 0x2a24c5,
+ 0x342b4c,
+ 0x3a6d4c,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x238483,
+ 0x2264c3,
+ 0x141388,
+ 0x4db44,
+ 0xed208,
+ 0x200882,
+ 0x49a16582,
+ 0x240003,
+ 0x22b944,
+ 0x208f43,
+ 0x21eb04,
+ 0x231ac6,
+ 0x31d243,
+ 0x34aa44,
+ 0x26cc05,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x24690a,
+ 0x3a5946,
+ 0x3757cc,
+ 0x880c8,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x2348c3,
+ 0x2cc5c6,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0xd42,
+ 0xdb7c7,
+ 0xca908,
+ 0xfd8e,
+ 0x85792,
+ 0x2ecb,
+ 0x4a71f345,
+ 0x4ab76d0c,
+ 0x131007,
+ 0x16e747,
+ 0x119b8a,
+ 0x3c550,
+ 0x2988,
+ 0x16e847,
+ 0xae14b,
+ 0x112089,
+ 0x173507,
+ 0x10ec87,
+ 0x77847,
+ 0x169c6,
+ 0x132d48,
+ 0x4b01e1c6,
+ 0xa910d,
+ 0x119550,
+ 0x4b400d82,
+ 0x131948,
+ 0x680c7,
+ 0x84109,
+ 0x53e06,
+ 0x908c8,
+ 0x5e82,
+ 0x9c34a,
+ 0x8e507,
+ 0xeaec7,
+ 0xa5449,
+ 0xa7188,
+ 0x157f45,
+ 0xe168e,
+ 0xe9ce,
+ 0x14c4f,
+ 0x15309,
+ 0x33c49,
+ 0x6528b,
+ 0x7cdcf,
+ 0x8cdcc,
+ 0xdcbcb,
+ 0xd99c8,
+ 0x12bd07,
+ 0xede48,
+ 0x11e50b,
+ 0x13e94c,
+ 0x14624c,
+ 0x14f98c,
+ 0x1524cd,
+ 0x2b848,
+ 0x30cc2,
+ 0x1afb89,
+ 0x14c24b,
+ 0xbdb06,
+ 0xce6c5,
+ 0xd2d10,
+ 0x1229c6,
+ 0x51f05,
+ 0xd6908,
+ 0xdc047,
+ 0xdc307,
+ 0x163287,
+ 0xeba4a,
+ 0xca78a,
+ 0x161186,
+ 0x8db8d,
+ 0x180248,
+ 0x45e88,
+ 0x47a49,
+ 0xeb58c,
+ 0x1526cb,
+ 0x171ac4,
+ 0xf3109,
+ 0x44bc6,
+ 0x6202,
+ 0x155646,
+ 0xfefc7,
+ 0x6c2,
+ 0xc0e85,
+ 0x481,
+ 0x3b583,
+ 0x4af9eb86,
+ 0x90c43,
+ 0x1f82,
+ 0x3a4c4,
+ 0x1002,
+ 0x24104,
+ 0x9c2,
+ 0x1182,
+ 0x3182,
+ 0x4f882,
+ 0x2ec2,
+ 0x104e82,
+ 0x8c2,
+ 0x1dec2,
+ 0x37e42,
+ 0x682,
+ 0xf82,
+ 0xb1d82,
+ 0x343c3,
+ 0x8042,
+ 0x202,
+ 0x6ac2,
+ 0x21842,
+ 0xb2c2,
+ 0x32a02,
+ 0xf1c2,
+ 0x42,
+ 0x5602,
+ 0xa82,
+ 0x2243,
+ 0x74c2,
+ 0x1982,
+ 0xb09c2,
+ 0x9682,
+ 0xb402,
+ 0x61c2,
+ 0xa242,
+ 0x9a1c2,
+ 0x6742,
+ 0x172e82,
+ 0xe02,
+ 0x9f82,
+ 0x38483,
+ 0x1dc2,
+ 0x8382,
+ 0x25c2,
+ 0x2182,
+ 0x46045,
+ 0x6a42,
+ 0x41542,
+ 0x3e503,
+ 0x4b42,
+ 0x7982,
+ 0x1402,
+ 0x15c2,
+ 0x1882,
+ 0xcc2,
+ 0x3282,
+ 0x6202,
+ 0x6b247,
+ 0x212d03,
+ 0x200882,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x201d83,
+ 0x2348c3,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x290c83,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x211003,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
0x200041,
- 0x200101,
- 0x2ea547,
- 0x2ec54f,
- 0x2fbc06,
- 0x200281,
- 0x33e906,
- 0x200801,
- 0x200981,
- 0x306f8e,
- 0x200441,
- 0x201a03,
- 0x204101,
- 0x258885,
- 0x20cb02,
- 0x3a03c5,
- 0x200341,
- 0x200741,
- 0x2002c1,
- 0x205082,
- 0x2000c1,
- 0x200201,
- 0x200c81,
- 0x2005c1,
- 0x204541,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x221f43,
- 0x238543,
- 0x323043,
- 0x95d48,
- 0x28cac3,
- 0x208e83,
- 0x31483,
- 0x201a03,
- 0x14eec08,
- 0x16308,
- 0x16fb88,
- 0xe03,
- 0x8e444,
- 0x4ec04,
- 0x14eec0a,
- 0x16fb88,
- 0x1a3443,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x208e83,
- 0x201a03,
- 0x203ec3,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x2de944,
- 0x201a03,
- 0x22d585,
- 0x35f2c4,
- 0x238543,
- 0x208e83,
- 0x201a03,
- 0x1f40a,
- 0xf1844,
- 0x118b06,
- 0x20f882,
- 0x238543,
- 0x23adc9,
- 0x23cac3,
- 0x375449,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x2f4348,
- 0x22dc07,
- 0x355685,
- 0xb4c8,
- 0x1bea07,
- 0x2f78a,
- 0x178ccb,
- 0x13c507,
- 0x4a4c8,
- 0x14f64a,
- 0x19dc8,
- 0x1370c9,
- 0x30507,
- 0x742c7,
- 0x19bf08,
- 0x1788,
- 0x4b04f,
- 0x1c045,
- 0x1a87,
- 0x186c46,
- 0x41287,
- 0x4a786,
- 0xe8888,
- 0x96fc6,
- 0x188847,
- 0x178809,
- 0x1bf307,
- 0xd81c9,
- 0xbcbc9,
- 0xc6a06,
- 0xc9148,
- 0xc7845,
- 0x57b0a,
- 0xd30c8,
- 0x187ec3,
- 0xdad48,
- 0x3ccc7,
- 0x131f45,
- 0x787d0,
- 0x63c3,
- 0x1a3443,
- 0x125807,
- 0x1cc85,
- 0xf02c8,
- 0xe385,
- 0x10ea43,
- 0x16d5c8,
- 0x12906,
- 0x198909,
- 0xb2007,
- 0x145f0b,
- 0x180884,
- 0x104f04,
- 0x10f30b,
- 0x10f8c8,
- 0x110547,
- 0x131645,
- 0x238543,
- 0x23cac3,
- 0x21b583,
- 0x201a03,
- 0x20c743,
- 0x323043,
- 0x1a3443,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x15d4cb,
- 0x207102,
- 0x20f882,
- 0x201a03,
- 0x16fb88,
- 0x207102,
- 0x20f882,
- 0x207b02,
- 0x200942,
- 0x20b302,
- 0x208e83,
- 0x200442,
- 0x207102,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x207b02,
- 0x323043,
- 0x255783,
- 0x28cac3,
- 0x21bf84,
- 0x208e83,
- 0x21eb43,
- 0x201a03,
- 0x313e44,
- 0x202443,
- 0x323043,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x200e03,
- 0x201a03,
- 0x3ad3c7,
- 0x238543,
- 0x282c07,
- 0x2d7f86,
- 0x20e583,
- 0x207603,
- 0x323043,
- 0x204c03,
- 0x231604,
- 0x2d5204,
- 0x30e706,
- 0x20bd43,
- 0x208e83,
- 0x201a03,
- 0x22d585,
- 0x321704,
- 0x350503,
- 0x39b4c3,
- 0x2cbd87,
- 0x342d45,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x99807,
- 0x203402,
- 0x28f283,
+ 0x211003,
+ 0x238483,
+ 0x201f43,
+ 0x2264c3,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
+ 0x25f643,
+ 0x211cc3,
+ 0x3112c3,
+ 0x27cc03,
+ 0x201f83,
+ 0x25a603,
+ 0x21eb03,
+ 0x201604,
+ 0x238483,
+ 0x2264c3,
+ 0x223ec3,
+ 0x305fc4,
+ 0x21e143,
+ 0x4803,
+ 0x203e03,
+ 0x2a0cc8,
+ 0x332a44,
+ 0x317f8a,
+ 0x330786,
+ 0xda404,
+ 0x3a2e47,
+ 0x22138a,
+ 0x347689,
+ 0x3b3507,
+ 0x20054a,
+ 0x323ac3,
+ 0x3822cb,
+ 0x368b49,
+ 0x2c4005,
+ 0x2ca007,
+ 0x16582,
+ 0x22d183,
+ 0x326647,
+ 0x22a1c5,
+ 0x2d60c9,
+ 0x2343c3,
+ 0x227846,
+ 0x2ba0c3,
+ 0x9f543,
+ 0xfaa86,
+ 0x4f4c6,
+ 0x11d1c7,
+ 0x3a8786,
+ 0x213e45,
+ 0x20c507,
+ 0x338b87,
+ 0x4d61eb03,
+ 0x329007,
+ 0x35eec3,
+ 0x38e705,
+ 0x201604,
+ 0x221c08,
+ 0x2af6cc,
+ 0x2ad6c5,
+ 0x363c06,
+ 0x326507,
+ 0x224b47,
+ 0x205087,
+ 0x206e48,
+ 0x2597cf,
+ 0x280b05,
+ 0x240107,
+ 0x27e347,
+ 0x2a500a,
+ 0x2ee209,
+ 0x2d7185,
+ 0x2d830a,
+ 0xdea46,
+ 0x2ba145,
+ 0x374b84,
+ 0x2b7486,
+ 0x2fe5c7,
+ 0x230bc7,
+ 0x2a0a08,
+ 0x214805,
+ 0x22a0c6,
+ 0x3a8245,
+ 0x37a445,
+ 0x21fd44,
+ 0x31e907,
+ 0x347cca,
+ 0x365a48,
+ 0x2edb86,
+ 0x348c3,
+ 0x2cf145,
+ 0x238d06,
+ 0x200346,
+ 0x251e06,
+ 0x211003,
+ 0x388dc7,
+ 0x27e2c5,
+ 0x238483,
+ 0x3b378d,
+ 0x2025c3,
+ 0x2a0b08,
+ 0x3aac44,
+ 0x205fc5,
+ 0x2a4f06,
+ 0x236b06,
+ 0x20d6c7,
+ 0x355747,
+ 0x2641c5,
+ 0x2264c3,
+ 0x322c07,
+ 0x33b009,
+ 0x258f49,
+ 0x2434ca,
+ 0x242a42,
+ 0x38e6c4,
+ 0x2d7ac4,
+ 0x210d87,
+ 0x236d08,
+ 0x2dce89,
+ 0x3a3489,
+ 0x2df807,
+ 0x334206,
+ 0xe1406,
+ 0x2e26c4,
+ 0x2e2cca,
+ 0x2e5c88,
+ 0x2e64c9,
+ 0x2b6306,
+ 0x3003c5,
+ 0x365908,
+ 0x2bf10a,
+ 0x25b743,
+ 0x306146,
+ 0x2df907,
+ 0x207c85,
+ 0x3aab05,
+ 0x242083,
+ 0x252dc4,
+ 0x21bf45,
+ 0x27e747,
+ 0x39fa45,
+ 0x2f3bc6,
+ 0xfa705,
+ 0x212a43,
+ 0x21cdc9,
+ 0x238dcc,
+ 0x2ab90c,
+ 0x2c65c8,
+ 0x28f8c7,
+ 0x2ef748,
+ 0x2efa8a,
+ 0x2f0a4b,
+ 0x368c88,
+ 0x363d08,
+ 0x36ee86,
+ 0x341985,
+ 0x36498a,
+ 0x21ebc5,
+ 0x203e42,
+ 0x2bcdc7,
+ 0x26a8c6,
+ 0x353505,
+ 0x2f1949,
+ 0x38dec5,
+ 0x376785,
+ 0x38e2c9,
+ 0x238b86,
+ 0x261b88,
+ 0x2d1343,
+ 0x3a88c6,
+ 0x270f06,
+ 0x2fdcc5,
+ 0x2fdcc9,
+ 0x2dd5c9,
+ 0x242d87,
+ 0xfdb44,
+ 0x2fdb47,
+ 0x3a3389,
+ 0x221585,
+ 0x16f208,
+ 0x355545,
+ 0x355245,
+ 0x399309,
+ 0x201482,
+ 0x21df44,
+ 0x202e82,
+ 0x2074c2,
+ 0x293c45,
+ 0x2da188,
+ 0x374e45,
+ 0x2bc883,
+ 0x2bc885,
+ 0x2ca3c3,
+ 0x2111c2,
+ 0x264a04,
+ 0x233503,
+ 0x207a82,
+ 0x358704,
+ 0x2d8003,
+ 0x2014c2,
+ 0x293cc3,
+ 0x2898c4,
+ 0x2d7703,
+ 0x23a804,
+ 0x201bc2,
+ 0x21bc03,
+ 0x219283,
+ 0x208d82,
+ 0x35b202,
+ 0x2dd409,
+ 0x2011c2,
+ 0x286304,
+ 0x200dc2,
+ 0x365784,
+ 0x3341c4,
+ 0x3a1cc4,
+ 0x206202,
+ 0x23e802,
+ 0x20dc03,
+ 0x2f0083,
+ 0x23f704,
+ 0x27e8c4,
+ 0x2d13c4,
+ 0x2dd7c4,
+ 0x2fd083,
+ 0x3491c3,
+ 0x2de9c4,
+ 0x2fee04,
+ 0x2ff346,
+ 0x260dc2,
+ 0x216582,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x200882,
+ 0x323ac3,
+ 0x22d183,
+ 0x2343c3,
0x205403,
- 0x39c783,
- 0x65e38543,
- 0x206902,
- 0x23cac3,
- 0x2020c3,
- 0x323043,
- 0x231604,
- 0x3797c3,
- 0x2e3b03,
- 0x28cac3,
- 0x21bf84,
- 0x6620ea42,
- 0x208e83,
- 0x201a03,
- 0x206683,
- 0x22e603,
- 0x21a902,
- 0x202443,
- 0x16fb88,
- 0x323043,
- 0x10c3,
- 0x31f944,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x240244,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x3a2e44,
- 0x20f644,
- 0x20c0c6,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0x29f806,
- 0x4504b,
- 0x24386,
- 0x3204a,
- 0x112d0a,
- 0x16fb88,
- 0x214f44,
- 0x67638543,
- 0x39c744,
- 0x23cac3,
- 0x259004,
- 0x323043,
- 0x210543,
- 0x28cac3,
- 0x208e83,
- 0x1a3443,
- 0x201a03,
- 0xbac3,
- 0x3381cb,
- 0x3af10a,
- 0x3bf84c,
- 0xe4288,
- 0x207102,
- 0x20f882,
- 0x207b02,
- 0x2b13c5,
- 0x231604,
- 0x204a82,
- 0x28cac3,
- 0x20f644,
- 0x204d42,
- 0x200442,
- 0x20d2c2,
- 0x21a902,
- 0x19c783,
- 0x35f42,
- 0x2b3509,
- 0x2f7148,
- 0x351689,
- 0x2410c9,
- 0x350f0a,
- 0x26080a,
- 0x2127c2,
- 0x222902,
- 0xf882,
- 0x238543,
- 0x229682,
- 0x24af46,
- 0x369d02,
+ 0x21eb03,
+ 0x201604,
+ 0x2dd6c4,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0x2e3444,
+ 0x29e943,
+ 0x2b3783,
+ 0x3436c4,
+ 0x355346,
+ 0x20ca03,
+ 0x16e747,
+ 0x219b83,
+ 0x208143,
+ 0x2b1a03,
+ 0x206003,
+ 0x2348c3,
+ 0x376f85,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x2db443,
+ 0x230743,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x202243,
+ 0x238483,
+ 0x234fc4,
+ 0x2264c3,
+ 0x29b704,
+ 0x2b7285,
+ 0x16e747,
+ 0x216582,
+ 0x201a42,
+ 0x201f82,
+ 0x205902,
+ 0x201502,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x224104,
+ 0x880c8,
+ 0x22d183,
+ 0x2025c3,
+ 0x245dc4,
+ 0x880c8,
+ 0x22d183,
+ 0x247344,
+ 0x201604,
+ 0x2025c3,
+ 0x202282,
+ 0x2264c3,
+ 0x215cc3,
+ 0x52dc4,
+ 0x2e9cc5,
+ 0x203e42,
+ 0x2fef43,
+ 0x200882,
+ 0x880c8,
+ 0x216582,
+ 0x2343c3,
+ 0x21eb03,
+ 0x200a82,
+ 0x2264c3,
+ 0x200882,
+ 0x200707,
+ 0x254705,
+ 0x29f844,
+ 0x385f86,
+ 0x366a4b,
+ 0x263a49,
+ 0x363b46,
+ 0x340a89,
+ 0x2b2c88,
+ 0x207103,
+ 0x880c8,
+ 0x22a807,
+ 0x364288,
+ 0x24f843,
+ 0x21d184,
+ 0x2226cb,
+ 0x259145,
+ 0x24b188,
+ 0x2f2ec9,
+ 0x25a203,
+ 0x22d183,
+ 0x205348,
+ 0x2ee787,
+ 0x24fe46,
+ 0x2343c3,
+ 0x24f947,
+ 0x21eb03,
+ 0x339b06,
+ 0x202243,
+ 0x22f9c7,
+ 0x33a6c7,
+ 0x390e87,
+ 0x31e885,
+ 0x209403,
+ 0x205dcb,
+ 0x36b4c8,
+ 0x227548,
+ 0x33b1c6,
+ 0x367989,
+ 0x335b07,
+ 0x2f9145,
+ 0x339444,
+ 0x3478c8,
+ 0x23d54a,
+ 0x23d789,
+ 0x346f03,
+ 0x2696c5,
+ 0x21bb83,
+ 0x3ad706,
+ 0x387704,
+ 0x2fdec8,
+ 0x38748b,
+ 0x346dc5,
+ 0x2b7006,
+ 0x2b8e85,
+ 0x2b9608,
+ 0x2ba287,
+ 0x206cc7,
+ 0x317b87,
+ 0x294544,
+ 0x30a5c7,
+ 0x294546,
+ 0x211003,
+ 0x2c2088,
+ 0x268383,
+ 0x2cab08,
+ 0x2d3f45,
+ 0x3251c8,
+ 0x2345c7,
+ 0x238483,
+ 0x2447c3,
+ 0x287dc4,
+ 0x323647,
+ 0x208fc3,
+ 0x33a78b,
+ 0x205003,
+ 0x268344,
+ 0x2e9d48,
+ 0x2264c3,
+ 0x2f3d45,
+ 0x311145,
+ 0x3250c6,
+ 0x2117c5,
+ 0x2d4304,
+ 0x202002,
+ 0x2e69c3,
+ 0x374c0a,
+ 0x3a1583,
+ 0x306709,
+ 0x30a2c6,
+ 0x204e48,
+ 0x289406,
+ 0x214347,
+ 0x2db948,
+ 0x39a588,
+ 0x2ebd43,
+ 0x293d03,
+ 0x272c09,
+ 0x2f4c83,
+ 0x2d8d06,
+ 0x254386,
+ 0x39f7c6,
+ 0x3a1e09,
+ 0x2fd784,
+ 0x20e3c3,
+ 0x2d6d05,
+ 0x349589,
+ 0x206dc3,
+ 0x35a244,
+ 0x2f2ac4,
+ 0x36fc84,
+ 0x35f906,
+ 0x3b4303,
+ 0x3b4308,
+ 0x256a08,
+ 0x39db86,
+ 0x2f8f4b,
+ 0x2f9288,
+ 0x2f948b,
+ 0x2fb949,
+ 0x2fa987,
+ 0x2fbdc8,
+ 0x2fc983,
+ 0x22ad86,
+ 0x3a9247,
+ 0x295245,
+ 0x34b789,
+ 0x33530d,
+ 0x204c91,
+ 0x22eb85,
+ 0x200882,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x22d684,
+ 0x21eb03,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x2348c3,
+ 0x238483,
+ 0x2264c3,
+ 0x265903,
+ 0x217643,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x2348c3,
+ 0x238483,
+ 0x2264c3,
+ 0x221e42,
+ 0x200141,
+ 0x200882,
+ 0x200001,
+ 0x313b02,
+ 0x880c8,
+ 0x220045,
+ 0x200481,
+ 0x2d183,
+ 0x200741,
+ 0x200081,
+ 0x200c81,
+ 0x2333c2,
+ 0x36e144,
+ 0x383043,
+ 0x2007c1,
+ 0x200901,
+ 0x200041,
+ 0x2001c1,
+ 0x2dda87,
+ 0x2b8f8f,
+ 0x2cacc6,
+ 0x2000c1,
+ 0x25b806,
+ 0x200341,
+ 0x200ac1,
+ 0x341ece,
+ 0x201501,
+ 0x2264c3,
+ 0x2014c1,
+ 0x260e05,
+ 0x202002,
+ 0x241f85,
+ 0x200b81,
+ 0x200241,
+ 0x200a01,
+ 0x203e42,
+ 0x2002c1,
+ 0x204701,
+ 0x20dec1,
+ 0x200781,
+ 0x200641,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x21ca03,
+ 0x22d183,
+ 0x21eb03,
+ 0x89ec8,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x14da788,
+ 0x880c8,
+ 0x441c4,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x238483,
+ 0x2264c3,
+ 0x204803,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x22d684,
+ 0x2264c3,
+ 0x28fb85,
+ 0x27f304,
+ 0x22d183,
+ 0x238483,
+ 0x2264c3,
+ 0xa014a,
+ 0x216582,
+ 0x22d183,
+ 0x2326c9,
+ 0x2343c3,
+ 0x23af09,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x2e24c8,
+ 0x2100c7,
+ 0x2e9cc5,
+ 0x200707,
+ 0x366a4b,
+ 0x365188,
+ 0x340a89,
+ 0x22a807,
+ 0x205348,
+ 0x339b06,
+ 0x33a6c7,
+ 0x227548,
+ 0x33b1c6,
+ 0x335b07,
+ 0x23d789,
+ 0x37c409,
+ 0x2b7006,
+ 0x2b7e45,
+ 0x2c2088,
+ 0x268383,
+ 0x2cab08,
+ 0x2345c7,
+ 0x208fc3,
+ 0x326387,
+ 0x2117c5,
+ 0x2dc608,
+ 0x310205,
+ 0x293d03,
+ 0x33b9c9,
+ 0x2aa9c7,
+ 0x35a244,
+ 0x2f2ac4,
+ 0x2f8f4b,
+ 0x2f9288,
+ 0x2fa987,
+ 0x22d183,
+ 0x2343c3,
+ 0x211cc3,
+ 0x2264c3,
+ 0x21e503,
+ 0x21eb03,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x653cb,
+ 0x200882,
+ 0x216582,
+ 0x2264c3,
+ 0x880c8,
+ 0x200882,
+ 0x216582,
+ 0x201f82,
+ 0x200a82,
+ 0x200342,
+ 0x238483,
+ 0x201502,
+ 0x200882,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x201f82,
+ 0x21eb03,
+ 0x202243,
+ 0x211003,
+ 0x212444,
+ 0x238483,
+ 0x21ab43,
+ 0x2264c3,
+ 0x2fd784,
+ 0x223ec3,
+ 0x21eb03,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2025c3,
+ 0x2264c3,
+ 0x39bd47,
+ 0x22d183,
+ 0x256b87,
+ 0x2edfc6,
+ 0x219203,
+ 0x206ac3,
+ 0x21eb03,
+ 0x220883,
+ 0x201604,
+ 0x284804,
+ 0x2d43c6,
+ 0x20bac3,
+ 0x238483,
+ 0x2264c3,
+ 0x28fb85,
+ 0x20d4c4,
+ 0x31a083,
+ 0x217a03,
+ 0x2bcdc7,
+ 0x20b445,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x219f02,
+ 0x380383,
+ 0x2b2c83,
+ 0x323ac3,
+ 0x5822d183,
+ 0x22b782,
+ 0x2343c3,
+ 0x208f43,
+ 0x21eb03,
+ 0x201604,
+ 0x36b683,
+ 0x280b03,
+ 0x211003,
+ 0x212444,
+ 0x58606bc2,
+ 0x238483,
+ 0x2264c3,
+ 0x232dc3,
+ 0x245483,
+ 0x221e42,
+ 0x223ec3,
+ 0x880c8,
+ 0x21eb03,
+ 0x307e44,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2374c4,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x2f5d44,
+ 0x307b04,
+ 0x2cc5c6,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0x26a8c6,
+ 0x1737cb,
+ 0x1e1c6,
+ 0x23d0a,
+ 0xfcb8a,
+ 0x880c8,
+ 0x3a8204,
+ 0x22d183,
+ 0x323a84,
+ 0x2343c3,
+ 0x247b84,
+ 0x21eb03,
+ 0x251283,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x32248b,
+ 0x39d94a,
+ 0x3b298c,
+ 0x200882,
+ 0x216582,
+ 0x201f82,
+ 0x2a9c05,
+ 0x201604,
+ 0x206742,
+ 0x211003,
+ 0x307b04,
+ 0x205902,
+ 0x201502,
+ 0x217642,
+ 0x221e42,
+ 0x123ac3,
+ 0x357309,
+ 0x254208,
+ 0x301189,
+ 0x33a509,
+ 0x35bd8a,
+ 0x23808a,
+ 0x20cc82,
+ 0x21dec2,
+ 0x16582,
+ 0x22d183,
+ 0x200bc2,
+ 0x2402c6,
+ 0x354502,
+ 0x202982,
+ 0x3861ce,
+ 0x21bc4e,
+ 0x278107,
+ 0x32fe47,
+ 0x26b302,
+ 0x2343c3,
+ 0x21eb03,
+ 0x202842,
+ 0x200a82,
+ 0x23d1cf,
+ 0x204ec2,
+ 0x33b3c7,
+ 0x24cf87,
+ 0x256107,
+ 0x26204c,
+ 0x268b4c,
+ 0x2057c4,
+ 0x2696ca,
+ 0x21bb82,
+ 0x209682,
+ 0x2b2684,
+ 0x215bc2,
+ 0x2bb4c2,
+ 0x268d84,
+ 0x21ac42,
+ 0x20b402,
+ 0x33b247,
+ 0x233285,
+ 0x20a242,
+ 0x23d144,
+ 0x372e82,
+ 0x2cea08,
+ 0x238483,
+ 0x3a2308,
+ 0x203082,
+ 0x235885,
+ 0x3a25c6,
+ 0x2264c3,
0x206a42,
- 0x37904e,
- 0x2213ce,
- 0x284b47,
- 0x208e07,
- 0x2ec8c2,
- 0x23cac3,
- 0x323043,
- 0x200042,
- 0x200942,
- 0x31603,
- 0x23980f,
- 0x20b542,
- 0x2dd887,
- 0x2b4a87,
- 0x2b7e87,
- 0x31a4cc,
- 0x2c448c,
- 0x223984,
- 0x285b0a,
- 0x221302,
- 0x209a02,
- 0x2c0884,
- 0x21f502,
- 0x2ca102,
- 0x2c46c4,
- 0x21a602,
- 0x200282,
- 0x11a83,
- 0x297047,
- 0x2beb05,
- 0x20d842,
- 0x239784,
- 0x382842,
- 0x2e3008,
- 0x208e83,
- 0x203488,
- 0x203cc2,
- 0x223b45,
- 0x38dbc6,
- 0x201a03,
- 0x207082,
- 0x2f0ac7,
- 0xcb02,
- 0x2797c5,
- 0x358b85,
- 0x209642,
- 0x20fd02,
- 0x2cf9ca,
- 0x26eeca,
- 0x21b9c2,
- 0x2a4dc4,
- 0x2002c2,
- 0x3b4ec8,
- 0x20d582,
- 0x315b08,
- 0x30ab47,
- 0x30ba09,
- 0x203442,
- 0x310e45,
- 0x3044c5,
- 0x21770b,
- 0x2d054c,
- 0x237348,
- 0x321b08,
- 0x232ec2,
- 0x208a02,
- 0x207102,
- 0x16fb88,
- 0x20f882,
- 0x238543,
- 0x207b02,
- 0x204d42,
- 0xe03,
- 0x200442,
- 0x201a03,
- 0x20d2c2,
- 0x207102,
- 0x68a0f882,
- 0x68f23043,
- 0x211a83,
- 0x204a82,
- 0x208e83,
- 0x391783,
- 0x201a03,
- 0x2ef783,
- 0x37f186,
- 0x1615443,
- 0x16fb88,
- 0x11205,
- 0xae90d,
- 0xacc8a,
- 0x6e487,
- 0x69601e02,
- 0x69a00242,
- 0x69e00bc2,
- 0x6a200702,
- 0x6a60b5c2,
- 0x6aa01382,
- 0x36dc7,
- 0x6ae0f882,
- 0x6b20c8c2,
- 0x6b604842,
- 0x6ba04c82,
- 0x2213c3,
- 0x18ec4,
- 0x2298c3,
- 0x6be1d882,
- 0x6c200182,
- 0x53c47,
- 0x6c60a442,
- 0x6ca00782,
- 0x6ce01bc2,
- 0x6d205e82,
- 0x6d601c82,
- 0x6da00942,
- 0xc2845,
- 0x23ef43,
- 0x281a04,
- 0x6de1f502,
- 0x6e205242,
- 0x6e603582,
- 0x17d50b,
- 0x6ea01fc2,
- 0x6f253442,
- 0x6f604a82,
- 0x6fa0b302,
- 0x6fe14702,
- 0x70200802,
- 0x70614642,
- 0x70a745c2,
- 0x70e0ea42,
- 0x71204802,
- 0x71604d42,
- 0x71a03382,
- 0x71e08682,
- 0x7224d382,
- 0x1a3284,
- 0x35efc3,
- 0x72604f82,
- 0x72a10902,
- 0x72e11542,
- 0x73201f02,
- 0x73600442,
- 0x73a0cb42,
- 0x15d647,
- 0x73e04102,
- 0x74204142,
- 0x7460d2c2,
- 0x74a21382,
- 0x1ad70c,
- 0x74e2a202,
- 0x75245542,
- 0x75605942,
- 0x75a06442,
- 0x75e0c402,
- 0x76260982,
- 0x76600202,
- 0x76a16fc2,
- 0x76e7d302,
- 0x772610c2,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x12143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x6ef797c3,
- 0x212143,
- 0x332244,
- 0x2f7046,
- 0x2f9a03,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x244949,
- 0x235f42,
- 0x26c783,
- 0x2bcec3,
- 0x20fbc5,
- 0x2020c3,
- 0x3797c3,
- 0x212143,
- 0x20c0c3,
- 0x248d43,
- 0x242989,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x235f42,
- 0x235f42,
- 0x3797c3,
- 0x212143,
- 0x77a38543,
- 0x23cac3,
- 0x20a6c3,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x16fb88,
- 0x20f882,
- 0x238543,
- 0x208e83,
- 0x201a03,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x28cac3,
- 0x208e83,
- 0xe03,
- 0x201a03,
- 0x252044,
- 0x20f882,
- 0x238543,
- 0x345903,
- 0x23cac3,
- 0x253384,
- 0x21b583,
- 0x323043,
- 0x231604,
- 0x255783,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x20c843,
- 0x355685,
- 0x248d43,
- 0x202443,
- 0xe03,
- 0x20f882,
- 0x238543,
- 0x3797c3,
- 0x208e83,
- 0x201a03,
- 0x207102,
- 0x39c783,
- 0x16fb88,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x23a1c6,
- 0x231604,
- 0x255783,
- 0x21bf84,
- 0x208e83,
- 0x201a03,
- 0x221483,
- 0x238543,
- 0x23cac3,
- 0x208e83,
- 0x201a03,
- 0x1442047,
- 0x238543,
- 0x24386,
- 0x23cac3,
- 0x323043,
- 0xe5586,
- 0x208e83,
- 0x201a03,
- 0x31dc48,
- 0x321949,
- 0x330189,
- 0x33bb08,
- 0x38fb48,
- 0x38fb49,
- 0x24558d,
- 0x24dd8f,
- 0x2f53d0,
- 0x35648d,
- 0x37210c,
- 0x39064b,
- 0xba9c8,
- 0xac605,
- 0x207102,
- 0x342b85,
- 0x200243,
- 0x7ae0f882,
- 0x23cac3,
- 0x323043,
- 0x2d8c47,
- 0x263a43,
- 0x28cac3,
- 0x208e83,
- 0x21b543,
- 0x217e03,
- 0x200e03,
- 0x201a03,
- 0x3821c6,
- 0x205082,
- 0x202443,
- 0x16fb88,
- 0x207102,
- 0x39c783,
- 0x20f882,
- 0x238543,
- 0x23cac3,
- 0x323043,
- 0x231604,
- 0x28cac3,
- 0x208e83,
- 0x201a03,
- 0x215443,
- 0x106904,
- 0x15217c6,
- 0x207102,
- 0x20f882,
- 0x323043,
- 0x28cac3,
- 0x201a03,
+ 0x2dd0c7,
+ 0x2002,
+ 0x26ccc5,
+ 0x393e85,
+ 0x2166c2,
+ 0x226442,
+ 0x31864a,
+ 0x26404a,
+ 0x210fc2,
+ 0x376c04,
+ 0x201a02,
+ 0x38e588,
+ 0x204cc2,
+ 0x2fd448,
+ 0x2f64c7,
+ 0x2f67c9,
+ 0x26cd42,
+ 0x2fbb85,
+ 0x2546c5,
+ 0x2148cb,
+ 0x2bfdcc,
+ 0x22f848,
+ 0x2fbf48,
+ 0x260dc2,
+ 0x20d782,
+ 0x200882,
+ 0x880c8,
+ 0x216582,
+ 0x22d183,
+ 0x201f82,
+ 0x205902,
+ 0x201502,
+ 0x2264c3,
+ 0x217642,
+ 0x200882,
+ 0x5a616582,
+ 0x5aa1eb03,
+ 0x332683,
+ 0x206742,
+ 0x238483,
+ 0x364e83,
+ 0x2264c3,
+ 0x2db083,
+ 0x26b346,
+ 0x1617643,
+ 0x880c8,
+ 0x51f05,
+ 0xa7dcd,
+ 0x5f007,
+ 0x5b200182,
+ 0x5b601002,
+ 0x5ba04802,
+ 0x5be01842,
+ 0x5c2108c2,
+ 0x5c602ec2,
+ 0x16e747,
+ 0x5ca16582,
+ 0x5ce30542,
+ 0x5d21e582,
+ 0x5d600f82,
+ 0x21bc43,
+ 0x1b4284,
+ 0x20ddc3,
+ 0x5da18fc2,
+ 0x5de038c2,
+ 0x47887,
+ 0x5e214b82,
+ 0x5e600902,
+ 0x5ea02ac2,
+ 0x5ee082c2,
+ 0x5f205602,
+ 0x5f600a82,
+ 0xb97c5,
+ 0x226743,
+ 0x30ec04,
+ 0x5fa15bc2,
+ 0x5fe16c82,
+ 0x60200102,
+ 0x7508b,
+ 0x60600982,
+ 0x60e09782,
+ 0x61206742,
+ 0x61600342,
+ 0x61a50042,
+ 0x61e03042,
+ 0x6220e842,
+ 0x62600e02,
+ 0x62a06bc2,
+ 0x62e01302,
+ 0x63205902,
+ 0x6361d302,
+ 0x63a04242,
+ 0x63e425c2,
+ 0x133184,
+ 0x371183,
+ 0x64206602,
+ 0x64613942,
+ 0x64a06942,
+ 0x64e03742,
+ 0x65201502,
+ 0x65607a82,
+ 0x65547,
+ 0x65a07442,
+ 0x65e07482,
+ 0x66217642,
+ 0x6660a442,
+ 0xeb58c,
+ 0x66a24982,
+ 0x66e6f2c2,
+ 0x6721dcc2,
+ 0x67603dc2,
+ 0x67a2d742,
+ 0x67e1eb82,
+ 0x68204702,
+ 0x68606f42,
+ 0x68a71282,
+ 0x68e15ac2,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x75803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x60b6b683,
+ 0x275803,
+ 0x377004,
+ 0x254106,
+ 0x2e6a83,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x200482,
+ 0x200482,
+ 0x36b683,
+ 0x275803,
+ 0x6962d183,
+ 0x2343c3,
+ 0x2a0fc3,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x880c8,
+ 0x216582,
+ 0x22d183,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x245dc4,
+ 0x216582,
+ 0x22d183,
+ 0x308703,
+ 0x2343c3,
+ 0x247344,
+ 0x211cc3,
+ 0x21eb03,
+ 0x201604,
+ 0x202243,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x215cc3,
+ 0x2e9cc5,
+ 0x241403,
+ 0x223ec3,
+ 0x216582,
+ 0x22d183,
+ 0x36b683,
+ 0x238483,
+ 0x2264c3,
+ 0x200882,
+ 0x323ac3,
+ 0x880c8,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x231ac6,
+ 0x201604,
+ 0x202243,
+ 0x212444,
+ 0x238483,
+ 0x2264c3,
+ 0x21bd03,
+ 0x22d183,
+ 0x2343c3,
+ 0x238483,
+ 0x2264c3,
+ 0x22d183,
+ 0x1e1c6,
+ 0x2343c3,
+ 0x21eb03,
+ 0xd1906,
+ 0x238483,
+ 0x2264c3,
+ 0x308a48,
+ 0x30b989,
+ 0x31bcc9,
+ 0x326c48,
+ 0x37efc8,
+ 0x37efc9,
+ 0x333c5,
+ 0x200882,
+ 0x20b285,
+ 0x231b43,
+ 0x6c216582,
+ 0x2343c3,
+ 0x21eb03,
+ 0x22f647,
+ 0x206003,
+ 0x211003,
+ 0x238483,
+ 0x201f43,
+ 0x210783,
+ 0x2025c3,
+ 0x2264c3,
+ 0x3a5946,
+ 0x203e42,
+ 0x223ec3,
+ 0x880c8,
+ 0x200882,
+ 0x323ac3,
+ 0x216582,
+ 0x22d183,
+ 0x2343c3,
+ 0x21eb03,
+ 0x201604,
+ 0x211003,
+ 0x238483,
+ 0x2264c3,
+ 0x217643,
+ 0x14fa806,
}
// children is the list of nodes' children, the parent's wildcard bit and the
@@ -8921,499 +8636,439 @@ var children = [...]uint32{
0x40000000,
0x50000000,
0x60000000,
- 0x186c615,
- 0x187061b,
- 0x189461c,
- 0x19f0625,
+ 0x185c611,
+ 0x1860617,
+ 0x1880618,
+ 0x19dc620,
+ 0x19f0677,
0x1a0467c,
- 0x1a18681,
- 0x1a2c686,
- 0x1a4c68b,
- 0x1a50693,
- 0x1a68694,
- 0x1a9069a,
+ 0x1a14681,
+ 0x1a30685,
+ 0x1a3468c,
+ 0x1a4c68d,
+ 0x1a70693,
+ 0x1a7469c,
+ 0x1a8c69d,
+ 0x1a906a3,
0x1a946a4,
- 0x1aac6a5,
- 0x1ab06ab,
- 0x1ab46ac,
- 0x1af06ad,
- 0x1af46bc,
- 0x21afc6bd,
- 0x1b446bf,
+ 0x1ab86a5,
+ 0x1abc6ae,
+ 0x21ac46af,
+ 0x1b0c6b1,
+ 0x1b106c3,
+ 0x1b306c4,
+ 0x1b446cc,
0x1b486d1,
- 0x1b686d2,
- 0x1b7c6da,
- 0x1b806df,
- 0x1bb06e0,
- 0x1bcc6ec,
- 0x1bf46f3,
- 0x1c006fd,
- 0x1c04700,
- 0x1c9c701,
- 0x1cb0727,
- 0x1cc472c,
- 0x1cf4731,
- 0x1d0473d,
- 0x1d18741,
- 0x1d3c746,
- 0x1e7474f,
- 0x1e7879d,
- 0x1ee479e,
- 0x1f507b9,
- 0x1f687d4,
- 0x1f7c7da,
- 0x1f847df,
- 0x1f987e1,
- 0x1f9c7e6,
- 0x1fb87e7,
- 0x20047ee,
- 0x2020801,
- 0x2024808,
- 0x2028809,
- 0x204480a,
- 0x2080811,
- 0x62084820,
- 0x209c821,
- 0x20b4827,
- 0x20b882d,
- 0x20c882e,
- 0x2178832,
- 0x217c85e,
- 0x2218c85f,
- 0x22190863,
- 0x22194864,
- 0x21cc865,
- 0x21d0873,
- 0x2658874,
- 0x226f8996,
- 0x226fc9be,
- 0x227009bf,
- 0x2270c9c0,
- 0x227109c3,
- 0x2271c9c4,
- 0x227209c7,
- 0x227249c8,
- 0x227289c9,
- 0x2272c9ca,
- 0x227309cb,
- 0x2273c9cc,
- 0x227409cf,
- 0x2274c9d0,
- 0x227509d3,
- 0x227549d4,
- 0x227589d5,
- 0x227649d6,
- 0x227689d9,
- 0x2276c9da,
- 0x227709db,
+ 0x1b786d2,
+ 0x1b946de,
+ 0x1bbc6e5,
+ 0x1bc86ef,
+ 0x1bcc6f2,
+ 0x1c606f3,
+ 0x1c74718,
+ 0x1c8871d,
+ 0x1cb8722,
+ 0x1cc872e,
+ 0x1cdc732,
+ 0x1d00737,
+ 0x1e18740,
+ 0x1e1c786,
+ 0x1e88787,
+ 0x1e9c7a2,
+ 0x1eb07a7,
+ 0x1eb87ac,
+ 0x1ec87ae,
+ 0x1ecc7b2,
+ 0x1ee47b3,
+ 0x1f2c7b9,
+ 0x1f447cb,
+ 0x1f487d1,
+ 0x1f4c7d2,
+ 0x1f547d3,
+ 0x1f907d5,
+ 0x61f947e4,
+ 0x1fa87e5,
+ 0x1fac7ea,
+ 0x1fb07eb,
+ 0x1fc07ec,
+ 0x20707f0,
+ 0x207481c,
+ 0x2207c81d,
+ 0x2208081f,
+ 0x2084820,
+ 0x20b8821,
+ 0x20bc82e,
+ 0x24f482f,
+ 0x2254493d,
+ 0x22548951,
+ 0x2570952,
+ 0x257895c,
+ 0x2257c95e,
+ 0x258495f,
+ 0x22594961,
+ 0x22598965,
+ 0x25a4966,
+ 0x225a8969,
+ 0x25ac96a,
+ 0x225b096b,
+ 0x25cc96c,
+ 0x25e4973,
+ 0x25e8979,
+ 0x25f897a,
+ 0x260097e,
+ 0x22634980,
+ 0x263898d,
+ 0x264898e,
+ 0x267c992,
+ 0x269499f,
+ 0x26a89a5,
+ 0x26d09aa,
+ 0x26f09b4,
+ 0x27209bc,
+ 0x27489c8,
+ 0x274c9d2,
+ 0x27709d3,
0x27749dc,
- 0x227789dd,
- 0x227849de,
- 0x227889e1,
- 0x27909e2,
- 0x27cc9e4,
- 0x227ec9f3,
- 0x227f09fb,
- 0x227f49fc,
- 0x27f89fd,
- 0x227fc9fe,
- 0x28009ff,
- 0x281ca00,
- 0x2834a07,
- 0x2838a0d,
- 0x2848a0e,
- 0x2854a12,
- 0x2888a15,
- 0x288ca22,
- 0x28a0a23,
- 0x228a8a28,
- 0x2968a2a,
- 0x2296ca5a,
- 0x2974a5b,
- 0x2978a5d,
- 0x2990a5e,
- 0x29a4a64,
- 0x29cca69,
- 0x29eca73,
- 0x2a1ca7b,
- 0x2a44a87,
- 0x2a48a91,
- 0x2a6ca92,
- 0x2a70a9b,
- 0x2a84a9c,
- 0x2a88aa1,
- 0x2a8caa2,
- 0x2aacaa3,
- 0x2ac8aab,
- 0x2accab2,
- 0x22ad0ab3,
- 0x2ad4ab4,
- 0x2ad8ab5,
- 0x2ae8ab6,
- 0x2aecaba,
- 0x2b64abb,
- 0x2b68ad9,
- 0x2b84ada,
- 0x2b94ae1,
- 0x2ba8ae5,
- 0x2bc0aea,
- 0x2bd8af0,
- 0x2bf0af6,
- 0x2bf4afc,
- 0x2c0cafd,
- 0x2c28b03,
- 0x2c48b0a,
- 0x2c60b12,
- 0x2cc0b18,
- 0x2cdcb30,
- 0x2ce4b37,
- 0x2ce8b39,
- 0x2cfcb3a,
- 0x2d40b3f,
- 0x2dc0b50,
- 0x2decb70,
- 0x2df0b7b,
- 0x2df8b7c,
- 0x2e18b7e,
- 0x2e1cb86,
- 0x2e40b87,
- 0x2e48b90,
- 0x2e84b92,
- 0x2ec8ba1,
- 0x2eccbb2,
- 0x2f34bb3,
- 0x2f38bcd,
- 0x22f3cbce,
- 0x22f40bcf,
- 0x22f50bd0,
- 0x22f54bd4,
- 0x22f58bd5,
- 0x22f5cbd6,
- 0x22f60bd7,
- 0x2f78bd8,
- 0x2f9cbde,
- 0x2fbcbe7,
- 0x3580bef,
- 0x358cd60,
- 0x35acd63,
- 0x3768d6b,
- 0x3838dda,
- 0x38a8e0e,
- 0x3900e2a,
- 0x39e8e40,
- 0x3a40e7a,
- 0x3a7ce90,
- 0x3b78e9f,
- 0x3c44ede,
- 0x3cdcf11,
- 0x3d6cf37,
- 0x3dd0f5b,
- 0x4008f74,
- 0x40c1002,
- 0x418d030,
- 0x41d9063,
- 0x4261076,
- 0x429d098,
- 0x42ed0a7,
- 0x43650bb,
- 0x643690d9,
- 0x6436d0da,
- 0x643710db,
- 0x43ed0dc,
- 0x44490fb,
- 0x44c5112,
- 0x453d131,
- 0x45bd14f,
- 0x462916f,
- 0x475518a,
- 0x47ad1d5,
- 0x647b11eb,
- 0x48491ec,
- 0x48d1212,
- 0x491d234,
- 0x4985247,
- 0x4a2d261,
- 0x4af528b,
- 0x4b5d2bd,
- 0x4c712d7,
- 0x64c7531c,
- 0x64c7931d,
- 0x4cd531e,
- 0x4d31335,
- 0x4dc134c,
- 0x4e3d370,
- 0x4e8138f,
- 0x4f653a0,
- 0x4f993d9,
- 0x4ff93e6,
- 0x506d3fe,
- 0x50f541b,
- 0x513543d,
- 0x51a544d,
- 0x651a9469,
- 0x651ad46a,
- 0x251b146b,
- 0x51c946c,
- 0x51e5472,
- 0x5229479,
- 0x523948a,
- 0x525148e,
- 0x52c9494,
- 0x52d14b2,
- 0x52e54b4,
- 0x53014b9,
- 0x532d4c0,
- 0x53314cb,
- 0x53394cc,
- 0x534d4ce,
- 0x53694d3,
- 0x53754da,
- 0x537d4dd,
- 0x53b94df,
- 0x53cd4ee,
- 0x53d54f3,
- 0x53e14f5,
- 0x53e94f8,
- 0x540d4fa,
- 0x5431503,
- 0x544950c,
- 0x544d512,
- 0x5455513,
- 0x5459515,
- 0x54c1516,
- 0x54c5530,
- 0x54e9531,
- 0x550d53a,
- 0x5529543,
- 0x553954a,
- 0x554d54e,
- 0x5551553,
- 0x5559554,
- 0x556d556,
- 0x557d55b,
- 0x558155f,
- 0x559d560,
- 0x5e2d567,
- 0x5e6578b,
- 0x5e91799,
- 0x5ead7a4,
- 0x5ecd7ab,
- 0x5eed7b3,
- 0x5f317bb,
- 0x5f397cc,
- 0x25f3d7ce,
- 0x25f417cf,
- 0x5f497d0,
- 0x60c17d2,
- 0x260c5830,
- 0x260d5831,
- 0x260dd835,
- 0x260e9837,
- 0x60ed83a,
- 0x60f183b,
- 0x611983c,
- 0x6141846,
- 0x6145850,
- 0x617d851,
- 0x619985f,
- 0x6cf1866,
- 0x6cf5b3c,
- 0x6cf9b3d,
- 0x26cfdb3e,
- 0x6d01b3f,
- 0x26d05b40,
- 0x6d09b41,
- 0x26d15b42,
- 0x6d19b45,
- 0x6d1db46,
- 0x26d21b47,
- 0x6d25b48,
- 0x26d2db49,
- 0x6d31b4b,
- 0x6d35b4c,
- 0x26d45b4d,
- 0x6d49b51,
- 0x6d4db52,
- 0x6d51b53,
- 0x6d55b54,
- 0x26d59b55,
- 0x6d5db56,
- 0x6d61b57,
- 0x6d65b58,
- 0x6d69b59,
- 0x26d71b5a,
- 0x6d75b5c,
- 0x6d79b5d,
- 0x6d7db5e,
- 0x26d81b5f,
- 0x6d85b60,
- 0x26d8db61,
- 0x26d91b63,
- 0x6dadb64,
- 0x6dbdb6b,
- 0x6e01b6f,
- 0x6e05b80,
- 0x6e29b81,
- 0x6e2db8a,
- 0x6e31b8b,
- 0x6fbdb8c,
- 0x26fc1bef,
- 0x26fc9bf0,
- 0x26fcdbf2,
- 0x26fd1bf3,
- 0x6fd9bf4,
- 0x70b5bf6,
- 0x270b9c2d,
- 0x70bdc2e,
- 0x70e9c2f,
- 0x70edc3a,
- 0x7111c3b,
- 0x711dc44,
- 0x713dc47,
- 0x7141c4f,
- 0x7179c50,
- 0x7411c5e,
- 0x74cdd04,
- 0x74e1d33,
- 0x7515d38,
- 0x7545d45,
- 0x7561d51,
- 0x7589d58,
- 0x75a9d62,
- 0x75c5d6a,
- 0x75edd71,
- 0x75fdd7b,
- 0x7601d7f,
- 0x7605d80,
- 0x7639d81,
- 0x7645d8e,
- 0x7665d91,
- 0x76ddd99,
- 0x276e1db7,
- 0x7705db8,
- 0x7725dc1,
- 0x7739dc9,
- 0x774ddce,
- 0x7751dd3,
- 0x7771dd4,
- 0x7815ddc,
- 0x7831e05,
- 0x7855e0c,
- 0x785de15,
- 0x7869e17,
- 0x7871e1a,
- 0x7885e1c,
- 0x78a5e21,
- 0x78b1e29,
- 0x78bde2c,
- 0x78ede2f,
- 0x79c1e3b,
- 0x79c5e70,
- 0x79d9e71,
- 0x79e1e76,
- 0x79f9e78,
- 0x79fde7e,
- 0x7a09e7f,
- 0x7a0de82,
- 0x7a29e83,
- 0x7a65e8a,
- 0x7a69e99,
- 0x7a89e9a,
- 0x7ad9ea2,
- 0x7af5eb6,
- 0x7b49ebd,
- 0x7b4ded2,
- 0x7b51ed3,
- 0x7b55ed4,
- 0x7b99ed5,
- 0x7ba9ee6,
- 0x7be9eea,
- 0x7bedefa,
- 0x7c1defb,
- 0x7d65f07,
- 0x7d8df59,
- 0x7db9f63,
- 0x7dc5f6e,
- 0x7dcdf71,
- 0x7eddf73,
- 0x7ee9fb7,
- 0x7ef5fba,
- 0x7f01fbd,
- 0x7f0dfc0,
- 0x7f19fc3,
- 0x7f25fc6,
- 0x7f31fc9,
- 0x7f3dfcc,
- 0x7f49fcf,
- 0x7f55fd2,
- 0x7f61fd5,
- 0x7f6dfd8,
- 0x7f79fdb,
- 0x7f81fde,
- 0x7f8dfe0,
- 0x7f99fe3,
- 0x7fa5fe6,
- 0x7fb1fe9,
- 0x7fbdfec,
- 0x7fc9fef,
- 0x7fd5ff2,
- 0x7fe1ff5,
- 0x7fedff8,
- 0x7ff9ffb,
- 0x8005ffe,
- 0x8032001,
- 0x803e00c,
- 0x804a00f,
- 0x8056012,
- 0x8062015,
- 0x806e018,
- 0x807601b,
- 0x808201d,
- 0x808e020,
- 0x809a023,
- 0x80a6026,
- 0x80b2029,
- 0x80be02c,
- 0x80ca02f,
- 0x80d6032,
- 0x80e2035,
- 0x80ee038,
- 0x80fa03b,
- 0x810603e,
- 0x8112041,
- 0x811a044,
- 0x8126046,
- 0x8132049,
- 0x813e04c,
- 0x814a04f,
- 0x8156052,
- 0x8162055,
- 0x816e058,
- 0x817a05b,
- 0x817e05e,
- 0x818a05f,
- 0x81a6062,
- 0x81aa069,
- 0x81ba06a,
- 0x81d606e,
- 0x821a075,
- 0x821e086,
- 0x8232087,
- 0x826608c,
- 0x8276099,
- 0x829609d,
- 0x82ae0a5,
- 0x82c60ab,
- 0x82ce0b1,
- 0x283120b3,
- 0x83160c4,
- 0x83420c5,
- 0x834a0d0,
- 0x835e0d2,
+ 0x27889dd,
+ 0x278c9e2,
+ 0x27909e3,
+ 0x27b09e4,
+ 0x27c09ec,
+ 0x27d09f0,
+ 0x27d49f4,
+ 0x28489f5,
+ 0x2864a12,
+ 0x2870a19,
+ 0x2884a1c,
+ 0x289ca21,
+ 0x28b0a27,
+ 0x28c8a2c,
+ 0x28e0a32,
+ 0x28f8a38,
+ 0x2914a3e,
+ 0x292ca45,
+ 0x298ca4b,
+ 0x29a4a63,
+ 0x29a8a69,
+ 0x29bca6a,
+ 0x2a00a6f,
+ 0x2a80a80,
+ 0x2aacaa0,
+ 0x2ab0aab,
+ 0x2ab8aac,
+ 0x2ad8aae,
+ 0x2adcab6,
+ 0x2afcab7,
+ 0x2b04abf,
+ 0x2b3cac1,
+ 0x2b78acf,
+ 0x2b7cade,
+ 0x2bbcadf,
+ 0x2bd4aef,
+ 0x2bf8af5,
+ 0x2c18afe,
+ 0x31dcb06,
+ 0x31e8c77,
+ 0x3208c7a,
+ 0x33c4c82,
+ 0x3494cf1,
+ 0x3504d25,
+ 0x355cd41,
+ 0x3644d57,
+ 0x369cd91,
+ 0x36d8da7,
+ 0x37d4db6,
+ 0x38a0df5,
+ 0x3938e28,
+ 0x39c8e4e,
+ 0x3a2ce72,
+ 0x3c64e8b,
+ 0x3d1cf19,
+ 0x3de8f47,
+ 0x3e34f7a,
+ 0x3ebcf8d,
+ 0x3ef8faf,
+ 0x3f48fbe,
+ 0x3fc0fd2,
+ 0x63fc4ff0,
+ 0x63fc8ff1,
+ 0x63fccff2,
+ 0x4048ff3,
+ 0x40ad012,
+ 0x412902b,
+ 0x41a104a,
+ 0x4221068,
+ 0x428d088,
+ 0x43b90a3,
+ 0x44110ee,
+ 0x64415104,
+ 0x44ad105,
+ 0x453512b,
+ 0x458114d,
+ 0x45e9160,
+ 0x469117a,
+ 0x47591a4,
+ 0x47c11d6,
+ 0x48d51f0,
+ 0x648d9235,
+ 0x648dd236,
+ 0x4939237,
+ 0x499524e,
+ 0x4a25265,
+ 0x4aa1289,
+ 0x4ae52a8,
+ 0x4bc92b9,
+ 0x4bfd2f2,
+ 0x4c5d2ff,
+ 0x4cd1317,
+ 0x4d59334,
+ 0x4d99356,
+ 0x4e09366,
+ 0x64e0d382,
+ 0x64e11383,
+ 0x24e15384,
+ 0x4e2d385,
+ 0x4e4938b,
+ 0x4e8d392,
+ 0x4e9d3a3,
+ 0x4eb53a7,
+ 0x4f2d3ad,
+ 0x4f353cb,
+ 0x4f493cd,
+ 0x4f613d2,
+ 0x4f893d8,
+ 0x4f8d3e2,
+ 0x4f953e3,
+ 0x4fa93e5,
+ 0x4fc53ea,
+ 0x4fc93f1,
+ 0x4fd13f2,
+ 0x500d3f4,
+ 0x5021403,
+ 0x5029408,
+ 0x503140a,
+ 0x503540c,
+ 0x505940d,
+ 0x507d416,
+ 0x509541f,
+ 0x5099425,
+ 0x50a1426,
+ 0x50a5428,
+ 0x50f9429,
+ 0x511d43e,
+ 0x513d447,
+ 0x515944f,
+ 0x5169456,
+ 0x517d45a,
+ 0x518145f,
+ 0x5189460,
+ 0x519d462,
+ 0x51ad467,
+ 0x51b146b,
+ 0x51cd46c,
+ 0x5a5d473,
+ 0x5a95697,
+ 0x5ac16a5,
+ 0x5ad96b0,
+ 0x5af96b6,
+ 0x5b196be,
+ 0x5b5d6c6,
+ 0x5b656d7,
+ 0x25b696d9,
+ 0x25b6d6da,
+ 0x5b716db,
+ 0x5c956dc,
+ 0x25c99725,
+ 0x25ca1726,
+ 0x25ca9728,
+ 0x25cb572a,
+ 0x5cb972d,
+ 0x5ce172e,
+ 0x5d09738,
+ 0x5d0d742,
+ 0x25d45743,
+ 0x5d59751,
+ 0x68b1756,
+ 0x68b5a2c,
+ 0x68b9a2d,
+ 0x268bda2e,
+ 0x68c1a2f,
+ 0x268c5a30,
+ 0x68c9a31,
+ 0x268d5a32,
+ 0x68d9a35,
+ 0x68dda36,
+ 0x268e1a37,
+ 0x68e5a38,
+ 0x268eda39,
+ 0x68f1a3b,
+ 0x68f5a3c,
+ 0x26905a3d,
+ 0x6909a41,
+ 0x690da42,
+ 0x6911a43,
+ 0x6915a44,
+ 0x26919a45,
+ 0x691da46,
+ 0x6921a47,
+ 0x6925a48,
+ 0x6929a49,
+ 0x26931a4a,
+ 0x6935a4c,
+ 0x6939a4d,
+ 0x693da4e,
+ 0x26941a4f,
+ 0x6945a50,
+ 0x2694da51,
+ 0x26951a53,
+ 0x696da54,
+ 0x6979a5b,
+ 0x69b9a5e,
+ 0x69bda6e,
+ 0x69e1a6f,
+ 0x6b31a78,
+ 0x26b39acc,
+ 0x26b3dace,
+ 0x26b41acf,
+ 0x6b49ad0,
+ 0x6c25ad2,
+ 0x6c29b09,
+ 0x6c55b0a,
+ 0x6c75b15,
+ 0x6c81b1d,
+ 0x6ca1b20,
+ 0x6cd9b28,
+ 0x6f71b36,
+ 0x702dbdc,
+ 0x7041c0b,
+ 0x7075c10,
+ 0x70a5c1d,
+ 0x70c1c29,
+ 0x70e5c30,
+ 0x7101c39,
+ 0x711dc40,
+ 0x7141c47,
+ 0x7151c50,
+ 0x7185c54,
+ 0x71a1c61,
+ 0x73adc68,
+ 0x73d1ceb,
+ 0x73f1cf4,
+ 0x7405cfc,
+ 0x7419d01,
+ 0x7439d06,
+ 0x74ddd0e,
+ 0x74f9d37,
+ 0x7515d3e,
+ 0x7519d45,
+ 0x751dd46,
+ 0x7521d47,
+ 0x7535d48,
+ 0x7555d4d,
+ 0x7561d55,
+ 0x7565d58,
+ 0x7595d59,
+ 0x7615d65,
+ 0x7629d85,
+ 0x762dd8a,
+ 0x7645d8b,
+ 0x7649d91,
+ 0x7655d92,
+ 0x7659d95,
+ 0x7675d96,
+ 0x76b1d9d,
+ 0x76b5dac,
+ 0x76d5dad,
+ 0x7725db5,
+ 0x773ddc9,
+ 0x7791dcf,
+ 0x7795de4,
+ 0x7799de5,
+ 0x77ddde6,
+ 0x77eddf7,
+ 0x7825dfb,
+ 0x7855e09,
+ 0x7991e15,
+ 0x79b5e64,
+ 0x79e1e6d,
+ 0x79ede78,
+ 0x79f1e7b,
+ 0x7b01e7c,
+ 0x7b0dec0,
+ 0x7b19ec3,
+ 0x7b25ec6,
+ 0x7b31ec9,
+ 0x7b3decc,
+ 0x7b49ecf,
+ 0x7b55ed2,
+ 0x7b61ed5,
+ 0x7b6ded8,
+ 0x7b79edb,
+ 0x7b85ede,
+ 0x7b91ee1,
+ 0x7b9dee4,
+ 0x7ba5ee7,
+ 0x7bb1ee9,
+ 0x7bbdeec,
+ 0x7bc9eef,
+ 0x7bd5ef2,
+ 0x7be1ef5,
+ 0x7bedef8,
+ 0x7bf9efb,
+ 0x7c05efe,
+ 0x7c11f01,
+ 0x7c1df04,
+ 0x7c29f07,
+ 0x7c35f0a,
+ 0x7c41f0d,
+ 0x7c4df10,
+ 0x7c59f13,
+ 0x7c65f16,
+ 0x7c71f19,
+ 0x7c79f1c,
+ 0x7c85f1e,
+ 0x7c91f21,
+ 0x7c9df24,
+ 0x7ca9f27,
+ 0x7cb5f2a,
+ 0x7cc1f2d,
+ 0x7ccdf30,
+ 0x7cd9f33,
+ 0x7ce5f36,
+ 0x7cf1f39,
+ 0x7cfdf3c,
+ 0x7d09f3f,
+ 0x7d15f42,
+ 0x7d1df45,
+ 0x7d29f47,
+ 0x7d35f4a,
+ 0x7d41f4d,
+ 0x7d4df50,
+ 0x7d59f53,
+ 0x7d65f56,
+ 0x7d71f59,
+ 0x7d7df5c,
+ 0x7d81f5f,
+ 0x7d8df60,
+ 0x7da5f63,
+ 0x7da9f69,
+ 0x7db9f6a,
+ 0x7dd1f6e,
+ 0x7e15f74,
+ 0x7e29f85,
+ 0x7e5df8a,
+ 0x7e6df97,
+ 0x7e89f9b,
+ 0x7ea1fa2,
+ 0x7ea5fa8,
+ 0x27ee9fa9,
+ 0x7eedfba,
+ 0x7f19fbb,
+ 0x7f1dfc6,
}
-// max children 494 (capacity 1023)
-// max text offset 28750 (capacity 32767)
+// max children 434 (capacity 511)
+// max text offset 27930 (capacity 32767)
// max text length 36 (capacity 63)
-// max hi 8407 (capacity 16383)
-// max lo 8402 (capacity 16383)
+// max hi 8135 (capacity 16383)
+// max lo 8134 (capacity 16383)
diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap.go b/vendor/golang.org/x/text/encoding/charmap/charmap.go
index e89ff0734..6e62a8374 100644
--- a/vendor/golang.org/x/text/encoding/charmap/charmap.go
+++ b/vendor/golang.org/x/text/encoding/charmap/charmap.go
@@ -33,32 +33,32 @@ var (
ISO8859_8I encoding.Encoding = &iso8859_8I
iso8859_6E = internal.Encoding{
- Encoding: ISO8859_6,
- Name: "ISO-8859-6E",
- MIB: identifier.ISO88596E,
+ ISO8859_6,
+ "ISO-8859-6E",
+ identifier.ISO88596E,
}
iso8859_6I = internal.Encoding{
- Encoding: ISO8859_6,
- Name: "ISO-8859-6I",
- MIB: identifier.ISO88596I,
+ ISO8859_6,
+ "ISO-8859-6I",
+ identifier.ISO88596I,
}
iso8859_8E = internal.Encoding{
- Encoding: ISO8859_8,
- Name: "ISO-8859-8E",
- MIB: identifier.ISO88598E,
+ ISO8859_8,
+ "ISO-8859-8E",
+ identifier.ISO88598E,
}
iso8859_8I = internal.Encoding{
- Encoding: ISO8859_8,
- Name: "ISO-8859-8I",
- MIB: identifier.ISO88598I,
+ ISO8859_8,
+ "ISO-8859-8I",
+ identifier.ISO88598I,
}
)
// All is a list of all defined encodings in this package.
-var All []encoding.Encoding = listAll
+var All = listAll
// TODO: implement these encodings, in order of importance.
// ASCII, ISO8859_1: Rather common. Close to Windows 1252.
@@ -70,8 +70,8 @@ type utf8Enc struct {
data [3]byte
}
-// Charmap is an 8-bit character set encoding.
-type Charmap struct {
+// charmap describes an 8-bit character set encoding.
+type charmap struct {
// name is the encoding's name.
name string
// mib is the encoding type of this encoder.
@@ -79,7 +79,7 @@ type Charmap struct {
// asciiSuperset states whether the encoding is a superset of ASCII.
asciiSuperset bool
// low is the lower bound of the encoded byte for a non-ASCII rune. If
- // Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00.
+ // charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00.
low uint8
// replacement is the encoded replacement character.
replacement byte
@@ -91,30 +91,26 @@ type Charmap struct {
encode [256]uint32
}
-// NewDecoder implements the encoding.Encoding interface.
-func (m *Charmap) NewDecoder() *encoding.Decoder {
+func (m *charmap) NewDecoder() *encoding.Decoder {
return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}}
}
-// NewEncoder implements the encoding.Encoding interface.
-func (m *Charmap) NewEncoder() *encoding.Encoder {
+func (m *charmap) NewEncoder() *encoding.Encoder {
return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}}
}
-// String returns the Charmap's name.
-func (m *Charmap) String() string {
+func (m *charmap) String() string {
return m.name
}
-// ID implements an internal interface.
-func (m *Charmap) ID() (mib identifier.MIB, other string) {
+func (m *charmap) ID() (mib identifier.MIB, other string) {
return m.mib, ""
}
// charmapDecoder implements transform.Transformer by decoding to UTF-8.
type charmapDecoder struct {
transform.NopResetter
- charmap *Charmap
+ charmap *charmap
}
func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -146,22 +142,10 @@ func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int,
return nDst, nSrc, err
}
-// DecodeByte returns the Charmap's rune decoding of the byte b.
-func (m *Charmap) DecodeByte(b byte) rune {
- switch x := &m.decode[b]; x.len {
- case 1:
- return rune(x.data[0])
- case 2:
- return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f)
- default:
- return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f)
- }
-}
-
// charmapEncoder implements transform.Transformer by encoding from UTF-8.
type charmapEncoder struct {
transform.NopResetter
- charmap *Charmap
+ charmap *charmap
}
func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -223,27 +207,3 @@ loop:
}
return nDst, nSrc, err
}
-
-// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether
-// r is in the Charmap's repertoire. If not, b is set to the Charmap's
-// replacement byte. This is often the ASCII substitute character '\x1a'.
-func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) {
- if r < utf8.RuneSelf && m.asciiSuperset {
- return byte(r), true
- }
- for low, high := int(m.low), 0x100; ; {
- if low >= high {
- return m.replacement, false
- }
- mid := (low + high) / 2
- got := m.encode[mid]
- gotRune := rune(got & (1<<24 - 1))
- if gotRune < r {
- low = mid + 1
- } else if gotRune > r {
- high = mid
- } else {
- return byte(got >> 24), true
- }
- }
-}
diff --git a/vendor/golang.org/x/text/encoding/charmap/maketables.go b/vendor/golang.org/x/text/encoding/charmap/maketables.go
deleted file mode 100644
index f7941701e..000000000
--- a/vendor/golang.org/x/text/encoding/charmap/maketables.go
+++ /dev/null
@@ -1,556 +0,0 @@
-// Copyright 2013 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
-
-package main
-
-import (
- "bufio"
- "fmt"
- "log"
- "net/http"
- "sort"
- "strings"
- "unicode/utf8"
-
- "golang.org/x/text/encoding"
- "golang.org/x/text/internal/gen"
-)
-
-const ascii = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" +
- "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" +
- ` !"#$%&'()*+,-./0123456789:;<=>?` +
- `@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` +
- "`abcdefghijklmnopqrstuvwxyz{|}~\u007f"
-
-var encodings = []struct {
- name string
- mib string
- comment string
- varName string
- replacement byte
- mapping string
-}{
- {
- "IBM Code Page 037",
- "IBM037",
- "",
- "CodePage037",
- 0x3f,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM037-2.1.2.ucm",
- },
- {
- "IBM Code Page 437",
- "PC8CodePage437",
- "",
- "CodePage437",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM437-2.1.2.ucm",
- },
- {
- "IBM Code Page 850",
- "PC850Multilingual",
- "",
- "CodePage850",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM850-2.1.2.ucm",
- },
- {
- "IBM Code Page 852",
- "PCp852",
- "",
- "CodePage852",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM852-2.1.2.ucm",
- },
- {
- "IBM Code Page 855",
- "IBM855",
- "",
- "CodePage855",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM855-2.1.2.ucm",
- },
- {
- "Windows Code Page 858", // PC latin1 with Euro
- "IBM00858",
- "",
- "CodePage858",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-858-2000.ucm",
- },
- {
- "IBM Code Page 860",
- "IBM860",
- "",
- "CodePage860",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM860-2.1.2.ucm",
- },
- {
- "IBM Code Page 862",
- "PC862LatinHebrew",
- "",
- "CodePage862",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM862-2.1.2.ucm",
- },
- {
- "IBM Code Page 863",
- "IBM863",
- "",
- "CodePage863",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM863-2.1.2.ucm",
- },
- {
- "IBM Code Page 865",
- "IBM865",
- "",
- "CodePage865",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM865-2.1.2.ucm",
- },
- {
- "IBM Code Page 866",
- "IBM866",
- "",
- "CodePage866",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-ibm866.txt",
- },
- {
- "IBM Code Page 1047",
- "IBM1047",
- "",
- "CodePage1047",
- 0x3f,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM1047-2.1.2.ucm",
- },
- {
- "IBM Code Page 1140",
- "IBM01140",
- "",
- "CodePage1140",
- 0x3f,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/ibm-1140_P100-1997.ucm",
- },
- {
- "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",
- "",
- "ISO8859_2",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-2.txt",
- },
- {
- "ISO 8859-3",
- "ISOLatin3",
- "",
- "ISO8859_3",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-3.txt",
- },
- {
- "ISO 8859-4",
- "ISOLatin4",
- "",
- "ISO8859_4",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-4.txt",
- },
- {
- "ISO 8859-5",
- "ISOLatinCyrillic",
- "",
- "ISO8859_5",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-5.txt",
- },
- {
- "ISO 8859-6",
- "ISOLatinArabic",
- "",
- "ISO8859_6,ISO8859_6E,ISO8859_6I",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-6.txt",
- },
- {
- "ISO 8859-7",
- "ISOLatinGreek",
- "",
- "ISO8859_7",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-7.txt",
- },
- {
- "ISO 8859-8",
- "ISOLatinHebrew",
- "",
- "ISO8859_8,ISO8859_8E,ISO8859_8I",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-8.txt",
- },
- {
- "ISO 8859-9",
- "ISOLatin5",
- "",
- "ISO8859_9",
- encoding.ASCIISub,
- "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/iso-8859_9-1999.ucm",
- },
- {
- "ISO 8859-10",
- "ISOLatin6",
- "",
- "ISO8859_10",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-10.txt",
- },
- {
- "ISO 8859-13",
- "ISO885913",
- "",
- "ISO8859_13",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-13.txt",
- },
- {
- "ISO 8859-14",
- "ISO885914",
- "",
- "ISO8859_14",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-14.txt",
- },
- {
- "ISO 8859-15",
- "ISO885915",
- "",
- "ISO8859_15",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-15.txt",
- },
- {
- "ISO 8859-16",
- "ISO885916",
- "",
- "ISO8859_16",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-iso-8859-16.txt",
- },
- {
- "KOI8-R",
- "KOI8R",
- "",
- "KOI8R",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-koi8-r.txt",
- },
- {
- "KOI8-U",
- "KOI8U",
- "",
- "KOI8U",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-koi8-u.txt",
- },
- {
- "Macintosh",
- "Macintosh",
- "",
- "Macintosh",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-macintosh.txt",
- },
- {
- "Macintosh Cyrillic",
- "MacintoshCyrillic",
- "",
- "MacintoshCyrillic",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-x-mac-cyrillic.txt",
- },
- {
- "Windows 874",
- "Windows874",
- "",
- "Windows874",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-874.txt",
- },
- {
- "Windows 1250",
- "Windows1250",
- "",
- "Windows1250",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1250.txt",
- },
- {
- "Windows 1251",
- "Windows1251",
- "",
- "Windows1251",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1251.txt",
- },
- {
- "Windows 1252",
- "Windows1252",
- "",
- "Windows1252",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1252.txt",
- },
- {
- "Windows 1253",
- "Windows1253",
- "",
- "Windows1253",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1253.txt",
- },
- {
- "Windows 1254",
- "Windows1254",
- "",
- "Windows1254",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1254.txt",
- },
- {
- "Windows 1255",
- "Windows1255",
- "",
- "Windows1255",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1255.txt",
- },
- {
- "Windows 1256",
- "Windows1256",
- "",
- "Windows1256",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1256.txt",
- },
- {
- "Windows 1257",
- "Windows1257",
- "",
- "Windows1257",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1257.txt",
- },
- {
- "Windows 1258",
- "Windows1258",
- "",
- "Windows1258",
- encoding.ASCIISub,
- "http://encoding.spec.whatwg.org/index-windows-1258.txt",
- },
- {
- "X-User-Defined",
- "XUserDefined",
- "It is defined at http://encoding.spec.whatwg.org/#x-user-defined",
- "XUserDefined",
- encoding.ASCIISub,
- ascii +
- "\uf780\uf781\uf782\uf783\uf784\uf785\uf786\uf787" +
- "\uf788\uf789\uf78a\uf78b\uf78c\uf78d\uf78e\uf78f" +
- "\uf790\uf791\uf792\uf793\uf794\uf795\uf796\uf797" +
- "\uf798\uf799\uf79a\uf79b\uf79c\uf79d\uf79e\uf79f" +
- "\uf7a0\uf7a1\uf7a2\uf7a3\uf7a4\uf7a5\uf7a6\uf7a7" +
- "\uf7a8\uf7a9\uf7aa\uf7ab\uf7ac\uf7ad\uf7ae\uf7af" +
- "\uf7b0\uf7b1\uf7b2\uf7b3\uf7b4\uf7b5\uf7b6\uf7b7" +
- "\uf7b8\uf7b9\uf7ba\uf7bb\uf7bc\uf7bd\uf7be\uf7bf" +
- "\uf7c0\uf7c1\uf7c2\uf7c3\uf7c4\uf7c5\uf7c6\uf7c7" +
- "\uf7c8\uf7c9\uf7ca\uf7cb\uf7cc\uf7cd\uf7ce\uf7cf" +
- "\uf7d0\uf7d1\uf7d2\uf7d3\uf7d4\uf7d5\uf7d6\uf7d7" +
- "\uf7d8\uf7d9\uf7da\uf7db\uf7dc\uf7dd\uf7de\uf7df" +
- "\uf7e0\uf7e1\uf7e2\uf7e3\uf7e4\uf7e5\uf7e6\uf7e7" +
- "\uf7e8\uf7e9\uf7ea\uf7eb\uf7ec\uf7ed\uf7ee\uf7ef" +
- "\uf7f0\uf7f1\uf7f2\uf7f3\uf7f4\uf7f5\uf7f6\uf7f7" +
- "\uf7f8\uf7f9\uf7fa\uf7fb\uf7fc\uf7fd\uf7fe\uf7ff",
- },
-}
-
-func getWHATWG(url string) string {
- res, err := http.Get(url)
- if err != nil {
- log.Fatalf("%q: Get: %v", url, err)
- }
- defer res.Body.Close()
-
- mapping := make([]rune, 128)
- for i := range mapping {
- mapping[i] = '\ufffd'
- }
-
- scanner := bufio.NewScanner(res.Body)
- for scanner.Scan() {
- s := strings.TrimSpace(scanner.Text())
- if s == "" || s[0] == '#' {
- continue
- }
- x, y := 0, 0
- if _, err := fmt.Sscanf(s, "%d\t0x%x", &x, &y); err != nil {
- log.Fatalf("could not parse %q", s)
- }
- if x < 0 || 128 <= x {
- log.Fatalf("code %d is out of range", x)
- }
- if 0x80 <= y && y < 0xa0 {
- // We diverge from the WHATWG spec by mapping control characters
- // in the range [0x80, 0xa0) to U+FFFD.
- continue
- }
- mapping[x] = rune(y)
- }
- return ascii + string(mapping)
-}
-
-func getUCM(url string) string {
- res, err := http.Get(url)
- if err != nil {
- log.Fatalf("%q: Get: %v", url, err)
- }
- defer res.Body.Close()
-
- mapping := make([]rune, 256)
- for i := range mapping {
- mapping[i] = '\ufffd'
- }
-
- charsFound := 0
- scanner := bufio.NewScanner(res.Body)
- for scanner.Scan() {
- s := strings.TrimSpace(scanner.Text())
- if s == "" || s[0] == '#' {
- continue
- }
- var c byte
- var r rune
- if _, err := fmt.Sscanf(s, ` \x%x |0`, &r, &c); err != nil {
- continue
- }
- mapping[c] = r
- charsFound++
- }
-
- if charsFound < 200 {
- log.Fatalf("%q: only %d characters found (wrong page format?)", url, charsFound)
- }
-
- return string(mapping)
-}
-
-func main() {
- mibs := map[string]bool{}
- all := []string{}
-
- w := gen.NewCodeWriter()
- defer w.WriteGoFile("tables.go", "charmap")
-
- printf := func(s string, a ...interface{}) { fmt.Fprintf(w, s, a...) }
-
- printf("import (\n")
- printf("\t\"golang.org/x/text/encoding\"\n")
- printf("\t\"golang.org/x/text/encoding/internal/identifier\"\n")
- printf(")\n\n")
- for _, e := range encodings {
- varNames := strings.Split(e.varName, ",")
- all = append(all, varNames...)
- varName := varNames[0]
- switch {
- case strings.HasPrefix(e.mapping, "http://encoding.spec.whatwg.org/"):
- e.mapping = getWHATWG(e.mapping)
- case strings.HasPrefix(e.mapping, "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/"):
- e.mapping = getUCM(e.mapping)
- }
-
- asciiSuperset, low := strings.HasPrefix(e.mapping, ascii), 0x00
- if asciiSuperset {
- low = 0x80
- }
- lvn := 1
- if strings.HasPrefix(varName, "ISO") || strings.HasPrefix(varName, "KOI") {
- lvn = 3
- }
- lowerVarName := strings.ToLower(varName[:lvn]) + varName[lvn:]
- printf("// %s is the %s encoding.\n", varName, e.name)
- if e.comment != "" {
- printf("//\n// %s\n", e.comment)
- }
- printf("var %s *Charmap = &%s\n\nvar %s = Charmap{\nname: %q,\n",
- varName, lowerVarName, lowerVarName, e.name)
- if mibs[e.mib] {
- log.Fatalf("MIB type %q declared multiple times.", e.mib)
- }
- printf("mib: identifier.%s,\n", e.mib)
- printf("asciiSuperset: %t,\n", asciiSuperset)
- printf("low: 0x%02x,\n", low)
- printf("replacement: 0x%02x,\n", e.replacement)
-
- printf("decode: [256]utf8Enc{\n")
- i, backMapping := 0, map[rune]byte{}
- for _, c := range e.mapping {
- if _, ok := backMapping[c]; !ok && c != utf8.RuneError {
- backMapping[c] = byte(i)
- }
- var buf [8]byte
- n := utf8.EncodeRune(buf[:], c)
- if n > 3 {
- panic(fmt.Sprintf("rune %q (%U) is too long", c, c))
- }
- printf("{%d,[3]byte{0x%02x,0x%02x,0x%02x}},", n, buf[0], buf[1], buf[2])
- if i%2 == 1 {
- printf("\n")
- }
- i++
- }
- printf("},\n")
-
- printf("encode: [256]uint32{\n")
- encode := make([]uint32, 0, 256)
- for c, i := range backMapping {
- encode = append(encode, uint32(i)<<24|uint32(c))
- }
- sort.Sort(byRune(encode))
- for len(encode) < cap(encode) {
- encode = append(encode, encode[len(encode)-1])
- }
- for i, enc := range encode {
- printf("0x%08x,", enc)
- if i%8 == 7 {
- printf("\n")
- }
- }
- printf("},\n}\n")
-
- // Add an estimate of the size of a single Charmap{} struct value, which
- // includes two 256 elem arrays of 4 bytes and some extra fields, which
- // align to 3 uint64s on 64-bit architectures.
- w.Size += 2*4*256 + 3*8
- }
- // TODO: add proper line breaking.
- printf("var listAll = []encoding.Encoding{\n%s,\n}\n\n", strings.Join(all, ",\n"))
-}
-
-type byRune []uint32
-
-func (b byRune) Len() int { return len(b) }
-func (b byRune) Less(i, j int) bool { return b[i]&0xffffff < b[j]&0xffffff }
-func (b byRune) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/encoding/charmap/tables.go b/vendor/golang.org/x/text/encoding/charmap/tables.go
index cf7281e9e..e3bbfb7a6 100644
--- a/vendor/golang.org/x/text/encoding/charmap/tables.go
+++ b/vendor/golang.org/x/text/encoding/charmap/tables.go
@@ -1,4 +1,4 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+// This file was generated by go generate; DO NOT EDIT
package charmap
@@ -7,185 +7,10 @@ import (
"golang.org/x/text/encoding/internal/identifier"
)
-// CodePage037 is the IBM Code Page 037 encoding.
-var CodePage037 *Charmap = &codePage037
-
-var codePage037 = Charmap{
- name: "IBM Code Page 037",
- mib: identifier.IBM037,
- asciiSuperset: false,
- low: 0x00,
- replacement: 0x3f,
- 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}},
- {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
- {2, [3]byte{0xc2, 0x8e, 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}},
- {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
- {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
- {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 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}},
- {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}}, {1, [3]byte{0x0a, 0x00, 0x00}},
- {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 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}}, {1, [3]byte{0x05, 0x00, 0x00}},
- {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
- {1, [3]byte{0x16, 0x00, 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}}, {1, [3]byte{0x04, 0x00, 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}},
- {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},
- {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
- {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},
- {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
- {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
- {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
- {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},
- {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},
- {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},
- {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
- {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
- {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
- {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
- {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
- {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},
- {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
- {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}},
- {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
- {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},
- {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
- {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
- {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
- {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},
- {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
- {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
- {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
- {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
- {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
- {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
- {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},
- {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
- {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
- {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},
- {2, [3]byte{0xc3, 0x98, 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}},
- {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
- {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},
- {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
- {2, [3]byte{0xc2, 0xb0, 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}},
- {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
- {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
- {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
- {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 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}},
- {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
- {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
- {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
- {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
- {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
- {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
- {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},
- {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
- {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
- {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
- {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
- {1, [3]byte{0x7b, 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}},
- {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
- {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
- {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
- {1, [3]byte{0x7d, 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}},
- {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
- {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
- {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
- {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 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}},
- {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},
- {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
- {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 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}},
- {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
- {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
- {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
- },
- encode: [256]uint32{
- 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,
- 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
- 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,
- 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
- 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,
- 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,
- 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,
- 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,
- 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,
- 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,
- 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,
- 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f,
- 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,
- 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,
- 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,
- 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,
- 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,
- 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,
- 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,
- 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,
- 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7,
- 0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af,
- 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7,
- 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf,
- 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7,
- 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf,
- 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7,
- 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df,
- 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7,
- 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef,
- 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7,
- 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff,
- },
-}
-
// CodePage437 is the IBM Code Page 437 encoding.
-var CodePage437 *Charmap = &codePage437
+var CodePage437 encoding.Encoding = &codePage437
-var codePage437 = Charmap{
+var codePage437 = charmap{
name: "IBM Code Page 437",
mib: identifier.PC8CodePage437,
asciiSuperset: true,
@@ -358,9 +183,9 @@ var codePage437 = Charmap{
}
// CodePage850 is the IBM Code Page 850 encoding.
-var CodePage850 *Charmap = &codePage850
+var CodePage850 encoding.Encoding = &codePage850
-var codePage850 = Charmap{
+var codePage850 = charmap{
name: "IBM Code Page 850",
mib: identifier.PC850Multilingual,
asciiSuperset: true,
@@ -533,9 +358,9 @@ var codePage850 = Charmap{
}
// CodePage852 is the IBM Code Page 852 encoding.
-var CodePage852 *Charmap = &codePage852
+var CodePage852 encoding.Encoding = &codePage852
-var codePage852 = Charmap{
+var codePage852 = charmap{
name: "IBM Code Page 852",
mib: identifier.PCp852,
asciiSuperset: true,
@@ -708,9 +533,9 @@ var codePage852 = Charmap{
}
// CodePage855 is the IBM Code Page 855 encoding.
-var CodePage855 *Charmap = &codePage855
+var CodePage855 encoding.Encoding = &codePage855
-var codePage855 = Charmap{
+var codePage855 = charmap{
name: "IBM Code Page 855",
mib: identifier.IBM855,
asciiSuperset: true,
@@ -883,9 +708,9 @@ var codePage855 = Charmap{
}
// CodePage858 is the Windows Code Page 858 encoding.
-var CodePage858 *Charmap = &codePage858
+var CodePage858 encoding.Encoding = &codePage858
-var codePage858 = Charmap{
+var codePage858 = charmap{
name: "Windows Code Page 858",
mib: identifier.IBM00858,
asciiSuperset: true,
@@ -1058,9 +883,9 @@ var codePage858 = Charmap{
}
// CodePage860 is the IBM Code Page 860 encoding.
-var CodePage860 *Charmap = &codePage860
+var CodePage860 encoding.Encoding = &codePage860
-var codePage860 = Charmap{
+var codePage860 = charmap{
name: "IBM Code Page 860",
mib: identifier.IBM860,
asciiSuperset: true,
@@ -1233,9 +1058,9 @@ var codePage860 = Charmap{
}
// CodePage862 is the IBM Code Page 862 encoding.
-var CodePage862 *Charmap = &codePage862
+var CodePage862 encoding.Encoding = &codePage862
-var codePage862 = Charmap{
+var codePage862 = charmap{
name: "IBM Code Page 862",
mib: identifier.PC862LatinHebrew,
asciiSuperset: true,
@@ -1408,9 +1233,9 @@ var codePage862 = Charmap{
}
// CodePage863 is the IBM Code Page 863 encoding.
-var CodePage863 *Charmap = &codePage863
+var CodePage863 encoding.Encoding = &codePage863
-var codePage863 = Charmap{
+var codePage863 = charmap{
name: "IBM Code Page 863",
mib: identifier.IBM863,
asciiSuperset: true,
@@ -1583,9 +1408,9 @@ var codePage863 = Charmap{
}
// CodePage865 is the IBM Code Page 865 encoding.
-var CodePage865 *Charmap = &codePage865
+var CodePage865 encoding.Encoding = &codePage865
-var codePage865 = Charmap{
+var codePage865 = charmap{
name: "IBM Code Page 865",
mib: identifier.IBM865,
asciiSuperset: true,
@@ -1758,9 +1583,9 @@ var codePage865 = Charmap{
}
// CodePage866 is the IBM Code Page 866 encoding.
-var CodePage866 *Charmap = &codePage866
+var CodePage866 encoding.Encoding = &codePage866
-var codePage866 = Charmap{
+var codePage866 = charmap{
name: "IBM Code Page 866",
mib: identifier.IBM866,
asciiSuperset: true,
@@ -1933,9 +1758,9 @@ var codePage866 = Charmap{
}
// CodePage1047 is the IBM Code Page 1047 encoding.
-var CodePage1047 *Charmap = &codePage1047
+var CodePage1047 encoding.Encoding = &codePage1047
-var codePage1047 = Charmap{
+var codePage1047 = charmap{
name: "IBM Code Page 1047",
mib: identifier.IBM1047,
asciiSuperset: false,
@@ -2108,9 +1933,9 @@ var codePage1047 = Charmap{
}
// CodePage1140 is the IBM Code Page 1140 encoding.
-var CodePage1140 *Charmap = &codePage1140
+var CodePage1140 encoding.Encoding = &codePage1140
-var codePage1140 = Charmap{
+var codePage1140 = charmap{
name: "IBM Code Page 1140",
mib: identifier.IBM01140,
asciiSuperset: false,
@@ -2283,9 +2108,9 @@ var codePage1140 = Charmap{
}
// ISO8859_1 is the ISO 8859-1 encoding.
-var ISO8859_1 *Charmap = &iso8859_1
+var ISO8859_1 encoding.Encoding = &iso8859_1
-var iso8859_1 = Charmap{
+var iso8859_1 = charmap{
name: "ISO 8859-1",
mib: identifier.ISOLatin1,
asciiSuperset: true,
@@ -2458,9 +2283,9 @@ var iso8859_1 = Charmap{
}
// ISO8859_2 is the ISO 8859-2 encoding.
-var ISO8859_2 *Charmap = &iso8859_2
+var ISO8859_2 encoding.Encoding = &iso8859_2
-var iso8859_2 = Charmap{
+var iso8859_2 = charmap{
name: "ISO 8859-2",
mib: identifier.ISOLatin2,
asciiSuperset: true,
@@ -2633,9 +2458,9 @@ var iso8859_2 = Charmap{
}
// ISO8859_3 is the ISO 8859-3 encoding.
-var ISO8859_3 *Charmap = &iso8859_3
+var ISO8859_3 encoding.Encoding = &iso8859_3
-var iso8859_3 = Charmap{
+var iso8859_3 = charmap{
name: "ISO 8859-3",
mib: identifier.ISOLatin3,
asciiSuperset: true,
@@ -2808,9 +2633,9 @@ var iso8859_3 = Charmap{
}
// ISO8859_4 is the ISO 8859-4 encoding.
-var ISO8859_4 *Charmap = &iso8859_4
+var ISO8859_4 encoding.Encoding = &iso8859_4
-var iso8859_4 = Charmap{
+var iso8859_4 = charmap{
name: "ISO 8859-4",
mib: identifier.ISOLatin4,
asciiSuperset: true,
@@ -2983,9 +2808,9 @@ var iso8859_4 = Charmap{
}
// ISO8859_5 is the ISO 8859-5 encoding.
-var ISO8859_5 *Charmap = &iso8859_5
+var ISO8859_5 encoding.Encoding = &iso8859_5
-var iso8859_5 = Charmap{
+var iso8859_5 = charmap{
name: "ISO 8859-5",
mib: identifier.ISOLatinCyrillic,
asciiSuperset: true,
@@ -3158,9 +2983,9 @@ var iso8859_5 = Charmap{
}
// ISO8859_6 is the ISO 8859-6 encoding.
-var ISO8859_6 *Charmap = &iso8859_6
+var ISO8859_6 encoding.Encoding = &iso8859_6
-var iso8859_6 = Charmap{
+var iso8859_6 = charmap{
name: "ISO 8859-6",
mib: identifier.ISOLatinArabic,
asciiSuperset: true,
@@ -3333,9 +3158,9 @@ var iso8859_6 = Charmap{
}
// ISO8859_7 is the ISO 8859-7 encoding.
-var ISO8859_7 *Charmap = &iso8859_7
+var ISO8859_7 encoding.Encoding = &iso8859_7
-var iso8859_7 = Charmap{
+var iso8859_7 = charmap{
name: "ISO 8859-7",
mib: identifier.ISOLatinGreek,
asciiSuperset: true,
@@ -3508,9 +3333,9 @@ var iso8859_7 = Charmap{
}
// ISO8859_8 is the ISO 8859-8 encoding.
-var ISO8859_8 *Charmap = &iso8859_8
+var ISO8859_8 encoding.Encoding = &iso8859_8
-var iso8859_8 = Charmap{
+var iso8859_8 = charmap{
name: "ISO 8859-8",
mib: identifier.ISOLatinHebrew,
asciiSuperset: true,
@@ -3683,9 +3508,9 @@ var iso8859_8 = Charmap{
}
// ISO8859_9 is the ISO 8859-9 encoding.
-var ISO8859_9 *Charmap = &iso8859_9
+var ISO8859_9 encoding.Encoding = &iso8859_9
-var iso8859_9 = Charmap{
+var iso8859_9 = charmap{
name: "ISO 8859-9",
mib: identifier.ISOLatin5,
asciiSuperset: true,
@@ -3858,9 +3683,9 @@ var iso8859_9 = Charmap{
}
// ISO8859_10 is the ISO 8859-10 encoding.
-var ISO8859_10 *Charmap = &iso8859_10
+var ISO8859_10 encoding.Encoding = &iso8859_10
-var iso8859_10 = Charmap{
+var iso8859_10 = charmap{
name: "ISO 8859-10",
mib: identifier.ISOLatin6,
asciiSuperset: true,
@@ -4033,9 +3858,9 @@ var iso8859_10 = Charmap{
}
// ISO8859_13 is the ISO 8859-13 encoding.
-var ISO8859_13 *Charmap = &iso8859_13
+var ISO8859_13 encoding.Encoding = &iso8859_13
-var iso8859_13 = Charmap{
+var iso8859_13 = charmap{
name: "ISO 8859-13",
mib: identifier.ISO885913,
asciiSuperset: true,
@@ -4208,9 +4033,9 @@ var iso8859_13 = Charmap{
}
// ISO8859_14 is the ISO 8859-14 encoding.
-var ISO8859_14 *Charmap = &iso8859_14
+var ISO8859_14 encoding.Encoding = &iso8859_14
-var iso8859_14 = Charmap{
+var iso8859_14 = charmap{
name: "ISO 8859-14",
mib: identifier.ISO885914,
asciiSuperset: true,
@@ -4383,9 +4208,9 @@ var iso8859_14 = Charmap{
}
// ISO8859_15 is the ISO 8859-15 encoding.
-var ISO8859_15 *Charmap = &iso8859_15
+var ISO8859_15 encoding.Encoding = &iso8859_15
-var iso8859_15 = Charmap{
+var iso8859_15 = charmap{
name: "ISO 8859-15",
mib: identifier.ISO885915,
asciiSuperset: true,
@@ -4558,9 +4383,9 @@ var iso8859_15 = Charmap{
}
// ISO8859_16 is the ISO 8859-16 encoding.
-var ISO8859_16 *Charmap = &iso8859_16
+var ISO8859_16 encoding.Encoding = &iso8859_16
-var iso8859_16 = Charmap{
+var iso8859_16 = charmap{
name: "ISO 8859-16",
mib: identifier.ISO885916,
asciiSuperset: true,
@@ -4733,9 +4558,9 @@ var iso8859_16 = Charmap{
}
// KOI8R is the KOI8-R encoding.
-var KOI8R *Charmap = &koi8R
+var KOI8R encoding.Encoding = &koi8R
-var koi8R = Charmap{
+var koi8R = charmap{
name: "KOI8-R",
mib: identifier.KOI8R,
asciiSuperset: true,
@@ -4908,9 +4733,9 @@ var koi8R = Charmap{
}
// KOI8U is the KOI8-U encoding.
-var KOI8U *Charmap = &koi8U
+var KOI8U encoding.Encoding = &koi8U
-var koi8U = Charmap{
+var koi8U = charmap{
name: "KOI8-U",
mib: identifier.KOI8U,
asciiSuperset: true,
@@ -5083,9 +4908,9 @@ var koi8U = Charmap{
}
// Macintosh is the Macintosh encoding.
-var Macintosh *Charmap = &macintosh
+var Macintosh encoding.Encoding = &macintosh
-var macintosh = Charmap{
+var macintosh = charmap{
name: "Macintosh",
mib: identifier.Macintosh,
asciiSuperset: true,
@@ -5258,9 +5083,9 @@ var macintosh = Charmap{
}
// MacintoshCyrillic is the Macintosh Cyrillic encoding.
-var MacintoshCyrillic *Charmap = &macintoshCyrillic
+var MacintoshCyrillic encoding.Encoding = &macintoshCyrillic
-var macintoshCyrillic = Charmap{
+var macintoshCyrillic = charmap{
name: "Macintosh Cyrillic",
mib: identifier.MacintoshCyrillic,
asciiSuperset: true,
@@ -5433,9 +5258,9 @@ var macintoshCyrillic = Charmap{
}
// Windows874 is the Windows 874 encoding.
-var Windows874 *Charmap = &windows874
+var Windows874 encoding.Encoding = &windows874
-var windows874 = Charmap{
+var windows874 = charmap{
name: "Windows 874",
mib: identifier.Windows874,
asciiSuperset: true,
@@ -5608,9 +5433,9 @@ var windows874 = Charmap{
}
// Windows1250 is the Windows 1250 encoding.
-var Windows1250 *Charmap = &windows1250
+var Windows1250 encoding.Encoding = &windows1250
-var windows1250 = Charmap{
+var windows1250 = charmap{
name: "Windows 1250",
mib: identifier.Windows1250,
asciiSuperset: true,
@@ -5783,9 +5608,9 @@ var windows1250 = Charmap{
}
// Windows1251 is the Windows 1251 encoding.
-var Windows1251 *Charmap = &windows1251
+var Windows1251 encoding.Encoding = &windows1251
-var windows1251 = Charmap{
+var windows1251 = charmap{
name: "Windows 1251",
mib: identifier.Windows1251,
asciiSuperset: true,
@@ -5958,9 +5783,9 @@ var windows1251 = Charmap{
}
// Windows1252 is the Windows 1252 encoding.
-var Windows1252 *Charmap = &windows1252
+var Windows1252 encoding.Encoding = &windows1252
-var windows1252 = Charmap{
+var windows1252 = charmap{
name: "Windows 1252",
mib: identifier.Windows1252,
asciiSuperset: true,
@@ -6133,9 +5958,9 @@ var windows1252 = Charmap{
}
// Windows1253 is the Windows 1253 encoding.
-var Windows1253 *Charmap = &windows1253
+var Windows1253 encoding.Encoding = &windows1253
-var windows1253 = Charmap{
+var windows1253 = charmap{
name: "Windows 1253",
mib: identifier.Windows1253,
asciiSuperset: true,
@@ -6308,9 +6133,9 @@ var windows1253 = Charmap{
}
// Windows1254 is the Windows 1254 encoding.
-var Windows1254 *Charmap = &windows1254
+var Windows1254 encoding.Encoding = &windows1254
-var windows1254 = Charmap{
+var windows1254 = charmap{
name: "Windows 1254",
mib: identifier.Windows1254,
asciiSuperset: true,
@@ -6483,9 +6308,9 @@ var windows1254 = Charmap{
}
// Windows1255 is the Windows 1255 encoding.
-var Windows1255 *Charmap = &windows1255
+var Windows1255 encoding.Encoding = &windows1255
-var windows1255 = Charmap{
+var windows1255 = charmap{
name: "Windows 1255",
mib: identifier.Windows1255,
asciiSuperset: true,
@@ -6593,7 +6418,7 @@ var windows1255 = Charmap{
{2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}},
{2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}},
{2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}},
- {2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}},
+ {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd6, 0xbb, 0x00}},
{2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}},
{2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}},
{2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}},
@@ -6643,24 +6468,24 @@ var windows1255 = Charmap{
0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9,
0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192,
0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5,
- 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd,
- 0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1,
- 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9,
- 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1,
- 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9,
- 0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f,
- 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e,
- 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa,
- 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+ 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, 0xce0005be,
+ 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, 0xe20005d2,
+ 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, 0xea0005da,
+ 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, 0xf20005e2,
+ 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, 0xfa0005ea,
+ 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, 0x96002013,
+ 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020,
+ 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, 0x800020ac,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
// Windows1256 is the Windows 1256 encoding.
-var Windows1256 *Charmap = &windows1256
+var Windows1256 encoding.Encoding = &windows1256
-var windows1256 = Charmap{
+var windows1256 = charmap{
name: "Windows 1256",
mib: identifier.Windows1256,
asciiSuperset: true,
@@ -6833,9 +6658,9 @@ var windows1256 = Charmap{
}
// Windows1257 is the Windows 1257 encoding.
-var Windows1257 *Charmap = &windows1257
+var Windows1257 encoding.Encoding = &windows1257
-var windows1257 = Charmap{
+var windows1257 = charmap{
name: "Windows 1257",
mib: identifier.Windows1257,
asciiSuperset: true,
@@ -7008,9 +6833,9 @@ var windows1257 = Charmap{
}
// Windows1258 is the Windows 1258 encoding.
-var Windows1258 *Charmap = &windows1258
+var Windows1258 encoding.Encoding = &windows1258
-var windows1258 = Charmap{
+var windows1258 = charmap{
name: "Windows 1258",
mib: identifier.Windows1258,
asciiSuperset: true,
@@ -7185,9 +7010,9 @@ var windows1258 = Charmap{
// XUserDefined is the X-User-Defined encoding.
//
// It is defined at http://encoding.spec.whatwg.org/#x-user-defined
-var XUserDefined *Charmap = &xUserDefined
+var XUserDefined encoding.Encoding = &xUserDefined
-var xUserDefined = Charmap{
+var xUserDefined = charmap{
name: "X-User-Defined",
mib: identifier.XUserDefined,
asciiSuperset: true,
@@ -7359,7 +7184,6 @@ var xUserDefined = Charmap{
},
}
var listAll = []encoding.Encoding{
- CodePage037,
CodePage437,
CodePage850,
CodePage852,
@@ -7407,4 +7231,4 @@ var listAll = []encoding.Encoding{
XUserDefined,
}
-// Total table size 87024 bytes (84KiB); checksum: 811C9DC5
+// Total table size 84952 bytes (82KiB); checksum: 811C9DC5
diff --git a/vendor/golang.org/x/text/encoding/encoding.go b/vendor/golang.org/x/text/encoding/encoding.go
index 2a7d9529a..221f175c0 100644
--- a/vendor/golang.org/x/text/encoding/encoding.go
+++ b/vendor/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/vendor/golang.org/x/text/encoding/internal/identifier/gen.go b/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
deleted file mode 100644
index 0c8eba7e5..000000000
--- a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
+++ /dev/null
@@ -1,137 +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 ignore
-
-package main
-
-import (
- "bytes"
- "encoding/xml"
- "fmt"
- "io"
- "log"
- "strings"
-
- "golang.org/x/text/internal/gen"
-)
-
-type registry struct {
- XMLName xml.Name `xml:"registry"`
- Updated string `xml:"updated"`
- Registry []struct {
- ID string `xml:"id,attr"`
- Record []struct {
- Name string `xml:"name"`
- Xref []struct {
- Type string `xml:"type,attr"`
- Data string `xml:"data,attr"`
- } `xml:"xref"`
- Desc struct {
- Data string `xml:",innerxml"`
- // Any []struct {
- // Data string `xml:",chardata"`
- // } `xml:",any"`
- // Data string `xml:",chardata"`
- } `xml:"description,"`
- MIB string `xml:"value"`
- Alias []string `xml:"alias"`
- MIME string `xml:"preferred_alias"`
- } `xml:"record"`
- } `xml:"registry"`
-}
-
-func main() {
- r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml")
- reg := ®istry{}
- if err := xml.NewDecoder(r).Decode(®); err != nil && err != io.EOF {
- log.Fatalf("Error decoding charset registry: %v", err)
- }
- if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" {
- log.Fatalf("Unexpected ID %s", reg.Registry[0].ID)
- }
-
- w := &bytes.Buffer{}
- fmt.Fprintf(w, "const (\n")
- for _, rec := range reg.Registry[0].Record {
- constName := ""
- for _, a := range rec.Alias {
- if strings.HasPrefix(a, "cs") && strings.IndexByte(a, '-') == -1 {
- // Some of the constant definitions have comments in them. Strip those.
- constName = strings.Title(strings.SplitN(a[2:], "\n", 2)[0])
- }
- }
- if constName == "" {
- switch rec.MIB {
- case "2085":
- constName = "HZGB2312" // Not listed as alias for some reason.
- default:
- log.Fatalf("No cs alias defined for %s.", rec.MIB)
- }
- }
- if rec.MIME != "" {
- rec.MIME = fmt.Sprintf(" (MIME: %s)", rec.MIME)
- }
- fmt.Fprintf(w, "// %s is the MIB identifier with IANA name %s%s.\n//\n", constName, rec.Name, rec.MIME)
- if len(rec.Desc.Data) > 0 {
- fmt.Fprint(w, "// ")
- d := xml.NewDecoder(strings.NewReader(rec.Desc.Data))
- inElem := true
- attr := ""
- for {
- t, err := d.Token()
- if err != nil {
- if err != io.EOF {
- log.Fatal(err)
- }
- break
- }
- switch x := t.(type) {
- case xml.CharData:
- attr = "" // Don't need attribute info.
- a := bytes.Split([]byte(x), []byte("\n"))
- for i, b := range a {
- if b = bytes.TrimSpace(b); len(b) != 0 {
- if !inElem && i > 0 {
- fmt.Fprint(w, "\n// ")
- }
- inElem = false
- fmt.Fprintf(w, "%s ", string(b))
- }
- }
- case xml.StartElement:
- if x.Name.Local == "xref" {
- inElem = true
- use := false
- for _, a := range x.Attr {
- if a.Name.Local == "type" {
- use = use || a.Value != "person"
- }
- if a.Name.Local == "data" && use {
- attr = a.Value + " "
- }
- }
- }
- case xml.EndElement:
- inElem = false
- fmt.Fprint(w, attr)
- }
- }
- fmt.Fprint(w, "\n")
- }
- for _, x := range rec.Xref {
- switch x.Type {
- case "rfc":
- fmt.Fprintf(w, "// Reference: %s\n", strings.ToUpper(x.Data))
- case "uri":
- fmt.Fprintf(w, "// Reference: %s\n", x.Data)
- }
- }
- fmt.Fprintf(w, "%s MIB = %s\n", constName, rec.MIB)
- fmt.Fprintln(w)
- }
- fmt.Fprintln(w, ")")
-
- gen.WriteGoFile("mib.go", "identifier", w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/runes/cond.go b/vendor/golang.org/x/text/runes/cond.go
index ae7a92158..df7aa02db 100644
--- a/vendor/golang.org/x/text/runes/cond.go
+++ b/vendor/golang.org/x/text/runes/cond.go
@@ -41,20 +41,35 @@ func If(s Set, tIn, tNotIn transform.Transformer) Transformer {
if tNotIn == nil {
tNotIn = transform.Nop
}
+ sIn, ok := tIn.(transform.SpanningTransformer)
+ if !ok {
+ sIn = dummySpan{tIn}
+ }
+ sNotIn, ok := tNotIn.(transform.SpanningTransformer)
+ if !ok {
+ sNotIn = dummySpan{tNotIn}
+ }
+
a := &cond{
- tIn: tIn,
- tNotIn: tNotIn,
+ tIn: sIn,
+ tNotIn: sNotIn,
f: s.Contains,
}
a.Reset()
return Transformer{a}
}
+type dummySpan struct{ transform.Transformer }
+
+func (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) {
+ return 0, transform.ErrEndOfSpan
+}
+
type cond struct {
- tIn, tNotIn transform.Transformer
+ tIn, tNotIn transform.SpanningTransformer
f func(rune) bool
- check func(rune) bool // current check to perform
- t transform.Transformer // current transformer to use
+ check func(rune) bool // current check to perform
+ t transform.SpanningTransformer // current transformer to use
}
// Reset implements transform.Transformer.
@@ -84,6 +99,51 @@ func (t *cond) isNot(r rune) bool {
return false
}
+// This implementation of Span doesn't help all too much, but it needs to be
+// there to satisfy this package's Transformer interface.
+// TODO: there are certainly room for improvements, though. For example, if
+// t.t == transform.Nop (which will a common occurrence) it will save a bundle
+// to special-case that loop.
+func (t *cond) Span(src []byte, atEOF bool) (n int, err error) {
+ p := 0
+ for n < len(src) && err == nil {
+ // Don't process too much at a time as the Spanner that will be
+ // called on this block may terminate early.
+ const maxChunk = 4096
+ max := len(src)
+ if v := n + maxChunk; v < max {
+ max = v
+ }
+ atEnd := false
+ size := 0
+ current := t.t
+ for ; p < max; p += size {
+ r := rune(src[p])
+ if r < utf8.RuneSelf {
+ size = 1
+ } else if r, size = utf8.DecodeRune(src[p:]); size == 1 {
+ if !atEOF && !utf8.FullRune(src[p:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+ }
+ if !t.check(r) {
+ // The next rune will be the start of a new run.
+ atEnd = true
+ break
+ }
+ }
+ n2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src)))
+ n += n2
+ if err2 != nil {
+ return n, err2
+ }
+ // At this point either err != nil or t.check will pass for the rune at p.
+ p = n + size
+ }
+ return n, err
+}
+
func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
p := 0
for nSrc < len(src) && err == nil {
@@ -99,9 +159,10 @@ func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error
size := 0
current := t.t
for ; p < max; p += size {
- var r rune
- r, size = utf8.DecodeRune(src[p:])
- if r == utf8.RuneError && size == 1 {
+ r := rune(src[p])
+ if r < utf8.RuneSelf {
+ size = 1
+ } else if r, size = utf8.DecodeRune(src[p:]); size == 1 {
if !atEOF && !utf8.FullRune(src[p:]) {
err = transform.ErrShortSrc
break
diff --git a/vendor/golang.org/x/text/runes/runes.go b/vendor/golang.org/x/text/runes/runes.go
index bb17f475b..71933696f 100644
--- a/vendor/golang.org/x/text/runes/runes.go
+++ b/vendor/golang.org/x/text/runes/runes.go
@@ -46,9 +46,19 @@ func Predicate(f func(rune) bool) Set {
// Transformer implements the transform.Transformer interface.
type Transformer struct {
- transform.Transformer
+ t transform.SpanningTransformer
}
+func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ return t.t.Transform(dst, src, atEOF)
+}
+
+func (t Transformer) Span(b []byte, atEOF bool) (n int, err error) {
+ return t.t.Span(b, atEOF)
+}
+
+func (t Transformer) Reset() { t.t.Reset() }
+
// Bytes returns a new byte slice with the result of converting b using t. It
// calls Reset on t. It returns nil if any error was found. This can only happen
// if an error-producing Transformer is passed to If.
@@ -96,39 +106,57 @@ type remove func(r rune) bool
func (remove) Reset() {}
+// Span implements transform.Spanner.
+func (t remove) Span(src []byte, atEOF bool) (n int, err error) {
+ for r, size := rune(0), 0; n < len(src); {
+ if r = rune(src[n]); r < utf8.RuneSelf {
+ size = 1
+ } else if r, size = utf8.DecodeRune(src[n:]); size == 1 {
+ // Invalid rune.
+ if !atEOF && !utf8.FullRune(src[n:]) {
+ err = transform.ErrShortSrc
+ } else {
+ err = transform.ErrEndOfSpan
+ }
+ break
+ }
+ if t(r) {
+ err = transform.ErrEndOfSpan
+ break
+ }
+ n += size
+ }
+ return
+}
+
// Transform implements transform.Transformer.
func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
for r, size := rune(0), 0; nSrc < len(src); {
if r = rune(src[nSrc]); r < utf8.RuneSelf {
size = 1
- } else {
- r, size = utf8.DecodeRune(src[nSrc:])
-
- if size == 1 {
- // Invalid rune.
- if !atEOF && !utf8.FullRune(src[nSrc:]) {
- err = transform.ErrShortSrc
+ } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {
+ // Invalid rune.
+ if !atEOF && !utf8.FullRune(src[nSrc:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+ // We replace illegal bytes with RuneError. Not doing so might
+ // otherwise turn a sequence of invalid UTF-8 into valid UTF-8.
+ // The resulting byte sequence may subsequently contain runes
+ // for which t(r) is true that were passed unnoticed.
+ if !t(utf8.RuneError) {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
break
}
- // We replace illegal bytes with RuneError. Not doing so might
- // otherwise turn a sequence of invalid UTF-8 into valid UTF-8.
- // The resulting byte sequence may subsequently contain runes
- // for which t(r) is true that were passed unnoticed.
- if !t(utf8.RuneError) {
- if nDst+3 > len(dst) {
- err = transform.ErrShortDst
- break
- }
- dst[nDst+0] = runeErrorString[0]
- dst[nDst+1] = runeErrorString[1]
- dst[nDst+2] = runeErrorString[2]
- nDst += 3
- }
- nSrc++
- continue
+ dst[nDst+0] = runeErrorString[0]
+ dst[nDst+1] = runeErrorString[1]
+ dst[nDst+2] = runeErrorString[2]
+ nDst += 3
}
+ nSrc++
+ continue
}
-
if t(r) {
nSrc += size
continue
@@ -157,6 +185,28 @@ type mapper func(rune) rune
func (mapper) Reset() {}
+// Span implements transform.Spanner.
+func (t mapper) Span(src []byte, atEOF bool) (n int, err error) {
+ for r, size := rune(0), 0; n < len(src); n += size {
+ if r = rune(src[n]); r < utf8.RuneSelf {
+ size = 1
+ } else if r, size = utf8.DecodeRune(src[n:]); size == 1 {
+ // Invalid rune.
+ if !atEOF && !utf8.FullRune(src[n:]) {
+ err = transform.ErrShortSrc
+ } else {
+ err = transform.ErrEndOfSpan
+ }
+ break
+ }
+ if t(r) != r {
+ err = transform.ErrEndOfSpan
+ break
+ }
+ }
+ return n, err
+}
+
// Transform implements transform.Transformer.
func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
var replacement rune
@@ -230,24 +280,51 @@ func ReplaceIllFormed() Transformer {
type replaceIllFormed struct{ transform.NopResetter }
+func (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) {
+ for n < len(src) {
+ // ASCII fast path.
+ if src[n] < utf8.RuneSelf {
+ n++
+ continue
+ }
+
+ r, size := utf8.DecodeRune(src[n:])
+
+ // Look for a valid non-ASCII rune.
+ if r != utf8.RuneError || size != 1 {
+ n += size
+ continue
+ }
+
+ // Look for short source data.
+ if !atEOF && !utf8.FullRune(src[n:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+
+ // We have an invalid rune.
+ err = transform.ErrEndOfSpan
+ break
+ }
+ return n, err
+}
+
func (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
for nSrc < len(src) {
- r, size := utf8.DecodeRune(src[nSrc:])
-
- // Look for an ASCII rune.
- if r < utf8.RuneSelf {
+ // ASCII fast path.
+ if r := src[nSrc]; r < utf8.RuneSelf {
if nDst == len(dst) {
err = transform.ErrShortDst
break
}
- dst[nDst] = byte(r)
+ dst[nDst] = r
nDst++
nSrc++
continue
}
// Look for a valid non-ASCII rune.
- if r != utf8.RuneError || size != 1 {
+ if _, size := utf8.DecodeRune(src[nSrc:]); size != 1 {
if size != copy(dst[nDst:], src[nSrc:nSrc+size]) {
err = transform.ErrShortDst
break
diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go
index 0c2f730ea..fe47b9b35 100644
--- a/vendor/golang.org/x/text/transform/transform.go
+++ b/vendor/golang.org/x/text/transform/transform.go
@@ -24,6 +24,10 @@ var (
// complete the transformation.
ErrShortSrc = errors.New("transform: short source buffer")
+ // ErrEndOfSpan means that the input and output (the transformed input)
+ // are not identical.
+ ErrEndOfSpan = errors.New("transform: input and output are not identical")
+
// errInconsistentByteCount means that Transform returned success (nil
// error) but also returned nSrc inconsistent with the src argument.
errInconsistentByteCount = errors.New("transform: inconsistent byte count returned")
@@ -60,6 +64,41 @@ type Transformer interface {
Reset()
}
+// SpanningTransformer extends the Transformer interface with a Span method
+// that determines how much of the input already conforms to the Transformer.
+type SpanningTransformer interface {
+ Transformer
+
+ // Span returns a position in src such that transforming src[:n] results in
+ // identical output src[:n] for these bytes. It does not necessarily return
+ // the largest such n. The atEOF argument tells whether src represents the
+ // last bytes of the input.
+ //
+ // Callers should always account for the n bytes consumed before
+ // considering the error err.
+ //
+ // A nil error means that all input bytes are known to be identical to the
+ // output produced by the Transformer. A nil error can be be returned
+ // regardless of whether atEOF is true. If err is nil, then then n must
+ // equal len(src); the converse is not necessarily true.
+ //
+ // ErrEndOfSpan means that the Transformer output may differ from the
+ // input after n bytes. Note that n may be len(src), meaning that the output
+ // would contain additional bytes after otherwise identical output.
+ // ErrShortSrc means that src had insufficient data to determine whether the
+ // remaining bytes would change. Other than the error conditions listed
+ // here, implementations are free to report other errors that arise.
+ //
+ // Calling Span can modify the Transformer state as a side effect. In
+ // effect, it does the transformation just as calling Transform would, only
+ // without copying to a destination buffer and only up to a point it can
+ // determine the input and output bytes are the same. This is obviously more
+ // limited than calling Transform, but can be more efficient in terms of
+ // copying and allocating buffers. Calls to Span and Transform may be
+ // interleaved.
+ Span(src []byte, atEOF bool) (n int, err error)
+}
+
// NopResetter can be embedded by implementations of Transformer to add a nop
// Reset method.
type NopResetter struct{}
@@ -278,6 +317,10 @@ func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
return n, n, err
}
+func (nop) Span(src []byte, atEOF bool) (n int, err error) {
+ return len(src), nil
+}
+
type discard struct{ NopResetter }
func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -289,8 +332,8 @@ var (
// by consuming all bytes and writing nothing.
Discard Transformer = discard{}
- // Nop is a Transformer that copies src to dst.
- Nop Transformer = nop{}
+ // Nop is a SpanningTransformer that copies src to dst.
+ Nop SpanningTransformer = nop{}
)
// chain is a sequence of links. A chain with N Transformers has N+1 links and
@@ -358,6 +401,8 @@ func (c *chain) Reset() {
}
}
+// TODO: make chain use Span (is going to be fun to implement!)
+
// Transform applies the transformers of c in sequence.
func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
// Set up src and dst in the chain.
@@ -448,8 +493,7 @@ func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err erro
return dstL.n, srcL.p, err
}
-// RemoveFunc returns a Transformer that removes from the input all runes r for
-// which f(r) is true. Illegal bytes in the input are replaced by RuneError.
+// Deprecated: use runes.Remove instead.
func RemoveFunc(f func(r rune) bool) Transformer {
return removeF(f)
}
diff --git a/vendor/vendor.json b/vendor/vendor.json
index 878681209..a9f2bc15f 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -38,10 +38,10 @@
"revisionTime": "2017-08-08T19:54:39Z"
},
{
- "checksumSHA1": "GZj+/EV9o0GyIsZ5/S8gSy3ceKM=",
+ "checksumSHA1": "cksQ/Vucu9mWJrsLG1bjUvg4ao8=",
"path": "github.com/TomOnTime/utfutil",
- "revision": "2eac7962c5478fc8b8123d73ef7d33f05f9cd8f0",
- "revisionTime": "2016-09-09T15:53:55Z"
+ "revision": "1916859f26bb476f86a4c47c272f7c881f92619a",
+ "revisionTime": "2017-11-03T00:04:35Z"
},
{
"checksumSHA1": "irAylH0FbfVgkCcXP9U+Fkou9+U=",
@@ -254,11 +254,10 @@
"revisionTime": "2017-08-30T08:48:20Z"
},
{
- "checksumSHA1": "OnSTHmTPGTAwFMfqCSZj4z5BnEo=",
- "origin": "github.com/aws/aws-sdk-go/vendor/github.com/go-ini/ini",
+ "checksumSHA1": "oSwR5RN8idtBQrpnQSy13t8ruoU=",
"path": "github.com/go-ini/ini",
- "revision": "060d7da055ba6ec5ea7a31f116332fe5efa04ce0",
- "revisionTime": "2015-11-04T20:00:20-05:00"
+ "revision": "32e4be5f41bb918afb6e37c07426e2ddbcb6647e",
+ "revisionTime": "2018-02-14T10:17:53Z"
},
{
"checksumSHA1": "yqF125xVSkmfLpIVGrLlfE05IUk=",
@@ -279,11 +278,16 @@
"revisionTime": "2017-01-11T10:11:55Z"
},
{
- "checksumSHA1": "Wbsfxh89xfnFDZzoEOzpfUV9+u8=",
- "origin": "github.com/aws/aws-sdk-go/vendor/github.com/jmespath/go-jmespath",
+ "checksumSHA1": "uFNLkTxk8BkHTk0Jcub2lj2BX4M=",
+ "path": "github.com/google/uuid",
+ "revision": "dec09d789f3dba190787f8b4454c7d3c936fed9e",
+ "revisionTime": "2017-11-29T19:10:14Z"
+ },
+ {
+ "checksumSHA1": "blwbl9vPvRLtL5QlZgfpLvsFiZ4=",
"path": "github.com/jmespath/go-jmespath",
- "revision": "3433f3ea46d9f8019119e7dd41274e112a2359a9",
- "revisionTime": "2015-11-17T09:58:22-08:00"
+ "revision": "c2b33e8439af944379acbdd9c3a5fe0bc44bd8a5",
+ "revisionTime": "2018-02-06T20:15:40Z"
},
{
"checksumSHA1": "a8Ge6pE7oxux9ZMZVAlyEeGzCng=",
@@ -303,10 +307,10 @@
"revisionTime": "2017-11-10T10:33:17Z"
},
{
- "checksumSHA1": "9SrLPArdQmp45MGosz7IEGX46Ng=",
+ "checksumSHA1": "bdcCMc8DK5HBRPHBAmNDNQXmaVQ=",
"path": "github.com/miekg/dns/dnsutil",
- "revision": "e4205768578dc90c2669e75a2f8a8bf77e3083a4",
- "revisionTime": "2017-08-18T13:14:42Z"
+ "revision": "9fc4eb252eedf0ef8adc05169ce35da5e31beaba",
+ "revisionTime": "2017-11-10T10:33:17Z"
},
{
"checksumSHA1": "AYjG78HsyaohvBTuzCgdxU48dFE=",
@@ -327,10 +331,10 @@
"revisionTime": "2018-01-09T18:53:19Z"
},
{
- "checksumSHA1": "rJab1YdNhQooDiBWNnt7TLWPyBU=",
+ "checksumSHA1": "ynJSWoF6v+3zMnh9R0QmmG6iGV8=",
"path": "github.com/pkg/errors",
- "revision": "2b3a18b5f0fb6b4f9190549597d3f962c02bc5eb",
- "revisionTime": "2017-09-10T13:46:14Z"
+ "revision": "ff09b135c25aae272398c51a07235b90a75aa4f0",
+ "revisionTime": "2017-03-16T20:15:38Z"
},
{
"checksumSHA1": "02kfHQp1KLch4P2FG1OrEG/24t8=",
@@ -346,7 +350,6 @@
},
{
"checksumSHA1": "9tjoj3PcsKSKiX47mnZIgoFrs4U=",
- "origin": "github.com/StackExchange/dnscontrol/vendor/github.com/prasmussen/gandi-api/contact",
"path": "github.com/prasmussen/gandi-api/contact",
"revision": "58d3d42056619bb56e311c115c1c95294b5ec60b",
"revisionTime": "2018-02-24T13:22:02Z"
@@ -383,28 +386,24 @@
},
{
"checksumSHA1": "lgixSmeD/e2zKVoMq3xJ+0ormhQ=",
- "origin": "github.com/StackExchange/dnscontrol/vendor/github.com/prasmussen/gandi-api/live_dns/domain",
"path": "github.com/prasmussen/gandi-api/live_dns/domain",
"revision": "58d3d42056619bb56e311c115c1c95294b5ec60b",
"revisionTime": "2018-02-24T13:22:02Z"
},
{
"checksumSHA1": "YOKj2uCylMIaRNJHaOIVEns0K6c=",
- "origin": "github.com/StackExchange/dnscontrol/vendor/github.com/prasmussen/gandi-api/live_dns/record",
"path": "github.com/prasmussen/gandi-api/live_dns/record",
"revision": "58d3d42056619bb56e311c115c1c95294b5ec60b",
"revisionTime": "2018-02-24T13:22:02Z"
},
{
"checksumSHA1": "5TdSD8BWzrTLi2OizfUv2zqbbzQ=",
- "origin": "github.com/StackExchange/dnscontrol/vendor/github.com/prasmussen/gandi-api/live_dns/test_helpers",
"path": "github.com/prasmussen/gandi-api/live_dns/test_helpers",
"revision": "58d3d42056619bb56e311c115c1c95294b5ec60b",
"revisionTime": "2018-02-24T13:22:02Z"
},
{
"checksumSHA1": "qCClQEFkVUcQrQw6n+zWGl0JMwc=",
- "origin": "github.com/StackExchange/dnscontrol/vendor/github.com/prasmussen/gandi-api/live_dns/zone",
"path": "github.com/prasmussen/gandi-api/live_dns/zone",
"revision": "58d3d42056619bb56e311c115c1c95294b5ec60b",
"revisionTime": "2018-02-24T13:22:02Z"
@@ -554,10 +553,10 @@
"revisionTime": "2013-07-02T22:55:49Z"
},
{
- "checksumSHA1": "7Qm/EUxEnhQgbMPWUsKrVswLUsc=",
+ "checksumSHA1": "H1Ne82yYzWRQ2DKBsmRd0Hwcl04=",
"path": "github.com/urfave/cli",
- "revision": "7fb9c86b14e6a702a4157ccb5a863f07d844a207",
- "revisionTime": "2017-09-11T04:08:19Z"
+ "revision": "75104e932ac2ddb944a6ea19d9f9f26316ff1145",
+ "revisionTime": "2018-01-06T19:10:48Z"
},
{
"checksumSHA1": "MLGPYuRc7BtUuKmIV8f/jXpYWvg=",
@@ -568,26 +567,26 @@
{
"checksumSHA1": "9jjO5GjLa0XF/nfWihF02RoH4qc=",
"path": "golang.org/x/net/context",
- "revision": "4971afdc2f162e82d185353533d3cf16188a9f4e",
- "revisionTime": "2016-11-15T21:05:04Z"
+ "revision": "f2499483f923065a842d38eb4c7f1927e6fc6e6d",
+ "revisionTime": "2017-01-14T04:22:49Z"
},
{
"checksumSHA1": "WHc3uByvGaMcnSoI21fhzYgbOgg=",
"path": "golang.org/x/net/context/ctxhttp",
- "revision": "4971afdc2f162e82d185353533d3cf16188a9f4e",
- "revisionTime": "2016-11-15T21:05:04Z"
+ "revision": "f2499483f923065a842d38eb4c7f1927e6fc6e6d",
+ "revisionTime": "2017-01-14T04:22:49Z"
},
{
"checksumSHA1": "GIGmSrYACByf5JDIP9ByBZksY80=",
"path": "golang.org/x/net/idna",
- "revision": "a6577fac2d73be281a500b310739095313165611",
- "revisionTime": "2017-03-08T20:54:49Z"
+ "revision": "f2499483f923065a842d38eb4c7f1927e6fc6e6d",
+ "revisionTime": "2017-01-14T04:22:49Z"
},
{
- "checksumSHA1": "nt4o3cMOyP9prgVeAZgRf82/Et0=",
+ "checksumSHA1": "TIuteMCFMIoZioMPqSjQYU5O2EY=",
"path": "golang.org/x/net/publicsuffix",
- "revision": "0744d001aa8470aaa53df28d32e5ceeb8af9bd70",
- "revisionTime": "2017-09-01T09:04:45Z"
+ "revision": "f2499483f923065a842d38eb4c7f1927e6fc6e6d",
+ "revisionTime": "2017-01-14T04:22:49Z"
},
{
"checksumSHA1": "HmVJmSDDCwsPJQrp7ml2gXb2szg=",
@@ -620,52 +619,52 @@
"revisionTime": "2017-06-22T15:12:08Z"
},
{
- "checksumSHA1": "oaglBTpGgEUgk7m92i6nuZbpicE=",
+ "checksumSHA1": "Mr4ur60bgQJnQFfJY0dGtwWwMPE=",
"path": "golang.org/x/text/encoding",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
- "checksumSHA1": "HgcUFTOQF5jOYtTIj5obR3GVN9A=",
+ "checksumSHA1": "YhpPlqR+jmjjk330zJXeLGyRlpM=",
"path": "golang.org/x/text/encoding/charmap",
- "revision": "3bd178b88a8180be2df394a1fbb81313916f0e7b",
- "revisionTime": "2017-07-29T23:24:55Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
"checksumSHA1": "zeHyHebIZl1tGuwGllIhjfci+wI=",
"path": "golang.org/x/text/encoding/internal",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
- "checksumSHA1": "TF4hoIqHVEAvOq67rfnSLSkcZ1Y=",
+ "checksumSHA1": "dteZ0KeAdZy+4iEvL8x+DfZhrnA=",
"path": "golang.org/x/text/encoding/internal/identifier",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
"checksumSHA1": "G9LfJI9gySazd+MyyC6QbTHx4to=",
"path": "golang.org/x/text/encoding/unicode",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
"checksumSHA1": "Qk7dljcrEK1BJkAEZguxAbG9dSo=",
"path": "golang.org/x/text/internal/utf8internal",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
- "checksumSHA1": "cQ4+8mXpYioml5/hO7ZyeECoFJc=",
+ "checksumSHA1": "IV4MN7KGBSocu/5NR3le3sxup4Y=",
"path": "golang.org/x/text/runes",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
- "checksumSHA1": "TZDHZj3zWDc5LKqpoLamOKt6Nmo=",
+ "checksumSHA1": "ziMb9+ANGRJSSIuxYdRbA+cDRBQ=",
"path": "golang.org/x/text/transform",
- "revision": "2910a502d2bf9e43193af9d68ca516529614eed3",
- "revisionTime": "2016-07-21T22:28:28Z"
+ "revision": "11dbc599981ccdf4fb18802a28392a8bcf7a9395",
+ "revisionTime": "2017-01-12T23:38:57Z"
},
{
"checksumSHA1": "u5J0Ld9kNs8aieexH5dqhFhfqIE=",